@dyrected/admin 2.6.1 → 2.6.2
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/dist/admin.css +120 -28
- package/dist/components/forms/field-renderer.d.ts +3 -9
- package/dist/components/forms/fields/date-picker.d.ts +4 -1
- package/dist/components/forms/fields/format-aware-inputs.test.d.ts +1 -0
- package/dist/components/forms/fields/text-field.d.ts +1 -1
- package/dist/components/forms/fields/url-field.d.ts +1 -1
- package/dist/components/media/__tests__/media-library-dialog.test.d.ts +1 -0
- package/dist/components/media/storage-notice.d.ts +7 -0
- package/dist/controllers/__tests__/field.test.d.ts +1 -0
- package/dist/controllers/__tests__/form.test.d.ts +1 -0
- package/dist/controllers/__tests__/media.test.d.ts +1 -0
- package/dist/controllers/__tests__/theme.test.d.ts +1 -0
- package/dist/controllers/field.d.ts +13 -0
- package/dist/controllers/form.d.ts +102 -0
- package/dist/controllers/media.d.ts +119 -0
- package/dist/controllers/theme.d.ts +28 -0
- package/dist/favicon.ico +0 -0
- package/dist/favicon.svg +85 -1
- package/dist/hooks/__tests__/use-add-media-from-url.test.d.ts +1 -0
- package/dist/hooks/__tests__/use-field.test.d.ts +1 -0
- package/dist/hooks/admin-theme-context.d.ts +2 -8
- package/dist/hooks/admin-theme-provider.d.ts +3 -1
- package/dist/hooks/admin-theme.d.ts +1 -0
- package/dist/hooks/use-add-media-from-url.d.ts +8 -17
- package/dist/hooks/use-admin-theme.d.ts +2 -1
- package/dist/hooks/use-dyrected-form.d.ts +2 -0
- package/dist/hooks/use-field.d.ts +2 -0
- package/dist/hooks/use-media-library.d.ts +26 -0
- package/dist/hooks/use-media-upload.d.ts +20 -0
- package/dist/hooks/use-media-url.d.ts +20 -0
- package/dist/index.d.ts +30 -3
- package/dist/index.mjs +1438 -1556
- package/dist/lib/__tests__/external-media.test.d.ts +1 -0
- package/dist/lib/__tests__/media-utils.test.d.ts +1 -0
- package/dist/lib/compress-image.d.ts +9 -0
- package/dist/lib/external-media.d.ts +9 -4
- package/dist/lib/media-utils.d.ts +26 -0
- package/dist/lib/workflow-ui.d.ts +1 -0
- package/dist/providers/dyrected-form-context.d.ts +14 -0
- package/dist/public/contracts.d.ts +230 -0
- package/dist/public/index.d.ts +26 -0
- package/dist/public/index.js +2 -0
- package/dist/public.d.ts +2 -0
- package/dist/types/admin-components.d.ts +17 -2
- package/dist/use-add-media-from-url-DHGAAVLY.js +1604 -0
- package/package.json +9 -3
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { B as isStorageNotConfiguredError, C as useMediaUpload, D as createMediaURLController, E as createMediaLibraryController, G as resolveAdminTheme, H as useAdminTheme, I as usePreferences, J as getMediaUrl, K as cn, M as getMediaPreviewUrl, N as getVideoEmbedUrl, O as createMediaUploadController, R as getMediaSourceInfo, S as resolveContainerPath, T as useMediaLibrary, U as adminThemeClassName, V as resolveActiveMediaCollection, W as getSystemAdminTheme, X as DyrectedContext, Y as getSiteUrl, Z as useDyrected, _ as buildDefaultValues, a as useField, b as getFlatErrors, c as DyrectedFieldPathProvider, d as getFieldPathSegments, f as getParentFieldPath, g as setValueAtPath, h as normalizeFieldPath, i as createAdminThemeController, k as compressImage, l as DyrectedFormProvider, m as joinFieldPath, n as AdminThemeProvider, o as createDyrectedFieldController, p as getValueAtPath, q as getDisplayFilename, r as AdminThemedRoot, s as useDyrectedForm, t as useAddMediaFromUrl, u as createDyrectedFormController, v as buildSchemaShape, w as useMediaURL, x as normalizeOptions, y as formatPath, z as isExternalMedia } from "./use-add-media-from-url-DHGAAVLY.js";
|
|
1
2
|
import * as React$1 from "react";
|
|
2
3
|
import React, { Component, StrictMode, createContext, createElement, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
3
4
|
import { createRoot } from "react-dom/client";
|
|
@@ -5,9 +6,7 @@ import { HashRouter, Link, MemoryRouter, Route, Routes, useLocation, useNavigate
|
|
|
5
6
|
import { QueryClient, QueryClientProvider, keepPreviousData, useInfiniteQuery, useMutation, useQueries, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
6
7
|
import { DyrectedError, PREVIEW_TOKEN_PARAM, createClient } from "@dyrected/sdk";
|
|
7
8
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
-
import { AlertCircle, AlertTriangle, AlignCenter, AlignLeft, AlignRight, Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, ArrowUpDown, ArrowUpRight, Bold, Braces, Calendar, Check, CheckCircle, CheckCircle2, ChevronDown, ChevronLeft, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, ChevronsUpDown, Circle, Clock, Clock3, Code, Copy, Database, Download, ExternalLink, Eye, EyeOff, FileDown, FileIcon, FileText, FileUp, Filter, Globe, GripVertical, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, History, Home, Image
|
|
9
|
-
import { clsx } from "clsx";
|
|
10
|
-
import { extendTailwindMerge } from "tailwind-merge";
|
|
9
|
+
import { AlertCircle, AlertTriangle, AlignCenter, AlignLeft, AlignRight, Archive, ArrowDown, ArrowLeft, ArrowRight, ArrowUp, ArrowUpDown, ArrowUpRight, Bold, Braces, Calendar, Check, CheckCircle, CheckCircle2, ChevronDown, ChevronLeft, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, ChevronsUpDown, Circle, Clock, Clock3, Code, Copy, Database, Download, ExternalLink, Eye, EyeOff, FileDown, FileIcon, FileText, FileUp, Filter, Globe, GripVertical, HardDrive, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, History, Home, Image, Info, Italic, KeyRound, Layers, LayoutDashboard, LayoutGrid, Library, Link as Link$1, List, ListOrdered, Loader2, Lock, LogOut, Mail, Menu, MessageSquarePlus, Minus, Monitor, Moon, MoreHorizontal, MousePointer2, PanelLeftClose, PanelLeftOpen, Pencil, Play, Plus, Quote, RotateCcw, RotateCw, Save, Scissors, Search, Settings, Settings2, Share2, Shield, Smartphone, Sparkles, Star, Strikethrough, Sun, Table, Trash2, Underline, Undo2, Upload, UploadCloud, Users, Video, Volume2, Workflow, Wrench, X, XCircle, icons } from "lucide-react";
|
|
11
10
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
12
11
|
import { Slot } from "@radix-ui/react-slot";
|
|
13
12
|
import { cva } from "class-variance-authority";
|
|
@@ -29,13 +28,13 @@ import "react-datasheet-grid/dist/style.css";
|
|
|
29
28
|
import { EditorContent, useEditor } from "@tiptap/react";
|
|
30
29
|
import StarterKit from "@tiptap/starter-kit";
|
|
31
30
|
import TextAlign from "@tiptap/extension-text-align";
|
|
32
|
-
import Image$
|
|
31
|
+
import Image$1 from "@tiptap/extension-image";
|
|
33
32
|
import { TableKit } from "@tiptap/extension-table";
|
|
34
33
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
35
34
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
35
|
+
import { useDropzone } from "react-dropzone";
|
|
36
36
|
import ReactCrop, { centerCrop, makeAspectCrop } from "react-image-crop";
|
|
37
37
|
import "react-image-crop/dist/ReactCrop.css";
|
|
38
|
-
import { useDropzone } from "react-dropzone";
|
|
39
38
|
import * as SwitchPrimitives from "@radix-ui/react-switch";
|
|
40
39
|
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
41
40
|
import { Command } from "cmdk";
|
|
@@ -58,14 +57,6 @@ function findCollection(collections, predicate) {
|
|
|
58
57
|
return collections.find(predicate);
|
|
59
58
|
}
|
|
60
59
|
//#endregion
|
|
61
|
-
//#region src/providers/dyrected-context.ts
|
|
62
|
-
var DyrectedContext = createContext(void 0);
|
|
63
|
-
function useDyrected() {
|
|
64
|
-
const context = useContext(DyrectedContext);
|
|
65
|
-
if (!context) throw new Error("useDyrected must be used within a DyrectedProvider");
|
|
66
|
-
return context;
|
|
67
|
-
}
|
|
68
|
-
//#endregion
|
|
69
60
|
//#region src/providers/dyrected-provider.tsx
|
|
70
61
|
function resolveBlock(block, registry) {
|
|
71
62
|
return {
|
|
@@ -282,82 +273,6 @@ function QueryProvider({ children }) {
|
|
|
282
273
|
});
|
|
283
274
|
}
|
|
284
275
|
//#endregion
|
|
285
|
-
//#region src/lib/utils.ts
|
|
286
|
-
var customTwMerge = extendTailwindMerge({ prefix: "dy-" });
|
|
287
|
-
/**
|
|
288
|
-
* Merges Tailwind class names, resolving conflicts with the `dy-` prefix.
|
|
289
|
-
* Drop-in replacement for `clsx` that handles Dyrected's scoped Tailwind build.
|
|
290
|
-
*/
|
|
291
|
-
function cn(...inputs) {
|
|
292
|
-
return customTwMerge(clsx(inputs));
|
|
293
|
-
}
|
|
294
|
-
/**
|
|
295
|
-
* Resolves a media field value to an absolute URL.
|
|
296
|
-
*
|
|
297
|
-
* Handles three input shapes:
|
|
298
|
-
* - A fully-qualified URL (`https://...`) — returned as-is.
|
|
299
|
-
* - A root-relative path (`/uploads/...`) — origin prepended from `baseUrl`.
|
|
300
|
-
* - A bare filename or storage path (`default/photo.jpg`) — prefixed with `/api/media/`.
|
|
301
|
-
*
|
|
302
|
-
* Bare strings that look like document IDs (no extension, no slash) are returned
|
|
303
|
-
* as an empty string so they are not treated as media assets.
|
|
304
|
-
*
|
|
305
|
-
* @param val - A media field value: a URL string, storage path, or a document object with a `url` or `filename` property.
|
|
306
|
-
* @param baseUrl - The Dyrected backend base URL, used to build the origin for relative paths.
|
|
307
|
-
* @returns A fully-qualified URL string, or `""` if the value cannot be resolved.
|
|
308
|
-
*/
|
|
309
|
-
function getMediaUrl(val, baseUrl) {
|
|
310
|
-
if (!val) return "";
|
|
311
|
-
let baseOrigin = "";
|
|
312
|
-
if (baseUrl) if (baseUrl.startsWith("http://") || baseUrl.startsWith("https://")) try {
|
|
313
|
-
baseOrigin = new URL(baseUrl).origin;
|
|
314
|
-
} catch {
|
|
315
|
-
const match = baseUrl.match(/^(https?:\/\/[^\/]+)/);
|
|
316
|
-
baseOrigin = match ? match[1] : baseUrl;
|
|
317
|
-
}
|
|
318
|
-
else baseOrigin = baseUrl;
|
|
319
|
-
const prependBase = (urlPath) => {
|
|
320
|
-
if (urlPath.startsWith("http://") || urlPath.startsWith("https://")) return urlPath;
|
|
321
|
-
const cleanPath = urlPath.startsWith("/") ? urlPath : "/" + urlPath;
|
|
322
|
-
if (cleanPath.startsWith("/uploads/")) return `${baseOrigin.endsWith("/") ? baseOrigin.slice(0, -1) : baseOrigin}${cleanPath}`;
|
|
323
|
-
const basePrefix = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
|
|
324
|
-
try {
|
|
325
|
-
const baseObj = new URL(basePrefix);
|
|
326
|
-
const basePathname = baseObj.pathname === "/" ? "" : baseObj.pathname;
|
|
327
|
-
if (basePathname && cleanPath.startsWith(basePathname)) return `${baseObj.origin}${cleanPath}`;
|
|
328
|
-
} catch {
|
|
329
|
-
if (basePrefix && cleanPath.startsWith(basePrefix)) return cleanPath;
|
|
330
|
-
}
|
|
331
|
-
return `${basePrefix}${cleanPath}`;
|
|
332
|
-
};
|
|
333
|
-
let targetUrl = "";
|
|
334
|
-
if (typeof val === "object" && val !== null) targetUrl = val.url || val.filename || "";
|
|
335
|
-
else targetUrl = String(val);
|
|
336
|
-
if (!targetUrl) return "";
|
|
337
|
-
if (targetUrl.startsWith("http://") || targetUrl.startsWith("https://") || targetUrl.startsWith("/")) return targetUrl;
|
|
338
|
-
if (!targetUrl.includes("/") && !/\.[a-z0-9]+($|\?)/i.test(targetUrl)) return "";
|
|
339
|
-
return prependBase(`/api/media/${targetUrl}`);
|
|
340
|
-
}
|
|
341
|
-
/**
|
|
342
|
-
* Strips the directory prefix from a filename / storage path, returning only the last component (the actual filename).
|
|
343
|
-
* E.g., "dyrected_cloud/j95sv/bcuul/WhatsApp Image 2026-06-20 at 12" -> "WhatsApp Image 2026-06-20 at 12"
|
|
344
|
-
*/
|
|
345
|
-
function getDisplayFilename(filename) {
|
|
346
|
-
if (!filename) return "";
|
|
347
|
-
const parts = filename.split("/");
|
|
348
|
-
return parts[parts.length - 1];
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Resolves the site URL, overriding it with the current origin during local development on localhost/127.0.0.1.
|
|
352
|
-
*/
|
|
353
|
-
function getSiteUrl(configuredSiteUrl) {
|
|
354
|
-
if (typeof window !== "undefined") {
|
|
355
|
-
if (window.location.pathname.startsWith("/sites/")) return configuredSiteUrl || "";
|
|
356
|
-
if (window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1") return window.location.origin;
|
|
357
|
-
}
|
|
358
|
-
return configuredSiteUrl || (typeof window !== "undefined" ? window.location.origin : "");
|
|
359
|
-
}
|
|
360
|
-
//#endregion
|
|
361
276
|
//#region src/lib/admin-icons.ts
|
|
362
277
|
/**
|
|
363
278
|
* Type guard — returns `true` if `value` is a string that matches a known
|
|
@@ -495,36 +410,6 @@ function useSidebarControl() {
|
|
|
495
410
|
return useContext(SidebarControlContext);
|
|
496
411
|
}
|
|
497
412
|
//#endregion
|
|
498
|
-
//#region src/hooks/admin-theme.ts
|
|
499
|
-
function resolveAdminTheme(preference, systemTheme) {
|
|
500
|
-
return preference === "system" ? systemTheme : preference;
|
|
501
|
-
}
|
|
502
|
-
function adminThemeClassName(resolvedTheme) {
|
|
503
|
-
return resolvedTheme === "dark" ? "dy-admin-ui dark" : "dy-admin-ui";
|
|
504
|
-
}
|
|
505
|
-
//#endregion
|
|
506
|
-
//#region src/hooks/admin-theme-context.ts
|
|
507
|
-
var AdminThemeContext = React$1.createContext(null);
|
|
508
|
-
//#endregion
|
|
509
|
-
//#region src/hooks/use-admin-theme.ts
|
|
510
|
-
function getSystemTheme$1() {
|
|
511
|
-
if (typeof window === "undefined" || !window.matchMedia) return "light";
|
|
512
|
-
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
513
|
-
}
|
|
514
|
-
function useAdminTheme() {
|
|
515
|
-
const context = React$1.useContext(AdminThemeContext);
|
|
516
|
-
if (!context) {
|
|
517
|
-
const resolvedTheme = getSystemTheme$1();
|
|
518
|
-
return {
|
|
519
|
-
theme: "system",
|
|
520
|
-
resolvedTheme,
|
|
521
|
-
setTheme: () => void 0,
|
|
522
|
-
themeClassName: adminThemeClassName(resolvedTheme)
|
|
523
|
-
};
|
|
524
|
-
}
|
|
525
|
-
return context;
|
|
526
|
-
}
|
|
527
|
-
//#endregion
|
|
528
413
|
//#region src/components/ui/dropdown-menu.tsx
|
|
529
414
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
|
530
415
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
@@ -701,7 +586,7 @@ var SheetDescription = React$1.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
701
586
|
SheetDescription.displayName = SheetPrimitive.Description.displayName;
|
|
702
587
|
//#endregion
|
|
703
588
|
//#region src/assets/dyrected.svg
|
|
704
|
-
var dyrected_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='75%20408%20880%20200'%20width='1024'%20height='320'%3e%3cpath%20d='M0%200%20C80.77777778%200%2080.77777778%200%20104.25%2016.25%20C110.41149028%2022.41149028%20115.8130796%2029.84774381%20119%2038%20C119.37125%2038.93457031%20119.7425%2039.86914062%20120.125%2040.83203125%20C125.97853191%2057.96580693%20124.38837118%2076.7725057%20116.9375%2093.0625%20C109.56325726%20107.53398146%2097.58992255%20116.7156145%2082.375%20121.875%20C71.26222779%20125.44607062%2060.56671647%20126.28755488%2048.92578125%20126.1953125%20C47.67873413%20126.19329834%2046.43168701%20126.19128418%2045.14685059%20126.18920898%20C40.53536241%20126.17882812%2035.9239271%20126.15090625%2031.3125%20126.125%20C20.979375%20126.08375%2010.64625%20126.0425%200%20126%20C0%2084.42%200%2042.84%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(94,437)'/%3e%3cpath%20d='M0%200%20C2.71975521%200.35943901%203.84341638%200.83999752%205.7890625%202.828125%20C6.39492188%203.62734375%207.00078125%204.4265625%207.625%205.25%20C8.3159375%206.14847656%209.006875%207.04695313%209.71875%207.97265625%20C10.4715625%208.97167969%2011.224375%209.97070312%2012%2011%20C13.27334297%2012.66801941%2014.55020731%2014.33328608%2015.828125%2015.99780273%20C16.68920631%2017.1197048%2017.54859726%2018.24290639%2018.40625%2019.36743164%20C20.72359821%2022.39401514%2023.10162467%2025.33084868%2025.625%2028.1875%20C28%2031%2028%2031%2028%2033%20C24.04%2033%2020.08%2033%2016%2033%20C16%2036.96%2016%2040.92%2016%2045%20C23.92%2045%2031.84%2045%2040%2045%20C40%2052.26%2040%2059.52%2040%2067%20C32.08%2067%2024.16%2067%2016%2067%20C16.05110565%2073.01513491%2016.11411805%2079.02770699%2016.20751953%2085.04199219%20C16.23569066%2087.08650395%2016.25692435%2089.13112384%2016.27099609%2091.17578125%20C16.29247887%2094.12035322%2016.3391569%2097.06363041%2016.390625%20100.0078125%20C16.39185364%20100.9174173%2016.39308228%20101.82702209%2016.39434814%20102.76419067%20C16.52453003%20108.44478815%2017.27045802%20111.64305028%2021%20116%20C25.45146778%20118.22573389%2031.49130269%20117.61284521%2036.22265625%20116.45703125%20C43.02192732%20113.57781706%2047.39900966%20107.25297069%2051.15625%20101.109375%20C56.12293503%2093.05732503%2066.02505874%2086.96170223%2075%2084.4375%20C75.99%2084.2209375%2075.99%2084.2209375%2077%2084%20C77.76934372%2083.82831802%2078.53868744%2083.65663605%2079.3313446%2083.47975159%20C81.85956507%2083.02524638%2084.13490112%2082.87925324%2086.69848633%2082.88647461%20C88.0493206%2082.88658791%2088.0493206%2082.88658791%2089.42744446%2082.88670349%20C90.3859581%2082.89186478%2091.34447174%2082.89702606%2092.33203125%2082.90234375%20C93.32377853%2082.9037587%2094.31552582%2082.90517365%2095.33732605%2082.90663147%20C98.49574843%2082.91221582%20101.65409915%2082.92476548%20104.8125%2082.9375%20C106.95768127%2082.94251702%20109.10286365%2082.94707958%20111.24804688%2082.95117188%20C116.49872224%2082.96218012%20121.749356%2082.9789027%20127%2083%20C126.41627107%2081.40206803%20125.81844039%2079.8092836%20125.21484375%2078.21875%20C124.88347412%2077.33123047%20124.55210449%2076.44371094%20124.21069336%2075.52929688%20C121.96215073%2070.83179705%20118.27353717%2068.10625131%20113.671875%2065.8671875%20C107.40145998%2063.8320528%2099.62475654%2063.83565488%2093.5625%2066.5625%20C90.74762291%2068.18758368%2089.23412527%2069.92734346%2087.375%2072.5625%20C83.79694231%2077.15174791%2079.16997757%2077.25826651%2073.6875%2078.1875%20C67.93513917%2079.45496934%2063.11247292%2082.15885793%2058%2085%20C56.67024353%2085.67377293%2055.33832199%2086.34340541%2054%2087%20C54.53283313%2074.23864658%2059.85622582%2063.62873005%2069.125%2054.8125%20C79.48783101%2046.05739319%2090.98874912%2042.60318009%20104.3125%2042.6875%20C105.24167236%2042.69313965%20106.17084473%2042.6987793%20107.12817383%2042.70458984%20C120.80891332%2042.94676927%20132.08138441%2047.30179809%20142%2057%20C150.69408674%2067.01964256%20154.41434505%2078.42703622%20154.12890625%2091.5%20C154.11960083%2092.32242188%20154.11029541%2093.14484375%20154.10070801%2093.9921875%20C154.07669258%2095.99492902%20154.03971288%2097.99750824%20154%20100%20C153.20788116%20100.00142502%20152.41576233%20100.00285004%20151.59963989%20100.00431824%20C144.09719277%20100.0222236%20136.5954255%20100.06405798%20129.09327888%20100.13209057%20C125.23723861%20100.16623308%20121.38158914%20100.19145048%20117.52539062%20100.19555664%20C113.79674299%20100.1998673%20110.06897502%20100.22855506%20106.34060287%20100.27343178%20C104.9254661%20100.2863193%20103.51022356%20100.29074578%20102.09503555%20100.28615379%20C90.97909255%20100.25851196%2082.24496399%20102.13674731%2074%20110%20C72.693186%20111.68664002%2071.44412084%20113.4192826%2070.25%20115.1875%20C60.98713546%20128.13484969%2049.31550166%20137.60492408%2033.359375%20140.6015625%20C22.09111259%20141.93803083%2011.94495066%20141.67673859%201.8125%20136.3125%20C-6.21093351%20129.71545467%20-11.15550672%20122.32419258%20-13%20112%20C-13.25198192%20108.45441218%20-13.23420464%20104.92803422%20-13.1953125%20101.375%20C-13.1924826%20100.38749756%20-13.18965271%2099.39999512%20-13.18673706%2098.38256836%20C-13.1756182%2095.25491785%20-13.15052916%2092.12756272%20-13.125%2089%20C-13.11495948%2086.86849374%20-13.10583551%2084.73698296%20-13.09765625%2082.60546875%20C-13.07570607%2077.4035335%20-13.04123391%2072.20181669%20-13%2067%20C-17.95%2067%20-22.9%2067%20-28%2067%20C-28%2059.74%20-28%2052.48%20-28%2045%20C-25.11584117%2043.55792059%20-22.58278472%2043.90605113%20-19.375%2043.9375%20C-18.18648437%2043.94652344%20-16.99796875%2043.95554687%20-15.7734375%2043.96484375%20C-14.85820313%2043.97644531%20-13.94296875%2043.98804688%20-13%2044%20C-13%2040.37%20-13%2036.74%20-13%2033%20C-16.63%2033%20-20.26%2033%20-24%2033%20C-22.47026072%2029.1756518%20-21.7364866%2027.36138218%20-19.27734375%2024.43359375%20C-18.74262451%2023.78841797%20-18.20790527%2023.14324219%20-17.65698242%2022.47851562%20C-16.80583862%2021.46821289%20-16.80583862%2021.46821289%20-15.9375%2020.4375%20C-10.41141017%2013.76832013%20-5.12012996%206.98560367%200%200%20Z%20'%20fill='%23B6FF2E'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C29.59839035%2022.9781895%2028.74526871%2040.62390375%2012.65625%2058.3359375%20C11%2060%2011%2060%208.4375%2062%20C5.46025693%2064.44286611%203.51309236%2067.23700629%201.33203125%2070.390625%20C0.89246094%2070.92171875%200.45289063%2071.4528125%200%2072%20C-0.66%2072%20-1.32%2072%20-2%2072%20C-2.93987733%2070.55661697%20-3.87796552%2069.11202069%20-4.8046875%2067.66015625%20C-8.25891165%2062.86262271%20-12.44079328%2060.54083019%20-18%2059%20C-25.38567118%2058.11965024%20-31.79640485%2058.30895235%20-38.12890625%2062.45703125%20C-43.93075089%2067.24143341%20-46.08004443%2072.64035542%20-47%2080%20C-47.62384022%2087.86038675%20-46.29060096%2095.4983732%20-41.375%20101.875%20C-36.78559554%20106.66837799%20-31.1204383%20109.16020416%20-24.5%20109.4375%20C-17.63097442%20109.06652475%20-10.76252345%20107.03884639%20-5.6171875%20102.3203125%20C-2.88904376%2098.40601931%20-1.66280214%2093.9535236%20-0.1809082%2089.45141602%20C3.35486261%2078.72166264%208.74872668%2071.79757179%2016.88671875%2064.08325195%20C20.82961215%2060.32870988%2023.90074122%2056.47544342%2027%2052%20C27.33%2052%2027.66%2052%2028%2052%20C28%2078.4%2028%20104.8%2028%20132%20C19.42%20132%2010.84%20132%202%20132%20C2%20128.37%202%20124.74%202%20121%20C1.34%20121%200.68%20121%200%20121%20C-0.495%20122.485%20-0.495%20122.485%20-1%20124%20C-12.73711711%20132.94256542%20-25.06338231%20134.43156199%20-39.3125%20132.56640625%20C-51.92494538%20129.92239101%20-62.18469132%20122.09849232%20-69.1875%20111.4375%20C-76.64035884%2098.17021241%20-78.4709381%2082.69085036%20-74.375%2068.0625%20C-69.54605076%2054.5211808%20-61.09321667%2044.22524607%20-48%2038%20C-41.32156484%2035.17823273%20-35.2722462%2034.50746377%20-28.0625%2034.5625%20C-27.13759766%2034.54251953%20-26.21269531%2034.52253906%20-25.25976562%2034.50195312%20C-15.04309922%2034.50911267%20-8.83524108%2037.47063244%20-1%2044%20C-0.67%2029.48%20-0.34%2014.96%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(902,431)'/%3e%3cpath%20d='M0%200%20C1.98755052%201.41100915%203.72130576%202.89802373%205.484375%204.578125%20C6.38349609%205.34576172%206.38349609%205.34576172%207.30078125%206.12890625%20C15.92373572%2013.93240069%2020.74453573%2025.07362429%2021.484375%2036.578125%20C21.60509121%2040.91384903%2021.70071786%2045.24490485%2021.484375%2049.578125%20C20.484375%2050.578125%2020.484375%2050.578125%2017.63072205%2050.69837952%20C16.35387039%2050.69615891%2015.07701874%2050.69393829%2013.76147461%2050.69165039%20C13.0590715%2050.69179642%2012.3566684%2050.69194244%2011.63298035%2050.6920929%20C9.30086222%2050.69139372%206.968823%2050.68360117%204.63671875%2050.67578125%20C3.02389062%2050.67391708%201.41106193%2050.67249318%20-0.20176697%2050.67149353%20C-4.45477857%2050.66766823%20-8.70775624%2050.65783785%20-12.96075439%2050.64678955%20C-17.2973993%2050.63657569%20-21.63404967%2050.63199596%20-25.97070312%2050.62695312%20C-34.48569269%2050.61621559%20-43.00065463%2050.59913903%20-51.515625%2050.578125%20C-50.76310085%2052.01068418%20-50.00072966%2053.43807287%20-49.234375%2054.86328125%20C-48.81091797%2055.65871338%20-48.38746094%2056.45414551%20-47.95117188%2057.27368164%20C-44.77728619%2062.36863181%20-40.24267716%2065.83885608%20-34.515625%2067.578125%20C-24.44648111%2068.75306138%20-13.88210791%2068.97920567%20-5.515625%2062.578125%20C-4.49191978%2061.60240597%20-3.48336669%2060.60937474%20-2.515625%2059.578125%20C0.41667693%2060.89933328%202.47102399%2062.32450697%204.71875%2064.6171875%20C5.29238281%2065.19726562%205.86601562%2065.77734375%206.45703125%2066.375%20C7.04355469%2066.97828125%207.63007813%2067.5815625%208.234375%2068.203125%20C8.83636719%2068.81414062%209.43835938%2069.42515625%2010.05859375%2070.0546875%20C11.53842805%2071.55801124%2013.01202176%2073.06747356%2014.484375%2074.578125%20C6.88082899%2084.58279081%20-3.31152864%2089.39611981%20-15.515625%2091.578125%20C-19.0759833%2091.8143607%20-22.63564692%2091.80900924%20-26.203125%2091.828125%20C-27.61754883%2091.8590625%20-27.61754883%2091.8590625%20-29.06054688%2091.890625%20C-43.17549414%2091.96823296%20-55.10728015%2086.56442315%20-65.26171875%2076.88671875%20C-75.61516851%2066.28205877%20-79.89439154%2053.46530582%20-79.73046875%2038.73046875%20C-78.80311822%2025.12370731%20-72.27652509%2013.81184063%20-62.515625%204.578125%20C-45.29287927%20-9.47756591%20-19.26149726%20-10.88693323%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(493.515625,472.421875)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C31.88545714%206.3480057%2034.74623297%2012.64267461%2037.375%2019.08984375%20C37.66681152%2019.80048477%2037.95862305%2020.51112579%2038.25927734%2021.24330139%20C39.17479456%2023.47391024%2040.08751229%2025.70565039%2041%2027.9375%20C41.60917627%2029.42390959%2042.2185503%2030.91023814%2042.828125%2032.39648438%20C43.27551025%2033.48759018%2043.27551025%2033.48759018%2043.73193359%2034.60073853%20C44.32289018%2036.04103366%2044.91435386%2037.48112086%2045.50634766%2038.92098999%20C46.83058613%2042.14243669%2048.14705044%2045.36608605%2049.4453125%2048.59814453%20C49.87585938%2049.6601709%2050.30640625%2050.72219727%2050.75%2051.81640625%20C51.11609375%2052.7297876%2051.4821875%2053.64316895%2051.859375%2054.58422852%20C52.99948383%2056.99890679%2054.32194326%2058.93105971%2056%2061%20C63.85224401%2042.59935141%2063.85224401%2042.59935141%2071.375%2024.0625%20C74.61034321%2015.88404588%2078.06515289%207.86969422%2082%200%20C90.91%200%2099.82%200%20109%200%20C105.62156917%2011.2614361%20105.62156917%2011.2614361%20103.94921875%2015.33203125%20C103.57990234%2016.23373047%20103.21058594%2017.13542969%20102.83007812%2018.06445312%20C102.45302734%2018.97130859%20102.07597656%2019.87816406%20101.6875%2020.8125%20C101.13932617%2022.15538086%20101.13932617%2022.15538086%20100.58007812%2023.52539062%20C98.52888864%2028.50280206%2096.36531611%2033.41002468%2094.08984375%2038.2890625%20C91.12034683%2044.67044212%2088.37355778%2051.13053761%2085.67678833%2057.63122559%20C84.27693812%2061.00305678%2082.86621358%2064.37034217%2081.45703125%2067.73828125%20C81.17043137%2068.42368988%2080.88383148%2069.10909851%2080.58854675%2069.8152771%20C77.59723903%2076.96761949%2074.59243132%2084.11392962%2071.5625%2091.25%20C71.09118652%2092.37220947%2070.61987305%2093.49441895%2070.13427734%2094.65063477%20C64.14372759%20108.71158026%2057.88097216%20122.54500294%2043.26171875%20129.16015625%20C32.99566383%20132.97224918%2018.99532524%20132.39132855%209%20128%20C6.27254605%20126.74842163%203.64641133%20125.4212209%201%20124%20C1.6411928%20121.09325931%202.56662682%20118.57468666%203.84765625%20115.890625%20C4.38422852%20114.75947266%204.38422852%20114.75947266%204.93164062%20113.60546875%20C5.30482422%20112.82816406%205.67800781%20112.05085937%206.0625%20111.25%20C6.62807617%20110.06083984%206.62807617%20110.06083984%207.20507812%20108.84765625%20C8.13345839%20106.89688254%209.06629544%20104.94823094%2010%20103%20C12.57030771%20104.02467879%2015.13501673%20105.05651863%2017.6875%20106.125%20C23.13926051%20107.56508768%2028.53393046%20107.91137353%2033.875%20105.9375%20C36.67992585%20103.3800676%2038.90092755%20100.67546954%2040%2097%20C39.51255272%2092.02739581%2037.81323979%2087.84336435%2035.75390625%2083.34765625%20C35.42739075%2082.61970352%2035.10087524%2081.89175079%2034.76446533%2081.14173889%20C34.06574374%2079.58604999%2033.36386031%2078.03177798%2032.65908813%2076.4788208%20C31.54929238%2074.03339714%2030.44768068%2071.58443912%2029.34838867%2069.13427734%20C28.24699442%2066.67954634%2027.14520032%2064.22500817%2026.04084778%2061.77160645%20C22.05427867%2052.9145598%2018.19057599%2044.00588863%2014.33935547%2035.08935547%20C13.03927819%2032.09059902%2011.73151205%2029.09532776%2010.42124939%2026.10101318%20C9.20378396%2023.3178069%207.98924352%2020.53332878%206.7749939%2017.74871826%20C6.17859872%2016.3828194%205.58097738%2015.01745522%204.98208618%2013.65264893%20C4.14875742%2011.75295298%203.31997874%209.85133284%202.4921875%207.94921875%20C2.01120605%206.84924561%201.53022461%205.74927246%201.03466797%204.6159668%20C0%202%200%202%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(224,467)'/%3e%3cpath%20d='M0%200%20C4.6456294%203.80490916%208.23887006%207.95463812%2010.84375%2013.40234375%20C10.84375%2014.06234375%2010.84375%2014.72234375%2010.84375%2015.40234375%20C0.44875%2020.84734375%200.44875%2020.84734375%20-10.15625%2026.40234375%20C-15.15625%2022.40234375%20-15.15625%2022.40234375%20-17.59375%2019.83984375%20C-23.69448695%2014.03670372%20-29.49135908%2013.8685058%20-37.5859375%2014.05859375%20C-44.66458696%2014.74012674%20-48.35592604%2018.17840756%20-52.89453125%2023.42578125%20C-57.35750661%2030.4173154%20-57.05559365%2039.03898526%20-55.7265625%2046.96484375%20C-53.69407611%2054.19146201%20-49.25238278%2059.49703127%20-42.90625%2063.40234375%20C-35.21481566%2065.45339291%20-27.19943303%2065.45458604%20-20.15625%2061.40234375%20C-17.38502725%2059.04807876%20-17.38502725%2059.04807876%20-15.15625%2056.40234375%20C-13.82291667%2055.06901042%20-12.48958333%2053.73567708%20-11.15625%2052.40234375%20C-3.48829498%2054.74171986%203.61512274%2057.95003181%2010.84375%2061.40234375%20C9.71301894%2068.83286216%205.25630274%2073.41753074%20-0.15625%2078.40234375%20C-14.27515309%2088.65893292%20-29.58374274%2090.22229359%20-46.59375%2087.94140625%20C-59.50522416%2084.75107107%20-71.47879005%2076.68814229%20-78.59375%2065.40234375%20C-85.12640699%2053.53652894%20-87.70329542%2038.76522142%20-84.28515625%2025.4921875%20C-81.80476638%2018.01848819%20-78.48663047%2012.17115378%20-73.15625%206.40234375%20C-72.35574219%205.46648437%20-72.35574219%205.46648437%20-71.5390625%204.51171875%20C-54.14361329%20-14.63159857%20-19.9950983%20-14.8152087%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(612.15625,475.59765625)'/%3e%3cpath%20d='M0%200%20C0.92917236%200.00563965%201.85834473%200.0112793%202.81567383%200.01708984%20C16.49641332%200.25926927%2027.76888441%204.61429809%2037.6875%2014.3125%20C46.38158674%2024.33214256%2050.10184505%2035.73953622%2049.81640625%2048.8125%20C49.80710083%2049.63492188%2049.79779541%2050.45734375%2049.78820801%2051.3046875%20C49.76419258%2053.30742902%2049.72721288%2055.31000824%2049.6875%2057.3125%20C48.89538116%2057.31392502%2048.10326233%2057.31535004%2047.28713989%2057.31681824%20C39.78469277%2057.3347236%2032.2829255%2057.37655798%2024.78077888%2057.44459057%20C20.92473861%2057.47873308%2017.06908914%2057.50395048%2013.21289062%2057.50805664%20C9.48424299%2057.5123673%205.75647502%2057.54105506%202.02810287%2057.58593178%20C0.6129661%2057.5988193%20-0.80227644%2057.60324578%20-2.21746445%2057.59865379%20C-13.33340745%2057.57101196%20-22.06753601%2059.44924731%20-30.3125%2067.3125%20C-31.619314%2068.99914002%20-32.86837916%2070.7317826%20-34.0625%2072.5%20C-39.27138551%2079.83175205%20-44.31888353%2086.93254032%20-53.3125%2089.3125%20C-59.27605196%2089.97511688%20-63.4418563%2088.64128375%20-68.3125%2085.3125%20C-71.47815211%2082.38915707%20-73.44158139%2079.56624985%20-74.3125%2075.3125%20C-73.64863281%2075.07015625%20-72.98476563%2074.8278125%20-72.30078125%2074.578125%20C-70.97626953%2074.07539062%20-70.97626953%2074.07539062%20-69.625%2073.5625%20C-68.31982422%2073.07523438%20-68.31982422%2073.07523438%20-66.98828125%2072.578125%20C-61.914668%2070.17834297%20-58.99832299%2067.14164616%20-55.97827148%2062.4387207%20C-49.17329509%2051.85146005%20-39.91704612%2044.06974446%20-27.3125%2041.3125%20C-26.54315628%2041.14081802%20-25.77381256%2040.96913605%20-24.9811554%2040.79225159%20C-22.45293493%2040.33774638%20-20.17759888%2040.19175324%20-17.61401367%2040.19897461%20C-16.2631794%2040.19908791%20-16.2631794%2040.19908791%20-14.88505554%2040.19920349%20C-13.44728508%2040.20694542%20-13.44728508%2040.20694542%20-11.98046875%2040.21484375%20C-10.49284782%2040.21696617%20-10.49284782%2040.21696617%20-8.97517395%2040.21913147%20C-5.81675157%2040.22471582%20-2.65840085%2040.23726548%200.5%2040.25%20C2.64518127%2040.25501702%204.79036365%2040.25957958%206.93554688%2040.26367188%20C12.18622224%2040.27468012%2017.436856%2040.2914027%2022.6875%2040.3125%20C22.10377107%2038.71456803%2021.50594039%2037.1217836%2020.90234375%2035.53125%20C20.57097412%2034.64373047%2020.23960449%2033.75621094%2019.89819336%2032.84179688%20C17.64965073%2028.14429705%2013.96103717%2025.41875131%209.359375%2023.1796875%20C3.08895998%2021.1445528%20-4.68774346%2021.14815488%20-10.75%2023.875%20C-13.56487709%2025.50008368%20-15.07837473%2027.23984346%20-16.9375%2029.875%20C-20.51555769%2034.46424791%20-25.14252243%2034.57076651%20-30.625%2035.5%20C-36.37736083%2036.76746934%20-41.20002708%2039.47135793%20-46.3125%2042.3125%20C-47.64225647%2042.98627293%20-48.97417801%2043.65590541%20-50.3125%2044.3125%20C-49.77966687%2031.55114658%20-44.45627418%2020.94123005%20-35.1875%2012.125%20C-24.82466899%203.36989319%20-13.32375088%20-0.08431991%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(764.3125,465.6875)'/%3e%3cpath%20d='M0%200%20C44.84375%200%2044.84375%200%2055%2010%20C63.50692661%2020.10567615%2066.02395277%2031.00367642%2065%2044%20C63.92164324%2052.75980221%2059.27536689%2061.86408571%2053%2068%20C36.90761972%2079.76525518%2020.54677762%2076%200%2076%20C0%2050.92%200%2025.84%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(123,462)'/%3e%3cpath%20d='M0%200%20C0%208.58%200%2017.16%200%2026%20C-2.475%2026.0825%20-4.95%2026.165%20-7.5%2026.25%20C-15.58592043%2026.68028387%20-20.78770187%2028.00185508%20-26.8125%2033.625%20C-32.18698591%2040.84882192%20-32.45755497%2050.04763218%20-32.51171875%2058.6953125%20C-32.52966995%2059.76876923%20-32.54762115%2060.84222595%20-32.56611633%2061.94821167%20C-32.61983039%2065.34043577%20-32.65398988%2068.73252235%20-32.6875%2072.125%20C-32.72070741%2074.44012315%20-32.75520018%2076.75522823%20-32.79101562%2079.0703125%20C-32.87792806%2084.71355721%20-32.93833073%2090.35619859%20-33%2096%20C-42.24%2096%20-51.48%2096%20-61%2096%20C-61.11629021%2091.57321943%20-61.21532635%2087.15195899%20-61.2746582%2082.72485352%20C-61.29944483%2081.22662179%20-61.33328586%2079.72850609%20-61.37719727%2078.23071289%20C-61.84659218%2061.77980184%20-58.18723461%2049.29745852%20-47.64160156%2036.32958984%20C-46.11388537%2034.44998397%20-44.58793536%2032.56895731%20-43.0625%2030.6875%20C-42.54276611%2030.05078369%20-42.02303223%2029.41406738%20-41.48754883%2028.75805664%20C-38.17466035%2024.64362091%20-35.32555694%2020.47816771%20-32.625%2015.9375%20C-27.24219449%206.99173768%20-23.75743907%203.76906718%20-13.609375%200.6640625%20C-10%200%20-10%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(406,466)'/%3e%3cpath%20d='M0%200%20C5.66129431%204.69766975%2010.85228904%209.74723372%2016%2015%20C11.92304775%2022.70385133%204.05433775%2027.16606635%20-4%2030%20C-19.29250715%2034.53548448%20-36.16315756%2033.34402642%20-50.4140625%2026.31640625%20C-58.66486514%2021.8238732%20-58.66486514%2021.8238732%20-59.77929688%2019.08422852%20C-60%2017%20-60%2017%20-57.796875%2013.87109375%20C-56.79405635%2012.71532531%20-55.77778517%2011.57112409%20-54.75%2010.4375%20C-54.24597656%209.86064453%20-53.74195313%209.28378906%20-53.22265625%208.68945312%20C-50.89341628%206.03925489%20-48.51068548%203.47978615%20-46%201%20C-42.31120701%202.80247839%20-38.77349917%204.8276212%20-35.21875%206.87890625%20C-27.51820571%2010.76985028%20-18.90673806%209.19207078%20-10.88671875%207.06640625%20C-6.60864698%205.48600897%20-3.35300014%203.04728542%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(791,532)'/%3e%3cpath%20d='M0%200%20C4.56326885%202.95860288%208.00828055%206.6679148%209.9375%2011.8125%20C9.9375%2013.4625%209.9375%2015.1125%209.9375%2016.8125%20C-4.9125%2016.8125%20-19.7625%2016.8125%20-35.0625%2016.8125%20C-33.85907282%209.59193695%20-31.77484523%205.59340843%20-25.8984375%201.19140625%20C-17.83251928%20-3.44583989%20-8.3946856%20-4.34922034%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(477.0625,489.1875)'/%3e%3cpath%20d='M0%200%20C2.71975521%200.35943901%203.84341638%200.83999752%205.7890625%202.828125%20C6.39492188%203.62734375%207.00078125%204.4265625%207.625%205.25%20C8.3159375%206.14847656%209.006875%207.04695313%209.71875%207.97265625%20C10.4715625%208.97167969%2011.224375%209.97070312%2012%2011%20C13.27334297%2012.66801941%2014.55020731%2014.33328608%2015.828125%2015.99780273%20C16.68920631%2017.1197048%2017.54859726%2018.24290639%2018.40625%2019.36743164%20C20.72359821%2022.39401514%2023.10162467%2025.33084868%2025.625%2028.1875%20C28%2031%2028%2031%2028%2033%20C24.04%2033%2020.08%2033%2016%2033%20C16%2036.96%2016%2040.92%2016%2045%20C15.01%2044.505%2015.01%2044.505%2014%2044%20C13.5859375%2041.27734375%2013.5859375%2041.27734375%2013.375%2037.9375%20C13.30023437%2036.83277344%2013.22546875%2035.72804688%2013.1484375%2034.58984375%20C13.09945312%2033.73519531%2013.05046875%2032.88054687%2013%2032%20C14.134375%2031.54625%2015.26875%2031.0925%2016.4375%2030.625%20C20.04721692%2029.42904194%2020.04721692%2029.42904194%2021%2027%20C20.34%2027%2019.68%2027%2019%2027%20C18.608125%2025.9275%2018.21625%2024.855%2017.8125%2023.75%20C16.27259896%2020.08533167%2014.21849461%2018.3486312%2011%2016%20C11%2015.34%2011%2014.68%2011%2014%20C10.34%2014%209.68%2014%209%2014%20C7.4921875%2012.25%207.4921875%2012.25%205.875%2010%20C5.33617187%209.2575%204.79734375%208.515%204.2421875%207.75%20C3.83226562%207.1725%203.42234375%206.595%203%206%20C-3.93710167%209.15322803%20-9.63269943%2014.06474733%20-12.375%2021.25%20C-12.63023437%2022.05953125%20-12.88546875%2022.8690625%20-13.1484375%2023.703125%20C-14.07536523%2026.20327869%20-15.31553255%2027.94852568%20-17%2030%20C-15.02%2030.33%20-13.04%2030.66%20-11%2031%20C-9.51119807%2035.4664058%20-9.31090749%2039.30056546%20-11.09765625%2043.70703125%20C-13%2046%20-13%2046%20-16.13671875%2046.48828125%20C-19.42447917%2046.32552083%20-22.71223958%2046.16276042%20-26%2046%20C-26%2052.27%20-26%2058.54%20-26%2065%20C-24.1025%2064.95875%20-22.205%2064.9175%20-20.25%2064.875%20C-16.10895658%2064.78497732%20-13.61590012%2065.02831107%20-10%2067%20C-9.98786972%2067.91628929%20-9.98786972%2067.91628929%20-9.97549438%2068.85108948%20C-9.88922875%2075.22686062%20-9.78971604%2081.60232871%20-9.68261719%2087.9777832%20C-9.644408%2090.35500995%20-9.60954125%2092.73229292%20-9.578125%2095.10961914%20C-9.53229961%2098.53291881%20-9.47433332%20101.95583411%20-9.4140625%20105.37890625%20C-9.40251129%20106.43646622%20-9.39096008%20107.49402618%20-9.37905884%20108.58363342%20C-9.26966133%20114.09218328%20-8.82932532%20118.79123684%20-7%20124%20C-6.34%20124%20-5.68%20124%20-5%20124%20C-4.9071875%20124.928125%20-4.9071875%20124.928125%20-4.8125%20125.875%20C-4.19124685%20128.2501999%20-4.19124685%20128.2501999%20-1.625%20129.0625%20C-0.75875%20129.371875%200.1075%20129.68125%201%20130%20C2.6875%20131.5625%202.6875%20131.5625%204%20133%20C4.66%20133.33%205.32%20133.66%206%20134%20C6.625%20136.0625%206.625%20136.0625%207%20138%20C0.64042919%20136.72808584%20-3.00409013%20132.83266023%20-7%20128%20C-12.40978943%20119.7580267%20-13.30059906%20110.99356957%20-13.1953125%20101.375%20C-13.1924826%20100.38749756%20-13.18965271%2099.39999512%20-13.18673706%2098.38256836%20C-13.1756182%2095.25491785%20-13.15052916%2092.12756272%20-13.125%2089%20C-13.11495948%2086.86849374%20-13.10583551%2084.73698296%20-13.09765625%2082.60546875%20C-13.07570607%2077.4035335%20-13.04123391%2072.20181669%20-13%2067%20C-17.95%2067%20-22.9%2067%20-28%2067%20C-28%2059.74%20-28%2052.48%20-28%2045%20C-25.11584117%2043.55792059%20-22.58278472%2043.90605113%20-19.375%2043.9375%20C-18.18648437%2043.94652344%20-16.99796875%2043.95554687%20-15.7734375%2043.96484375%20C-14.85820313%2043.97644531%20-13.94296875%2043.98804688%20-13%2044%20C-13%2040.37%20-13%2036.74%20-13%2033%20C-16.63%2033%20-20.26%2033%20-24%2033%20C-22.47026072%2029.1756518%20-21.7364866%2027.36138218%20-19.27734375%2024.43359375%20C-18.74262451%2023.78841797%20-18.20790527%2023.14324219%20-17.65698242%2022.47851562%20C-16.80583862%2021.46821289%20-16.80583862%2021.46821289%20-15.9375%2020.4375%20C-10.41141017%2013.76832013%20-5.12012996%206.98560367%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C0.68078561%2010.15126993%20-6.26162995%2018.50517827%20-12.625%2025.8125%20C-13.10155029%2026.35165039%20-13.57810059%2026.89080078%20-14.0690918%2027.44628906%20C-17.57519453%2031.41656971%20-20.32199043%2035.44738374%20-23%2040%20C-23.33%2040%20-23.66%2040%20-24%2040%20C-24%2027.13%20-24%2014.26%20-24%201%20C-20.225625%200.835%20-16.45125%200.67%20-12.5625%200.5%20C-11.37084229%200.44779297%20-10.17918457%200.39558594%20-8.95141602%200.34179688%20C-7.55427368%200.28088867%20-7.55427368%200.28088867%20-6.12890625%200.21875%20C-5.17056885%200.17685547%20-4.21223145%200.13496094%20-3.22485352%200.09179688%20C-1%200%20-1%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(369,467)'/%3e%3cpath%20d='M0%200%20C2.00720923%200.28674418%204.0085944%200.61866701%206%201%20C6.495%202.485%206.495%202.485%207%204%20C7.66%204%208.32%204%209%204%20C9.495%205.98%209.495%205.98%2010%208%20C10.66%208%2011.32%208%2012%208%20C12.474375%208.639375%2012.94875%209.27875%2013.4375%209.9375%20C14.9091365%2012.28372963%2014.9091365%2012.28372963%2018%2013%20C18.495%2015.97%2018.495%2015.97%2019%2019%20C19.66%2019%2020.32%2019%2021%2019%20C22.0625%2020.8125%2022.0625%2020.8125%2023%2023%20C22.505%2024.485%2022.505%2024.485%2022%2026%20C21.3709375%2025.17757813%2020.741875%2024.35515625%2020.09375%2023.5078125%20C17.8531051%2020.58200082%2015.60149285%2017.6647905%2013.34716797%2014.74951172%20C12.10990021%2013.14272289%2010.88443769%2011.52686179%209.66015625%209.91015625%20C8.96792969%209.01167969%208.27570312%208.11320312%207.5625%207.1875%20C6.63630859%205.97126953%206.63630859%205.97126953%205.69140625%204.73046875%20C5.13324219%204.15941406%204.57507813%203.58835937%204%203%20C3.01%203%202.02%203%201%203%20C-1.1667738%205.33134682%20-1.1667738%205.33134682%20-3.375%208.4375%20C-4.25611385%209.62008724%20-5.13764692%2010.80236221%20-6.01953125%2011.984375%20C-6.49342285%2012.62568359%20-6.96731445%2013.26699219%20-7.45556641%2013.92773438%20C-9.12007314%2016.16110984%20-10.81214938%2018.37132519%20-12.51171875%2020.578125%20C-13.10098145%2021.34326416%20-13.69024414%2022.10840332%20-14.29736328%2022.89672852%20C-15.46363033%2024.41029473%20-16.62997013%2025.92380488%20-17.79638672%2027.43725586%20C-18.32893066%2028.13214111%20-18.86147461%2028.82702637%20-19.41015625%2029.54296875%20C-19.88590088%2030.16196045%20-20.36164551%2030.78095215%20-20.85180664%2031.41870117%20C-22.07331217%2033.0102519%20-22.07331217%2033.0102519%20-23%2035%20C-19.37%2035%20-15.74%2035%20-12%2035%20C-12%2038.63%20-12%2042.26%20-12%2046%20C-16.95%2046.33%20-21.9%2046.66%20-27%2047%20C-27%2054.26%20-27%2061.52%20-27%2069%20C-22.05%2069%20-17.1%2069%20-12%2069%20C-11.98541748%2070.31081543%20-11.97083496%2071.62163086%20-11.95581055%2072.97216797%20C-11.89747545%2077.87396394%20-11.82024648%2082.77531735%20-11.73754883%2087.67675781%20C-11.70446426%2089.7909421%20-11.67638204%2091.90521123%20-11.65356445%2094.01953125%20C-11.61971392%2097.07328159%20-11.56738455%20100.12626594%20-11.51171875%20103.1796875%20C-11.50532883%20104.11239471%20-11.4989389%20105.04510193%20-11.49235535%20106.006073%20C-11.26437364%20116.37399184%20-8.63724873%20126.05256773%20-1.3671875%20133.72265625%20C6.92807918%20141.29255208%2016.09690889%20142.40300166%2027.015625%20142.2109375%20C37.64372477%20141.64827339%2045.9753421%20138.49041118%2055%20133%20C55.66%20132.67%2056.32%20132.34%2057%20132%20C56.17631135%20135.60363786%2054.73164913%20137.5598772%2051.8125%20139.6875%20C43.36448472%20144.51927852%2032.57412865%20144.15231016%2023.0625%20144.25%20C22.03491577%20144.2641394%2022.03491577%20144.2641394%2020.98657227%20144.27856445%20C16.010662%20144.24659412%2011.7517971%20143.33793617%207%20142%20C6.67%20142.66%206.34%20143.32%206%20144%20C6%20143.34%206%20142.68%206%20142%20C5.2575%20141.731875%204.515%20141.46375%203.75%20141.1875%20C1.10938051%20140.04723249%20-0.85552844%20138.90619694%20-3%20137%20C-3%20136.34%20-3%20135.68%20-3%20135%20C-4.32%20134.67%20-5.64%20134.34%20-7%20134%20C-7.495%20132.02%20-7.495%20132.02%20-8%20130%20C-8.66%20130%20-9.32%20130%20-10%20130%20C-13.3917714%20117.17092103%20-13.35377076%20104.75435973%20-13.1875%2091.5625%20C-13.17241597%2089.4629003%20-13.15873419%2087.36329003%20-13.14648438%2085.26367188%20C-13.1137965%2080.17551518%20-13.0622224%2075.0878777%20-13%2070%20C-17.95%2070%20-22.9%2070%20-28%2070%20C-29.81226714%2066.37546571%20-29.18470181%2062.11521368%20-29.1875%2058.125%20C-29.19974609%2057.21363281%20-29.21199219%2056.30226563%20-29.22460938%2055.36328125%20C-29.22654297%2054.48285156%20-29.22847656%2053.60242188%20-29.23046875%2052.6953125%20C-29.23457764%2051.89109863%20-29.23868652%2051.08688477%20-29.24291992%2050.25830078%20C-28.96966064%2047.71795063%20-28.41516433%2046.12497675%20-27%2044%20C-24.1796875%2043.390625%20-24.1796875%2043.390625%20-20.875%2043.25%20C-19.77929688%2043.19328125%20-18.68359375%2043.1365625%20-17.5546875%2043.078125%20C-16.71164062%2043.05234375%20-15.86859375%2043.0265625%20-15%2043%20C-14.505%2040.03%20-14.505%2040.03%20-14%2037%20C-14.721875%2037.20625%20-15.44375%2037.4125%20-16.1875%2037.625%20C-19.54297056%2038.07239607%20-21.11604375%2037.76241771%20-24%2036%20C-24.875%2033.7421875%20-24.875%2033.7421875%20-25%2031%20C-23.453125%2028.359375%20-23.453125%2028.359375%20-21.25%2025.75%20C-20.53328125%2024.87859375%20-19.8165625%2024.0071875%20-19.078125%2023.109375%20C-17%2021%20-17%2021%20-14%2020%20C-14%2019.34%20-14%2018.68%20-14%2018%20C-13.34%2018%20-12.68%2018%20-12%2018%20C-12%2017.01%20-12%2016.02%20-12%2015%20C-11.34%2015%20-10.68%2015%20-10%2015%20C-9.938125%2014.46375%20-9.87625%2013.9275%20-9.8125%2013.375%20C-8.59964736%209.82973843%20-6.55389074%207.7407608%20-4%205%20C-3.34%205%20-2.68%205%20-2%205%20C-1.855625%204.360625%20-1.71125%203.72125%20-1.5625%203.0625%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(659,421)'/%3e%3cpath%20d='M0%200%20C7.92%200%2015.84%200%2024%200%20C24%207.26%2024%2014.52%2024%2022%20C16.08%2022%208.16%2022%200%2022%20C0.05110565%2028.01513491%200.11411805%2034.02770699%200.20751953%2040.04199219%20C0.23569066%2042.08650395%200.25692435%2044.13112384%200.27099609%2046.17578125%20C0.29247887%2049.12035322%200.3391569%2052.06363041%200.390625%2055.0078125%20C0.39185364%2055.9174173%200.39308228%2056.82702209%200.39434814%2057.76419067%20C0.52424586%2063.4323883%201.24752639%2066.66904733%205%2071%20C7.15616421%2071.84067552%207.15616421%2071.84067552%209.4375%2071.875%20C13.59953049%2072.52786753%2013.59953049%2072.52786753%2015.484375%2074.75%20C16.28446347%2076.16314328%2017.06211601%2077.58923329%2017.81640625%2079.02734375%20C20.15058208%2082.91763679%2023.83300287%2084.61100096%2028%2086%20C29.72795352%2086.06802967%2031.45835365%2086.08495645%2033.1875%2086.0625%20C34.08855469%2086.05347656%2034.98960937%2086.04445313%2035.91796875%2086.03515625%20C36.60503906%2086.02355469%2037.29210937%2086.01195312%2038%2086%20C28.4198669%2094.94145756%2015.04998512%2096.35397366%202.5546875%2096.203125%20C-1.58388881%2095.96663493%20-5.07173198%2095.28269976%20-9%2094%20C-6.13129876%2093.17066175%20-3.67877335%2092.90857069%20-0.69921875%2093.0078125%20C0.51991211%2093.03294922%200.51991211%2093.03294922%201.76367188%2093.05859375%20C3.45140273%2093.10256528%205.13894568%2093.15453885%206.82617188%2093.21484375%20C12.36551383%2093.31102806%2016.06333211%2092.5449489%2021%2090%20C21%2089.01%2021%2088.02%2021%2087%20C19.5459375%2086.0409375%2019.5459375%2086.0409375%2018.0625%2085.0625%20C15%2083%2015%2083%2014.125%2080.75%20C14.08375%2080.1725%2014.0425%2079.595%2014%2079%20C13.34%2079%2012.68%2079%2012%2079%20C12%2078.34%2012%2077.68%2012%2077%20C11.278125%2076.896875%2010.55625%2076.79375%209.8125%2076.6875%20C5.46614904%2075.62505865%202.79905402%2074.21337832%200.3125%2070.4375%20C-0.120625%2069.633125%20-0.55375%2068.82875%20-1%2068%20C-1.66%2067.34%20-2.32%2066.68%20-3%2066%20C-4.56682324%2055.65896659%20-4.02187183%2044.9749078%20-3.6875%2034.5625%20C-3.65293701%2033.35924072%20-3.61837402%2032.15598145%20-3.58276367%2030.91625977%20C-3.53869385%2029.79018311%20-3.49462402%2028.66410645%20-3.44921875%2027.50390625%20C-3.41143311%2026.49142822%20-3.37364746%2025.4789502%20-3.3347168%2024.43579102%20C-3%2022%20-3%2022%20-1%2020%20C1.15478516%2019.68115234%201.15478516%2019.68115234%203.7890625%2019.5859375%20C5.20058594%2019.52792969%205.20058594%2019.52792969%206.640625%2019.46875%20C7.62546875%2019.4378125%208.6103125%2019.406875%209.625%2019.375%20C11.11386719%2019.31699219%2011.11386719%2019.31699219%2012.6328125%2019.2578125%20C15.08835385%2019.1633686%2017.5438841%2019.07780125%2020%2019%20C19.98839844%2018.18015625%2019.97679687%2017.3603125%2019.96484375%2016.515625%20C19.95582031%2015.43796875%2019.94679688%2014.3603125%2019.9375%2013.25%20C19.92589844%2012.18265625%2019.91429687%2011.1153125%2019.90234375%2010.015625%20C19.98489913%207.46631499%2020.25382442%205.42066409%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%239BE600'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C3%203%203%203%203.2578125%205.3046875%20C3.21398437%206.15289062%203.17015625%207.00109375%203.125%207.875%20C3.00502835%2011.46371724%203.2754511%2014.48076247%204%2018%20C3.60976365%2021.31700894%202.61164065%2022.93522445%200%2025%20C-2.36010742%2025.34057617%20-2.36010742%2025.34057617%20-5.10546875%2025.29296875%20C-6.08837891%2025.28330078%20-7.07128906%2025.27363281%20-8.08398438%2025.26367188%20C-9.10814453%2025.23853516%20-10.13230469%2025.21339844%20-11.1875%2025.1875%20C-12.22326172%2025.17396484%20-13.25902344%2025.16042969%20-14.32617188%2025.14648438%20C-16.88463699%2025.11111389%20-19.4420578%2025.06175544%20-22%2025%20C-21.93433838%2025.60046143%20-21.86867676%2026.20092285%20-21.80102539%2026.81958008%20C-20.93290834%2035.43139683%20-20.67409758%2044.04154841%20-20.4375%2052.6875%20C-20.39418922%2054.17904546%20-20.35057152%2055.67058205%20-20.30664062%2057.16210938%20C-20.20089527%2060.77464429%20-20.09928034%2064.38728094%20-20%2068%20C-19.05898438%2068.29648437%20-18.11796875%2068.59296875%20-17.1484375%2068.8984375%20C-14.2055568%2069.92808062%20-12.3554191%2071.00695307%20-10%2073%20C-14.03645882%2073.31658501%20-16.32333195%2073.4210379%20-19.8125%2071.25%20C-23.0830854%2067.88596931%20-24.25459399%2065.28097814%20-24.22705078%2060.59863281%20C-24.22689972%2059.7380426%20-24.22674866%2058.87745239%20-24.22659302%2057.99078369%20C-24.21627045%2057.07085632%20-24.20594788%2056.15092896%20-24.1953125%2055.203125%20C-24.1924826%2054.25435486%20-24.18965271%2053.30558472%20-24.18673706%2052.32806396%20C-24.17555448%2049.30191361%20-24.1504533%2046.2760607%20-24.125%2043.25%20C-24.11496772%2041.19661886%20-24.1058423%2039.14323308%20-24.09765625%2037.08984375%20C-24.07732418%2032.05968942%20-24.03817166%2027.03017714%20-24%2022%20C-16.08%2022%20-8.16%2022%200%2022%20C0%2014.74%200%207.48%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(700,468)'/%3e%3cpath%20d='M0%200%20C4.62%200%209.24%200%2014%200%20C14.01458252%201.31081543%2014.02916504%202.62163086%2014.04418945%203.97216797%20C14.10252455%208.87396394%2014.17975352%2013.77531735%2014.26245117%2018.67675781%20C14.29553574%2020.7909421%2014.32361796%2022.90521123%2014.34643555%2025.01953125%20C14.38028608%2028.07328159%2014.43261545%2031.12626594%2014.48828125%2034.1796875%20C14.49467117%2035.11239471%2014.5010611%2036.04510193%2014.50764465%2037.006073%20C14.73562636%2047.37399184%2017.36275127%2057.05256773%2024.6328125%2064.72265625%20C32.92807918%2072.29255208%2042.09690889%2073.40300166%2053.015625%2073.2109375%20C63.64372477%2072.64827339%2071.9753421%2069.49041118%2081%2064%20C81.66%2063.67%2082.32%2063.34%2083%2063%20C82.17631135%2066.60363786%2080.73164913%2068.5598772%2077.8125%2070.6875%20C69.36448472%2075.51927852%2058.57412865%2075.15231016%2049.0625%2075.25%20C48.03491577%2075.2641394%2048.03491577%2075.2641394%2046.98657227%2075.27856445%20C42.010662%2075.24659412%2037.7517971%2074.33793617%2033%2073%20C32.67%2073.66%2032.34%2074.32%2032%2075%20C32%2074.34%2032%2073.68%2032%2073%20C31.2575%2072.731875%2030.515%2072.46375%2029.75%2072.1875%20C27.10938051%2071.04723249%2025.14447156%2069.90619694%2023%2068%20C23%2067.34%2023%2066.68%2023%2066%20C21.68%2065.67%2020.36%2065.34%2019%2065%20C18.67%2063.68%2018.34%2062.36%2018%2061%20C17.34%2061%2016.68%2061%2016%2061%20C12.6082286%2048.17092103%2012.64622924%2035.75435973%2012.8125%2022.5625%20C12.82758403%2020.4629003%2012.84126581%2018.36329003%2012.85351562%2016.26367188%20C12.8862035%2011.17551518%2012.9377776%206.0878777%2013%201%20C8.71%201%204.42%201%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(633,490)'/%3e%3cpath%20d='M0%200%20C0.81434143%202.85160391%201.11881242%205.36626131%201.09765625%208.328125%20C1.09443359%209.12734375%201.09121094%209.9265625%201.08789062%2010.75%20C1.07951172%2011.575%201.07113281%2012.4%201.0625%2013.25%20C1.05798828%2014.09046875%201.05347656%2014.9309375%201.04882812%2015.796875%20C1.03707961%2017.86461401%201.01914522%2019.93231624%201%2022%20C1.99%2022%202.98%2022%204%2022%20C4%2028.27%204%2034.54%204%2041%20C-5.24%2041%20-14.48%2041%20-24%2041%20C-24%2040.67%20-24%2040.34%20-24%2040%20C-22.35%2040%20-20.7%2040%20-19%2040%20C-19%2028.12%20-19%2016.24%20-19%204%20C-18.34%203.67%20-17.68%203.34%20-17%203%20C-17%2015.21%20-17%2027.42%20-17%2040%20C-11.72%2040%20-6.44%2040%20-1%2040%20C-1.00523682%2038.82381104%20-1.01047363%2037.64762207%20-1.01586914%2036.43579102%20C-1.03391663%2032.08797969%20-1.04543108%2027.7401717%20-1.05493164%2023.39233398%20C-1.05997244%2021.5075627%20-1.06680498%2019.62279535%20-1.07543945%2017.73803711%20C-1.08751617%2015.03498364%20-1.09323068%2012.33198169%20-1.09765625%209.62890625%20C-1.10281754%208.78099014%20-1.10797882%207.93307404%20-1.11329651%207.0594635%20C-1.11349195%205.03928932%20-1.06206211%203.01922066%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(369,521)'/%3e%3cpath%20d='M0%200%20C7.92%200%2015.84%200%2024%200%20C24%207.26%2024%2014.52%2024%2022%20C11.625%2022.495%2011.625%2022.495%20-1%2023%20C-1.33%2036.2%20-1.66%2049.4%20-2%2063%20C-2.33%2063%20-2.66%2063%20-3%2063%20C-4.13448821%2053.55756734%20-4.00188302%2044.23836711%20-3.6875%2034.75%20C-3.65277588%2033.53530029%20-3.61805176%2032.32060059%20-3.58227539%2031.0690918%20C-3.5383667%2029.92738525%20-3.49445801%2028.78567871%20-3.44921875%2027.609375%20C-3.41143311%2026.57780273%20-3.37364746%2025.54623047%20-3.3347168%2024.48339844%20C-3%2022%20-3%2022%20-1%2020%20C1.15478516%2019.68115234%201.15478516%2019.68115234%203.7890625%2019.5859375%20C5.20058594%2019.52792969%205.20058594%2019.52792969%206.640625%2019.46875%20C7.62546875%2019.4378125%208.6103125%2019.406875%209.625%2019.375%20C11.11386719%2019.31699219%2011.11386719%2019.31699219%2012.6328125%2019.2578125%20C15.08835385%2019.1633686%2017.5438841%2019.07780125%2020%2019%20C19.98839844%2018.18015625%2019.97679687%2017.3603125%2019.96484375%2016.515625%20C19.95582031%2015.43796875%2019.94679688%2014.3603125%2019.9375%2013.25%20C19.92589844%2012.18265625%2019.91429687%2011.1153125%2019.90234375%2010.015625%20C19.98489913%207.46631499%2020.25382442%205.42066409%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C6.96345149%205.39532832%206.9764649%2010.29708307%206.5625%2015.75%20C6.15134315%2021.36947121%206.15134315%2021.36947121%206%2027%20C4.94140625%2029.04296875%204.94140625%2029.04296875%203.5625%2031.1875%20C2.88380859%2032.26064453%202.88380859%2032.26064453%202.19140625%2033.35546875%20C1.79824219%2033.89816406%201.40507812%2034.44085938%201%2035%20C0.67%2035%200.34%2035%200%2035%20C0%2023.45%200%2011.9%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(345,472)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%2025.74%201%2051.48%201%2078%20C0.01%2077.67%20-0.98%2077.34%20-2%2077%20C-1.83734146%2076.29841263%20-1.67468292%2075.59682526%20-1.50709534%2074.87397766%20C-0.97453003%2071.8556482%20-0.87991379%2069.08025882%20-0.88647461%2066.01635742%20C-0.88655014%2064.83551071%20-0.88662567%2063.654664%20-0.88670349%2062.43803406%20C-0.89186478%2061.17328751%20-0.89702606%2059.90854095%20-0.90234375%2058.60546875%20C-0.9037587%2057.30297684%20-0.90517365%2056.00048492%20-0.90663147%2054.65852356%20C-0.91043645%2051.20783546%20-0.92024936%2047.75718992%20-0.93133545%2044.30651855%20C-0.94159311%2040.78052343%20-0.9461384%2037.25452139%20-0.95117188%2033.72851562%20C-0.96187356%2026.81899301%20-0.97892557%2019.90949855%20-1%2013%20C-1.99%2012.67%20-2.98%2012.34%20-4%2012%20C-3.649375%2011.236875%20-3.29875%2010.47375%20-2.9375%209.6875%20C-1.67639116%206.95240621%20-1.67639116%206.95240621%20-3%204%20C-1.625%201.8125%20-1.625%201.8125%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(929,483)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C3.78043103%208.12172411%203%2015.65909482%203%2023%20C-16.47%2023%20-35.94%2023%20-56%2023%20C-56%2022.67%20-56%2022.34%20-56%2022%20C-28.775%2021.505%20-28.775%2021.505%20-1%2021%20C-1.66%2018.03%20-2.32%2015.06%20-3%2012%20C-2.70676058%207.60140869%20-1.82135506%204.00698114%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(811,500)'/%3e%3cpath%20d='M0%200%20C10.89%200%2021.78%200%2033%200%20C32%202%2032%202%2028.9375%203.125%20C27.968125%203.41375%2026.99875%203.7025%2026%204%20C26%204.33%2026%204.66%2026%205%20C22.9166866%205.02911321%2019.83340875%205.04683682%2016.75%205.0625%20C15.87730469%205.07087891%2015.00460938%205.07925781%2014.10546875%205.08789062%20C13.26113281%205.09111328%2012.41679687%205.09433594%2011.546875%205.09765625%20C10.38430176%205.10551147%2010.38430176%205.10551147%209.19824219%205.11352539%20C6.99642569%204.99981541%205.11528675%204.60281778%203%204%20C2.2575%203.814375%201.515%203.62875%200.75%203.4375%20C0.1725%203.293125%20-0.405%203.14875%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(127,456)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.00808685%200.61085953%201.01617371%201.22171906%201.02450562%201.85108948%20C1.11077125%208.22686062%201.21028396%2014.60232871%201.31738281%2020.9777832%20C1.355592%2023.35500995%201.39045875%2025.73229292%201.421875%2028.10961914%20C1.46770039%2031.53291881%201.52566668%2034.95583411%201.5859375%2038.37890625%20C1.60326431%2039.9652462%201.60326431%2039.9652462%201.62094116%2041.58363342%20C1.73033867%2047.09218328%202.17067468%2051.79123684%204%2057%20C4.66%2057%205.32%2057%206%2057%20C6.061875%2057.61875%206.12375%2058.2375%206.1875%2058.875%20C6.80875315%2061.2501999%206.80875315%2061.2501999%209.375%2062.0625%20C10.24125%2062.371875%2011.1075%2062.68125%2012%2063%20C13.6875%2064.5625%2013.6875%2064.5625%2015%2066%20C15.66%2066.33%2016.32%2066.66%2017%2067%20C17.625%2069.0625%2017.625%2069.0625%2018%2071%20C11.64674292%2069.72934858%207.98595005%2065.83583279%204%2061%20C-0.20320088%2054.43626224%20-1.13694835%2048.50999461%20-1.09375%2040.75%20C-1.09016479%2040.05398682%20-1.08657959%2039.35797363%20-1.08288574%2038.64086914%20C-1.02339219%2030.75687156%20-0.77025329%2022.87906229%20-0.5%2015%20C-0.4515835%2013.53125787%20-0.40340556%2012.06250786%20-0.35546875%2010.59375%20C-0.23971031%207.06240545%20-0.12078988%203.53117647%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(649,490)'/%3e%3cpath%20d='M0%200%20C6.93%200%2013.86%200%2021%200%20C21%200.66%2021%201.32%2021%202%20C23.475%202.99%2023.475%202.99%2026%204%20C26%204.33%2026%204.66%2026%205%20C14.78%205%203.56%205%20-8%205%20C-4%203%20-4%203%20-1%202%20C-0.67%201.34%20-0.34%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(132,539)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.0093457%201.27117676%201.01869141%202.54235352%201.02832031%203.85205078%20C1.0682865%208.58238362%201.13406414%2013.31207062%201.20751953%2018.04199219%20C1.23569066%2020.08650395%201.25692435%2022.13112384%201.27099609%2024.17578125%20C1.29247887%2027.12035322%201.3391569%2030.06363041%201.390625%2033.0078125%20C1.39246796%2034.3722197%201.39246796%2034.3722197%201.39434814%2035.76419067%20C1.52438447%2041.4384366%202.24925859%2044.66233702%206%2049%20C8.30476633%2050.12133721%208.30476633%2050.12133721%2010.75%2050.375%20C11.54921875%2050.50648438%2012.3484375%2050.63796875%2013.171875%2050.7734375%20C13.77515625%2050.84820313%2014.3784375%2050.92296875%2015%2051%20C15%2051.33%2015%2051.66%2015%2052%20C13.22992286%2052.08114106%2011.45877902%2052.13925505%209.6875%2052.1875%20C8.70136719%2052.22230469%207.71523438%2052.25710938%206.69921875%2052.29296875%20C4%2052%204%2052%202.20703125%2050.67578125%20C1%2049%201%2049%200%2046%20C-0.66%2045.34%20-1.32%2044.68%20-2%2044%20C-2.20927429%2042.1337738%20-2.20927429%2042.1337738%20-2.15112305%2039.84155273%20C-2.13417892%2038.98403915%20-2.1172348%2038.12652557%20-2.09977722%2037.24302673%20C-2.07071793%2036.31591385%20-2.04165863%2035.38880096%20-2.01171875%2034.43359375%20C-1.98906448%2033.48436539%20-1.96641022%2032.53513702%20-1.94306946%2031.55714417%20C-1.8930653%2029.54879358%20-1.83809315%2027.54056154%20-1.77856445%2025.5324707%20C-1.68777846%2022.4469639%20-1.61311485%2019.36138491%20-1.54101562%2016.27539062%20C-1.49053325%2014.32810014%20-1.43913222%2012.38083321%20-1.38671875%2010.43359375%20C-1.36373215%209.50445663%20-1.34074554%208.57531952%20-1.31706238%207.61802673%20C-1.29066177%206.76366531%20-1.26426117%205.90930389%20-1.23706055%205.02905273%20C-1.21548386%204.27341537%20-1.19390717%203.51777802%20-1.17167664%202.73924255%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(675,490)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%2014.85%201%2029.7%201%2045%20C-1%2043%20-1%2043%20-1.125%2040.72265625%20C-1.04178877%2038.95181718%20-0.95845579%2037.18098382%20-0.875%2035.41015625%20C-0.80800597%2032.73455911%20-0.80800597%2032.73455911%20-3%2030%20C-2.505%2028.515%20-2.505%2028.515%20-2%2027%20C-2.31050297%2025.32892945%20-2.64717051%2023.66264856%20-3%2022%20C-3.09035285%2020.00160753%20-3.13010313%2018.00042747%20-3.125%2016%20C-3.12757813%2014.989375%20-3.13015625%2013.97875%20-3.1328125%2012.9375%20C-3.00826727%2010.18285256%20-2.62110865%207.68161197%20-2%205%20C-1.34%205%20-0.68%205%200%205%20C0%203.35%200%201.7%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(901,431)'/%3e%3cpath%20d='M0%200%20C2.57069617%203.85604425%202.35065056%207.12746343%202.4140625%2011.60546875%20C2.43342865%2012.44467361%202.4527948%2013.28387848%202.4727478%2014.14851379%20C2.53251213%2016.82807258%202.57891612%2019.5076744%202.625%2022.1875%20C2.6631827%2024.00457599%202.70223461%2025.82163394%202.7421875%2027.63867188%20C2.83821103%2032.09230132%202.92225359%2036.54601551%203%2041%20C3.94101562%2041.29648437%204.88203125%2041.59296875%205.8515625%2041.8984375%20C8.7944432%2042.92808062%2010.6445809%2044.00695307%2013%2046%20C8.86001651%2046.32470459%206.66000999%2046.4304413%203.125%2044.125%20C0.12481839%2041.12481839%200.01401021%2040.48116775%20-0.11352539%2036.10107422%20C-0.11336671%2034.418937%20-0.10769737%2032.73679475%20-0.09765625%2031.0546875%20C-0.0962413%2030.1696756%20-0.09482635%2029.2846637%20-0.09336853%2028.37283325%20C-0.0877614%2025.54018809%20-0.07520771%2022.70762136%20-0.0625%2019.875%20C-0.05748592%2017.95703239%20-0.05292285%2016.03906354%20-0.04882812%2014.12109375%20C-0.03778966%209.41403218%20-0.02052025%204.7070294%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(677,495)'/%3e%3cpath%20d='M0%200%20C0.82200425%206.24723226%20-2.07448606%2010.71317837%20-5%2016%20C-6.95100616%2014.37586398%20-7.92782782%2013.56206818%20-8.2578125%2010.9921875%20C-8.21398437%2010.29351562%20-8.17015625%209.59484375%20-8.125%208.875%20C-8.08375%207.59625%20-8.0425%206.3175%20-8%205%20C-8.98267859%203.79438816%20-8.98267859%203.79438816%20-10.84765625%203.90234375%20C-12.8984375%203.93489583%20-14.94921875%203.96744792%20-17%204%20C-17%203.01%20-17%202.02%20-17%201%20C-14.3541898%200.832959%20-11.70835369%200.66634934%20-9.0625%200.5%20C-8.30775391%200.45230469%20-7.55300781%200.40460938%20-6.77539062%200.35546875%20C-1.11328125%200%20-1.11328125%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(369,467)'/%3e%3cpath%20d='M0%200%20C4.29%200%208.58%200%2013%200%20C13.02505615%201.34747314%2013.0501123%202.69494629%2013.07592773%204.08325195%20C13.17000223%209.07602678%2013.27022294%2014.06866249%2013.37231445%2019.0612793%20C13.41566313%2021.2233556%2013.45733825%2023.38546613%2013.49731445%2025.54760742%20C13.55501844%2028.65293702%2013.61871272%2031.75809436%2013.68359375%2034.86328125%20C13.70030624%2035.83211746%2013.71701874%2036.80095367%2013.73423767%2037.79914856%20C13.75418289%2038.6998558%2013.77412811%2039.60056305%2013.79467773%2040.52856445%20C13.81022202%2041.32132278%2013.8257663%2042.11408112%2013.84178162%2042.93086243%20C13.93081226%2045.19739774%2013.93081226%2045.19739774%2015%2048%20C15.12781786%2050.67394964%2015.04391871%2053.32095857%2015%2056%20C14.67%2056%2014.34%2056%2014%2056%20C13.29066112%2053.54623548%2012.60781467%2051.08945724%2011.9375%2048.625%20C11.73833984%2047.94566406%2011.53917969%2047.26632812%2011.33398438%2046.56640625%20C10.04560625%2041.72933752%2010.02964032%2037.78697173%2010.67358398%2032.84228516%20C11.33901124%2027.04804123%2011.37950304%2021.20090331%2011.5625%2015.375%20C11.60568359%2014.08464844%2011.64886719%2012.79429687%2011.69335938%2011.46484375%20C11.79852148%208.30998067%2011.90066604%205.15505105%2012%202%20C11.25363281%202.17402344%2010.50726562%202.34804688%209.73828125%202.52734375%20C6.30488867%203.11998355%203.41085419%202.60191545%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(633,491)'/%3e%3cpath%20d='M0%200%20C7.26%200%2014.52%200%2022%200%20C21.34%200.66%2020.68%201.32%2020%202%20C20.33%202.66%2020.66%203.32%2021%204%20C14.73%204%208.46%204%202%204%20C2%206.64%202%209.28%202%2012%20C1.34%2012.66%200.68%2013.32%200%2014%20C0.01160156%2013.30132812%200.02320313%2012.60265625%200.03515625%2011.8828125%20C0.04417969%2010.97273438%200.05320313%2010.06265625%200.0625%209.125%20C0.07410156%208.22007812%200.08570313%207.31515625%200.09765625%206.3828125%20C0.16249257%203.9831415%200.16249257%203.9831415%20-1%202%20C-0.67%201.34%20-0.34%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(230,468)'/%3e%3cpath%20d='M0%200%20C3.26587942%200.14550948%206.38789358%200.49324673%209.5625%201.3125%20C9.2325%202.3025%208.9025%203.2925%208.5625%204.3125%20C9.2225%204.6425%209.8825%204.9725%2010.5625%205.3125%20C9.5625%206.3125%209.5625%206.3125%206.87866211%206.42602539%20C5.71085205%206.42078857%204.54304199%206.41555176%203.33984375%206.41015625%20C2.07978516%206.40693359%200.81972656%206.40371094%20-0.47851562%206.40039062%20C-1.81901109%206.39203403%20-3.15950588%206.38356907%20-4.5%206.375%20C-5.84439942%206.3699866%20-7.1888006%206.36542342%20-8.53320312%206.36132812%20C-11.83467941%206.34949488%20-15.13606803%206.33300971%20-18.4375%206.3125%20C-15.4375%204.3125%20-15.4375%204.3125%20-12%204.4375%20C-8.38721028%204.72990718%20-8.38721028%204.72990718%20-6.5625%202.3125%20C-4.04895307%20-0.05319123%20-3.34014743%200.01650814%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(584.4375,465.6875)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%200.66%204%201.32%204%202%20C4.73605469%201.855625%205.47210937%201.71125%206.23046875%201.5625%20C7.20628906%201.376875%208.18210937%201.19125%209.1875%201%20C10.15042969%200.814375%2011.11335937%200.62875%2012.10546875%200.4375%20C18.83937824%20-0.58031088%2018.83937824%20-0.58031088%2022%201%20C22.99%200.67%2023.98%200.34%2025%200%20C25.33%200.33%2025.66%200.66%2026%201%20C27.99964982%201.08758003%2030.0023611%201.10696576%2032.00390625%201.09765625%20C33.82631836%201.09282227%2033.82631836%201.09282227%2035.68554688%201.08789062%20C36.96494141%201.07951172%2038.24433594%201.07113281%2039.5625%201.0625%20C41.48739258%201.05573242%2041.48739258%201.05573242%2043.45117188%201.04882812%20C46.63416022%201.03699545%2049.81705762%201.02051068%2053%201%20C53.495%201.99%2053.495%201.99%2054%203%20C36.18%203%2018.36%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(731,509)'/%3e%3cpath%20d='M0%200%20C3.3%200%206.6%200%2010%200%20C10%200.33%2010%200.66%2010%201%20C7.69%201.33%205.38%201.66%203%202%20C3%204.64%203%207.28%203%2010%20C3.66%209.67%204.32%209.34%205%209%20C6.44848582%208.91657841%207.90070869%208.89267139%209.3515625%208.90234375%20C10.20234375%208.90556641%2011.053125%208.90878906%2011.9296875%208.91210938%20C12.81914063%208.92048828%2013.70859375%208.92886719%2014.625%208.9375%20C15.5221875%208.94201172%2016.419375%208.94652344%2017.34375%208.95117188%20C19.56256648%208.96297409%2021.78125018%208.97943845%2024%209%20C24%209.99%2024%2010.98%2024%2012%20C16.08%2012%208.16%2012%200%2012%20C0%208.04%200%204.08%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(676,456)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.02893932%203.62498334%201.04677792%207.24993713%201.0625%2010.875%20C1.07087891%2011.90753906%201.07925781%2012.94007813%201.08789062%2014.00390625%20C1.09111328%2014.99003906%201.09433594%2015.97617187%201.09765625%2016.9921875%20C1.10289307%2017.90339355%201.10812988%2018.81459961%201.11352539%2019.75341797%20C1%2022%201%2022%200%2024%20C-0.99%2023.67%20-1.98%2023.34%20-3%2023%20C-5.01862148%2017.75866703%20-4.98056566%2010.73616357%20-3.10546875%205.50390625%20C-2.15670432%203.62314001%20-1.08879621%201.80331872%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(831,508)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C5.67%200.99%205.34%201.98%205%203%20C5.99%203.33%206.98%203.66%208%204%20C7.34%204%206.68%204%206%204%20C6.66%205.65%207.32%207.3%208%209%20C9.65%208.67%2011.3%208.34%2013%208%20C13.33%209.32%2013.66%2010.64%2014%2012%20C16.31%2012%2018.62%2012%2021%2012%20C21%2011.34%2021%2010.68%2021%2010%20C21.66%2010%2022.32%2010%2023%2010%20C23.33%2010.99%2023.66%2011.98%2024%2013%20C18.94576102%2014.68474633%2014.71544468%2014.58019314%209.875%2012.375%20C5.29909504%209.86935884%201.9168134%206.67991608%200.1875%201.625%20C0.125625%201.08875%200.06375%200.5525%200%200%20Z%20'%20fill='%236F9300'%20transform='translate(690,541)'/%3e%3cpath%20d='M0%200%20C6.93%200.33%2013.86%200.66%2021%201%20C20.34%201.66%2019.68%202.32%2019%203%20C19.33%203.66%2019.66%204.32%2020%205%20C17.10410348%205.02706445%2014.20846205%205.04687029%2011.3125%205.0625%20C10.08756836%205.07506836%2010.08756836%205.07506836%208.83789062%205.08789062%20C4.75500916%205.10442051%200.98348293%205.03035098%20-3%204%20C-2.34%203.67%20-1.68%203.34%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(241,593)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%208.25%201%2016.5%201%2025%20C0.34%2025%20-0.32%2025%20-1%2025%20C-3.52775351%2021.20836973%20-3.22443035%2018.19125969%20-3.125%2013.8125%20C-3.11597656%2013.06291016%20-3.10695312%2012.31332031%20-3.09765625%2011.54101562%20C-3.07412578%209.69387346%20-3.03825561%207.84689588%20-3%206%20C-2.67%206%20-2.34%206%20-2%206%20C-1.34%204.02%20-0.68%202.04%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(191,487)'/%3e%3cpath%20d='M0%200%20C0.66%200.66%201.32%201.32%202%202%20C1.525625%202.845625%201.05125%203.69125%200.5625%204.5625%20C-1.69167803%209.67126796%20-1.51097377%2015.18235336%20-1.69140625%2020.671875%20C-2%2024%20-2%2024%20-4%2027%20C-4.39387788%2029.32387947%20-4.73486085%2031.65793749%20-5%2034%20C-5.33%2034%20-5.66%2034%20-6%2034%20C-6.52846015%2021.74266038%20-5.86678537%2011.12575063%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(832,489)'/%3e%3cpath%20d='M0%200%20C0.98742187%200.16242187%201.97484375%200.32484375%202.9921875%200.4921875%20C7.03537925%201.06688527%2011.04640663%201.15126811%2015.125%201.125%20C15.858396%201.12306641%2016.59179199%201.12113281%2017.34741211%201.11914062%20C23.93030125%201.06771738%2030.4468302%200.63822175%2037%200%20C33.42278921%202.9386979%2031.63341748%203.18911908%2027%203%20C22.9008693%203.63063549%2018.97489026%204.83091463%2015%206%20C15%205.34%2015%204.68%2015%204%20C13.02%204.66%2011.04%205.32%209%206%20C8.67%205.34%208.34%204.68%208%204%20C6.8553125%204.12375%206.8553125%204.12375%205.6875%204.25%20C3%204%203%204%201.1875%202%20C0.5996875%201.01%200.5996875%201.01%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(667,563)'/%3e%3cpath%20d='M0%200%20C-1.70577342%200.65256456%20-3.41476089%201.29673041%20-5.125%201.9375%20C-6.07632813%202.29714844%20-7.02765625%202.65679688%20-8.0078125%203.02734375%20C-18.08362171%206.30263943%20-29.94180625%206.28430816%20-40%203%20C-37.09031691%202.16087482%20-34.5469594%201.89148572%20-31.5234375%201.9375%20C-30.27046875%201.94910156%20-30.27046875%201.94910156%20-28.9921875%201.9609375%20C-28.12851562%201.97382812%20-27.26484375%201.98671875%20-26.375%202%20C-24.65370809%202.0254629%20-22.93234349%202.04651171%20-21.2109375%202.0625%20C-20.45087402%202.07410156%20-19.69081055%202.08570313%20-18.90771484%202.09765625%20C-16.91256704%202.12332635%20-16.91256704%202.12332635%20-15%201%20C-12.70190464%200.69130062%20-10.40279871%200.49116352%20-8.09375%200.28125%20C-1.8556701%20-0.55670103%20-1.8556701%20-0.55670103%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(707,559)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C29%200.33%2029%200.66%2029%201%20C21.41%201%2013.82%201%206%201%20C6.33%202.32%206.66%203.64%207%205%20C6.87890625%207.359375%206.87890625%207.359375%206.5625%209.75%20C6.46066406%2010.54921875%206.35882813%2011.3484375%206.25390625%2012.171875%20C6.12822266%2013.07679688%206.12822266%2013.07679688%206%2014%20C4.31821339%2011.47732009%203.09893258%209.18908177%201.875%206.4375%20C1.52179688%205.65246094%201.16859375%204.86742187%200.8046875%204.05859375%20C0%202%200%202%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(224,467)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%207.59%201%2015.18%201%2023%20C0.01%2023%20-0.98%2023%20-2%2023%20C-3.53887884%208.19349005%20-3.53887884%208.19349005%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(372,520)'/%3e%3cpath%20d='M0%200%20C6.93%200%2013.86%200%2021%200%20C19.02%200.99%2019.02%200.99%2017%202%20C16.37609375%202.53238281%2015.7521875%203.06476563%2015.109375%203.61328125%20C12.34672115%205.42947035%2010.52244363%205.30437299%207.25%205.1875%20C5.77273438%205.14689453%205.77273438%205.14689453%204.265625%205.10546875%20C3.14414062%205.05326172%203.14414062%205.05326172%202%205%20C2.33%204.01%202.66%203.02%203%202%20C2.01%201.34%201.02%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(454,466)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.97%201%205.94%201%209%20C2.32451172%208.87431641%202.32451172%208.87431641%203.67578125%208.74609375%20C11.27709596%208.10108423%2018.43413122%207.99636435%2026%209%20C26%209.66%2026%2010.32%2026%2011%20C17.42%2011%208.84%2011%200%2011%20C0%207.37%200%203.74%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(904,552)'/%3e%3cpath%20d='M0%200%20C1.28132812%200.00902344%202.56265625%200.01804687%203.8828125%200.02734375%20C4.87023437%200.03894531%205.85765625%200.05054688%206.875%200.0625%20C6.875%200.7225%206.875%201.3825%206.875%202.0625%20C7.535%202.3925%208.195%202.7225%208.875%203.0625%20C7.875%204.0625%207.875%204.0625%204.27734375%204.16015625%20C2.78903133%204.1534822%201.30073568%204.14152183%20-0.1875%204.125%20C-0.94611328%204.12048828%20-1.70472656%204.11597656%20-2.48632812%204.11132812%20C-4.36591871%204.0995068%20-6.24546899%204.08157078%20-8.125%204.0625%20C-8.455%203.0725%20-8.785%202.0825%20-9.125%201.0625%20C-6.12186252%20-0.43906874%20-3.33432478%20-0.03031204%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(874.125,559.9375)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.97%201%205.94%201%209%20C3.31%209%205.62%209%208%209%20C6.47291037%2012.43595166%204.40072955%2015.11912454%202%2018%20C1.01%2017.67%200.02%2017.34%20-1%2017%20C-0.67%2011.39%20-0.34%205.78%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(351,479)'/%3e%3cpath%20d='M0%200%20C6.6%200%2013.2%200%2020%200%20C20%200.99%2020%201.98%2020%203%20C15.38%203.33%2010.76%203.66%206%204%20C6%203.67%206%203.34%206%203%20C3.03%202.505%203.03%202.505%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(384,488)'/%3e%3cpath%20d='M0%200%20C14.7664042%20-0.22834646%2014.7664042%20-0.22834646%2022%201%20C23%202%2023%202%2023.09765625%204.50390625%20C23.08605469%205.51324219%2023.07445312%206.52257812%2023.0625%207.5625%20C23.05347656%208.57441406%2023.04445313%209.58632813%2023.03515625%2010.62890625%20C23.02355469%2011.41136719%2023.01195312%2012.19382812%2023%2013%20C22.67%2013%2022.34%2013%2022%2013%20C21.505%208.05%2021.505%208.05%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23B6FF2E'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C5.61%200.33%2011.22%200.66%2017%201%20C14%204%2014%204%2010.64453125%204.29296875%20C9.37996094%204.25816406%208.11539063%204.22335937%206.8125%204.1875%20C5.54019531%204.16042969%204.26789062%204.13335938%202.95703125%204.10546875%20C1.98121094%204.07066406%201.00539063%204.03585937%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(569,540)'/%3e%3cpath%20d='M0%200%20C6.27%200%2012.54%200%2019%200%20C18.01%200.495%2018.01%200.495%2017%201%20C17%201.66%2017%202.32%2017%203%20C11.39%203%205.78%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(761,523)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.33%209.24%201.66%2018.48%202%2028%20C2.99%2028.33%203.98%2028.66%205%2029%20C3.69593116%2031.01920337%202.36176581%2033.01924973%201%2035%20C0.67%2035%200.34%2035%200%2035%20C0%2023.45%200%2011.9%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(345,472)'/%3e%3cpath%20d='M0%200%20C0%201.65%200%203.3%200%205%20C-1.134375%205.28875%20-2.26875%205.5775%20-3.4375%205.875%20C-4.613125%206.24625%20-5.78875%206.6175%20-7%207%20C-8.2981424%209.2236068%20-8.2981424%209.2236068%20-8%2013%20C-8.66%2013%20-9.32%2013%20-10%2013%20C-11%2010.4375%20-11%2010.4375%20-11%207%20C-7.98890645%203.33845177%20-4.8796426%200%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(736,475)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%200.66%202%201.32%202%202%20C3.36125%202.37125%203.36125%202.37125%204.75%202.75%20C8.13493865%204.05189948%209.60793414%205.35164137%2012%208%20C12.66%208.33%2013.32%208.66%2014%209%20C14.625%2011.0625%2014.625%2011.0625%2015%2013%20C8.7298413%2011.74596826%204.95911962%207.77173128%201%203%20C0.67%202.01%200.34%201.02%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(652,548)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%204.62%201%209.24%201%2014%20C0.01%2014.495%200.01%2014.495%20-1%2015%20C-1%2014.01%20-1%2013.02%20-1%2012%20C-1.99%2012%20-2.98%2012%20-4%2012%20C-3.53439347%207.25081338%20-2.83067342%203.89217595%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(287,513)'/%3e%3cpath%20d='M0%200%20C2.4375%200.8125%202.4375%200.8125%205%202%20C5.33%202.99%205.66%203.98%206%205%20C7.49985609%206.66710346%207.49985609%206.66710346%209%208%20C5.68585212%2012.10954337%203.12159208%2012.43093421%20-2%2013%20C-2.66%2013.66%20-3.32%2014.32%20-4%2015%20C-3.67%2013.35%20-3.34%2011.7%20-3%2010%20C1.455%209.505%201.455%209.505%206%209%20C5.566875%208.43410156%205.13375%207.86820312%204.6875%207.28515625%20C3.8521875%206.18494141%203.8521875%206.18494141%203%205.0625%20C2.1646875%203.96615234%202.1646875%203.96615234%201.3125%202.84765625%20C0%201%200%201%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(682,447)'/%3e%3cpath%20d='M0%200%20C2.31%200%204.62%200%207%200%20C6.67%201.32%206.34%202.64%206%204%20C-1.26%204%20-8.52%204%20-16%204%20C-16%203.67%20-16%203.34%20-16%203%20C-11.05%203%20-6.1%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(472,560)'/%3e%3cpath%20d='M0%200%20C3.63%200%207.26%200%2011%200%20C9%204%209%204%207.25%204.8125%20C4.36824559%205.0526462%201.82252185%204.57733402%20-1%204%20C-0.67%202.68%20-0.34%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(449,506)'/%3e%3cpath%20d='M0%200%20C3.3%200.33%206.6%200.66%2010%201%20C10.33%202.32%2010.66%203.64%2011%205%20C9.58376784%205.05447047%208.16691809%205.09300508%206.75%205.125%20C5.96109375%205.14820313%205.1721875%205.17140625%204.359375%205.1953125%20C1.79268059%204.9828378%200.2083933%204.28654105%20-2%203%20C-1.34%202.01%20-0.68%201.02%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(760,537)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%201.99%201.34%202.98%201%204%20C1.74765625%203.97679687%202.4953125%203.95359375%203.265625%203.9296875%20C4.25046875%203.91164063%205.2353125%203.89359375%206.25%203.875%20C7.22453125%203.85179687%208.1990625%203.82859375%209.203125%203.8046875%20C12%204%2012%204%2016%206%20C9.73%206%203.46%206%20-3%206%20C-3%204.68%20-3%203.36%20-3%202%20C-2.01%202%20-1.02%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(447,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.22212255%202.74951693%201.42815588%205.49865612%201.625%208.25%20C1.68945312%209.02730469%201.75390625%209.80460937%201.8203125%2010.60546875%20C2.30707097%2017.72431144%202.30707097%2017.72431144%200%2021%20C-0.86860031%2016.51223172%20-1.13464852%2012.25607233%20-1.125%207.6875%20C-1.12757813%206.45386719%20-1.13015625%205.22023438%20-1.1328125%203.94921875%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(553,496)'/%3e%3cpath%20d='M0%200%20C0%201.65%200%203.3%200%205%20C-3.63%205%20-7.26%205%20-11%205%20C-11.33%204.34%20-11.66%203.68%20-12%203%20C-10.75336669%202.49166409%20-9.50250613%201.99368855%20-8.25%201.5%20C-7.55390625%201.2215625%20-6.8578125%200.943125%20-6.140625%200.65625%20C-4%200%20-4%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(454,467)'/%3e%3cpath%20d='M0%200%20C0.98613281%200.03480469%201.97226562%200.06960938%202.98828125%200.10546875%20C3.98214844%200.13253906%204.97601563%200.15960937%206%200.1875%20C7.13888672%200.23970703%207.13888672%200.23970703%208.30078125%200.29296875%20C8.63078125%201.28296875%208.96078125%202.27296875%209.30078125%203.29296875%20C4.35078125%203.29296875%20-0.59921875%203.29296875%20-5.69921875%203.29296875%20C-2.69921875%200.29296875%20-2.69921875%200.29296875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(461.69921875,559.70703125)'/%3e%3cpath%20d='M0%200%20C0.56203125%200.30679688%201.1240625%200.61359375%201.703125%200.9296875%20C4.06346934%202.02957585%206.20465562%202.60095851%208.75%203.125%20C9.54921875%203.29257812%2010.3484375%203.46015625%2011.171875%203.6328125%20C11.77515625%203.75398437%2012.3784375%203.87515625%2013%204%20C13%204.66%2013%205.32%2013%206%20C8.126739%207.5912689%204.19209404%208.21192221%20-1%208%20C0.32%207.34%201.64%206.68%203%206%20C2.690625%205.38125%202.38125%204.7625%202.0625%204.125%20C1.375%202.75%200.6875%201.375%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(695,552)'/%3e%3cpath%20d='M0%200%20C-0.99%201.485%20-0.99%201.485%20-2%203%20C-4.8984375%203.36328125%20-4.8984375%203.36328125%20-8.375%203.3125%20C-9.51710938%203.30863281%20-10.65921875%203.30476562%20-11.8359375%203.30078125%20C-14.80057739%203.01895746%20-16.49947121%202.54589341%20-19%201%20C-12.65758005%20-0.15316726%20-6.43311296%20-0.09507063%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(884,541)'/%3e%3cpath%20d='M0%200%20C1.58323688%20-0.027193%203.16661062%20-0.04648306%204.75%20-0.0625%20C6.07257812%20-0.07990234%206.07257812%20-0.07990234%207.421875%20-0.09765625%20C9.7818838%20-0.00826198%2011.74498524%200.33087179%2014%201%20C14%201.66%2014%202.32%2014%203%20C9.05%203%204.1%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(581,560)'/%3e%3cpath%20d='M0%200%20C0%200.99%200%201.98%200%203%20C-5.28%203%20-10.56%203%20-16%203%20C-16%202.34%20-16%201.68%20-16%201%20C-10.62915894%200.31798844%20-5.41499441%20-0.11521265%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(479,541)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%205.28%201%2010.56%201%2016%20C-2.37152003%2012.62847997%20-2.82142723%2011.64289204%20-3%207%20C-2.21181089%204.49988422%20-1.17946058%202.35892116%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(247,504)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2.08082094%202.95766281%202.13910778%204.91626728%202.1875%206.875%20C2.23970703%208.51082031%202.23970703%208.51082031%202.29296875%2010.1796875%20C2.19628906%2011.11039062%202.09960938%2012.04109375%202%2013%20C1.01%2013.66%200.02%2014.32%20-1%2015%20C-1.02685412%2012.68756208%20-1.04632841%2010.3750373%20-1.0625%208.0625%20C-1.07410156%206.77472656%20-1.08570312%205.48695313%20-1.09765625%204.16015625%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(121,466)'/%3e%3cpath%20d='M0%200%20C0%202.97%200%205.94%200%209%20C-0.99%209.495%20-0.99%209.495%20-2%2010%20C-3.32%206.7%20-4.64%203.4%20-6%200%20C-2%20-1%20-2%20-1%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(254,523)'/%3e%3cpath%20d='M0%200%20C2.64%200.33%205.28%200.66%208%201%20C7.34%202.32%206.68%203.64%206%205%20C3.69%205%201.38%205%20-1%205%20C-0.67%203.35%20-0.34%201.7%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(880,489)'/%3e%3cpath%20d='M0%200%20C1.953125%200.390625%203.90625%200.78125%205.859375%201.171875%20C5.859375%202.161875%205.859375%203.151875%205.859375%204.171875%20C1.899375%204.171875%20-2.060625%204.171875%20-6.140625%204.171875%20C-2.140625%200.171875%20-2.140625%200.171875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(780.140625,467.828125)'/%3e%3cpath%20d='M0%200%20C0.598125%200.20625%201.19625%200.4125%201.8125%200.625%20C0.8225%200.955%20-0.1675%201.285%20-1.1875%201.625%20C-1.5175%205.915%20-1.8475%2010.205%20-2.1875%2014.625%20C-2.8475%2014.295%20-3.5075%2013.965%20-4.1875%2013.625%20C-4.6015625%2010.90234375%20-4.6015625%2010.90234375%20-4.8125%207.5625%20C-4.88726563%206.45777344%20-4.96203125%205.35304688%20-5.0390625%204.21484375%20C-5.08804688%203.36019531%20-5.13703125%202.50554687%20-5.1875%201.625%20C-2.1875%20-0.375%20-2.1875%20-0.375%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(678.1875,453.375)'/%3e%3cpath%20d='M0%200%20C3%203.75%203%203.75%203%206%20C0.03%206%20-2.94%206%20-6%206%20C-5.67%204.68%20-5.34%203.36%20-5%202%20C-2.4375%200.75%20-2.4375%200.75%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(743,538)'/%3e%3cpath%20d='M0%200%20C3.63%200%207.26%200%2011%200%20C9.515%201.98%209.515%201.98%208%204%20C4.8125%204.25%204.8125%204.25%202%204%20C1.34%202.68%200.68%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(473,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C2.62227918%205.43940666%203.3864587%209.33862697%202%2015%20C1.01%2015.495%201.01%2015.495%200%2016%20C0%2013.36%200%2010.72%200%208%20C-0.66%207.67%20-1.32%207.34%20-2%207%20C-1.125%202.25%20-1.125%202.25%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(294,496)'/%3e%3cpath%20d='M0%200%20C1.134375%200.020625%202.26875%200.04125%203.4375%200.0625%20C4.0975%202.0425%204.7575%204.0225%205.4375%206.0625%20C4.4475%206.7225%203.4575%207.3825%202.4375%208.0625%20C0.10416667%205.72916667%20-2.22916667%203.39583333%20-4.5625%201.0625%20C-3.5625%200.0625%20-3.5625%200.0625%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(594.5625,489.9375)'/%3e%3cpath%20d='M0%200%20C0%200.33%200%200.66%200%201%20C-2.31%201%20-4.62%201%20-7%201%20C-7%201.66%20-7%202.32%20-7%203%20C-7.99%203%20-8.98%203%20-10%203%20C-10%203.66%20-10%204.32%20-10%205%20C-11.65%205%20-13.3%205%20-15%205%20C-15%204.34%20-15%203.68%20-15%203%20C-15.66%202.67%20-16.32%202.34%20-17%202%20C-11.19233704%200.4943096%20-6.0018137%20-0.21824777%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(750,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%203.63%201%207.26%201%2011%20C0.34%209.68%20-0.32%208.36%20-1%207%20C-2.32%207.33%20-3.64%207.66%20-5%208%20C-4.67%206.35%20-4.34%204.7%20-4%203%20C-3.01%203%20-2.02%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(303,481)'/%3e%3cpath%20d='M0%200%20C4.62%200%209.24%200%2014%200%20C14%200.66%2014%201.32%2014%202%20C11%203%2011%203%208.625%202.4375%20C5.45352412%201.90892069%203.84890119%202.61624799%201%204%20C0.67%202.68%200.34%201.36%200%200%20Z%20'%20fill='%2394D600'%20transform='translate(634,469)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.64%201%205.28%201%208%20C-5.27%207.67%20-11.54%207.34%20-18%207%20C-18%206.67%20-18%206.34%20-18%206%20C-9.585%205.505%20-9.585%205.505%20-1%205%20C-0.67%203.35%20-0.34%201.7%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(931,557)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.34%203.31%200.68%205.62%200%208%20C-0.99%208%20-1.98%208%20-3%208%20C-3%205.69%20-3%203.38%20-3%201%20C-2.01%200.67%20-1.02%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(621,536)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.66%202.97%202.32%205.94%203%209%20C-0.96%209%20-4.92%209%20-9%209%20C-8.67%208.34%20-8.34%207.68%20-8%207%20C-5.69%207%20-3.38%207%20-1%207%20C-0.67%204.69%20-0.34%202.38%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(808,513)'/%3e%3cpath%20d='M0%200%20C0%203.73675706%20-1.26051811%205.72174568%20-3%209%20C-3.391875%209.78375%20-3.78375%2010.5675%20-4.1875%2011.375%20C-4.455625%2011.91125%20-4.72375%2012.4475%20-5%2013%20C-5.99%2013%20-6.98%2013%20-8%2013%20C-7.51294002%208.6164602%20-6.21626567%206.93247752%20-3%204%20C-1.97676564%202.68441297%20-0.96873032%201.35622245%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(648,441)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2.36923077%206.53846154%202.36923077%206.53846154%200.5%208.875%20C-0.2425%209.431875%20-0.2425%209.431875%20-1%2010%20C-1.66%209.67%20-2.32%209.34%20-3%209%20C-2.30058404%205.85262818%20-1.23921302%202.97411124%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(228,582)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2.125%205.75%202.125%205.75%201%208%20C0.34%208%20-0.32%208%20-1%208%20C-1.33%208.99%20-1.66%209.98%20-2%2011%20C-3.13643966%207.59068103%20-2.86747764%206.99664544%20-1.5625%203.8125%20C-1.13130859%202.73935547%20-1.13130859%202.73935547%20-0.69140625%201.64453125%20C-0.46324219%201.10183594%20-0.23507812%200.55914063%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(350,514)'/%3e%3cpath%20d='M0%200%20C3.3%200%206.6%200%2010%200%20C10.33%201.32%2010.66%202.64%2011%204%20C9.35%204%207.7%204%206%204%20C6%203.67%206%203.34%206%203%20C3.03%202.505%203.03%202.505%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(384,488)'/%3e%3cpath%20d='M0%200%20C0.845625%200.804375%201.69125%201.60875%202.5625%202.4375%20C5.8515158%205.21628662%208.68629604%205.74117776%2013%206%20C13%206.33%2013%206.66%2013%207%20C11.20866022%207.05391993%209.41686101%207.09275571%207.625%207.125%20C6.62726562%207.14820313%205.62953125%207.17140625%204.6015625%207.1953125%20C2%207%202%207%200%205%20C-0.125%202.375%20-0.125%202.375%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(677,535)'/%3e%3cpath%20d='M0%200%20C0.33%201.65%200.66%203.3%201%205%20C-1.97%205%20-4.94%205%20-8%205%20C-3%200%20-3%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(175,531)'/%3e%3cpath%20d='M0%200%20C2.97%200%205.94%200%209%200%20C9.33%200.66%209.66%201.32%2010%202%20C3.71428571%204.42857143%203.71428571%204.42857143%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(739,522)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2.33%203.63%202.66%207.26%203%2011%20C2.01%2011%201.02%2011%200%2011%20C0%207.37%200%203.74%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(304,520)'/%3e%3cpath%20d='M0%200%20C0%200.66%200%201.32%200%202%20C-4.95%202%20-9.9%202%20-15%202%20C-11.5998228%200.2999114%20-9.96676075%20-0.32111638%20-6.375%20-0.6875%20C-5.21097656%20-0.81705078%20-5.21097656%20-0.81705078%20-4.0234375%20-0.94921875%20C-2%20-1%20-2%20-1%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(507,520)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.33%202.97%201.66%205.94%202%209%20C1.01%209.33%200.02%209.66%20-1%2010%20C-2.1875%207.8125%20-2.1875%207.8125%20-3%205%20C-1.6875%202.1875%20-1.6875%202.1875%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(421,489)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%203.96%202%207.92%202%2012%20C1.01%2011.67%200.02%2011.34%20-1%2011%20C-0.67%207.37%20-0.34%203.74%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(238,488)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%200.99%204%201.98%204%203%20C4.66%203%205.32%203%206%203%20C7.0625%204.8125%207.0625%204.8125%208%207%20C7.67%207.99%207.34%208.98%207%2010%20C5.83043409%208.52312468%204.66441854%207.04343707%203.5%205.5625%20C2.8503125%204.73878906%202.200625%203.91507812%201.53125%203.06640625%20C0%201%200%201%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(674,437)'/%3e%3cpath%20d='M0%200%20C3.23739279%201.6186964%204.42244771%204.84489543%206%208%20C2.31245243%207.50168276%200.39509338%206.89932357%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(230,587)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%203.3%201%206.6%201%2010%20C0.01%2010.495%200.01%2010.495%20-1%2011%20C-2.1875%208.3125%20-2.1875%208.3125%20-3%205%20C-1.6875%202.125%20-1.6875%202.125%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(533,527)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.22151549%201.79008467%201.42682213%203.58218162%201.625%205.375%20C1.74101563%206.37273438%201.85703125%207.37046875%201.9765625%208.3984375%20C1.98429688%209.25695312%201.99203125%2010.11546875%202%2011%20C1.34%2011.66%200.68%2012.32%200%2013%20C-0.66%2010.03%20-1.32%207.06%20-2%204%20C-1.34%204%20-0.68%204%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(554,513)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C-3.51718381%203.36884358%20-6.58774263%202.47075246%20-11%201%20C-6.78915963%20-1.80722691%20-4.88445782%20-0.94537893%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(399,468)'/%3e%3cpath%20d='M0%200%20C-0.66%200.66%20-1.32%201.32%20-2%202%20C-1.34%202.66%20-0.68%203.32%200%204%20C-3.96%203.67%20-7.92%203.34%20-12%203%20C-7.27030266%20-0.54727301%20-5.56673301%20-1.35407019%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(167,435)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C0.0625%204.625%200.0625%204.625%20-1%207%20C-1.33%206.34%20-1.66%205.68%20-2%205%20C-4.32156597%204.59270772%20-6.6568787%204.25561323%20-9%204%20C-9%203.67%20-9%203.34%20-9%203%20C-6.03%202.01%20-3.06%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(891,537)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%202.31%202%204.62%202%207%20C2.66%207%203.32%207%204%207%20C4%207.99%204%208.98%204%2010%20C2.68%2010%201.36%2010%200%2010%20C0%206.7%200%203.4%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(296,537)'/%3e%3cpath%20d='M0%200%20C1.7074998%201.28062485%203.37373596%202.61767557%205%204%20C5%204.66%205%205.32%205%206%20C1.04%206%20-2.92%206%20-7%206%20C-7%205.67%20-7%205.34%20-7%205%20C-3.535%204.505%20-3.535%204.505%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(683,450)'/%3e%3cpath%20d='M0%200%20C5.94%200.99%205.94%200.99%2012%202%20C12%202.66%2012%203.32%2012%204%20C10.56416999%204.10836453%209.1259798%204.18576167%207.6875%204.25%20C6.48673828%204.31960938%206.48673828%204.31960938%205.26171875%204.390625%20C3%204%203%204%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(667,563)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5.33%201.98%205.66%203.96%206%206%20C3.69%205.01%201.38%204.02%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(848,554)'/%3e%3cpath%20d='M0%200%20C3%204%203%204%204%207%20C0.25%2010%200.25%2010%20-2%2010%20C-1.34%206.7%20-0.68%203.4%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(187,506)'/%3e%3cpath%20d='M0%200%20C1.9451%202.91765%202.45276317%204.62537285%203%208%20C1.02%208.99%201.02%208.99%20-1%2010%20C-0.67%206.7%20-0.34%203.4%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(715,500)'/%3e%3cpath%20d='M0%200%20C2.9375%201.1875%202.9375%201.1875%203.9375%203.1875%20C1.02267222%203.99717438%20-0.52363217%204.40595993%20-3.375%203.25%20C-3.931875%202.899375%20-4.48875%202.54875%20-5.0625%202.1875%20C-5.0625%201.5275%20-5.0625%200.8675%20-5.0625%200.1875%20C-3.0625%20-0.8125%20-3.0625%20-0.8125%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(606.0625,467.8125)'/%3e%3cpath%20d='M0%200%20C0.5625%201.9375%200.5625%201.9375%201%204%20C0%205%200%205%20-3.0625%205.0625%20C-4.031875%205.041875%20-5.00125%205.02125%20-6%205%20C-6.33%204.34%20-6.66%203.68%20-7%203%20C-4.69%202.01%20-2.38%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(485,537)'/%3e%3cpath%20d='M0%200%20C0.99%200.33%201.98%200.66%203%201%20C2.01%203.97%201.02%206.94%200%2010%20C-0.33%2010%20-0.66%2010%20-1%2010%20C-1.125%202.25%20-1.125%202.25%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(322,486)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5%200.99%205%201.98%205%203%20C3.35%203.66%201.7%204.32%200%205%20C0%203.35%200%201.7%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(738,552)'/%3e%3cpath%20d='M0%200%20C0.91007813%200.00902344%201.82015625%200.01804687%202.7578125%200.02734375%20C3.45648438%200.03894531%204.15515625%200.05054688%204.875%200.0625%20C5.205%200.7225%205.535%201.3825%205.875%202.0625%20C4.82699219%202.15337891%204.82699219%202.15337891%203.7578125%202.24609375%20C2.84773437%202.32988281%201.93765625%202.41367187%201%202.5%20C0.09507812%202.58121094%20-0.80984375%202.66242188%20-1.7421875%202.74609375%20C-4.13610861%202.93239285%20-4.13610861%202.93239285%20-6.125%204.0625%20C-6.455%203.0725%20-6.785%202.0825%20-7.125%201.0625%20C-4.60024538%20-0.19987731%20-2.81299534%20-0.03606404%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(128.125,458.9375)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C0.515%204.465%200.515%204.465%20-1%208%20C-1.66%208%20-2.32%208%20-3%208%20C-3%206.02%20-3%204.04%20-3%202%20C-2.01%202%20-1.02%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(294,556)'/%3e%3cpath%20d='M0%200%20C1.51400391%200.01740234%201.51400391%200.01740234%203.05859375%200.03515625%20C4.07050781%200.04417969%205.08242188%200.05320312%206.125%200.0625%20C7.29869141%200.07990234%207.29869141%200.07990234%208.49609375%200.09765625%20C8.49609375%200.42765625%208.49609375%200.75765625%208.49609375%201.09765625%20C5.52609375%201.09765625%202.55609375%201.09765625%20-0.50390625%201.09765625%20C-0.50390625%201.75765625%20-0.50390625%202.41765625%20-0.50390625%203.09765625%20C-2.81390625%203.09765625%20-5.12390625%203.09765625%20-7.50390625%203.09765625%20C-6.86453125%202.78828125%20-6.22515625%202.47890625%20-5.56640625%202.16015625%20C-1.48563778%200.05794219%20-1.48563778%200.05794219%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(463.50390625,540.90234375)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C2.32%201.67%203.64%201.34%205%201%20C3.9024777%203.99324263%203.32317108%204.84610901%200.375%206.25%20C-0.40875%206.4975%20-1.1925%206.745%20-2%207%20C-1.34%204.69%20-0.68%202.38%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(306,531)'/%3e%3cpath%20d='M0%200%20C0.33%200.99%200.66%201.98%201%203%20C-0.98%204.98%20-2.96%206.96%20-5%209%20C-5.99%208.67%20-6.98%208.34%20-8%208%20C-5.33333333%205.33333333%20-2.66666667%202.66666667%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(601,528)'/%3e%3cpath%20d='M0%200%20C0.99%200%201.98%200%203%200%20C3.125%202.875%203.125%202.875%203%206%20C2.34%206.66%201.68%207.32%201%208%20C0%207%200%207%20-0.0625%203.4375%20C-0.041875%202.303125%20-0.02125%201.16875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(272,520)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%201.66%201.34%202.32%201%203%20C0.95977609%205.3329866%200.95679753%207.66706666%201%2010%20C0.34%2010%20-0.32%2010%20-1%2010%20C-1.9765625%203.9453125%20-1.9765625%203.9453125%20-2%202%20C-1.34%201.34%20-0.68%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(359,502)'/%3e%3cpath%20d='M0%200%20C3.63%200.66%207.26%201.32%2011%202%20C11%202.33%2011%202.66%2011%203%20C7.37%203%203.74%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(387,469)'/%3e%3cpath%20d='M0%200%20C2.31%200.33%204.62%200.66%207%201%20C6.67%201.66%206.34%202.32%206%203%20C4.35%203%202.7%203%201%203%20C1%203.99%201%204.98%201%206%20C0.01%206%20-0.98%206%20-2%206%20C-1.34%204.02%20-0.68%202.04%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(305,468)'/%3e%3cpath%20d='M0%200%20C1.65%200.33%203.3%200.66%205%201%20C5%201.99%205%202.98%205%204%20C3.35%204%201.7%204%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(549,552)'/%3e%3cpath%20d='M0%200%20C0.94875%200.04125%201.8975%200.0825%202.875%200.125%20C2.875%200.785%202.875%201.445%202.875%202.125%20C0.895%202.785%20-1.085%203.445%20-3.125%204.125%20C-3.785%203.465%20-4.445%202.805%20-5.125%202.125%20C-3.125%200.125%20-3.125%200.125%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(181.125,553.875)'/%3e%3cpath%20d='M0%200%20C1.9375%200.3125%201.9375%200.3125%204%201%20C4.33%201.99%204.66%202.98%205%204%20C2.69%204%200.38%204%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(587,540)'/%3e%3cpath%20d='M0%200%20C0%202.31%200%204.62%200%207%20C-0.99%207.495%20-0.99%207.495%20-2%208%20C-2%207.01%20-2%206.02%20-2%205%20C-2.66%205%20-3.32%205%20-4%205%20C-3.625%203.0625%20-3.625%203.0625%20-3%201%20C-1%200%20-1%200%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(185,520)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C1.67%202.64%201.34%205.28%201%208%20C0.01%207.67%20-0.98%207.34%20-2%207%20C-1.34%207%20-0.68%207%200%207%20C0%206.01%200%205.02%200%204%20C-1.32%203.67%20-2.64%203.34%20-4%203%20C-2.68%202.67%20-1.36%202.34%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(616,486)'/%3e%3cpath%20d='M0%200%20C3.125%20-0.1875%203.125%20-0.1875%206%200%20C6%200.99%206%201.98%206%203%20C3.36%203%200.72%203%20-2%203%20C-1.34%202.01%20-0.68%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(842,477)'/%3e%3cpath%20d='M0%200%20C2.475%200.495%202.475%200.495%205%201%20C4.67%202.32%204.34%203.64%204%205%20C2.68%205.33%201.36%205.66%200%206%20C0%204.02%200%202.04%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(920,472)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5.33%200.99%205.66%201.98%206%203%20C3.69%203%201.38%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(568,560)'/%3e%3cpath%20d='M0%200%20C3.39609044%201.19322096%205.62433927%202.28495916%208%205%20C8.66%205.66%209.32%206.32%2010%207%20C7.29068581%206.84518205%205.53415961%206.51827919%203.5546875%204.59765625%20C2.32320358%203.10228292%201.1570163%201.5537076%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(656,551)'/%3e%3cpath%20d='M0%200%20C-3.6441774%202.4294516%20-5.71241272%202.16179575%20-10%202%20C-10%201.34%20-10%200.68%20-10%200%20C-6.33694766%20-0.74926071%20-3.57644848%20-1.2380014%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(762,542)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%201.65%204%203.3%204%205%20C3.01%205%202.02%205%201%205%20C0.34%203.68%20-0.32%202.36%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(780,539)'/%3e%3cpath%20d='M0%200%20C0%201.98%200%203.96%200%206%20C-0.99%206%20-1.98%206%20-3%206%20C-3.66%204.68%20-4.32%203.36%20-5%202%20C-1.125%200%20-1.125%200%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(611,497)'/%3e%3cpath%20d='M0%200%20C2%203%202%203%201.625%205.1875%20C1.41875%205.785625%201.2125%206.38375%201%207%20C0.01%207%20-0.98%207%20-2%207%20C-2%205.35%20-2%203.7%20-2%202%20C-1.34%202%20-0.68%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(260,485)'/%3e%3cpath%20d='M0%200%20C0.99%200.33%201.98%200.66%203%201%20C3.33%202.98%203.66%204.96%204%207%20C2.35%206.01%200.7%205.02%20-1%204%20C-0.67%202.68%20-0.34%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(896,467)'/%3e%3cpath%20d='M0%200%20C2.97%200%205.94%200%209%200%20C9%201.32%209%202.64%209%204%20C8.01%204%207.02%204%206%204%20C5.67%203.34%205.34%202.68%205%202%20C2.47266765%201.34444881%202.47266765%201.34444881%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(396,466)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4%201.99%204%202.98%204%204%20C1.69%204.33%20-0.62%204.66%20-3%205%20C-2.01%203.35%20-1.02%201.7%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4.33%202.65%204.66%204.3%205%206%20C4.01%206%203.02%206%202%206%20C1.34%204.02%200.68%202.04%200%200%20Z%20'%20fill='%236F9300'%20transform='translate(690,541)'/%3e%3cpath%20d='M0%200%20C1.32%200.99%202.64%201.98%204%203%20C3.67%203.66%203.34%204.32%203%205%20C1.35%205%20-0.3%205%20-2%205%20C-1.34%203.35%20-0.68%201.7%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(858,531)'/%3e%3cpath%20d='M0%200%20C0.66%200.99%201.32%201.98%202%203%20C1.67%203.99%201.34%204.98%201%206%20C-1.5625%207.1875%20-1.5625%207.1875%20-4%208%20C-2.68%205.36%20-1.36%202.72%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(373,482)'/%3e%3cpath%20d='M0%200%20C1.74959319%202.62438979%202.62068453%203.96547627%203%207%20C2.01%208.485%202.01%208.485%201%2010%20C0.34%209.67%20-0.32%209.34%20-1%209%20C-0.67%208.34%20-0.34%207.68%200%207%20C0.04022391%204.6670134%200.04320247%202.33293334%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(360,477)'/%3e%3cpath%20d='M0%200%20C0%200.66%200%201.32%200%202%20C-0.66%202%20-1.32%202%20-2%202%20C-2%202.99%20-2%203.98%20-2%205%20C-3.32%205%20-4.64%205%20-6%205%20C-5.6875%203.0625%20-5.6875%203.0625%20-5%201%20C-2%200%20-2%200%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(891,561)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C0.01%203.32%20-0.98%204.64%20-2%206%20C-3.32%205.34%20-4.64%204.68%20-6%204%20C-4.02%202.68%20-2.04%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(715,553)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C6.33%201.65%206.66%203.3%207%205%20C3.535%203.02%203.535%203.02%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(432,552)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.60196439%203.88575819%201.20990931%204.82189513%20-1.0625%206.75%20C-1.701875%207.1625%20-2.34125%207.575%20-3%208%20C-1.125%201.125%20-1.125%201.125%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(299,549)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2%201.99%202%202.98%202%204%20C-1.13349732%205.04449911%20-1.98968256%204.93423645%20-5%204%20C-3.35%202.68%20-1.7%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(198,546)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4%204%204%204%202.5%205.6875%20C2.005%206.120625%201.51%206.55375%201%207%20C0.67%204.69%200.34%202.38%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(802,545)'/%3e%3cpath%20d='M0%200%20C2%201.3125%202%201.3125%204%203%20C4%203.99%204%204.98%204%206%20C2.02%205.34%200.04%204.68%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(617,530)'/%3e%3cpath%20d='M0%200%20C2%201.8125%202%201.8125%204%204%20C4%204.99%204%205.98%204%207%20C2.68%207.33%201.36%207.66%200%208%20C0%205.36%200%202.72%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(552,520)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C0.1875%204%200.1875%204%20-2%207%20C-2.99%207%20-3.98%207%20-5%207%20C-3.35%204.69%20-1.7%202.38%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(715,519)'/%3e%3cpath%20d='M0%200%20C2.50037734%202.17424117%203.43628586%203.73045798%204%207%20C2.68%206.67%201.36%206.34%200%206%20C0%204.02%200%202.04%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(483,496)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%202.98%201.34%204.96%201%207%20C0.34%206.67%20-0.32%206.34%20-1%206%20C-1.625%203.4375%20-1.625%203.4375%20-2%201%20C-1.34%200.67%20-0.68%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(182,471)'/%3e%3cpath%20d='M0%200%20C0.33%201.32%200.66%202.64%201%204%20C3.31%204%205.62%204%208%204%20C8%204.33%208%204.66%208%205%20C4.7%205%201.4%205%20-2%205%20C-1.34%203.35%20-0.68%201.7%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(638,451)'/%3e%3c/svg%3e";
|
|
589
|
+
var dyrected_default = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Creator:%20CorelDRAW%202020%20(64-Bit)%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20width='1024'%20height='262'%20version='1.1'%20style='shape-rendering:geometricPrecision;%20text-rendering:geometricPrecision;%20image-rendering:optimizeQuality;%20fill-rule:evenodd;%20clip-rule:evenodd'%20viewBox='1661.62%203068.43%208348.08%202136.02'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e%3c![CDATA[%20.fil0%20{fill:none}%20.fil1%20{fill:%2331106F}%20.fil2%20{fill:%23BCFF2E}%20]]%3e%3c/style%3e%3cclipPath%20id='id0'%3e%3cpath%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3c/clipPath%3e%3cclipPath%20id='id1'%3e%3cpath%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3c/clipPath%3e%3cclipPath%20id='id2'%3e%3cpath%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3c/clipPath%3e%3cclipPath%20id='id3'%3e%3cpath%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3c/clipPath%3e%3cclipPath%20id='id4'%3e%3cpath%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3c/clipPath%3e%3cclipPath%20id='id5'%3e%3cpath%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3c/clipPath%3e%3cclipPath%20id='id6'%3e%3cpath%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3c/clipPath%3e%3cclipPath%20id='id7'%3e%3cpath%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3c/clipPath%3e%3cclipPath%20id='id8'%3e%3cpath%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20id='Layer_x0020_1'%3e%3cmetadata%20id='CorelCorpID_0Corel-Layer'/%3e%3crect%20class='fil0'%20x='-0.21'%20y='2.81'%20width='11692.91'%20height='8267.72'/%3e%3crect%20class='fil0'%20x='-0.21'%20y='2.81'%20width='11692.91'%20height='8267.72'/%3e%3cg%20id='_2489101208096'%3e%3cpath%20class='fil1'%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3cg%20style='clip-path:url(%23id0)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3cpath%20class='fil1'%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3cg%20style='clip-path:url(%23id1)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3cpath%20class='fil1'%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3cg%20style='clip-path:url(%23id2)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3cpath%20class='fil1'%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3cg%20style='clip-path:url(%23id3)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3cpath%20class='fil1'%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3cg%20style='clip-path:url(%23id4)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3cpath%20class='fil1'%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3cg%20style='clip-path:url(%23id5)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3cpath%20class='fil1'%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3cg%20style='clip-path:url(%23id6)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3cpath%20class='fil1'%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3cg%20style='clip-path:url(%23id7)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3cpath%20class='fil1'%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3cg%20style='clip-path:url(%23id8)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
|
|
705
590
|
//#endregion
|
|
706
591
|
//#region src/components/layout/admin-shell.tsx
|
|
707
592
|
function getUserString(user, key) {
|
|
@@ -897,7 +782,7 @@ function SidebarInner({ schemas, isLoading, location, logout, isEmbedded, collap
|
|
|
897
782
|
}) : /* @__PURE__ */ jsx("div", {
|
|
898
783
|
className: "dy-h-7 dy-w-auto dy-flex dy-items-center dy-justify-center dy-shrink-0",
|
|
899
784
|
children: /* @__PURE__ */ jsx("img", {
|
|
900
|
-
src: "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='75%20408%20880%20200'%20width='1024'%20height='320'%3e%3cpath%20d='M0%200%20C80.77777778%200%2080.77777778%200%20104.25%2016.25%20C110.41149028%2022.41149028%20115.8130796%2029.84774381%20119%2038%20C119.37125%2038.93457031%20119.7425%2039.86914062%20120.125%2040.83203125%20C125.97853191%2057.96580693%20124.38837118%2076.7725057%20116.9375%2093.0625%20C109.56325726%20107.53398146%2097.58992255%20116.7156145%2082.375%20121.875%20C71.26222779%20125.44607062%2060.56671647%20126.28755488%2048.92578125%20126.1953125%20C47.67873413%20126.19329834%2046.43168701%20126.19128418%2045.14685059%20126.18920898%20C40.53536241%20126.17882812%2035.9239271%20126.15090625%2031.3125%20126.125%20C20.979375%20126.08375%2010.64625%20126.0425%200%20126%20C0%2084.42%200%2042.84%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(94,437)'/%3e%3cpath%20d='M0%200%20C2.71975521%200.35943901%203.84341638%200.83999752%205.7890625%202.828125%20C6.39492188%203.62734375%207.00078125%204.4265625%207.625%205.25%20C8.3159375%206.14847656%209.006875%207.04695313%209.71875%207.97265625%20C10.4715625%208.97167969%2011.224375%209.97070312%2012%2011%20C13.27334297%2012.66801941%2014.55020731%2014.33328608%2015.828125%2015.99780273%20C16.68920631%2017.1197048%2017.54859726%2018.24290639%2018.40625%2019.36743164%20C20.72359821%2022.39401514%2023.10162467%2025.33084868%2025.625%2028.1875%20C28%2031%2028%2031%2028%2033%20C24.04%2033%2020.08%2033%2016%2033%20C16%2036.96%2016%2040.92%2016%2045%20C23.92%2045%2031.84%2045%2040%2045%20C40%2052.26%2040%2059.52%2040%2067%20C32.08%2067%2024.16%2067%2016%2067%20C16.05110565%2073.01513491%2016.11411805%2079.02770699%2016.20751953%2085.04199219%20C16.23569066%2087.08650395%2016.25692435%2089.13112384%2016.27099609%2091.17578125%20C16.29247887%2094.12035322%2016.3391569%2097.06363041%2016.390625%20100.0078125%20C16.39185364%20100.9174173%2016.39308228%20101.82702209%2016.39434814%20102.76419067%20C16.52453003%20108.44478815%2017.27045802%20111.64305028%2021%20116%20C25.45146778%20118.22573389%2031.49130269%20117.61284521%2036.22265625%20116.45703125%20C43.02192732%20113.57781706%2047.39900966%20107.25297069%2051.15625%20101.109375%20C56.12293503%2093.05732503%2066.02505874%2086.96170223%2075%2084.4375%20C75.99%2084.2209375%2075.99%2084.2209375%2077%2084%20C77.76934372%2083.82831802%2078.53868744%2083.65663605%2079.3313446%2083.47975159%20C81.85956507%2083.02524638%2084.13490112%2082.87925324%2086.69848633%2082.88647461%20C88.0493206%2082.88658791%2088.0493206%2082.88658791%2089.42744446%2082.88670349%20C90.3859581%2082.89186478%2091.34447174%2082.89702606%2092.33203125%2082.90234375%20C93.32377853%2082.9037587%2094.31552582%2082.90517365%2095.33732605%2082.90663147%20C98.49574843%2082.91221582%20101.65409915%2082.92476548%20104.8125%2082.9375%20C106.95768127%2082.94251702%20109.10286365%2082.94707958%20111.24804688%2082.95117188%20C116.49872224%2082.96218012%20121.749356%2082.9789027%20127%2083%20C126.41627107%2081.40206803%20125.81844039%2079.8092836%20125.21484375%2078.21875%20C124.88347412%2077.33123047%20124.55210449%2076.44371094%20124.21069336%2075.52929688%20C121.96215073%2070.83179705%20118.27353717%2068.10625131%20113.671875%2065.8671875%20C107.40145998%2063.8320528%2099.62475654%2063.83565488%2093.5625%2066.5625%20C90.74762291%2068.18758368%2089.23412527%2069.92734346%2087.375%2072.5625%20C83.79694231%2077.15174791%2079.16997757%2077.25826651%2073.6875%2078.1875%20C67.93513917%2079.45496934%2063.11247292%2082.15885793%2058%2085%20C56.67024353%2085.67377293%2055.33832199%2086.34340541%2054%2087%20C54.53283313%2074.23864658%2059.85622582%2063.62873005%2069.125%2054.8125%20C79.48783101%2046.05739319%2090.98874912%2042.60318009%20104.3125%2042.6875%20C105.24167236%2042.69313965%20106.17084473%2042.6987793%20107.12817383%2042.70458984%20C120.80891332%2042.94676927%20132.08138441%2047.30179809%20142%2057%20C150.69408674%2067.01964256%20154.41434505%2078.42703622%20154.12890625%2091.5%20C154.11960083%2092.32242188%20154.11029541%2093.14484375%20154.10070801%2093.9921875%20C154.07669258%2095.99492902%20154.03971288%2097.99750824%20154%20100%20C153.20788116%20100.00142502%20152.41576233%20100.00285004%20151.59963989%20100.00431824%20C144.09719277%20100.0222236%20136.5954255%20100.06405798%20129.09327888%20100.13209057%20C125.23723861%20100.16623308%20121.38158914%20100.19145048%20117.52539062%20100.19555664%20C113.79674299%20100.1998673%20110.06897502%20100.22855506%20106.34060287%20100.27343178%20C104.9254661%20100.2863193%20103.51022356%20100.29074578%20102.09503555%20100.28615379%20C90.97909255%20100.25851196%2082.24496399%20102.13674731%2074%20110%20C72.693186%20111.68664002%2071.44412084%20113.4192826%2070.25%20115.1875%20C60.98713546%20128.13484969%2049.31550166%20137.60492408%2033.359375%20140.6015625%20C22.09111259%20141.93803083%2011.94495066%20141.67673859%201.8125%20136.3125%20C-6.21093351%20129.71545467%20-11.15550672%20122.32419258%20-13%20112%20C-13.25198192%20108.45441218%20-13.23420464%20104.92803422%20-13.1953125%20101.375%20C-13.1924826%20100.38749756%20-13.18965271%2099.39999512%20-13.18673706%2098.38256836%20C-13.1756182%2095.25491785%20-13.15052916%2092.12756272%20-13.125%2089%20C-13.11495948%2086.86849374%20-13.10583551%2084.73698296%20-13.09765625%2082.60546875%20C-13.07570607%2077.4035335%20-13.04123391%2072.20181669%20-13%2067%20C-17.95%2067%20-22.9%2067%20-28%2067%20C-28%2059.74%20-28%2052.48%20-28%2045%20C-25.11584117%2043.55792059%20-22.58278472%2043.90605113%20-19.375%2043.9375%20C-18.18648437%2043.94652344%20-16.99796875%2043.95554687%20-15.7734375%2043.96484375%20C-14.85820313%2043.97644531%20-13.94296875%2043.98804688%20-13%2044%20C-13%2040.37%20-13%2036.74%20-13%2033%20C-16.63%2033%20-20.26%2033%20-24%2033%20C-22.47026072%2029.1756518%20-21.7364866%2027.36138218%20-19.27734375%2024.43359375%20C-18.74262451%2023.78841797%20-18.20790527%2023.14324219%20-17.65698242%2022.47851562%20C-16.80583862%2021.46821289%20-16.80583862%2021.46821289%20-15.9375%2020.4375%20C-10.41141017%2013.76832013%20-5.12012996%206.98560367%200%200%20Z%20'%20fill='%23B6FF2E'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C29.59839035%2022.9781895%2028.74526871%2040.62390375%2012.65625%2058.3359375%20C11%2060%2011%2060%208.4375%2062%20C5.46025693%2064.44286611%203.51309236%2067.23700629%201.33203125%2070.390625%20C0.89246094%2070.92171875%200.45289063%2071.4528125%200%2072%20C-0.66%2072%20-1.32%2072%20-2%2072%20C-2.93987733%2070.55661697%20-3.87796552%2069.11202069%20-4.8046875%2067.66015625%20C-8.25891165%2062.86262271%20-12.44079328%2060.54083019%20-18%2059%20C-25.38567118%2058.11965024%20-31.79640485%2058.30895235%20-38.12890625%2062.45703125%20C-43.93075089%2067.24143341%20-46.08004443%2072.64035542%20-47%2080%20C-47.62384022%2087.86038675%20-46.29060096%2095.4983732%20-41.375%20101.875%20C-36.78559554%20106.66837799%20-31.1204383%20109.16020416%20-24.5%20109.4375%20C-17.63097442%20109.06652475%20-10.76252345%20107.03884639%20-5.6171875%20102.3203125%20C-2.88904376%2098.40601931%20-1.66280214%2093.9535236%20-0.1809082%2089.45141602%20C3.35486261%2078.72166264%208.74872668%2071.79757179%2016.88671875%2064.08325195%20C20.82961215%2060.32870988%2023.90074122%2056.47544342%2027%2052%20C27.33%2052%2027.66%2052%2028%2052%20C28%2078.4%2028%20104.8%2028%20132%20C19.42%20132%2010.84%20132%202%20132%20C2%20128.37%202%20124.74%202%20121%20C1.34%20121%200.68%20121%200%20121%20C-0.495%20122.485%20-0.495%20122.485%20-1%20124%20C-12.73711711%20132.94256542%20-25.06338231%20134.43156199%20-39.3125%20132.56640625%20C-51.92494538%20129.92239101%20-62.18469132%20122.09849232%20-69.1875%20111.4375%20C-76.64035884%2098.17021241%20-78.4709381%2082.69085036%20-74.375%2068.0625%20C-69.54605076%2054.5211808%20-61.09321667%2044.22524607%20-48%2038%20C-41.32156484%2035.17823273%20-35.2722462%2034.50746377%20-28.0625%2034.5625%20C-27.13759766%2034.54251953%20-26.21269531%2034.52253906%20-25.25976562%2034.50195312%20C-15.04309922%2034.50911267%20-8.83524108%2037.47063244%20-1%2044%20C-0.67%2029.48%20-0.34%2014.96%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(902,431)'/%3e%3cpath%20d='M0%200%20C1.98755052%201.41100915%203.72130576%202.89802373%205.484375%204.578125%20C6.38349609%205.34576172%206.38349609%205.34576172%207.30078125%206.12890625%20C15.92373572%2013.93240069%2020.74453573%2025.07362429%2021.484375%2036.578125%20C21.60509121%2040.91384903%2021.70071786%2045.24490485%2021.484375%2049.578125%20C20.484375%2050.578125%2020.484375%2050.578125%2017.63072205%2050.69837952%20C16.35387039%2050.69615891%2015.07701874%2050.69393829%2013.76147461%2050.69165039%20C13.0590715%2050.69179642%2012.3566684%2050.69194244%2011.63298035%2050.6920929%20C9.30086222%2050.69139372%206.968823%2050.68360117%204.63671875%2050.67578125%20C3.02389062%2050.67391708%201.41106193%2050.67249318%20-0.20176697%2050.67149353%20C-4.45477857%2050.66766823%20-8.70775624%2050.65783785%20-12.96075439%2050.64678955%20C-17.2973993%2050.63657569%20-21.63404967%2050.63199596%20-25.97070312%2050.62695312%20C-34.48569269%2050.61621559%20-43.00065463%2050.59913903%20-51.515625%2050.578125%20C-50.76310085%2052.01068418%20-50.00072966%2053.43807287%20-49.234375%2054.86328125%20C-48.81091797%2055.65871338%20-48.38746094%2056.45414551%20-47.95117188%2057.27368164%20C-44.77728619%2062.36863181%20-40.24267716%2065.83885608%20-34.515625%2067.578125%20C-24.44648111%2068.75306138%20-13.88210791%2068.97920567%20-5.515625%2062.578125%20C-4.49191978%2061.60240597%20-3.48336669%2060.60937474%20-2.515625%2059.578125%20C0.41667693%2060.89933328%202.47102399%2062.32450697%204.71875%2064.6171875%20C5.29238281%2065.19726562%205.86601562%2065.77734375%206.45703125%2066.375%20C7.04355469%2066.97828125%207.63007813%2067.5815625%208.234375%2068.203125%20C8.83636719%2068.81414062%209.43835938%2069.42515625%2010.05859375%2070.0546875%20C11.53842805%2071.55801124%2013.01202176%2073.06747356%2014.484375%2074.578125%20C6.88082899%2084.58279081%20-3.31152864%2089.39611981%20-15.515625%2091.578125%20C-19.0759833%2091.8143607%20-22.63564692%2091.80900924%20-26.203125%2091.828125%20C-27.61754883%2091.8590625%20-27.61754883%2091.8590625%20-29.06054688%2091.890625%20C-43.17549414%2091.96823296%20-55.10728015%2086.56442315%20-65.26171875%2076.88671875%20C-75.61516851%2066.28205877%20-79.89439154%2053.46530582%20-79.73046875%2038.73046875%20C-78.80311822%2025.12370731%20-72.27652509%2013.81184063%20-62.515625%204.578125%20C-45.29287927%20-9.47756591%20-19.26149726%20-10.88693323%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(493.515625,472.421875)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C31.88545714%206.3480057%2034.74623297%2012.64267461%2037.375%2019.08984375%20C37.66681152%2019.80048477%2037.95862305%2020.51112579%2038.25927734%2021.24330139%20C39.17479456%2023.47391024%2040.08751229%2025.70565039%2041%2027.9375%20C41.60917627%2029.42390959%2042.2185503%2030.91023814%2042.828125%2032.39648438%20C43.27551025%2033.48759018%2043.27551025%2033.48759018%2043.73193359%2034.60073853%20C44.32289018%2036.04103366%2044.91435386%2037.48112086%2045.50634766%2038.92098999%20C46.83058613%2042.14243669%2048.14705044%2045.36608605%2049.4453125%2048.59814453%20C49.87585938%2049.6601709%2050.30640625%2050.72219727%2050.75%2051.81640625%20C51.11609375%2052.7297876%2051.4821875%2053.64316895%2051.859375%2054.58422852%20C52.99948383%2056.99890679%2054.32194326%2058.93105971%2056%2061%20C63.85224401%2042.59935141%2063.85224401%2042.59935141%2071.375%2024.0625%20C74.61034321%2015.88404588%2078.06515289%207.86969422%2082%200%20C90.91%200%2099.82%200%20109%200%20C105.62156917%2011.2614361%20105.62156917%2011.2614361%20103.94921875%2015.33203125%20C103.57990234%2016.23373047%20103.21058594%2017.13542969%20102.83007812%2018.06445312%20C102.45302734%2018.97130859%20102.07597656%2019.87816406%20101.6875%2020.8125%20C101.13932617%2022.15538086%20101.13932617%2022.15538086%20100.58007812%2023.52539062%20C98.52888864%2028.50280206%2096.36531611%2033.41002468%2094.08984375%2038.2890625%20C91.12034683%2044.67044212%2088.37355778%2051.13053761%2085.67678833%2057.63122559%20C84.27693812%2061.00305678%2082.86621358%2064.37034217%2081.45703125%2067.73828125%20C81.17043137%2068.42368988%2080.88383148%2069.10909851%2080.58854675%2069.8152771%20C77.59723903%2076.96761949%2074.59243132%2084.11392962%2071.5625%2091.25%20C71.09118652%2092.37220947%2070.61987305%2093.49441895%2070.13427734%2094.65063477%20C64.14372759%20108.71158026%2057.88097216%20122.54500294%2043.26171875%20129.16015625%20C32.99566383%20132.97224918%2018.99532524%20132.39132855%209%20128%20C6.27254605%20126.74842163%203.64641133%20125.4212209%201%20124%20C1.6411928%20121.09325931%202.56662682%20118.57468666%203.84765625%20115.890625%20C4.38422852%20114.75947266%204.38422852%20114.75947266%204.93164062%20113.60546875%20C5.30482422%20112.82816406%205.67800781%20112.05085937%206.0625%20111.25%20C6.62807617%20110.06083984%206.62807617%20110.06083984%207.20507812%20108.84765625%20C8.13345839%20106.89688254%209.06629544%20104.94823094%2010%20103%20C12.57030771%20104.02467879%2015.13501673%20105.05651863%2017.6875%20106.125%20C23.13926051%20107.56508768%2028.53393046%20107.91137353%2033.875%20105.9375%20C36.67992585%20103.3800676%2038.90092755%20100.67546954%2040%2097%20C39.51255272%2092.02739581%2037.81323979%2087.84336435%2035.75390625%2083.34765625%20C35.42739075%2082.61970352%2035.10087524%2081.89175079%2034.76446533%2081.14173889%20C34.06574374%2079.58604999%2033.36386031%2078.03177798%2032.65908813%2076.4788208%20C31.54929238%2074.03339714%2030.44768068%2071.58443912%2029.34838867%2069.13427734%20C28.24699442%2066.67954634%2027.14520032%2064.22500817%2026.04084778%2061.77160645%20C22.05427867%2052.9145598%2018.19057599%2044.00588863%2014.33935547%2035.08935547%20C13.03927819%2032.09059902%2011.73151205%2029.09532776%2010.42124939%2026.10101318%20C9.20378396%2023.3178069%207.98924352%2020.53332878%206.7749939%2017.74871826%20C6.17859872%2016.3828194%205.58097738%2015.01745522%204.98208618%2013.65264893%20C4.14875742%2011.75295298%203.31997874%209.85133284%202.4921875%207.94921875%20C2.01120605%206.84924561%201.53022461%205.74927246%201.03466797%204.6159668%20C0%202%200%202%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(224,467)'/%3e%3cpath%20d='M0%200%20C4.6456294%203.80490916%208.23887006%207.95463812%2010.84375%2013.40234375%20C10.84375%2014.06234375%2010.84375%2014.72234375%2010.84375%2015.40234375%20C0.44875%2020.84734375%200.44875%2020.84734375%20-10.15625%2026.40234375%20C-15.15625%2022.40234375%20-15.15625%2022.40234375%20-17.59375%2019.83984375%20C-23.69448695%2014.03670372%20-29.49135908%2013.8685058%20-37.5859375%2014.05859375%20C-44.66458696%2014.74012674%20-48.35592604%2018.17840756%20-52.89453125%2023.42578125%20C-57.35750661%2030.4173154%20-57.05559365%2039.03898526%20-55.7265625%2046.96484375%20C-53.69407611%2054.19146201%20-49.25238278%2059.49703127%20-42.90625%2063.40234375%20C-35.21481566%2065.45339291%20-27.19943303%2065.45458604%20-20.15625%2061.40234375%20C-17.38502725%2059.04807876%20-17.38502725%2059.04807876%20-15.15625%2056.40234375%20C-13.82291667%2055.06901042%20-12.48958333%2053.73567708%20-11.15625%2052.40234375%20C-3.48829498%2054.74171986%203.61512274%2057.95003181%2010.84375%2061.40234375%20C9.71301894%2068.83286216%205.25630274%2073.41753074%20-0.15625%2078.40234375%20C-14.27515309%2088.65893292%20-29.58374274%2090.22229359%20-46.59375%2087.94140625%20C-59.50522416%2084.75107107%20-71.47879005%2076.68814229%20-78.59375%2065.40234375%20C-85.12640699%2053.53652894%20-87.70329542%2038.76522142%20-84.28515625%2025.4921875%20C-81.80476638%2018.01848819%20-78.48663047%2012.17115378%20-73.15625%206.40234375%20C-72.35574219%205.46648437%20-72.35574219%205.46648437%20-71.5390625%204.51171875%20C-54.14361329%20-14.63159857%20-19.9950983%20-14.8152087%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(612.15625,475.59765625)'/%3e%3cpath%20d='M0%200%20C0.92917236%200.00563965%201.85834473%200.0112793%202.81567383%200.01708984%20C16.49641332%200.25926927%2027.76888441%204.61429809%2037.6875%2014.3125%20C46.38158674%2024.33214256%2050.10184505%2035.73953622%2049.81640625%2048.8125%20C49.80710083%2049.63492188%2049.79779541%2050.45734375%2049.78820801%2051.3046875%20C49.76419258%2053.30742902%2049.72721288%2055.31000824%2049.6875%2057.3125%20C48.89538116%2057.31392502%2048.10326233%2057.31535004%2047.28713989%2057.31681824%20C39.78469277%2057.3347236%2032.2829255%2057.37655798%2024.78077888%2057.44459057%20C20.92473861%2057.47873308%2017.06908914%2057.50395048%2013.21289062%2057.50805664%20C9.48424299%2057.5123673%205.75647502%2057.54105506%202.02810287%2057.58593178%20C0.6129661%2057.5988193%20-0.80227644%2057.60324578%20-2.21746445%2057.59865379%20C-13.33340745%2057.57101196%20-22.06753601%2059.44924731%20-30.3125%2067.3125%20C-31.619314%2068.99914002%20-32.86837916%2070.7317826%20-34.0625%2072.5%20C-39.27138551%2079.83175205%20-44.31888353%2086.93254032%20-53.3125%2089.3125%20C-59.27605196%2089.97511688%20-63.4418563%2088.64128375%20-68.3125%2085.3125%20C-71.47815211%2082.38915707%20-73.44158139%2079.56624985%20-74.3125%2075.3125%20C-73.64863281%2075.07015625%20-72.98476563%2074.8278125%20-72.30078125%2074.578125%20C-70.97626953%2074.07539062%20-70.97626953%2074.07539062%20-69.625%2073.5625%20C-68.31982422%2073.07523438%20-68.31982422%2073.07523438%20-66.98828125%2072.578125%20C-61.914668%2070.17834297%20-58.99832299%2067.14164616%20-55.97827148%2062.4387207%20C-49.17329509%2051.85146005%20-39.91704612%2044.06974446%20-27.3125%2041.3125%20C-26.54315628%2041.14081802%20-25.77381256%2040.96913605%20-24.9811554%2040.79225159%20C-22.45293493%2040.33774638%20-20.17759888%2040.19175324%20-17.61401367%2040.19897461%20C-16.2631794%2040.19908791%20-16.2631794%2040.19908791%20-14.88505554%2040.19920349%20C-13.44728508%2040.20694542%20-13.44728508%2040.20694542%20-11.98046875%2040.21484375%20C-10.49284782%2040.21696617%20-10.49284782%2040.21696617%20-8.97517395%2040.21913147%20C-5.81675157%2040.22471582%20-2.65840085%2040.23726548%200.5%2040.25%20C2.64518127%2040.25501702%204.79036365%2040.25957958%206.93554688%2040.26367188%20C12.18622224%2040.27468012%2017.436856%2040.2914027%2022.6875%2040.3125%20C22.10377107%2038.71456803%2021.50594039%2037.1217836%2020.90234375%2035.53125%20C20.57097412%2034.64373047%2020.23960449%2033.75621094%2019.89819336%2032.84179688%20C17.64965073%2028.14429705%2013.96103717%2025.41875131%209.359375%2023.1796875%20C3.08895998%2021.1445528%20-4.68774346%2021.14815488%20-10.75%2023.875%20C-13.56487709%2025.50008368%20-15.07837473%2027.23984346%20-16.9375%2029.875%20C-20.51555769%2034.46424791%20-25.14252243%2034.57076651%20-30.625%2035.5%20C-36.37736083%2036.76746934%20-41.20002708%2039.47135793%20-46.3125%2042.3125%20C-47.64225647%2042.98627293%20-48.97417801%2043.65590541%20-50.3125%2044.3125%20C-49.77966687%2031.55114658%20-44.45627418%2020.94123005%20-35.1875%2012.125%20C-24.82466899%203.36989319%20-13.32375088%20-0.08431991%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(764.3125,465.6875)'/%3e%3cpath%20d='M0%200%20C44.84375%200%2044.84375%200%2055%2010%20C63.50692661%2020.10567615%2066.02395277%2031.00367642%2065%2044%20C63.92164324%2052.75980221%2059.27536689%2061.86408571%2053%2068%20C36.90761972%2079.76525518%2020.54677762%2076%200%2076%20C0%2050.92%200%2025.84%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(123,462)'/%3e%3cpath%20d='M0%200%20C0%208.58%200%2017.16%200%2026%20C-2.475%2026.0825%20-4.95%2026.165%20-7.5%2026.25%20C-15.58592043%2026.68028387%20-20.78770187%2028.00185508%20-26.8125%2033.625%20C-32.18698591%2040.84882192%20-32.45755497%2050.04763218%20-32.51171875%2058.6953125%20C-32.52966995%2059.76876923%20-32.54762115%2060.84222595%20-32.56611633%2061.94821167%20C-32.61983039%2065.34043577%20-32.65398988%2068.73252235%20-32.6875%2072.125%20C-32.72070741%2074.44012315%20-32.75520018%2076.75522823%20-32.79101562%2079.0703125%20C-32.87792806%2084.71355721%20-32.93833073%2090.35619859%20-33%2096%20C-42.24%2096%20-51.48%2096%20-61%2096%20C-61.11629021%2091.57321943%20-61.21532635%2087.15195899%20-61.2746582%2082.72485352%20C-61.29944483%2081.22662179%20-61.33328586%2079.72850609%20-61.37719727%2078.23071289%20C-61.84659218%2061.77980184%20-58.18723461%2049.29745852%20-47.64160156%2036.32958984%20C-46.11388537%2034.44998397%20-44.58793536%2032.56895731%20-43.0625%2030.6875%20C-42.54276611%2030.05078369%20-42.02303223%2029.41406738%20-41.48754883%2028.75805664%20C-38.17466035%2024.64362091%20-35.32555694%2020.47816771%20-32.625%2015.9375%20C-27.24219449%206.99173768%20-23.75743907%203.76906718%20-13.609375%200.6640625%20C-10%200%20-10%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(406,466)'/%3e%3cpath%20d='M0%200%20C5.66129431%204.69766975%2010.85228904%209.74723372%2016%2015%20C11.92304775%2022.70385133%204.05433775%2027.16606635%20-4%2030%20C-19.29250715%2034.53548448%20-36.16315756%2033.34402642%20-50.4140625%2026.31640625%20C-58.66486514%2021.8238732%20-58.66486514%2021.8238732%20-59.77929688%2019.08422852%20C-60%2017%20-60%2017%20-57.796875%2013.87109375%20C-56.79405635%2012.71532531%20-55.77778517%2011.57112409%20-54.75%2010.4375%20C-54.24597656%209.86064453%20-53.74195313%209.28378906%20-53.22265625%208.68945312%20C-50.89341628%206.03925489%20-48.51068548%203.47978615%20-46%201%20C-42.31120701%202.80247839%20-38.77349917%204.8276212%20-35.21875%206.87890625%20C-27.51820571%2010.76985028%20-18.90673806%209.19207078%20-10.88671875%207.06640625%20C-6.60864698%205.48600897%20-3.35300014%203.04728542%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(791,532)'/%3e%3cpath%20d='M0%200%20C4.56326885%202.95860288%208.00828055%206.6679148%209.9375%2011.8125%20C9.9375%2013.4625%209.9375%2015.1125%209.9375%2016.8125%20C-4.9125%2016.8125%20-19.7625%2016.8125%20-35.0625%2016.8125%20C-33.85907282%209.59193695%20-31.77484523%205.59340843%20-25.8984375%201.19140625%20C-17.83251928%20-3.44583989%20-8.3946856%20-4.34922034%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(477.0625,489.1875)'/%3e%3cpath%20d='M0%200%20C2.71975521%200.35943901%203.84341638%200.83999752%205.7890625%202.828125%20C6.39492188%203.62734375%207.00078125%204.4265625%207.625%205.25%20C8.3159375%206.14847656%209.006875%207.04695313%209.71875%207.97265625%20C10.4715625%208.97167969%2011.224375%209.97070312%2012%2011%20C13.27334297%2012.66801941%2014.55020731%2014.33328608%2015.828125%2015.99780273%20C16.68920631%2017.1197048%2017.54859726%2018.24290639%2018.40625%2019.36743164%20C20.72359821%2022.39401514%2023.10162467%2025.33084868%2025.625%2028.1875%20C28%2031%2028%2031%2028%2033%20C24.04%2033%2020.08%2033%2016%2033%20C16%2036.96%2016%2040.92%2016%2045%20C15.01%2044.505%2015.01%2044.505%2014%2044%20C13.5859375%2041.27734375%2013.5859375%2041.27734375%2013.375%2037.9375%20C13.30023437%2036.83277344%2013.22546875%2035.72804688%2013.1484375%2034.58984375%20C13.09945312%2033.73519531%2013.05046875%2032.88054687%2013%2032%20C14.134375%2031.54625%2015.26875%2031.0925%2016.4375%2030.625%20C20.04721692%2029.42904194%2020.04721692%2029.42904194%2021%2027%20C20.34%2027%2019.68%2027%2019%2027%20C18.608125%2025.9275%2018.21625%2024.855%2017.8125%2023.75%20C16.27259896%2020.08533167%2014.21849461%2018.3486312%2011%2016%20C11%2015.34%2011%2014.68%2011%2014%20C10.34%2014%209.68%2014%209%2014%20C7.4921875%2012.25%207.4921875%2012.25%205.875%2010%20C5.33617187%209.2575%204.79734375%208.515%204.2421875%207.75%20C3.83226562%207.1725%203.42234375%206.595%203%206%20C-3.93710167%209.15322803%20-9.63269943%2014.06474733%20-12.375%2021.25%20C-12.63023437%2022.05953125%20-12.88546875%2022.8690625%20-13.1484375%2023.703125%20C-14.07536523%2026.20327869%20-15.31553255%2027.94852568%20-17%2030%20C-15.02%2030.33%20-13.04%2030.66%20-11%2031%20C-9.51119807%2035.4664058%20-9.31090749%2039.30056546%20-11.09765625%2043.70703125%20C-13%2046%20-13%2046%20-16.13671875%2046.48828125%20C-19.42447917%2046.32552083%20-22.71223958%2046.16276042%20-26%2046%20C-26%2052.27%20-26%2058.54%20-26%2065%20C-24.1025%2064.95875%20-22.205%2064.9175%20-20.25%2064.875%20C-16.10895658%2064.78497732%20-13.61590012%2065.02831107%20-10%2067%20C-9.98786972%2067.91628929%20-9.98786972%2067.91628929%20-9.97549438%2068.85108948%20C-9.88922875%2075.22686062%20-9.78971604%2081.60232871%20-9.68261719%2087.9777832%20C-9.644408%2090.35500995%20-9.60954125%2092.73229292%20-9.578125%2095.10961914%20C-9.53229961%2098.53291881%20-9.47433332%20101.95583411%20-9.4140625%20105.37890625%20C-9.40251129%20106.43646622%20-9.39096008%20107.49402618%20-9.37905884%20108.58363342%20C-9.26966133%20114.09218328%20-8.82932532%20118.79123684%20-7%20124%20C-6.34%20124%20-5.68%20124%20-5%20124%20C-4.9071875%20124.928125%20-4.9071875%20124.928125%20-4.8125%20125.875%20C-4.19124685%20128.2501999%20-4.19124685%20128.2501999%20-1.625%20129.0625%20C-0.75875%20129.371875%200.1075%20129.68125%201%20130%20C2.6875%20131.5625%202.6875%20131.5625%204%20133%20C4.66%20133.33%205.32%20133.66%206%20134%20C6.625%20136.0625%206.625%20136.0625%207%20138%20C0.64042919%20136.72808584%20-3.00409013%20132.83266023%20-7%20128%20C-12.40978943%20119.7580267%20-13.30059906%20110.99356957%20-13.1953125%20101.375%20C-13.1924826%20100.38749756%20-13.18965271%2099.39999512%20-13.18673706%2098.38256836%20C-13.1756182%2095.25491785%20-13.15052916%2092.12756272%20-13.125%2089%20C-13.11495948%2086.86849374%20-13.10583551%2084.73698296%20-13.09765625%2082.60546875%20C-13.07570607%2077.4035335%20-13.04123391%2072.20181669%20-13%2067%20C-17.95%2067%20-22.9%2067%20-28%2067%20C-28%2059.74%20-28%2052.48%20-28%2045%20C-25.11584117%2043.55792059%20-22.58278472%2043.90605113%20-19.375%2043.9375%20C-18.18648437%2043.94652344%20-16.99796875%2043.95554687%20-15.7734375%2043.96484375%20C-14.85820313%2043.97644531%20-13.94296875%2043.98804688%20-13%2044%20C-13%2040.37%20-13%2036.74%20-13%2033%20C-16.63%2033%20-20.26%2033%20-24%2033%20C-22.47026072%2029.1756518%20-21.7364866%2027.36138218%20-19.27734375%2024.43359375%20C-18.74262451%2023.78841797%20-18.20790527%2023.14324219%20-17.65698242%2022.47851562%20C-16.80583862%2021.46821289%20-16.80583862%2021.46821289%20-15.9375%2020.4375%20C-10.41141017%2013.76832013%20-5.12012996%206.98560367%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C0.68078561%2010.15126993%20-6.26162995%2018.50517827%20-12.625%2025.8125%20C-13.10155029%2026.35165039%20-13.57810059%2026.89080078%20-14.0690918%2027.44628906%20C-17.57519453%2031.41656971%20-20.32199043%2035.44738374%20-23%2040%20C-23.33%2040%20-23.66%2040%20-24%2040%20C-24%2027.13%20-24%2014.26%20-24%201%20C-20.225625%200.835%20-16.45125%200.67%20-12.5625%200.5%20C-11.37084229%200.44779297%20-10.17918457%200.39558594%20-8.95141602%200.34179688%20C-7.55427368%200.28088867%20-7.55427368%200.28088867%20-6.12890625%200.21875%20C-5.17056885%200.17685547%20-4.21223145%200.13496094%20-3.22485352%200.09179688%20C-1%200%20-1%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(369,467)'/%3e%3cpath%20d='M0%200%20C2.00720923%200.28674418%204.0085944%200.61866701%206%201%20C6.495%202.485%206.495%202.485%207%204%20C7.66%204%208.32%204%209%204%20C9.495%205.98%209.495%205.98%2010%208%20C10.66%208%2011.32%208%2012%208%20C12.474375%208.639375%2012.94875%209.27875%2013.4375%209.9375%20C14.9091365%2012.28372963%2014.9091365%2012.28372963%2018%2013%20C18.495%2015.97%2018.495%2015.97%2019%2019%20C19.66%2019%2020.32%2019%2021%2019%20C22.0625%2020.8125%2022.0625%2020.8125%2023%2023%20C22.505%2024.485%2022.505%2024.485%2022%2026%20C21.3709375%2025.17757813%2020.741875%2024.35515625%2020.09375%2023.5078125%20C17.8531051%2020.58200082%2015.60149285%2017.6647905%2013.34716797%2014.74951172%20C12.10990021%2013.14272289%2010.88443769%2011.52686179%209.66015625%209.91015625%20C8.96792969%209.01167969%208.27570312%208.11320312%207.5625%207.1875%20C6.63630859%205.97126953%206.63630859%205.97126953%205.69140625%204.73046875%20C5.13324219%204.15941406%204.57507813%203.58835937%204%203%20C3.01%203%202.02%203%201%203%20C-1.1667738%205.33134682%20-1.1667738%205.33134682%20-3.375%208.4375%20C-4.25611385%209.62008724%20-5.13764692%2010.80236221%20-6.01953125%2011.984375%20C-6.49342285%2012.62568359%20-6.96731445%2013.26699219%20-7.45556641%2013.92773438%20C-9.12007314%2016.16110984%20-10.81214938%2018.37132519%20-12.51171875%2020.578125%20C-13.10098145%2021.34326416%20-13.69024414%2022.10840332%20-14.29736328%2022.89672852%20C-15.46363033%2024.41029473%20-16.62997013%2025.92380488%20-17.79638672%2027.43725586%20C-18.32893066%2028.13214111%20-18.86147461%2028.82702637%20-19.41015625%2029.54296875%20C-19.88590088%2030.16196045%20-20.36164551%2030.78095215%20-20.85180664%2031.41870117%20C-22.07331217%2033.0102519%20-22.07331217%2033.0102519%20-23%2035%20C-19.37%2035%20-15.74%2035%20-12%2035%20C-12%2038.63%20-12%2042.26%20-12%2046%20C-16.95%2046.33%20-21.9%2046.66%20-27%2047%20C-27%2054.26%20-27%2061.52%20-27%2069%20C-22.05%2069%20-17.1%2069%20-12%2069%20C-11.98541748%2070.31081543%20-11.97083496%2071.62163086%20-11.95581055%2072.97216797%20C-11.89747545%2077.87396394%20-11.82024648%2082.77531735%20-11.73754883%2087.67675781%20C-11.70446426%2089.7909421%20-11.67638204%2091.90521123%20-11.65356445%2094.01953125%20C-11.61971392%2097.07328159%20-11.56738455%20100.12626594%20-11.51171875%20103.1796875%20C-11.50532883%20104.11239471%20-11.4989389%20105.04510193%20-11.49235535%20106.006073%20C-11.26437364%20116.37399184%20-8.63724873%20126.05256773%20-1.3671875%20133.72265625%20C6.92807918%20141.29255208%2016.09690889%20142.40300166%2027.015625%20142.2109375%20C37.64372477%20141.64827339%2045.9753421%20138.49041118%2055%20133%20C55.66%20132.67%2056.32%20132.34%2057%20132%20C56.17631135%20135.60363786%2054.73164913%20137.5598772%2051.8125%20139.6875%20C43.36448472%20144.51927852%2032.57412865%20144.15231016%2023.0625%20144.25%20C22.03491577%20144.2641394%2022.03491577%20144.2641394%2020.98657227%20144.27856445%20C16.010662%20144.24659412%2011.7517971%20143.33793617%207%20142%20C6.67%20142.66%206.34%20143.32%206%20144%20C6%20143.34%206%20142.68%206%20142%20C5.2575%20141.731875%204.515%20141.46375%203.75%20141.1875%20C1.10938051%20140.04723249%20-0.85552844%20138.90619694%20-3%20137%20C-3%20136.34%20-3%20135.68%20-3%20135%20C-4.32%20134.67%20-5.64%20134.34%20-7%20134%20C-7.495%20132.02%20-7.495%20132.02%20-8%20130%20C-8.66%20130%20-9.32%20130%20-10%20130%20C-13.3917714%20117.17092103%20-13.35377076%20104.75435973%20-13.1875%2091.5625%20C-13.17241597%2089.4629003%20-13.15873419%2087.36329003%20-13.14648438%2085.26367188%20C-13.1137965%2080.17551518%20-13.0622224%2075.0878777%20-13%2070%20C-17.95%2070%20-22.9%2070%20-28%2070%20C-29.81226714%2066.37546571%20-29.18470181%2062.11521368%20-29.1875%2058.125%20C-29.19974609%2057.21363281%20-29.21199219%2056.30226563%20-29.22460938%2055.36328125%20C-29.22654297%2054.48285156%20-29.22847656%2053.60242188%20-29.23046875%2052.6953125%20C-29.23457764%2051.89109863%20-29.23868652%2051.08688477%20-29.24291992%2050.25830078%20C-28.96966064%2047.71795063%20-28.41516433%2046.12497675%20-27%2044%20C-24.1796875%2043.390625%20-24.1796875%2043.390625%20-20.875%2043.25%20C-19.77929688%2043.19328125%20-18.68359375%2043.1365625%20-17.5546875%2043.078125%20C-16.71164062%2043.05234375%20-15.86859375%2043.0265625%20-15%2043%20C-14.505%2040.03%20-14.505%2040.03%20-14%2037%20C-14.721875%2037.20625%20-15.44375%2037.4125%20-16.1875%2037.625%20C-19.54297056%2038.07239607%20-21.11604375%2037.76241771%20-24%2036%20C-24.875%2033.7421875%20-24.875%2033.7421875%20-25%2031%20C-23.453125%2028.359375%20-23.453125%2028.359375%20-21.25%2025.75%20C-20.53328125%2024.87859375%20-19.8165625%2024.0071875%20-19.078125%2023.109375%20C-17%2021%20-17%2021%20-14%2020%20C-14%2019.34%20-14%2018.68%20-14%2018%20C-13.34%2018%20-12.68%2018%20-12%2018%20C-12%2017.01%20-12%2016.02%20-12%2015%20C-11.34%2015%20-10.68%2015%20-10%2015%20C-9.938125%2014.46375%20-9.87625%2013.9275%20-9.8125%2013.375%20C-8.59964736%209.82973843%20-6.55389074%207.7407608%20-4%205%20C-3.34%205%20-2.68%205%20-2%205%20C-1.855625%204.360625%20-1.71125%203.72125%20-1.5625%203.0625%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(659,421)'/%3e%3cpath%20d='M0%200%20C7.92%200%2015.84%200%2024%200%20C24%207.26%2024%2014.52%2024%2022%20C16.08%2022%208.16%2022%200%2022%20C0.05110565%2028.01513491%200.11411805%2034.02770699%200.20751953%2040.04199219%20C0.23569066%2042.08650395%200.25692435%2044.13112384%200.27099609%2046.17578125%20C0.29247887%2049.12035322%200.3391569%2052.06363041%200.390625%2055.0078125%20C0.39185364%2055.9174173%200.39308228%2056.82702209%200.39434814%2057.76419067%20C0.52424586%2063.4323883%201.24752639%2066.66904733%205%2071%20C7.15616421%2071.84067552%207.15616421%2071.84067552%209.4375%2071.875%20C13.59953049%2072.52786753%2013.59953049%2072.52786753%2015.484375%2074.75%20C16.28446347%2076.16314328%2017.06211601%2077.58923329%2017.81640625%2079.02734375%20C20.15058208%2082.91763679%2023.83300287%2084.61100096%2028%2086%20C29.72795352%2086.06802967%2031.45835365%2086.08495645%2033.1875%2086.0625%20C34.08855469%2086.05347656%2034.98960937%2086.04445313%2035.91796875%2086.03515625%20C36.60503906%2086.02355469%2037.29210937%2086.01195312%2038%2086%20C28.4198669%2094.94145756%2015.04998512%2096.35397366%202.5546875%2096.203125%20C-1.58388881%2095.96663493%20-5.07173198%2095.28269976%20-9%2094%20C-6.13129876%2093.17066175%20-3.67877335%2092.90857069%20-0.69921875%2093.0078125%20C0.51991211%2093.03294922%200.51991211%2093.03294922%201.76367188%2093.05859375%20C3.45140273%2093.10256528%205.13894568%2093.15453885%206.82617188%2093.21484375%20C12.36551383%2093.31102806%2016.06333211%2092.5449489%2021%2090%20C21%2089.01%2021%2088.02%2021%2087%20C19.5459375%2086.0409375%2019.5459375%2086.0409375%2018.0625%2085.0625%20C15%2083%2015%2083%2014.125%2080.75%20C14.08375%2080.1725%2014.0425%2079.595%2014%2079%20C13.34%2079%2012.68%2079%2012%2079%20C12%2078.34%2012%2077.68%2012%2077%20C11.278125%2076.896875%2010.55625%2076.79375%209.8125%2076.6875%20C5.46614904%2075.62505865%202.79905402%2074.21337832%200.3125%2070.4375%20C-0.120625%2069.633125%20-0.55375%2068.82875%20-1%2068%20C-1.66%2067.34%20-2.32%2066.68%20-3%2066%20C-4.56682324%2055.65896659%20-4.02187183%2044.9749078%20-3.6875%2034.5625%20C-3.65293701%2033.35924072%20-3.61837402%2032.15598145%20-3.58276367%2030.91625977%20C-3.53869385%2029.79018311%20-3.49462402%2028.66410645%20-3.44921875%2027.50390625%20C-3.41143311%2026.49142822%20-3.37364746%2025.4789502%20-3.3347168%2024.43579102%20C-3%2022%20-3%2022%20-1%2020%20C1.15478516%2019.68115234%201.15478516%2019.68115234%203.7890625%2019.5859375%20C5.20058594%2019.52792969%205.20058594%2019.52792969%206.640625%2019.46875%20C7.62546875%2019.4378125%208.6103125%2019.406875%209.625%2019.375%20C11.11386719%2019.31699219%2011.11386719%2019.31699219%2012.6328125%2019.2578125%20C15.08835385%2019.1633686%2017.5438841%2019.07780125%2020%2019%20C19.98839844%2018.18015625%2019.97679687%2017.3603125%2019.96484375%2016.515625%20C19.95582031%2015.43796875%2019.94679688%2014.3603125%2019.9375%2013.25%20C19.92589844%2012.18265625%2019.91429687%2011.1153125%2019.90234375%2010.015625%20C19.98489913%207.46631499%2020.25382442%205.42066409%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%239BE600'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C3%203%203%203%203.2578125%205.3046875%20C3.21398437%206.15289062%203.17015625%207.00109375%203.125%207.875%20C3.00502835%2011.46371724%203.2754511%2014.48076247%204%2018%20C3.60976365%2021.31700894%202.61164065%2022.93522445%200%2025%20C-2.36010742%2025.34057617%20-2.36010742%2025.34057617%20-5.10546875%2025.29296875%20C-6.08837891%2025.28330078%20-7.07128906%2025.27363281%20-8.08398438%2025.26367188%20C-9.10814453%2025.23853516%20-10.13230469%2025.21339844%20-11.1875%2025.1875%20C-12.22326172%2025.17396484%20-13.25902344%2025.16042969%20-14.32617188%2025.14648438%20C-16.88463699%2025.11111389%20-19.4420578%2025.06175544%20-22%2025%20C-21.93433838%2025.60046143%20-21.86867676%2026.20092285%20-21.80102539%2026.81958008%20C-20.93290834%2035.43139683%20-20.67409758%2044.04154841%20-20.4375%2052.6875%20C-20.39418922%2054.17904546%20-20.35057152%2055.67058205%20-20.30664062%2057.16210938%20C-20.20089527%2060.77464429%20-20.09928034%2064.38728094%20-20%2068%20C-19.05898438%2068.29648437%20-18.11796875%2068.59296875%20-17.1484375%2068.8984375%20C-14.2055568%2069.92808062%20-12.3554191%2071.00695307%20-10%2073%20C-14.03645882%2073.31658501%20-16.32333195%2073.4210379%20-19.8125%2071.25%20C-23.0830854%2067.88596931%20-24.25459399%2065.28097814%20-24.22705078%2060.59863281%20C-24.22689972%2059.7380426%20-24.22674866%2058.87745239%20-24.22659302%2057.99078369%20C-24.21627045%2057.07085632%20-24.20594788%2056.15092896%20-24.1953125%2055.203125%20C-24.1924826%2054.25435486%20-24.18965271%2053.30558472%20-24.18673706%2052.32806396%20C-24.17555448%2049.30191361%20-24.1504533%2046.2760607%20-24.125%2043.25%20C-24.11496772%2041.19661886%20-24.1058423%2039.14323308%20-24.09765625%2037.08984375%20C-24.07732418%2032.05968942%20-24.03817166%2027.03017714%20-24%2022%20C-16.08%2022%20-8.16%2022%200%2022%20C0%2014.74%200%207.48%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(700,468)'/%3e%3cpath%20d='M0%200%20C4.62%200%209.24%200%2014%200%20C14.01458252%201.31081543%2014.02916504%202.62163086%2014.04418945%203.97216797%20C14.10252455%208.87396394%2014.17975352%2013.77531735%2014.26245117%2018.67675781%20C14.29553574%2020.7909421%2014.32361796%2022.90521123%2014.34643555%2025.01953125%20C14.38028608%2028.07328159%2014.43261545%2031.12626594%2014.48828125%2034.1796875%20C14.49467117%2035.11239471%2014.5010611%2036.04510193%2014.50764465%2037.006073%20C14.73562636%2047.37399184%2017.36275127%2057.05256773%2024.6328125%2064.72265625%20C32.92807918%2072.29255208%2042.09690889%2073.40300166%2053.015625%2073.2109375%20C63.64372477%2072.64827339%2071.9753421%2069.49041118%2081%2064%20C81.66%2063.67%2082.32%2063.34%2083%2063%20C82.17631135%2066.60363786%2080.73164913%2068.5598772%2077.8125%2070.6875%20C69.36448472%2075.51927852%2058.57412865%2075.15231016%2049.0625%2075.25%20C48.03491577%2075.2641394%2048.03491577%2075.2641394%2046.98657227%2075.27856445%20C42.010662%2075.24659412%2037.7517971%2074.33793617%2033%2073%20C32.67%2073.66%2032.34%2074.32%2032%2075%20C32%2074.34%2032%2073.68%2032%2073%20C31.2575%2072.731875%2030.515%2072.46375%2029.75%2072.1875%20C27.10938051%2071.04723249%2025.14447156%2069.90619694%2023%2068%20C23%2067.34%2023%2066.68%2023%2066%20C21.68%2065.67%2020.36%2065.34%2019%2065%20C18.67%2063.68%2018.34%2062.36%2018%2061%20C17.34%2061%2016.68%2061%2016%2061%20C12.6082286%2048.17092103%2012.64622924%2035.75435973%2012.8125%2022.5625%20C12.82758403%2020.4629003%2012.84126581%2018.36329003%2012.85351562%2016.26367188%20C12.8862035%2011.17551518%2012.9377776%206.0878777%2013%201%20C8.71%201%204.42%201%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(633,490)'/%3e%3cpath%20d='M0%200%20C0.81434143%202.85160391%201.11881242%205.36626131%201.09765625%208.328125%20C1.09443359%209.12734375%201.09121094%209.9265625%201.08789062%2010.75%20C1.07951172%2011.575%201.07113281%2012.4%201.0625%2013.25%20C1.05798828%2014.09046875%201.05347656%2014.9309375%201.04882812%2015.796875%20C1.03707961%2017.86461401%201.01914522%2019.93231624%201%2022%20C1.99%2022%202.98%2022%204%2022%20C4%2028.27%204%2034.54%204%2041%20C-5.24%2041%20-14.48%2041%20-24%2041%20C-24%2040.67%20-24%2040.34%20-24%2040%20C-22.35%2040%20-20.7%2040%20-19%2040%20C-19%2028.12%20-19%2016.24%20-19%204%20C-18.34%203.67%20-17.68%203.34%20-17%203%20C-17%2015.21%20-17%2027.42%20-17%2040%20C-11.72%2040%20-6.44%2040%20-1%2040%20C-1.00523682%2038.82381104%20-1.01047363%2037.64762207%20-1.01586914%2036.43579102%20C-1.03391663%2032.08797969%20-1.04543108%2027.7401717%20-1.05493164%2023.39233398%20C-1.05997244%2021.5075627%20-1.06680498%2019.62279535%20-1.07543945%2017.73803711%20C-1.08751617%2015.03498364%20-1.09323068%2012.33198169%20-1.09765625%209.62890625%20C-1.10281754%208.78099014%20-1.10797882%207.93307404%20-1.11329651%207.0594635%20C-1.11349195%205.03928932%20-1.06206211%203.01922066%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(369,521)'/%3e%3cpath%20d='M0%200%20C7.92%200%2015.84%200%2024%200%20C24%207.26%2024%2014.52%2024%2022%20C11.625%2022.495%2011.625%2022.495%20-1%2023%20C-1.33%2036.2%20-1.66%2049.4%20-2%2063%20C-2.33%2063%20-2.66%2063%20-3%2063%20C-4.13448821%2053.55756734%20-4.00188302%2044.23836711%20-3.6875%2034.75%20C-3.65277588%2033.53530029%20-3.61805176%2032.32060059%20-3.58227539%2031.0690918%20C-3.5383667%2029.92738525%20-3.49445801%2028.78567871%20-3.44921875%2027.609375%20C-3.41143311%2026.57780273%20-3.37364746%2025.54623047%20-3.3347168%2024.48339844%20C-3%2022%20-3%2022%20-1%2020%20C1.15478516%2019.68115234%201.15478516%2019.68115234%203.7890625%2019.5859375%20C5.20058594%2019.52792969%205.20058594%2019.52792969%206.640625%2019.46875%20C7.62546875%2019.4378125%208.6103125%2019.406875%209.625%2019.375%20C11.11386719%2019.31699219%2011.11386719%2019.31699219%2012.6328125%2019.2578125%20C15.08835385%2019.1633686%2017.5438841%2019.07780125%2020%2019%20C19.98839844%2018.18015625%2019.97679687%2017.3603125%2019.96484375%2016.515625%20C19.95582031%2015.43796875%2019.94679688%2014.3603125%2019.9375%2013.25%20C19.92589844%2012.18265625%2019.91429687%2011.1153125%2019.90234375%2010.015625%20C19.98489913%207.46631499%2020.25382442%205.42066409%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C6.96345149%205.39532832%206.9764649%2010.29708307%206.5625%2015.75%20C6.15134315%2021.36947121%206.15134315%2021.36947121%206%2027%20C4.94140625%2029.04296875%204.94140625%2029.04296875%203.5625%2031.1875%20C2.88380859%2032.26064453%202.88380859%2032.26064453%202.19140625%2033.35546875%20C1.79824219%2033.89816406%201.40507812%2034.44085938%201%2035%20C0.67%2035%200.34%2035%200%2035%20C0%2023.45%200%2011.9%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(345,472)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%2025.74%201%2051.48%201%2078%20C0.01%2077.67%20-0.98%2077.34%20-2%2077%20C-1.83734146%2076.29841263%20-1.67468292%2075.59682526%20-1.50709534%2074.87397766%20C-0.97453003%2071.8556482%20-0.87991379%2069.08025882%20-0.88647461%2066.01635742%20C-0.88655014%2064.83551071%20-0.88662567%2063.654664%20-0.88670349%2062.43803406%20C-0.89186478%2061.17328751%20-0.89702606%2059.90854095%20-0.90234375%2058.60546875%20C-0.9037587%2057.30297684%20-0.90517365%2056.00048492%20-0.90663147%2054.65852356%20C-0.91043645%2051.20783546%20-0.92024936%2047.75718992%20-0.93133545%2044.30651855%20C-0.94159311%2040.78052343%20-0.9461384%2037.25452139%20-0.95117188%2033.72851562%20C-0.96187356%2026.81899301%20-0.97892557%2019.90949855%20-1%2013%20C-1.99%2012.67%20-2.98%2012.34%20-4%2012%20C-3.649375%2011.236875%20-3.29875%2010.47375%20-2.9375%209.6875%20C-1.67639116%206.95240621%20-1.67639116%206.95240621%20-3%204%20C-1.625%201.8125%20-1.625%201.8125%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(929,483)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C3.78043103%208.12172411%203%2015.65909482%203%2023%20C-16.47%2023%20-35.94%2023%20-56%2023%20C-56%2022.67%20-56%2022.34%20-56%2022%20C-28.775%2021.505%20-28.775%2021.505%20-1%2021%20C-1.66%2018.03%20-2.32%2015.06%20-3%2012%20C-2.70676058%207.60140869%20-1.82135506%204.00698114%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(811,500)'/%3e%3cpath%20d='M0%200%20C10.89%200%2021.78%200%2033%200%20C32%202%2032%202%2028.9375%203.125%20C27.968125%203.41375%2026.99875%203.7025%2026%204%20C26%204.33%2026%204.66%2026%205%20C22.9166866%205.02911321%2019.83340875%205.04683682%2016.75%205.0625%20C15.87730469%205.07087891%2015.00460938%205.07925781%2014.10546875%205.08789062%20C13.26113281%205.09111328%2012.41679687%205.09433594%2011.546875%205.09765625%20C10.38430176%205.10551147%2010.38430176%205.10551147%209.19824219%205.11352539%20C6.99642569%204.99981541%205.11528675%204.60281778%203%204%20C2.2575%203.814375%201.515%203.62875%200.75%203.4375%20C0.1725%203.293125%20-0.405%203.14875%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(127,456)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.00808685%200.61085953%201.01617371%201.22171906%201.02450562%201.85108948%20C1.11077125%208.22686062%201.21028396%2014.60232871%201.31738281%2020.9777832%20C1.355592%2023.35500995%201.39045875%2025.73229292%201.421875%2028.10961914%20C1.46770039%2031.53291881%201.52566668%2034.95583411%201.5859375%2038.37890625%20C1.60326431%2039.9652462%201.60326431%2039.9652462%201.62094116%2041.58363342%20C1.73033867%2047.09218328%202.17067468%2051.79123684%204%2057%20C4.66%2057%205.32%2057%206%2057%20C6.061875%2057.61875%206.12375%2058.2375%206.1875%2058.875%20C6.80875315%2061.2501999%206.80875315%2061.2501999%209.375%2062.0625%20C10.24125%2062.371875%2011.1075%2062.68125%2012%2063%20C13.6875%2064.5625%2013.6875%2064.5625%2015%2066%20C15.66%2066.33%2016.32%2066.66%2017%2067%20C17.625%2069.0625%2017.625%2069.0625%2018%2071%20C11.64674292%2069.72934858%207.98595005%2065.83583279%204%2061%20C-0.20320088%2054.43626224%20-1.13694835%2048.50999461%20-1.09375%2040.75%20C-1.09016479%2040.05398682%20-1.08657959%2039.35797363%20-1.08288574%2038.64086914%20C-1.02339219%2030.75687156%20-0.77025329%2022.87906229%20-0.5%2015%20C-0.4515835%2013.53125787%20-0.40340556%2012.06250786%20-0.35546875%2010.59375%20C-0.23971031%207.06240545%20-0.12078988%203.53117647%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(649,490)'/%3e%3cpath%20d='M0%200%20C6.93%200%2013.86%200%2021%200%20C21%200.66%2021%201.32%2021%202%20C23.475%202.99%2023.475%202.99%2026%204%20C26%204.33%2026%204.66%2026%205%20C14.78%205%203.56%205%20-8%205%20C-4%203%20-4%203%20-1%202%20C-0.67%201.34%20-0.34%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(132,539)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.0093457%201.27117676%201.01869141%202.54235352%201.02832031%203.85205078%20C1.0682865%208.58238362%201.13406414%2013.31207062%201.20751953%2018.04199219%20C1.23569066%2020.08650395%201.25692435%2022.13112384%201.27099609%2024.17578125%20C1.29247887%2027.12035322%201.3391569%2030.06363041%201.390625%2033.0078125%20C1.39246796%2034.3722197%201.39246796%2034.3722197%201.39434814%2035.76419067%20C1.52438447%2041.4384366%202.24925859%2044.66233702%206%2049%20C8.30476633%2050.12133721%208.30476633%2050.12133721%2010.75%2050.375%20C11.54921875%2050.50648438%2012.3484375%2050.63796875%2013.171875%2050.7734375%20C13.77515625%2050.84820313%2014.3784375%2050.92296875%2015%2051%20C15%2051.33%2015%2051.66%2015%2052%20C13.22992286%2052.08114106%2011.45877902%2052.13925505%209.6875%2052.1875%20C8.70136719%2052.22230469%207.71523438%2052.25710938%206.69921875%2052.29296875%20C4%2052%204%2052%202.20703125%2050.67578125%20C1%2049%201%2049%200%2046%20C-0.66%2045.34%20-1.32%2044.68%20-2%2044%20C-2.20927429%2042.1337738%20-2.20927429%2042.1337738%20-2.15112305%2039.84155273%20C-2.13417892%2038.98403915%20-2.1172348%2038.12652557%20-2.09977722%2037.24302673%20C-2.07071793%2036.31591385%20-2.04165863%2035.38880096%20-2.01171875%2034.43359375%20C-1.98906448%2033.48436539%20-1.96641022%2032.53513702%20-1.94306946%2031.55714417%20C-1.8930653%2029.54879358%20-1.83809315%2027.54056154%20-1.77856445%2025.5324707%20C-1.68777846%2022.4469639%20-1.61311485%2019.36138491%20-1.54101562%2016.27539062%20C-1.49053325%2014.32810014%20-1.43913222%2012.38083321%20-1.38671875%2010.43359375%20C-1.36373215%209.50445663%20-1.34074554%208.57531952%20-1.31706238%207.61802673%20C-1.29066177%206.76366531%20-1.26426117%205.90930389%20-1.23706055%205.02905273%20C-1.21548386%204.27341537%20-1.19390717%203.51777802%20-1.17167664%202.73924255%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(675,490)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%2014.85%201%2029.7%201%2045%20C-1%2043%20-1%2043%20-1.125%2040.72265625%20C-1.04178877%2038.95181718%20-0.95845579%2037.18098382%20-0.875%2035.41015625%20C-0.80800597%2032.73455911%20-0.80800597%2032.73455911%20-3%2030%20C-2.505%2028.515%20-2.505%2028.515%20-2%2027%20C-2.31050297%2025.32892945%20-2.64717051%2023.66264856%20-3%2022%20C-3.09035285%2020.00160753%20-3.13010313%2018.00042747%20-3.125%2016%20C-3.12757813%2014.989375%20-3.13015625%2013.97875%20-3.1328125%2012.9375%20C-3.00826727%2010.18285256%20-2.62110865%207.68161197%20-2%205%20C-1.34%205%20-0.68%205%200%205%20C0%203.35%200%201.7%200%200%20Z%20'%20fill='%23FFFFFF'%20transform='translate(901,431)'/%3e%3cpath%20d='M0%200%20C2.57069617%203.85604425%202.35065056%207.12746343%202.4140625%2011.60546875%20C2.43342865%2012.44467361%202.4527948%2013.28387848%202.4727478%2014.14851379%20C2.53251213%2016.82807258%202.57891612%2019.5076744%202.625%2022.1875%20C2.6631827%2024.00457599%202.70223461%2025.82163394%202.7421875%2027.63867188%20C2.83821103%2032.09230132%202.92225359%2036.54601551%203%2041%20C3.94101562%2041.29648437%204.88203125%2041.59296875%205.8515625%2041.8984375%20C8.7944432%2042.92808062%2010.6445809%2044.00695307%2013%2046%20C8.86001651%2046.32470459%206.66000999%2046.4304413%203.125%2044.125%20C0.12481839%2041.12481839%200.01401021%2040.48116775%20-0.11352539%2036.10107422%20C-0.11336671%2034.418937%20-0.10769737%2032.73679475%20-0.09765625%2031.0546875%20C-0.0962413%2030.1696756%20-0.09482635%2029.2846637%20-0.09336853%2028.37283325%20C-0.0877614%2025.54018809%20-0.07520771%2022.70762136%20-0.0625%2019.875%20C-0.05748592%2017.95703239%20-0.05292285%2016.03906354%20-0.04882812%2014.12109375%20C-0.03778966%209.41403218%20-0.02052025%204.7070294%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(677,495)'/%3e%3cpath%20d='M0%200%20C0.82200425%206.24723226%20-2.07448606%2010.71317837%20-5%2016%20C-6.95100616%2014.37586398%20-7.92782782%2013.56206818%20-8.2578125%2010.9921875%20C-8.21398437%2010.29351562%20-8.17015625%209.59484375%20-8.125%208.875%20C-8.08375%207.59625%20-8.0425%206.3175%20-8%205%20C-8.98267859%203.79438816%20-8.98267859%203.79438816%20-10.84765625%203.90234375%20C-12.8984375%203.93489583%20-14.94921875%203.96744792%20-17%204%20C-17%203.01%20-17%202.02%20-17%201%20C-14.3541898%200.832959%20-11.70835369%200.66634934%20-9.0625%200.5%20C-8.30775391%200.45230469%20-7.55300781%200.40460938%20-6.77539062%200.35546875%20C-1.11328125%200%20-1.11328125%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(369,467)'/%3e%3cpath%20d='M0%200%20C4.29%200%208.58%200%2013%200%20C13.02505615%201.34747314%2013.0501123%202.69494629%2013.07592773%204.08325195%20C13.17000223%209.07602678%2013.27022294%2014.06866249%2013.37231445%2019.0612793%20C13.41566313%2021.2233556%2013.45733825%2023.38546613%2013.49731445%2025.54760742%20C13.55501844%2028.65293702%2013.61871272%2031.75809436%2013.68359375%2034.86328125%20C13.70030624%2035.83211746%2013.71701874%2036.80095367%2013.73423767%2037.79914856%20C13.75418289%2038.6998558%2013.77412811%2039.60056305%2013.79467773%2040.52856445%20C13.81022202%2041.32132278%2013.8257663%2042.11408112%2013.84178162%2042.93086243%20C13.93081226%2045.19739774%2013.93081226%2045.19739774%2015%2048%20C15.12781786%2050.67394964%2015.04391871%2053.32095857%2015%2056%20C14.67%2056%2014.34%2056%2014%2056%20C13.29066112%2053.54623548%2012.60781467%2051.08945724%2011.9375%2048.625%20C11.73833984%2047.94566406%2011.53917969%2047.26632812%2011.33398438%2046.56640625%20C10.04560625%2041.72933752%2010.02964032%2037.78697173%2010.67358398%2032.84228516%20C11.33901124%2027.04804123%2011.37950304%2021.20090331%2011.5625%2015.375%20C11.60568359%2014.08464844%2011.64886719%2012.79429687%2011.69335938%2011.46484375%20C11.79852148%208.30998067%2011.90066604%205.15505105%2012%202%20C11.25363281%202.17402344%2010.50726562%202.34804688%209.73828125%202.52734375%20C6.30488867%203.11998355%203.41085419%202.60191545%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(633,491)'/%3e%3cpath%20d='M0%200%20C7.26%200%2014.52%200%2022%200%20C21.34%200.66%2020.68%201.32%2020%202%20C20.33%202.66%2020.66%203.32%2021%204%20C14.73%204%208.46%204%202%204%20C2%206.64%202%209.28%202%2012%20C1.34%2012.66%200.68%2013.32%200%2014%20C0.01160156%2013.30132812%200.02320313%2012.60265625%200.03515625%2011.8828125%20C0.04417969%2010.97273438%200.05320313%2010.06265625%200.0625%209.125%20C0.07410156%208.22007812%200.08570313%207.31515625%200.09765625%206.3828125%20C0.16249257%203.9831415%200.16249257%203.9831415%20-1%202%20C-0.67%201.34%20-0.34%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(230,468)'/%3e%3cpath%20d='M0%200%20C3.26587942%200.14550948%206.38789358%200.49324673%209.5625%201.3125%20C9.2325%202.3025%208.9025%203.2925%208.5625%204.3125%20C9.2225%204.6425%209.8825%204.9725%2010.5625%205.3125%20C9.5625%206.3125%209.5625%206.3125%206.87866211%206.42602539%20C5.71085205%206.42078857%204.54304199%206.41555176%203.33984375%206.41015625%20C2.07978516%206.40693359%200.81972656%206.40371094%20-0.47851562%206.40039062%20C-1.81901109%206.39203403%20-3.15950588%206.38356907%20-4.5%206.375%20C-5.84439942%206.3699866%20-7.1888006%206.36542342%20-8.53320312%206.36132812%20C-11.83467941%206.34949488%20-15.13606803%206.33300971%20-18.4375%206.3125%20C-15.4375%204.3125%20-15.4375%204.3125%20-12%204.4375%20C-8.38721028%204.72990718%20-8.38721028%204.72990718%20-6.5625%202.3125%20C-4.04895307%20-0.05319123%20-3.34014743%200.01650814%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(584.4375,465.6875)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%200.66%204%201.32%204%202%20C4.73605469%201.855625%205.47210937%201.71125%206.23046875%201.5625%20C7.20628906%201.376875%208.18210937%201.19125%209.1875%201%20C10.15042969%200.814375%2011.11335937%200.62875%2012.10546875%200.4375%20C18.83937824%20-0.58031088%2018.83937824%20-0.58031088%2022%201%20C22.99%200.67%2023.98%200.34%2025%200%20C25.33%200.33%2025.66%200.66%2026%201%20C27.99964982%201.08758003%2030.0023611%201.10696576%2032.00390625%201.09765625%20C33.82631836%201.09282227%2033.82631836%201.09282227%2035.68554688%201.08789062%20C36.96494141%201.07951172%2038.24433594%201.07113281%2039.5625%201.0625%20C41.48739258%201.05573242%2041.48739258%201.05573242%2043.45117188%201.04882812%20C46.63416022%201.03699545%2049.81705762%201.02051068%2053%201%20C53.495%201.99%2053.495%201.99%2054%203%20C36.18%203%2018.36%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(731,509)'/%3e%3cpath%20d='M0%200%20C3.3%200%206.6%200%2010%200%20C10%200.33%2010%200.66%2010%201%20C7.69%201.33%205.38%201.66%203%202%20C3%204.64%203%207.28%203%2010%20C3.66%209.67%204.32%209.34%205%209%20C6.44848582%208.91657841%207.90070869%208.89267139%209.3515625%208.90234375%20C10.20234375%208.90556641%2011.053125%208.90878906%2011.9296875%208.91210938%20C12.81914063%208.92048828%2013.70859375%208.92886719%2014.625%208.9375%20C15.5221875%208.94201172%2016.419375%208.94652344%2017.34375%208.95117188%20C19.56256648%208.96297409%2021.78125018%208.97943845%2024%209%20C24%209.99%2024%2010.98%2024%2012%20C16.08%2012%208.16%2012%200%2012%20C0%208.04%200%204.08%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(676,456)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.02893932%203.62498334%201.04677792%207.24993713%201.0625%2010.875%20C1.07087891%2011.90753906%201.07925781%2012.94007813%201.08789062%2014.00390625%20C1.09111328%2014.99003906%201.09433594%2015.97617187%201.09765625%2016.9921875%20C1.10289307%2017.90339355%201.10812988%2018.81459961%201.11352539%2019.75341797%20C1%2022%201%2022%200%2024%20C-0.99%2023.67%20-1.98%2023.34%20-3%2023%20C-5.01862148%2017.75866703%20-4.98056566%2010.73616357%20-3.10546875%205.50390625%20C-2.15670432%203.62314001%20-1.08879621%201.80331872%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(831,508)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C5.67%200.99%205.34%201.98%205%203%20C5.99%203.33%206.98%203.66%208%204%20C7.34%204%206.68%204%206%204%20C6.66%205.65%207.32%207.3%208%209%20C9.65%208.67%2011.3%208.34%2013%208%20C13.33%209.32%2013.66%2010.64%2014%2012%20C16.31%2012%2018.62%2012%2021%2012%20C21%2011.34%2021%2010.68%2021%2010%20C21.66%2010%2022.32%2010%2023%2010%20C23.33%2010.99%2023.66%2011.98%2024%2013%20C18.94576102%2014.68474633%2014.71544468%2014.58019314%209.875%2012.375%20C5.29909504%209.86935884%201.9168134%206.67991608%200.1875%201.625%20C0.125625%201.08875%200.06375%200.5525%200%200%20Z%20'%20fill='%236F9300'%20transform='translate(690,541)'/%3e%3cpath%20d='M0%200%20C6.93%200.33%2013.86%200.66%2021%201%20C20.34%201.66%2019.68%202.32%2019%203%20C19.33%203.66%2019.66%204.32%2020%205%20C17.10410348%205.02706445%2014.20846205%205.04687029%2011.3125%205.0625%20C10.08756836%205.07506836%2010.08756836%205.07506836%208.83789062%205.08789062%20C4.75500916%205.10442051%200.98348293%205.03035098%20-3%204%20C-2.34%203.67%20-1.68%203.34%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(241,593)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%208.25%201%2016.5%201%2025%20C0.34%2025%20-0.32%2025%20-1%2025%20C-3.52775351%2021.20836973%20-3.22443035%2018.19125969%20-3.125%2013.8125%20C-3.11597656%2013.06291016%20-3.10695312%2012.31332031%20-3.09765625%2011.54101562%20C-3.07412578%209.69387346%20-3.03825561%207.84689588%20-3%206%20C-2.67%206%20-2.34%206%20-2%206%20C-1.34%204.02%20-0.68%202.04%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(191,487)'/%3e%3cpath%20d='M0%200%20C0.66%200.66%201.32%201.32%202%202%20C1.525625%202.845625%201.05125%203.69125%200.5625%204.5625%20C-1.69167803%209.67126796%20-1.51097377%2015.18235336%20-1.69140625%2020.671875%20C-2%2024%20-2%2024%20-4%2027%20C-4.39387788%2029.32387947%20-4.73486085%2031.65793749%20-5%2034%20C-5.33%2034%20-5.66%2034%20-6%2034%20C-6.52846015%2021.74266038%20-5.86678537%2011.12575063%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(832,489)'/%3e%3cpath%20d='M0%200%20C0.98742187%200.16242187%201.97484375%200.32484375%202.9921875%200.4921875%20C7.03537925%201.06688527%2011.04640663%201.15126811%2015.125%201.125%20C15.858396%201.12306641%2016.59179199%201.12113281%2017.34741211%201.11914062%20C23.93030125%201.06771738%2030.4468302%200.63822175%2037%200%20C33.42278921%202.9386979%2031.63341748%203.18911908%2027%203%20C22.9008693%203.63063549%2018.97489026%204.83091463%2015%206%20C15%205.34%2015%204.68%2015%204%20C13.02%204.66%2011.04%205.32%209%206%20C8.67%205.34%208.34%204.68%208%204%20C6.8553125%204.12375%206.8553125%204.12375%205.6875%204.25%20C3%204%203%204%201.1875%202%20C0.5996875%201.01%200.5996875%201.01%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(667,563)'/%3e%3cpath%20d='M0%200%20C-1.70577342%200.65256456%20-3.41476089%201.29673041%20-5.125%201.9375%20C-6.07632813%202.29714844%20-7.02765625%202.65679688%20-8.0078125%203.02734375%20C-18.08362171%206.30263943%20-29.94180625%206.28430816%20-40%203%20C-37.09031691%202.16087482%20-34.5469594%201.89148572%20-31.5234375%201.9375%20C-30.27046875%201.94910156%20-30.27046875%201.94910156%20-28.9921875%201.9609375%20C-28.12851562%201.97382812%20-27.26484375%201.98671875%20-26.375%202%20C-24.65370809%202.0254629%20-22.93234349%202.04651171%20-21.2109375%202.0625%20C-20.45087402%202.07410156%20-19.69081055%202.08570313%20-18.90771484%202.09765625%20C-16.91256704%202.12332635%20-16.91256704%202.12332635%20-15%201%20C-12.70190464%200.69130062%20-10.40279871%200.49116352%20-8.09375%200.28125%20C-1.8556701%20-0.55670103%20-1.8556701%20-0.55670103%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(707,559)'/%3e%3cpath%20d='M0%200%20C9.57%200%2019.14%200%2029%200%20C29%200.33%2029%200.66%2029%201%20C21.41%201%2013.82%201%206%201%20C6.33%202.32%206.66%203.64%207%205%20C6.87890625%207.359375%206.87890625%207.359375%206.5625%209.75%20C6.46066406%2010.54921875%206.35882813%2011.3484375%206.25390625%2012.171875%20C6.12822266%2013.07679688%206.12822266%2013.07679688%206%2014%20C4.31821339%2011.47732009%203.09893258%209.18908177%201.875%206.4375%20C1.52179688%205.65246094%201.16859375%204.86742187%200.8046875%204.05859375%20C0%202%200%202%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(224,467)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%207.59%201%2015.18%201%2023%20C0.01%2023%20-0.98%2023%20-2%2023%20C-3.53887884%208.19349005%20-3.53887884%208.19349005%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(372,520)'/%3e%3cpath%20d='M0%200%20C6.93%200%2013.86%200%2021%200%20C19.02%200.99%2019.02%200.99%2017%202%20C16.37609375%202.53238281%2015.7521875%203.06476563%2015.109375%203.61328125%20C12.34672115%205.42947035%2010.52244363%205.30437299%207.25%205.1875%20C5.77273438%205.14689453%205.77273438%205.14689453%204.265625%205.10546875%20C3.14414062%205.05326172%203.14414062%205.05326172%202%205%20C2.33%204.01%202.66%203.02%203%202%20C2.01%201.34%201.02%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(454,466)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.97%201%205.94%201%209%20C2.32451172%208.87431641%202.32451172%208.87431641%203.67578125%208.74609375%20C11.27709596%208.10108423%2018.43413122%207.99636435%2026%209%20C26%209.66%2026%2010.32%2026%2011%20C17.42%2011%208.84%2011%200%2011%20C0%207.37%200%203.74%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(904,552)'/%3e%3cpath%20d='M0%200%20C1.28132812%200.00902344%202.56265625%200.01804687%203.8828125%200.02734375%20C4.87023437%200.03894531%205.85765625%200.05054688%206.875%200.0625%20C6.875%200.7225%206.875%201.3825%206.875%202.0625%20C7.535%202.3925%208.195%202.7225%208.875%203.0625%20C7.875%204.0625%207.875%204.0625%204.27734375%204.16015625%20C2.78903133%204.1534822%201.30073568%204.14152183%20-0.1875%204.125%20C-0.94611328%204.12048828%20-1.70472656%204.11597656%20-2.48632812%204.11132812%20C-4.36591871%204.0995068%20-6.24546899%204.08157078%20-8.125%204.0625%20C-8.455%203.0725%20-8.785%202.0825%20-9.125%201.0625%20C-6.12186252%20-0.43906874%20-3.33432478%20-0.03031204%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(874.125,559.9375)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.97%201%205.94%201%209%20C3.31%209%205.62%209%208%209%20C6.47291037%2012.43595166%204.40072955%2015.11912454%202%2018%20C1.01%2017.67%200.02%2017.34%20-1%2017%20C-0.67%2011.39%20-0.34%205.78%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(351,479)'/%3e%3cpath%20d='M0%200%20C6.6%200%2013.2%200%2020%200%20C20%200.99%2020%201.98%2020%203%20C15.38%203.33%2010.76%203.66%206%204%20C6%203.67%206%203.34%206%203%20C3.03%202.505%203.03%202.505%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(384,488)'/%3e%3cpath%20d='M0%200%20C14.7664042%20-0.22834646%2014.7664042%20-0.22834646%2022%201%20C23%202%2023%202%2023.09765625%204.50390625%20C23.08605469%205.51324219%2023.07445312%206.52257812%2023.0625%207.5625%20C23.05347656%208.57441406%2023.04445313%209.58632813%2023.03515625%2010.62890625%20C23.02355469%2011.41136719%2023.01195312%2012.19382812%2023%2013%20C22.67%2013%2022.34%2013%2022%2013%20C21.505%208.05%2021.505%208.05%2021%203%20C20.01966797%203.29197266%2020.01966797%203.29197266%2019.01953125%203.58984375%20C15.00486508%204.13517357%2011.62136988%203.38864783%207.6875%202.5625%20C6.94693359%202.41490234%206.20636719%202.26730469%205.44335938%202.11523438%20C3.62718357%201.75199921%201.81333589%201.37715682%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%23B6FF2E'%20transform='translate(676,468)'/%3e%3cpath%20d='M0%200%20C5.61%200.33%2011.22%200.66%2017%201%20C14%204%2014%204%2010.64453125%204.29296875%20C9.37996094%204.25816406%208.11539063%204.22335937%206.8125%204.1875%20C5.54019531%204.16042969%204.26789062%204.13335938%202.95703125%204.10546875%20C1.98121094%204.07066406%201.00539063%204.03585937%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(569,540)'/%3e%3cpath%20d='M0%200%20C6.27%200%2012.54%200%2019%200%20C18.01%200.495%2018.01%200.495%2017%201%20C17%201.66%2017%202.32%2017%203%20C11.39%203%205.78%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(761,523)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.33%209.24%201.66%2018.48%202%2028%20C2.99%2028.33%203.98%2028.66%205%2029%20C3.69593116%2031.01920337%202.36176581%2033.01924973%201%2035%20C0.67%2035%200.34%2035%200%2035%20C0%2023.45%200%2011.9%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(345,472)'/%3e%3cpath%20d='M0%200%20C0%201.65%200%203.3%200%205%20C-1.134375%205.28875%20-2.26875%205.5775%20-3.4375%205.875%20C-4.613125%206.24625%20-5.78875%206.6175%20-7%207%20C-8.2981424%209.2236068%20-8.2981424%209.2236068%20-8%2013%20C-8.66%2013%20-9.32%2013%20-10%2013%20C-11%2010.4375%20-11%2010.4375%20-11%207%20C-7.98890645%203.33845177%20-4.8796426%200%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(736,475)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%200.66%202%201.32%202%202%20C3.36125%202.37125%203.36125%202.37125%204.75%202.75%20C8.13493865%204.05189948%209.60793414%205.35164137%2012%208%20C12.66%208.33%2013.32%208.66%2014%209%20C14.625%2011.0625%2014.625%2011.0625%2015%2013%20C8.7298413%2011.74596826%204.95911962%207.77173128%201%203%20C0.67%202.01%200.34%201.02%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(652,548)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%204.62%201%209.24%201%2014%20C0.01%2014.495%200.01%2014.495%20-1%2015%20C-1%2014.01%20-1%2013.02%20-1%2012%20C-1.99%2012%20-2.98%2012%20-4%2012%20C-3.53439347%207.25081338%20-2.83067342%203.89217595%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(287,513)'/%3e%3cpath%20d='M0%200%20C2.4375%200.8125%202.4375%200.8125%205%202%20C5.33%202.99%205.66%203.98%206%205%20C7.49985609%206.66710346%207.49985609%206.66710346%209%208%20C5.68585212%2012.10954337%203.12159208%2012.43093421%20-2%2013%20C-2.66%2013.66%20-3.32%2014.32%20-4%2015%20C-3.67%2013.35%20-3.34%2011.7%20-3%2010%20C1.455%209.505%201.455%209.505%206%209%20C5.566875%208.43410156%205.13375%207.86820312%204.6875%207.28515625%20C3.8521875%206.18494141%203.8521875%206.18494141%203%205.0625%20C2.1646875%203.96615234%202.1646875%203.96615234%201.3125%202.84765625%20C0%201%200%201%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(682,447)'/%3e%3cpath%20d='M0%200%20C2.31%200%204.62%200%207%200%20C6.67%201.32%206.34%202.64%206%204%20C-1.26%204%20-8.52%204%20-16%204%20C-16%203.67%20-16%203.34%20-16%203%20C-11.05%203%20-6.1%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(472,560)'/%3e%3cpath%20d='M0%200%20C3.63%200%207.26%200%2011%200%20C9%204%209%204%207.25%204.8125%20C4.36824559%205.0526462%201.82252185%204.57733402%20-1%204%20C-0.67%202.68%20-0.34%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(449,506)'/%3e%3cpath%20d='M0%200%20C3.3%200.33%206.6%200.66%2010%201%20C10.33%202.32%2010.66%203.64%2011%205%20C9.58376784%205.05447047%208.16691809%205.09300508%206.75%205.125%20C5.96109375%205.14820313%205.1721875%205.17140625%204.359375%205.1953125%20C1.79268059%204.9828378%200.2083933%204.28654105%20-2%203%20C-1.34%202.01%20-0.68%201.02%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(760,537)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%201.99%201.34%202.98%201%204%20C1.74765625%203.97679687%202.4953125%203.95359375%203.265625%203.9296875%20C4.25046875%203.91164063%205.2353125%203.89359375%206.25%203.875%20C7.22453125%203.85179687%208.1990625%203.82859375%209.203125%203.8046875%20C12%204%2012%204%2016%206%20C9.73%206%203.46%206%20-3%206%20C-3%204.68%20-3%203.36%20-3%202%20C-2.01%202%20-1.02%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(447,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.22212255%202.74951693%201.42815588%205.49865612%201.625%208.25%20C1.68945312%209.02730469%201.75390625%209.80460937%201.8203125%2010.60546875%20C2.30707097%2017.72431144%202.30707097%2017.72431144%200%2021%20C-0.86860031%2016.51223172%20-1.13464852%2012.25607233%20-1.125%207.6875%20C-1.12757813%206.45386719%20-1.13015625%205.22023438%20-1.1328125%203.94921875%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(553,496)'/%3e%3cpath%20d='M0%200%20C0%201.65%200%203.3%200%205%20C-3.63%205%20-7.26%205%20-11%205%20C-11.33%204.34%20-11.66%203.68%20-12%203%20C-10.75336669%202.49166409%20-9.50250613%201.99368855%20-8.25%201.5%20C-7.55390625%201.2215625%20-6.8578125%200.943125%20-6.140625%200.65625%20C-4%200%20-4%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(454,467)'/%3e%3cpath%20d='M0%200%20C0.98613281%200.03480469%201.97226562%200.06960938%202.98828125%200.10546875%20C3.98214844%200.13253906%204.97601563%200.15960937%206%200.1875%20C7.13888672%200.23970703%207.13888672%200.23970703%208.30078125%200.29296875%20C8.63078125%201.28296875%208.96078125%202.27296875%209.30078125%203.29296875%20C4.35078125%203.29296875%20-0.59921875%203.29296875%20-5.69921875%203.29296875%20C-2.69921875%200.29296875%20-2.69921875%200.29296875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(461.69921875,559.70703125)'/%3e%3cpath%20d='M0%200%20C0.56203125%200.30679688%201.1240625%200.61359375%201.703125%200.9296875%20C4.06346934%202.02957585%206.20465562%202.60095851%208.75%203.125%20C9.54921875%203.29257812%2010.3484375%203.46015625%2011.171875%203.6328125%20C11.77515625%203.75398437%2012.3784375%203.87515625%2013%204%20C13%204.66%2013%205.32%2013%206%20C8.126739%207.5912689%204.19209404%208.21192221%20-1%208%20C0.32%207.34%201.64%206.68%203%206%20C2.690625%205.38125%202.38125%204.7625%202.0625%204.125%20C1.375%202.75%200.6875%201.375%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(695,552)'/%3e%3cpath%20d='M0%200%20C-0.99%201.485%20-0.99%201.485%20-2%203%20C-4.8984375%203.36328125%20-4.8984375%203.36328125%20-8.375%203.3125%20C-9.51710938%203.30863281%20-10.65921875%203.30476562%20-11.8359375%203.30078125%20C-14.80057739%203.01895746%20-16.49947121%202.54589341%20-19%201%20C-12.65758005%20-0.15316726%20-6.43311296%20-0.09507063%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(884,541)'/%3e%3cpath%20d='M0%200%20C1.58323688%20-0.027193%203.16661062%20-0.04648306%204.75%20-0.0625%20C6.07257812%20-0.07990234%206.07257812%20-0.07990234%207.421875%20-0.09765625%20C9.7818838%20-0.00826198%2011.74498524%200.33087179%2014%201%20C14%201.66%2014%202.32%2014%203%20C9.05%203%204.1%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(581,560)'/%3e%3cpath%20d='M0%200%20C0%200.99%200%201.98%200%203%20C-5.28%203%20-10.56%203%20-16%203%20C-16%202.34%20-16%201.68%20-16%201%20C-10.62915894%200.31798844%20-5.41499441%20-0.11521265%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(479,541)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%205.28%201%2010.56%201%2016%20C-2.37152003%2012.62847997%20-2.82142723%2011.64289204%20-3%207%20C-2.21181089%204.49988422%20-1.17946058%202.35892116%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(247,504)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2.08082094%202.95766281%202.13910778%204.91626728%202.1875%206.875%20C2.23970703%208.51082031%202.23970703%208.51082031%202.29296875%2010.1796875%20C2.19628906%2011.11039062%202.09960938%2012.04109375%202%2013%20C1.01%2013.66%200.02%2014.32%20-1%2015%20C-1.02685412%2012.68756208%20-1.04632841%2010.3750373%20-1.0625%208.0625%20C-1.07410156%206.77472656%20-1.08570312%205.48695313%20-1.09765625%204.16015625%20C-1%201%20-1%201%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(121,466)'/%3e%3cpath%20d='M0%200%20C0%202.97%200%205.94%200%209%20C-0.99%209.495%20-0.99%209.495%20-2%2010%20C-3.32%206.7%20-4.64%203.4%20-6%200%20C-2%20-1%20-2%20-1%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(254,523)'/%3e%3cpath%20d='M0%200%20C2.64%200.33%205.28%200.66%208%201%20C7.34%202.32%206.68%203.64%206%205%20C3.69%205%201.38%205%20-1%205%20C-0.67%203.35%20-0.34%201.7%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(880,489)'/%3e%3cpath%20d='M0%200%20C1.953125%200.390625%203.90625%200.78125%205.859375%201.171875%20C5.859375%202.161875%205.859375%203.151875%205.859375%204.171875%20C1.899375%204.171875%20-2.060625%204.171875%20-6.140625%204.171875%20C-2.140625%200.171875%20-2.140625%200.171875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(780.140625,467.828125)'/%3e%3cpath%20d='M0%200%20C0.598125%200.20625%201.19625%200.4125%201.8125%200.625%20C0.8225%200.955%20-0.1675%201.285%20-1.1875%201.625%20C-1.5175%205.915%20-1.8475%2010.205%20-2.1875%2014.625%20C-2.8475%2014.295%20-3.5075%2013.965%20-4.1875%2013.625%20C-4.6015625%2010.90234375%20-4.6015625%2010.90234375%20-4.8125%207.5625%20C-4.88726563%206.45777344%20-4.96203125%205.35304688%20-5.0390625%204.21484375%20C-5.08804688%203.36019531%20-5.13703125%202.50554687%20-5.1875%201.625%20C-2.1875%20-0.375%20-2.1875%20-0.375%200%200%20Z%20'%20fill='%23C7FF57'%20transform='translate(678.1875,453.375)'/%3e%3cpath%20d='M0%200%20C3%203.75%203%203.75%203%206%20C0.03%206%20-2.94%206%20-6%206%20C-5.67%204.68%20-5.34%203.36%20-5%202%20C-2.4375%200.75%20-2.4375%200.75%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(743,538)'/%3e%3cpath%20d='M0%200%20C3.63%200%207.26%200%2011%200%20C9.515%201.98%209.515%201.98%208%204%20C4.8125%204.25%204.8125%204.25%202%204%20C1.34%202.68%200.68%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(473,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C2.62227918%205.43940666%203.3864587%209.33862697%202%2015%20C1.01%2015.495%201.01%2015.495%200%2016%20C0%2013.36%200%2010.72%200%208%20C-0.66%207.67%20-1.32%207.34%20-2%207%20C-1.125%202.25%20-1.125%202.25%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(294,496)'/%3e%3cpath%20d='M0%200%20C1.134375%200.020625%202.26875%200.04125%203.4375%200.0625%20C4.0975%202.0425%204.7575%204.0225%205.4375%206.0625%20C4.4475%206.7225%203.4575%207.3825%202.4375%208.0625%20C0.10416667%205.72916667%20-2.22916667%203.39583333%20-4.5625%201.0625%20C-3.5625%200.0625%20-3.5625%200.0625%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(594.5625,489.9375)'/%3e%3cpath%20d='M0%200%20C0%200.33%200%200.66%200%201%20C-2.31%201%20-4.62%201%20-7%201%20C-7%201.66%20-7%202.32%20-7%203%20C-7.99%203%20-8.98%203%20-10%203%20C-10%203.66%20-10%204.32%20-10%205%20C-11.65%205%20-13.3%205%20-15%205%20C-15%204.34%20-15%203.68%20-15%203%20C-15.66%202.67%20-16.32%202.34%20-17%202%20C-11.19233704%200.4943096%20-6.0018137%20-0.21824777%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(750,506)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%203.63%201%207.26%201%2011%20C0.34%209.68%20-0.32%208.36%20-1%207%20C-2.32%207.33%20-3.64%207.66%20-5%208%20C-4.67%206.35%20-4.34%204.7%20-4%203%20C-3.01%203%20-2.02%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(303,481)'/%3e%3cpath%20d='M0%200%20C4.62%200%209.24%200%2014%200%20C14%200.66%2014%201.32%2014%202%20C11%203%2011%203%208.625%202.4375%20C5.45352412%201.90892069%203.84890119%202.61624799%201%204%20C0.67%202.68%200.34%201.36%200%200%20Z%20'%20fill='%2394D600'%20transform='translate(634,469)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%202.64%201%205.28%201%208%20C-5.27%207.67%20-11.54%207.34%20-18%207%20C-18%206.67%20-18%206.34%20-18%206%20C-9.585%205.505%20-9.585%205.505%20-1%205%20C-0.67%203.35%20-0.34%201.7%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(931,557)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.34%203.31%200.68%205.62%200%208%20C-0.99%208%20-1.98%208%20-3%208%20C-3%205.69%20-3%203.38%20-3%201%20C-2.01%200.67%20-1.02%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(621,536)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.66%202.97%202.32%205.94%203%209%20C-0.96%209%20-4.92%209%20-9%209%20C-8.67%208.34%20-8.34%207.68%20-8%207%20C-5.69%207%20-3.38%207%20-1%207%20C-0.67%204.69%20-0.34%202.38%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(808,513)'/%3e%3cpath%20d='M0%200%20C0%203.73675706%20-1.26051811%205.72174568%20-3%209%20C-3.391875%209.78375%20-3.78375%2010.5675%20-4.1875%2011.375%20C-4.455625%2011.91125%20-4.72375%2012.4475%20-5%2013%20C-5.99%2013%20-6.98%2013%20-8%2013%20C-7.51294002%208.6164602%20-6.21626567%206.93247752%20-3%204%20C-1.97676564%202.68441297%20-0.96873032%201.35622245%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(648,441)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2.36923077%206.53846154%202.36923077%206.53846154%200.5%208.875%20C-0.2425%209.431875%20-0.2425%209.431875%20-1%2010%20C-1.66%209.67%20-2.32%209.34%20-3%209%20C-2.30058404%205.85262818%20-1.23921302%202.97411124%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(228,582)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2.125%205.75%202.125%205.75%201%208%20C0.34%208%20-0.32%208%20-1%208%20C-1.33%208.99%20-1.66%209.98%20-2%2011%20C-3.13643966%207.59068103%20-2.86747764%206.99664544%20-1.5625%203.8125%20C-1.13130859%202.73935547%20-1.13130859%202.73935547%20-0.69140625%201.64453125%20C-0.46324219%201.10183594%20-0.23507812%200.55914063%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(350,514)'/%3e%3cpath%20d='M0%200%20C3.3%200%206.6%200%2010%200%20C10.33%201.32%2010.66%202.64%2011%204%20C9.35%204%207.7%204%206%204%20C6%203.67%206%203.34%206%203%20C3.03%202.505%203.03%202.505%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(384,488)'/%3e%3cpath%20d='M0%200%20C0.845625%200.804375%201.69125%201.60875%202.5625%202.4375%20C5.8515158%205.21628662%208.68629604%205.74117776%2013%206%20C13%206.33%2013%206.66%2013%207%20C11.20866022%207.05391993%209.41686101%207.09275571%207.625%207.125%20C6.62726562%207.14820313%205.62953125%207.17140625%204.6015625%207.1953125%20C2%207%202%207%200%205%20C-0.125%202.375%20-0.125%202.375%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(677,535)'/%3e%3cpath%20d='M0%200%20C0.33%201.65%200.66%203.3%201%205%20C-1.97%205%20-4.94%205%20-8%205%20C-3%200%20-3%200%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(175,531)'/%3e%3cpath%20d='M0%200%20C2.97%200%205.94%200%209%200%20C9.33%200.66%209.66%201.32%2010%202%20C3.71428571%204.42857143%203.71428571%204.42857143%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(739,522)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2.33%203.63%202.66%207.26%203%2011%20C2.01%2011%201.02%2011%200%2011%20C0%207.37%200%203.74%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(304,520)'/%3e%3cpath%20d='M0%200%20C0%200.66%200%201.32%200%202%20C-4.95%202%20-9.9%202%20-15%202%20C-11.5998228%200.2999114%20-9.96676075%20-0.32111638%20-6.375%20-0.6875%20C-5.21097656%20-0.81705078%20-5.21097656%20-0.81705078%20-4.0234375%20-0.94921875%20C-2%20-1%20-2%20-1%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(507,520)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.33%202.97%201.66%205.94%202%209%20C1.01%209.33%200.02%209.66%20-1%2010%20C-2.1875%207.8125%20-2.1875%207.8125%20-3%205%20C-1.6875%202.1875%20-1.6875%202.1875%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(421,489)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%203.96%202%207.92%202%2012%20C1.01%2011.67%200.02%2011.34%20-1%2011%20C-0.67%207.37%20-0.34%203.74%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(238,488)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%200.99%204%201.98%204%203%20C4.66%203%205.32%203%206%203%20C7.0625%204.8125%207.0625%204.8125%208%207%20C7.67%207.99%207.34%208.98%207%2010%20C5.83043409%208.52312468%204.66441854%207.04343707%203.5%205.5625%20C2.8503125%204.73878906%202.200625%203.91507812%201.53125%203.06640625%20C0%201%200%201%200%200%20Z%20'%20fill='%23E8FFC2'%20transform='translate(674,437)'/%3e%3cpath%20d='M0%200%20C3.23739279%201.6186964%204.42244771%204.84489543%206%208%20C2.31245243%207.50168276%200.39509338%206.89932357%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(230,587)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1%203.3%201%206.6%201%2010%20C0.01%2010.495%200.01%2010.495%20-1%2011%20C-2.1875%208.3125%20-2.1875%208.3125%20-3%205%20C-1.6875%202.125%20-1.6875%202.125%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(533,527)'/%3e%3cpath%20d='M0%200%20C0.33%200%200.66%200%201%200%20C1.22151549%201.79008467%201.42682213%203.58218162%201.625%205.375%20C1.74101563%206.37273438%201.85703125%207.37046875%201.9765625%208.3984375%20C1.98429688%209.25695312%201.99203125%2010.11546875%202%2011%20C1.34%2011.66%200.68%2012.32%200%2013%20C-0.66%2010.03%20-1.32%207.06%20-2%204%20C-1.34%204%20-0.68%204%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(554,513)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C-3.51718381%203.36884358%20-6.58774263%202.47075246%20-11%201%20C-6.78915963%20-1.80722691%20-4.88445782%20-0.94537893%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(399,468)'/%3e%3cpath%20d='M0%200%20C-0.66%200.66%20-1.32%201.32%20-2%202%20C-1.34%202.66%20-0.68%203.32%200%204%20C-3.96%203.67%20-7.92%203.34%20-12%203%20C-7.27030266%20-0.54727301%20-5.56673301%20-1.35407019%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(167,435)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C0.0625%204.625%200.0625%204.625%20-1%207%20C-1.33%206.34%20-1.66%205.68%20-2%205%20C-4.32156597%204.59270772%20-6.6568787%204.25561323%20-9%204%20C-9%203.67%20-9%203.34%20-9%203%20C-6.03%202.01%20-3.06%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(891,537)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C2%202.31%202%204.62%202%207%20C2.66%207%203.32%207%204%207%20C4%207.99%204%208.98%204%2010%20C2.68%2010%201.36%2010%200%2010%20C0%206.7%200%203.4%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(296,537)'/%3e%3cpath%20d='M0%200%20C1.7074998%201.28062485%203.37373596%202.61767557%205%204%20C5%204.66%205%205.32%205%206%20C1.04%206%20-2.92%206%20-7%206%20C-7%205.67%20-7%205.34%20-7%205%20C-3.535%204.505%20-3.535%204.505%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(683,450)'/%3e%3cpath%20d='M0%200%20C5.94%200.99%205.94%200.99%2012%202%20C12%202.66%2012%203.32%2012%204%20C10.56416999%204.10836453%209.1259798%204.18576167%207.6875%204.25%20C6.48673828%204.31960938%206.48673828%204.31960938%205.26171875%204.390625%20C3%204%203%204%200%200%20Z%20'%20fill='%23F2FFD9'%20transform='translate(667,563)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5.33%201.98%205.66%203.96%206%206%20C3.69%205.01%201.38%204.02%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(848,554)'/%3e%3cpath%20d='M0%200%20C3%204%203%204%204%207%20C0.25%2010%200.25%2010%20-2%2010%20C-1.34%206.7%20-0.68%203.4%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(187,506)'/%3e%3cpath%20d='M0%200%20C1.9451%202.91765%202.45276317%204.62537285%203%208%20C1.02%208.99%201.02%208.99%20-1%2010%20C-0.67%206.7%20-0.34%203.4%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(715,500)'/%3e%3cpath%20d='M0%200%20C2.9375%201.1875%202.9375%201.1875%203.9375%203.1875%20C1.02267222%203.99717438%20-0.52363217%204.40595993%20-3.375%203.25%20C-3.931875%202.899375%20-4.48875%202.54875%20-5.0625%202.1875%20C-5.0625%201.5275%20-5.0625%200.8675%20-5.0625%200.1875%20C-3.0625%20-0.8125%20-3.0625%20-0.8125%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(606.0625,467.8125)'/%3e%3cpath%20d='M0%200%20C0.5625%201.9375%200.5625%201.9375%201%204%20C0%205%200%205%20-3.0625%205.0625%20C-4.031875%205.041875%20-5.00125%205.02125%20-6%205%20C-6.33%204.34%20-6.66%203.68%20-7%203%20C-4.69%202.01%20-2.38%201.02%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(485,537)'/%3e%3cpath%20d='M0%200%20C0.99%200.33%201.98%200.66%203%201%20C2.01%203.97%201.02%206.94%200%2010%20C-0.33%2010%20-0.66%2010%20-1%2010%20C-1.125%202.25%20-1.125%202.25%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(322,486)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5%200.99%205%201.98%205%203%20C3.35%203.66%201.7%204.32%200%205%20C0%203.35%200%201.7%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(738,552)'/%3e%3cpath%20d='M0%200%20C0.91007813%200.00902344%201.82015625%200.01804687%202.7578125%200.02734375%20C3.45648438%200.03894531%204.15515625%200.05054688%204.875%200.0625%20C5.205%200.7225%205.535%201.3825%205.875%202.0625%20C4.82699219%202.15337891%204.82699219%202.15337891%203.7578125%202.24609375%20C2.84773437%202.32988281%201.93765625%202.41367187%201%202.5%20C0.09507812%202.58121094%20-0.80984375%202.66242188%20-1.7421875%202.74609375%20C-4.13610861%202.93239285%20-4.13610861%202.93239285%20-6.125%204.0625%20C-6.455%203.0725%20-6.785%202.0825%20-7.125%201.0625%20C-4.60024538%20-0.19987731%20-2.81299534%20-0.03606404%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(128.125,458.9375)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C0.515%204.465%200.515%204.465%20-1%208%20C-1.66%208%20-2.32%208%20-3%208%20C-3%206.02%20-3%204.04%20-3%202%20C-2.01%202%20-1.02%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(294,556)'/%3e%3cpath%20d='M0%200%20C1.51400391%200.01740234%201.51400391%200.01740234%203.05859375%200.03515625%20C4.07050781%200.04417969%205.08242188%200.05320312%206.125%200.0625%20C7.29869141%200.07990234%207.29869141%200.07990234%208.49609375%200.09765625%20C8.49609375%200.42765625%208.49609375%200.75765625%208.49609375%201.09765625%20C5.52609375%201.09765625%202.55609375%201.09765625%20-0.50390625%201.09765625%20C-0.50390625%201.75765625%20-0.50390625%202.41765625%20-0.50390625%203.09765625%20C-2.81390625%203.09765625%20-5.12390625%203.09765625%20-7.50390625%203.09765625%20C-6.86453125%202.78828125%20-6.22515625%202.47890625%20-5.56640625%202.16015625%20C-1.48563778%200.05794219%20-1.48563778%200.05794219%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(463.50390625,540.90234375)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C2.32%201.67%203.64%201.34%205%201%20C3.9024777%203.99324263%203.32317108%204.84610901%200.375%206.25%20C-0.40875%206.4975%20-1.1925%206.745%20-2%207%20C-1.34%204.69%20-0.68%202.38%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(306,531)'/%3e%3cpath%20d='M0%200%20C0.33%200.99%200.66%201.98%201%203%20C-0.98%204.98%20-2.96%206.96%20-5%209%20C-5.99%208.67%20-6.98%208.34%20-8%208%20C-5.33333333%205.33333333%20-2.66666667%202.66666667%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(601,528)'/%3e%3cpath%20d='M0%200%20C0.99%200%201.98%200%203%200%20C3.125%202.875%203.125%202.875%203%206%20C2.34%206.66%201.68%207.32%201%208%20C0%207%200%207%20-0.0625%203.4375%20C-0.041875%202.303125%20-0.02125%201.16875%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(272,520)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%201.66%201.34%202.32%201%203%20C0.95977609%205.3329866%200.95679753%207.66706666%201%2010%20C0.34%2010%20-0.32%2010%20-1%2010%20C-1.9765625%203.9453125%20-1.9765625%203.9453125%20-2%202%20C-1.34%201.34%20-0.68%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(359,502)'/%3e%3cpath%20d='M0%200%20C3.63%200.66%207.26%201.32%2011%202%20C11%202.33%2011%202.66%2011%203%20C7.37%203%203.74%203%200%203%20C0%202.01%200%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(387,469)'/%3e%3cpath%20d='M0%200%20C2.31%200.33%204.62%200.66%207%201%20C6.67%201.66%206.34%202.32%206%203%20C4.35%203%202.7%203%201%203%20C1%203.99%201%204.98%201%206%20C0.01%206%20-0.98%206%20-2%206%20C-1.34%204.02%20-0.68%202.04%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(305,468)'/%3e%3cpath%20d='M0%200%20C1.65%200.33%203.3%200.66%205%201%20C5%201.99%205%202.98%205%204%20C3.35%204%201.7%204%200%204%20C0%202.68%200%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(549,552)'/%3e%3cpath%20d='M0%200%20C0.94875%200.04125%201.8975%200.0825%202.875%200.125%20C2.875%200.785%202.875%201.445%202.875%202.125%20C0.895%202.785%20-1.085%203.445%20-3.125%204.125%20C-3.785%203.465%20-4.445%202.805%20-5.125%202.125%20C-3.125%200.125%20-3.125%200.125%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(181.125,553.875)'/%3e%3cpath%20d='M0%200%20C1.9375%200.3125%201.9375%200.3125%204%201%20C4.33%201.99%204.66%202.98%205%204%20C2.69%204%200.38%204%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(587,540)'/%3e%3cpath%20d='M0%200%20C0%202.31%200%204.62%200%207%20C-0.99%207.495%20-0.99%207.495%20-2%208%20C-2%207.01%20-2%206.02%20-2%205%20C-2.66%205%20-3.32%205%20-4%205%20C-3.625%203.0625%20-3.625%203.0625%20-3%201%20C-1%200%20-1%200%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(185,520)'/%3e%3cpath%20d='M0%200%20C0.66%200%201.32%200%202%200%20C1.67%202.64%201.34%205.28%201%208%20C0.01%207.67%20-0.98%207.34%20-2%207%20C-1.34%207%20-0.68%207%200%207%20C0%206.01%200%205.02%200%204%20C-1.32%203.67%20-2.64%203.34%20-4%203%20C-2.68%202.67%20-1.36%202.34%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(616,486)'/%3e%3cpath%20d='M0%200%20C3.125%20-0.1875%203.125%20-0.1875%206%200%20C6%200.99%206%201.98%206%203%20C3.36%203%200.72%203%20-2%203%20C-1.34%202.01%20-0.68%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(842,477)'/%3e%3cpath%20d='M0%200%20C2.475%200.495%202.475%200.495%205%201%20C4.67%202.32%204.34%203.64%204%205%20C2.68%205.33%201.36%205.66%200%206%20C0%204.02%200%202.04%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(920,472)'/%3e%3cpath%20d='M0%200%20C1.65%200%203.3%200%205%200%20C5.33%200.99%205.66%201.98%206%203%20C3.69%203%201.38%203%20-1%203%20C-0.67%202.01%20-0.34%201.02%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(568,560)'/%3e%3cpath%20d='M0%200%20C3.39609044%201.19322096%205.62433927%202.28495916%208%205%20C8.66%205.66%209.32%206.32%2010%207%20C7.29068581%206.84518205%205.53415961%206.51827919%203.5546875%204.59765625%20C2.32320358%203.10228292%201.1570163%201.5537076%200%200%20Z%20'%20fill='%23A7EA18'%20transform='translate(656,551)'/%3e%3cpath%20d='M0%200%20C-3.6441774%202.4294516%20-5.71241272%202.16179575%20-10%202%20C-10%201.34%20-10%200.68%20-10%200%20C-6.33694766%20-0.74926071%20-3.57644848%20-1.2380014%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(762,542)'/%3e%3cpath%20d='M0%200%20C1.32%200%202.64%200%204%200%20C4%201.65%204%203.3%204%205%20C3.01%205%202.02%205%201%205%20C0.34%203.68%20-0.32%202.36%20-1%201%20C-0.67%200.67%20-0.34%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(780,539)'/%3e%3cpath%20d='M0%200%20C0%201.98%200%203.96%200%206%20C-0.99%206%20-1.98%206%20-3%206%20C-3.66%204.68%20-4.32%203.36%20-5%202%20C-1.125%200%20-1.125%200%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(611,497)'/%3e%3cpath%20d='M0%200%20C2%203%202%203%201.625%205.1875%20C1.41875%205.785625%201.2125%206.38375%201%207%20C0.01%207%20-0.98%207%20-2%207%20C-2%205.35%20-2%203.7%20-2%202%20C-1.34%202%20-0.68%202%200%202%20C0%201.34%200%200.68%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(260,485)'/%3e%3cpath%20d='M0%200%20C0.99%200.33%201.98%200.66%203%201%20C3.33%202.98%203.66%204.96%204%207%20C2.35%206.01%200.7%205.02%20-1%204%20C-0.67%202.68%20-0.34%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(896,467)'/%3e%3cpath%20d='M0%200%20C2.97%200%205.94%200%209%200%20C9%201.32%209%202.64%209%204%20C8.01%204%207.02%204%206%204%20C5.67%203.34%205.34%202.68%205%202%20C2.47266765%201.34444881%202.47266765%201.34444881%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%2312003B'%20transform='translate(396,466)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4%201.99%204%202.98%204%204%20C1.69%204.33%20-0.62%204.66%20-3%205%20C-2.01%203.35%20-1.02%201.7%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(660,423)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4.33%202.65%204.66%204.3%205%206%20C4.01%206%203.02%206%202%206%20C1.34%204.02%200.68%202.04%200%200%20Z%20'%20fill='%236F9300'%20transform='translate(690,541)'/%3e%3cpath%20d='M0%200%20C1.32%200.99%202.64%201.98%204%203%20C3.67%203.66%203.34%204.32%203%205%20C1.35%205%20-0.3%205%20-2%205%20C-1.34%203.35%20-0.68%201.7%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(858,531)'/%3e%3cpath%20d='M0%200%20C0.66%200.99%201.32%201.98%202%203%20C1.67%203.99%201.34%204.98%201%206%20C-1.5625%207.1875%20-1.5625%207.1875%20-4%208%20C-2.68%205.36%20-1.36%202.72%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(373,482)'/%3e%3cpath%20d='M0%200%20C1.74959319%202.62438979%202.62068453%203.96547627%203%207%20C2.01%208.485%202.01%208.485%201%2010%20C0.34%209.67%20-0.32%209.34%20-1%209%20C-0.67%208.34%20-0.34%207.68%200%207%20C0.04022391%204.6670134%200.04320247%202.33293334%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(360,477)'/%3e%3cpath%20d='M0%200%20C0%200.66%200%201.32%200%202%20C-0.66%202%20-1.32%202%20-2%202%20C-2%202.99%20-2%203.98%20-2%205%20C-3.32%205%20-4.64%205%20-6%205%20C-5.6875%203.0625%20-5.6875%203.0625%20-5%201%20C-2%200%20-2%200%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(891,561)'/%3e%3cpath%20d='M0%200%20C0.33%200.66%200.66%201.32%201%202%20C0.01%203.32%20-0.98%204.64%20-2%206%20C-3.32%205.34%20-4.64%204.68%20-6%204%20C-4.02%202.68%20-2.04%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(715,553)'/%3e%3cpath%20d='M0%200%20C1.98%200%203.96%200%206%200%20C6.33%201.65%206.66%203.3%207%205%20C3.535%203.02%203.535%203.02%200%201%20C0%200.67%200%200.34%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(432,552)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.60196439%203.88575819%201.20990931%204.82189513%20-1.0625%206.75%20C-1.701875%207.1625%20-2.34125%207.575%20-3%208%20C-1.125%201.125%20-1.125%201.125%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(299,549)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C2%201.99%202%202.98%202%204%20C-1.13349732%205.04449911%20-1.98968256%204.93423645%20-5%204%20C-3.35%202.68%20-1.7%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(198,546)'/%3e%3cpath%20d='M0%200%20C1.32%200.33%202.64%200.66%204%201%20C4%204%204%204%202.5%205.6875%20C2.005%206.120625%201.51%206.55375%201%207%20C0.67%204.69%200.34%202.38%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(802,545)'/%3e%3cpath%20d='M0%200%20C2%201.3125%202%201.3125%204%203%20C4%203.99%204%204.98%204%206%20C2.02%205.34%200.04%204.68%20-2%204%20C-1.34%202.68%20-0.68%201.36%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(617,530)'/%3e%3cpath%20d='M0%200%20C2%201.8125%202%201.8125%204%204%20C4%204.99%204%205.98%204%207%20C2.68%207.33%201.36%207.66%200%208%20C0%205.36%200%202.72%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(552,520)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C0.1875%204%200.1875%204%20-2%207%20C-2.99%207%20-3.98%207%20-5%207%20C-3.35%204.69%20-1.7%202.38%200%200%20Z%20'%20fill='%231E0259'%20transform='translate(715,519)'/%3e%3cpath%20d='M0%200%20C2.50037734%202.17424117%203.43628586%203.73045798%204%207%20C2.68%206.67%201.36%206.34%200%206%20C0%204.02%200%202.04%200%200%20Z%20'%20fill='%23F0E9FF'%20transform='translate(483,496)'/%3e%3cpath%20d='M0%200%20C0.66%200.33%201.32%200.66%202%201%20C1.67%202.98%201.34%204.96%201%207%20C0.34%206.67%20-0.32%206.34%20-1%206%20C-1.625%203.4375%20-1.625%203.4375%20-2%201%20C-1.34%200.67%20-0.68%200.34%200%200%20Z%20'%20fill='%230D0026'%20transform='translate(182,471)'/%3e%3cpath%20d='M0%200%20C0.33%201.32%200.66%202.64%201%204%20C3.31%204%205.62%204%208%204%20C8%204.33%208%204.66%208%205%20C4.7%205%201.4%205%20-2%205%20C-1.34%203.35%20-0.68%201.7%200%200%20Z%20'%20fill='%23DFFF99'%20transform='translate(638,451)'/%3e%3c/svg%3e",
|
|
785
|
+
src: "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3c!--%20Creator:%20CorelDRAW%202020%20(64-Bit)%20--%3e%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xml:space='preserve'%20width='1024'%20height='262'%20version='1.1'%20style='shape-rendering:geometricPrecision;%20text-rendering:geometricPrecision;%20image-rendering:optimizeQuality;%20fill-rule:evenodd;%20clip-rule:evenodd'%20viewBox='1661.62%203068.43%208348.08%202136.02'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns:xodm='http://www.corel.com/coreldraw/odm/2003'%3e%3cdefs%3e%3cstyle%20type='text/css'%3e%3c![CDATA[%20.fil0%20{fill:none}%20.fil1%20{fill:%2331106F}%20.fil2%20{fill:%23BCFF2E}%20]]%3e%3c/style%3e%3cclipPath%20id='id0'%3e%3cpath%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3c/clipPath%3e%3cclipPath%20id='id1'%3e%3cpath%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3c/clipPath%3e%3cclipPath%20id='id2'%3e%3cpath%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3c/clipPath%3e%3cclipPath%20id='id3'%3e%3cpath%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3c/clipPath%3e%3cclipPath%20id='id4'%3e%3cpath%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3c/clipPath%3e%3cclipPath%20id='id5'%3e%3cpath%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3c/clipPath%3e%3cclipPath%20id='id6'%3e%3cpath%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3c/clipPath%3e%3cclipPath%20id='id7'%3e%3cpath%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3c/clipPath%3e%3cclipPath%20id='id8'%3e%3cpath%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20id='Layer_x0020_1'%3e%3cmetadata%20id='CorelCorpID_0Corel-Layer'/%3e%3crect%20class='fil0'%20x='-0.21'%20y='2.81'%20width='11692.91'%20height='8267.72'/%3e%3crect%20class='fil0'%20x='-0.21'%20y='2.81'%20width='11692.91'%20height='8267.72'/%3e%3cg%20id='_2489101208096'%3e%3cpath%20class='fil1'%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3cg%20style='clip-path:url(%23id0)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M7019.56%203547.95l116.29%200.94%201.21%20175.49%20-147.35%205.59%20-0.7%20227.87%20144.92%204.05c30,184.02%20-43.07,483.22%2057.01,656.94%20113.85,197.63%20495.67,218.13%20705.04,-85.78%2051.2,-74.32%2093.13,-147.48%20172.3,-185.8%20126.71,-61.33%20518.73,-11.78%20691.7,-30.73%202.83,-175.73%20-7.55,-289.05%20-92.81,-408.89%20-60.7,-85.3%20-171.47,-170.69%20-319.21,-186.77%20-304.19,-33.12%20-534.26,180.2%20-553.67,454.78%2044.78,-22.98%2079.06,-69.98%20181.52,-96.45%2032.79,-8.47%2090.5,-3.12%20111.48,-28.82%2018.01,-22.05%2020.78,-43.97%2072.17,-75.17%20159.31,-96.73%20347.73,29.03%20339.28,164.03%20-142.7,7.31%20-361.67,-17.5%20-489.37,16.06%20-140.56,36.93%20-208.92,111.53%20-280.65,224.44%20-111.52,175.55%20-264.77,152.81%20-303.63,68.34%20-26.86,-58.38%20-21.58,-401.09%20-14.11,-484.61l229.61%20-2.23%200.94%20-233.44%20-231.52%200.41%20-0.62%20-179.31%20124.86%20-1.69c-3.83,-10.39%20-228.64,-368.72%20-253.2,-388.59%20-22.07,22.13%20-253.24,363.34%20-261.49,389.33z'/%3e%3cpath%20class='fil1'%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3cg%20style='clip-path:url(%23id1)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M2078.94%203670.24c159.83,-7.32%20357.13,-19.32%20472.45,57.5%20173.65,115.67%20212.68,385.1%20119.44,563.46%20-38.21,73.09%20-63.26,94.83%20-123.9,135.69%20-111.57,75.18%20-317.6,59.13%20-467.61,53.98l-0.38%20-810.63zm-276.86%201064.91c125,14.11%20329.17,2.43%20460.78,2.23%20156.32,-0.24%20272.8,-5.93%20398.39,-69.64%20191.13,-96.97%20338.35,-298.16%20337.02,-595.21%20-1.31,-294.43%20-142.82,-497.09%20-336.68,-595.19%20-125.99,-63.75%20-232.04,-74.34%20-391.72,-74.46%20-143.24,-0.11%20-326.74,-9.83%20-465.06,1.09l-2.74%201331.18z'/%3e%3cpath%20class='fil1'%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3cg%20style='clip-path:url(%23id2)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M9614.74%203834.29l-46.72%20-41.47c-138.25,-99.07%20-334.21,-85.36%20-468.73,-0.69%20-414.78,261.07%20-226.81,1041.5%20301.45,954.31%20154.89,-25.56%20186.57,-103.74%20222.13,-118.19l0.24%20108.18%20263.97%200.02%20-0.39%20-838.39c-18.43,13.93%20-48.93,69.07%20-65.94,89.32%20-25.72,30.6%20-48.01,57.5%20-78.11,83.26%20-167.24,143.1%20-94.11,310.72%20-227.73,403.94%20-68.29,47.65%20-171.03,51.28%20-246.4,10.84%20-209.85,-112.59%20-156.35,-582.78%20163.37,-520.33%20112.36,21.94%20129,90.83%20172.28,148.57%2015.91,-15.81%2037.83,-53.2%2053.12,-72.16%2064.66,-80.19%20114.17,-89.27%20177.07,-222.77%2061.72,-130.98%2060.11,-303.47%2052.06,-463.53l-270.72%20-3.54%20-0.95%20482.63z'/%3e%3cpath%20class='fil1'%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3cg%20style='clip-path:url(%23id3)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M3161.22%204831.35l-92.77%20203.85c78.25,38.44%2098.32,70.5%20225.99,78.52%20302.98,19.03%20381.34,-240.89%20467.04,-461.49l257.64%20-668.9c29.08,-74.94%2063.09,-152.79%2086.33,-229.54l-263.44%200.51c-37.04,55.73%20-219.42,586.81%20-240.97,624.5%20-13.08,22.88%20-2.8,7.62%20-14.3,18.5l-255.18%20-643.03%20-276.71%20-0.1c16.19,57.21%20103.58,256.17%20132.23,327.94%2034.05,85.27%20265.63,616.64%20263.35,656.78%20-3.46,60.89%20-50.47,117.08%20-103.77,129.47%20-88.87,20.66%20-123.22,-18.17%20-185.44,-37.02z'/%3e%3cpath%20class='fil1'%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3cg%20style='clip-path:url(%23id4)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M5143.22%204139.09c-6.73,-101.89%20111.69,-194.23%20221.68,-196.5%20117.41,-2.43%20224.06,87.5%20220.17,197.41l-441.84%20-0.91zm633.27%20438.8c-17.69,-24.65%20-122.26,-138.6%20-151.8,-155.07%20-152.04,151.57%20-441.06,128.69%20-483.11,-102.48l705.8%20-1.63c4.33,-164.63%20-12.93,-333.13%20-120.41,-446.83%20-10.68,-11.3%20-19.05,-15.55%20-29.4,-26.63%20-192.76,-206.34%20-635.23,-182.56%20-785.73,181.19%20-47.98,116%20-53.07,265.87%20-9.89,390.06%2041.91,120.53%20115.6,205.98%20201.53,261.63%20235.37,152.43%20548.23,71.01%20673.01,-100.25z'/%3e%3cpath%20class='fil1'%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3cg%20style='clip-path:url(%23id5)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M6900.13%204479.24l-216.65%20-106.13c-94.39,220.74%20-451.35,190.63%20-456.28,-131.88%20-3.8,-248.59%20201.16,-328.92%20347.79,-255.91%2061.39,30.57%2074.15,63.4%20108.73,113.58l213.52%20-124.59c-24.88,-82.21%20-136.62,-175.09%20-218.2,-212.33%20-313.13,-142.93%20-727.02,56.62%20-718.49,486.1%2012.33,620.41%20813,640.07%20939.58,231.17z'/%3e%3cpath%20class='fil1'%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3cg%20style='clip-path:url(%23id6)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M4202.91%204736.74l266.53%200.01c-0.89,-89.19%20-4.33,-461.84%204.33,-524.3%2027.5,-198.37%20150.28,-221.17%20310.03,-210.49l1.61%20-262.4c-135.89,1.56%20-220.93,26.99%20-277.8,114.22%20-95.37,146.26%20-23.58,63.06%20-159.07,234.02%20-172.05,217.09%20-140.76,329.63%20-145.63,648.94z'/%3e%3cpath%20class='fil1'%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3cg%20style='clip-path:url(%23id7)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M7940.92%204615.03c193.33,193.93%20581.52,193.25%20747.86,-37.14%20-43.44,-57.2%20-123.12,-128.48%20-144.41,-154.51%20-28.63,14.07%20-168.76,159.23%20-357.78,70.32%20-83.06,-39.07%20-56.28,-54.26%20-100.76,-70.63%20-23.56,26.5%20-131.15,156.27%20-144.91,191.96z'/%3e%3cpath%20class='fil1'%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3cg%20style='clip-path:url(%23id8)'%3e%3cg%3e%3crect%20class='fil2'%20x='6906.6'%20y='3029.49'%20width='770.45'%20height='1803.81'/%3e%3c/g%3e%3c/g%3e%3cpath%20class='fil0'%20d='M4202.98%204158.67c51.11,-119.58%20208.03,-206.44%20235.35,-403.87%20-49.13,-1.92%20-195.43,-7.67%20-234.96,4.19l-0.39%20399.68z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e",
|
|
901
786
|
alt: "Dyrected",
|
|
902
787
|
className: "dy-h-8 dy-w-auto"
|
|
903
788
|
})
|
|
@@ -919,7 +804,7 @@ function SidebarInner({ schemas, isLoading, location, logout, isEmbedded, collap
|
|
|
919
804
|
}) }),
|
|
920
805
|
uploadCollections.length > 0 && /* @__PURE__ */ jsxs("div", { children: [groupLabel("Media"), uploadCollections.map((col) => /* @__PURE__ */ jsx(NavItem, {
|
|
921
806
|
to: `/collections/${col.slug}`,
|
|
922
|
-
icon: resolveAdminIcon(col.admin?.icon, Image
|
|
807
|
+
icon: resolveAdminIcon(col.admin?.icon, Image),
|
|
923
808
|
label: col.labels?.plural ?? col.label ?? col.slug,
|
|
924
809
|
active: location.pathname.startsWith(`/collections/${col.slug}`),
|
|
925
810
|
collapsed,
|
|
@@ -1045,7 +930,7 @@ function isNewerVersion(latest, current) {
|
|
|
1045
930
|
return false;
|
|
1046
931
|
}
|
|
1047
932
|
function useUpdateCheck() {
|
|
1048
|
-
const currentVersion = "2.6.
|
|
933
|
+
const currentVersion = "2.6.2";
|
|
1049
934
|
const [updateInfo, setUpdateInfo] = useState(() => {
|
|
1050
935
|
if (typeof window === "undefined") return null;
|
|
1051
936
|
const cacheKey = "dyrected_latest_release";
|
|
@@ -1271,7 +1156,7 @@ function getStatusLabel(doc) {
|
|
|
1271
1156
|
}
|
|
1272
1157
|
function Dashboard() {
|
|
1273
1158
|
const { client, components, user } = useDyrected();
|
|
1274
|
-
const currentVersion = "2.6.
|
|
1159
|
+
const currentVersion = "2.6.2";
|
|
1275
1160
|
const [latestVersion, setLatestVersion] = useState(() => {
|
|
1276
1161
|
if (typeof window === "undefined") return null;
|
|
1277
1162
|
return localStorage.getItem("dyrected_latest_release");
|
|
@@ -1337,7 +1222,19 @@ function Dashboard() {
|
|
|
1337
1222
|
const aTime = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
|
|
1338
1223
|
return (b.updatedAt ? new Date(b.updatedAt).getTime() : 0) - aTime;
|
|
1339
1224
|
}).slice(0, 6);
|
|
1225
|
+
const { error: storageQueryError } = useQuery({
|
|
1226
|
+
queryKey: ["dashboard-storage-check", uploadCollection?.slug],
|
|
1227
|
+
queryFn: () => client.listMedia({ limit: 1 }, uploadCollection?.slug || "media"),
|
|
1228
|
+
enabled: !!client && !!uploadCollection,
|
|
1229
|
+
retry: false
|
|
1230
|
+
});
|
|
1340
1231
|
const attentionItems = [
|
|
1232
|
+
...schemas?.hasStorage === false || isStorageNotConfiguredError(storageQueryError) ? [{
|
|
1233
|
+
key: "storage-not-configured",
|
|
1234
|
+
title: "Media storage is not set up",
|
|
1235
|
+
description: "File uploads are disabled. Ask your developer to configure a media storage provider in Dyrected.",
|
|
1236
|
+
to: "/setup"
|
|
1237
|
+
}] : [],
|
|
1341
1238
|
...hasUpdate ? [{
|
|
1342
1239
|
key: "dyrected-update",
|
|
1343
1240
|
title: `A system update is available (v${latestVersion})`,
|
|
@@ -2160,89 +2057,6 @@ var TableCaption = React$1.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
2160
2057
|
}));
|
|
2161
2058
|
TableCaption.displayName = "TableCaption";
|
|
2162
2059
|
//#endregion
|
|
2163
|
-
//#region src/hooks/use-preferences.ts
|
|
2164
|
-
function arePreferenceValuesEqual(a, b) {
|
|
2165
|
-
if (Object.is(a, b)) return true;
|
|
2166
|
-
try {
|
|
2167
|
-
return JSON.stringify(a) === JSON.stringify(b);
|
|
2168
|
-
} catch {
|
|
2169
|
-
return false;
|
|
2170
|
-
}
|
|
2171
|
-
}
|
|
2172
|
-
/**
|
|
2173
|
-
* A hook to manage and persist user preferences in the Admin UI.
|
|
2174
|
-
* Uses localStorage for immediate persistence and syncs to the user profile
|
|
2175
|
-
* when an authenticated Dyrected client is available.
|
|
2176
|
-
*/
|
|
2177
|
-
function usePreferences(key, defaultValue) {
|
|
2178
|
-
const { client, user } = useDyrected();
|
|
2179
|
-
const localStorageKey = `dyrected_pref_${key}`;
|
|
2180
|
-
const localWriteVersionRef = React$1.useRef(0);
|
|
2181
|
-
const defaultValueRef = React$1.useRef(defaultValue);
|
|
2182
|
-
defaultValueRef.current = defaultValue;
|
|
2183
|
-
const [value, setValue] = React$1.useState(() => {
|
|
2184
|
-
if (typeof window === "undefined") return defaultValue;
|
|
2185
|
-
try {
|
|
2186
|
-
const stored = window.localStorage.getItem(localStorageKey);
|
|
2187
|
-
return stored ? JSON.parse(stored) : defaultValue;
|
|
2188
|
-
} catch (e) {
|
|
2189
|
-
console.warn(`[usePreferences] Error loading key "${key}":`, e);
|
|
2190
|
-
return defaultValue;
|
|
2191
|
-
}
|
|
2192
|
-
});
|
|
2193
|
-
React$1.useEffect(() => {
|
|
2194
|
-
if (typeof window === "undefined") return;
|
|
2195
|
-
try {
|
|
2196
|
-
const stored = window.localStorage.getItem(localStorageKey);
|
|
2197
|
-
const nextValue = stored ? JSON.parse(stored) : defaultValueRef.current;
|
|
2198
|
-
setValue((prev) => arePreferenceValuesEqual(prev, nextValue) ? prev : nextValue);
|
|
2199
|
-
} catch (e) {
|
|
2200
|
-
console.warn(`[usePreferences] Error syncing key "${key}":`, e);
|
|
2201
|
-
}
|
|
2202
|
-
}, [key, localStorageKey]);
|
|
2203
|
-
React$1.useEffect(() => {
|
|
2204
|
-
if (!client || !user) return;
|
|
2205
|
-
let cancelled = false;
|
|
2206
|
-
const writeVersion = localWriteVersionRef.current;
|
|
2207
|
-
client.getPreference(key).then((result) => {
|
|
2208
|
-
if (cancelled || result.value === null || localWriteVersionRef.current !== writeVersion) return;
|
|
2209
|
-
setValue((prev) => arePreferenceValuesEqual(prev, result.value) ? prev : result.value);
|
|
2210
|
-
if (typeof window !== "undefined") window.localStorage.setItem(localStorageKey, JSON.stringify(result.value));
|
|
2211
|
-
}).catch((e) => {
|
|
2212
|
-
console.warn(`[usePreferences] Error loading remote key "${key}":`, e);
|
|
2213
|
-
});
|
|
2214
|
-
return () => {
|
|
2215
|
-
cancelled = true;
|
|
2216
|
-
};
|
|
2217
|
-
}, [
|
|
2218
|
-
client,
|
|
2219
|
-
user,
|
|
2220
|
-
key,
|
|
2221
|
-
localStorageKey
|
|
2222
|
-
]);
|
|
2223
|
-
return [value, React$1.useCallback((updater) => {
|
|
2224
|
-
setValue((prev) => {
|
|
2225
|
-
localWriteVersionRef.current += 1;
|
|
2226
|
-
const newValue = typeof updater === "function" ? updater(prev) : updater;
|
|
2227
|
-
if (arePreferenceValuesEqual(prev, newValue)) return prev;
|
|
2228
|
-
if (typeof window !== "undefined") try {
|
|
2229
|
-
window.localStorage.setItem(localStorageKey, JSON.stringify(newValue));
|
|
2230
|
-
} catch (e) {
|
|
2231
|
-
console.warn(`[usePreferences] Error saving key "${key}":`, e);
|
|
2232
|
-
}
|
|
2233
|
-
if (client && user) client.setPreference(key, newValue).catch((e) => {
|
|
2234
|
-
console.warn(`[usePreferences] Error saving remote key "${key}":`, e);
|
|
2235
|
-
});
|
|
2236
|
-
return newValue;
|
|
2237
|
-
});
|
|
2238
|
-
}, [
|
|
2239
|
-
client,
|
|
2240
|
-
user,
|
|
2241
|
-
key,
|
|
2242
|
-
localStorageKey
|
|
2243
|
-
])];
|
|
2244
|
-
}
|
|
2245
|
-
//#endregion
|
|
2246
2060
|
//#region src/components/ui/data-table.tsx
|
|
2247
2061
|
var EMPTY_VISIBILITY = {};
|
|
2248
2062
|
function DataTable({ columns, data, searchPlaceholder, searchValue, onSearchChange, rowSelection: externalRowSelection, onRowSelectionChange, bulkActions, toolbarActions, persistenceKey, initialColumnVisibility, hideViewButton = false }) {
|
|
@@ -3730,102 +3544,10 @@ function Pagination({ page, totalPages, total, hasPrevPage, hasNextPage, onPageC
|
|
|
3730
3544
|
});
|
|
3731
3545
|
}
|
|
3732
3546
|
//#endregion
|
|
3733
|
-
//#region src/lib/external-media.ts
|
|
3734
|
-
var YOUTUBE_RE = /(?:youtu\.be\/|youtube\.com\/(?:v\/|u\/\w\/|embed\/|watch\?v=))([^#&?]*)/;
|
|
3735
|
-
var VIMEO_RE = /vimeo\.com\/(?:video\/)?([0-9]+)/;
|
|
3736
|
-
var IMAGE_RE = /\.(jpeg|jpg|gif|png|webp|svg|avif)(?:\?.*)?$/i;
|
|
3737
|
-
/** Extract the trailing filename from a URL, stripping any query string. */
|
|
3738
|
-
function filenameFromUrl(url, fallback) {
|
|
3739
|
-
return url.split("/").pop()?.split("?")[0] || fallback;
|
|
3740
|
-
}
|
|
3741
|
-
/**
|
|
3742
|
-
* Build a media document payload from an external URL.
|
|
3743
|
-
* Returns `null` when the input is empty/whitespace.
|
|
3744
|
-
*/
|
|
3745
|
-
function buildExternalMediaPayload(rawUrl) {
|
|
3746
|
-
const url = rawUrl.trim();
|
|
3747
|
-
if (!url) return null;
|
|
3748
|
-
const yt = url.match(YOUTUBE_RE);
|
|
3749
|
-
if (yt && yt[1]) return {
|
|
3750
|
-
filename: `YouTube: ${yt[1]}`,
|
|
3751
|
-
url,
|
|
3752
|
-
mimeType: "video/youtube",
|
|
3753
|
-
filesize: 0,
|
|
3754
|
-
id: `yt_${yt[1]}`
|
|
3755
|
-
};
|
|
3756
|
-
const vimeo = url.match(VIMEO_RE);
|
|
3757
|
-
if (vimeo && vimeo[1]) return {
|
|
3758
|
-
filename: `Vimeo: ${vimeo[1]}`,
|
|
3759
|
-
url,
|
|
3760
|
-
mimeType: "video/vimeo",
|
|
3761
|
-
filesize: 0,
|
|
3762
|
-
id: `vm_${vimeo[1]}`
|
|
3763
|
-
};
|
|
3764
|
-
if (IMAGE_RE.test(url)) return {
|
|
3765
|
-
filename: filenameFromUrl(url, "External Image"),
|
|
3766
|
-
url,
|
|
3767
|
-
mimeType: "image/external",
|
|
3768
|
-
filesize: 0,
|
|
3769
|
-
id: `img_${Math.random().toString(36).substring(7)}`
|
|
3770
|
-
};
|
|
3771
|
-
return {
|
|
3772
|
-
filename: filenameFromUrl(url, "External File"),
|
|
3773
|
-
url,
|
|
3774
|
-
mimeType: "application/octet-stream",
|
|
3775
|
-
filesize: 0,
|
|
3776
|
-
id: `ext_${Math.random().toString(36).substring(7)}`
|
|
3777
|
-
};
|
|
3778
|
-
}
|
|
3779
|
-
/**
|
|
3780
|
-
* Resolves the thumbnail/preview image URL for any media item — external or uploaded.
|
|
3781
|
-
*
|
|
3782
|
-
* This is the single source of truth used by every media surface (grid, picker,
|
|
3783
|
-
* library dialog) so YouTube, Vimeo, external images, and uploaded files all render
|
|
3784
|
-
* consistently everywhere.
|
|
3785
|
-
* - `video/youtube` → the YouTube thumbnail for the video id
|
|
3786
|
-
* - `video/vimeo` → the Vimeo logo placeholder
|
|
3787
|
-
* - `image/external`→ the external URL itself
|
|
3788
|
-
* - anything else → resolved through {@link getMediaUrl}
|
|
3789
|
-
*/
|
|
3790
|
-
function getMediaPreviewUrl(item, baseUrl) {
|
|
3791
|
-
if (!item) return "";
|
|
3792
|
-
const obj = typeof item === "object" && item !== null ? item : null;
|
|
3793
|
-
const mimeType = obj ? obj.mimeType : void 0;
|
|
3794
|
-
const url = obj ? obj.url : void 0;
|
|
3795
|
-
if (mimeType === "video/youtube") {
|
|
3796
|
-
const match = url?.match(YOUTUBE_RE);
|
|
3797
|
-
const videoId = match && match[1];
|
|
3798
|
-
return videoId ? `https://img.youtube.com/vi/${videoId}/mqdefault.jpg` : "";
|
|
3799
|
-
}
|
|
3800
|
-
if (mimeType === "video/vimeo") return "https://vimeo.com/assets/images/logo_vimeo_blue.png";
|
|
3801
|
-
if (mimeType === "image/external") return url || "";
|
|
3802
|
-
return getMediaUrl(item, baseUrl);
|
|
3803
|
-
}
|
|
3804
|
-
/**
|
|
3805
|
-
* Returns the player embed URL for an external video item (YouTube/Vimeo), or
|
|
3806
|
-
* `null` for anything that isn't an embeddable video. Used to render an inline
|
|
3807
|
-
* iframe player instead of a static thumbnail.
|
|
3808
|
-
*/
|
|
3809
|
-
function getVideoEmbedUrl(item) {
|
|
3810
|
-
const obj = typeof item === "object" && item !== null ? item : null;
|
|
3811
|
-
if (!obj) return null;
|
|
3812
|
-
const mimeType = obj.mimeType;
|
|
3813
|
-
const url = obj.url || "";
|
|
3814
|
-
if (mimeType === "video/youtube") {
|
|
3815
|
-
const m = url.match(YOUTUBE_RE);
|
|
3816
|
-
return m && m[1] ? `https://www.youtube.com/embed/${m[1]}` : null;
|
|
3817
|
-
}
|
|
3818
|
-
if (mimeType === "video/vimeo") {
|
|
3819
|
-
const m = url.match(VIMEO_RE);
|
|
3820
|
-
return m && m[1] ? `https://player.vimeo.com/video/${m[1]}` : null;
|
|
3821
|
-
}
|
|
3822
|
-
return null;
|
|
3823
|
-
}
|
|
3824
|
-
//#endregion
|
|
3825
3547
|
//#region src/components/media/media-card.tsx
|
|
3826
3548
|
function MediaCard$1({ item, baseUrl, onDelete, editPath }) {
|
|
3827
3549
|
return /* @__PURE__ */ jsxs("div", {
|
|
3828
|
-
className: "dy-group dy-relative dy-aspect-square dy-rounded-
|
|
3550
|
+
className: "dy-group dy-relative dy-aspect-square dy-rounded-lg dy-overflow-hidden dy-bg-background dy-border dy-border-border/40 dy-shadow-sm hover:dy-shadow-xl hover:dy-border-primary/20 dy-transition-all dy-duration-300",
|
|
3829
3551
|
children: [
|
|
3830
3552
|
/* @__PURE__ */ jsx("img", {
|
|
3831
3553
|
src: getMediaPreviewUrl(item, baseUrl),
|
|
@@ -4009,135 +3731,152 @@ var TabsContent = React$1.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
4009
3731
|
}));
|
|
4010
3732
|
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
4011
3733
|
//#endregion
|
|
4012
|
-
//#region src/
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
*/
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
|
|
4029
|
-
|
|
4030
|
-
|
|
4031
|
-
|
|
4032
|
-
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
|
|
4036
|
-
|
|
4037
|
-
|
|
4038
|
-
|
|
4039
|
-
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4043
|
-
|
|
4044
|
-
|
|
4045
|
-
|
|
4046
|
-
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
3734
|
+
//#region src/components/media/storage-notice.tsx
|
|
3735
|
+
function StorageNotConfiguredNotice({ variant = "banner", className = "", showSetupLink = true }) {
|
|
3736
|
+
if (variant === "inline") return /* @__PURE__ */ jsx("div", {
|
|
3737
|
+
className: `dy-rounded-xl dy-border dy-border-amber-500/30 dy-bg-amber-500/10 dy-p-4 dy-text-amber-900 dark:dy-text-amber-200 ${className}`,
|
|
3738
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
3739
|
+
className: "dy-flex dy-items-start dy-gap-3",
|
|
3740
|
+
children: [/* @__PURE__ */ jsx(HardDrive, { className: "dy-h-5 dy-w-5 dy-flex-shrink-0 dy-text-amber-600 dark:dy-text-amber-400 dy-mt-0.5" }), /* @__PURE__ */ jsxs("div", {
|
|
3741
|
+
className: "dy-space-y-1",
|
|
3742
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
3743
|
+
className: "dy-text-sm dy-font-semibold",
|
|
3744
|
+
children: "Media storage isn't set up yet"
|
|
3745
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
3746
|
+
className: "dy-text-xs dy-opacity-90 dy-leading-relaxed",
|
|
3747
|
+
children: "File uploads require a storage provider (such as AWS S3, Cloudinary, Backblaze B2, or local storage). Please ask your developer or system administrator to configure media storage in Dyrected."
|
|
3748
|
+
})]
|
|
3749
|
+
})]
|
|
3750
|
+
})
|
|
3751
|
+
});
|
|
3752
|
+
return /* @__PURE__ */ jsx("div", {
|
|
3753
|
+
className: `dy-relative dy-overflow-hidden dy-rounded-xl dy-border dy-border-amber-500/30 dy-bg-gradient-to-r dy-from-amber-500/10 dy-via-amber-500/5 dy-to-transparent dy-p-5 dy-text-foreground ${className}`,
|
|
3754
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
3755
|
+
className: "dy-flex dy-flex-col sm:dy-flex-row sm:dy-items-center dy-justify-between dy-gap-4",
|
|
3756
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
3757
|
+
className: "dy-flex dy-items-start dy-gap-4",
|
|
3758
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
3759
|
+
className: "dy-flex dy-h-10 dy-w-10 dy-flex-shrink-0 dy-items-center dy-justify-center dy-rounded-lg dy-bg-amber-500/20 dy-text-amber-600 dark:dy-text-amber-400",
|
|
3760
|
+
children: /* @__PURE__ */ jsx(HardDrive, { className: "dy-h-5 dy-w-5" })
|
|
3761
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
3762
|
+
className: "dy-space-y-1",
|
|
3763
|
+
children: [/* @__PURE__ */ jsx("h4", {
|
|
3764
|
+
className: "dy-text-sm dy-font-bold dy-text-amber-950 dark:dy-text-amber-100",
|
|
3765
|
+
children: "Media storage isn't set up yet"
|
|
3766
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
3767
|
+
className: "dy-text-xs dy-text-muted-foreground dy-leading-relaxed",
|
|
3768
|
+
children: "File uploads are currently unavailable because a media storage provider (such as AWS S3, Cloudinary, Backblaze B2, or local storage) hasn't been configured. Please ask your developer or system administrator to add a storage adapter to your Dyrected config."
|
|
3769
|
+
})]
|
|
3770
|
+
})]
|
|
3771
|
+
}), showSetupLink && /* @__PURE__ */ jsx("div", {
|
|
3772
|
+
className: "dy-flex-shrink-0",
|
|
3773
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
3774
|
+
asChild: true,
|
|
3775
|
+
variant: "outline",
|
|
3776
|
+
size: "sm",
|
|
3777
|
+
className: "dy-h-9 dy-gap-2 dy-border-amber-500/30 hover:dy-bg-amber-500/10",
|
|
3778
|
+
children: /* @__PURE__ */ jsxs(Link, {
|
|
3779
|
+
to: "/setup",
|
|
3780
|
+
children: [
|
|
3781
|
+
/* @__PURE__ */ jsx(Wrench, { className: "dy-h-3.5 dy-w-3.5" }),
|
|
3782
|
+
"Setup Guide",
|
|
3783
|
+
/* @__PURE__ */ jsx(ArrowRight, { className: "dy-h-3.5 dy-w-3.5" })
|
|
3784
|
+
]
|
|
3785
|
+
})
|
|
3786
|
+
})
|
|
3787
|
+
})]
|
|
3788
|
+
})
|
|
3789
|
+
});
|
|
4051
3790
|
}
|
|
4052
3791
|
//#endregion
|
|
4053
3792
|
//#region src/components/media/media-library-dialog.tsx
|
|
4054
3793
|
function MediaLibraryDialog({ collection, isOpen, onOpenChange, selectedValues, onSelect, multiple, onConfirm }) {
|
|
4055
3794
|
const { client, schemas } = useDyrected();
|
|
4056
|
-
const
|
|
4057
|
-
const
|
|
3795
|
+
const activeMediaCollection = React$1.useMemo(() => resolveActiveMediaCollection(schemas, collection), [schemas, collection]);
|
|
3796
|
+
const schema = React$1.useMemo(() => schemas?.collections?.find((c) => c.slug === activeMediaCollection), [schemas, activeMediaCollection]);
|
|
3797
|
+
const collectionLabel = React$1.useMemo(() => schema?.labels?.plural ?? schema?.labels?.singular ?? (activeMediaCollection && activeMediaCollection !== "media" ? activeMediaCollection.charAt(0).toUpperCase() + activeMediaCollection.slice(1) : "Media Library"), [schema, activeMediaCollection]);
|
|
4058
3798
|
const [searchQuery, setSearchQuery] = React$1.useState("");
|
|
4059
3799
|
const [activeTab, setActiveTab] = React$1.useState("library");
|
|
4060
3800
|
const [selectedItem, setSelectedItem] = React$1.useState(null);
|
|
4061
|
-
const
|
|
4062
|
-
|
|
4063
|
-
|
|
4064
|
-
|
|
4065
|
-
|
|
4066
|
-
|
|
4067
|
-
|
|
4068
|
-
|
|
4069
|
-
|
|
4070
|
-
|
|
4071
|
-
|
|
4072
|
-
|
|
4073
|
-
|
|
3801
|
+
const getIdentifier = React$1.useCallback((v) => {
|
|
3802
|
+
if (!v) return "";
|
|
3803
|
+
if (typeof v === "object" && v !== null) {
|
|
3804
|
+
const obj = v;
|
|
3805
|
+
return String(obj.id || obj._id || obj.filename || "");
|
|
3806
|
+
}
|
|
3807
|
+
const strVal = String(v);
|
|
3808
|
+
if (strVal.includes("/")) return strVal.split("/").pop() || strVal;
|
|
3809
|
+
return strVal;
|
|
3810
|
+
}, []);
|
|
3811
|
+
const sVals = React$1.useMemo(() => {
|
|
3812
|
+
return (selectedValues || []).map(getIdentifier).filter(Boolean);
|
|
3813
|
+
}, [selectedValues, getIdentifier]);
|
|
3814
|
+
const { items: media, load, search, loadNextPage, hasNextPage, isLoading: isFetchingMedia, error: mediaQueryError, selectedItems, setSelectedIds, select, deselect, clearSelection } = useMediaLibrary({
|
|
3815
|
+
collection: activeMediaCollection,
|
|
3816
|
+
initialSelectedIds: sVals
|
|
4074
3817
|
});
|
|
4075
|
-
|
|
4076
|
-
|
|
4077
|
-
|
|
3818
|
+
React$1.useEffect(() => {
|
|
3819
|
+
if (!isOpen) return;
|
|
3820
|
+
searchQuery ? search(searchQuery) : load();
|
|
3821
|
+
}, [
|
|
3822
|
+
isOpen,
|
|
3823
|
+
load,
|
|
3824
|
+
search,
|
|
3825
|
+
searchQuery
|
|
3826
|
+
]);
|
|
3827
|
+
React$1.useEffect(() => {
|
|
3828
|
+
setSelectedIds(sVals);
|
|
3829
|
+
}, [sVals, setSelectedIds]);
|
|
4078
3830
|
const observerRef = React$1.useRef(null);
|
|
4079
3831
|
const sentinelRef = React$1.useCallback((node) => {
|
|
4080
3832
|
if (observerRef.current) {
|
|
4081
3833
|
observerRef.current.disconnect();
|
|
4082
3834
|
observerRef.current = null;
|
|
4083
3835
|
}
|
|
4084
|
-
if (node && hasNextPage && !
|
|
3836
|
+
if (node && hasNextPage && !isFetchingMedia) {
|
|
4085
3837
|
observerRef.current = new IntersectionObserver((entries) => {
|
|
4086
|
-
if (entries[0].isIntersecting)
|
|
3838
|
+
if (entries[0].isIntersecting) loadNextPage();
|
|
4087
3839
|
}, { rootMargin: "100px" });
|
|
4088
3840
|
observerRef.current.observe(node);
|
|
4089
3841
|
}
|
|
4090
3842
|
}, [
|
|
4091
3843
|
hasNextPage,
|
|
4092
|
-
|
|
4093
|
-
|
|
3844
|
+
isFetchingMedia,
|
|
3845
|
+
loadNextPage
|
|
4094
3846
|
]);
|
|
4095
|
-
const
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4099
|
-
try {
|
|
4100
|
-
const result = await client.collection(collection).upload(file, {});
|
|
4101
|
-
await refetch();
|
|
3847
|
+
const { queue, uploadFiles, retryUpload, removeQueueItem, clearQueue } = useMediaUpload({
|
|
3848
|
+
collectionSlug: activeMediaCollection,
|
|
3849
|
+
onCompletedItem: async (result) => {
|
|
3850
|
+
await (searchQuery ? search(searchQuery) : load());
|
|
4102
3851
|
onSelect(result.id, result);
|
|
4103
|
-
if (!multiple) onOpenChange(false);
|
|
4104
|
-
} catch (error) {
|
|
4105
|
-
console.error("Upload failed:", error);
|
|
4106
|
-
alert("Upload failed. Please try again.");
|
|
4107
|
-
} finally {
|
|
4108
|
-
setIsUploading(false);
|
|
4109
3852
|
}
|
|
4110
|
-
};
|
|
4111
|
-
const
|
|
4112
|
-
|
|
3853
|
+
});
|
|
3854
|
+
const hasStorageError = React$1.useMemo(() => {
|
|
3855
|
+
return isStorageNotConfiguredError(mediaQueryError) || queue.some((item) => isStorageNotConfiguredError(item.error));
|
|
3856
|
+
}, [mediaQueryError, queue]);
|
|
3857
|
+
const { getRootProps, getInputProps, isDragActive } = useDropzone({
|
|
3858
|
+
onDrop: React$1.useCallback((acceptedFiles) => {
|
|
3859
|
+
if (acceptedFiles.length > 0) uploadFiles(acceptedFiles);
|
|
3860
|
+
}, [uploadFiles]),
|
|
3861
|
+
accept: {
|
|
3862
|
+
"image/*": [],
|
|
3863
|
+
"video/*": [],
|
|
3864
|
+
"application/pdf": []
|
|
3865
|
+
}
|
|
3866
|
+
});
|
|
3867
|
+
const { url: externalUrl, setUrl: setExternalUrl, submit: handleExternalUrlSubmit, isSubmitting: isAddingUrl } = useMediaURL({
|
|
3868
|
+
collection: activeMediaCollection,
|
|
4113
3869
|
onAdded: async (result) => {
|
|
4114
|
-
await
|
|
3870
|
+
await (searchQuery ? search(searchQuery) : load());
|
|
4115
3871
|
onSelect(result.id, result);
|
|
4116
|
-
|
|
3872
|
+
setSelectedItem(result);
|
|
3873
|
+
setActiveTab("library");
|
|
4117
3874
|
},
|
|
4118
3875
|
onError: () => alert("Failed to add URL. Please make sure it is valid.")
|
|
4119
3876
|
});
|
|
4120
3877
|
const getPreviewUrl = (item) => getMediaPreviewUrl(item, client?.getBaseUrl() || "");
|
|
4121
|
-
const getIdentifier = React$1.useCallback((v) => {
|
|
4122
|
-
if (!v) return "";
|
|
4123
|
-
if (typeof v === "object" && v !== null) {
|
|
4124
|
-
const obj = v;
|
|
4125
|
-
return String(obj.id || obj._id || obj.filename || "");
|
|
4126
|
-
}
|
|
4127
|
-
const strVal = String(v);
|
|
4128
|
-
if (strVal.includes("/")) return strVal.split("/").pop() || strVal;
|
|
4129
|
-
return strVal;
|
|
4130
|
-
}, []);
|
|
4131
|
-
const sVals = React$1.useMemo(() => {
|
|
4132
|
-
return (selectedValues || []).map(getIdentifier).filter(Boolean);
|
|
4133
|
-
}, [selectedValues, getIdentifier]);
|
|
4134
3878
|
const handleConfirm = () => {
|
|
4135
|
-
if (onConfirm)
|
|
4136
|
-
const selectedItems = sVals.map((val) => {
|
|
4137
|
-
return media?.find((m) => m.id === val || m.filename === val || m.url === val);
|
|
4138
|
-
}).filter(Boolean);
|
|
4139
|
-
onConfirm(sVals, selectedItems);
|
|
4140
|
-
}
|
|
3879
|
+
if (onConfirm) onConfirm(sVals, selectedItems);
|
|
4141
3880
|
onOpenChange(false);
|
|
4142
3881
|
};
|
|
4143
3882
|
return /* @__PURE__ */ jsx(Dialog, {
|
|
@@ -4149,366 +3888,488 @@ function MediaLibraryDialog({ collection, isOpen, onOpenChange, selectedValues,
|
|
|
4149
3888
|
value: activeTab,
|
|
4150
3889
|
onValueChange: setActiveTab,
|
|
4151
3890
|
className: "dy-flex dy-h-full dy-flex-col",
|
|
4152
|
-
children: [
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4169
|
-
|
|
3891
|
+
children: [
|
|
3892
|
+
/* @__PURE__ */ jsxs("div", {
|
|
3893
|
+
className: "dy-flex dy-flex-col dy-gap-4 dy-border-b dy-bg-muted/20 dy-px-4 dy-py-4 sm:dy-flex-row sm:dy-items-center sm:dy-justify-between sm:dy-px-6",
|
|
3894
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
3895
|
+
className: "dy-flex dy-min-w-0 dy-items-center dy-gap-3 sm:dy-gap-4",
|
|
3896
|
+
children: [/* @__PURE__ */ jsx(DialogTitle, {
|
|
3897
|
+
className: "dy-min-w-0 dy-truncate dy-text-lg dy-font-serif dy-font-bold dy-tracking-tight sm:dy-text-xl",
|
|
3898
|
+
children: collectionLabel
|
|
3899
|
+
}), multiple && sVals.length > 0 && /* @__PURE__ */ jsxs("div", {
|
|
3900
|
+
className: "dy-flex dy-items-center dy-gap-2 dy-px-3 dy-py-1 dy-bg-primary/10 dy-rounded-full dy-border dy-border-primary/20 dy-animate-in dy-fade-in dy-slide-in-from-left-2",
|
|
3901
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
3902
|
+
className: "dy-text-xs dy-font-bold dy-text-primary",
|
|
3903
|
+
children: [sVals.length, " Selected"]
|
|
3904
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
3905
|
+
variant: "ghost",
|
|
3906
|
+
size: "icon",
|
|
3907
|
+
className: "dy-h-4 dy-w-4 dy-text-primary hover:dy-bg-transparent",
|
|
3908
|
+
onClick: handleConfirm,
|
|
3909
|
+
children: /* @__PURE__ */ jsx(Check, { className: "dy-h-3 dy-w-3" })
|
|
3910
|
+
})]
|
|
4170
3911
|
})]
|
|
3912
|
+
}), /* @__PURE__ */ jsxs(TabsList, {
|
|
3913
|
+
className: "dy-grid dy-h-auto dy-grid-cols-3 dy-bg-muted/50 dy-p-1 dy-rounded-lg sm:dy-flex",
|
|
3914
|
+
children: [
|
|
3915
|
+
/* @__PURE__ */ jsxs(TabsTrigger, {
|
|
3916
|
+
value: "library",
|
|
3917
|
+
className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
|
|
3918
|
+
children: [/* @__PURE__ */ jsx(Library, { className: "dy-h-3.5 dy-w-3.5" }), " Library"]
|
|
3919
|
+
}),
|
|
3920
|
+
/* @__PURE__ */ jsxs(TabsTrigger, {
|
|
3921
|
+
value: "upload",
|
|
3922
|
+
className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
|
|
3923
|
+
children: [
|
|
3924
|
+
/* @__PURE__ */ jsx(Upload, { className: "dy-h-3.5 dy-w-3.5" }),
|
|
3925
|
+
" Upload",
|
|
3926
|
+
queue.filter((q) => q.status === "uploading" || q.status === "queued").length > 0 && /* @__PURE__ */ jsx("span", {
|
|
3927
|
+
className: "dy-ml-1 dy-px-1.5 dy-py-0.5 dy-text-[9px] dy-bg-primary dy-text-white dy-rounded-full dy-animate-pulse",
|
|
3928
|
+
children: queue.filter((q) => q.status === "uploading" || q.status === "queued").length
|
|
3929
|
+
})
|
|
3930
|
+
]
|
|
3931
|
+
}),
|
|
3932
|
+
/* @__PURE__ */ jsxs(TabsTrigger, {
|
|
3933
|
+
value: "external",
|
|
3934
|
+
className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
|
|
3935
|
+
children: [/* @__PURE__ */ jsx(Globe, { className: "dy-h-3.5 dy-w-3.5" }), " External"]
|
|
3936
|
+
})
|
|
3937
|
+
]
|
|
4171
3938
|
})]
|
|
4172
|
-
}),
|
|
4173
|
-
|
|
3939
|
+
}),
|
|
3940
|
+
hasStorageError && /* @__PURE__ */ jsx("div", {
|
|
3941
|
+
className: "dy-px-4 dy-pt-4 sm:dy-px-6",
|
|
3942
|
+
children: /* @__PURE__ */ jsx(StorageNotConfiguredNotice, { variant: "banner" })
|
|
3943
|
+
}),
|
|
3944
|
+
/* @__PURE__ */ jsxs("div", {
|
|
3945
|
+
className: "dy-min-h-0 dy-flex-1 dy-overflow-hidden",
|
|
4174
3946
|
children: [
|
|
4175
|
-
/* @__PURE__ */
|
|
3947
|
+
/* @__PURE__ */ jsx(TabsContent, {
|
|
4176
3948
|
value: "library",
|
|
4177
|
-
className: "dy-
|
|
4178
|
-
children:
|
|
4179
|
-
|
|
4180
|
-
/* @__PURE__ */ jsxs(TabsTrigger, {
|
|
4181
|
-
value: "upload",
|
|
4182
|
-
className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
|
|
4183
|
-
children: [/* @__PURE__ */ jsx(Upload, { className: "dy-h-3.5 dy-w-3.5" }), " Upload"]
|
|
4184
|
-
}),
|
|
4185
|
-
/* @__PURE__ */ jsxs(TabsTrigger, {
|
|
4186
|
-
value: "external",
|
|
4187
|
-
className: "dy-gap-1.5 dy-rounded-lg dy-px-2 dy-font-bold dy-text-[10px] dy-uppercase dy-tracking-wider dy-transition-all data-[state=active]:dy-bg-background data-[state=active]:dy-shadow-sm sm:dy-gap-2 sm:dy-px-4 sm:dy-text-xs",
|
|
4188
|
-
children: [/* @__PURE__ */ jsx(Globe, { className: "dy-h-3.5 dy-w-3.5" }), " External"]
|
|
4189
|
-
})
|
|
4190
|
-
]
|
|
4191
|
-
})]
|
|
4192
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
4193
|
-
className: "dy-min-h-0 dy-flex-1 dy-overflow-hidden",
|
|
4194
|
-
children: [
|
|
4195
|
-
/* @__PURE__ */ jsx(TabsContent, {
|
|
4196
|
-
value: "library",
|
|
4197
|
-
className: "dy-h-full dy-m-0 dy-p-0 focus-visible:dy-ring-0",
|
|
4198
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
4199
|
-
className: "dy-flex dy-h-full dy-flex-col md:dy-flex-row",
|
|
4200
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
4201
|
-
className: "dy-flex dy-min-h-0 dy-flex-1 dy-flex-col dy-space-y-4 dy-border-b dy-p-4 md:dy-border-b-0 md:dy-border-r md:dy-p-6",
|
|
3949
|
+
className: "dy-h-full dy-m-0 dy-p-0 focus-visible:dy-ring-0",
|
|
3950
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
3951
|
+
className: "dy-flex dy-h-full dy-flex-col md:dy-flex-row",
|
|
4202
3952
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
4203
|
-
className: "dy-flex dy-flex-col dy-
|
|
3953
|
+
className: "dy-flex dy-min-h-0 dy-flex-1 dy-flex-col dy-space-y-4 dy-border-b dy-p-4 md:dy-border-b-0 md:dy-border-r md:dy-p-6",
|
|
4204
3954
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
4205
|
-
className: "dy-
|
|
4206
|
-
children: [/* @__PURE__ */
|
|
4207
|
-
|
|
4208
|
-
className: "dy-
|
|
4209
|
-
|
|
4210
|
-
|
|
4211
|
-
|
|
4212
|
-
|
|
4213
|
-
|
|
4214
|
-
|
|
4215
|
-
|
|
4216
|
-
variant: "ghost",
|
|
4217
|
-
size: "sm",
|
|
4218
|
-
className: "dy-h-8 dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-px-3 hover:dy-bg-background dy-rounded-md",
|
|
4219
|
-
onClick: () => {
|
|
4220
|
-
media?.forEach((item) => {
|
|
4221
|
-
if (!sVals.some((v) => v === item.id || v === item.filename || v === item.url)) onSelect(item.id, item);
|
|
4222
|
-
});
|
|
4223
|
-
},
|
|
4224
|
-
children: "Select All"
|
|
4225
|
-
}),
|
|
4226
|
-
/* @__PURE__ */ jsx("div", { className: "dy-hidden dy-w-px dy-h-4 dy-bg-border/50 dy-mx-1 sm:dy-block" }),
|
|
4227
|
-
/* @__PURE__ */ jsx(Button, {
|
|
4228
|
-
variant: "ghost",
|
|
4229
|
-
size: "sm",
|
|
4230
|
-
className: "dy-h-8 dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-px-3 dy-text-destructive hover:dy-text-destructive hover:dy-bg-destructive/10 dy-rounded-md",
|
|
4231
|
-
onClick: () => {
|
|
4232
|
-
sVals.forEach((val) => {
|
|
4233
|
-
const item = media?.find((m) => m.id === val || m.filename === val || m.url === val);
|
|
4234
|
-
onSelect(val, item);
|
|
4235
|
-
});
|
|
4236
|
-
},
|
|
4237
|
-
children: "Clear"
|
|
4238
|
-
})
|
|
4239
|
-
]
|
|
4240
|
-
})]
|
|
4241
|
-
}), /* @__PURE__ */ jsx(ScrollArea, {
|
|
4242
|
-
className: "dy-min-h-0 dy-flex-1 dy--mx-2 dy-px-2",
|
|
4243
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
4244
|
-
className: "dy-grid dy-grid-cols-2 dy-gap-3 dy-pb-4 sm:dy-grid-cols-3 md:dy-grid-cols-4 lg:dy-grid-cols-5 lg:dy-gap-4",
|
|
4245
|
-
children: [media?.map((item) => /* @__PURE__ */ jsxs("button", {
|
|
4246
|
-
type: "button",
|
|
4247
|
-
onClick: () => {
|
|
4248
|
-
if (multiple) {
|
|
4249
|
-
onSelect(item.id, item);
|
|
4250
|
-
setSelectedItem(item);
|
|
4251
|
-
} else if (selectedItem?.id === item.id) {
|
|
4252
|
-
onSelect(item.id, item);
|
|
4253
|
-
onOpenChange(false);
|
|
4254
|
-
} else setSelectedItem(item);
|
|
4255
|
-
},
|
|
4256
|
-
className: cn("dy-relative dy-group dy-rounded-2xl dy-overflow-hidden dy-border-2 dy-aspect-square dy-transition-all hover:dy-scale-[1.02] active:dy-scale-95 dy-shadow-sm dy-bg-muted/5", selectedItem?.id === item.id ? "dy-border-primary dy-ring-4 dy-ring-primary/10 dy-shadow-lg dy-shadow-primary/5" : "dy-border-border/40 hover:dy-border-border"),
|
|
3955
|
+
className: "dy-flex dy-flex-col dy-gap-3 sm:dy-flex-row sm:dy-items-center sm:dy-gap-4",
|
|
3956
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
3957
|
+
className: "dy-relative dy-flex-1 dy-group",
|
|
3958
|
+
children: [/* @__PURE__ */ jsx(Search, { className: "dy-absolute dy-left-3.5 dy-top-1/2 dy--translate-y-1/2 dy-h-4 dy-w-4 dy-text-muted-foreground dy-group-focus-within:dy-text-primary dy-transition-colors" }), /* @__PURE__ */ jsx(Input, {
|
|
3959
|
+
placeholder: "Search your media library...",
|
|
3960
|
+
className: "dy-pl-11 dy-h-11 dy-rounded-lg dy-border-muted dy-bg-muted/10 focus:dy-bg-background dy-transition-all",
|
|
3961
|
+
value: searchQuery,
|
|
3962
|
+
onChange: (e) => setSearchQuery(e.target.value)
|
|
3963
|
+
})]
|
|
3964
|
+
}), multiple && /* @__PURE__ */ jsxs("div", {
|
|
3965
|
+
className: "dy-grid dy-grid-cols-2 dy-items-center dy-gap-1 dy-rounded-lg dy-bg-muted/30 dy-p-1 sm:dy-flex",
|
|
4257
3966
|
children: [
|
|
4258
|
-
/* @__PURE__ */ jsx(
|
|
4259
|
-
|
|
4260
|
-
|
|
4261
|
-
className: "dy-
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
3967
|
+
/* @__PURE__ */ jsx(Button, {
|
|
3968
|
+
variant: "ghost",
|
|
3969
|
+
size: "sm",
|
|
3970
|
+
className: "dy-h-8 dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-px-3 hover:dy-bg-background dy-rounded-md",
|
|
3971
|
+
onClick: () => {
|
|
3972
|
+
media?.forEach((item) => {
|
|
3973
|
+
if (!sVals.some((v) => v === item.id || v === item.filename || v === item.url)) {
|
|
3974
|
+
select(item.id);
|
|
3975
|
+
onSelect(item.id, item);
|
|
3976
|
+
}
|
|
3977
|
+
});
|
|
3978
|
+
},
|
|
3979
|
+
children: "Select All"
|
|
4266
3980
|
}),
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
4276
|
-
|
|
4277
|
-
|
|
4278
|
-
|
|
4279
|
-
|
|
3981
|
+
/* @__PURE__ */ jsx("div", { className: "dy-hidden dy-w-px dy-h-4 dy-bg-border/50 dy-mx-1 sm:dy-block" }),
|
|
3982
|
+
/* @__PURE__ */ jsx(Button, {
|
|
3983
|
+
variant: "ghost",
|
|
3984
|
+
size: "sm",
|
|
3985
|
+
className: "dy-h-8 dy-text-[10px] dy-font-bold dy-uppercase dy-tracking-wider dy-px-3 dy-text-destructive hover:dy-text-destructive hover:dy-bg-destructive/10 dy-rounded-md",
|
|
3986
|
+
onClick: () => {
|
|
3987
|
+
clearSelection();
|
|
3988
|
+
sVals.forEach((val) => {
|
|
3989
|
+
const item = media?.find((m) => m.id === val || m.filename === val || m.url === val);
|
|
3990
|
+
onSelect(val, item);
|
|
3991
|
+
});
|
|
3992
|
+
},
|
|
3993
|
+
children: "Clear"
|
|
4280
3994
|
})
|
|
4281
3995
|
]
|
|
4282
|
-
}, item.id)), /* @__PURE__ */ jsx("div", {
|
|
4283
|
-
ref: sentinelRef,
|
|
4284
|
-
className: "dy-w-full dy-col-span-full dy-flex dy-justify-center dy-py-4",
|
|
4285
|
-
children: isFetchingNextPage && /* @__PURE__ */ jsx("div", { className: "dy-animate-spin dy-rounded-full dy-border-2 dy-border-primary/20 dy-border-t-primary dy-h-6 dy-w-6" })
|
|
4286
3996
|
})]
|
|
4287
|
-
})
|
|
4288
|
-
|
|
4289
|
-
|
|
4290
|
-
|
|
4291
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
|
|
4298
|
-
|
|
4299
|
-
|
|
4300
|
-
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4304
|
-
|
|
4305
|
-
|
|
4306
|
-
|
|
4307
|
-
|
|
3997
|
+
}), /* @__PURE__ */ jsx(ScrollArea, {
|
|
3998
|
+
className: "dy-min-h-0 dy-flex-1 dy--mx-2 dy-px-2",
|
|
3999
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
4000
|
+
className: "dy-grid dy-grid-cols-2 dy-gap-3 dy-pb-4 sm:dy-grid-cols-3 md:dy-grid-cols-4 lg:dy-grid-cols-5 lg:dy-gap-4",
|
|
4001
|
+
children: [media?.map((item) => {
|
|
4002
|
+
const sourceInfo = getMediaSourceInfo(item);
|
|
4003
|
+
return /* @__PURE__ */ jsxs("button", {
|
|
4004
|
+
type: "button",
|
|
4005
|
+
onClick: () => {
|
|
4006
|
+
if (multiple) {
|
|
4007
|
+
if (sVals.some((v) => v === item.id || v === item.filename || v === item.url)) deselect(item.id);
|
|
4008
|
+
else select(item.id);
|
|
4009
|
+
onSelect(item.id, item);
|
|
4010
|
+
setSelectedItem(item);
|
|
4011
|
+
} else if (selectedItem?.id === item.id) {
|
|
4012
|
+
onSelect(item.id, item);
|
|
4013
|
+
onOpenChange(false);
|
|
4014
|
+
} else setSelectedItem(item);
|
|
4015
|
+
},
|
|
4016
|
+
className: cn("dy-relative dy-group dy-rounded-lg dy-overflow-hidden dy-border-2 dy-aspect-square dy-transition-all hover:dy-scale-[1.02] active:dy-scale-95 dy-shadow-sm dy-bg-muted/5", selectedItem?.id === item.id ? "dy-border-primary dy-ring-4 dy-ring-primary/10 dy-shadow-lg dy-shadow-primary/5" : "dy-border-border/40 hover:dy-border-border"),
|
|
4017
|
+
children: [
|
|
4018
|
+
/* @__PURE__ */ jsx("img", {
|
|
4019
|
+
src: getPreviewUrl(item),
|
|
4020
|
+
alt: item.filename,
|
|
4021
|
+
className: "dy-object-cover dy-w-full dy-h-full"
|
|
4022
|
+
}),
|
|
4023
|
+
/* @__PURE__ */ jsx("div", {
|
|
4024
|
+
className: "dy-absolute dy-top-2 dy-left-2 dy-z-10",
|
|
4025
|
+
children: sourceInfo.source === "external" ? /* @__PURE__ */ jsxs("span", {
|
|
4026
|
+
className: "dy-inline-flex dy-items-center dy-gap-1 dy-px-2 dy-py-0.5 dy-rounded-md dy-bg-sky-950/80 dy-backdrop-blur-md dy-text-sky-300 dy-text-[9px] dy-font-black dy-uppercase dy-tracking-wider dy-border dy-border-sky-400/30 dy-shadow-md",
|
|
4027
|
+
children: [/* @__PURE__ */ jsx(Globe, { className: "dy-h-2.5 dy-w-2.5" }), sourceInfo.type === "youtube" ? "YOUTUBE" : sourceInfo.type === "vimeo" ? "VIMEO" : "EXTERNAL"]
|
|
4028
|
+
}) : /* @__PURE__ */ jsx("span", {
|
|
4029
|
+
className: "dy-inline-flex dy-items-center dy-gap-1 dy-px-1.5 dy-py-0.5 dy-rounded-md dy-bg-black/60 dy-backdrop-blur-md dy-text-white/90 dy-text-[8px] dy-font-bold dy-uppercase dy-tracking-wider dy-border dy-border-white/20",
|
|
4030
|
+
children: /* @__PURE__ */ jsx(HardDrive, { className: "dy-h-2.5 dy-w-2.5" })
|
|
4031
|
+
})
|
|
4032
|
+
}),
|
|
4033
|
+
sVals.some((v) => v === item.id || v === item.filename || v === item.url) && /* @__PURE__ */ jsx("div", {
|
|
4034
|
+
className: "dy-absolute dy-top-2.5 dy-right-2.5 dy-z-20 dy-h-7 dy-w-7 dy-bg-primary dy-rounded-full dy-flex dy-items-center dy-justify-center dy-text-white dy-shadow-xl dy-animate-in dy-zoom-in dy-border-2 dy-border-white",
|
|
4035
|
+
children: /* @__PURE__ */ jsx(Check, { className: "dy-h-4 dy-w-4" })
|
|
4036
|
+
}),
|
|
4037
|
+
(item.mimeType?.startsWith("video/") || item.mimeType === "video/youtube" || item.mimeType === "video/vimeo" || item.mimeType === "video/external") && /* @__PURE__ */ jsx("div", {
|
|
4038
|
+
className: "dy-absolute dy-inset-0 dy-flex dy-items-center dy-justify-center dy-bg-black/20 dy-group-hover:dy-bg-black/40 dy-transition-colors",
|
|
4039
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
4040
|
+
className: "dy-h-10 dy-w-10 dy-bg-background/20 dy-backdrop-blur-md dy-rounded-full dy-flex dy-items-center dy-justify-center dy-border dy-border-white/30 dy-shadow-2xl",
|
|
4041
|
+
children: /* @__PURE__ */ jsx(Video, { className: "dy-h-5 dy-w-5 dy-text-white" })
|
|
4042
|
+
})
|
|
4043
|
+
}),
|
|
4044
|
+
/* @__PURE__ */ jsx("div", {
|
|
4045
|
+
className: "dy-absolute dy-inset-x-0 dy-bottom-0 dy-p-2.5 dy-bg-gradient-to-t dy-from-black/80 dy-via-black/40 dy-to-transparent dy-opacity-100 dy-transition-opacity sm:dy-opacity-0 sm:dy-group-hover:dy-opacity-100",
|
|
4046
|
+
children: /* @__PURE__ */ jsx("p", {
|
|
4047
|
+
className: "dy-text-[10px] dy-text-white dy-truncate dy-font-bold dy-uppercase dy-tracking-wider",
|
|
4048
|
+
children: getDisplayFilename(item.filename)
|
|
4049
|
+
})
|
|
4050
|
+
})
|
|
4051
|
+
]
|
|
4052
|
+
}, item.id);
|
|
4053
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4054
|
+
ref: sentinelRef,
|
|
4055
|
+
className: "dy-w-full dy-col-span-full dy-flex dy-justify-center dy-py-4",
|
|
4056
|
+
children: isFetchingMedia && /* @__PURE__ */ jsx("div", { className: "dy-animate-spin dy-rounded-full dy-border-2 dy-border-primary/20 dy-border-t-primary dy-h-6 dy-w-6" })
|
|
4057
|
+
})]
|
|
4058
|
+
})
|
|
4059
|
+
})]
|
|
4060
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4061
|
+
className: "dy-flex dy-max-h-[42dvh] dy-w-full dy-flex-col dy-gap-4 dy-overflow-y-auto dy-border-muted/20 dy-bg-muted/5 dy-p-4 md:dy-h-full md:dy-max-h-none md:dy-w-80 md:dy-gap-6 md:dy-border-l md:dy-p-6",
|
|
4062
|
+
children: selectedItem ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("div", {
|
|
4063
|
+
className: "dy-grid dy-grid-cols-[88px_minmax(0,1fr)] dy-gap-4 md:dy-block md:dy-space-y-5",
|
|
4064
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
4065
|
+
className: "dy-aspect-square dy-rounded-lg dy-overflow-hidden dy-border dy-bg-background dy-shadow-xl dy-group dy-relative dy-ring-1 dy-ring-border/50 md:dy-rounded-3xl md:dy-shadow-2xl",
|
|
4066
|
+
children: [/* @__PURE__ */ jsx("img", {
|
|
4067
|
+
src: getPreviewUrl(selectedItem),
|
|
4068
|
+
className: "dy-w-full dy-h-full dy-object-contain dy-p-2",
|
|
4069
|
+
alt: ""
|
|
4070
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4071
|
+
className: "dy-absolute dy-inset-0 dy-bg-black/40 dy-opacity-0 dy-group-hover:dy-opacity-100 dy-transition-opacity dy-flex dy-items-center dy-justify-center dy-backdrop-blur-sm",
|
|
4072
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
4073
|
+
variant: "secondary",
|
|
4074
|
+
size: "sm",
|
|
4075
|
+
className: "dy-rounded-full dy-shadow-lg dy-font-bold",
|
|
4076
|
+
onClick: () => window.open(getPreviewUrl(selectedItem), "_blank"),
|
|
4077
|
+
children: "View Full"
|
|
4078
|
+
})
|
|
4079
|
+
})]
|
|
4080
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
4081
|
+
className: "dy-space-y-2",
|
|
4082
|
+
children: [/* @__PURE__ */ jsx("h4", {
|
|
4083
|
+
className: "dy-font-bold dy-text-sm dy-truncate dy-leading-tight",
|
|
4084
|
+
title: selectedItem.filename,
|
|
4085
|
+
children: getDisplayFilename(selectedItem.filename)
|
|
4086
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
4087
|
+
className: "dy-flex dy-flex-wrap dy-items-center dy-gap-2",
|
|
4088
|
+
children: [(() => {
|
|
4089
|
+
const sInfo = getMediaSourceInfo(selectedItem);
|
|
4090
|
+
return /* @__PURE__ */ jsx("span", {
|
|
4091
|
+
className: cn("dy-text-[9px] dy-font-black dy-uppercase dy-tracking-widest dy-px-2 dy-py-1 dy-rounded-md dy-border", sInfo.source === "external" ? "dy-bg-sky-500/10 dy-text-sky-600 dy-border-sky-500/20" : "dy-bg-primary/10 dy-text-primary dy-border-primary/10"),
|
|
4092
|
+
children: sInfo.label
|
|
4093
|
+
});
|
|
4094
|
+
})(), /* @__PURE__ */ jsx("span", {
|
|
4095
|
+
className: "dy-text-[10px] dy-font-bold dy-text-muted-foreground/60",
|
|
4096
|
+
children: selectedItem.filesize ? `${(selectedItem.filesize / 1024).toFixed(1)} KB` : "External Asset"
|
|
4097
|
+
})]
|
|
4098
|
+
})]
|
|
4308
4099
|
})]
|
|
4309
|
-
}), /* @__PURE__ */
|
|
4310
|
-
className: "dy-space-y-
|
|
4311
|
-
children: [/* @__PURE__ */ jsx(
|
|
4312
|
-
className: "dy-
|
|
4313
|
-
|
|
4314
|
-
|
|
4100
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4101
|
+
className: "dy-space-y-3 dy-border-t dy-border-muted/20 dy-pt-4 md:dy-pt-6",
|
|
4102
|
+
children: multiple ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Button, {
|
|
4103
|
+
className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-sm dy-font-bold dy-tracking-tight dy-transition-all",
|
|
4104
|
+
variant: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "outline" : "default",
|
|
4105
|
+
onClick: () => {
|
|
4106
|
+
if (sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url)) deselect(selectedItem.id);
|
|
4107
|
+
else select(selectedItem.id);
|
|
4108
|
+
onSelect(selectedItem.id, selectedItem);
|
|
4109
|
+
},
|
|
4110
|
+
children: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "Deselect Item" : "Add to Selection"
|
|
4111
|
+
}), sVals.length > 0 && /* @__PURE__ */ jsxs(Button, {
|
|
4112
|
+
className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-xl dy-bg-primary hover:dy-bg-primary/90 dy-font-bold dy-tracking-tight dy-transition-all dy-group",
|
|
4113
|
+
onClick: handleConfirm,
|
|
4114
|
+
children: [/* @__PURE__ */ jsxs("span", { children: [
|
|
4115
|
+
"Confirm ",
|
|
4116
|
+
sVals.length,
|
|
4117
|
+
" ",
|
|
4118
|
+
sVals.length === 1 ? "Asset" : "Assets"
|
|
4119
|
+
] }), /* @__PURE__ */ jsx(Sparkles, { className: "dy-ml-2 dy-h-4 dy-w-4 dy-opacity-50 dy-group-hover:dy-opacity-100 dy-group-hover:dy-scale-110 dy-transition-all" })]
|
|
4120
|
+
})] }) : /* @__PURE__ */ jsx(Button, {
|
|
4121
|
+
className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-lg dy-font-bold dy-tracking-tight dy-bg-primary hover:dy-bg-primary/90 dy-transition-all",
|
|
4122
|
+
onClick: () => {
|
|
4123
|
+
onSelect(selectedItem.id, selectedItem);
|
|
4124
|
+
onOpenChange(false);
|
|
4125
|
+
},
|
|
4126
|
+
children: "Select Media"
|
|
4127
|
+
})
|
|
4128
|
+
})] }) : /* @__PURE__ */ jsxs("div", {
|
|
4129
|
+
className: "dy-flex-1 dy-flex dy-flex-col dy-items-center dy-justify-center dy-text-center dy-space-y-5 dy-text-muted-foreground/30",
|
|
4130
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
4131
|
+
className: "dy-p-6 dy-bg-muted/10 dy-rounded-full dy-border dy-border-muted/20 dy-shadow-inner",
|
|
4132
|
+
children: /* @__PURE__ */ jsx(Image, { className: "dy-h-10 dy-w-10" })
|
|
4315
4133
|
}), /* @__PURE__ */ jsxs("div", {
|
|
4316
|
-
className: "dy-
|
|
4317
|
-
children: [/* @__PURE__ */ jsx("
|
|
4318
|
-
className: "dy-text-
|
|
4319
|
-
children:
|
|
4320
|
-
}), /* @__PURE__ */ jsx("
|
|
4321
|
-
className: "dy-text-[10px] dy-font-
|
|
4322
|
-
children:
|
|
4134
|
+
className: "dy-space-y-1",
|
|
4135
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
4136
|
+
className: "dy-text-xs dy-font-bold dy-uppercase dy-tracking-widest",
|
|
4137
|
+
children: "No Selection"
|
|
4138
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
4139
|
+
className: "dy-text-[10px] dy-font-medium dy-max-w-[150px] dy-leading-relaxed",
|
|
4140
|
+
children: "Select an item from the library to view details and metadata"
|
|
4323
4141
|
})]
|
|
4324
4142
|
})]
|
|
4325
|
-
})]
|
|
4326
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
4327
|
-
className: "dy-space-y-3 dy-border-t dy-border-muted/20 dy-pt-4 md:dy-pt-6",
|
|
4328
|
-
children: multiple ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Button, {
|
|
4329
|
-
className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-sm dy-font-bold dy-tracking-tight dy-transition-all",
|
|
4330
|
-
variant: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "outline" : "default",
|
|
4331
|
-
onClick: () => onSelect(selectedItem.id, selectedItem),
|
|
4332
|
-
children: sVals.some((v) => v === selectedItem.id || v === selectedItem.filename || v === selectedItem.url) ? "Deselect Item" : "Add to Selection"
|
|
4333
|
-
}), sVals.length > 0 && /* @__PURE__ */ jsxs(Button, {
|
|
4334
|
-
className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-xl dy-bg-primary hover:dy-bg-primary/90 dy-font-bold dy-tracking-tight dy-transition-all dy-group",
|
|
4335
|
-
onClick: handleConfirm,
|
|
4336
|
-
children: [/* @__PURE__ */ jsxs("span", { children: [
|
|
4337
|
-
"Confirm ",
|
|
4338
|
-
sVals.length,
|
|
4339
|
-
" ",
|
|
4340
|
-
sVals.length === 1 ? "Asset" : "Assets"
|
|
4341
|
-
] }), /* @__PURE__ */ jsx(Sparkles, { className: "dy-ml-2 dy-h-4 dy-w-4 dy-opacity-50 dy-group-hover:dy-opacity-100 dy-group-hover:dy-scale-110 dy-transition-all" })]
|
|
4342
|
-
})] }) : /* @__PURE__ */ jsx(Button, {
|
|
4343
|
-
className: "dy-w-full dy-h-11 dy-rounded-lg dy-shadow-lg dy-font-bold dy-tracking-tight dy-bg-primary hover:dy-bg-primary/90 dy-transition-all",
|
|
4344
|
-
onClick: () => {
|
|
4345
|
-
onSelect(selectedItem.id, selectedItem);
|
|
4346
|
-
onOpenChange(false);
|
|
4347
|
-
},
|
|
4348
|
-
children: "Select Media"
|
|
4349
4143
|
})
|
|
4350
|
-
})]
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
className: "dy-text-[10px] dy-font-medium dy-max-w-[150px] dy-leading-relaxed",
|
|
4362
|
-
children: "Select an item from the library to view details and metadata"
|
|
4363
|
-
})]
|
|
4364
|
-
})]
|
|
4365
|
-
})
|
|
4366
|
-
})]
|
|
4367
|
-
})
|
|
4368
|
-
}),
|
|
4369
|
-
/* @__PURE__ */ jsx(TabsContent, {
|
|
4370
|
-
value: "upload",
|
|
4371
|
-
className: "dy-h-full dy-m-0 dy-p-4 focus-visible:dy-ring-0 sm:dy-p-8",
|
|
4372
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
4373
|
-
className: "dy-h-full dy-flex dy-flex-col dy-items-center dy-justify-center dy-border-2 dy-border-dashed dy-border-primary/20 dy-rounded-3xl dy-bg-primary/5 hover:dy-bg-primary/10 dy-transition-all dy-group dy-relative dy-overflow-hidden sm:dy-rounded-[2.5rem]",
|
|
4374
|
-
children: [
|
|
4375
|
-
/* @__PURE__ */ jsx("div", { className: "dy-absolute dy-inset-0 dy-bg-[radial-gradient(circle_at_center,var(--primary)_0%,transparent_100%)] dy-opacity-[0.03]" }),
|
|
4376
|
-
/* @__PURE__ */ jsx("input", {
|
|
4377
|
-
type: "file",
|
|
4378
|
-
id: "media-upload-dialog",
|
|
4379
|
-
className: "dy-hidden",
|
|
4380
|
-
onChange: handleUpload,
|
|
4381
|
-
disabled: isUploading
|
|
4382
|
-
}),
|
|
4383
|
-
/* @__PURE__ */ jsxs("label", {
|
|
4384
|
-
htmlFor: "media-upload-dialog",
|
|
4385
|
-
className: "dy-flex dy-flex-col dy-items-center dy-gap-5 dy-cursor-pointer dy-p-6 dy-text-center dy-relative dy-z-10 sm:dy-gap-8 sm:dy-p-12",
|
|
4144
|
+
})]
|
|
4145
|
+
})
|
|
4146
|
+
}),
|
|
4147
|
+
/* @__PURE__ */ jsx(TabsContent, {
|
|
4148
|
+
value: "upload",
|
|
4149
|
+
className: "dy-h-full dy-m-0 dy-p-4 focus-visible:dy-ring-0 sm:dy-p-6 dy-overflow-y-auto",
|
|
4150
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
4151
|
+
className: "dy-max-w-2xl dy-mx-auto dy-space-y-6",
|
|
4152
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
4153
|
+
...getRootProps(),
|
|
4154
|
+
className: cn("dy-flex dy-flex-col dy-items-center dy-justify-center dy-border-2 dy-border-dashed dy-rounded-3xl dy-p-8 dy-text-center dy-cursor-pointer dy-transition-all dy-relative dy-overflow-hidden sm:dy-p-10", isDragActive ? "dy-border-primary dy-bg-primary/10 dy-scale-[0.99]" : "dy-border-primary/20 dy-bg-primary/5 hover:dy-bg-primary/10"),
|
|
4386
4155
|
children: [
|
|
4156
|
+
/* @__PURE__ */ jsx("input", { ...getInputProps() }),
|
|
4387
4157
|
/* @__PURE__ */ jsx("div", {
|
|
4388
|
-
className: "dy-h-
|
|
4389
|
-
children: /* @__PURE__ */ jsx(Upload, { className: "dy-h-8 dy-w-8
|
|
4158
|
+
className: "dy-h-16 dy-w-16 dy-bg-background dy-rounded-full dy-flex dy-items-center dy-justify-center dy-text-primary dy-shadow-xl dy-border dy-border-primary/10 dy-mb-4",
|
|
4159
|
+
children: /* @__PURE__ */ jsx(Upload, { className: "dy-h-8 dy-w-8" })
|
|
4390
4160
|
}),
|
|
4391
4161
|
/* @__PURE__ */ jsxs("div", {
|
|
4392
|
-
className: "dy-space-y-
|
|
4393
|
-
children: [
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
|
|
4397
|
-
|
|
4398
|
-
|
|
4399
|
-
|
|
4162
|
+
className: "dy-space-y-1.5",
|
|
4163
|
+
children: [
|
|
4164
|
+
/* @__PURE__ */ jsx("p", {
|
|
4165
|
+
className: "dy-font-serif dy-font-bold dy-text-xl sm:dy-text-2xl",
|
|
4166
|
+
children: "Upload media assets"
|
|
4167
|
+
}),
|
|
4168
|
+
/* @__PURE__ */ jsx("p", {
|
|
4169
|
+
className: "dy-text-xs dy-text-muted-foreground/70 dy-font-medium sm:dy-text-sm",
|
|
4170
|
+
children: "Drag & drop images, videos, or documents here, or click to browse"
|
|
4171
|
+
}),
|
|
4172
|
+
/* @__PURE__ */ jsx("p", {
|
|
4173
|
+
className: "dy-text-[10px] dy-text-muted-foreground/50",
|
|
4174
|
+
children: "Supports JPEG, PNG, WebP, GIF, MP4, WebM, PDF. Images are automatically compressed."
|
|
4175
|
+
})
|
|
4176
|
+
]
|
|
4400
4177
|
}),
|
|
4401
4178
|
/* @__PURE__ */ jsx(Button, {
|
|
4402
4179
|
variant: "secondary",
|
|
4403
|
-
|
|
4180
|
+
size: "sm",
|
|
4181
|
+
className: "dy-mt-4 dy-rounded-full dy-px-6 dy-font-bold dy-pointer-events-none",
|
|
4404
4182
|
children: "Choose Files"
|
|
4405
4183
|
})
|
|
4406
4184
|
]
|
|
4407
|
-
})
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
className: "dy-text-2xl dy-font-serif dy-font-bold dy-tracking-tight sm:dy-text-3xl",
|
|
4425
|
-
children: "Add External Resource"
|
|
4426
|
-
}),
|
|
4427
|
-
/* @__PURE__ */ jsx("p", {
|
|
4428
|
-
className: "dy-text-sm dy-text-muted-foreground/70 dy-leading-relaxed dy-max-w-md dy-mx-auto",
|
|
4429
|
-
children: "Paste a link to any image, YouTube video, Vimeo link, or file to add it to your library without uploading."
|
|
4430
|
-
})
|
|
4431
|
-
]
|
|
4432
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
4433
|
-
className: "dy-space-y-5 sm:dy-space-y-6",
|
|
4434
|
-
children: [
|
|
4435
|
-
/* @__PURE__ */ jsxs("div", {
|
|
4436
|
-
className: "dy-flex dy-flex-col dy-gap-3 sm:dy-flex-row",
|
|
4437
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
4438
|
-
className: "dy-relative dy-flex-1",
|
|
4439
|
-
children: [/* @__PURE__ */ jsx(Link$1, { className: "dy-absolute dy-left-4 dy-top-1/2 dy--translate-y-1/2 dy-h-4 dy-w-4 dy-text-muted-foreground" }), /* @__PURE__ */ jsx(Input, {
|
|
4440
|
-
placeholder: "https://example.com/image.jpg or video link...",
|
|
4441
|
-
className: "dy-h-12 dy-rounded-2xl dy-shadow-xl dy-border-muted dy-bg-muted/5 dy-pl-12 dy-text-sm dy-font-medium focus:dy-bg-background dy-transition-all sm:dy-h-14 sm:dy-text-base",
|
|
4442
|
-
value: externalUrl,
|
|
4443
|
-
onChange: (e) => setExternalUrl(e.target.value)
|
|
4444
|
-
})]
|
|
4445
|
-
}), /* @__PURE__ */ jsx(Button, {
|
|
4446
|
-
onClick: handleExternalUrlSubmit,
|
|
4447
|
-
disabled: isAddingUrl || !externalUrl,
|
|
4448
|
-
className: "dy-h-12 dy-w-full dy-rounded-2xl dy-px-8 dy-font-bold dy-shadow-xl dy-shadow-primary/20 dy-bg-primary hover:dy-bg-primary/90 dy-transition-all active:dy-scale-95 sm:dy-h-14 sm:dy-w-auto sm:dy-px-10",
|
|
4449
|
-
children: isAddingUrl ? "Adding..." : "Add URL"
|
|
4450
|
-
})]
|
|
4451
|
-
}),
|
|
4452
|
-
/* @__PURE__ */ jsxs("div", {
|
|
4453
|
-
className: "dy-grid dy-grid-cols-1 dy-gap-3 sm:dy-grid-cols-2 sm:dy-gap-4",
|
|
4454
|
-
children: [/* @__PURE__ */ jsxs("div", {
|
|
4455
|
-
className: "dy-p-4 dy-rounded-2xl dy-bg-red-50/50 dy-border dy-border-red-100 dy-flex dy-items-start dy-gap-3",
|
|
4456
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
4457
|
-
className: "dy-mt-0.5 dy-p-1.5 dy-bg-red-100 dy-rounded-lg dy-text-red-600",
|
|
4458
|
-
children: /* @__PURE__ */ jsx(Video, { className: "dy-h-4 dy-w-4" })
|
|
4459
|
-
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
4460
|
-
className: "dy-text-xs dy-font-bold dy-text-red-900",
|
|
4461
|
-
children: "Video Streaming"
|
|
4462
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
4463
|
-
className: "dy-text-[10px] dy-text-red-700/70 dy-leading-relaxed dy-font-medium dy-mt-0.5",
|
|
4464
|
-
children: "Supports YouTube & Vimeo. We recommend these for the best performance and compatibility."
|
|
4465
|
-
})] })]
|
|
4466
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
4467
|
-
className: "dy-p-4 dy-rounded-2xl dy-bg-blue-50/50 dy-border dy-border-blue-100 dy-flex dy-items-start dy-gap-3",
|
|
4468
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
4469
|
-
className: "dy-mt-0.5 dy-p-1.5 dy-bg-blue-100 dy-rounded-lg dy-text-blue-600",
|
|
4470
|
-
children: /* @__PURE__ */ jsx(Image$1, { className: "dy-h-4 dy-w-4" })
|
|
4471
|
-
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
4472
|
-
className: "dy-text-xs dy-font-bold dy-text-blue-900",
|
|
4473
|
-
children: "External Assets"
|
|
4474
|
-
}), /* @__PURE__ */ jsx("p", {
|
|
4475
|
-
className: "dy-text-[10px] dy-text-blue-700/70 dy-leading-relaxed dy-font-medium dy-mt-0.5",
|
|
4476
|
-
children: "Add direct links to images or files from other CDNs. We'll automatically detect the type."
|
|
4477
|
-
})] })]
|
|
4185
|
+
}), queue.length > 0 && /* @__PURE__ */ jsxs("div", {
|
|
4186
|
+
className: "dy-space-y-3 dy-animate-in dy-fade-in dy-slide-in-from-bottom-2",
|
|
4187
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
4188
|
+
className: "dy-flex dy-items-center dy-justify-between",
|
|
4189
|
+
children: [/* @__PURE__ */ jsxs("h4", {
|
|
4190
|
+
className: "dy-text-xs dy-font-bold dy-uppercase dy-tracking-wider dy-text-muted-foreground",
|
|
4191
|
+
children: [
|
|
4192
|
+
"Upload Queue (",
|
|
4193
|
+
queue.length,
|
|
4194
|
+
")"
|
|
4195
|
+
]
|
|
4196
|
+
}), queue.some((q) => q.status === "completed") && /* @__PURE__ */ jsx(Button, {
|
|
4197
|
+
variant: "ghost",
|
|
4198
|
+
size: "sm",
|
|
4199
|
+
className: "dy-h-7 dy-text-[11px]",
|
|
4200
|
+
onClick: clearQueue,
|
|
4201
|
+
children: "Clear Completed"
|
|
4478
4202
|
})]
|
|
4479
|
-
}),
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
className: "dy-p-2 dy-bg-background dy-rounded-lg dy-shadow-sm dy-text-muted-foreground",
|
|
4484
|
-
children: /* @__PURE__ */ jsx(Info, { className: "dy-h-4 dy-w-4" })
|
|
4485
|
-
}), /* @__PURE__ */ jsxs("p", {
|
|
4486
|
-
className: "dy-text-[11px] dy-text-muted-foreground/80 dy-font-medium dy-leading-relaxed",
|
|
4203
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
4204
|
+
className: "dy-space-y-2",
|
|
4205
|
+
children: queue.map((item) => /* @__PURE__ */ jsxs("div", {
|
|
4206
|
+
className: "dy-flex dy-items-center dy-gap-3 dy-p-3 dy-rounded-xl dy-border dy-border-border/40 dy-bg-card dy-shadow-sm",
|
|
4487
4207
|
children: [
|
|
4488
|
-
/* @__PURE__ */ jsx("
|
|
4489
|
-
className: "dy-
|
|
4490
|
-
children: "
|
|
4491
|
-
}),
|
|
4492
|
-
" External videos are better streamed from",
|
|
4493
|
-
/* @__PURE__ */ jsx("span", {
|
|
4494
|
-
className: "dy-text-red-600 dy-font-bold dy-ml-1",
|
|
4495
|
-
children: "YouTube"
|
|
4208
|
+
/* @__PURE__ */ jsx("div", {
|
|
4209
|
+
className: "dy-h-9 dy-w-9 dy-rounded-lg dy-bg-muted/40 dy-flex dy-items-center dy-justify-center dy-flex-shrink-0",
|
|
4210
|
+
children: item.file.type.startsWith("image/") ? /* @__PURE__ */ jsx(Image, { className: "dy-h-4 dy-w-4 dy-text-primary" }) : item.file.type.startsWith("video/") ? /* @__PURE__ */ jsx(Video, { className: "dy-h-4 dy-w-4 dy-text-purple-500" }) : /* @__PURE__ */ jsx(FileIcon, { className: "dy-h-4 dy-w-4 dy-text-muted-foreground" })
|
|
4496
4211
|
}),
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4212
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4213
|
+
className: "dy-min-w-0 dy-flex-1 dy-space-y-1",
|
|
4214
|
+
children: [
|
|
4215
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4216
|
+
className: "dy-flex dy-items-center dy-justify-between",
|
|
4217
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
4218
|
+
className: "dy-text-xs dy-font-semibold dy-truncate dy-max-w-[200px] sm:dy-max-w-[300px]",
|
|
4219
|
+
title: item.file.name,
|
|
4220
|
+
children: item.file.name
|
|
4221
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
4222
|
+
className: "dy-text-[10px] dy-font-mono dy-text-muted-foreground",
|
|
4223
|
+
children: [(item.compressedSize / 1024).toFixed(1), " KB"]
|
|
4224
|
+
})]
|
|
4225
|
+
}),
|
|
4226
|
+
item.status === "uploading" && /* @__PURE__ */ jsxs("div", {
|
|
4227
|
+
className: "dy-space-y-1",
|
|
4228
|
+
children: [/* @__PURE__ */ jsx(Progress, {
|
|
4229
|
+
value: item.progress,
|
|
4230
|
+
className: "dy-h-1.5"
|
|
4231
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
4232
|
+
className: "dy-flex dy-justify-between dy-text-[9px] dy-text-muted-foreground",
|
|
4233
|
+
children: [/* @__PURE__ */ jsx("span", { children: "Uploading & processing..." }), /* @__PURE__ */ jsxs("span", { children: [item.progress, "%"] })]
|
|
4234
|
+
})]
|
|
4235
|
+
}),
|
|
4236
|
+
item.status === "completed" && /* @__PURE__ */ jsxs("p", {
|
|
4237
|
+
className: "dy-text-[10px] dy-text-emerald-600 dy-font-bold dy-flex dy-items-center dy-gap-1",
|
|
4238
|
+
children: [/* @__PURE__ */ jsx(Check, { className: "dy-h-3 dy-w-3" }), " Uploaded & added to selection"]
|
|
4239
|
+
}),
|
|
4240
|
+
item.status === "error" && /* @__PURE__ */ jsxs("p", {
|
|
4241
|
+
className: "dy-text-[10px] dy-text-destructive dy-font-bold dy-flex dy-items-center dy-gap-1",
|
|
4242
|
+
children: [
|
|
4243
|
+
/* @__PURE__ */ jsx(AlertCircle, { className: "dy-h-3 dy-w-3" }),
|
|
4244
|
+
" ",
|
|
4245
|
+
item.error || "Upload failed"
|
|
4246
|
+
]
|
|
4247
|
+
}),
|
|
4248
|
+
item.status === "queued" && /* @__PURE__ */ jsx("p", {
|
|
4249
|
+
className: "dy-text-[10px] dy-text-muted-foreground",
|
|
4250
|
+
children: "Waiting in queue..."
|
|
4251
|
+
})
|
|
4252
|
+
]
|
|
4501
4253
|
}),
|
|
4502
|
-
|
|
4254
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4255
|
+
className: "dy-flex dy-items-center dy-gap-1",
|
|
4256
|
+
children: [item.status === "error" && /* @__PURE__ */ jsx(Button, {
|
|
4257
|
+
size: "icon",
|
|
4258
|
+
variant: "ghost",
|
|
4259
|
+
className: "dy-h-7 dy-w-7 dy-text-muted-foreground hover:dy-text-primary",
|
|
4260
|
+
onClick: () => retryUpload(item.id),
|
|
4261
|
+
title: "Retry upload",
|
|
4262
|
+
children: /* @__PURE__ */ jsx(RotateCw, { className: "dy-h-3.5 dy-w-3.5" })
|
|
4263
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
4264
|
+
size: "icon",
|
|
4265
|
+
variant: "ghost",
|
|
4266
|
+
className: "dy-h-7 dy-w-7 dy-text-muted-foreground hover:dy-text-destructive",
|
|
4267
|
+
onClick: () => removeQueueItem(item.id),
|
|
4268
|
+
title: "Remove",
|
|
4269
|
+
children: /* @__PURE__ */ jsx(X, { className: "dy-h-3.5 dy-w-3.5" })
|
|
4270
|
+
})]
|
|
4271
|
+
})
|
|
4503
4272
|
]
|
|
4504
|
-
})
|
|
4505
|
-
})
|
|
4506
|
-
]
|
|
4507
|
-
})
|
|
4273
|
+
}, item.id))
|
|
4274
|
+
})]
|
|
4275
|
+
})]
|
|
4276
|
+
})
|
|
4277
|
+
}),
|
|
4278
|
+
/* @__PURE__ */ jsx(TabsContent, {
|
|
4279
|
+
value: "external",
|
|
4280
|
+
className: "dy-h-full dy-m-0 dy-overflow-y-auto dy-p-4 focus-visible:dy-ring-0 sm:dy-p-12",
|
|
4281
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
4282
|
+
className: "dy-mx-auto dy-max-w-2xl dy-space-y-6 dy-pt-2 sm:dy-space-y-10 sm:dy-pt-4",
|
|
4283
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
4284
|
+
className: "dy-text-center dy-space-y-3 sm:dy-space-y-4",
|
|
4285
|
+
children: [
|
|
4286
|
+
/* @__PURE__ */ jsx("div", {
|
|
4287
|
+
className: "dy-h-16 dy-w-16 dy-bg-primary/10 dy-text-primary dy-rounded-lg dy-flex dy-items-center dy-justify-center dy-mx-auto dy-mb-4 dy-shadow-sm dy-rotate-3 sm:dy-h-20 sm:dy-w-20 sm:dy-rounded-3xl sm:dy-mb-6",
|
|
4288
|
+
children: /* @__PURE__ */ jsx(Globe, { className: "dy-h-8 dy-w-8 sm:dy-h-10 sm:dy-w-10" })
|
|
4289
|
+
}),
|
|
4290
|
+
/* @__PURE__ */ jsx("h3", {
|
|
4291
|
+
className: "dy-text-2xl dy-font-serif dy-font-bold dy-tracking-tight sm:dy-text-3xl",
|
|
4292
|
+
children: "Add External Resource"
|
|
4293
|
+
}),
|
|
4294
|
+
/* @__PURE__ */ jsx("p", {
|
|
4295
|
+
className: "dy-text-sm dy-text-muted-foreground/70 dy-leading-relaxed dy-max-w-md dy-mx-auto",
|
|
4296
|
+
children: "Paste a link to any YouTube video, Vimeo link, direct video file, or image URL to add it to your library."
|
|
4297
|
+
})
|
|
4298
|
+
]
|
|
4299
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
4300
|
+
className: "dy-space-y-5 sm:dy-space-y-6",
|
|
4301
|
+
children: [
|
|
4302
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4303
|
+
className: "dy-flex dy-flex-col dy-gap-3 sm:dy-flex-row",
|
|
4304
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
4305
|
+
className: "dy-relative dy-flex-1",
|
|
4306
|
+
children: [/* @__PURE__ */ jsx(Link$1, { className: "dy-absolute dy-left-4 dy-top-1/2 dy--translate-y-1/2 dy-h-4 dy-w-4 dy-text-muted-foreground" }), /* @__PURE__ */ jsx(Input, {
|
|
4307
|
+
placeholder: "https://example.com/image.jpg or video link...",
|
|
4308
|
+
className: "dy-h-12 dy-rounded-lg dy-shadow-xl dy-border-muted dy-bg-muted/5 dy-pl-12 dy-text-sm dy-font-medium focus:dy-bg-background dy-transition-all sm:dy-h-14 sm:dy-text-base",
|
|
4309
|
+
value: externalUrl,
|
|
4310
|
+
onChange: (e) => setExternalUrl(e.target.value),
|
|
4311
|
+
onKeyDown: (e) => {
|
|
4312
|
+
if (e.key === "Enter" && !isAddingUrl && externalUrl.trim()) {
|
|
4313
|
+
e.preventDefault();
|
|
4314
|
+
handleExternalUrlSubmit();
|
|
4315
|
+
}
|
|
4316
|
+
}
|
|
4317
|
+
})]
|
|
4318
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
4319
|
+
onClick: handleExternalUrlSubmit,
|
|
4320
|
+
disabled: isAddingUrl || !externalUrl,
|
|
4321
|
+
className: "dy-h-12 dy-w-full dy-rounded-lg dy-px-8 dy-font-bold dy-shadow-xl dy-shadow-primary/20 dy-bg-primary hover:dy-bg-primary/90 dy-transition-all active:dy-scale-95 sm:dy-h-14 sm:dy-w-auto sm:dy-px-10",
|
|
4322
|
+
children: isAddingUrl ? "Adding..." : "Add URL"
|
|
4323
|
+
})]
|
|
4324
|
+
}),
|
|
4325
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4326
|
+
className: "dy-grid dy-grid-cols-1 dy-gap-3 sm:dy-grid-cols-2 sm:dy-gap-4",
|
|
4327
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
4328
|
+
className: "dy-p-4 dy-rounded-lg dy-bg-red-50/50 dy-border dy-border-red-100 dy-flex dy-items-start dy-gap-3",
|
|
4329
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
4330
|
+
className: "dy-mt-0.5 dy-p-1.5 dy-bg-red-100 dy-rounded-lg dy-text-red-600",
|
|
4331
|
+
children: /* @__PURE__ */ jsx(Video, { className: "dy-h-4 dy-w-4" })
|
|
4332
|
+
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
4333
|
+
className: "dy-text-xs dy-font-bold dy-text-red-900",
|
|
4334
|
+
children: "Video Streaming"
|
|
4335
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
4336
|
+
className: "dy-text-[10px] dy-text-red-700/70 dy-leading-relaxed dy-font-medium dy-mt-0.5",
|
|
4337
|
+
children: "Supports YouTube & Vimeo embeds, as well as direct MP4/WebM video links."
|
|
4338
|
+
})] })]
|
|
4339
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
4340
|
+
className: "dy-p-4 dy-rounded-lg dy-bg-blue-50/50 dy-border dy-border-blue-100 dy-flex dy-items-start dy-gap-3",
|
|
4341
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
4342
|
+
className: "dy-mt-0.5 dy-p-1.5 dy-bg-blue-100 dy-rounded-lg dy-text-blue-600",
|
|
4343
|
+
children: /* @__PURE__ */ jsx(Image, { className: "dy-h-4 dy-w-4" })
|
|
4344
|
+
}), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
|
|
4345
|
+
className: "dy-text-xs dy-font-bold dy-text-blue-900",
|
|
4346
|
+
children: "Direct Image Import"
|
|
4347
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
4348
|
+
className: "dy-text-[10px] dy-text-blue-700/70 dy-leading-relaxed dy-font-medium dy-mt-0.5",
|
|
4349
|
+
children: "Direct image links are fetched, compressed, and stored safely in your media library."
|
|
4350
|
+
})] })]
|
|
4351
|
+
})]
|
|
4352
|
+
}),
|
|
4353
|
+
/* @__PURE__ */ jsxs("div", {
|
|
4354
|
+
className: "dy-flex dy-items-center dy-gap-3 dy-p-4 dy-rounded-lg dy-bg-muted/20 dy-border dy-border-muted/30",
|
|
4355
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
4356
|
+
className: "dy-p-2 dy-bg-background dy-rounded-lg dy-shadow-sm dy-text-muted-foreground",
|
|
4357
|
+
children: /* @__PURE__ */ jsx(Info, { className: "dy-h-4 dy-w-4" })
|
|
4358
|
+
}), /* @__PURE__ */ jsxs("p", {
|
|
4359
|
+
className: "dy-text-[11px] dy-text-muted-foreground/80 dy-font-medium dy-leading-relaxed",
|
|
4360
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
4361
|
+
className: "dy-font-bold dy-text-foreground",
|
|
4362
|
+
children: "Pro Tip:"
|
|
4363
|
+
}), " External videos stream directly from YouTube or Vimeo to ensure fast global delivery without high storage costs."]
|
|
4364
|
+
})]
|
|
4365
|
+
})
|
|
4366
|
+
]
|
|
4367
|
+
})]
|
|
4368
|
+
})
|
|
4508
4369
|
})
|
|
4509
|
-
|
|
4510
|
-
|
|
4511
|
-
|
|
4370
|
+
]
|
|
4371
|
+
})
|
|
4372
|
+
]
|
|
4512
4373
|
})
|
|
4513
4374
|
})
|
|
4514
4375
|
});
|
|
@@ -4679,61 +4540,14 @@ function ImageCropDialog({ open, onOpenChange, imageUrl, filename = "image.jpg",
|
|
|
4679
4540
|
}
|
|
4680
4541
|
//#endregion
|
|
4681
4542
|
//#region src/components/forms/fields/media-picker.tsx
|
|
4682
|
-
/**
|
|
4683
|
-
* Compress a raster image file client-side using the Canvas API before upload.
|
|
4684
|
-
* - Skips SVGs, GIFs, and non-images (returned unchanged).
|
|
4685
|
-
* - Skips if the result would be larger than the original.
|
|
4686
|
-
* - maxDimension: longest edge cap in pixels (default 2048).
|
|
4687
|
-
* - quality: JPEG/WebP quality 0–1 (default 0.85).
|
|
4688
|
-
*/
|
|
4689
|
-
async function compressImage(file, maxDimension = 2048, quality = .85) {
|
|
4690
|
-
if (!file.type.startsWith("image/") || file.type === "image/svg+xml" || file.type === "image/gif") return file;
|
|
4691
|
-
return new Promise((resolve) => {
|
|
4692
|
-
const img = new Image();
|
|
4693
|
-
const objectUrl = URL.createObjectURL(file);
|
|
4694
|
-
img.onerror = () => {
|
|
4695
|
-
URL.revokeObjectURL(objectUrl);
|
|
4696
|
-
resolve(file);
|
|
4697
|
-
};
|
|
4698
|
-
img.onload = () => {
|
|
4699
|
-
URL.revokeObjectURL(objectUrl);
|
|
4700
|
-
let { width, height } = img;
|
|
4701
|
-
if (width > maxDimension || height > maxDimension) {
|
|
4702
|
-
const ratio = Math.min(maxDimension / width, maxDimension / height);
|
|
4703
|
-
width = Math.round(width * ratio);
|
|
4704
|
-
height = Math.round(height * ratio);
|
|
4705
|
-
}
|
|
4706
|
-
const canvas = document.createElement("canvas");
|
|
4707
|
-
canvas.width = width;
|
|
4708
|
-
canvas.height = height;
|
|
4709
|
-
const ctx = canvas.getContext("2d");
|
|
4710
|
-
if (!ctx) {
|
|
4711
|
-
resolve(file);
|
|
4712
|
-
return;
|
|
4713
|
-
}
|
|
4714
|
-
ctx.drawImage(img, 0, 0, width, height);
|
|
4715
|
-
const outputType = file.type === "image/png" ? "image/png" : "image/jpeg";
|
|
4716
|
-
canvas.toBlob((blob) => {
|
|
4717
|
-
if (!blob || blob.size >= file.size) {
|
|
4718
|
-
resolve(file);
|
|
4719
|
-
return;
|
|
4720
|
-
}
|
|
4721
|
-
resolve(new File([blob], file.name, {
|
|
4722
|
-
type: outputType,
|
|
4723
|
-
lastModified: Date.now()
|
|
4724
|
-
}));
|
|
4725
|
-
}, outputType, quality);
|
|
4726
|
-
};
|
|
4727
|
-
img.src = objectUrl;
|
|
4728
|
-
});
|
|
4729
|
-
}
|
|
4730
4543
|
function MediaPicker({ collection, value, onChange, label, variant = "default", disabled, multiple, placeholder, valueType = "id" }) {
|
|
4731
4544
|
const { client, schemas } = useDyrected();
|
|
4732
4545
|
const [isOpen, setIsOpen] = React$1.useState(false);
|
|
4733
4546
|
const [localMediaCache, setLocalMediaCache] = React$1.useState([]);
|
|
4734
|
-
const [uploading, setUploading] = React$1.useState(false);
|
|
4735
|
-
const [uploadProgress, setUploadProgress] = React$1.useState(0);
|
|
4736
4547
|
const [cropState, setCropState] = React$1.useState(null);
|
|
4548
|
+
const activeMediaCollection = React$1.useMemo(() => {
|
|
4549
|
+
return resolveActiveMediaCollection(schemas, collection);
|
|
4550
|
+
}, [schemas, collection]);
|
|
4737
4551
|
const selectedValues = React$1.useMemo(() => {
|
|
4738
4552
|
if (!value) return [];
|
|
4739
4553
|
return Array.isArray(value) ? value : [value];
|
|
@@ -4748,23 +4562,14 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
|
|
|
4748
4562
|
const selectedIds = React$1.useMemo(() => {
|
|
4749
4563
|
return selectedValues.map(getIdentifier).filter(Boolean);
|
|
4750
4564
|
}, [selectedValues, getIdentifier]);
|
|
4751
|
-
React$1.
|
|
4752
|
-
if (!
|
|
4753
|
-
|
|
4754
|
-
|
|
4755
|
-
|
|
4756
|
-
|
|
4757
|
-
|
|
4758
|
-
|
|
4759
|
-
});
|
|
4760
|
-
return next;
|
|
4761
|
-
});
|
|
4762
|
-
});
|
|
4763
|
-
}, [value]);
|
|
4764
|
-
const activeMediaCollection = React$1.useMemo(() => {
|
|
4765
|
-
if ((schemas?.collections?.find((c) => c.slug === collection))?.upload) return collection;
|
|
4766
|
-
return "media";
|
|
4767
|
-
}, [schemas, collection]);
|
|
4565
|
+
const getFullUrl = React$1.useCallback((item) => {
|
|
4566
|
+
if (!item) return "";
|
|
4567
|
+
if (valueType === "url") {
|
|
4568
|
+
if (item.mimeType === "video/youtube") return item.url || "";
|
|
4569
|
+
return getMediaUrl(item, client?.getBaseUrl() || "");
|
|
4570
|
+
}
|
|
4571
|
+
return item.id;
|
|
4572
|
+
}, [valueType, client]);
|
|
4768
4573
|
const missingIds = React$1.useMemo(() => {
|
|
4769
4574
|
return selectedIds.filter((id) => !localMediaCache.some((m) => m.id === id || m.filename === id || m.url === id));
|
|
4770
4575
|
}, [selectedIds, localMediaCache]);
|
|
@@ -4791,14 +4596,6 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
|
|
|
4791
4596
|
});
|
|
4792
4597
|
});
|
|
4793
4598
|
}, [fetchedMedia]);
|
|
4794
|
-
const getFullUrl = React$1.useCallback((item) => {
|
|
4795
|
-
if (!item) return "";
|
|
4796
|
-
if (valueType === "url") {
|
|
4797
|
-
if (item.mimeType === "video/youtube") return item.url || "";
|
|
4798
|
-
return getMediaUrl(item, client?.getBaseUrl() || "");
|
|
4799
|
-
}
|
|
4800
|
-
return item.id;
|
|
4801
|
-
}, [valueType, client]);
|
|
4802
4599
|
const toggleValue = (id, item) => {
|
|
4803
4600
|
if (item && item.id) setLocalMediaCache((prev) => {
|
|
4804
4601
|
if (!prev.some((m) => m.id === item.id)) return [...prev, item];
|
|
@@ -4848,61 +4645,52 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
|
|
|
4848
4645
|
getFullUrl,
|
|
4849
4646
|
onChange
|
|
4850
4647
|
]);
|
|
4851
|
-
const
|
|
4852
|
-
|
|
4853
|
-
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
try {
|
|
4857
|
-
const uploadedItems = [];
|
|
4858
|
-
const total = acceptedFiles.length;
|
|
4859
|
-
for (let i = 0; i < acceptedFiles.length; i++) {
|
|
4860
|
-
const processedFile = await compressImage(acceptedFiles[i]);
|
|
4861
|
-
const res = await client.collection(activeMediaCollection).upload(processedFile, void 0, { onProgress: (pct) => setUploadProgress(Math.round((i + pct / 100) / total * 100)) });
|
|
4862
|
-
uploadedItems.push(res);
|
|
4863
|
-
}
|
|
4864
|
-
setUploadProgress(100);
|
|
4865
|
-
setLocalMediaCache((prev) => {
|
|
4866
|
-
const next = [...prev];
|
|
4867
|
-
uploadedItems.forEach((item) => {
|
|
4868
|
-
if (item && item.id && !next.some((m) => m.id === item.id)) next.push(item);
|
|
4869
|
-
});
|
|
4870
|
-
return next;
|
|
4648
|
+
const handleUploadedItems = React$1.useCallback((uploadedItems) => {
|
|
4649
|
+
setLocalMediaCache((prev) => {
|
|
4650
|
+
const next = [...prev];
|
|
4651
|
+
uploadedItems.forEach((item) => {
|
|
4652
|
+
if (item && item.id && !next.some((m) => m.id === item.id)) next.push(item);
|
|
4871
4653
|
});
|
|
4872
|
-
|
|
4873
|
-
|
|
4874
|
-
|
|
4875
|
-
|
|
4876
|
-
|
|
4877
|
-
|
|
4878
|
-
|
|
4879
|
-
const cached = localMediaCache.find((m) => m.id === nid || m.filename === nid || m.url === nid) || uploadedItems.find((m) => m.id === nid || m.filename === nid || m.url === nid);
|
|
4880
|
-
return cached ? getFullUrl(cached) : nid;
|
|
4881
|
-
}));
|
|
4882
|
-
} else if (newIds.length > 0) {
|
|
4883
|
-
const nid = newIds[0];
|
|
4884
|
-
const cached = uploadedItems.find((m) => m.id === nid || m.filename === nid || m.url === nid);
|
|
4885
|
-
onChange(cached ? getFullUrl(cached) : nid);
|
|
4886
|
-
}
|
|
4887
|
-
toast.success(`Successfully uploaded and selected ${acceptedFiles.length} asset(s)`, { id: toastId });
|
|
4888
|
-
} catch (err) {
|
|
4889
|
-
toast.error("Upload failed", {
|
|
4890
|
-
description: err.message,
|
|
4891
|
-
id: toastId
|
|
4654
|
+
return next;
|
|
4655
|
+
});
|
|
4656
|
+
const newIds = uploadedItems.map((item) => item.id);
|
|
4657
|
+
if (multiple) {
|
|
4658
|
+
const nextIds = [...selectedIds];
|
|
4659
|
+
newIds.forEach((id) => {
|
|
4660
|
+
if (!nextIds.includes(id)) nextIds.push(id);
|
|
4892
4661
|
});
|
|
4893
|
-
|
|
4894
|
-
|
|
4895
|
-
|
|
4662
|
+
onChange(nextIds.map((nid) => {
|
|
4663
|
+
const cached = localMediaCache.find((m) => m.id === nid || m.filename === nid || m.url === nid) || uploadedItems.find((m) => m.id === nid || m.filename === nid || m.url === nid);
|
|
4664
|
+
return cached ? getFullUrl(cached) : nid;
|
|
4665
|
+
}));
|
|
4666
|
+
} else if (newIds.length > 0) {
|
|
4667
|
+
const nid = newIds[0];
|
|
4668
|
+
const cached = uploadedItems.find((m) => m.id === nid || m.filename === nid || m.url === nid);
|
|
4669
|
+
onChange(cached ? getFullUrl(cached) : nid);
|
|
4896
4670
|
}
|
|
4897
4671
|
}, [
|
|
4898
|
-
client,
|
|
4899
|
-
activeMediaCollection,
|
|
4900
4672
|
multiple,
|
|
4901
4673
|
selectedIds,
|
|
4902
4674
|
localMediaCache,
|
|
4903
4675
|
getFullUrl,
|
|
4904
4676
|
onChange
|
|
4905
4677
|
]);
|
|
4678
|
+
const { isUploading: uploading, queue, uploadFiles } = useMediaUpload({
|
|
4679
|
+
collectionSlug: activeMediaCollection,
|
|
4680
|
+
onAllCompleted: (items) => {
|
|
4681
|
+
handleUploadedItems(items);
|
|
4682
|
+
toast.success(`Successfully uploaded and selected ${items.length} asset(s)`);
|
|
4683
|
+
},
|
|
4684
|
+
onError: (err) => toast.error("Upload failed", { description: err.message })
|
|
4685
|
+
});
|
|
4686
|
+
const uploadProgress = React$1.useMemo(() => {
|
|
4687
|
+
if (queue.length === 0) return 0;
|
|
4688
|
+
const total = queue.reduce((acc, q) => acc + q.progress, 0);
|
|
4689
|
+
return Math.round(total / queue.length);
|
|
4690
|
+
}, [queue]);
|
|
4691
|
+
const onDrop = React$1.useCallback((acceptedFiles) => {
|
|
4692
|
+
if (acceptedFiles.length > 0) uploadFiles(acceptedFiles);
|
|
4693
|
+
}, [uploadFiles]);
|
|
4906
4694
|
const checkIsCropable = React$1.useCallback((id, item) => {
|
|
4907
4695
|
if (item) return item.mimeType?.startsWith("image/") && item.mimeType !== "image/svg+xml";
|
|
4908
4696
|
if (!id) return false;
|
|
@@ -5087,7 +4875,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
|
|
|
5087
4875
|
className: "dy-w-full dy-h-full dy-object-cover dy-transition-transform dy-group-hover:dy-scale-110"
|
|
5088
4876
|
}) : /* @__PURE__ */ jsx("div", {
|
|
5089
4877
|
className: "dy-w-full dy-h-full dy-animate-pulse dy-bg-muted/50 dy-flex dy-items-center dy-justify-center",
|
|
5090
|
-
children: /* @__PURE__ */ jsx(Image
|
|
4878
|
+
children: /* @__PURE__ */ jsx(Image, { className: "dy-h-6 dy-w-6 dy-text-muted-foreground/20" })
|
|
5091
4879
|
}),
|
|
5092
4880
|
index === 0 && /* @__PURE__ */ jsx("div", {
|
|
5093
4881
|
className: "dy-absolute dy-top-0 dy-left-0 dy-w-full dy-text-center dy-z-10 dy-px-3 dy-py-1 dy-bg-primary dy-text-white dy-text-[9px] dy-font-black dy-uppercase dy-tracking-widest dy-shadow-primary/20",
|
|
@@ -5232,7 +5020,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
|
|
|
5232
5020
|
className: "dy-w-full dy-h-full dy-object-cover dy-transition-transform dy-group-hover:dy-scale-110"
|
|
5233
5021
|
}) : /* @__PURE__ */ jsx("div", {
|
|
5234
5022
|
className: "dy-w-full dy-h-full dy-animate-pulse dy-bg-muted/50 dy-flex dy-items-center dy-justify-center",
|
|
5235
|
-
children: /* @__PURE__ */ jsx(Image
|
|
5023
|
+
children: /* @__PURE__ */ jsx(Image, { className: "dy-h-6 dy-w-6 dy-text-muted-foreground/20" })
|
|
5236
5024
|
})
|
|
5237
5025
|
}),
|
|
5238
5026
|
!disabled && /* @__PURE__ */ jsxs("div", {
|
|
@@ -5272,7 +5060,7 @@ function MediaPicker({ collection, value, onChange, label, variant = "default",
|
|
|
5272
5060
|
className: "dy-px-2 dy-h-8 dy-w-8 dy-rounded-lg",
|
|
5273
5061
|
disabled,
|
|
5274
5062
|
onClick: () => setIsOpen(true),
|
|
5275
|
-
children: /* @__PURE__ */ jsx(Image
|
|
5063
|
+
children: /* @__PURE__ */ jsx(Image, { className: "dy-h-4 dy-w-4" })
|
|
5276
5064
|
}),
|
|
5277
5065
|
/* @__PURE__ */ jsx(MediaLibraryDialog, {
|
|
5278
5066
|
collection: activeMediaCollection,
|
|
@@ -5617,7 +5405,7 @@ function RichTextEditor({ value, onChange, label, disabled, collection = "media"
|
|
|
5617
5405
|
} : false
|
|
5618
5406
|
}),
|
|
5619
5407
|
...has("align") ? [TextAlign.configure({ types: ["heading", "paragraph"] })] : [],
|
|
5620
|
-
...has("image") ? [Image$
|
|
5408
|
+
...has("image") ? [Image$1.configure({ HTMLAttributes: { class: "rounded-md max-w-full h-auto my-4 cursor-pointer hover:ring-2 hover:ring-primary/50 transition-all" } })] : [],
|
|
5621
5409
|
...has("table") ? [TableKit.configure({
|
|
5622
5410
|
table: { HTMLAttributes: { class: "dy-border-collapse dy-w-full dy-my-4" } },
|
|
5623
5411
|
tableCell: { HTMLAttributes: { class: "dy-border dy-border-border dy-p-2 dy-align-top dy-min-w-[100px]" } },
|
|
@@ -6196,286 +5984,6 @@ var FormMessage = React$1.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
6196
5984
|
});
|
|
6197
5985
|
FormMessage.displayName = "FormMessage";
|
|
6198
5986
|
//#endregion
|
|
6199
|
-
//#region src/components/forms/utils.ts
|
|
6200
|
-
/**
|
|
6201
|
-
* Normalises a field's `options` array to the canonical `{ label, value }` shape.
|
|
6202
|
-
* Accepts either a shorthand string array or the full object form.
|
|
6203
|
-
*/
|
|
6204
|
-
function normalizeOptions(options) {
|
|
6205
|
-
if (!options) return [];
|
|
6206
|
-
return options.map((opt) => typeof opt === "string" ? {
|
|
6207
|
-
label: opt,
|
|
6208
|
-
value: opt
|
|
6209
|
-
} : opt);
|
|
6210
|
-
}
|
|
6211
|
-
/**
|
|
6212
|
-
* Builds a Zod schema shape from a collection's field definitions.
|
|
6213
|
-
* Used by the form engine to validate the edit form before submission.
|
|
6214
|
-
*
|
|
6215
|
-
* @param fields - Field definitions from the collection schema.
|
|
6216
|
-
* @param isEdit - When `true`, password fields accept an empty string (no change).
|
|
6217
|
-
* @returns A record of Zod validators keyed by field name, suitable for `z.object(shape)`.
|
|
6218
|
-
*/
|
|
6219
|
-
function buildSchemaShape(fields, isEdit = false) {
|
|
6220
|
-
const shape = {};
|
|
6221
|
-
fields.forEach((field) => {
|
|
6222
|
-
if (field.type === "join") return;
|
|
6223
|
-
if (field.type === "row" && field.fields) {
|
|
6224
|
-
Object.assign(shape, buildSchemaShape(field.fields, isEdit));
|
|
6225
|
-
return;
|
|
6226
|
-
}
|
|
6227
|
-
const name = field.name;
|
|
6228
|
-
let validator = z.any();
|
|
6229
|
-
const label = field.label || name.charAt(0).toUpperCase() + name.slice(1);
|
|
6230
|
-
const isPassword = name === "password" || field.type === "password";
|
|
6231
|
-
if (field.type === "object" && field.fields) {
|
|
6232
|
-
validator = z.object(buildSchemaShape(field.fields, isEdit));
|
|
6233
|
-
if (!field.required) validator = validator.optional();
|
|
6234
|
-
shape[name] = validator;
|
|
6235
|
-
return;
|
|
6236
|
-
}
|
|
6237
|
-
if (field.type === "blocks") {
|
|
6238
|
-
validator = z.array(z.any());
|
|
6239
|
-
if (!field.required) validator = validator.optional();
|
|
6240
|
-
shape[name] = validator;
|
|
6241
|
-
return;
|
|
6242
|
-
}
|
|
6243
|
-
if (field.type === "array" && field.fields) {
|
|
6244
|
-
validator = z.array(z.object(buildSchemaShape(field.fields, isEdit)));
|
|
6245
|
-
if (!field.required) validator = validator.optional();
|
|
6246
|
-
shape[name] = validator;
|
|
6247
|
-
return;
|
|
6248
|
-
}
|
|
6249
|
-
const fieldType = field.type;
|
|
6250
|
-
if (fieldType === "relationship" || fieldType === "image") {
|
|
6251
|
-
const singleRelSchema = z.union([z.string(), z.object({ id: z.string() }).passthrough()]);
|
|
6252
|
-
validator = z.union([singleRelSchema, z.array(singleRelSchema)]);
|
|
6253
|
-
if (field.required) validator = validator.refine((val) => {
|
|
6254
|
-
if (typeof val === "string") return val.trim().length > 0;
|
|
6255
|
-
if (Array.isArray(val)) {
|
|
6256
|
-
if (val.length === 0) return false;
|
|
6257
|
-
return val.every((item) => {
|
|
6258
|
-
if (typeof item === "string") return item.trim().length > 0;
|
|
6259
|
-
if (item && typeof item === "object") return typeof item.id === "string" && item.id.trim().length > 0;
|
|
6260
|
-
return false;
|
|
6261
|
-
});
|
|
6262
|
-
}
|
|
6263
|
-
if (val && typeof val === "object") return typeof val.id === "string" && val.id.trim().length > 0;
|
|
6264
|
-
return false;
|
|
6265
|
-
}, { message: `${label} is required` });
|
|
6266
|
-
} else if (fieldType === "text" || fieldType === "textarea" || fieldType === "select" || fieldType === "radio" || fieldType === "richText" || fieldType === "date" || fieldType === "datetime" || fieldType === "time" || fieldType === "icon" || fieldType === "password") {
|
|
6267
|
-
validator = z.string();
|
|
6268
|
-
if (isPassword) if (!isEdit) validator = validator.min(8, "Password must be at least 8 characters");
|
|
6269
|
-
else validator = z.string().refine((val) => val === "" || val.length >= 8, { message: "Password must be at least 8 characters" });
|
|
6270
|
-
else if (field.required) validator = validator.min(1, `${label} is required`);
|
|
6271
|
-
} else if (field.type === "email") {
|
|
6272
|
-
validator = z.string().email(`${label} must be a valid email`);
|
|
6273
|
-
if (field.required) validator = validator.min(1, `${label} is required`);
|
|
6274
|
-
} else if (field.type === "url") {
|
|
6275
|
-
const urlObjectSchema = z.object({
|
|
6276
|
-
type: z.enum(["custom", "internal"]),
|
|
6277
|
-
url: z.string(),
|
|
6278
|
-
relationTo: z.string().optional(),
|
|
6279
|
-
value: z.string().optional(),
|
|
6280
|
-
label: z.string().optional()
|
|
6281
|
-
});
|
|
6282
|
-
validator = z.union([z.string(), urlObjectSchema]);
|
|
6283
|
-
if (field.required) validator = validator.refine((val) => {
|
|
6284
|
-
if (typeof val === "string") return val.trim().length > 0;
|
|
6285
|
-
if (val && typeof val === "object") return typeof val.url === "string" && val.url.trim().length > 0;
|
|
6286
|
-
return false;
|
|
6287
|
-
}, { message: `${label} is required` });
|
|
6288
|
-
} else if (field.type === "number") validator = z.coerce.number();
|
|
6289
|
-
else if (field.type === "boolean") validator = z.boolean();
|
|
6290
|
-
else if (field.type === "json") validator = z.any();
|
|
6291
|
-
else if (field.type === "multiSelect") {
|
|
6292
|
-
validator = z.array(z.string());
|
|
6293
|
-
if (field.required) validator = validator.min(1, `${label} requires at least one selection`);
|
|
6294
|
-
}
|
|
6295
|
-
if (!field.required && field.type !== "multiSelect") validator = validator.optional().or(z.literal(""));
|
|
6296
|
-
else if (!field.required && field.type === "multiSelect") validator = validator.optional();
|
|
6297
|
-
shape[name] = validator;
|
|
6298
|
-
});
|
|
6299
|
-
return shape;
|
|
6300
|
-
}
|
|
6301
|
-
/**
|
|
6302
|
-
* Builds `react-hook-form` default values from a collection's field definitions
|
|
6303
|
-
* and an existing document (or an empty object for new documents).
|
|
6304
|
-
*
|
|
6305
|
-
* Handles nested `object`, `array`, and `blocks` fields recursively.
|
|
6306
|
-
* Relationship and image fields are normalised to their IDs.
|
|
6307
|
-
* Password fields are always reset to `""` so they are never pre-filled.
|
|
6308
|
-
*
|
|
6309
|
-
* @param fields - Field definitions from the collection schema.
|
|
6310
|
-
* @param defaults - Existing document data, or `{}` for a new document.
|
|
6311
|
-
*/
|
|
6312
|
-
function buildDefaultValues(fields, defaults) {
|
|
6313
|
-
return fields.reduce((acc, field) => {
|
|
6314
|
-
if (field.type === "join") {
|
|
6315
|
-
if (field.name && defaults[field.name] !== void 0) acc[field.name] = defaults[field.name];
|
|
6316
|
-
return acc;
|
|
6317
|
-
}
|
|
6318
|
-
if (field.type === "row" && field.fields) {
|
|
6319
|
-
Object.assign(acc, buildDefaultValues(field.fields, defaults));
|
|
6320
|
-
return acc;
|
|
6321
|
-
}
|
|
6322
|
-
const name = field.name;
|
|
6323
|
-
let defaultVal = defaults[name] ?? field.defaultValue;
|
|
6324
|
-
if (name === "password" || field.type === "password") defaultVal = "";
|
|
6325
|
-
if (field.type === "object" && field.fields) {
|
|
6326
|
-
acc[name] = buildDefaultValues(field.fields, defaultVal || {});
|
|
6327
|
-
return acc;
|
|
6328
|
-
}
|
|
6329
|
-
if (field.type === "array") {
|
|
6330
|
-
const arr = Array.isArray(defaultVal) ? defaultVal : [];
|
|
6331
|
-
if (field.fields) acc[name] = arr.map((item) => buildDefaultValues(field.fields, item || {}));
|
|
6332
|
-
else acc[name] = arr;
|
|
6333
|
-
return acc;
|
|
6334
|
-
}
|
|
6335
|
-
if (field.type === "blocks") {
|
|
6336
|
-
acc[name] = (Array.isArray(defaultVal) ? defaultVal : []).map((item) => {
|
|
6337
|
-
const block = field.blocks?.find((b) => b.slug === item.blockType);
|
|
6338
|
-
if (block && block.fields) {
|
|
6339
|
-
const merged = {
|
|
6340
|
-
...item,
|
|
6341
|
-
...buildDefaultValues(block.fields, item || {})
|
|
6342
|
-
};
|
|
6343
|
-
if (block.variants?.length && merged.variant == null) merged.variant = block.variants[0].slug;
|
|
6344
|
-
return merged;
|
|
6345
|
-
}
|
|
6346
|
-
return item;
|
|
6347
|
-
});
|
|
6348
|
-
return acc;
|
|
6349
|
-
}
|
|
6350
|
-
if (field.type === "relationship" || field.type === "image") {
|
|
6351
|
-
if (Array.isArray(defaultVal)) acc[name] = defaultVal.map((val) => val && typeof val === "object" && "id" in val ? val.id : val);
|
|
6352
|
-
else if (defaultVal && typeof defaultVal === "object" && "id" in defaultVal) acc[name] = defaultVal.id;
|
|
6353
|
-
else acc[name] = defaultVal ?? "";
|
|
6354
|
-
return acc;
|
|
6355
|
-
}
|
|
6356
|
-
if (defaultVal === void 0) if (field.type === "boolean") defaultVal = false;
|
|
6357
|
-
else if (field.type === "multiSelect") defaultVal = [];
|
|
6358
|
-
else if (field.type === "json") defaultVal = {};
|
|
6359
|
-
else defaultVal = "";
|
|
6360
|
-
acc[name] = defaultVal;
|
|
6361
|
-
return acc;
|
|
6362
|
-
}, {});
|
|
6363
|
-
}
|
|
6364
|
-
/**
|
|
6365
|
-
* Flattens a nested `react-hook-form` errors object into a list of
|
|
6366
|
-
* `{ path, message }` pairs for rendering under individual fields.
|
|
6367
|
-
*
|
|
6368
|
-
* @param errors - The `formState.errors` object from `react-hook-form`.
|
|
6369
|
-
* @param path - Dot-notation prefix accumulated during recursion (omit when calling externally).
|
|
6370
|
-
* @returns A flat array of field path / error message pairs.
|
|
6371
|
-
*/
|
|
6372
|
-
function getFlatErrors(errors, path = "") {
|
|
6373
|
-
const result = [];
|
|
6374
|
-
if (!errors) return result;
|
|
6375
|
-
if (typeof errors === "object") {
|
|
6376
|
-
const asMsg = errors;
|
|
6377
|
-
if (typeof asMsg.message === "string") {
|
|
6378
|
-
result.push({
|
|
6379
|
-
path,
|
|
6380
|
-
message: asMsg.message
|
|
6381
|
-
});
|
|
6382
|
-
return result;
|
|
6383
|
-
}
|
|
6384
|
-
for (const key in errors) if (Object.prototype.hasOwnProperty.call(errors, key)) {
|
|
6385
|
-
if (key === "ref" || key === "type") continue;
|
|
6386
|
-
const nextPath = path ? `${path}.${key}` : key;
|
|
6387
|
-
result.push(...getFlatErrors(errors[key], nextPath));
|
|
6388
|
-
}
|
|
6389
|
-
}
|
|
6390
|
-
return result;
|
|
6391
|
-
}
|
|
6392
|
-
/**
|
|
6393
|
-
* Formats a dot-notation field path into a human-readable label.
|
|
6394
|
-
* Array indices are converted to 1-based "Item N" labels.
|
|
6395
|
-
*
|
|
6396
|
-
* @example
|
|
6397
|
-
* formatPath("address.street") // → "Address > Street"
|
|
6398
|
-
* formatPath("items.0.name") // → "Items > Item 1 > Name"
|
|
6399
|
-
*/
|
|
6400
|
-
function formatPath(path) {
|
|
6401
|
-
return path.split(".").map((part) => {
|
|
6402
|
-
if (/^\d+$/.test(part)) return `Item ${parseInt(part, 10) + 1}`;
|
|
6403
|
-
return part.charAt(0).toUpperCase() + part.slice(1).replace(/([A-Z])/g, " $1");
|
|
6404
|
-
}).join(" > ");
|
|
6405
|
-
}
|
|
6406
|
-
/**
|
|
6407
|
-
* Walks the schema tree alongside a dot-notation path (e.g. "body.2.cta.url")
|
|
6408
|
-
* and returns the ordered PathSegments representing each drillable container
|
|
6409
|
-
* boundary crossed. Drillable boundaries are:
|
|
6410
|
-
* - `blocks` fields (always drillable)
|
|
6411
|
-
* - `array` or `object` fields with `admin.drillIn === true`
|
|
6412
|
-
* Leaf field names and raw numeric indices are consumed but not emitted.
|
|
6413
|
-
*
|
|
6414
|
-
* @param fields Top-level field schemas for the collection.
|
|
6415
|
-
* @param path Dot-notation path, e.g. "body.2.cta.url"
|
|
6416
|
-
* @param getStableId Resolves (basePath, rawIndex) → stableId from live
|
|
6417
|
-
* useFieldArray state. Takes the full cumulative RHF path
|
|
6418
|
-
* (e.g. "body.2.items"), not just the leaf field name, to
|
|
6419
|
-
* disambiguate identically-named sub-arrays across block types.
|
|
6420
|
-
* @returns Ordered PathSegment[] for the drill-in trail, or null if the path
|
|
6421
|
-
* cannot be resolved against the schema.
|
|
6422
|
-
*/
|
|
6423
|
-
function resolveContainerPath(fields, path, getStableId) {
|
|
6424
|
-
const segments = path.split(".");
|
|
6425
|
-
const result = [];
|
|
6426
|
-
let currentFields = fields;
|
|
6427
|
-
let i = 0;
|
|
6428
|
-
let cumulativePath = "";
|
|
6429
|
-
const join = (base, next) => base ? `${base}.${next}` : next;
|
|
6430
|
-
const labelFor = (field, name) => field.label || name.charAt(0).toUpperCase() + name.slice(1);
|
|
6431
|
-
while (i < segments.length) {
|
|
6432
|
-
const segment = segments[i];
|
|
6433
|
-
if (/^\d+$/.test(segment)) {
|
|
6434
|
-
cumulativePath = join(cumulativePath, segment);
|
|
6435
|
-
i++;
|
|
6436
|
-
continue;
|
|
6437
|
-
}
|
|
6438
|
-
const field = currentFields.find((f) => f.name === segment);
|
|
6439
|
-
if (!field) return null;
|
|
6440
|
-
const isLast = i === segments.length - 1;
|
|
6441
|
-
const fieldPath = join(cumulativePath, segment);
|
|
6442
|
-
const isBlocks = field.type === "blocks";
|
|
6443
|
-
const isDrillInArray = field.type === "array" && field.admin?.drillIn === true;
|
|
6444
|
-
if (isBlocks || isDrillInArray) {
|
|
6445
|
-
const nextIndex = i + 1 < segments.length ? parseInt(segments[i + 1], 10) : NaN;
|
|
6446
|
-
if (isLast || isNaN(nextIndex)) break;
|
|
6447
|
-
const itemBasePath = join(fieldPath, String(nextIndex));
|
|
6448
|
-
result.push({
|
|
6449
|
-
fieldName: segment,
|
|
6450
|
-
basePath: itemBasePath,
|
|
6451
|
-
stableId: getStableId(fieldPath, nextIndex),
|
|
6452
|
-
breadcrumbLabel: labelFor(field, segment)
|
|
6453
|
-
});
|
|
6454
|
-
cumulativePath = itemBasePath;
|
|
6455
|
-
i += 2;
|
|
6456
|
-
currentFields = isBlocks ? (field.blocks ?? []).flatMap((b) => b.fields ?? []) : field.fields ?? [];
|
|
6457
|
-
continue;
|
|
6458
|
-
}
|
|
6459
|
-
if (field.type === "object" && field.admin?.drillIn === true) {
|
|
6460
|
-
if (isLast) break;
|
|
6461
|
-
result.push({
|
|
6462
|
-
fieldName: segment,
|
|
6463
|
-
basePath: fieldPath,
|
|
6464
|
-
stableId: void 0,
|
|
6465
|
-
breadcrumbLabel: labelFor(field, segment)
|
|
6466
|
-
});
|
|
6467
|
-
cumulativePath = fieldPath;
|
|
6468
|
-
i++;
|
|
6469
|
-
currentFields = field.fields ?? [];
|
|
6470
|
-
continue;
|
|
6471
|
-
}
|
|
6472
|
-
cumulativePath = fieldPath;
|
|
6473
|
-
if (field.fields && !isLast) currentFields = field.fields;
|
|
6474
|
-
i++;
|
|
6475
|
-
}
|
|
6476
|
-
return result;
|
|
6477
|
-
}
|
|
6478
|
-
//#endregion
|
|
6479
5987
|
//#region src/components/forms/hooks-sandbox.ts
|
|
6480
5988
|
var sandboxIframe = null;
|
|
6481
5989
|
var messageHandlers = /* @__PURE__ */ new Map();
|
|
@@ -6632,39 +6140,52 @@ function TextField({ schema, field, disabled }) {
|
|
|
6632
6140
|
};
|
|
6633
6141
|
const inputEl = (() => {
|
|
6634
6142
|
switch (schema.type) {
|
|
6635
|
-
case "number": return
|
|
6636
|
-
|
|
6637
|
-
|
|
6638
|
-
|
|
6639
|
-
|
|
6640
|
-
|
|
6641
|
-
|
|
6642
|
-
|
|
6643
|
-
|
|
6644
|
-
|
|
6645
|
-
|
|
6646
|
-
|
|
6647
|
-
|
|
6648
|
-
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
});
|
|
6652
|
-
case "url": return /* @__PURE__ */ jsx(Input, {
|
|
6653
|
-
type: "url",
|
|
6654
|
-
...field,
|
|
6655
|
-
value: field.value ?? "",
|
|
6656
|
-
placeholder: schema.admin?.placeholder || "https://",
|
|
6657
|
-
disabled,
|
|
6658
|
-
maxLength
|
|
6143
|
+
case "number": return renderNumberInput(schema, field, disabled);
|
|
6144
|
+
case "email": return /* @__PURE__ */ jsxs("div", {
|
|
6145
|
+
className: "dy-flex dy-items-stretch dy-gap-2",
|
|
6146
|
+
children: [/* @__PURE__ */ jsx(Input, {
|
|
6147
|
+
type: "email",
|
|
6148
|
+
...field,
|
|
6149
|
+
value: field.value ?? "",
|
|
6150
|
+
placeholder,
|
|
6151
|
+
disabled,
|
|
6152
|
+
maxLength
|
|
6153
|
+
}), /* @__PURE__ */ jsx(LinkAction, {
|
|
6154
|
+
fieldType: "email",
|
|
6155
|
+
value: field.value,
|
|
6156
|
+
format: schema.admin?.format,
|
|
6157
|
+
disabled
|
|
6158
|
+
})]
|
|
6659
6159
|
});
|
|
6660
|
-
|
|
6661
|
-
|
|
6662
|
-
|
|
6663
|
-
|
|
6664
|
-
|
|
6665
|
-
|
|
6666
|
-
|
|
6160
|
+
case "url": return /* @__PURE__ */ jsxs("div", {
|
|
6161
|
+
className: "dy-flex dy-items-stretch dy-gap-2",
|
|
6162
|
+
children: [/* @__PURE__ */ jsx(Input, {
|
|
6163
|
+
type: "url",
|
|
6164
|
+
...field,
|
|
6165
|
+
value: field.value ?? "",
|
|
6166
|
+
placeholder: schema.admin?.placeholder || "https://",
|
|
6167
|
+
disabled,
|
|
6168
|
+
maxLength
|
|
6169
|
+
}), /* @__PURE__ */ jsx(LinkAction, {
|
|
6170
|
+
fieldType: "url",
|
|
6171
|
+
value: field.value,
|
|
6172
|
+
format: schema.admin?.format,
|
|
6173
|
+
disabled
|
|
6174
|
+
})]
|
|
6667
6175
|
});
|
|
6176
|
+
default: {
|
|
6177
|
+
const isPassword = schema.name === "password" || schema.type === "password";
|
|
6178
|
+
const textFormat = schema.type === "text" ? schema.admin?.format : void 0;
|
|
6179
|
+
return /* @__PURE__ */ jsx(Input, {
|
|
6180
|
+
type: isPassword ? "password" : "text",
|
|
6181
|
+
...field,
|
|
6182
|
+
value: field.value ?? "",
|
|
6183
|
+
placeholder,
|
|
6184
|
+
disabled,
|
|
6185
|
+
maxLength,
|
|
6186
|
+
className: cn(isCodeText(textFormat) && "dy-font-mono")
|
|
6187
|
+
});
|
|
6188
|
+
}
|
|
6668
6189
|
}
|
|
6669
6190
|
})();
|
|
6670
6191
|
const numberFormat = schema.type === "number" ? schema.admin?.format : void 0;
|
|
@@ -6682,6 +6203,14 @@ function TextField({ schema, field, disabled }) {
|
|
|
6682
6203
|
})]
|
|
6683
6204
|
});
|
|
6684
6205
|
}
|
|
6206
|
+
const textPreview = schema.type === "text" ? getTextPreview(field.value, schema.admin?.format) : null;
|
|
6207
|
+
if (textPreview) return /* @__PURE__ */ jsxs("div", {
|
|
6208
|
+
className: "dy-space-y-1",
|
|
6209
|
+
children: [inputEl, /* @__PURE__ */ jsx("span", {
|
|
6210
|
+
className: "dy-text-xs dy-text-muted-foreground",
|
|
6211
|
+
children: textPreview
|
|
6212
|
+
})]
|
|
6213
|
+
});
|
|
6685
6214
|
const hasMaxLength = maxLength && typeof maxLength === "number";
|
|
6686
6215
|
const hasMaxWords = maxWords && typeof maxWords === "number";
|
|
6687
6216
|
if (hasMaxLength || hasMaxWords) return /* @__PURE__ */ jsxs("div", {
|
|
@@ -6709,6 +6238,172 @@ function TextField({ schema, field, disabled }) {
|
|
|
6709
6238
|
});
|
|
6710
6239
|
return inputEl;
|
|
6711
6240
|
}
|
|
6241
|
+
function renderNumberInput(schema, field, disabled) {
|
|
6242
|
+
const min = getMin(schema);
|
|
6243
|
+
const max = getMax(schema);
|
|
6244
|
+
const format = schema.admin?.format;
|
|
6245
|
+
const rating = getRatingSpec(field.value, format);
|
|
6246
|
+
if (rating) {
|
|
6247
|
+
const current = typeof field.value === "number" ? field.value : Number(field.value || 0);
|
|
6248
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
6249
|
+
className: "dy-space-y-3",
|
|
6250
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
6251
|
+
className: "dy-inline-flex dy-items-center dy-gap-1 dy-rounded-xl dy-border dy-border-border/50 dy-bg-background/70 dy-p-1",
|
|
6252
|
+
role: "radiogroup",
|
|
6253
|
+
"aria-label": `${schema.label || schema.name} rating`,
|
|
6254
|
+
children: Array.from({ length: rating.max }, (_, index) => {
|
|
6255
|
+
const value = index + 1;
|
|
6256
|
+
const active = value <= Math.round(current);
|
|
6257
|
+
return /* @__PURE__ */ jsx("button", {
|
|
6258
|
+
type: "button",
|
|
6259
|
+
role: "radio",
|
|
6260
|
+
"aria-checked": active,
|
|
6261
|
+
"aria-label": `Set rating to ${value}`,
|
|
6262
|
+
disabled,
|
|
6263
|
+
onClick: () => field.onChange(value),
|
|
6264
|
+
className: cn("dy-flex dy-h-10 dy-w-10 dy-items-center dy-justify-center dy-rounded-lg dy-transition-colors", active ? "dy-bg-amber-400/15" : "hover:dy-bg-muted", disabled && "dy-cursor-not-allowed dy-opacity-50"),
|
|
6265
|
+
children: /* @__PURE__ */ jsx(Star, { className: cn("dy-h-5 dy-w-5", active ? "dy-fill-amber-400 dy-text-amber-400" : "dy-text-muted-foreground/35") })
|
|
6266
|
+
}, value);
|
|
6267
|
+
})
|
|
6268
|
+
}), /* @__PURE__ */ jsx("input", {
|
|
6269
|
+
...field,
|
|
6270
|
+
type: "hidden",
|
|
6271
|
+
value: field.value ?? "",
|
|
6272
|
+
min,
|
|
6273
|
+
max
|
|
6274
|
+
})]
|
|
6275
|
+
});
|
|
6276
|
+
}
|
|
6277
|
+
const adornment = getNumberAdornment(format);
|
|
6278
|
+
const step = getNumberStep(schema, field.value);
|
|
6279
|
+
const adjustValue = (direction) => {
|
|
6280
|
+
const raw = field.value;
|
|
6281
|
+
const current = raw === "" || raw === null || raw === void 0 ? 0 : Number(raw);
|
|
6282
|
+
const next = clampNumber(roundNumber((Number.isFinite(current) ? current : 0) + direction * step, step), min, max);
|
|
6283
|
+
field.onChange(next);
|
|
6284
|
+
};
|
|
6285
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
6286
|
+
className: "dy-flex dy-items-stretch dy-gap-2",
|
|
6287
|
+
children: [
|
|
6288
|
+
/* @__PURE__ */ jsx(StepperButton, {
|
|
6289
|
+
ariaLabel: `Decrease ${schema.label || schema.name}`,
|
|
6290
|
+
icon: /* @__PURE__ */ jsx(Minus, { className: "dy-h-4 dy-w-4" }),
|
|
6291
|
+
disabled: disabled || isStepLimitReached(field.value, min, step, -1),
|
|
6292
|
+
onClick: () => adjustValue(-1)
|
|
6293
|
+
}),
|
|
6294
|
+
/* @__PURE__ */ jsxs("div", {
|
|
6295
|
+
className: "dy-relative dy-flex-1",
|
|
6296
|
+
children: [
|
|
6297
|
+
adornment?.prefix && /* @__PURE__ */ jsx("span", {
|
|
6298
|
+
className: "dy-pointer-events-none dy-absolute dy-left-4 dy-top-1/2 dy-z-10 dy--translate-y-1/2 dy-text-sm dy-font-medium dy-text-muted-foreground",
|
|
6299
|
+
children: adornment.prefix
|
|
6300
|
+
}),
|
|
6301
|
+
/* @__PURE__ */ jsx(Input, {
|
|
6302
|
+
type: "number",
|
|
6303
|
+
...field,
|
|
6304
|
+
value: field.value ?? "",
|
|
6305
|
+
placeholder: schema.admin?.placeholder || "0",
|
|
6306
|
+
disabled,
|
|
6307
|
+
min,
|
|
6308
|
+
max,
|
|
6309
|
+
step: "any",
|
|
6310
|
+
className: cn(adornment?.prefix && "dy-pl-12", adornment?.suffix && "dy-pr-14")
|
|
6311
|
+
}),
|
|
6312
|
+
adornment?.suffix && /* @__PURE__ */ jsx("span", {
|
|
6313
|
+
className: "dy-pointer-events-none dy-absolute dy-right-4 dy-top-1/2 dy-z-10 dy--translate-y-1/2 dy-text-sm dy-font-medium dy-text-muted-foreground",
|
|
6314
|
+
children: adornment.suffix
|
|
6315
|
+
})
|
|
6316
|
+
]
|
|
6317
|
+
}),
|
|
6318
|
+
/* @__PURE__ */ jsx(StepperButton, {
|
|
6319
|
+
ariaLabel: `Increase ${schema.label || schema.name}`,
|
|
6320
|
+
icon: /* @__PURE__ */ jsx(Plus, { className: "dy-h-4 dy-w-4" }),
|
|
6321
|
+
disabled: disabled || isStepLimitReached(field.value, max, step, 1),
|
|
6322
|
+
onClick: () => adjustValue(1)
|
|
6323
|
+
})
|
|
6324
|
+
]
|
|
6325
|
+
});
|
|
6326
|
+
}
|
|
6327
|
+
function StepperButton({ ariaLabel, icon, disabled, onClick }) {
|
|
6328
|
+
return /* @__PURE__ */ jsx("button", {
|
|
6329
|
+
type: "button",
|
|
6330
|
+
"aria-label": ariaLabel,
|
|
6331
|
+
disabled,
|
|
6332
|
+
onClick,
|
|
6333
|
+
className: cn("dy-flex dy-h-12 dy-w-12 dy-items-center dy-justify-center dy-rounded-xl dy-border dy-border-border/50 dy-bg-background dy-text-foreground dy-shadow-sm dy-transition-all hover:dy-bg-muted", "disabled:dy-cursor-not-allowed disabled:dy-opacity-50"),
|
|
6334
|
+
children: icon
|
|
6335
|
+
});
|
|
6336
|
+
}
|
|
6337
|
+
function LinkAction({ fieldType, value, format, disabled }) {
|
|
6338
|
+
const spec = getLinkSpec(value, format, fieldType);
|
|
6339
|
+
if (!spec) return null;
|
|
6340
|
+
return /* @__PURE__ */ jsx("a", {
|
|
6341
|
+
href: spec.href,
|
|
6342
|
+
target: spec.newTab ? "_blank" : void 0,
|
|
6343
|
+
rel: spec.newTab ? "noreferrer" : void 0,
|
|
6344
|
+
"aria-disabled": disabled ? true : void 0,
|
|
6345
|
+
className: cn("dy-inline-flex dy-h-12 dy-w-12 dy-items-center dy-justify-center dy-rounded-xl dy-border dy-border-border/50 dy-bg-background dy-text-muted-foreground dy-shadow-sm dy-transition-all hover:dy-bg-muted hover:dy-text-foreground", disabled && "dy-pointer-events-none dy-opacity-50"),
|
|
6346
|
+
title: fieldType === "email" ? "Open email composer" : "Open link",
|
|
6347
|
+
children: fieldType === "email" ? /* @__PURE__ */ jsx(Mail, { className: "dy-h-4 dy-w-4" }) : /* @__PURE__ */ jsx(ExternalLink, { className: "dy-h-4 dy-w-4" })
|
|
6348
|
+
});
|
|
6349
|
+
}
|
|
6350
|
+
function getNumberAdornment(format) {
|
|
6351
|
+
const resolved = resolveNumberFormat(format);
|
|
6352
|
+
if (!resolved) return null;
|
|
6353
|
+
if (resolved.type === "currency") {
|
|
6354
|
+
const currency = resolved.currency ?? "USD";
|
|
6355
|
+
try {
|
|
6356
|
+
return { prefix: new Intl.NumberFormat(resolved.locale, {
|
|
6357
|
+
style: "currency",
|
|
6358
|
+
currency
|
|
6359
|
+
}).formatToParts(0).find((part) => part.type === "currency")?.value ?? currency };
|
|
6360
|
+
} catch {
|
|
6361
|
+
return { prefix: currency };
|
|
6362
|
+
}
|
|
6363
|
+
}
|
|
6364
|
+
if (resolved.type === "percent") return { suffix: "%" };
|
|
6365
|
+
if (resolved.type === "unit") return { suffix: resolved.unitDisplay === "long" ? resolved.unit.replace(/-/g, " ") : resolved.unit };
|
|
6366
|
+
return null;
|
|
6367
|
+
}
|
|
6368
|
+
function getNumberStep(schema, value) {
|
|
6369
|
+
if (hasDecimal(value) || hasDecimal(schema.min) || hasDecimal(schema.max)) return .01;
|
|
6370
|
+
const resolved = resolveNumberFormat(schema.admin?.format);
|
|
6371
|
+
if (resolved && [
|
|
6372
|
+
"currency",
|
|
6373
|
+
"decimal",
|
|
6374
|
+
"percent",
|
|
6375
|
+
"unit"
|
|
6376
|
+
].includes(resolved.type)) return .01;
|
|
6377
|
+
return 1;
|
|
6378
|
+
}
|
|
6379
|
+
function hasDecimal(value) {
|
|
6380
|
+
return typeof value === "number" ? !Number.isInteger(value) : typeof value === "string" && value.includes(".");
|
|
6381
|
+
}
|
|
6382
|
+
function roundNumber(value, step) {
|
|
6383
|
+
const precision = step >= 1 ? 0 : String(step).split(".")[1]?.length ?? 0;
|
|
6384
|
+
return Number(value.toFixed(precision));
|
|
6385
|
+
}
|
|
6386
|
+
function clampNumber(value, min, max) {
|
|
6387
|
+
if (typeof min === "number" && value < min) return min;
|
|
6388
|
+
if (typeof max === "number" && value > max) return max;
|
|
6389
|
+
return value;
|
|
6390
|
+
}
|
|
6391
|
+
function isStepLimitReached(value, limit, step, direction) {
|
|
6392
|
+
if (typeof limit !== "number") return false;
|
|
6393
|
+
const current = value === "" || value === null || value === void 0 ? 0 : Number(value);
|
|
6394
|
+
if (!Number.isFinite(current)) return false;
|
|
6395
|
+
return direction < 0 ? current - step < limit : current + step > limit;
|
|
6396
|
+
}
|
|
6397
|
+
function getTextPreview(value, format) {
|
|
6398
|
+
const resolved = resolveTextFormat(format);
|
|
6399
|
+
if (!resolved) return null;
|
|
6400
|
+
if (resolved.type === "code") return "Stored exactly as typed.";
|
|
6401
|
+
const preview = String(value ?? "");
|
|
6402
|
+
if (!preview) return null;
|
|
6403
|
+
const transformed = formatText(preview, format);
|
|
6404
|
+
if (!transformed || transformed === preview) return null;
|
|
6405
|
+
return `Preview: ${transformed}`;
|
|
6406
|
+
}
|
|
6712
6407
|
function getMaxLength(schema) {
|
|
6713
6408
|
if (schema.type === "number") return;
|
|
6714
6409
|
return schema.maxLength ?? schema.admin?.maxLength;
|
|
@@ -6856,13 +6551,16 @@ function SelectField({ schema, field, disabled, collection, siblingValues }) {
|
|
|
6856
6551
|
enabled: !!client && isDynamic && !!collection && !!schema.name,
|
|
6857
6552
|
placeholderData: keepPreviousData
|
|
6858
6553
|
});
|
|
6859
|
-
const
|
|
6554
|
+
const rawOptions = isDynamic ? dynamicOptions || [] : schema.options;
|
|
6555
|
+
const options = normalizeOptions(rawOptions).map((opt) => ({
|
|
6860
6556
|
label: opt.label,
|
|
6861
6557
|
value: String(opt.value ?? "")
|
|
6862
6558
|
}));
|
|
6559
|
+
const optionFormat = schema.admin?.format;
|
|
6863
6560
|
const currentValue = field.value === "" || field.value === void 0 || field.value === null ? "" : String(field.value);
|
|
6864
6561
|
const selectedOption = options.find((opt) => opt.value === currentValue);
|
|
6865
6562
|
const placeholder = isDynamic && isLoading ? "Loading options..." : schema.admin?.placeholder || `Select ${label.toLowerCase()}`;
|
|
6563
|
+
const selectedBadge = selectedOption ? getOptionBadge(selectedOption.value, optionFormat, rawOptions) : null;
|
|
6866
6564
|
const handleOpenChange = (newOpen) => {
|
|
6867
6565
|
setOpen(newOpen);
|
|
6868
6566
|
if (!newOpen) setSearchVal("");
|
|
@@ -6883,7 +6581,10 @@ function SelectField({ schema, field, disabled, collection, siblingValues }) {
|
|
|
6883
6581
|
className: cn("dy-h-12 dy-w-full dy-justify-between dy-rounded-lg dy-border-border/40 dy-bg-background/50 dy-px-4 dy-font-normal dy-shadow-sm dy-transition-all hover:dy-shadow-md", !selectedOption && "dy-text-muted-foreground"),
|
|
6884
6582
|
children: [/* @__PURE__ */ jsx("span", {
|
|
6885
6583
|
className: "dy-truncate",
|
|
6886
|
-
children:
|
|
6584
|
+
children: selectedBadge ? /* @__PURE__ */ jsx(Badge, {
|
|
6585
|
+
className: cn("dy-max-w-full dy-truncate", displayToneClass(selectedBadge.tone)),
|
|
6586
|
+
children: selectedBadge.label
|
|
6587
|
+
}) : selectedOption?.label || (currentValue && !selectedOption ? currentValue : placeholder)
|
|
6887
6588
|
}), /* @__PURE__ */ jsxs("div", {
|
|
6888
6589
|
className: "dy-flex dy-items-center dy-gap-1.5 dy-shrink-0",
|
|
6889
6590
|
children: [selectedOption && !disabled && /* @__PURE__ */ jsx("span", {
|
|
@@ -6941,10 +6642,17 @@ function SelectField({ schema, field, disabled, collection, siblingValues }) {
|
|
|
6941
6642
|
handleOpenChange(false);
|
|
6942
6643
|
},
|
|
6943
6644
|
className: "dy-rounded-lg dy-py-2.5",
|
|
6944
|
-
children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", currentValue === opt.value ? "dy-opacity-100" : "dy-opacity-0") }),
|
|
6945
|
-
|
|
6946
|
-
|
|
6947
|
-
|
|
6645
|
+
children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", currentValue === opt.value ? "dy-opacity-100" : "dy-opacity-0") }), (() => {
|
|
6646
|
+
const badge = getOptionBadge(opt.value, optionFormat, rawOptions);
|
|
6647
|
+
if (!badge) return /* @__PURE__ */ jsx("span", {
|
|
6648
|
+
className: "dy-truncate",
|
|
6649
|
+
children: opt.label
|
|
6650
|
+
});
|
|
6651
|
+
return /* @__PURE__ */ jsx(Badge, {
|
|
6652
|
+
className: cn(displayToneClass(badge.tone)),
|
|
6653
|
+
children: badge.label
|
|
6654
|
+
});
|
|
6655
|
+
})()]
|
|
6948
6656
|
}, opt.value || "__empty")) })
|
|
6949
6657
|
] })]
|
|
6950
6658
|
})
|
|
@@ -7003,7 +6711,9 @@ function RadioField({ schema, field, disabled, collection, siblingValues }) {
|
|
|
7003
6711
|
},
|
|
7004
6712
|
enabled: !!client && isDynamic && !!collection && !!schema.name
|
|
7005
6713
|
});
|
|
7006
|
-
const
|
|
6714
|
+
const rawOptions = isDynamic ? dynamicOptions || [] : Array.isArray(schema.options) ? schema.options : [];
|
|
6715
|
+
const options = normalizeOptions(rawOptions);
|
|
6716
|
+
const optionFormat = schema.admin?.format;
|
|
7007
6717
|
const isHorizontal = schema.admin?.direction === "horizontal";
|
|
7008
6718
|
if (isDynamic && isLoading) return /* @__PURE__ */ jsx("div", {
|
|
7009
6719
|
className: "dy-flex dy-gap-3",
|
|
@@ -7027,7 +6737,14 @@ function RadioField({ schema, field, disabled, collection, siblingValues }) {
|
|
|
7027
6737
|
}), /* @__PURE__ */ jsx(Label, {
|
|
7028
6738
|
htmlFor: `${field.name}-${opt.value}`,
|
|
7029
6739
|
className: cn("dy-flex dy-flex-1 dy-items-center dy-pl-12 dy-pr-4 dy-py-3 dy-rounded-lg dy-border dy-border-border/40 dy-bg-background/50 dy-cursor-pointer dy-transition-all hover:dy-bg-background/80 hover:dy-shadow-sm", "dy-peer-data-[state=checked]:dy-border-primary dy-peer-data-[state=checked]:dy-bg-primary/5 dy-peer-data-[state=checked]:dy-shadow-md dy-peer-data-[state=checked]:dy-ring-1 dy-peer-data-[state=checked]:dy-ring-primary/20", "dy-text-sm dy-font-medium dy-text-foreground/70 dy-peer-data-[state=checked]:dy-text-primary"),
|
|
7030
|
-
children:
|
|
6740
|
+
children: (() => {
|
|
6741
|
+
const badge = getOptionBadge(opt.value, optionFormat, rawOptions);
|
|
6742
|
+
if (!badge) return opt.label;
|
|
6743
|
+
return /* @__PURE__ */ jsx(Badge, {
|
|
6744
|
+
className: cn(displayToneClass(badge.tone)),
|
|
6745
|
+
children: badge.label
|
|
6746
|
+
});
|
|
6747
|
+
})()
|
|
7031
6748
|
})]
|
|
7032
6749
|
}, opt.value))
|
|
7033
6750
|
});
|
|
@@ -7078,6 +6795,7 @@ function MultiSelect({ options, value = [], onChange, label, placeholder = "Sele
|
|
|
7078
6795
|
placeholderData: keepPreviousData
|
|
7079
6796
|
});
|
|
7080
6797
|
const rawOptions = isDynamic ? dynamicOptions || [] : options;
|
|
6798
|
+
const optionFormat = schema?.admin?.format;
|
|
7081
6799
|
const normalizedOpts = (Array.isArray(rawOptions) ? rawOptions : []).map((opt) => {
|
|
7082
6800
|
if (typeof opt === "string") return {
|
|
7083
6801
|
label: opt,
|
|
@@ -7117,10 +6835,16 @@ function MultiSelect({ options, value = [], onChange, label, placeholder = "Sele
|
|
|
7117
6835
|
className: "dy-truncate dy-text-muted-foreground",
|
|
7118
6836
|
children: isDynamic && isLoading ? "Loading options..." : placeholder
|
|
7119
6837
|
}), value.map((val) => {
|
|
6838
|
+
const option = normalizedOpts.find((opt) => opt.value === val);
|
|
7120
6839
|
return /* @__PURE__ */ jsxs(Badge, {
|
|
7121
6840
|
variant: "secondary",
|
|
7122
|
-
className: "dy-mr-1 dy-items-center dy-gap-1 dy-rounded-md",
|
|
7123
|
-
|
|
6841
|
+
className: cn("dy-mr-1 dy-items-center dy-gap-1 dy-rounded-md", (() => {
|
|
6842
|
+
const spec = getOptionBadge(val, optionFormat, rawOptions);
|
|
6843
|
+
return spec ? displayToneClass(spec.tone) : "";
|
|
6844
|
+
})()),
|
|
6845
|
+
children: [(() => {
|
|
6846
|
+
return getOptionBadge(val, optionFormat, rawOptions)?.label || option?.label || val;
|
|
6847
|
+
})(), !disabled && /* @__PURE__ */ jsx("div", {
|
|
7124
6848
|
role: "button",
|
|
7125
6849
|
tabIndex: 0,
|
|
7126
6850
|
className: "dy-ring-offset-background dy-rounded-full dy-outline-none focus:dy-ring-2 focus:dy-ring-ring focus:dy-ring-offset-2",
|
|
@@ -7176,7 +6900,14 @@ function MultiSelect({ options, value = [], onChange, label, placeholder = "Sele
|
|
|
7176
6900
|
value: `${option.label} ${option.value}`,
|
|
7177
6901
|
onSelect: () => handleSelect(option.value),
|
|
7178
6902
|
className: "dy-rounded-lg dy-py-2.5",
|
|
7179
|
-
children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", isSelected ? "dy-opacity-100" : "dy-opacity-0") }),
|
|
6903
|
+
children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", isSelected ? "dy-opacity-100" : "dy-opacity-0") }), (() => {
|
|
6904
|
+
const spec = getOptionBadge(option.value, optionFormat, rawOptions);
|
|
6905
|
+
if (!spec) return option.label;
|
|
6906
|
+
return /* @__PURE__ */ jsx(Badge, {
|
|
6907
|
+
className: cn(displayToneClass(spec.tone)),
|
|
6908
|
+
children: spec.label
|
|
6909
|
+
});
|
|
6910
|
+
})()]
|
|
7180
6911
|
}, option.value);
|
|
7181
6912
|
}) })
|
|
7182
6913
|
] })]
|
|
@@ -7251,7 +6982,7 @@ function InlinePicker({ open, setOpen, triggerRef, children }) {
|
|
|
7251
6982
|
children
|
|
7252
6983
|
});
|
|
7253
6984
|
}
|
|
7254
|
-
function DatePicker({ value, onChange, label, disabled, withTime }) {
|
|
6985
|
+
function DatePicker({ value, onChange, label, disabled, withTime, fieldType, format: valueFormat }) {
|
|
7255
6986
|
const [open, setOpen] = React$1.useState(false);
|
|
7256
6987
|
const wrapperRef = React$1.useRef(null);
|
|
7257
6988
|
const date = value ? new Date(value) : void 0;
|
|
@@ -7275,62 +7006,70 @@ function DatePicker({ value, onChange, label, disabled, withTime }) {
|
|
|
7275
7006
|
newDate.setHours(h || 0, m || 0, 0, 0);
|
|
7276
7007
|
onChange(newDate.toISOString());
|
|
7277
7008
|
};
|
|
7278
|
-
const
|
|
7009
|
+
const triggerLabelFormat = withTime ? "PPP p" : "PPP";
|
|
7010
|
+
const helperText = date ? formatDate(date.toISOString(), valueFormat, fieldType) : null;
|
|
7279
7011
|
return /* @__PURE__ */ jsxs("div", {
|
|
7280
7012
|
className: "dy-flex dy-flex-col dy-gap-2",
|
|
7281
|
-
children: [
|
|
7282
|
-
|
|
7283
|
-
|
|
7284
|
-
|
|
7285
|
-
|
|
7286
|
-
|
|
7287
|
-
|
|
7288
|
-
|
|
7289
|
-
|
|
7290
|
-
|
|
7291
|
-
|
|
7292
|
-
|
|
7293
|
-
|
|
7294
|
-
|
|
7295
|
-
|
|
7296
|
-
className: "dy-
|
|
7297
|
-
|
|
7298
|
-
|
|
7299
|
-
|
|
7300
|
-
|
|
7301
|
-
|
|
7302
|
-
|
|
7303
|
-
|
|
7304
|
-
|
|
7305
|
-
|
|
7306
|
-
|
|
7307
|
-
|
|
7308
|
-
|
|
7309
|
-
|
|
7310
|
-
|
|
7311
|
-
|
|
7312
|
-
|
|
7313
|
-
|
|
7314
|
-
|
|
7315
|
-
|
|
7316
|
-
|
|
7317
|
-
|
|
7318
|
-
|
|
7319
|
-
className: "dy-
|
|
7320
|
-
children: [/* @__PURE__ */
|
|
7321
|
-
|
|
7322
|
-
|
|
7323
|
-
|
|
7324
|
-
|
|
7325
|
-
|
|
7013
|
+
children: [
|
|
7014
|
+
label && /* @__PURE__ */ jsx("label", {
|
|
7015
|
+
className: "dy-text-sm dy-font-medium dy-leading-none",
|
|
7016
|
+
children: label
|
|
7017
|
+
}),
|
|
7018
|
+
/* @__PURE__ */ jsxs("div", {
|
|
7019
|
+
ref: wrapperRef,
|
|
7020
|
+
className: "dy-relative",
|
|
7021
|
+
children: [/* @__PURE__ */ jsxs(Button, {
|
|
7022
|
+
type: "button",
|
|
7023
|
+
variant: "outline",
|
|
7024
|
+
disabled,
|
|
7025
|
+
onClick: () => setOpen((v) => !v),
|
|
7026
|
+
className: cn("dy-w-full dy-justify-start dy-text-left dy-font-normal dy-h-11 dy-px-4 dy-bg-background hover:dy-bg-muted/50 dy-border-border/60 dy-shadow-sm dy-transition-all hover:dy-shadow-md", !date && "dy-text-muted-foreground", open && "dy-ring-2 dy-ring-primary/20 dy-border-primary/40"),
|
|
7027
|
+
children: [
|
|
7028
|
+
/* @__PURE__ */ jsx(Calendar, { className: "dy-mr-3 dy-h-4 dy-w-4 dy-text-primary dy-shrink-0" }),
|
|
7029
|
+
/* @__PURE__ */ jsx("span", {
|
|
7030
|
+
className: "dy-flex-1 dy-truncate",
|
|
7031
|
+
children: date ? format(date, triggerLabelFormat) : withTime ? "Pick a date & time..." : "Pick a date..."
|
|
7032
|
+
}),
|
|
7033
|
+
date ? /* @__PURE__ */ jsx(X, {
|
|
7034
|
+
className: "dy-ml-2 dy-h-3.5 dy-w-3.5 dy-text-muted-foreground hover:dy-text-foreground dy-shrink-0 dy-transition-colors",
|
|
7035
|
+
onClick: (e) => {
|
|
7036
|
+
e.stopPropagation();
|
|
7037
|
+
onChange(void 0);
|
|
7038
|
+
}
|
|
7039
|
+
}) : /* @__PURE__ */ jsx(ChevronDown, { className: cn("dy-ml-2 dy-h-3.5 dy-w-3.5 dy-text-muted-foreground dy-shrink-0 dy-transition-transform", open && "dy-rotate-180") })
|
|
7040
|
+
]
|
|
7041
|
+
}), /* @__PURE__ */ jsxs(InlinePicker, {
|
|
7042
|
+
open: open && !disabled,
|
|
7043
|
+
setOpen,
|
|
7044
|
+
triggerRef: wrapperRef,
|
|
7045
|
+
children: [/* @__PURE__ */ jsx(Calendar$1, {
|
|
7046
|
+
mode: "single",
|
|
7047
|
+
selected: date,
|
|
7048
|
+
defaultMonth: date,
|
|
7049
|
+
onSelect: handleDateSelect
|
|
7050
|
+
}), withTime && /* @__PURE__ */ jsxs("div", {
|
|
7051
|
+
className: "dy-border-t dy-border-border/50 dy-p-3",
|
|
7052
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
7053
|
+
className: "dy-flex dy-items-center dy-gap-2",
|
|
7054
|
+
children: [/* @__PURE__ */ jsx(Clock, { className: "dy-h-4 dy-w-4 dy-text-muted-foreground dy-shrink-0" }), /* @__PURE__ */ jsx(Input, {
|
|
7055
|
+
type: "time",
|
|
7056
|
+
value: timeString,
|
|
7057
|
+
onChange: handleTimeChange,
|
|
7058
|
+
disabled: !date,
|
|
7059
|
+
className: "dy-h-8 dy-text-sm dy-border-border/50"
|
|
7060
|
+
})]
|
|
7061
|
+
}), !date && /* @__PURE__ */ jsx("p", {
|
|
7062
|
+
className: "dy-text-xs dy-text-muted-foreground dy-mt-1.5 dy-pl-6",
|
|
7063
|
+
children: "Pick a date first"
|
|
7326
7064
|
})]
|
|
7327
|
-
}), !date && /* @__PURE__ */ jsx("p", {
|
|
7328
|
-
className: "dy-text-xs dy-text-muted-foreground dy-mt-1.5 dy-pl-6",
|
|
7329
|
-
children: "Pick a date first"
|
|
7330
7065
|
})]
|
|
7331
7066
|
})]
|
|
7332
|
-
})
|
|
7333
|
-
|
|
7067
|
+
}),
|
|
7068
|
+
helperText && /* @__PURE__ */ jsxs("p", {
|
|
7069
|
+
className: "dy-text-xs dy-text-muted-foreground",
|
|
7070
|
+
children: ["Display: ", helperText]
|
|
7071
|
+
})
|
|
7072
|
+
]
|
|
7334
7073
|
});
|
|
7335
7074
|
}
|
|
7336
7075
|
function DateRangePicker({ value, onChange, label, disabled }) {
|
|
@@ -7773,7 +7512,7 @@ var parseValue = (val, siteUrl) => {
|
|
|
7773
7512
|
url: String(val)
|
|
7774
7513
|
};
|
|
7775
7514
|
};
|
|
7776
|
-
function UrlField({ field, disabled }) {
|
|
7515
|
+
function UrlField({ schema, field, disabled }) {
|
|
7777
7516
|
const { client, schemas } = useDyrected();
|
|
7778
7517
|
const siteUrl = React$1.useMemo(() => getSiteUrl(schemas?.admin?.siteUrl), [schemas?.admin?.siteUrl]);
|
|
7779
7518
|
const [openPopover, setOpenPopover] = React$1.useState(false);
|
|
@@ -7904,74 +7643,86 @@ function UrlField({ field, disabled }) {
|
|
|
7904
7643
|
]);
|
|
7905
7644
|
const selectedDoc = documents.find((d) => d.id === docValue && d.__collectionSlug === collectionValue);
|
|
7906
7645
|
const selectedCollectionLabel = collections.find((c) => c.slug === collectionValue)?.labels?.singular || collectionValue;
|
|
7646
|
+
const linkSpec = getLinkSpec(urlValue, schema.admin?.format, "url");
|
|
7907
7647
|
return /* @__PURE__ */ jsxs("div", {
|
|
7908
7648
|
className: "dy-space-y-3",
|
|
7909
|
-
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs(
|
|
7910
|
-
|
|
7911
|
-
|
|
7912
|
-
|
|
7913
|
-
|
|
7914
|
-
children: /* @__PURE__ */ jsx(
|
|
7915
|
-
|
|
7916
|
-
children: /* @__PURE__ */ jsx(
|
|
7917
|
-
|
|
7918
|
-
|
|
7919
|
-
|
|
7920
|
-
|
|
7921
|
-
|
|
7922
|
-
|
|
7923
|
-
|
|
7649
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsxs("div", {
|
|
7650
|
+
className: "dy-flex dy-items-stretch dy-gap-2",
|
|
7651
|
+
children: [/* @__PURE__ */ jsxs(Popover, {
|
|
7652
|
+
open: openPopover && !disabled,
|
|
7653
|
+
onOpenChange: setOpenPopover,
|
|
7654
|
+
children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
7655
|
+
asChild: true,
|
|
7656
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
7657
|
+
className: "dy-w-full",
|
|
7658
|
+
children: /* @__PURE__ */ jsx(Input, {
|
|
7659
|
+
type: "text",
|
|
7660
|
+
value: urlValue,
|
|
7661
|
+
onChange: (e) => handleUrlInputChange(e.target.value),
|
|
7662
|
+
onFocus: () => setOpenPopover(true),
|
|
7663
|
+
placeholder: "Type or paste a URL, or search pages...",
|
|
7664
|
+
disabled,
|
|
7665
|
+
className: "dy-bg-background dy-border-border/50 dy-h-11 dy-w-full"
|
|
7666
|
+
})
|
|
7924
7667
|
})
|
|
7925
|
-
})
|
|
7926
|
-
|
|
7927
|
-
|
|
7928
|
-
|
|
7929
|
-
|
|
7930
|
-
|
|
7931
|
-
|
|
7932
|
-
|
|
7933
|
-
|
|
7934
|
-
|
|
7935
|
-
|
|
7936
|
-
|
|
7937
|
-
|
|
7938
|
-
|
|
7939
|
-
|
|
7940
|
-
|
|
7941
|
-
|
|
7942
|
-
|
|
7943
|
-
|
|
7944
|
-
|
|
7945
|
-
|
|
7946
|
-
|
|
7947
|
-
|
|
7948
|
-
|
|
7949
|
-
|
|
7950
|
-
|
|
7951
|
-
|
|
7952
|
-
})
|
|
7953
|
-
|
|
7954
|
-
|
|
7955
|
-
|
|
7956
|
-
|
|
7957
|
-
|
|
7958
|
-
|
|
7959
|
-
|
|
7960
|
-
|
|
7961
|
-
|
|
7962
|
-
|
|
7963
|
-
|
|
7964
|
-
|
|
7965
|
-
|
|
7966
|
-
|
|
7967
|
-
|
|
7968
|
-
|
|
7969
|
-
})
|
|
7970
|
-
},
|
|
7971
|
-
}
|
|
7972
|
-
})
|
|
7973
|
-
|
|
7974
|
-
})
|
|
7668
|
+
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
7669
|
+
className: "dy-p-0 dy-w-[var(--radix-popover-trigger-width)] dy-max-h-60 dy-overflow-y-auto",
|
|
7670
|
+
align: "start",
|
|
7671
|
+
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
7672
|
+
children: /* @__PURE__ */ jsx(Command$1, {
|
|
7673
|
+
className: "dy-border-none",
|
|
7674
|
+
shouldFilter: false,
|
|
7675
|
+
children: /* @__PURE__ */ jsxs(CommandList, { children: [
|
|
7676
|
+
/* @__PURE__ */ jsx(CommandEmpty, {
|
|
7677
|
+
className: "dy-py-2.5 dy-px-3 dy-text-xs dy-text-muted-foreground",
|
|
7678
|
+
children: docsLoading ? "Loading pages..." : "No matching pages found. Press Enter to use as custom link."
|
|
7679
|
+
}),
|
|
7680
|
+
urlValue && /* @__PURE__ */ jsx(CommandGroup, {
|
|
7681
|
+
heading: "Custom Link",
|
|
7682
|
+
children: /* @__PURE__ */ jsxs(CommandItem, {
|
|
7683
|
+
value: `custom-${urlValue}`,
|
|
7684
|
+
onSelect: () => {
|
|
7685
|
+
handleUrlInputChange(urlValue);
|
|
7686
|
+
setOpenPopover(false);
|
|
7687
|
+
},
|
|
7688
|
+
className: "dy-text-primary",
|
|
7689
|
+
children: [
|
|
7690
|
+
"Use link \"",
|
|
7691
|
+
urlValue,
|
|
7692
|
+
"\""
|
|
7693
|
+
]
|
|
7694
|
+
})
|
|
7695
|
+
}),
|
|
7696
|
+
(() => {
|
|
7697
|
+
const grouped = {};
|
|
7698
|
+
filteredDocs.forEach((doc) => {
|
|
7699
|
+
const key = doc.__collectionLabel;
|
|
7700
|
+
if (!grouped[key]) grouped[key] = [];
|
|
7701
|
+
grouped[key].push(doc);
|
|
7702
|
+
});
|
|
7703
|
+
return Object.entries(grouped).map(([groupName, docs]) => /* @__PURE__ */ jsx(CommandGroup, {
|
|
7704
|
+
heading: groupName,
|
|
7705
|
+
children: docs.map((doc) => /* @__PURE__ */ jsxs(CommandItem, {
|
|
7706
|
+
value: `${doc.__collectionSlug}-${doc.id}-${getDocumentDisplay(doc, doc.__collectionSlug)}`,
|
|
7707
|
+
onSelect: () => handleDocumentSelect(doc),
|
|
7708
|
+
children: [/* @__PURE__ */ jsx(Check, { className: cn("dy-mr-2 dy-h-4 dy-w-4", docValue === doc.id && collectionValue === doc.__collectionSlug ? "dy-opacity-100" : "dy-opacity-0") }), /* @__PURE__ */ jsx("span", {
|
|
7709
|
+
className: "dy-flex-1",
|
|
7710
|
+
children: getDocumentDisplay(doc, doc.__collectionSlug)
|
|
7711
|
+
})]
|
|
7712
|
+
}, `${doc.__collectionSlug}-${doc.id}`))
|
|
7713
|
+
}, groupName));
|
|
7714
|
+
})()
|
|
7715
|
+
] })
|
|
7716
|
+
})
|
|
7717
|
+
})]
|
|
7718
|
+
}), linkSpec && /* @__PURE__ */ jsx("a", {
|
|
7719
|
+
href: linkSpec.href,
|
|
7720
|
+
target: linkSpec.newTab ? "_blank" : void 0,
|
|
7721
|
+
rel: linkSpec.newTab ? "noreferrer" : void 0,
|
|
7722
|
+
"aria-disabled": disabled ? true : void 0,
|
|
7723
|
+
className: cn("dy-inline-flex dy-h-11 dy-w-11 dy-items-center dy-justify-center dy-rounded-xl dy-border dy-border-border/50 dy-bg-background dy-text-muted-foreground dy-shadow-sm dy-transition-all hover:dy-bg-muted hover:dy-text-foreground", disabled && "dy-pointer-events-none dy-opacity-50"),
|
|
7724
|
+
title: "Open link",
|
|
7725
|
+
children: /* @__PURE__ */ jsx(ExternalLink, { className: "dy-h-4 dy-w-4" })
|
|
7975
7726
|
})]
|
|
7976
7727
|
}), selectedDoc && /* @__PURE__ */ jsxs("p", {
|
|
7977
7728
|
className: "dy-text-[11px] dy-text-muted-foreground dy-mt-1.5",
|
|
@@ -8079,16 +7830,20 @@ function FieldRenderer({ schema, field, collection, context }) {
|
|
|
8079
7830
|
const customComponentKey = schema.admin?.component;
|
|
8080
7831
|
if (customComponentKey && components?.fields?.[customComponentKey]) {
|
|
8081
7832
|
const CustomComponent = components.fields[customComponentKey];
|
|
8082
|
-
|
|
8083
|
-
|
|
8084
|
-
|
|
8085
|
-
|
|
8086
|
-
|
|
8087
|
-
|
|
8088
|
-
|
|
8089
|
-
|
|
8090
|
-
|
|
8091
|
-
|
|
7833
|
+
const customProps = {
|
|
7834
|
+
value: field.value,
|
|
7835
|
+
onChange: field.onChange,
|
|
7836
|
+
field: schema,
|
|
7837
|
+
path: field.name,
|
|
7838
|
+
disabled,
|
|
7839
|
+
collection,
|
|
7840
|
+
context
|
|
7841
|
+
};
|
|
7842
|
+
return /* @__PURE__ */ jsx(DyrectedFieldPathProvider, {
|
|
7843
|
+
path: field.name,
|
|
7844
|
+
children: /* @__PURE__ */ jsx(ErrorBoundary, {
|
|
7845
|
+
fieldName: schema.name ?? customComponentKey,
|
|
7846
|
+
children: /* @__PURE__ */ jsx(CustomComponent, { ...customProps })
|
|
8092
7847
|
})
|
|
8093
7848
|
});
|
|
8094
7849
|
}
|
|
@@ -8155,13 +7910,17 @@ function FieldRenderer({ schema, field, collection, context }) {
|
|
|
8155
7910
|
case "date": return /* @__PURE__ */ jsx(DatePicker, {
|
|
8156
7911
|
value: field.value,
|
|
8157
7912
|
onChange: field.onChange,
|
|
8158
|
-
disabled
|
|
7913
|
+
disabled,
|
|
7914
|
+
fieldType: "date",
|
|
7915
|
+
format: schema.admin?.format
|
|
8159
7916
|
});
|
|
8160
7917
|
case "datetime": return /* @__PURE__ */ jsx(DatePicker, {
|
|
8161
7918
|
value: field.value,
|
|
8162
7919
|
onChange: field.onChange,
|
|
8163
7920
|
disabled,
|
|
8164
|
-
withTime: true
|
|
7921
|
+
withTime: true,
|
|
7922
|
+
fieldType: "datetime",
|
|
7923
|
+
format: schema.admin?.format
|
|
8165
7924
|
});
|
|
8166
7925
|
case "daterange": return /* @__PURE__ */ jsx(DateRangePicker, {
|
|
8167
7926
|
value: field.value,
|
|
@@ -8324,10 +8083,16 @@ function useNestedEditor() {
|
|
|
8324
8083
|
*/
|
|
8325
8084
|
function isActiveOrChild(activePath, basePath) {
|
|
8326
8085
|
if (activePath.length === 0) return false;
|
|
8327
|
-
return activePath.some((s) => s.basePath === basePath || s.basePath.startsWith(basePath
|
|
8086
|
+
return activePath.some((s) => s.basePath === basePath || s.basePath.startsWith(`${joinFieldPath(basePath)}.`));
|
|
8328
8087
|
}
|
|
8329
8088
|
//#endregion
|
|
8330
8089
|
//#region src/components/forms/fields/block-builder.tsx
|
|
8090
|
+
function AdminIcon({ icon, fallback, className }) {
|
|
8091
|
+
return createElement(resolveAdminIcon(icon, fallback), {
|
|
8092
|
+
className,
|
|
8093
|
+
"aria-hidden": true
|
|
8094
|
+
});
|
|
8095
|
+
}
|
|
8331
8096
|
/**
|
|
8332
8097
|
* Variant switcher — a compact pill row shown at the top of a block's editor
|
|
8333
8098
|
* when the block defines `variants`. Changing the variant writes the reserved
|
|
@@ -8349,14 +8114,17 @@ function VariantSwitcher({ control, name, variants }) {
|
|
|
8349
8114
|
className: "dy-flex dy-flex-wrap dy-gap-1.5",
|
|
8350
8115
|
children: variants.map((v) => {
|
|
8351
8116
|
const isActive = current === v.slug;
|
|
8352
|
-
const Icon = v.icon ? resolveAdminIcon(v.icon, Layers) : null;
|
|
8353
8117
|
return /* @__PURE__ */ jsxs("button", {
|
|
8354
8118
|
type: "button",
|
|
8355
8119
|
onClick: () => field.onChange(v.slug),
|
|
8356
8120
|
title: v.description || v.label || v.slug,
|
|
8357
8121
|
"aria-pressed": isActive,
|
|
8358
8122
|
className: cn("dy-flex dy-items-center dy-gap-1.5 dy-rounded-lg dy-border dy-px-2.5 dy-py-1.5 dy-text-xs dy-font-medium dy-transition-all", isActive ? "dy-border-primary dy-bg-primary/10 dy-text-primary" : "dy-border-border/60 dy-text-muted-foreground hover:dy-border-border hover:dy-text-foreground"),
|
|
8359
|
-
children: [
|
|
8123
|
+
children: [v.icon ? /* @__PURE__ */ jsx(AdminIcon, {
|
|
8124
|
+
icon: v.icon,
|
|
8125
|
+
fallback: Layers,
|
|
8126
|
+
className: "dy-h-3.5 dy-w-3.5"
|
|
8127
|
+
}) : null, v.label || v.slug]
|
|
8360
8128
|
}, v.slug);
|
|
8361
8129
|
})
|
|
8362
8130
|
})]
|
|
@@ -8395,7 +8163,6 @@ function SortableBlockItem({ id, index, item, schema, basePath, control, remove,
|
|
|
8395
8163
|
return "";
|
|
8396
8164
|
};
|
|
8397
8165
|
const previewText = getPreviewText();
|
|
8398
|
-
const BlockIcon = resolveAdminIcon(blockConfig.icon, Layers);
|
|
8399
8166
|
const activeVariant = blockConfig.variants?.find((v) => v.slug === itemValues?.variant) ?? blockConfig.variants?.[0];
|
|
8400
8167
|
const subtitle = activeVariant ? `${activeVariant.label || activeVariant.slug}${previewText ? " · " + previewText : ""}` : blockConfig.description || previewText;
|
|
8401
8168
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -8410,7 +8177,7 @@ function SortableBlockItem({ id, index, item, schema, basePath, control, remove,
|
|
|
8410
8177
|
setExpanded((v) => !v);
|
|
8411
8178
|
return;
|
|
8412
8179
|
}
|
|
8413
|
-
const itemPath =
|
|
8180
|
+
const itemPath = joinFieldPath(basePath, index);
|
|
8414
8181
|
const blockConfig = schema.blocks?.find((b) => b.slug === item.blockType);
|
|
8415
8182
|
onDrillInto({
|
|
8416
8183
|
fieldName: basePath.split(".").pop() ?? basePath,
|
|
@@ -8430,7 +8197,11 @@ function SortableBlockItem({ id, index, item, schema, basePath, control, remove,
|
|
|
8430
8197
|
}),
|
|
8431
8198
|
/* @__PURE__ */ jsx("div", {
|
|
8432
8199
|
className: cn("dy-flex dy-h-9 dy-w-9 dy-items-center dy-justify-center dy-rounded-lg dy-shrink-0 dy-transition-colors", active ? "dy-bg-primary/10 dy-text-primary" : "dy-bg-muted dy-text-muted-foreground group-hover:dy-text-foreground"),
|
|
8433
|
-
children: /* @__PURE__ */ jsx(
|
|
8200
|
+
children: /* @__PURE__ */ jsx(AdminIcon, {
|
|
8201
|
+
icon: blockConfig.icon,
|
|
8202
|
+
fallback: Layers,
|
|
8203
|
+
className: "dy-h-4 dy-w-4"
|
|
8204
|
+
})
|
|
8434
8205
|
}),
|
|
8435
8206
|
/* @__PURE__ */ jsxs("div", {
|
|
8436
8207
|
className: "dy-min-w-0 dy-flex-1",
|
|
@@ -8523,8 +8294,8 @@ function BlockBuilder({ schema, basePath, control, collection, documentId }) {
|
|
|
8523
8294
|
name: basePath
|
|
8524
8295
|
}) || [];
|
|
8525
8296
|
const { drillInEnabled, activePath, drillInto, reconcileAfterMutation, registerFieldArray, unregisterFieldArray } = useNestedEditor();
|
|
8526
|
-
const drivenPath = activePath.find((s) => isActiveOrChild([s], basePath) || s.basePath.startsWith(basePath
|
|
8527
|
-
const focusedSegment = activePath.find((s) => s.basePath.startsWith(basePath
|
|
8297
|
+
const drivenPath = activePath.find((s) => isActiveOrChild([s], basePath) || s.basePath.startsWith(`${joinFieldPath(basePath)}.`));
|
|
8298
|
+
const focusedSegment = activePath.find((s) => s.basePath.startsWith(`${joinFieldPath(basePath)}.`) && s.stableId);
|
|
8528
8299
|
const focusedStableId = focusedSegment?.stableId;
|
|
8529
8300
|
let focusedIndex = focusedStableId ? fields.findIndex((f) => f.id === focusedStableId) : -1;
|
|
8530
8301
|
if (focusedIndex === -1 && focusedSegment) {
|
|
@@ -8662,7 +8433,11 @@ function BlockBuilder({ schema, basePath, control, collection, documentId }) {
|
|
|
8662
8433
|
className: "dy-group dy-border dy-border-muted/30 dy-rounded-lg dy-p-4 dy-flex dy-items-start dy-gap-3 hover:dy-border-primary/40 hover:dy-bg-primary/[0.02] dy-transition-all dy-cursor-pointer dy-select-none",
|
|
8663
8434
|
children: [/* @__PURE__ */ jsx("div", {
|
|
8664
8435
|
className: "dy-p-2.5 dy-bg-muted/50 dy-rounded-lg dy-text-muted-foreground/60 group-hover:dy-text-primary group-hover:dy-bg-primary/10 dy-transition-colors",
|
|
8665
|
-
children: /* @__PURE__ */ jsx(
|
|
8436
|
+
children: /* @__PURE__ */ jsx(AdminIcon, {
|
|
8437
|
+
icon: block.icon,
|
|
8438
|
+
fallback: Layers,
|
|
8439
|
+
className: "dy-w-4 dy-h-4"
|
|
8440
|
+
})
|
|
8666
8441
|
}), /* @__PURE__ */ jsxs("div", {
|
|
8667
8442
|
className: "dy-min-w-0 dy-flex-1",
|
|
8668
8443
|
children: [/* @__PURE__ */ jsx("h5", {
|
|
@@ -8706,8 +8481,8 @@ function BlockBuilder({ schema, basePath, control, collection, documentId }) {
|
|
|
8706
8481
|
children: /* @__PURE__ */ jsx("div", {
|
|
8707
8482
|
className: "dy-pt-2 dy-space-y-4",
|
|
8708
8483
|
children: fields.map((item, index) => {
|
|
8709
|
-
const itemPath =
|
|
8710
|
-
const isItemActive = activePath.some((s) => s.basePath === itemPath || s.basePath.startsWith(itemPath
|
|
8484
|
+
const itemPath = joinFieldPath(basePath, index);
|
|
8485
|
+
const isItemActive = activePath.some((s) => s.basePath === itemPath || s.basePath.startsWith(`${itemPath}.`));
|
|
8711
8486
|
return /* @__PURE__ */ jsx(SortableBlockItem, {
|
|
8712
8487
|
id: item.id,
|
|
8713
8488
|
index,
|
|
@@ -9155,7 +8930,7 @@ function ArrayFieldRenderer({ schema, basePath, control, renderField }) {
|
|
|
9155
8930
|
const isDrillIn = drillInEnabled && schema.admin?.drillIn === true;
|
|
9156
8931
|
const singleField = schema.fields?.length === 1 ? schema.fields[0] : void 0;
|
|
9157
8932
|
const isSimpleList = !!singleField && !isDrillIn;
|
|
9158
|
-
const focusedSegment = isDrillIn ? activePath.find((s) => s.basePath.startsWith(basePath
|
|
8933
|
+
const focusedSegment = isDrillIn ? activePath.find((s) => s.basePath.startsWith(`${joinFieldPath(basePath)}.`) && s.stableId) : void 0;
|
|
9159
8934
|
const isDrilledInto = (focusedSegment?.stableId ? fields.findIndex((f) => f.id === focusedSegment.stableId) : -1) !== -1;
|
|
9160
8935
|
React$1.useEffect(() => {
|
|
9161
8936
|
if (!isDrillIn) return;
|
|
@@ -9181,7 +8956,7 @@ function ArrayFieldRenderer({ schema, basePath, control, renderField }) {
|
|
|
9181
8956
|
const label = schema.label || schema.name.charAt(0).toUpperCase() + schema.name.slice(1);
|
|
9182
8957
|
drillInto({
|
|
9183
8958
|
fieldName: basePath.split(".").pop() ?? basePath,
|
|
9184
|
-
basePath:
|
|
8959
|
+
basePath: joinFieldPath(basePath, index),
|
|
9185
8960
|
stableId: id,
|
|
9186
8961
|
breadcrumbLabel: `${label} #${index + 1}`
|
|
9187
8962
|
});
|
|
@@ -9386,6 +9161,51 @@ function ArrayFieldRenderer({ schema, basePath, control, renderField }) {
|
|
|
9386
9161
|
}
|
|
9387
9162
|
//#endregion
|
|
9388
9163
|
//#region src/components/forms/form-field-renderer.tsx
|
|
9164
|
+
function FormValidationFieldShell({ schema, fullPath, collection, user, schemas, conditionData, isBoolean, isSwitchBoolean, hideLabel, formField }) {
|
|
9165
|
+
const fieldState = useField(fullPath);
|
|
9166
|
+
const resolvedSchema = useDyrectedForm().getFieldSchema(fullPath) ?? schema;
|
|
9167
|
+
return /* @__PURE__ */ jsxs(FormItem, {
|
|
9168
|
+
"data-dy-field": fieldState.path,
|
|
9169
|
+
className: cn(isSwitchBoolean ? "dy-flex dy-flex-row dy-items-center dy-justify-between dy-rounded-lg dy-border dy-border-border/40 dy-p-4 dy-bg-background/50 dy-shadow-sm dy-space-y-0" : isBoolean ? "dy-flex dy-flex-row-reverse dy-items-start dy-justify-end dy-gap-3 dy-space-y-0" : hideLabel ? "dy-space-y-0" : "dy-space-y-3"),
|
|
9170
|
+
children: [
|
|
9171
|
+
!hideLabel && /* @__PURE__ */ jsxs("div", {
|
|
9172
|
+
className: cn(isBoolean ? "dy-space-y-1" : "dy-flex dy-items-center dy-flex-wrap dy-gap-2 dy-mb-1"),
|
|
9173
|
+
children: [
|
|
9174
|
+
/* @__PURE__ */ jsxs(FormLabel, {
|
|
9175
|
+
className: "dy-text-sm dy-font-semibold dy-text-foreground/80 dy-cursor-pointer",
|
|
9176
|
+
children: [resolvedSchema.label || resolvedSchema.name.charAt(0).toUpperCase() + resolvedSchema.name.slice(1), resolvedSchema.required && /* @__PURE__ */ jsx("span", {
|
|
9177
|
+
className: "dy-text-destructive dy-ml-1",
|
|
9178
|
+
children: "*"
|
|
9179
|
+
})]
|
|
9180
|
+
}),
|
|
9181
|
+
resolvedSchema.admin?.description && /* @__PURE__ */ jsx("p", {
|
|
9182
|
+
className: cn("dy-text-muted-foreground/60 dy-italic", isBoolean ? "dy-text-[11px] dy-leading-tight" : "dy-text-[11px] dy-leading-relaxed"),
|
|
9183
|
+
children: resolvedSchema.admin.description
|
|
9184
|
+
}),
|
|
9185
|
+
!isBoolean && resolvedSchema.unique && /* @__PURE__ */ jsx("span", {
|
|
9186
|
+
className: "dy-inline-flex dy-items-center dy-rounded-full dy-bg-primary/10 dy-px-1.5 dy-py-0.5 dy-text-[10px] dy-font-medium dy-text-primary dy-ring-1 dy-ring-inset dy-ring-primary/10",
|
|
9187
|
+
children: "Unique"
|
|
9188
|
+
})
|
|
9189
|
+
]
|
|
9190
|
+
}),
|
|
9191
|
+
/* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(FieldRenderer, {
|
|
9192
|
+
schema: resolvedSchema,
|
|
9193
|
+
field: formField,
|
|
9194
|
+
collection,
|
|
9195
|
+
context: {
|
|
9196
|
+
user,
|
|
9197
|
+
schemas,
|
|
9198
|
+
siblingData: conditionData
|
|
9199
|
+
}
|
|
9200
|
+
}) }),
|
|
9201
|
+
!isBoolean && resolvedSchema.admin?.description && /* @__PURE__ */ jsx("p", {
|
|
9202
|
+
className: "dy-text-[11px] dy-text-muted-foreground/70 dy-leading-relaxed dy-italic",
|
|
9203
|
+
children: resolvedSchema.admin.description
|
|
9204
|
+
}),
|
|
9205
|
+
/* @__PURE__ */ jsx(FormMessage, { className: "dy-text-xs dy-font-medium" })
|
|
9206
|
+
]
|
|
9207
|
+
});
|
|
9208
|
+
}
|
|
9389
9209
|
/**
|
|
9390
9210
|
* FormFieldRenderer (Field Orchestrator)
|
|
9391
9211
|
*
|
|
@@ -9538,7 +9358,7 @@ function FormFieldRendererInner({ schema, basePath, control, collection, canUpda
|
|
|
9538
9358
|
...siblingData
|
|
9539
9359
|
} : formValues;
|
|
9540
9360
|
if (schema.name === "password" && !canUpdate) return null;
|
|
9541
|
-
const fullPath = basePath
|
|
9361
|
+
const fullPath = joinFieldPath(basePath, schema.name);
|
|
9542
9362
|
const renderNestedField = (subField, nextBasePath) => /* @__PURE__ */ jsx(FormFieldRenderer, {
|
|
9543
9363
|
schema: subField,
|
|
9544
9364
|
basePath: nextBasePath,
|
|
@@ -9685,46 +9505,17 @@ function FormFieldRendererInner({ schema, basePath, control, collection, canUpda
|
|
|
9685
9505
|
return /* @__PURE__ */ jsx(FormField, {
|
|
9686
9506
|
control,
|
|
9687
9507
|
name: fullPath,
|
|
9688
|
-
render: ({ field: formField }) => /* @__PURE__ */
|
|
9689
|
-
|
|
9690
|
-
|
|
9691
|
-
|
|
9692
|
-
|
|
9693
|
-
|
|
9694
|
-
|
|
9695
|
-
|
|
9696
|
-
|
|
9697
|
-
|
|
9698
|
-
|
|
9699
|
-
children: "*"
|
|
9700
|
-
})]
|
|
9701
|
-
}),
|
|
9702
|
-
schema.admin?.description && /* @__PURE__ */ jsx("p", {
|
|
9703
|
-
className: cn("dy-text-muted-foreground/60 dy-italic", isBoolean ? "dy-text-[11px] dy-leading-tight" : "dy-text-[11px] dy-leading-relaxed"),
|
|
9704
|
-
children: schema.admin.description
|
|
9705
|
-
}),
|
|
9706
|
-
!isBoolean && schema.unique && /* @__PURE__ */ jsx("span", {
|
|
9707
|
-
className: "dy-inline-flex dy-items-center dy-rounded-full dy-bg-primary/10 dy-px-1.5 dy-py-0.5 dy-text-[10px] dy-font-medium dy-text-primary dy-ring-1 dy-ring-inset dy-ring-primary/10",
|
|
9708
|
-
children: "Unique"
|
|
9709
|
-
})
|
|
9710
|
-
]
|
|
9711
|
-
}),
|
|
9712
|
-
/* @__PURE__ */ jsx(FormControl, { children: /* @__PURE__ */ jsx(FieldRenderer, {
|
|
9713
|
-
schema,
|
|
9714
|
-
field: formField,
|
|
9715
|
-
collection,
|
|
9716
|
-
context: {
|
|
9717
|
-
user,
|
|
9718
|
-
schemas,
|
|
9719
|
-
siblingData: conditionData
|
|
9720
|
-
}
|
|
9721
|
-
}) }),
|
|
9722
|
-
!isBoolean && schema.admin?.description && /* @__PURE__ */ jsx("p", {
|
|
9723
|
-
className: "dy-text-[11px] dy-text-muted-foreground/70 dy-leading-relaxed dy-italic",
|
|
9724
|
-
children: schema.admin.description
|
|
9725
|
-
}),
|
|
9726
|
-
/* @__PURE__ */ jsx(FormMessage, { className: "dy-text-xs dy-font-medium" })
|
|
9727
|
-
]
|
|
9508
|
+
render: ({ field: formField }) => /* @__PURE__ */ jsx(FormValidationFieldShell, {
|
|
9509
|
+
schema,
|
|
9510
|
+
fullPath,
|
|
9511
|
+
collection,
|
|
9512
|
+
user,
|
|
9513
|
+
schemas,
|
|
9514
|
+
conditionData,
|
|
9515
|
+
isBoolean,
|
|
9516
|
+
isSwitchBoolean,
|
|
9517
|
+
hideLabel,
|
|
9518
|
+
formField
|
|
9728
9519
|
})
|
|
9729
9520
|
});
|
|
9730
9521
|
}
|
|
@@ -9751,6 +9542,24 @@ function classifyWorkflowAutosaveError(error) {
|
|
|
9751
9542
|
//#region src/components/forms/form-engine.tsx
|
|
9752
9543
|
/** Query-string key holding the active form tab (replace-navigated). */
|
|
9753
9544
|
var TAB_PARAM = "tab";
|
|
9545
|
+
function flattenFlagTree(value, prefix = "", result = {}) {
|
|
9546
|
+
if (!value || typeof value !== "object") return result;
|
|
9547
|
+
if (Array.isArray(value)) {
|
|
9548
|
+
value.forEach((item, index) => {
|
|
9549
|
+
flattenFlagTree(item, prefix ? `${prefix}.${index}` : String(index), result);
|
|
9550
|
+
});
|
|
9551
|
+
return result;
|
|
9552
|
+
}
|
|
9553
|
+
Object.entries(value).forEach(([key, nestedValue]) => {
|
|
9554
|
+
const nextPath = prefix ? `${prefix}.${key}` : key;
|
|
9555
|
+
if (nestedValue === true) {
|
|
9556
|
+
result[nextPath] = true;
|
|
9557
|
+
return;
|
|
9558
|
+
}
|
|
9559
|
+
flattenFlagTree(nestedValue, nextPath, result);
|
|
9560
|
+
});
|
|
9561
|
+
return result;
|
|
9562
|
+
}
|
|
9754
9563
|
function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onChange, isLoading, submitLabel = "Save", hideSubmit = false, readOnly, onDataChange, passwordChangeMode = null, documentId, defaultTabLabel, autosave }, ref) {
|
|
9755
9564
|
const { activePath, navigateToPath, getStableId } = useNestedEditor();
|
|
9756
9565
|
const [searchParams, setSearchParams] = useSearchParams();
|
|
@@ -9831,6 +9640,9 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
|
|
|
9831
9640
|
isDirty
|
|
9832
9641
|
]);
|
|
9833
9642
|
const watchedValues = useWatch({ control: form.control });
|
|
9643
|
+
const errorMap = useMemo(() => Object.fromEntries(flatErrors.map((error) => [error.path, error.message])), [flatErrors]);
|
|
9644
|
+
const dirtyFieldMap = useMemo(() => flattenFlagTree(form.formState.dirtyFields), [form.formState.dirtyFields]);
|
|
9645
|
+
const touchedFieldMap = useMemo(() => flattenFlagTree(form.formState.touchedFields), [form.formState.touchedFields]);
|
|
9834
9646
|
const persistFormData = useCallback(async (data, persist, options) => {
|
|
9835
9647
|
const draftKey = `dyrected_draft:${collection}:${defaultValues?.id || "global"}`;
|
|
9836
9648
|
if (options?.reportAutosaveStatus) emitAutosaveState("saving");
|
|
@@ -9857,47 +9669,123 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
|
|
|
9857
9669
|
onSubmit,
|
|
9858
9670
|
persistFormData
|
|
9859
9671
|
]);
|
|
9672
|
+
const handleFormSubmitRef = React.useRef(handleFormSubmit);
|
|
9673
|
+
const emitAutosaveStateRef = React.useRef(emitAutosaveState);
|
|
9674
|
+
const autosaveEnabledRef = React.useRef(autosaveEnabled);
|
|
9675
|
+
React.useLayoutEffect(() => {
|
|
9676
|
+
handleFormSubmitRef.current = handleFormSubmit;
|
|
9677
|
+
emitAutosaveStateRef.current = emitAutosaveState;
|
|
9678
|
+
autosaveEnabledRef.current = autosaveEnabled;
|
|
9679
|
+
}, [
|
|
9680
|
+
autosaveEnabled,
|
|
9681
|
+
emitAutosaveState,
|
|
9682
|
+
handleFormSubmit
|
|
9683
|
+
]);
|
|
9860
9684
|
const submitCurrentDraft = useCallback(() => {
|
|
9861
9685
|
return new Promise((resolve, reject) => {
|
|
9862
9686
|
form.handleSubmit(async (data) => {
|
|
9863
9687
|
try {
|
|
9864
|
-
resolve(await
|
|
9688
|
+
resolve(await handleFormSubmitRef.current(data));
|
|
9865
9689
|
} catch (error) {
|
|
9866
9690
|
reject(error);
|
|
9867
9691
|
}
|
|
9868
9692
|
}, () => {
|
|
9869
|
-
if (
|
|
9693
|
+
if (autosaveEnabledRef.current) emitAutosaveStateRef.current("dirty");
|
|
9870
9694
|
reject(/* @__PURE__ */ new Error("Please resolve validation errors before continuing."));
|
|
9871
9695
|
})();
|
|
9872
9696
|
});
|
|
9873
|
-
}, [
|
|
9874
|
-
autosaveEnabled,
|
|
9875
|
-
emitAutosaveState,
|
|
9876
|
-
form,
|
|
9877
|
-
handleFormSubmit
|
|
9878
|
-
]);
|
|
9697
|
+
}, [form]);
|
|
9879
9698
|
React.useImperativeHandle(ref, () => ({
|
|
9880
9699
|
submitCurrentDraft,
|
|
9881
9700
|
isDirty: () => form.formState.isDirty
|
|
9882
9701
|
}), [form.formState.isDirty, submitCurrentDraft]);
|
|
9702
|
+
const setFormValue = useCallback((path, value, options) => {
|
|
9703
|
+
const setValueFn = form.setValue;
|
|
9704
|
+
setValueFn(path, value, options);
|
|
9705
|
+
}, [form]);
|
|
9706
|
+
const resetFormValues = useCallback((values) => {
|
|
9707
|
+
form.reset(values);
|
|
9708
|
+
}, [form]);
|
|
9709
|
+
const validateFormPaths = useCallback(async (paths) => {
|
|
9710
|
+
if (!paths) return form.trigger();
|
|
9711
|
+
const names = Array.isArray(paths) ? paths : [paths];
|
|
9712
|
+
return form.trigger(names);
|
|
9713
|
+
}, [form]);
|
|
9714
|
+
const handleSubmitEvent = useCallback((event) => {
|
|
9715
|
+
form.handleSubmit((data) => handleFormSubmitRef.current(data))(event);
|
|
9716
|
+
}, [form]);
|
|
9717
|
+
const [formController] = React.useState(() => createDyrectedFormController({
|
|
9718
|
+
collection,
|
|
9719
|
+
fields: resolvedFields,
|
|
9720
|
+
documentId,
|
|
9721
|
+
readOnly: Boolean(readOnly),
|
|
9722
|
+
initialValues: watchedValues ?? buildDefaultValues(fields, defaultValues),
|
|
9723
|
+
initialErrors: errorMap,
|
|
9724
|
+
initialDirtyFields: dirtyFieldMap,
|
|
9725
|
+
initialTouchedFields: touchedFieldMap,
|
|
9726
|
+
initialIsDirty: form.formState.isDirty,
|
|
9727
|
+
initialIsSubmitting: form.formState.isSubmitting,
|
|
9728
|
+
initialIsValid: form.formState.isValid,
|
|
9729
|
+
initialSubmitCount: form.formState.submitCount
|
|
9730
|
+
}));
|
|
9731
|
+
useEffect(() => {
|
|
9732
|
+
formController.setAdapters({
|
|
9733
|
+
setValue: setFormValue,
|
|
9734
|
+
reset: resetFormValues,
|
|
9735
|
+
validate: validateFormPaths,
|
|
9736
|
+
submit: submitCurrentDraft
|
|
9737
|
+
});
|
|
9738
|
+
}, [
|
|
9739
|
+
formController,
|
|
9740
|
+
resetFormValues,
|
|
9741
|
+
setFormValue,
|
|
9742
|
+
submitCurrentDraft,
|
|
9743
|
+
validateFormPaths
|
|
9744
|
+
]);
|
|
9745
|
+
useEffect(() => {
|
|
9746
|
+
formController.setState({
|
|
9747
|
+
collection,
|
|
9748
|
+
fields: resolvedFields,
|
|
9749
|
+
documentId,
|
|
9750
|
+
readOnly: Boolean(readOnly),
|
|
9751
|
+
values: watchedValues ?? {},
|
|
9752
|
+
errors: errorMap,
|
|
9753
|
+
dirtyFields: dirtyFieldMap,
|
|
9754
|
+
touchedFields: touchedFieldMap,
|
|
9755
|
+
isDirty: form.formState.isDirty,
|
|
9756
|
+
isSubmitting: form.formState.isSubmitting,
|
|
9757
|
+
isValid: form.formState.isValid,
|
|
9758
|
+
submitCount: form.formState.submitCount
|
|
9759
|
+
});
|
|
9760
|
+
}, [
|
|
9761
|
+
collection,
|
|
9762
|
+
resolvedFields,
|
|
9763
|
+
documentId,
|
|
9764
|
+
readOnly,
|
|
9765
|
+
watchedValues,
|
|
9766
|
+
errorMap,
|
|
9767
|
+
dirtyFieldMap,
|
|
9768
|
+
touchedFieldMap,
|
|
9769
|
+
form.formState.isDirty,
|
|
9770
|
+
form.formState.isSubmitting,
|
|
9771
|
+
form.formState.isValid,
|
|
9772
|
+
form.formState.submitCount,
|
|
9773
|
+
formController
|
|
9774
|
+
]);
|
|
9883
9775
|
useEffect(() => {
|
|
9884
9776
|
if (readOnly || isLoading) return;
|
|
9885
9777
|
const handleKeyDown = (e) => {
|
|
9886
9778
|
if ((e.metaKey || e.ctrlKey) && e.key === "s") {
|
|
9887
9779
|
e.preventDefault();
|
|
9888
|
-
|
|
9780
|
+
handleSubmitEvent();
|
|
9889
9781
|
}
|
|
9890
9782
|
};
|
|
9891
9783
|
window.addEventListener("keydown", handleKeyDown);
|
|
9892
9784
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
9893
9785
|
}, [
|
|
9894
|
-
|
|
9895
|
-
onSubmit,
|
|
9786
|
+
handleSubmitEvent,
|
|
9896
9787
|
readOnly,
|
|
9897
|
-
isLoading
|
|
9898
|
-
collection,
|
|
9899
|
-
defaultValues,
|
|
9900
|
-
handleFormSubmit
|
|
9788
|
+
isLoading
|
|
9901
9789
|
]);
|
|
9902
9790
|
const hasCheckedRef = React.useRef(null);
|
|
9903
9791
|
useEffect(() => {
|
|
@@ -10195,7 +10083,7 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
|
|
|
10195
10083
|
for (const tab of tabOrder) {
|
|
10196
10084
|
const tabFields = tabGroups.get(tab) || [];
|
|
10197
10085
|
let errorCount = 0;
|
|
10198
|
-
for (const field of tabFields) errorCount += flatErrors.filter((err) => err.path === field.name || err.path.startsWith(field.name
|
|
10086
|
+
for (const field of tabFields) errorCount += flatErrors.filter((err) => err.path === field.name || err.path.startsWith(`${joinFieldPath(field.name ?? "")}.`)).length;
|
|
10199
10087
|
tabErrorsCount.set(tab, errorCount);
|
|
10200
10088
|
}
|
|
10201
10089
|
fieldsContent = /* @__PURE__ */ jsx("div", {
|
|
@@ -10252,62 +10140,65 @@ function FormEngineInner({ collection, fields, defaultValues = {}, onSubmit, onC
|
|
|
10252
10140
|
onClick: () => navigateToPath(activePath.slice(0, idx + 1)),
|
|
10253
10141
|
children: segment.breadcrumbLabel
|
|
10254
10142
|
})] }, segment.stableId ?? segment.basePath))]
|
|
10255
|
-
}), /* @__PURE__ */ jsx(
|
|
10256
|
-
|
|
10257
|
-
children: /* @__PURE__ */
|
|
10258
|
-
|
|
10259
|
-
|
|
10260
|
-
|
|
10261
|
-
|
|
10262
|
-
|
|
10263
|
-
|
|
10264
|
-
|
|
10265
|
-
|
|
10266
|
-
|
|
10267
|
-
|
|
10268
|
-
|
|
10269
|
-
className: "dy-
|
|
10270
|
-
children: [/* @__PURE__ */
|
|
10271
|
-
|
|
10272
|
-
|
|
10273
|
-
|
|
10274
|
-
className: "dy-
|
|
10275
|
-
|
|
10276
|
-
|
|
10277
|
-
|
|
10278
|
-
|
|
10279
|
-
|
|
10280
|
-
|
|
10281
|
-
el.
|
|
10282
|
-
|
|
10283
|
-
|
|
10284
|
-
|
|
10285
|
-
|
|
10286
|
-
|
|
10287
|
-
|
|
10288
|
-
|
|
10289
|
-
|
|
10290
|
-
|
|
10291
|
-
|
|
10292
|
-
|
|
10293
|
-
|
|
10294
|
-
|
|
10295
|
-
|
|
10296
|
-
|
|
10297
|
-
|
|
10298
|
-
|
|
10299
|
-
|
|
10300
|
-
|
|
10301
|
-
|
|
10302
|
-
|
|
10303
|
-
|
|
10304
|
-
|
|
10305
|
-
|
|
10306
|
-
|
|
10307
|
-
|
|
10143
|
+
}), /* @__PURE__ */ jsx(DyrectedFormProvider, {
|
|
10144
|
+
controller: formController,
|
|
10145
|
+
children: /* @__PURE__ */ jsx(Form, {
|
|
10146
|
+
...form,
|
|
10147
|
+
children: /* @__PURE__ */ jsxs("form", {
|
|
10148
|
+
id: "dyrected-edit-form",
|
|
10149
|
+
onSubmit: handleSubmitEvent,
|
|
10150
|
+
className: "dy-space-y-8",
|
|
10151
|
+
children: [
|
|
10152
|
+
resolvedFields.filter((f) => f.admin?.hidden).map((field) => /* @__PURE__ */ jsx("input", {
|
|
10153
|
+
type: "hidden",
|
|
10154
|
+
...form.register(field.name)
|
|
10155
|
+
}, field.name)),
|
|
10156
|
+
flatErrors.length > 0 && /* @__PURE__ */ jsxs("div", {
|
|
10157
|
+
className: "dy-p-4 dy-rounded-lg dy-bg-destructive/10 dy-border dy-border-destructive/20 dy-text-destructive dy-space-y-2",
|
|
10158
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
10159
|
+
className: "dy-flex dy-items-center dy-gap-2 dy-font-semibold",
|
|
10160
|
+
children: [/* @__PURE__ */ jsx(AlertCircle, { className: "dy-h-4 dy-w-4 dy-shrink-0" }), /* @__PURE__ */ jsx("span", { children: "Please resolve the following validation errors:" })]
|
|
10161
|
+
}), /* @__PURE__ */ jsx("ul", {
|
|
10162
|
+
className: "dy-list-disc dy-list-inside dy-text-sm dy-space-y-1",
|
|
10163
|
+
children: flatErrors.map((err, idx) => /* @__PURE__ */ jsxs("li", {
|
|
10164
|
+
className: "dy-cursor-pointer hover:dy-underline",
|
|
10165
|
+
onClick: () => {
|
|
10166
|
+
const trail = resolveContainerPath(resolvedFields, err.path, getStableId);
|
|
10167
|
+
if (trail && trail.length > 0) navigateToPath(trail);
|
|
10168
|
+
setTimeout(() => {
|
|
10169
|
+
const el = document.querySelector(`[data-dy-field="${err.path}"]`) || document.querySelector(`[name="${err.path}"]`);
|
|
10170
|
+
if (el) {
|
|
10171
|
+
el.scrollIntoView({
|
|
10172
|
+
behavior: "smooth",
|
|
10173
|
+
block: "center"
|
|
10174
|
+
});
|
|
10175
|
+
(el.querySelector("input, textarea, [contenteditable], button[role=\"combobox\"]") || el)?.focus();
|
|
10176
|
+
}
|
|
10177
|
+
}, 0);
|
|
10178
|
+
},
|
|
10179
|
+
children: [
|
|
10180
|
+
/* @__PURE__ */ jsxs("span", {
|
|
10181
|
+
className: "dy-font-medium",
|
|
10182
|
+
children: [formatPath(err.path), ":"]
|
|
10183
|
+
}),
|
|
10184
|
+
" ",
|
|
10185
|
+
err.message
|
|
10186
|
+
]
|
|
10187
|
+
}, idx))
|
|
10188
|
+
})]
|
|
10189
|
+
}),
|
|
10190
|
+
fieldsContent,
|
|
10191
|
+
showPasswordSection && tabbedFields.length === 0 && renderChangePasswordSection(),
|
|
10192
|
+
!hideSubmit && /* @__PURE__ */ jsx("div", {
|
|
10193
|
+
className: "dy-flex dy-justify-end dy-gap-4",
|
|
10194
|
+
children: !readOnly && /* @__PURE__ */ jsx(Button, {
|
|
10195
|
+
type: "submit",
|
|
10196
|
+
disabled: isLoading,
|
|
10197
|
+
children: isLoading ? "Saving..." : submitLabel
|
|
10198
|
+
})
|
|
10308
10199
|
})
|
|
10309
|
-
|
|
10310
|
-
|
|
10200
|
+
]
|
|
10201
|
+
})
|
|
10311
10202
|
})
|
|
10312
10203
|
})] });
|
|
10313
10204
|
}
|
|
@@ -11247,8 +11138,10 @@ function getAvailableWorkflowTransitions(workflowConfig, workflowMeta) {
|
|
|
11247
11138
|
}
|
|
11248
11139
|
function getPrimaryWorkflowTransition(transitions) {
|
|
11249
11140
|
if (transitions.length === 0) return null;
|
|
11250
|
-
|
|
11251
|
-
|
|
11141
|
+
return transitions.find((transition) => !transition.unpublish) ?? null;
|
|
11142
|
+
}
|
|
11143
|
+
function shouldUseSaveDraftAsPrimaryAction(workflowConfig, workflowMeta) {
|
|
11144
|
+
return !!resolveWorkflowState(workflowConfig, workflowMeta)?.published;
|
|
11252
11145
|
}
|
|
11253
11146
|
function groupWorkflowTransitions(transitions) {
|
|
11254
11147
|
return transitions.reduce((groups, transition) => {
|
|
@@ -11278,46 +11171,51 @@ function StateIcon$1({ color }) {
|
|
|
11278
11171
|
if (color === "info") return /* @__PURE__ */ jsx(AlertCircle, { className: "dy-h-3.5 dy-w-3.5" });
|
|
11279
11172
|
return /* @__PURE__ */ jsx(Clock, { className: "dy-h-3.5 dy-w-3.5" });
|
|
11280
11173
|
}
|
|
11281
|
-
function
|
|
11174
|
+
function WorkflowCommentDialogBody({ transition, pending, onConfirm, onCancel }) {
|
|
11282
11175
|
const [comment, setComment] = React$1.useState("");
|
|
11283
|
-
|
|
11284
|
-
|
|
11285
|
-
|
|
11176
|
+
return /* @__PURE__ */ jsxs(DialogContent, {
|
|
11177
|
+
className: "sm:dy-max-w-md",
|
|
11178
|
+
children: [
|
|
11179
|
+
/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: transition.label }), /* @__PURE__ */ jsx(DialogDescription, { children: "Add the required comment before applying this workflow transition." })] }),
|
|
11180
|
+
/* @__PURE__ */ jsxs("div", {
|
|
11181
|
+
className: "dy-space-y-2",
|
|
11182
|
+
children: [/* @__PURE__ */ jsx("label", {
|
|
11183
|
+
className: "dy-text-xs dy-font-semibold dy-text-muted-foreground",
|
|
11184
|
+
children: "Comment"
|
|
11185
|
+
}), /* @__PURE__ */ jsx("textarea", {
|
|
11186
|
+
className: "dy-min-h-28 dy-w-full dy-rounded-lg dy-border dy-border-border/60 dy-bg-background dy-px-3 dy-py-2 dy-text-sm dy-text-foreground placeholder:dy-text-muted-foreground focus:dy-outline-none focus:dy-ring-2 focus:dy-ring-primary/30",
|
|
11187
|
+
value: comment,
|
|
11188
|
+
onChange: (event) => setComment(event.target.value),
|
|
11189
|
+
placeholder: `Required for "${transition.label}"`,
|
|
11190
|
+
autoFocus: true
|
|
11191
|
+
})]
|
|
11192
|
+
}),
|
|
11193
|
+
/* @__PURE__ */ jsxs(DialogFooter, {
|
|
11194
|
+
className: "dy-flex dy-justify-end dy-gap-2",
|
|
11195
|
+
children: [/* @__PURE__ */ jsx(Button, {
|
|
11196
|
+
variant: "outline",
|
|
11197
|
+
onClick: onCancel,
|
|
11198
|
+
disabled: pending,
|
|
11199
|
+
children: "Cancel"
|
|
11200
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
11201
|
+
onClick: () => onConfirm(comment.trim()),
|
|
11202
|
+
disabled: pending || !comment.trim(),
|
|
11203
|
+
children: pending ? /* @__PURE__ */ jsx(Loader2, { className: "dy-h-4 dy-w-4 dy-animate-spin" }) : transition.label
|
|
11204
|
+
})]
|
|
11205
|
+
})
|
|
11206
|
+
]
|
|
11207
|
+
});
|
|
11208
|
+
}
|
|
11209
|
+
function WorkflowCommentDialog({ transition, pending, onOpenChange, onConfirm }) {
|
|
11286
11210
|
return /* @__PURE__ */ jsx(Dialog, {
|
|
11287
11211
|
open: !!transition,
|
|
11288
11212
|
onOpenChange,
|
|
11289
|
-
children: /* @__PURE__ */
|
|
11290
|
-
|
|
11291
|
-
|
|
11292
|
-
|
|
11293
|
-
|
|
11294
|
-
|
|
11295
|
-
children: [/* @__PURE__ */ jsx("label", {
|
|
11296
|
-
className: "dy-text-xs dy-font-semibold dy-text-muted-foreground",
|
|
11297
|
-
children: "Comment"
|
|
11298
|
-
}), /* @__PURE__ */ jsx("textarea", {
|
|
11299
|
-
className: "dy-min-h-28 dy-w-full dy-rounded-lg dy-border dy-border-border/60 dy-bg-background dy-px-3 dy-py-2 dy-text-sm dy-text-foreground placeholder:dy-text-muted-foreground focus:dy-outline-none focus:dy-ring-2 focus:dy-ring-primary/30",
|
|
11300
|
-
value: comment,
|
|
11301
|
-
onChange: (event) => setComment(event.target.value),
|
|
11302
|
-
placeholder: `Required for "${transition?.label ?? "this transition"}"`,
|
|
11303
|
-
autoFocus: true
|
|
11304
|
-
})]
|
|
11305
|
-
}),
|
|
11306
|
-
/* @__PURE__ */ jsxs(DialogFooter, {
|
|
11307
|
-
className: "dy-flex dy-justify-end dy-gap-2",
|
|
11308
|
-
children: [/* @__PURE__ */ jsx(Button, {
|
|
11309
|
-
variant: "outline",
|
|
11310
|
-
onClick: () => onOpenChange(false),
|
|
11311
|
-
disabled: pending,
|
|
11312
|
-
children: "Cancel"
|
|
11313
|
-
}), /* @__PURE__ */ jsx(Button, {
|
|
11314
|
-
onClick: () => onConfirm(comment.trim()),
|
|
11315
|
-
disabled: pending || !comment.trim(),
|
|
11316
|
-
children: pending ? /* @__PURE__ */ jsx(Loader2, { className: "dy-h-4 dy-w-4 dy-animate-spin" }) : transition?.label
|
|
11317
|
-
})]
|
|
11318
|
-
})
|
|
11319
|
-
]
|
|
11320
|
-
})
|
|
11213
|
+
children: transition ? /* @__PURE__ */ jsx(WorkflowCommentDialogBody, {
|
|
11214
|
+
transition,
|
|
11215
|
+
pending,
|
|
11216
|
+
onConfirm,
|
|
11217
|
+
onCancel: () => onOpenChange(false)
|
|
11218
|
+
}, transition.name) : null
|
|
11321
11219
|
});
|
|
11322
11220
|
}
|
|
11323
11221
|
function WorkflowTransitionActionItems({ transitions, workflowConfig, onSelect, disabled }) {
|
|
@@ -11440,6 +11338,11 @@ function WorkflowTransitionSplitButton({ collection, documentId, workflowConfig,
|
|
|
11440
11338
|
const transitions = React$1.useMemo(() => getAvailableWorkflowTransitions(workflowConfig, workflowMeta), [workflowConfig, workflowMeta]);
|
|
11441
11339
|
const groupedTransitions = React$1.useMemo(() => groupWorkflowTransitions(transitions), [transitions]);
|
|
11442
11340
|
const primaryTransition = React$1.useMemo(() => getPrimaryWorkflowTransition(transitions), [transitions]);
|
|
11341
|
+
const saveDraftIsPrimary = React$1.useMemo(() => Boolean(onSaveDraft && shouldUseSaveDraftAsPrimaryAction(workflowConfig, workflowMeta)), [
|
|
11342
|
+
onSaveDraft,
|
|
11343
|
+
workflowConfig,
|
|
11344
|
+
workflowMeta
|
|
11345
|
+
]);
|
|
11443
11346
|
const { requestTransition, commentTransition, setCommentTransition, confirmComment, mutation, isPreparing } = useWorkflowTransitionExecutor({
|
|
11444
11347
|
collection,
|
|
11445
11348
|
documentIds: [documentId],
|
|
@@ -11452,8 +11355,10 @@ function WorkflowTransitionSplitButton({ collection, documentId, workflowConfig,
|
|
|
11452
11355
|
const activeTransitionName = mutation.variables?.transition?.name;
|
|
11453
11356
|
const isPrimaryLoading = mutation.isPending && activeTransitionName === primaryTransition?.name;
|
|
11454
11357
|
const hasTransitions = transitions.length > 0;
|
|
11455
|
-
const hasMenuItems = hasTransitions || !!onSaveDraft;
|
|
11358
|
+
const hasMenuItems = hasTransitions || !!onSaveDraft && !saveDraftIsPrimary;
|
|
11456
11359
|
const isBusy = mutation.isPending || isPreparing || !!saveDraftPending;
|
|
11360
|
+
const primaryLabel = saveDraftIsPrimary ? saveDraftPending ? "Saving draft..." : "Save draft" : primaryTransition?.label ?? "No actions";
|
|
11361
|
+
const primaryDisabled = saveDraftIsPrimary ? isBusy : !primaryTransition || isBusy;
|
|
11457
11362
|
React$1.useEffect(() => {
|
|
11458
11363
|
onPendingChange?.(mutation.isPending || isPreparing);
|
|
11459
11364
|
}, [
|
|
@@ -11468,15 +11373,22 @@ function WorkflowTransitionSplitButton({ collection, documentId, workflowConfig,
|
|
|
11468
11373
|
children: [/* @__PURE__ */ jsx(Button, {
|
|
11469
11374
|
size: "sm",
|
|
11470
11375
|
className: "dy-h-9 dy-rounded-none dy-border-0 dy-px-4 dy-font-bold dy-bg-primary dy-text-primary-foreground hover:dy-bg-primary/90",
|
|
11471
|
-
disabled:
|
|
11376
|
+
disabled: primaryDisabled,
|
|
11472
11377
|
onClick: () => {
|
|
11378
|
+
if (saveDraftIsPrimary) {
|
|
11379
|
+
onSaveDraft?.();
|
|
11380
|
+
return;
|
|
11381
|
+
}
|
|
11473
11382
|
if (primaryTransition) requestTransition(primaryTransition);
|
|
11474
11383
|
},
|
|
11475
|
-
title: primaryTransition?.label ?? "No workflow actions available",
|
|
11476
|
-
children:
|
|
11384
|
+
title: saveDraftIsPrimary ? "Save draft" : primaryTransition?.label ?? "No workflow actions available",
|
|
11385
|
+
children: saveDraftIsPrimary && saveDraftPending ? /* @__PURE__ */ jsxs("span", {
|
|
11386
|
+
className: "dy-flex dy-items-center dy-gap-2",
|
|
11387
|
+
children: [/* @__PURE__ */ jsx(Loader2, { className: "dy-h-3.5 dy-w-3.5 dy-animate-spin" }), "Saving draft..."]
|
|
11388
|
+
}) : isPrimaryLoading || isPreparing ? /* @__PURE__ */ jsxs("span", {
|
|
11477
11389
|
className: "dy-flex dy-items-center dy-gap-2",
|
|
11478
11390
|
children: [/* @__PURE__ */ jsx(Loader2, { className: "dy-h-3.5 dy-w-3.5 dy-animate-spin" }), isPreparing ? "Saving…" : "Applying…"]
|
|
11479
|
-
}) :
|
|
11391
|
+
}) : primaryLabel
|
|
11480
11392
|
}), /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
|
|
11481
11393
|
asChild: true,
|
|
11482
11394
|
children: /* @__PURE__ */ jsx(Button, {
|
|
@@ -11490,7 +11402,7 @@ function WorkflowTransitionSplitButton({ collection, documentId, workflowConfig,
|
|
|
11490
11402
|
}), /* @__PURE__ */ jsxs(DropdownMenuContent, {
|
|
11491
11403
|
align: "end",
|
|
11492
11404
|
className: "dy-min-w-56",
|
|
11493
|
-
children: [onSaveDraft && /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
11405
|
+
children: [onSaveDraft && !saveDraftIsPrimary && /* @__PURE__ */ jsxs(DropdownMenuItem, {
|
|
11494
11406
|
onClick: () => void onSaveDraft(),
|
|
11495
11407
|
disabled: isBusy,
|
|
11496
11408
|
className: "dy-flex dy-items-center dy-gap-2",
|
|
@@ -12320,7 +12232,7 @@ function CollectionListPageContent({ slug }) {
|
|
|
12320
12232
|
/* @__PURE__ */ jsx(PageHeader, {
|
|
12321
12233
|
title: "Media Library",
|
|
12322
12234
|
description: "Manage your media assets and uploads.",
|
|
12323
|
-
icon: Image
|
|
12235
|
+
icon: Image,
|
|
12324
12236
|
children: canCreate && /* @__PURE__ */ jsx(Link, {
|
|
12325
12237
|
to: `/collections/${slug}/new`,
|
|
12326
12238
|
className: "dy-w-full sm:dy-w-auto",
|
|
@@ -14927,7 +14839,7 @@ var SORT_OPTIONS = [
|
|
|
14927
14839
|
}
|
|
14928
14840
|
];
|
|
14929
14841
|
function MediaPage({ collectionSlug, schema }) {
|
|
14930
|
-
const { client, components, user } = useDyrected();
|
|
14842
|
+
const { client, components, user, schemas } = useDyrected();
|
|
14931
14843
|
const queryClient = useQueryClient();
|
|
14932
14844
|
const [search, setSearch] = React$1.useState("");
|
|
14933
14845
|
const [isUploadOpen, setIsUploadOpen] = React$1.useState(false);
|
|
@@ -14935,7 +14847,7 @@ function MediaPage({ collectionSlug, schema }) {
|
|
|
14935
14847
|
const [selectedItem, setSelectedItem] = React$1.useState(null);
|
|
14936
14848
|
const [sortValue, setSortValue] = React$1.useState("-createdAt");
|
|
14937
14849
|
const [viewMode, setViewMode] = React$1.useState("grid");
|
|
14938
|
-
const { data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading } = useInfiniteQuery({
|
|
14850
|
+
const { data, fetchNextPage, hasNextPage, isFetchingNextPage, isLoading, error: queryError } = useInfiniteQuery({
|
|
14939
14851
|
queryKey: [
|
|
14940
14852
|
"media",
|
|
14941
14853
|
collectionSlug,
|
|
@@ -15080,6 +14992,7 @@ function MediaPage({ collectionSlug, schema }) {
|
|
|
15080
14992
|
})]
|
|
15081
14993
|
})
|
|
15082
14994
|
});
|
|
14995
|
+
const hasStorageError = schemas?.hasStorage === false || isStorageNotConfiguredError(queryError);
|
|
15083
14996
|
return /* @__PURE__ */ jsxs("div", {
|
|
15084
14997
|
...getRootProps(),
|
|
15085
14998
|
onPaste: handlePaste,
|
|
@@ -15099,6 +15012,7 @@ function MediaPage({ collectionSlug, schema }) {
|
|
|
15099
15012
|
})]
|
|
15100
15013
|
})
|
|
15101
15014
|
}),
|
|
15015
|
+
hasStorageError && /* @__PURE__ */ jsx(StorageNotConfiguredNotice, { variant: "banner" }),
|
|
15102
15016
|
/* @__PURE__ */ jsx(AdminComponentSlot, {
|
|
15103
15017
|
slot: "beforeList",
|
|
15104
15018
|
componentKeys: collectionSlots?.beforeList,
|
|
@@ -15111,7 +15025,7 @@ function MediaPage({ collectionSlug, schema }) {
|
|
|
15111
15025
|
className: "dy-min-w-0",
|
|
15112
15026
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
15113
15027
|
className: "dy-flex dy-items-center dy-gap-2 dy-mb-1",
|
|
15114
|
-
children: [/* @__PURE__ */ jsx(Image
|
|
15028
|
+
children: [/* @__PURE__ */ jsx(Image, { className: "dy-h-5 dy-w-5 dy-flex-shrink-0 dy-text-primary" }), /* @__PURE__ */ jsx("h1", {
|
|
15115
15029
|
className: "dy-min-w-0 dy-break-words dy-text-2xl dy-font-bold dy-tracking-tight dy-text-foreground sm:dy-text-3xl",
|
|
15116
15030
|
children: schema.labels?.plural ?? (collectionSlug !== "media" ? collectionSlug.charAt(0).toUpperCase() + collectionSlug.slice(1) : "Media Library")
|
|
15117
15031
|
})]
|
|
@@ -15434,10 +15348,17 @@ function MediaCard({ item, baseUrl, onDelete, onClick, isSelected }) {
|
|
|
15434
15348
|
children: [
|
|
15435
15349
|
/* @__PURE__ */ jsx(CardHeader, {
|
|
15436
15350
|
className: "!dy-p-0 dy-border-b dy-border-border/10",
|
|
15437
|
-
children: /* @__PURE__ */
|
|
15351
|
+
children: /* @__PURE__ */ jsxs(AspectRatio, {
|
|
15438
15352
|
ratio: 1 / 1,
|
|
15439
15353
|
className: "dy-bg-muted/30 dy-overflow-hidden dy-relative",
|
|
15440
|
-
children:
|
|
15354
|
+
children: [(() => {
|
|
15355
|
+
const info = getMediaSourceInfo(item);
|
|
15356
|
+
if (info.source !== "external") return null;
|
|
15357
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
15358
|
+
className: "dy-absolute dy-top-2 dy-left-2 dy-z-30 dy-flex dy-items-center dy-gap-1 dy-rounded-md dy-bg-black/60 dy-backdrop-blur-md dy-px-2 dy-py-0.5 dy-text-[9px] dy-font-bold dy-text-white dy-uppercase",
|
|
15359
|
+
children: [/* @__PURE__ */ jsx(Globe, { className: "dy-h-2.5 dy-w-2.5" }), info.label]
|
|
15360
|
+
});
|
|
15361
|
+
})(), hasPreview ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
15441
15362
|
item.blurhash && /* @__PURE__ */ jsx("div", {
|
|
15442
15363
|
className: "dy-absolute dy-inset-0 dy-z-0",
|
|
15443
15364
|
children: /* @__PURE__ */ jsx(Blurhash, {
|
|
@@ -15465,7 +15386,7 @@ function MediaCard({ item, baseUrl, onDelete, onClick, isSelected }) {
|
|
|
15465
15386
|
] }) : /* @__PURE__ */ jsx("div", {
|
|
15466
15387
|
className: "dy-flex dy-items-center dy-justify-center dy-h-full dy-bg-primary/5",
|
|
15467
15388
|
children: /* @__PURE__ */ jsx(FileIcon, { className: "dy-h-10 dy-w-10 dy-text-primary/40" })
|
|
15468
|
-
})
|
|
15389
|
+
})]
|
|
15469
15390
|
})
|
|
15470
15391
|
}),
|
|
15471
15392
|
/* @__PURE__ */ jsxs(CardContent, {
|
|
@@ -15800,10 +15721,21 @@ function DetailItem({ label, value, copyable }) {
|
|
|
15800
15721
|
});
|
|
15801
15722
|
}
|
|
15802
15723
|
function FileUploader({ collectionSlug, files, setFiles, onComplete }) {
|
|
15803
|
-
const {
|
|
15804
|
-
|
|
15805
|
-
|
|
15806
|
-
|
|
15724
|
+
const { isUploading: uploading, queue, uploadFiles } = useMediaUpload({
|
|
15725
|
+
collectionSlug: collectionSlug || "media",
|
|
15726
|
+
onAllCompleted: (items) => {
|
|
15727
|
+
setFiles([]);
|
|
15728
|
+
onComplete();
|
|
15729
|
+
toast.success(`${items.length} asset(s) uploaded successfully`);
|
|
15730
|
+
},
|
|
15731
|
+
onError: (error) => toast.error("Failed to upload assets", { description: error.message })
|
|
15732
|
+
});
|
|
15733
|
+
const progress = React$1.useMemo(() => {
|
|
15734
|
+
if (queue.length === 0) return 0;
|
|
15735
|
+
const total = queue.reduce((acc, q) => acc + q.progress, 0);
|
|
15736
|
+
return Math.round(total / queue.length);
|
|
15737
|
+
}, [queue]);
|
|
15738
|
+
const { url: externalUrl, setUrl: setExternalUrl, submit: handleAddUrl, isSubmitting: addingUrl } = useMediaURL({
|
|
15807
15739
|
collection: collectionSlug || "media",
|
|
15808
15740
|
onAdded: () => {
|
|
15809
15741
|
toast.success("External media added");
|
|
@@ -15816,20 +15748,7 @@ function FileUploader({ collectionSlug, files, setFiles, onComplete }) {
|
|
|
15816
15748
|
}, [setFiles]) });
|
|
15817
15749
|
const handleUpload = async () => {
|
|
15818
15750
|
if (files.length === 0) return;
|
|
15819
|
-
|
|
15820
|
-
setProgress(0);
|
|
15821
|
-
try {
|
|
15822
|
-
const total = files.length;
|
|
15823
|
-
for (let i = 0; i < files.length; i++) await client.collection(collectionSlug || "media").upload(files[i], void 0, { onProgress: (pct) => setProgress(Math.round((i + pct / 100) / total * 100)) });
|
|
15824
|
-
setProgress(100);
|
|
15825
|
-
onComplete();
|
|
15826
|
-
toast.success(`${files.length} assets uploaded successfully`);
|
|
15827
|
-
} catch (error) {
|
|
15828
|
-
console.error("Upload failed", error);
|
|
15829
|
-
toast.error("Failed to upload assets", { description: error.message });
|
|
15830
|
-
} finally {
|
|
15831
|
-
setUploading(false);
|
|
15832
|
-
}
|
|
15751
|
+
await uploadFiles(files);
|
|
15833
15752
|
};
|
|
15834
15753
|
return /* @__PURE__ */ jsxs(Tabs, {
|
|
15835
15754
|
defaultValue: "files",
|
|
@@ -16165,7 +16084,7 @@ function SetupPromptUI({ config }) {
|
|
|
16165
16084
|
setCopied(true);
|
|
16166
16085
|
window.setTimeout(() => setCopied(false), 1800);
|
|
16167
16086
|
}
|
|
16168
|
-
const currentVersion = "2.6.
|
|
16087
|
+
const currentVersion = "2.6.2";
|
|
16169
16088
|
const [latestVersion, setLatestVersion] = useState(() => {
|
|
16170
16089
|
if (typeof window === "undefined") return null;
|
|
16171
16090
|
return localStorage.getItem("dyrected_latest_release");
|
|
@@ -17102,49 +17021,6 @@ var Toaster$1 = ({ ...props }) => {
|
|
|
17102
17021
|
});
|
|
17103
17022
|
};
|
|
17104
17023
|
//#endregion
|
|
17105
|
-
//#region src/hooks/admin-theme-provider.tsx
|
|
17106
|
-
function getSystemTheme() {
|
|
17107
|
-
if (typeof window === "undefined" || !window.matchMedia) return "light";
|
|
17108
|
-
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
17109
|
-
}
|
|
17110
|
-
function AdminThemeProvider({ children }) {
|
|
17111
|
-
const [theme, setTheme] = usePreferences("theme", "system");
|
|
17112
|
-
const [systemTheme, setSystemTheme] = React$1.useState(() => getSystemTheme());
|
|
17113
|
-
React$1.useEffect(() => {
|
|
17114
|
-
if (typeof window === "undefined" || !window.matchMedia) return;
|
|
17115
|
-
const media = window.matchMedia("(prefers-color-scheme: dark)");
|
|
17116
|
-
const syncSystemTheme = () => {
|
|
17117
|
-
setSystemTheme(media.matches ? "dark" : "light");
|
|
17118
|
-
};
|
|
17119
|
-
syncSystemTheme();
|
|
17120
|
-
media.addEventListener("change", syncSystemTheme);
|
|
17121
|
-
return () => media.removeEventListener("change", syncSystemTheme);
|
|
17122
|
-
}, []);
|
|
17123
|
-
const resolvedTheme = resolveAdminTheme(theme, systemTheme);
|
|
17124
|
-
const value = React$1.useMemo(() => ({
|
|
17125
|
-
theme,
|
|
17126
|
-
resolvedTheme,
|
|
17127
|
-
setTheme,
|
|
17128
|
-
themeClassName: adminThemeClassName(resolvedTheme)
|
|
17129
|
-
}), [
|
|
17130
|
-
resolvedTheme,
|
|
17131
|
-
setTheme,
|
|
17132
|
-
theme
|
|
17133
|
-
]);
|
|
17134
|
-
return /* @__PURE__ */ jsx(AdminThemeContext.Provider, {
|
|
17135
|
-
value,
|
|
17136
|
-
children
|
|
17137
|
-
});
|
|
17138
|
-
}
|
|
17139
|
-
function AdminThemedRoot({ children }) {
|
|
17140
|
-
const { resolvedTheme, themeClassName } = useAdminTheme();
|
|
17141
|
-
return /* @__PURE__ */ jsx("div", {
|
|
17142
|
-
className: `${themeClassName} dy-h-full`,
|
|
17143
|
-
"data-theme": resolvedTheme,
|
|
17144
|
-
children
|
|
17145
|
-
});
|
|
17146
|
-
}
|
|
17147
|
-
//#endregion
|
|
17148
17024
|
//#region src/index.tsx
|
|
17149
17025
|
function CollectionRoute() {
|
|
17150
17026
|
const { slug } = useParams();
|
|
@@ -17223,7 +17099,7 @@ function AdminRoutes({ onNavigate, isEmbedded = false }) {
|
|
|
17223
17099
|
* <AdminUI baseUrl="/dyrected" apiKey="my-key" isEmbedded />
|
|
17224
17100
|
* ```
|
|
17225
17101
|
*/
|
|
17226
|
-
function AdminUI({ apiKey, baseUrl = "/dyrected", siteId, onNavigate, isEmbedded, components, initialToken, defaultTechStack }) {
|
|
17102
|
+
function AdminUI({ apiKey, baseUrl = "/dyrected", siteId, onNavigate, isEmbedded, components, initialToken, defaultTechStack, themeController }) {
|
|
17227
17103
|
const [mounted, setMounted] = useState(false);
|
|
17228
17104
|
useEffect(() => setMounted(true), []);
|
|
17229
17105
|
if (!mounted) return /* @__PURE__ */ jsx("div", {
|
|
@@ -17239,14 +17115,17 @@ function AdminUI({ apiKey, baseUrl = "/dyrected", siteId, onNavigate, isEmbedded
|
|
|
17239
17115
|
components,
|
|
17240
17116
|
initialToken,
|
|
17241
17117
|
defaultTechStack,
|
|
17242
|
-
children: /* @__PURE__ */ jsx(AdminThemeProvider, {
|
|
17243
|
-
|
|
17244
|
-
|
|
17245
|
-
|
|
17246
|
-
|
|
17247
|
-
|
|
17248
|
-
|
|
17249
|
-
|
|
17118
|
+
children: /* @__PURE__ */ jsx(AdminThemeProvider, {
|
|
17119
|
+
controller: themeController,
|
|
17120
|
+
children: /* @__PURE__ */ jsxs(AdminThemedRoot, { children: [/* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsx(HashRouter, { children: /* @__PURE__ */ jsx(AdminRoutes, {
|
|
17121
|
+
onNavigate,
|
|
17122
|
+
isEmbedded
|
|
17123
|
+
}) }) }), /* @__PURE__ */ jsx(Toaster$1, {
|
|
17124
|
+
position: "top-center",
|
|
17125
|
+
expand: true,
|
|
17126
|
+
richColors: true
|
|
17127
|
+
})] })
|
|
17128
|
+
})
|
|
17250
17129
|
}) })
|
|
17251
17130
|
});
|
|
17252
17131
|
}
|
|
@@ -17275,7 +17154,7 @@ function renderAdminUI(container, props) {
|
|
|
17275
17154
|
* Intended for iframe or self-hosted deployments where the admin owns
|
|
17276
17155
|
* the entire page and does not share URL history with a host app.
|
|
17277
17156
|
*/
|
|
17278
|
-
function AdminStandalone({ apiKey, baseUrl, siteId }) {
|
|
17157
|
+
function AdminStandalone({ apiKey, baseUrl, siteId, themeController }) {
|
|
17279
17158
|
const [mounted, setMounted] = useState(false);
|
|
17280
17159
|
useEffect(() => setMounted(true), []);
|
|
17281
17160
|
if (!mounted) return /* @__PURE__ */ jsx("div", {
|
|
@@ -17288,13 +17167,16 @@ function AdminStandalone({ apiKey, baseUrl, siteId }) {
|
|
|
17288
17167
|
apiKey,
|
|
17289
17168
|
baseUrl,
|
|
17290
17169
|
siteId,
|
|
17291
|
-
children: /* @__PURE__ */ jsx(AdminThemeProvider, {
|
|
17292
|
-
|
|
17293
|
-
|
|
17294
|
-
|
|
17295
|
-
|
|
17170
|
+
children: /* @__PURE__ */ jsx(AdminThemeProvider, {
|
|
17171
|
+
controller: themeController,
|
|
17172
|
+
children: /* @__PURE__ */ jsxs(AdminThemedRoot, { children: [/* @__PURE__ */ jsx(QueryProvider, { children: /* @__PURE__ */ jsx(MemoryRouter, { children: /* @__PURE__ */ jsx(AdminRoutes, {}) }) }), /* @__PURE__ */ jsx(Toaster$1, {
|
|
17173
|
+
position: "top-center",
|
|
17174
|
+
expand: true,
|
|
17175
|
+
richColors: true
|
|
17176
|
+
})] })
|
|
17177
|
+
})
|
|
17296
17178
|
})
|
|
17297
17179
|
});
|
|
17298
17180
|
}
|
|
17299
17181
|
//#endregion
|
|
17300
|
-
export { AdminStandalone, AdminUI, SetupPromptUI, renderAdminUI };
|
|
17182
|
+
export { AdminStandalone, AdminThemeProvider, AdminThemedRoot, AdminUI, DyrectedFieldPathProvider, DyrectedFormProvider, SetupPromptUI, adminThemeClassName, buildDefaultValues, buildSchemaShape, compressImage, createAdminThemeController, createDyrectedFieldController, createDyrectedFormController, createMediaLibraryController, createMediaURLController, createMediaUploadController, formatPath, getFieldPathSegments, getFlatErrors, getMediaSourceInfo, getParentFieldPath, getSystemAdminTheme, getValueAtPath, isExternalMedia, joinFieldPath, normalizeFieldPath, renderAdminUI, resolveActiveMediaCollection, resolveAdminTheme, resolveContainerPath, setValueAtPath, useAddMediaFromUrl, useAdminTheme, useDyrectedForm, useField, useMediaLibrary, useMediaURL, useMediaUpload };
|