@k2b/ui 0.14.0 → 0.15.0

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.
Files changed (56) hide show
  1. package/dist/browser/content/FileGrid.js +28 -8
  2. package/dist/browser/content/FileGrid.js.map +1 -1
  3. package/dist/browser/content/MarkdownView.js +11 -5
  4. package/dist/browser/content/MarkdownView.js.map +1 -1
  5. package/dist/browser/content/MessageRow.js +1250 -0
  6. package/dist/browser/content/MessageRow.js.map +1 -0
  7. package/dist/browser/content/VirtualFeed.js +1127 -0
  8. package/dist/browser/content/VirtualFeed.js.map +1 -0
  9. package/dist/browser/content/collection-selection.js +27 -11
  10. package/dist/browser/content/collection-selection.js.map +1 -1
  11. package/dist/browser/content/index.js +2 -0
  12. package/dist/browser/content/index.js.map +1 -1
  13. package/dist/browser/feedback/InstallGuide.js +199 -145
  14. package/dist/browser/feedback/InstallGuide.js.map +1 -1
  15. package/dist/browser/feedback/install.js +8 -4
  16. package/dist/browser/feedback/install.js.map +1 -1
  17. package/dist/browser/inputs/QrScanner.js +101 -21
  18. package/dist/browser/inputs/QrScanner.js.map +1 -1
  19. package/dist/browser/intl/messages.js +82 -0
  20. package/dist/browser/intl/messages.js.map +1 -1
  21. package/dist/browser/surfaces/Avatar.js +33 -17
  22. package/dist/browser/surfaces/Avatar.js.map +1 -1
  23. package/dist/ssr/content/FileGrid.js +17 -3
  24. package/dist/ssr/content/FileGrid.js.map +1 -1
  25. package/dist/ssr/content/MarkdownView.js +11 -5
  26. package/dist/ssr/content/MarkdownView.js.map +1 -1
  27. package/dist/ssr/content/MessageRow.js +796 -0
  28. package/dist/ssr/content/MessageRow.js.map +1 -0
  29. package/dist/ssr/content/VirtualFeed.js +989 -0
  30. package/dist/ssr/content/VirtualFeed.js.map +1 -0
  31. package/dist/ssr/content/collection-selection.js +27 -11
  32. package/dist/ssr/content/collection-selection.js.map +1 -1
  33. package/dist/ssr/content/index.js +2 -0
  34. package/dist/ssr/content/index.js.map +1 -1
  35. package/dist/ssr/feedback/InstallGuide.js +150 -98
  36. package/dist/ssr/feedback/InstallGuide.js.map +1 -1
  37. package/dist/ssr/feedback/install.js +8 -4
  38. package/dist/ssr/feedback/install.js.map +1 -1
  39. package/dist/ssr/inputs/QrScanner.js +101 -21
  40. package/dist/ssr/inputs/QrScanner.js.map +1 -1
  41. package/dist/ssr/intl/messages.js +82 -0
  42. package/dist/ssr/intl/messages.js.map +1 -1
  43. package/dist/ssr/surfaces/Avatar.js +14 -1
  44. package/dist/ssr/surfaces/Avatar.js.map +1 -1
  45. package/dist/styles.css +1 -1
  46. package/dist/types/content/FileGrid.d.ts +6 -1
  47. package/dist/types/content/MarkdownView.d.ts +8 -0
  48. package/dist/types/content/MessageRow.d.ts +168 -0
  49. package/dist/types/content/VirtualFeed.d.ts +81 -0
  50. package/dist/types/content/collection-selection.d.ts +15 -1
  51. package/dist/types/content/index.d.ts +4 -0
  52. package/dist/types/feedback/InstallGuide.d.ts +5 -3
  53. package/dist/types/feedback/install.d.ts +4 -3
  54. package/dist/types/inputs/QrScanner.d.ts +10 -2
  55. package/dist/types/intl/messages.d.ts +41 -0
  56. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["inputs/QrScanner.tsx"],"sourcesContent":["import { timed } from \"@k2b/stdlib/solid\";\nimport type QrScannerEngine from \"qr-scanner\";\nimport { createSignal, type JSX, onCleanup, onMount, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type QrScannerError = \"denied\" | \"unavailable\";\n\nexport type QrScannerProps = {\n /** Decoded text is untrusted. Return `true` to accept it and stop the camera, `false` to reject it and keep scanning. */\n onResult: (text: string) => boolean;\n /** The page was hidden or left; unmount the scanner. */\n onStop: () => void;\n /** The camera could not start: access was denied, or there is no usable camera. Offer another way in. */\n onError: (reason: QrScannerError) => void;\n /** What to point the camera at. Defaults to a generic QR code hint. */\n instructions?: string;\n class?: string;\n};\n\n/**\n * qr-scanner turns every getUserMedia failure into the string \"Camera not found.\", so only the Permissions API can\n * tell a refusal apart. Safari and Chrome expose the camera permission; elsewhere a refusal counts as unavailable.\n */\nconst cameraDenied = async (): Promise<boolean> => {\n try {\n return (await navigator.permissions.query({ name: \"camera\" as PermissionName })).state === \"denied\";\n } catch {\n return false;\n }\n};\n\n/**\n * Scans a QR code with the rear camera. Each mount owns exactly one camera session, which stops when the scanner\n * unmounts, the page is hidden, or a result is accepted. The scanning engine loads only when the scanner mounts.\n * Decoded content is never logged.\n */\nexport function QrScanner(props: QrScannerProps): JSX.Element {\n const messages = useUiMessages();\n const [starting, setStarting] = createSignal(true);\n const [invalid, setInvalid] = createSignal(false);\n let lastRejected: string | undefined;\n const resetRejected = timed.debounce(() => {\n lastRejected = undefined;\n }, 1000);\n const resetFeedback = timed.debounce(() => setInvalid(false), 1500);\n let video!: HTMLVideoElement;\n let scanner: QrScannerEngine | undefined;\n let closed = false;\n /** The host has unmounted the scanner; it no longer hears about failures that finish later. */\n let unmounted = false;\n let cleanupMotion: (() => void) | undefined;\n const destroy = () => {\n closed = true;\n cleanupMotion?.();\n resetRejected.cancel();\n resetFeedback.cancel();\n // pause(true) stops existing tracks immediately; destroy also handles a still-pending permission request.\n void scanner?.pause(true);\n scanner?.destroy();\n scanner = undefined;\n };\n const fail = async () => {\n if (closed) return;\n destroy();\n const denied = await cameraDenied();\n if (!unmounted) props.onError(denied ? \"denied\" : \"unavailable\");\n };\n onMount(() => {\n const hidden = () => {\n if (document.visibilityState !== \"visible\") props.onStop();\n };\n const leaving = () => props.onStop();\n document.addEventListener(\"visibilitychange\", hidden);\n window.addEventListener(\"pagehide\", leaving);\n onCleanup(() => {\n unmounted = true;\n destroy();\n document.removeEventListener(\"visibilitychange\", hidden);\n window.removeEventListener(\"pagehide\", leaving);\n });\n void (async () => {\n try {\n const { default: Engine } = await import(\"qr-scanner\");\n if (closed || document.visibilityState !== \"visible\") return;\n scanner = new Engine(\n video,\n (result) => {\n if (closed) return;\n // Rearm only after a full second without a decoded QR, not between individual frames.\n resetRejected.debouncedFn();\n if (result.data === lastRejected) return;\n if (props.onResult(result.data)) {\n destroy();\n return;\n }\n lastRejected = result.data;\n setInvalid(true);\n resetFeedback.debouncedFn();\n },\n {\n preferredCamera: \"environment\",\n highlightScanRegion: true,\n // Empty frames are expected. Never log decoded content or frame data.\n onDecodeError: (error) => {\n if (closed || error === Engine.NO_QR_CODE_FOUND) return;\n void fail();\n },\n },\n );\n const motion = matchMedia(\"(prefers-reduced-motion: reduce)\");\n const applyMotion = () => {\n for (const animation of scanner?.$overlay?.getAnimations({ subtree: true }) ?? []) {\n if (motion.matches) animation.pause();\n else animation.play();\n }\n };\n applyMotion();\n motion.addEventListener(\"change\", applyMotion);\n cleanupMotion = () => motion.removeEventListener(\"change\", applyMotion);\n await scanner.start();\n if (!closed) setStarting(false);\n } catch {\n await fail();\n }\n })();\n });\n return (\n <div class={props.class ? `k2b-qr-scanner ${props.class}` : \"k2b-qr-scanner\"}>\n <div class=\"k2b-qr-scanner__preview\" data-invalid={invalid() || undefined}>\n {/* Live camera preview contains no prerecorded speech or audio. */}\n <video ref={video} muted playsinline aria-label={messages().qrCameraPreview} />\n </div>\n <p role=\"status\">{starting() ? messages().qrCameraStarting : (props.instructions ?? messages().qrCameraInstructions)}</p>\n <Show when={!starting()}>\n <p class=\"k2b-qr-scanner__note\">{messages().qrCameraPrivacy}</p>\n </Show>\n </div>\n );\n}\n\nexport default QrScanner;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["inputs/QrScanner.tsx"],"sourcesContent":["import { timed } from \"@k2b/stdlib/solid\";\nimport type QrScannerEngine from \"qr-scanner\";\nimport { createSignal, type JSX, onCleanup, onMount, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\n/**\n * Why the scanner could not start, as far as the browser tells: `\"denied\"` when camera access is off, `\"no-camera\"`\n * when the device has no camera, `\"in-use\"` when the camera is busy or could not start, most often because another app\n * holds it, and `\"unavailable\"` for anything else, including a scanning engine that cannot load.\n */\nexport type QrScannerError = \"denied\" | \"no-camera\" | \"in-use\" | \"unavailable\";\n\nexport type QrScannerProps = {\n /** Decoded text is untrusted. Return `true` to accept it and stop the camera, `false` to reject it and keep scanning. */\n onResult: (text: string) => boolean;\n /** The page was hidden or left; unmount the scanner. */\n onStop: () => void;\n /**\n * The camera or the scanning engine could not start; the scanner has stopped. Offer another way in. A frame that\n * cannot be decoded never ends here.\n */\n onError: (reason: QrScannerError) => void;\n /** What to point the camera at. Defaults to a generic QR code hint. */\n instructions?: string;\n class?: string;\n};\n\nconst sizes: MediaTrackConstraints[] = [{ width: { min: 1024 } }, { width: { min: 768 } }, {}];\n/** The rear camera at a resolution that keeps small codes readable, then any camera: the order qr-scanner tries. */\nconst cameraRequests: MediaTrackConstraints[] = [...sizes.map((size) => ({ ...size, facingMode: { exact: \"environment\" } })), ...sizes];\n\nconst errorName = (error: unknown): string => (typeof error === \"object\" && error !== null && \"name\" in error ? String(error.name) : \"\");\n\nconst cameraFailure = (name: string): QrScannerError => {\n if (name === \"NotAllowedError\" || name === \"SecurityError\") return \"denied\";\n if (name === \"NotFoundError\" || name === \"OverconstrainedError\") return \"no-camera\";\n if (name === \"NotReadableError\") return \"in-use\";\n return \"unavailable\";\n};\n\n/** The facing a track reports, or else the one its label names, as qr-scanner reads it. */\nconst facingOf = (track: MediaStreamTrack | undefined): string | undefined => {\n if (!track) return undefined;\n const { facingMode } = track.getSettings();\n if (facingMode) return facingMode;\n if (/rear|back|environment/i.test(track.label)) return \"environment\";\n if (/front|user|face/i.test(track.label)) return \"user\";\n return undefined;\n};\n\n/**\n * Opens the camera here rather than in qr-scanner, which turns every failure into \"Camera not found.\". A refusal ends\n * the search, because asking again could show the permission prompt again. Any other failure may belong to the request,\n * such as a camera that cannot start at the larger size, so the next, looser request follows, as in qr-scanner. When\n * none succeeds, a camera that exists but fails outweighs a request no camera could meet. A closed scanner asks no more.\n */\nconst openCamera = async (closed: () => boolean): Promise<{ stream: MediaStream; mirrored: boolean } | { error: QrScannerError }> => {\n if (!navigator.mediaDevices) return { error: \"unavailable\" };\n let error: QrScannerError = \"no-camera\";\n for (const video of cameraRequests) {\n if (closed()) break;\n try {\n const stream = await navigator.mediaDevices.getUserMedia({ video, audio: false });\n const facing = facingOf(stream.getVideoTracks()[0]);\n // Like qr-scanner, mirror a front camera, and a camera of unknown facing that the rear request did not find.\n return { stream, mirrored: facing ? facing === \"user\" : !video.facingMode };\n } catch (failure) {\n const reason = cameraFailure(errorName(failure));\n if (reason === \"denied\") return { error: reason };\n if (reason !== \"no-camera\") error = reason;\n }\n }\n return { error };\n};\n\nconst stopStream = (stream: MediaStream) => {\n for (const track of stream.getTracks()) track.stop();\n};\n\n/**\n * Scans a QR code with the rear camera. Each mount owns exactly one camera session, which stops when the scanner\n * unmounts, the page is hidden, or a result is accepted. The scanning engine loads only when the scanner mounts.\n * Decoded content is never logged.\n */\nexport function QrScanner(props: QrScannerProps): JSX.Element {\n const messages = useUiMessages();\n const [starting, setStarting] = createSignal(true);\n const [invalid, setInvalid] = createSignal(false);\n let lastRejected: string | undefined;\n const resetRejected = timed.debounce(() => {\n lastRejected = undefined;\n }, 1000);\n const resetFeedback = timed.debounce(() => setInvalid(false), 1500);\n let video!: HTMLVideoElement;\n let scanner: QrScannerEngine | undefined;\n let closed = false;\n let cleanupMotion: (() => void) | undefined;\n const destroy = () => {\n closed = true;\n cleanupMotion?.();\n resetRejected.cancel();\n resetFeedback.cancel();\n // pause(true) stops the camera stream immediately.\n void scanner?.pause(true);\n scanner?.destroy();\n scanner = undefined;\n };\n // Once closed, the host has unmounted the scanner or heard why it stopped; later failures stay silent.\n const fail = (reason: QrScannerError) => {\n if (closed) return;\n destroy();\n props.onError(reason);\n };\n onMount(() => {\n const hidden = () => {\n if (document.visibilityState !== \"visible\") props.onStop();\n };\n const leaving = () => props.onStop();\n document.addEventListener(\"visibilitychange\", hidden);\n window.addEventListener(\"pagehide\", leaving);\n onCleanup(() => {\n destroy();\n document.removeEventListener(\"visibilitychange\", hidden);\n window.removeEventListener(\"pagehide\", leaving);\n });\n void (async () => {\n try {\n const { default: Engine } = await import(\"qr-scanner\");\n if (closed || document.visibilityState !== \"visible\") return;\n scanner = new Engine(\n video,\n (result) => {\n if (closed) return;\n // Rearm only after a full second without a decoded QR, not between individual frames.\n resetRejected.debouncedFn();\n if (result.data === lastRejected) return;\n if (props.onResult(result.data)) {\n destroy();\n return;\n }\n lastRejected = result.data;\n setInvalid(true);\n resetFeedback.debouncedFn();\n },\n {\n highlightScanRegion: true,\n // A frame that cannot be decoded never ends the session: the camera runs, and the next frame may read.\n // An engine error other than an empty frame, which the native BarcodeDetector reports as \"Scanner error:\n // No QR code found\", means the detector cannot read on this device. Fall back to the bundled worker for\n // the page through the flag qr-scanner 1.4.2 sets itself for \"not implemented\" and \"service unavailable\";\n // it swaps engines after this frame. Worker errors carry the same prefix; the flag changes nothing there.\n // qr-scanner reports frames only as strings: an Error means the engine itself did not load, such as a\n // decoder chunk gone after a deploy or a worker that cannot start, and no later frame can read. Never log\n // decoded content or frame data.\n onDecodeError: (error) => {\n if (typeof error !== \"string\") return fail(\"unavailable\");\n if (error.startsWith(\"Scanner error: \") && !error.endsWith(Engine.NO_QR_CODE_FOUND)) {\n Reflect.set(Engine, \"_disableBarcodeDetector\", true);\n }\n },\n },\n );\n const motion = matchMedia(\"(prefers-reduced-motion: reduce)\");\n const applyMotion = () => {\n for (const animation of scanner?.$overlay?.getAnimations({ subtree: true }) ?? []) {\n if (motion.matches) animation.pause();\n else animation.play();\n }\n };\n applyMotion();\n motion.addEventListener(\"change\", applyMotion);\n cleanupMotion = () => motion.removeEventListener(\"change\", applyMotion);\n const camera = await openCamera(() => closed);\n if (\"error\" in camera) return fail(camera.error);\n if (closed) return stopStream(camera.stream);\n // qr-scanner plays a stream that is already set instead of opening its own.\n video.srcObject = camera.stream;\n video.style.transform = camera.mirrored ? \"scaleX(-1)\" : \"\";\n await scanner.start();\n if (!closed) setStarting(false);\n } catch {\n fail(\"unavailable\");\n }\n })();\n });\n return (\n <div class={props.class ? `k2b-qr-scanner ${props.class}` : \"k2b-qr-scanner\"}>\n <div class=\"k2b-qr-scanner__preview\" data-invalid={invalid() || undefined}>\n {/* Live camera preview contains no prerecorded speech or audio. */}\n <video ref={video} muted playsinline aria-label={messages().qrCameraPreview} />\n </div>\n <p role=\"status\">{starting() ? messages().qrCameraStarting : (props.instructions ?? messages().qrCameraInstructions)}</p>\n <Show when={!starting()}>\n <p class=\"k2b-qr-scanner__note\">{messages().qrCameraPrivacy}</p>\n </Show>\n </div>\n );\n}\n\nexport default QrScanner;\n"],"mappings":"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","ignoreList":[]}
@@ -197,6 +197,42 @@ const uiMessages = i18n.define({
197
197
  dropFilesToAttach: "Drop files to attach",
198
198
  conversation: "Conversation",
199
199
  jumpToLatest: "Jump to latest",
200
+ feedJumpToLatest: "Jump to latest",
201
+ feedJumpToLatestCount: ({
202
+ count
203
+ }) => `Jump to latest, ${count} new`,
204
+ feedNewItems: ({
205
+ count
206
+ }) => count === 1 ? "1 new item" : `${count} new items`,
207
+ feedNewMarker: "New",
208
+ messageSent: "Sent",
209
+ messageNotSent: "Not sent",
210
+ messageRetry: "Retry",
211
+ messageShowMore: "Show more",
212
+ messageShowLess: "Show less",
213
+ messageReplyTo: "In reply to",
214
+ messageForwarded: "Forwarded",
215
+ messageEdited: "edited",
216
+ messageDeleted: "This message was deleted",
217
+ messageVideo: "Video",
218
+ messageMoreAttachments: ({
219
+ count
220
+ }) => `${count} more`,
221
+ messageReactions: "Reactions",
222
+ messageReaction: ({
223
+ emoji,
224
+ count,
225
+ names,
226
+ own
227
+ }) => `${emoji} ${own && count === 1 ? "your reaction" : `${count} ${count === 1 ? "reaction" : "reactions"}${own ? ", including yours" : ""}`}${names ? `: ${names}` : ""}`,
228
+ messageAddReaction: "Add reaction",
229
+ messageReplies: ({
230
+ count
231
+ }) => count === 1 ? "1 reply" : `${count} replies`,
232
+ messageLastReply: ({
233
+ time
234
+ }) => `Last reply ${time}`,
235
+ messageStop: "Stop",
200
236
  conversationMessages: ({
201
237
  label
202
238
  }) => `${label} messages`,
@@ -506,6 +542,11 @@ const uiMessages = i18n.define({
506
542
  installAppleBrowserDetail: "This browser installs through Share → Add to Home Screen. If that isn’t there, open this page in Safari.",
507
543
  installAndroidBrowserTitle: "Chrome works best",
508
544
  installAndroidBrowserDetail: "In this browser, look for “Install” or “Add to Home screen” in the menu. If that isn’t there, open this page in Chrome.",
545
+ installSamsungTitle: "Install with Chrome",
546
+ installSamsungDetail: ({
547
+ appName
548
+ }) => `On Samsung phones, Samsung Internet builds its own app package, which Android 14 and later may block as “built for an older version of Android”. That warning is about the package, not about ${appName}. Chrome installs ${appName} without it. Without Chrome, use this browser’s menu and continue through that warning.`,
549
+ installOpenChrome: "Open in Chrome",
509
550
  installCopyLink: "Copy link",
510
551
  installLinkCopied: "Link copied",
511
552
  installCopyFailed: "The link could not be copied. Copy this address manually:",
@@ -708,6 +749,42 @@ const uiMessages = i18n.define({
708
749
  dropFilesToAttach: "Dateien zum Anhängen ablegen",
709
750
  conversation: "Unterhaltung",
710
751
  jumpToLatest: "Zur neuesten Nachricht",
752
+ feedJumpToLatest: "Zum Neuesten",
753
+ feedJumpToLatestCount: ({
754
+ count
755
+ }) => `Zum Neuesten, ${count} neu`,
756
+ feedNewItems: ({
757
+ count
758
+ }) => count === 1 ? "1 neuer Eintrag" : `${count} neue Einträge`,
759
+ feedNewMarker: "Neu",
760
+ messageSent: "Gesendet",
761
+ messageNotSent: "Nicht gesendet",
762
+ messageRetry: "Erneut senden",
763
+ messageShowMore: "Mehr anzeigen",
764
+ messageShowLess: "Weniger anzeigen",
765
+ messageReplyTo: "Antwort auf",
766
+ messageForwarded: "Weitergeleitet",
767
+ messageEdited: "bearbeitet",
768
+ messageDeleted: "Diese Nachricht wurde gelöscht",
769
+ messageVideo: "Video",
770
+ messageMoreAttachments: ({
771
+ count
772
+ }) => `${count} weitere`,
773
+ messageReactions: "Reaktionen",
774
+ messageReaction: ({
775
+ emoji,
776
+ count,
777
+ names,
778
+ own
779
+ }) => `${emoji} ${own && count === 1 ? "deine Reaktion" : `${count} ${count === 1 ? "Reaktion" : "Reaktionen"}${own ? ", einschließlich deiner" : ""}`}${names ? `: ${names}` : ""}`,
780
+ messageAddReaction: "Reaktion hinzufügen",
781
+ messageReplies: ({
782
+ count
783
+ }) => count === 1 ? "1 Antwort" : `${count} Antworten`,
784
+ messageLastReply: ({
785
+ time
786
+ }) => `Letzte Antwort ${time}`,
787
+ messageStop: "Stoppen",
711
788
  conversationMessages: ({
712
789
  label
713
790
  }) => `Nachrichten in ${label}`,
@@ -1017,6 +1094,11 @@ const uiMessages = i18n.define({
1017
1094
  installAppleBrowserDetail: "In diesem Browser installierst du über Teilen → Zum Home-Bildschirm. Fehlt der Eintrag, öffne diese Seite in Safari.",
1018
1095
  installAndroidBrowserTitle: "Am besten mit Chrome",
1019
1096
  installAndroidBrowserDetail: "Suche in diesem Browser im Menü nach „Installieren“ oder „Zum Startbildschirm hinzufügen“. Fehlt der Eintrag, öffne diese Seite in Chrome.",
1097
+ installSamsungTitle: "Mit Chrome installieren",
1098
+ installSamsungDetail: ({
1099
+ appName
1100
+ }) => `Auf Samsung-Handys erstellt Samsung Internet ein eigenes App-Paket, das Android ab Version 14 als „für eine ältere Android-Version entwickelt“ blockieren kann. Diese Warnung betrifft das Paket, nicht ${appName}. Mit Chrome installierst du ${appName} ohne sie. Ohne Chrome nutze das Menü dieses Browsers und fahre trotz dieser Warnung fort.`,
1101
+ installOpenChrome: "In Chrome öffnen",
1020
1102
  installCopyLink: "Link kopieren",
1021
1103
  installLinkCopied: "Link kopiert",
1022
1104
  installCopyFailed: "Der Link konnte nicht kopiert werden. Kopiere diese Adresse manuell:",
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["intl/messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"./locale\";\n\nconst uiMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n chartView: \"Chart view\",\n chartDiagram: \"Diagram\",\n chartData: \"Table\",\n chartSeries: \"Series visibility\",\n chartOnly: \"Only\",\n chartShowAll: \"Show all\",\n chartShowing: \"Showing\",\n chartSelectedDatum: \"Selected data point\",\n chartReference: \"Reference\",\n chartCurrent: \"Current\",\n chartPinReference: \"Pin as reference\",\n chartRemoveComparison: \"Remove comparison\",\n chartPreviousData: \"The chart and table still show the last loaded filters\",\n chartCopyData: \"Copy data\",\n chartCopyFailed: \"Could not copy data\",\n\n actions: \"Actions\",\n add: \"Add\",\n addTag: \"Add tag\",\n addImage: \"Add image\",\n apply: \"Apply\",\n attachments: \"Attachments\",\n assistant: \"Assistant\",\n avatarLabel: ({ name }: { name: string }) => `${name} avatar`,\n all: \"All\",\n calendar: \"Calendar\",\n clear: \"Clear\",\n clearDate: \"Clear date\",\n clearSelection: \"Clear selection\",\n chooseOption: \"Choose option\",\n close: \"Close\",\n closeDialog: \"close dialog\",\n copied: \"Copied\",\n infoBlockNote: \"Note\",\n infoBlockInfo: \"Info\",\n infoBlockSuccess: \"Success\",\n infoBlockWarning: \"Warning\",\n infoBlockDanger: \"Danger\",\n copy: \"Copy\",\n closeLightbox: \"Close lightbox\",\n couldNotLoadData: \"Could not load this data\",\n datePicker: \"Date picker\",\n dataTable: \"Data table\",\n datePresets: \"Date presets\",\n decreaseValue: \"Decrease value\",\n download: \"Download\",\n downloadAsZip: \"Download as ZIP\",\n downloadImage: \"Download image\",\n dropFiles: \"Drop files or click to choose\",\n dropToUpload: \"Drop to upload\",\n dropdownMenu: \"Dropdown menu\",\n durationPresets: \"Duration presets\",\n filterOptions: \"Filter options\",\n fileTypeNotAccepted: \"File type not accepted\",\n imageLightbox: \"Image lightbox\",\n imageNavigation: \"Image navigation\",\n increaseValue: \"Increase value\",\n loading: \"Loading...\",\n hidePassword: \"Hide password\",\n noColumns: \"No columns.\",\n noData: \"No data.\",\n noRecords: \"No records\",\n noTagsYet: \"No tags yet\",\n noResultsFound: \"No results found\",\n nextImage: \"Next image\",\n noOptions: \"No options available\",\n optionsCouldNotLoad: \"Options could not be loaded\",\n noResults: \"No results\",\n nothingHere: \"Nothing here yet.\",\n nothingToShow: \"Nothing to show.\",\n no: \"No\",\n options: \"Options\",\n pagination: \"Pagination\",\n pageOf: ({ page, total }: { page: number; total: number }) => `Page ${page} of ${total}`,\n pickDate: \"Pick date\",\n previousImage: \"Previous image\",\n previousMonth: \"Previous month\",\n previousPage: \"Previous page\",\n previousYear: \"Previous year\",\n nextMonth: \"Next month\",\n nextPage: \"Next page\",\n nextYear: \"Next year\",\n goToPage: ({ page }: { page: number }) => `Go to page ${page}`,\n retry: \"Retry\",\n refreshing: \"Refreshing\",\n reset: \"Reset\",\n required: \"Required\",\n minCharacters: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n maxCharacters: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n minTags: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n maxTags: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n rename: \"Rename\",\n delete: \"Delete\",\n remove: \"Remove\",\n removeTag: \"Remove tag\",\n search: \"Search...\",\n searchLabel: \"Search\",\n spotlightNoResults: \"No results.\",\n searchFailed: \"Search failed.\",\n searchResults: \"Search results\",\n save: \"Save\",\n saveShortcut: \"Save (Ctrl/Cmd+S)\",\n sectionsLabel: ({ title }: { title: string }) => `${title} sections`,\n searchOptions: \"Search options\",\n select: \"Select...\",\n selectMatchingOption: \"Select a matching option\",\n selectOption: \"Select option\",\n suggestions: \"Suggestions\",\n suggestionsCouldNotLoad: \"Suggestions could not be loaded\",\n showPassword: \"Show password\",\n time: \"Time\",\n timeLabel: ({ label }: { label: string }) => `${label} time`,\n completionSuggestions: \"Completion suggestions\",\n contextMenu: \"Context menu\",\n unknownUser: \"Unknown user\",\n uploading: \"Uploading…\",\n chooseFile: \"Choose file\",\n chooseFiles: \"Choose files\",\n chooseMatchingFile: \"Choose a file that matches this field.\",\n checkingOptions: \"Checking options\",\n checkingOptionsLoading: \"Checking options...\",\n noMatchingOption: \"No matching option found\",\n noOptionsFound: \"No options found\",\n typeToSearch: \"Type to search...\",\n showGridView: \"Show grid view\",\n showListView: \"Show list view\",\n start: \"Start\",\n end: \"End\",\n addFileFolderUpload: \"Add file, folder, or upload\",\n addPane: \"Add pane\",\n addToChat: \"Add to chat\",\n attachFiles: \"Attach files\",\n addGuidance: \"Add guidance...\",\n calendarView: \"Calendar view\",\n openDate: ({ label }: { label: string }) => `Open ${label}`,\n createEventOn: ({ label }: { label: string }) => `Create event on ${label}`,\n hiddenOverlappingEvents: ({ count }: { count: number }) => `${count} hidden overlapping events`,\n calendarEventTime: ({ title, start, end }: { title: string; start: string; end: string }) => `${title}, ${start} to ${end}`,\n today: \"Today\",\n day: \"Day\",\n week: \"Week\",\n weekShort: \"Wk\",\n month: \"Month\",\n year: \"Year\",\n allDay: \"All day\",\n noEvents: \"No events\",\n previous: \"Previous\",\n next: \"Next\",\n moveEvent: \"Move event\",\n resizeEvent: \"Resize event\",\n cancel: \"Cancel\",\n chat: \"Chat\",\n chooseModel: \"Choose model\",\n closeWindow: \"Close window\",\n code: \"Code\",\n codeLabel: ({ title }: { title: string }) => `${title} code`,\n column: ({ number }: { number: number }) => `Column ${number}`,\n commands: \"Commands\",\n dropFilesToAttach: \"Drop files to attach\",\n conversation: \"Conversation\",\n jumpToLatest: \"Jump to latest\",\n conversationMessages: ({ label }: { label: string }) => `${label} messages`,\n dialogTabs: \"Dialog tabs\",\n files: \"Files\",\n chooseFileToPreview: \"Choose a file to preview it.\",\n change: \"Change\",\n changeImage: \"Change image\",\n cropArea: \"Crop area. Use arrow keys to move; hold Shift for larger steps.\",\n cropPreview: \"Crop preview\",\n discardChanges: \"Discard changes\",\n discardUnsavedFile: \"Discard the unsaved changes in this file?\",\n downloadFailed: \"Download failed\",\n failedLoadFiles: \"Failed to load files\",\n failedLoadImage: \"Failed to load image.\",\n folderEmpty: \"This folder is empty.\",\n folderSelected: \"Folder selected\",\n newFile: \"New file\",\n newFileName: \"Name of the new file:\",\n newFolder: \"New folder\",\n newFolderName: \"Name of the new folder:\",\n fileActions: \"File actions\",\n actionsFor: ({ name }: { name: string }) => `Actions for ${name}`,\n fileSaved: \"File saved\",\n pickFileFromTree: \"Pick a file from the tree to view it.\",\n imageProcessingFailed: \"Image could not be processed.\",\n preparingImage: \"Preparing image…\",\n processingImage: \"Processing image\",\n removeImage: \"Remove image\",\n rotateRight: \"Rotate right\",\n selectedImage: \"Selected image\",\n selectFile: \"Select a file\",\n spaceEmpty: \"This space is empty.\",\n uploadFiles: \"Upload files\",\n filterIcons: \"Filter icons\",\n loadEarlier: \"Load earlier\",\n loadingConversation: \"Loading conversation\",\n loadingFiles: \"Loading files...\",\n loadingMessages: \"Loading messages\",\n failed: \"Failed\",\n generating: \"Generating\",\n loadOlderMessages: \"Load older messages\",\n loadingOlderMessages: \"Loading older messages\",\n couldNotLoadOlderMessages: \"Could not load older messages\",\n couldNotLoadEarlierMessages: \"Could not load earlier messages\",\n couldNotPostMessage: \"Could not post message\",\n message: \"Message\",\n messageActions: \"Message actions\",\n messageComposer: \"Message composer\",\n messageInput: \"Message input\",\n confirmation: \"Confirmation\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Type ${phrase} to confirm`,\n confirm: \"Confirm\",\n dialog: \"Dialog\",\n discard: \"Discard\",\n error: \"Error\",\n form: \"Form\",\n filterActions: \"Filter actions\",\n info: \"Info\",\n dismissNotification: \"Dismiss notification\",\n notifications: \"Notifications\",\n interactiveLineChart: \"Interactive line chart\",\n interactiveChart:\n \"Interactive chart. Use arrow keys to inspect, Enter to select, Escape to dismiss. On maps and timelines use Alt with arrow keys to inspect.\",\n chartFields: ({ key }: { key: string }) => {\n const labels: Record<string, string> = {\n x: \"X\",\n y: \"Y\",\n value: \"Value\",\n percent: \"Share\",\n total: \"Total\",\n from: \"From\",\n to: \"To\",\n upperInclusive: \"Includes upper bound\",\n count: \"Count\",\n q1: \"Lower quartile\",\n q2: \"Median\",\n q3: \"Upper quartile\",\n whiskerLow: \"Lower whisker\",\n whiskerHigh: \"Upper whisker\",\n min: \"Minimum\",\n max: \"Maximum\",\n threshold: \"Threshold\",\n delta: \"Change\",\n latitude: \"Latitude\",\n longitude: \"Longitude\",\n size: \"Size\",\n state: \"State\",\n duration: \"Duration\",\n detail: \"Detail\",\n errY: \"Y error\",\n errYHigh: \"Upper Y error\",\n errYLow: \"Lower Y error\",\n errX: \"X error\",\n errXHigh: \"Upper X error\",\n errXLow: \"Lower X error\",\n };\n return labels[key] ?? key;\n },\n interactiveMap: \"Interactive map\",\n interactiveTimeline: \"Interactive timeline\",\n ok: \"OK\",\n success: \"Success\",\n model: \"Model\",\n input: \"Input\",\n output: \"Output\",\n loopTotal: \"Loop total\",\n remaining: \"Remaining\",\n notConfigured: \"Not configured\",\n unknown: \"Unknown\",\n system: \"System\",\n tool: \"Tool\",\n user: \"User\",\n useColor: \"Use a color\",\n useTransparent: \"Use transparent\",\n series: \"Series\",\n waiting: \"Waiting\",\n templateEditorPlaceholder: \"Write HTML with Liquid values like {{ APP_NAME }}...\",\n templatePreview: \"Template preview\",\n lastRequestContext: \"Last request context\",\n contextWindowUsed: \"Context window used\",\n contextUsageUnavailable: \"Context usage unavailable\",\n contextUsageUnavailableWithWindow: ({ window }: { window: string }) => `Context usage unavailable, ${window} token context window`,\n tokensUsed: ({ total }: { total: string }) => `${total} tokens used`,\n tokensUsedPercent: ({ total, percent }: { total: string; percent: number }) =>\n `${total} tokens used, ${percent}% of the context window`,\n moveDown: \"Move down\",\n moveUp: \"Move up\",\n moveNamedDown: ({ label }: { label: string }) => `Move ${label} down`,\n moveNamedUp: ({ label }: { label: string }) => `Move ${label} up`,\n rowAction: \"Row action\",\n addToNamed: ({ name }: { name: string }) => `Add to ${name}`,\n insertBeforeNamed: ({ name }: { name: string }) => `Insert before ${name}`,\n insertAtEnd: \"Insert at end\",\n addPaneSide: ({ side, name }: { side: \"left\" | \"right\" | \"top\" | \"bottom\"; name: string }) => `Add ${side} of ${name}`,\n discardUnsavedChanges: \"Discard unsaved changes?\",\n unsavedChangesTitle: \"Unsaved changes\",\n tagName: \"Tag name\",\n name: \"Name\",\n color: \"Color\",\n tagCouldNotBeSaved: \"The tag could not be saved.\",\n tagActionFailed: \"The tag action failed.\",\n tagsPlaceholder: \"Tags (e.g. Tag 1, Tag 2,...)\",\n tagsAdded: ({ tags }: { tags: string }) => `Tags added: ${tags}.`,\n tagsRemoved: ({ tags }: { tags: string }) => `Tags removed: ${tags}.`,\n noFiles: \"No files\",\n noLogEntries: \"No log entries found.\",\n noPreview: \"No preview\",\n openPreview: \"Open preview\",\n paneTabs: \"Pane tabs\",\n paneWorkspace: \"Pane workspace\",\n pdfPreview: \"PDF preview\",\n pdfPreviewHttpError: ({ status }: { status: number }) => `PDF preview failed with HTTP ${status}`,\n pdfPreviewTabBlocked: \"The browser blocked the new tab. Allow pop-ups and try again.\",\n pdfPreviewRendering: \"Rendering PDF preview…\",\n pickIcon: \"Pick an icon...\",\n postMessage: \"Post message\",\n preview: \"Preview\",\n previewPdf: \"Preview PDF\",\n renderPdfPreview: \"Render a PDF preview to see the final output.\",\n queueMessage: \"Queue message\",\n queueing: \"Queueing\",\n sending: \"Sending\",\n steering: \"Steering\",\n writeMessage: \"Write a message or type / ...\",\n openInNewTab: ({ name }: { name: string }) => `Open ${name} in a new tab`,\n closeNamed: ({ name }: { name: string }) => `Close ${name}`,\n goToImage: ({ index }: { index: number }) => `Go to image ${index}`,\n pinDigit: ({ index, total }: { index: number; total: number }) => `PIN digit ${index} of ${total}`,\n moreSelected: ({ count }: { count: number }) => `${count} more selected`,\n removeNamed: ({ name }: { name: string }) => `Remove ${name}`,\n resizeCrop: ({ handle }: { handle: string }) => `Resize crop ${handle}`,\n range: \"Range\",\n resizePanes: \"Resize panes\",\n resetMapView: \"Reset map view\",\n resetTimelineView: \"Reset timeline view\",\n retryOlderMessages: \"Retry loading older messages\",\n saveChanges: \"Save changes\",\n saving: \"Saving\",\n sendMessage: \"Send message\",\n startConversation: \"Start a conversation\",\n steerResponse: \"Steer response\",\n stopResponse: \"Stop response\",\n stopping: \"Stopping\",\n unsaved: \"Unsaved\",\n unsavedChangeLabel: ({ count }: { count: number }) => `unsaved ${count === 1 ? \"change\" : \"changes\"}`,\n noUnsavedChanges: \"No unsaved changes\",\n moveWindow: ({ title }: { title: string }) => `Move ${title} window. Use arrow keys; hold Shift for larger steps.`,\n resizeWindow: \"Resize window. Use arrow keys; hold Shift for larger steps.\",\n window: \"Window\",\n zoomIn: \"Zoom in\",\n zoomOut: \"Zoom out\",\n resetZoom: \"Reset zoom\",\n openFullscreen: \"Open fullscreen\",\n zoomPanKeys: \"Zoom with plus and minus, move with the arrow keys, reset with 0, open fullscreen with F.\",\n binaryFile: \"Binary file\",\n boldShortcut: \"Bold (Ctrl/Cmd+B)\",\n bulletListShortcut: \"Bullet list (Ctrl/Cmd+Shift+8)\",\n heading1Shortcut: \"Heading 1 (Ctrl/Cmd+Shift+1)\",\n heading2Shortcut: \"Heading 2 (Ctrl/Cmd+Shift+2)\",\n heading3Shortcut: \"Heading 3 (Ctrl/Cmd+Shift+3)\",\n inlineCodeShortcut: \"Inline code (Ctrl/Cmd+E)\",\n italicShortcut: \"Italic (Ctrl/Cmd+I)\",\n linkShortcut: \"Link (Ctrl/Cmd+K)\",\n markdownFormatting: \"Markdown formatting\",\n numberedListShortcut: \"Numbered list (Ctrl/Cmd+Shift+7)\",\n quote: \"Quote\",\n csvSettings: \"CSV preview settings\",\n csvEncoding: \"Encoding\",\n csvSeparator: \"Separator\",\n csvDefaultSeparator: \"File type default\",\n csvComma: \"Comma\",\n csvSemicolon: \"Semicolon\",\n csvTab: \"Tab\",\n csvView: \"Display\",\n csvRaw: \"Raw text\",\n delimitedFileEmpty: \"This delimited file contains no rows.\",\n edit: \"Edit\",\n emptyFile: \"Empty file\",\n failedLoadFile: \"Failed to load file\",\n noInlinePreview: \"No inline preview available for this source.\",\n previewMoreLines: (n: number) => `… ${n} more lines`,\n previewColumnsLimited: \"Showing the first 50 columns. Download the file for all columns.\",\n textEditor: \"Text editor\",\n audioUnsupported: \"Your browser does not support audio playback.\",\n videoUnsupported: \"Your browser does not support video playback.\",\n yes: \"Yes\",\n installApp: \"Install app\",\n installNative: ({ appName }: { appName: string }) =>\n `Your browser can install ${appName}. Confirm installation in the dialog that opens next.`,\n installRequested: \"Installation requested. Follow your browser’s instructions.\",\n installFailed: \"The installation dialog could not be opened.\",\n installOpenShare: \"Open Share\",\n installOpenShareDetail: \"Tap the Share button in Safari. It may be inside the More menu.\",\n installHomeScreen: \"Add to Home Screen\",\n installHomeScreenDetail: \"Scroll through the actions and choose “Add to Home Screen”.\",\n installConfirmAdd: \"Confirm Add\",\n installConfirmAddDetail: \"Keep “Open as Web App” enabled if shown, then tap “Add”.\",\n installOpenShareBrowserDetail: \"In Chrome, tap Share in the address bar. In Firefox or Edge, open the menu, then Share.\",\n installSafariFallback: \"Don’t see “Add to Home Screen”? This page may be open inside another app. Open it in Safari.\",\n installSafariMenu: \"Open the Safari menu\",\n installSafariMenuDetail: \"On your Mac, open File or click Share in Safari.\",\n installAddDock: \"Add to Dock\",\n installAddDockDetail: \"Choose “Add to Dock”, then confirm “Add”. Available in Safari on macOS Sonoma or later.\",\n installBrowserMenu: \"Open the browser menu\",\n installBrowserMenuDetail: \"Use the menu beside the address bar.\",\n installAndroidDetail: \"Choose “Install app” or “Add to Home screen”, then follow the browser’s instructions.\",\n installBrowserDetail: \"Look for “Install app” in the menu or an installation icon in the address bar.\",\n installUnavailable: \"No installation option? You can keep using the browser or try another browser that supports installation.\",\n installAppleInAppTitle: \"Open this page in Safari\",\n installAppleInAppDetail: ({ appName }: { appName: string }) =>\n `This page is open inside another app, which can’t install ${appName}. In that app’s menu (••• or Share), choose “Open in Safari”, or copy the link and paste it into Safari.`,\n installInAppTitle: \"Open this page in your browser\",\n installInAppDetail: ({ appName }: { appName: string }) =>\n `This page is open inside another app, which can’t install ${appName}. In that app’s menu, choose “Open in Chrome” or “Open in browser”, or copy the link and paste it into Chrome.`,\n installAppleBrowserTitle: \"Safari works best\",\n installAppleBrowserDetail: \"This browser installs through Share → Add to Home Screen. If that isn’t there, open this page in Safari.\",\n installAndroidBrowserTitle: \"Chrome works best\",\n installAndroidBrowserDetail:\n \"In this browser, look for “Install” or “Add to Home screen” in the menu. If that isn’t there, open this page in Chrome.\",\n installCopyLink: \"Copy link\",\n installLinkCopied: \"Link copied\",\n installCopyFailed: \"The link could not be copied. Copy this address manually:\",\n qrCameraPreview: \"Camera preview for scanning a QR code\",\n qrCameraStarting: \"Starting camera…\",\n qrCameraInstructions: \"Point the camera at a QR code.\",\n qrCameraPrivacy: \"Camera images stay on this device.\",\n },\n de: {\n chartView: \"Diagrammansicht\",\n chartDiagram: \"Diagramm\",\n chartData: \"Tabelle\",\n chartSeries: \"Sichtbare Datenreihen\",\n chartOnly: \"Nur diese\",\n chartShowAll: \"Alle anzeigen\",\n chartShowing: \"Angezeigt\",\n chartSelectedDatum: \"Ausgewählter Datenpunkt\",\n chartReference: \"Vergleich\",\n chartCurrent: \"Aktuell\",\n chartPinReference: \"Als Vergleich merken\",\n chartRemoveComparison: \"Vergleich entfernen\",\n chartPreviousData: \"Diagramm und Tabelle zeigen weiterhin die zuletzt geladenen Filter\",\n chartCopyData: \"Daten kopieren\",\n chartCopyFailed: \"Daten konnten nicht kopiert werden\",\n\n actions: \"Aktionen\",\n add: \"Hinzufügen\",\n addTag: \"Tag hinzufügen\",\n addImage: \"Bild hinzufügen\",\n apply: \"Übernehmen\",\n attachments: \"Anhänge\",\n assistant: \"Assistent\",\n avatarLabel: ({ name }) => `Avatar von ${name}`,\n all: \"Alle\",\n calendar: \"Kalender\",\n clear: \"Leeren\",\n clearDate: \"Datum löschen\",\n clearSelection: \"Auswahl löschen\",\n chooseOption: \"Option auswählen\",\n close: \"Schließen\",\n closeDialog: \"Dialog schließen\",\n copied: \"Kopiert\",\n infoBlockNote: \"Notiz\",\n infoBlockInfo: \"Info\",\n infoBlockSuccess: \"Erfolg\",\n infoBlockWarning: \"Warnung\",\n infoBlockDanger: \"Gefahr\",\n copy: \"Kopieren\",\n closeLightbox: \"Bildansicht schließen\",\n couldNotLoadData: \"Diese Daten konnten nicht geladen werden\",\n datePicker: \"Datumsauswahl\",\n dataTable: \"Datentabelle\",\n datePresets: \"Datumsvorgaben\",\n decreaseValue: \"Wert verringern\",\n download: \"Herunterladen\",\n downloadAsZip: \"Als ZIP herunterladen\",\n downloadImage: \"Bild herunterladen\",\n dropFiles: \"Dateien ablegen oder zum Auswählen klicken\",\n dropToUpload: \"Zum Hochladen ablegen\",\n dropdownMenu: \"Dropdown-Menü\",\n durationPresets: \"Dauervorgaben\",\n filterOptions: \"Optionen filtern\",\n fileTypeNotAccepted: \"Dateityp wird nicht akzeptiert\",\n imageLightbox: \"Bildansicht\",\n imageNavigation: \"Bildnavigation\",\n increaseValue: \"Wert erhöhen\",\n loading: \"Wird geladen...\",\n hidePassword: \"Passwort ausblenden\",\n noColumns: \"Keine Spalten.\",\n noData: \"Keine Daten.\",\n noRecords: \"Keine Einträge\",\n noTagsYet: \"Noch keine Tags\",\n noResultsFound: \"Keine Ergebnisse gefunden\",\n nextImage: \"Nächstes Bild\",\n noOptions: \"Keine Optionen verfügbar\",\n optionsCouldNotLoad: \"Optionen konnten nicht geladen werden\",\n noResults: \"Keine Ergebnisse\",\n nothingHere: \"Noch nichts vorhanden.\",\n nothingToShow: \"Nichts anzuzeigen.\",\n no: \"Nein\",\n options: \"Optionen\",\n pagination: \"Seitennavigation\",\n pageOf: ({ page, total }) => `Seite ${page} von ${total}`,\n pickDate: \"Datum auswählen\",\n previousImage: \"Vorheriges Bild\",\n previousMonth: \"Vorheriger Monat\",\n previousPage: \"Vorherige Seite\",\n previousYear: \"Vorheriges Jahr\",\n nextMonth: \"Nächster Monat\",\n nextPage: \"Nächste Seite\",\n nextYear: \"Nächstes Jahr\",\n goToPage: ({ page }) => `Zu Seite ${page}`,\n retry: \"Erneut versuchen\",\n refreshing: \"Wird aktualisiert\",\n reset: \"Zurücksetzen\",\n required: \"Erforderlich\",\n minCharacters: ({ count }) => `Mindestens ${count} Zeichen`,\n maxCharacters: ({ count }) => `Höchstens ${count} Zeichen`,\n minTags: ({ count }) => `Mindestens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n maxTags: ({ count }) => `Höchstens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n rename: \"Umbenennen\",\n delete: \"Löschen\",\n remove: \"Entfernen\",\n removeTag: \"Tag entfernen\",\n search: \"Suchen...\",\n searchLabel: \"Suchen\",\n spotlightNoResults: \"Keine Ergebnisse.\",\n searchFailed: \"Suche fehlgeschlagen.\",\n searchResults: \"Suchergebnisse\",\n save: \"Speichern\",\n saveShortcut: \"Speichern (Strg/Cmd+S)\",\n sectionsLabel: ({ title }) => `Bereiche von ${title}`,\n searchOptions: \"Optionen durchsuchen\",\n select: \"Auswählen...\",\n selectMatchingOption: \"Eine passende Option auswählen\",\n selectOption: \"Option auswählen\",\n suggestions: \"Vorschläge\",\n suggestionsCouldNotLoad: \"Vorschläge konnten nicht geladen werden\",\n showPassword: \"Passwort anzeigen\",\n time: \"Uhrzeit\",\n timeLabel: ({ label }) => `${label}zeit`,\n completionSuggestions: \"Vervollständigungsvorschläge\",\n contextMenu: \"Kontextmenü\",\n unknownUser: \"Unbekannte Person\",\n uploading: \"Wird hochgeladen…\",\n chooseFile: \"Datei auswählen\",\n chooseFiles: \"Dateien auswählen\",\n chooseMatchingFile: \"Wähle eine zu diesem Feld passende Datei aus.\",\n checkingOptions: \"Optionen werden geprüft\",\n checkingOptionsLoading: \"Optionen werden geprüft...\",\n noMatchingOption: \"Keine passende Option gefunden\",\n noOptionsFound: \"Keine Optionen gefunden\",\n typeToSearch: \"Zum Suchen tippen...\",\n showGridView: \"Rasteransicht anzeigen\",\n showListView: \"Listenansicht anzeigen\",\n start: \"Beginn\",\n end: \"Ende\",\n addFileFolderUpload: \"Datei oder Ordner hinzufügen oder hochladen\",\n addPane: \"Bereich hinzufügen\",\n addToChat: \"Zum Chat hinzufügen\",\n attachFiles: \"Dateien anhängen\",\n addGuidance: \"Hinweis hinzufügen...\",\n calendarView: \"Kalenderansicht\",\n openDate: ({ label }) => `${label} öffnen`,\n createEventOn: ({ label }) => `Termin am ${label} erstellen`,\n hiddenOverlappingEvents: ({ count }) => `${count} ausgeblendete überlappende Termine`,\n calendarEventTime: ({ title, start, end }) => `${title}, ${start} bis ${end}`,\n today: \"Heute\",\n day: \"Tag\",\n week: \"Woche\",\n weekShort: \"KW\",\n month: \"Monat\",\n year: \"Jahr\",\n allDay: \"Ganztägig\",\n noEvents: \"Keine Termine\",\n previous: \"Zurück\",\n next: \"Weiter\",\n moveEvent: \"Termin verschieben\",\n resizeEvent: \"Termindauer ändern\",\n cancel: \"Abbrechen\",\n chat: \"Chat\",\n chooseModel: \"Modell auswählen\",\n closeWindow: \"Fenster schließen\",\n code: \"Code\",\n codeLabel: ({ title }) => `Code von ${title}`,\n column: ({ number }) => `Spalte ${number}`,\n commands: \"Befehle\",\n dropFilesToAttach: \"Dateien zum Anhängen ablegen\",\n conversation: \"Unterhaltung\",\n jumpToLatest: \"Zur neuesten Nachricht\",\n conversationMessages: ({ label }) => `Nachrichten in ${label}`,\n dialogTabs: \"Dialog-Tabs\",\n files: \"Dateien\",\n chooseFileToPreview: \"Wähle eine Datei für die Vorschau aus.\",\n change: \"Ändern\",\n changeImage: \"Bild ändern\",\n cropArea: \"Zuschneidebereich. Mit Pfeiltasten verschieben; Umschalt für größere Schritte halten.\",\n cropPreview: \"Zuschneidevorschau\",\n discardChanges: \"Änderungen verwerfen\",\n discardUnsavedFile: \"Ungespeicherte Änderungen an dieser Datei verwerfen?\",\n downloadFailed: \"Download fehlgeschlagen\",\n failedLoadFiles: \"Dateien konnten nicht geladen werden\",\n failedLoadImage: \"Bild konnte nicht geladen werden.\",\n folderEmpty: \"Dieser Ordner ist leer.\",\n folderSelected: \"Ordner ausgewählt\",\n newFile: \"Neue Datei\",\n newFileName: \"Name der neuen Datei:\",\n newFolder: \"Neuer Ordner\",\n newFolderName: \"Name des neuen Ordners:\",\n fileActions: \"Dateiaktionen\",\n actionsFor: ({ name }) => `Aktionen für ${name}`,\n fileSaved: \"Datei gespeichert\",\n pickFileFromTree: \"Wähle im Dateibaum eine Datei aus.\",\n imageProcessingFailed: \"Bild konnte nicht verarbeitet werden.\",\n preparingImage: \"Bild wird vorbereitet…\",\n processingImage: \"Bild wird verarbeitet\",\n removeImage: \"Bild entfernen\",\n rotateRight: \"Nach rechts drehen\",\n selectedImage: \"Ausgewähltes Bild\",\n selectFile: \"Datei auswählen\",\n spaceEmpty: \"Dieser Bereich ist leer.\",\n uploadFiles: \"Dateien hochladen\",\n filterIcons: \"Symbole filtern\",\n loadEarlier: \"Ältere laden\",\n loadingConversation: \"Unterhaltung wird geladen\",\n loadingFiles: \"Dateien werden geladen...\",\n loadingMessages: \"Nachrichten werden geladen\",\n failed: \"Fehlgeschlagen\",\n generating: \"Wird generiert\",\n loadOlderMessages: \"Ältere Nachrichten laden\",\n loadingOlderMessages: \"Ältere Nachrichten werden geladen\",\n couldNotLoadOlderMessages: \"Ältere Nachrichten konnten nicht geladen werden\",\n couldNotLoadEarlierMessages: \"Ältere Nachrichten konnten nicht geladen werden\",\n couldNotPostMessage: \"Nachricht konnte nicht gepostet werden\",\n message: \"Nachricht\",\n messageActions: \"Nachrichtenaktionen\",\n messageComposer: \"Nachricht verfassen\",\n messageInput: \"Nachrichteneingabe\",\n confirmation: \"Bestätigung\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Gib ${phrase} zur Bestätigung ein`,\n confirm: \"Bestätigen\",\n dialog: \"Dialog\",\n discard: \"Verwerfen\",\n error: \"Fehler\",\n form: \"Formular\",\n filterActions: \"Filteraktionen\",\n info: \"Information\",\n dismissNotification: \"Benachrichtigung schließen\",\n notifications: \"Benachrichtigungen\",\n interactiveLineChart: \"Interaktives Liniendiagramm\",\n interactiveChart:\n \"Interaktives Diagramm. Pfeiltasten zum Erkunden, Enter zum Auswählen, Escape zum Schließen. In Karten und Zeitleisten Alt mit Pfeiltasten zum Erkunden.\",\n chartFields: ({ key }: { key: string }) => {\n const labels: Record<string, string> = {\n x: \"X\",\n y: \"Y\",\n value: \"Wert\",\n percent: \"Anteil\",\n total: \"Gesamt\",\n from: \"Von\",\n to: \"Bis\",\n upperInclusive: \"Obergrenze enthalten\",\n count: \"Anzahl\",\n q1: \"Unteres Quartil\",\n q2: \"Median\",\n q3: \"Oberes Quartil\",\n whiskerLow: \"Unterer Whisker\",\n whiskerHigh: \"Oberer Whisker\",\n min: \"Minimum\",\n max: \"Maximum\",\n threshold: \"Schwellenwert\",\n delta: \"Änderung\",\n latitude: \"Breitengrad\",\n longitude: \"Längengrad\",\n size: \"Größe\",\n state: \"Zustand\",\n duration: \"Dauer\",\n detail: \"Details\",\n errY: \"Y-Fehler\",\n errYHigh: \"Oberer Y-Fehler\",\n errYLow: \"Unterer Y-Fehler\",\n errX: \"X-Fehler\",\n errXHigh: \"Oberer X-Fehler\",\n errXLow: \"Unterer X-Fehler\",\n };\n return labels[key] ?? key;\n },\n interactiveMap: \"Interaktive Karte\",\n interactiveTimeline: \"Interaktive Zeitachse\",\n ok: \"OK\",\n success: \"Erfolg\",\n model: \"Modell\",\n input: \"Eingabe\",\n output: \"Ausgabe\",\n loopTotal: \"Schleife gesamt\",\n remaining: \"Verbleibend\",\n notConfigured: \"Nicht konfiguriert\",\n unknown: \"Unbekannt\",\n system: \"System\",\n tool: \"Werkzeug\",\n user: \"Benutzer\",\n useColor: \"Farbe verwenden\",\n useTransparent: \"Transparent verwenden\",\n series: \"Datenreihe\",\n waiting: \"Wartet\",\n templateEditorPlaceholder: \"HTML mit Liquid-Werten wie {{ APP_NAME }} schreiben...\",\n templatePreview: \"Vorlagenvorschau\",\n lastRequestContext: \"Kontext der letzten Anfrage\",\n contextWindowUsed: \"Kontextfenster verwendet\",\n contextUsageUnavailable: \"Kontextnutzung nicht verfügbar\",\n contextUsageUnavailableWithWindow: ({ window }) => `Kontextnutzung nicht verfügbar, Kontextfenster mit ${window} Token`,\n tokensUsed: ({ total }) => `${total} Token verwendet`,\n tokensUsedPercent: ({ total, percent }) => `${total} Token verwendet, ${percent}% des Kontextfensters`,\n moveDown: \"Nach unten\",\n moveUp: \"Nach oben\",\n moveNamedDown: ({ label }) => `${label} nach unten verschieben`,\n moveNamedUp: ({ label }) => `${label} nach oben verschieben`,\n rowAction: \"Zeilenaktion\",\n addToNamed: ({ name }) => `Zu ${name} hinzufügen`,\n insertBeforeNamed: ({ name }) => `Vor ${name} einfügen`,\n insertAtEnd: \"Am Ende einfügen\",\n addPaneSide: ({ side, name }) =>\n `${side === \"left\" ? \"Links\" : side === \"right\" ? \"Rechts\" : side === \"top\" ? \"Oberhalb\" : \"Unterhalb\"} von ${name} hinzufügen`,\n discardUnsavedChanges: \"Ungespeicherte Änderungen verwerfen?\",\n unsavedChangesTitle: \"Ungespeicherte Änderungen\",\n tagName: \"Tag-Name\",\n name: \"Name\",\n color: \"Farbe\",\n tagCouldNotBeSaved: \"Der Tag konnte nicht gespeichert werden.\",\n tagActionFailed: \"Die Tag-Aktion ist fehlgeschlagen.\",\n tagsPlaceholder: \"Tags (z. B. Tag 1, Tag 2, …)\",\n tagsAdded: ({ tags }) => `Tags hinzugefügt: ${tags}.`,\n tagsRemoved: ({ tags }) => `Tags entfernt: ${tags}.`,\n noFiles: \"Keine Dateien\",\n noLogEntries: \"Keine Logeinträge gefunden.\",\n noPreview: \"Keine Vorschau\",\n openPreview: \"Vorschau öffnen\",\n paneTabs: \"Bereichs-Tabs\",\n paneWorkspace: \"Arbeitsbereich\",\n pdfPreview: \"PDF-Vorschau\",\n pdfPreviewHttpError: ({ status }) => `PDF-Vorschau ist mit HTTP ${status} fehlgeschlagen`,\n pdfPreviewTabBlocked: \"Der Browser hat den neuen Tab blockiert. Erlaube Pop-ups und versuche es erneut.\",\n pdfPreviewRendering: \"PDF-Vorschau wird erstellt…\",\n pickIcon: \"Symbol auswählen...\",\n postMessage: \"Nachricht posten\",\n preview: \"Vorschau\",\n previewPdf: \"PDF anzeigen\",\n renderPdfPreview: \"Erzeuge eine PDF-Vorschau, um das Endergebnis zu sehen.\",\n queueMessage: \"Nachricht einreihen\",\n queueing: \"Wird eingereiht\",\n sending: \"Wird gesendet\",\n steering: \"Wird gesteuert\",\n writeMessage: \"Nachricht schreiben oder / eingeben ...\",\n openInNewTab: ({ name }) => `${name} in neuem Tab öffnen`,\n closeNamed: ({ name }) => `${name} schließen`,\n goToImage: ({ index }) => `Zu Bild ${index} wechseln`,\n pinDigit: ({ index, total }) => `PIN-Ziffer ${index} von ${total}`,\n moreSelected: ({ count }) => `${count} weitere ${count === 1 ? \"Option\" : \"Optionen\"} ausgewählt`,\n removeNamed: ({ name }) => `${name} entfernen`,\n resizeCrop: ({ handle }) => `Zuschneidebereich am Griff ${handle} skalieren`,\n range: \"Zeitraum\",\n resizePanes: \"Bereiche skalieren\",\n resetMapView: \"Kartenansicht zurücksetzen\",\n resetTimelineView: \"Zeitachsenansicht zurücksetzen\",\n retryOlderMessages: \"Ältere Nachrichten erneut laden\",\n saveChanges: \"Änderungen speichern\",\n saving: \"Wird gespeichert\",\n sendMessage: \"Nachricht senden\",\n startConversation: \"Unterhaltung beginnen\",\n steerResponse: \"Antwort steuern\",\n stopResponse: \"Antwort stoppen\",\n stopping: \"Wird gestoppt\",\n unsaved: \"Ungespeichert\",\n unsavedChangeLabel: ({ count }) => `ungespeicherte ${count === 1 ? \"Änderung\" : \"Änderungen\"}`,\n noUnsavedChanges: \"Keine ungespeicherten Änderungen\",\n moveWindow: ({ title }) => `Fenster ${title} verschieben. Pfeiltasten verwenden; Umschalt für größere Schritte halten.`,\n resizeWindow: \"Fenster skalieren. Pfeiltasten verwenden; Umschalt für größere Schritte halten.\",\n window: \"Fenster\",\n zoomIn: \"Vergrößern\",\n zoomOut: \"Verkleinern\",\n resetZoom: \"Zoom zurücksetzen\",\n openFullscreen: \"Im Vollbild öffnen\",\n zoomPanKeys: \"Mit Plus und Minus zoomen, mit den Pfeiltasten verschieben, mit 0 zurücksetzen, mit F im Vollbild öffnen.\",\n binaryFile: \"Binärdatei\",\n boldShortcut: \"Fett (Strg/Cmd+B)\",\n bulletListShortcut: \"Aufzählung (Strg/Cmd+Umschalt+8)\",\n heading1Shortcut: \"Überschrift 1 (Strg/Cmd+Umschalt+1)\",\n heading2Shortcut: \"Überschrift 2 (Strg/Cmd+Umschalt+2)\",\n heading3Shortcut: \"Überschrift 3 (Strg/Cmd+Umschalt+3)\",\n inlineCodeShortcut: \"Inline-Code (Strg/Cmd+E)\",\n italicShortcut: \"Kursiv (Strg/Cmd+I)\",\n linkShortcut: \"Link (Strg/Cmd+K)\",\n markdownFormatting: \"Markdown-Formatierung\",\n numberedListShortcut: \"Nummerierte Liste (Strg/Cmd+Umschalt+7)\",\n quote: \"Zitat\",\n csvSettings: \"CSV-Vorschau einstellen\",\n csvEncoding: \"Zeichenkodierung\",\n csvSeparator: \"Trennzeichen\",\n csvDefaultSeparator: \"Standard des Dateityps\",\n csvComma: \"Komma\",\n csvSemicolon: \"Semikolon\",\n csvTab: \"Tabulator\",\n csvView: \"Darstellung\",\n csvRaw: \"Rohtext\",\n delimitedFileEmpty: \"Diese Trennzeichen-Datei enthält keine Zeilen.\",\n edit: \"Bearbeiten\",\n emptyFile: \"Leere Datei\",\n failedLoadFile: \"Datei konnte nicht geladen werden\",\n noInlinePreview: \"Für diese Quelle ist keine direkte Vorschau verfügbar.\",\n previewMoreLines: (n: number) => `… ${n} weitere Zeilen`,\n previewColumnsLimited: \"Die ersten 50 Spalten werden angezeigt. Lade die Datei für alle Spalten herunter.\",\n textEditor: \"Texteditor\",\n audioUnsupported: \"Dein Browser unterstützt keine Audiowiedergabe.\",\n videoUnsupported: \"Dein Browser unterstützt keine Videowiedergabe.\",\n yes: \"Ja\",\n installApp: \"App installieren\",\n installNative: ({ appName }) => `Dein Browser kann ${appName} installieren. Bestätige die Installation im nächsten Dialog.`,\n installRequested: \"Installation angefragt. Folge den Hinweisen deines Browsers.\",\n installFailed: \"Der Installationsdialog konnte nicht geöffnet werden.\",\n installOpenShare: \"Teilen öffnen\",\n installOpenShareDetail: \"Tippe in Safari auf Teilen. Der Eintrag kann im Mehr-Menü liegen.\",\n installHomeScreen: \"Zum Home-Bildschirm\",\n installHomeScreenDetail: \"Scrolle durch die Aktionen und wähle „Zum Home-Bildschirm“.\",\n installConfirmAdd: \"Hinzufügen bestätigen\",\n installConfirmAddDetail: \"Lass „Als Web-App öffnen“ aktiviert, falls angezeigt, und tippe auf „Hinzufügen“.\",\n installOpenShareBrowserDetail: \"Tippe in Chrome in der Adressleiste auf Teilen. Öffne in Firefox oder Edge das Menü und dann Teilen.\",\n installSafariFallback:\n \"Kein „Zum Home-Bildschirm“? Dann ist die Seite vielleicht in einer anderen App geöffnet. Öffne sie in Safari.\",\n installSafariMenu: \"Safari-Menü öffnen\",\n installSafariMenuDetail: \"Öffne auf deinem Mac in Safari „Ablage“ oder klicke auf Teilen.\",\n installAddDock: \"Zum Dock hinzufügen\",\n installAddDockDetail: \"Wähle „Zum Dock hinzufügen“ und bestätige mit „Hinzufügen“. Verfügbar in Safari ab macOS Sonoma.\",\n installBrowserMenu: \"Browser-Menü öffnen\",\n installBrowserMenuDetail: \"Nutze das Menü neben der Adressleiste.\",\n installAndroidDetail: \"Wähle „App installieren“ oder „Zum Startbildschirm hinzufügen“ und folge den Hinweisen des Browsers.\",\n installBrowserDetail: \"Suche nach „App installieren“ im Menü oder nach einem Installationssymbol in der Adressleiste.\",\n installUnavailable:\n \"Keine Installationsoption? Nutze die App weiter im Browser oder versuche einen anderen Browser mit Installationsunterstützung.\",\n installAppleInAppTitle: \"Öffne diese Seite in Safari\",\n installAppleInAppDetail: ({ appName }) =>\n `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App (••• oder Teilen) „In Safari öffnen“ oder kopiere den Link und füge ihn in Safari ein.`,\n installInAppTitle: \"Öffne diese Seite in deinem Browser\",\n installInAppDetail: ({ appName }) =>\n `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App „In Chrome öffnen“ oder „Im Browser öffnen“ oder kopiere den Link und füge ihn in Chrome ein.`,\n installAppleBrowserTitle: \"Am besten mit Safari\",\n installAppleBrowserDetail:\n \"In diesem Browser installierst du über Teilen → Zum Home-Bildschirm. Fehlt der Eintrag, öffne diese Seite in Safari.\",\n installAndroidBrowserTitle: \"Am besten mit Chrome\",\n installAndroidBrowserDetail:\n \"Suche in diesem Browser im Menü nach „Installieren“ oder „Zum Startbildschirm hinzufügen“. Fehlt der Eintrag, öffne diese Seite in Chrome.\",\n installCopyLink: \"Link kopieren\",\n installLinkCopied: \"Link kopiert\",\n installCopyFailed: \"Der Link konnte nicht kopiert werden. Kopiere diese Adresse manuell:\",\n qrCameraPreview: \"Kameravorschau zum Scannen eines QR-Codes\",\n qrCameraStarting: \"Kamera wird gestartet…\",\n qrCameraInstructions: \"Richte die Kamera auf einen QR-Code.\",\n qrCameraPrivacy: \"Kamerabilder bleiben auf diesem Gerät.\",\n },\n },\n});\n\nexport type UiMessages = ReturnType<(typeof uiMessages)[\"resolve\"]>[\"t\"];\n\n/** Generic component chrome owned by @k2b/ui, resolved from the inherited render locale. */\nexport const useUiMessages = (): (() => UiMessages) => {\n const locale = useLocale();\n return () => uiMessages.resolve([locale()]).t;\n};\n\n/** Browser-only imperative UI (for example prompts) inherits the document locale. */\nexport const resolveUiMessages = (locale?: string): UiMessages =>\n uiMessages.resolve([locale ?? (typeof document === \"undefined\" ? uiMessages.baseLocale : document.documentElement.lang)]).t;\n\nexport const checkUiMessages = () => uiMessages.check();\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["intl/messages.ts"],"sourcesContent":["import { i18n } from \"@k2b/stdlib\";\nimport { useLocale } from \"./locale\";\n\nconst uiMessages = i18n.define({\n baseLocale: \"en\",\n messages: {\n en: {\n chartView: \"Chart view\",\n chartDiagram: \"Diagram\",\n chartData: \"Table\",\n chartSeries: \"Series visibility\",\n chartOnly: \"Only\",\n chartShowAll: \"Show all\",\n chartShowing: \"Showing\",\n chartSelectedDatum: \"Selected data point\",\n chartReference: \"Reference\",\n chartCurrent: \"Current\",\n chartPinReference: \"Pin as reference\",\n chartRemoveComparison: \"Remove comparison\",\n chartPreviousData: \"The chart and table still show the last loaded filters\",\n chartCopyData: \"Copy data\",\n chartCopyFailed: \"Could not copy data\",\n\n actions: \"Actions\",\n add: \"Add\",\n addTag: \"Add tag\",\n addImage: \"Add image\",\n apply: \"Apply\",\n attachments: \"Attachments\",\n assistant: \"Assistant\",\n avatarLabel: ({ name }: { name: string }) => `${name} avatar`,\n all: \"All\",\n calendar: \"Calendar\",\n clear: \"Clear\",\n clearDate: \"Clear date\",\n clearSelection: \"Clear selection\",\n chooseOption: \"Choose option\",\n close: \"Close\",\n closeDialog: \"close dialog\",\n copied: \"Copied\",\n infoBlockNote: \"Note\",\n infoBlockInfo: \"Info\",\n infoBlockSuccess: \"Success\",\n infoBlockWarning: \"Warning\",\n infoBlockDanger: \"Danger\",\n copy: \"Copy\",\n closeLightbox: \"Close lightbox\",\n couldNotLoadData: \"Could not load this data\",\n datePicker: \"Date picker\",\n dataTable: \"Data table\",\n datePresets: \"Date presets\",\n decreaseValue: \"Decrease value\",\n download: \"Download\",\n downloadAsZip: \"Download as ZIP\",\n downloadImage: \"Download image\",\n dropFiles: \"Drop files or click to choose\",\n dropToUpload: \"Drop to upload\",\n dropdownMenu: \"Dropdown menu\",\n durationPresets: \"Duration presets\",\n filterOptions: \"Filter options\",\n fileTypeNotAccepted: \"File type not accepted\",\n imageLightbox: \"Image lightbox\",\n imageNavigation: \"Image navigation\",\n increaseValue: \"Increase value\",\n loading: \"Loading...\",\n hidePassword: \"Hide password\",\n noColumns: \"No columns.\",\n noData: \"No data.\",\n noRecords: \"No records\",\n noTagsYet: \"No tags yet\",\n noResultsFound: \"No results found\",\n nextImage: \"Next image\",\n noOptions: \"No options available\",\n optionsCouldNotLoad: \"Options could not be loaded\",\n noResults: \"No results\",\n nothingHere: \"Nothing here yet.\",\n nothingToShow: \"Nothing to show.\",\n no: \"No\",\n options: \"Options\",\n pagination: \"Pagination\",\n pageOf: ({ page, total }: { page: number; total: number }) => `Page ${page} of ${total}`,\n pickDate: \"Pick date\",\n previousImage: \"Previous image\",\n previousMonth: \"Previous month\",\n previousPage: \"Previous page\",\n previousYear: \"Previous year\",\n nextMonth: \"Next month\",\n nextPage: \"Next page\",\n nextYear: \"Next year\",\n goToPage: ({ page }: { page: number }) => `Go to page ${page}`,\n retry: \"Retry\",\n refreshing: \"Refreshing\",\n reset: \"Reset\",\n required: \"Required\",\n minCharacters: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n maxCharacters: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"character\" : \"characters\"}`,\n minTags: ({ count }: { count: number }) => `At least ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n maxTags: ({ count }: { count: number }) => `At most ${count} ${count === 1 ? \"tag\" : \"tags\"}`,\n rename: \"Rename\",\n delete: \"Delete\",\n remove: \"Remove\",\n removeTag: \"Remove tag\",\n search: \"Search...\",\n searchLabel: \"Search\",\n spotlightNoResults: \"No results.\",\n searchFailed: \"Search failed.\",\n searchResults: \"Search results\",\n save: \"Save\",\n saveShortcut: \"Save (Ctrl/Cmd+S)\",\n sectionsLabel: ({ title }: { title: string }) => `${title} sections`,\n searchOptions: \"Search options\",\n select: \"Select...\",\n selectMatchingOption: \"Select a matching option\",\n selectOption: \"Select option\",\n suggestions: \"Suggestions\",\n suggestionsCouldNotLoad: \"Suggestions could not be loaded\",\n showPassword: \"Show password\",\n time: \"Time\",\n timeLabel: ({ label }: { label: string }) => `${label} time`,\n completionSuggestions: \"Completion suggestions\",\n contextMenu: \"Context menu\",\n unknownUser: \"Unknown user\",\n uploading: \"Uploading…\",\n chooseFile: \"Choose file\",\n chooseFiles: \"Choose files\",\n chooseMatchingFile: \"Choose a file that matches this field.\",\n checkingOptions: \"Checking options\",\n checkingOptionsLoading: \"Checking options...\",\n noMatchingOption: \"No matching option found\",\n noOptionsFound: \"No options found\",\n typeToSearch: \"Type to search...\",\n showGridView: \"Show grid view\",\n showListView: \"Show list view\",\n start: \"Start\",\n end: \"End\",\n addFileFolderUpload: \"Add file, folder, or upload\",\n addPane: \"Add pane\",\n addToChat: \"Add to chat\",\n attachFiles: \"Attach files\",\n addGuidance: \"Add guidance...\",\n calendarView: \"Calendar view\",\n openDate: ({ label }: { label: string }) => `Open ${label}`,\n createEventOn: ({ label }: { label: string }) => `Create event on ${label}`,\n hiddenOverlappingEvents: ({ count }: { count: number }) => `${count} hidden overlapping events`,\n calendarEventTime: ({ title, start, end }: { title: string; start: string; end: string }) => `${title}, ${start} to ${end}`,\n today: \"Today\",\n day: \"Day\",\n week: \"Week\",\n weekShort: \"Wk\",\n month: \"Month\",\n year: \"Year\",\n allDay: \"All day\",\n noEvents: \"No events\",\n previous: \"Previous\",\n next: \"Next\",\n moveEvent: \"Move event\",\n resizeEvent: \"Resize event\",\n cancel: \"Cancel\",\n chat: \"Chat\",\n chooseModel: \"Choose model\",\n closeWindow: \"Close window\",\n code: \"Code\",\n codeLabel: ({ title }: { title: string }) => `${title} code`,\n column: ({ number }: { number: number }) => `Column ${number}`,\n commands: \"Commands\",\n dropFilesToAttach: \"Drop files to attach\",\n conversation: \"Conversation\",\n jumpToLatest: \"Jump to latest\",\n feedJumpToLatest: \"Jump to latest\",\n feedJumpToLatestCount: ({ count }: { count: number }) => `Jump to latest, ${count} new`,\n feedNewItems: ({ count }: { count: number }) => (count === 1 ? \"1 new item\" : `${count} new items`),\n feedNewMarker: \"New\",\n messageSent: \"Sent\",\n messageNotSent: \"Not sent\",\n messageRetry: \"Retry\",\n messageShowMore: \"Show more\",\n messageShowLess: \"Show less\",\n messageReplyTo: \"In reply to\",\n messageForwarded: \"Forwarded\",\n messageEdited: \"edited\",\n messageDeleted: \"This message was deleted\",\n messageVideo: \"Video\",\n messageMoreAttachments: ({ count }: { count: number }) => `${count} more`,\n messageReactions: \"Reactions\",\n messageReaction: ({ emoji, count, names, own }: { emoji: string; count: number; names?: string; own?: boolean }) =>\n `${emoji} ${own && count === 1 ? \"your reaction\" : `${count} ${count === 1 ? \"reaction\" : \"reactions\"}${own ? \", including yours\" : \"\"}`}${names ? `: ${names}` : \"\"}`,\n messageAddReaction: \"Add reaction\",\n messageReplies: ({ count }: { count: number }) => (count === 1 ? \"1 reply\" : `${count} replies`),\n messageLastReply: ({ time }: { time: string }) => `Last reply ${time}`,\n messageStop: \"Stop\",\n conversationMessages: ({ label }: { label: string }) => `${label} messages`,\n dialogTabs: \"Dialog tabs\",\n files: \"Files\",\n chooseFileToPreview: \"Choose a file to preview it.\",\n change: \"Change\",\n changeImage: \"Change image\",\n cropArea: \"Crop area. Use arrow keys to move; hold Shift for larger steps.\",\n cropPreview: \"Crop preview\",\n discardChanges: \"Discard changes\",\n discardUnsavedFile: \"Discard the unsaved changes in this file?\",\n downloadFailed: \"Download failed\",\n failedLoadFiles: \"Failed to load files\",\n failedLoadImage: \"Failed to load image.\",\n folderEmpty: \"This folder is empty.\",\n folderSelected: \"Folder selected\",\n newFile: \"New file\",\n newFileName: \"Name of the new file:\",\n newFolder: \"New folder\",\n newFolderName: \"Name of the new folder:\",\n fileActions: \"File actions\",\n actionsFor: ({ name }: { name: string }) => `Actions for ${name}`,\n fileSaved: \"File saved\",\n pickFileFromTree: \"Pick a file from the tree to view it.\",\n imageProcessingFailed: \"Image could not be processed.\",\n preparingImage: \"Preparing image…\",\n processingImage: \"Processing image\",\n removeImage: \"Remove image\",\n rotateRight: \"Rotate right\",\n selectedImage: \"Selected image\",\n selectFile: \"Select a file\",\n spaceEmpty: \"This space is empty.\",\n uploadFiles: \"Upload files\",\n filterIcons: \"Filter icons\",\n loadEarlier: \"Load earlier\",\n loadingConversation: \"Loading conversation\",\n loadingFiles: \"Loading files...\",\n loadingMessages: \"Loading messages\",\n failed: \"Failed\",\n generating: \"Generating\",\n loadOlderMessages: \"Load older messages\",\n loadingOlderMessages: \"Loading older messages\",\n couldNotLoadOlderMessages: \"Could not load older messages\",\n couldNotLoadEarlierMessages: \"Could not load earlier messages\",\n couldNotPostMessage: \"Could not post message\",\n message: \"Message\",\n messageActions: \"Message actions\",\n messageComposer: \"Message composer\",\n messageInput: \"Message input\",\n confirmation: \"Confirmation\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Type ${phrase} to confirm`,\n confirm: \"Confirm\",\n dialog: \"Dialog\",\n discard: \"Discard\",\n error: \"Error\",\n form: \"Form\",\n filterActions: \"Filter actions\",\n info: \"Info\",\n dismissNotification: \"Dismiss notification\",\n notifications: \"Notifications\",\n interactiveLineChart: \"Interactive line chart\",\n interactiveChart:\n \"Interactive chart. Use arrow keys to inspect, Enter to select, Escape to dismiss. On maps and timelines use Alt with arrow keys to inspect.\",\n chartFields: ({ key }: { key: string }) => {\n const labels: Record<string, string> = {\n x: \"X\",\n y: \"Y\",\n value: \"Value\",\n percent: \"Share\",\n total: \"Total\",\n from: \"From\",\n to: \"To\",\n upperInclusive: \"Includes upper bound\",\n count: \"Count\",\n q1: \"Lower quartile\",\n q2: \"Median\",\n q3: \"Upper quartile\",\n whiskerLow: \"Lower whisker\",\n whiskerHigh: \"Upper whisker\",\n min: \"Minimum\",\n max: \"Maximum\",\n threshold: \"Threshold\",\n delta: \"Change\",\n latitude: \"Latitude\",\n longitude: \"Longitude\",\n size: \"Size\",\n state: \"State\",\n duration: \"Duration\",\n detail: \"Detail\",\n errY: \"Y error\",\n errYHigh: \"Upper Y error\",\n errYLow: \"Lower Y error\",\n errX: \"X error\",\n errXHigh: \"Upper X error\",\n errXLow: \"Lower X error\",\n };\n return labels[key] ?? key;\n },\n interactiveMap: \"Interactive map\",\n interactiveTimeline: \"Interactive timeline\",\n ok: \"OK\",\n success: \"Success\",\n model: \"Model\",\n input: \"Input\",\n output: \"Output\",\n loopTotal: \"Loop total\",\n remaining: \"Remaining\",\n notConfigured: \"Not configured\",\n unknown: \"Unknown\",\n system: \"System\",\n tool: \"Tool\",\n user: \"User\",\n useColor: \"Use a color\",\n useTransparent: \"Use transparent\",\n series: \"Series\",\n waiting: \"Waiting\",\n templateEditorPlaceholder: \"Write HTML with Liquid values like {{ APP_NAME }}...\",\n templatePreview: \"Template preview\",\n lastRequestContext: \"Last request context\",\n contextWindowUsed: \"Context window used\",\n contextUsageUnavailable: \"Context usage unavailable\",\n contextUsageUnavailableWithWindow: ({ window }: { window: string }) => `Context usage unavailable, ${window} token context window`,\n tokensUsed: ({ total }: { total: string }) => `${total} tokens used`,\n tokensUsedPercent: ({ total, percent }: { total: string; percent: number }) =>\n `${total} tokens used, ${percent}% of the context window`,\n moveDown: \"Move down\",\n moveUp: \"Move up\",\n moveNamedDown: ({ label }: { label: string }) => `Move ${label} down`,\n moveNamedUp: ({ label }: { label: string }) => `Move ${label} up`,\n rowAction: \"Row action\",\n addToNamed: ({ name }: { name: string }) => `Add to ${name}`,\n insertBeforeNamed: ({ name }: { name: string }) => `Insert before ${name}`,\n insertAtEnd: \"Insert at end\",\n addPaneSide: ({ side, name }: { side: \"left\" | \"right\" | \"top\" | \"bottom\"; name: string }) => `Add ${side} of ${name}`,\n discardUnsavedChanges: \"Discard unsaved changes?\",\n unsavedChangesTitle: \"Unsaved changes\",\n tagName: \"Tag name\",\n name: \"Name\",\n color: \"Color\",\n tagCouldNotBeSaved: \"The tag could not be saved.\",\n tagActionFailed: \"The tag action failed.\",\n tagsPlaceholder: \"Tags (e.g. Tag 1, Tag 2,...)\",\n tagsAdded: ({ tags }: { tags: string }) => `Tags added: ${tags}.`,\n tagsRemoved: ({ tags }: { tags: string }) => `Tags removed: ${tags}.`,\n noFiles: \"No files\",\n noLogEntries: \"No log entries found.\",\n noPreview: \"No preview\",\n openPreview: \"Open preview\",\n paneTabs: \"Pane tabs\",\n paneWorkspace: \"Pane workspace\",\n pdfPreview: \"PDF preview\",\n pdfPreviewHttpError: ({ status }: { status: number }) => `PDF preview failed with HTTP ${status}`,\n pdfPreviewTabBlocked: \"The browser blocked the new tab. Allow pop-ups and try again.\",\n pdfPreviewRendering: \"Rendering PDF preview…\",\n pickIcon: \"Pick an icon...\",\n postMessage: \"Post message\",\n preview: \"Preview\",\n previewPdf: \"Preview PDF\",\n renderPdfPreview: \"Render a PDF preview to see the final output.\",\n queueMessage: \"Queue message\",\n queueing: \"Queueing\",\n sending: \"Sending\",\n steering: \"Steering\",\n writeMessage: \"Write a message or type / ...\",\n openInNewTab: ({ name }: { name: string }) => `Open ${name} in a new tab`,\n closeNamed: ({ name }: { name: string }) => `Close ${name}`,\n goToImage: ({ index }: { index: number }) => `Go to image ${index}`,\n pinDigit: ({ index, total }: { index: number; total: number }) => `PIN digit ${index} of ${total}`,\n moreSelected: ({ count }: { count: number }) => `${count} more selected`,\n removeNamed: ({ name }: { name: string }) => `Remove ${name}`,\n resizeCrop: ({ handle }: { handle: string }) => `Resize crop ${handle}`,\n range: \"Range\",\n resizePanes: \"Resize panes\",\n resetMapView: \"Reset map view\",\n resetTimelineView: \"Reset timeline view\",\n retryOlderMessages: \"Retry loading older messages\",\n saveChanges: \"Save changes\",\n saving: \"Saving\",\n sendMessage: \"Send message\",\n startConversation: \"Start a conversation\",\n steerResponse: \"Steer response\",\n stopResponse: \"Stop response\",\n stopping: \"Stopping\",\n unsaved: \"Unsaved\",\n unsavedChangeLabel: ({ count }: { count: number }) => `unsaved ${count === 1 ? \"change\" : \"changes\"}`,\n noUnsavedChanges: \"No unsaved changes\",\n moveWindow: ({ title }: { title: string }) => `Move ${title} window. Use arrow keys; hold Shift for larger steps.`,\n resizeWindow: \"Resize window. Use arrow keys; hold Shift for larger steps.\",\n window: \"Window\",\n zoomIn: \"Zoom in\",\n zoomOut: \"Zoom out\",\n resetZoom: \"Reset zoom\",\n openFullscreen: \"Open fullscreen\",\n zoomPanKeys: \"Zoom with plus and minus, move with the arrow keys, reset with 0, open fullscreen with F.\",\n binaryFile: \"Binary file\",\n boldShortcut: \"Bold (Ctrl/Cmd+B)\",\n bulletListShortcut: \"Bullet list (Ctrl/Cmd+Shift+8)\",\n heading1Shortcut: \"Heading 1 (Ctrl/Cmd+Shift+1)\",\n heading2Shortcut: \"Heading 2 (Ctrl/Cmd+Shift+2)\",\n heading3Shortcut: \"Heading 3 (Ctrl/Cmd+Shift+3)\",\n inlineCodeShortcut: \"Inline code (Ctrl/Cmd+E)\",\n italicShortcut: \"Italic (Ctrl/Cmd+I)\",\n linkShortcut: \"Link (Ctrl/Cmd+K)\",\n markdownFormatting: \"Markdown formatting\",\n numberedListShortcut: \"Numbered list (Ctrl/Cmd+Shift+7)\",\n quote: \"Quote\",\n csvSettings: \"CSV preview settings\",\n csvEncoding: \"Encoding\",\n csvSeparator: \"Separator\",\n csvDefaultSeparator: \"File type default\",\n csvComma: \"Comma\",\n csvSemicolon: \"Semicolon\",\n csvTab: \"Tab\",\n csvView: \"Display\",\n csvRaw: \"Raw text\",\n delimitedFileEmpty: \"This delimited file contains no rows.\",\n edit: \"Edit\",\n emptyFile: \"Empty file\",\n failedLoadFile: \"Failed to load file\",\n noInlinePreview: \"No inline preview available for this source.\",\n previewMoreLines: (n: number) => `… ${n} more lines`,\n previewColumnsLimited: \"Showing the first 50 columns. Download the file for all columns.\",\n textEditor: \"Text editor\",\n audioUnsupported: \"Your browser does not support audio playback.\",\n videoUnsupported: \"Your browser does not support video playback.\",\n yes: \"Yes\",\n installApp: \"Install app\",\n installNative: ({ appName }: { appName: string }) =>\n `Your browser can install ${appName}. Confirm installation in the dialog that opens next.`,\n installRequested: \"Installation requested. Follow your browser’s instructions.\",\n installFailed: \"The installation dialog could not be opened.\",\n installOpenShare: \"Open Share\",\n installOpenShareDetail: \"Tap the Share button in Safari. It may be inside the More menu.\",\n installHomeScreen: \"Add to Home Screen\",\n installHomeScreenDetail: \"Scroll through the actions and choose “Add to Home Screen”.\",\n installConfirmAdd: \"Confirm Add\",\n installConfirmAddDetail: \"Keep “Open as Web App” enabled if shown, then tap “Add”.\",\n installOpenShareBrowserDetail: \"In Chrome, tap Share in the address bar. In Firefox or Edge, open the menu, then Share.\",\n installSafariFallback: \"Don’t see “Add to Home Screen”? This page may be open inside another app. Open it in Safari.\",\n installSafariMenu: \"Open the Safari menu\",\n installSafariMenuDetail: \"On your Mac, open File or click Share in Safari.\",\n installAddDock: \"Add to Dock\",\n installAddDockDetail: \"Choose “Add to Dock”, then confirm “Add”. Available in Safari on macOS Sonoma or later.\",\n installBrowserMenu: \"Open the browser menu\",\n installBrowserMenuDetail: \"Use the menu beside the address bar.\",\n installAndroidDetail: \"Choose “Install app” or “Add to Home screen”, then follow the browser’s instructions.\",\n installBrowserDetail: \"Look for “Install app” in the menu or an installation icon in the address bar.\",\n installUnavailable: \"No installation option? You can keep using the browser or try another browser that supports installation.\",\n installAppleInAppTitle: \"Open this page in Safari\",\n installAppleInAppDetail: ({ appName }: { appName: string }) =>\n `This page is open inside another app, which can’t install ${appName}. In that app’s menu (••• or Share), choose “Open in Safari”, or copy the link and paste it into Safari.`,\n installInAppTitle: \"Open this page in your browser\",\n installInAppDetail: ({ appName }: { appName: string }) =>\n `This page is open inside another app, which can’t install ${appName}. In that app’s menu, choose “Open in Chrome” or “Open in browser”, or copy the link and paste it into Chrome.`,\n installAppleBrowserTitle: \"Safari works best\",\n installAppleBrowserDetail: \"This browser installs through Share → Add to Home Screen. If that isn’t there, open this page in Safari.\",\n installAndroidBrowserTitle: \"Chrome works best\",\n installAndroidBrowserDetail:\n \"In this browser, look for “Install” or “Add to Home screen” in the menu. If that isn’t there, open this page in Chrome.\",\n installSamsungTitle: \"Install with Chrome\",\n installSamsungDetail: ({ appName }: { appName: string }) =>\n `On Samsung phones, Samsung Internet builds its own app package, which Android 14 and later may block as “built for an older version of Android”. That warning is about the package, not about ${appName}. Chrome installs ${appName} without it. Without Chrome, use this browser’s menu and continue through that warning.`,\n installOpenChrome: \"Open in Chrome\",\n installCopyLink: \"Copy link\",\n installLinkCopied: \"Link copied\",\n installCopyFailed: \"The link could not be copied. Copy this address manually:\",\n qrCameraPreview: \"Camera preview for scanning a QR code\",\n qrCameraStarting: \"Starting camera…\",\n qrCameraInstructions: \"Point the camera at a QR code.\",\n qrCameraPrivacy: \"Camera images stay on this device.\",\n },\n de: {\n chartView: \"Diagrammansicht\",\n chartDiagram: \"Diagramm\",\n chartData: \"Tabelle\",\n chartSeries: \"Sichtbare Datenreihen\",\n chartOnly: \"Nur diese\",\n chartShowAll: \"Alle anzeigen\",\n chartShowing: \"Angezeigt\",\n chartSelectedDatum: \"Ausgewählter Datenpunkt\",\n chartReference: \"Vergleich\",\n chartCurrent: \"Aktuell\",\n chartPinReference: \"Als Vergleich merken\",\n chartRemoveComparison: \"Vergleich entfernen\",\n chartPreviousData: \"Diagramm und Tabelle zeigen weiterhin die zuletzt geladenen Filter\",\n chartCopyData: \"Daten kopieren\",\n chartCopyFailed: \"Daten konnten nicht kopiert werden\",\n\n actions: \"Aktionen\",\n add: \"Hinzufügen\",\n addTag: \"Tag hinzufügen\",\n addImage: \"Bild hinzufügen\",\n apply: \"Übernehmen\",\n attachments: \"Anhänge\",\n assistant: \"Assistent\",\n avatarLabel: ({ name }) => `Avatar von ${name}`,\n all: \"Alle\",\n calendar: \"Kalender\",\n clear: \"Leeren\",\n clearDate: \"Datum löschen\",\n clearSelection: \"Auswahl löschen\",\n chooseOption: \"Option auswählen\",\n close: \"Schließen\",\n closeDialog: \"Dialog schließen\",\n copied: \"Kopiert\",\n infoBlockNote: \"Notiz\",\n infoBlockInfo: \"Info\",\n infoBlockSuccess: \"Erfolg\",\n infoBlockWarning: \"Warnung\",\n infoBlockDanger: \"Gefahr\",\n copy: \"Kopieren\",\n closeLightbox: \"Bildansicht schließen\",\n couldNotLoadData: \"Diese Daten konnten nicht geladen werden\",\n datePicker: \"Datumsauswahl\",\n dataTable: \"Datentabelle\",\n datePresets: \"Datumsvorgaben\",\n decreaseValue: \"Wert verringern\",\n download: \"Herunterladen\",\n downloadAsZip: \"Als ZIP herunterladen\",\n downloadImage: \"Bild herunterladen\",\n dropFiles: \"Dateien ablegen oder zum Auswählen klicken\",\n dropToUpload: \"Zum Hochladen ablegen\",\n dropdownMenu: \"Dropdown-Menü\",\n durationPresets: \"Dauervorgaben\",\n filterOptions: \"Optionen filtern\",\n fileTypeNotAccepted: \"Dateityp wird nicht akzeptiert\",\n imageLightbox: \"Bildansicht\",\n imageNavigation: \"Bildnavigation\",\n increaseValue: \"Wert erhöhen\",\n loading: \"Wird geladen...\",\n hidePassword: \"Passwort ausblenden\",\n noColumns: \"Keine Spalten.\",\n noData: \"Keine Daten.\",\n noRecords: \"Keine Einträge\",\n noTagsYet: \"Noch keine Tags\",\n noResultsFound: \"Keine Ergebnisse gefunden\",\n nextImage: \"Nächstes Bild\",\n noOptions: \"Keine Optionen verfügbar\",\n optionsCouldNotLoad: \"Optionen konnten nicht geladen werden\",\n noResults: \"Keine Ergebnisse\",\n nothingHere: \"Noch nichts vorhanden.\",\n nothingToShow: \"Nichts anzuzeigen.\",\n no: \"Nein\",\n options: \"Optionen\",\n pagination: \"Seitennavigation\",\n pageOf: ({ page, total }) => `Seite ${page} von ${total}`,\n pickDate: \"Datum auswählen\",\n previousImage: \"Vorheriges Bild\",\n previousMonth: \"Vorheriger Monat\",\n previousPage: \"Vorherige Seite\",\n previousYear: \"Vorheriges Jahr\",\n nextMonth: \"Nächster Monat\",\n nextPage: \"Nächste Seite\",\n nextYear: \"Nächstes Jahr\",\n goToPage: ({ page }) => `Zu Seite ${page}`,\n retry: \"Erneut versuchen\",\n refreshing: \"Wird aktualisiert\",\n reset: \"Zurücksetzen\",\n required: \"Erforderlich\",\n minCharacters: ({ count }) => `Mindestens ${count} Zeichen`,\n maxCharacters: ({ count }) => `Höchstens ${count} Zeichen`,\n minTags: ({ count }) => `Mindestens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n maxTags: ({ count }) => `Höchstens ${count} ${count === 1 ? \"Tag\" : \"Tags\"}`,\n rename: \"Umbenennen\",\n delete: \"Löschen\",\n remove: \"Entfernen\",\n removeTag: \"Tag entfernen\",\n search: \"Suchen...\",\n searchLabel: \"Suchen\",\n spotlightNoResults: \"Keine Ergebnisse.\",\n searchFailed: \"Suche fehlgeschlagen.\",\n searchResults: \"Suchergebnisse\",\n save: \"Speichern\",\n saveShortcut: \"Speichern (Strg/Cmd+S)\",\n sectionsLabel: ({ title }) => `Bereiche von ${title}`,\n searchOptions: \"Optionen durchsuchen\",\n select: \"Auswählen...\",\n selectMatchingOption: \"Eine passende Option auswählen\",\n selectOption: \"Option auswählen\",\n suggestions: \"Vorschläge\",\n suggestionsCouldNotLoad: \"Vorschläge konnten nicht geladen werden\",\n showPassword: \"Passwort anzeigen\",\n time: \"Uhrzeit\",\n timeLabel: ({ label }) => `${label}zeit`,\n completionSuggestions: \"Vervollständigungsvorschläge\",\n contextMenu: \"Kontextmenü\",\n unknownUser: \"Unbekannte Person\",\n uploading: \"Wird hochgeladen…\",\n chooseFile: \"Datei auswählen\",\n chooseFiles: \"Dateien auswählen\",\n chooseMatchingFile: \"Wähle eine zu diesem Feld passende Datei aus.\",\n checkingOptions: \"Optionen werden geprüft\",\n checkingOptionsLoading: \"Optionen werden geprüft...\",\n noMatchingOption: \"Keine passende Option gefunden\",\n noOptionsFound: \"Keine Optionen gefunden\",\n typeToSearch: \"Zum Suchen tippen...\",\n showGridView: \"Rasteransicht anzeigen\",\n showListView: \"Listenansicht anzeigen\",\n start: \"Beginn\",\n end: \"Ende\",\n addFileFolderUpload: \"Datei oder Ordner hinzufügen oder hochladen\",\n addPane: \"Bereich hinzufügen\",\n addToChat: \"Zum Chat hinzufügen\",\n attachFiles: \"Dateien anhängen\",\n addGuidance: \"Hinweis hinzufügen...\",\n calendarView: \"Kalenderansicht\",\n openDate: ({ label }) => `${label} öffnen`,\n createEventOn: ({ label }) => `Termin am ${label} erstellen`,\n hiddenOverlappingEvents: ({ count }) => `${count} ausgeblendete überlappende Termine`,\n calendarEventTime: ({ title, start, end }) => `${title}, ${start} bis ${end}`,\n today: \"Heute\",\n day: \"Tag\",\n week: \"Woche\",\n weekShort: \"KW\",\n month: \"Monat\",\n year: \"Jahr\",\n allDay: \"Ganztägig\",\n noEvents: \"Keine Termine\",\n previous: \"Zurück\",\n next: \"Weiter\",\n moveEvent: \"Termin verschieben\",\n resizeEvent: \"Termindauer ändern\",\n cancel: \"Abbrechen\",\n chat: \"Chat\",\n chooseModel: \"Modell auswählen\",\n closeWindow: \"Fenster schließen\",\n code: \"Code\",\n codeLabel: ({ title }) => `Code von ${title}`,\n column: ({ number }) => `Spalte ${number}`,\n commands: \"Befehle\",\n dropFilesToAttach: \"Dateien zum Anhängen ablegen\",\n conversation: \"Unterhaltung\",\n jumpToLatest: \"Zur neuesten Nachricht\",\n feedJumpToLatest: \"Zum Neuesten\",\n feedJumpToLatestCount: ({ count }) => `Zum Neuesten, ${count} neu`,\n feedNewItems: ({ count }) => (count === 1 ? \"1 neuer Eintrag\" : `${count} neue Einträge`),\n feedNewMarker: \"Neu\",\n messageSent: \"Gesendet\",\n messageNotSent: \"Nicht gesendet\",\n messageRetry: \"Erneut senden\",\n messageShowMore: \"Mehr anzeigen\",\n messageShowLess: \"Weniger anzeigen\",\n messageReplyTo: \"Antwort auf\",\n messageForwarded: \"Weitergeleitet\",\n messageEdited: \"bearbeitet\",\n messageDeleted: \"Diese Nachricht wurde gelöscht\",\n messageVideo: \"Video\",\n messageMoreAttachments: ({ count }) => `${count} weitere`,\n messageReactions: \"Reaktionen\",\n messageReaction: ({ emoji, count, names, own }) =>\n `${emoji} ${own && count === 1 ? \"deine Reaktion\" : `${count} ${count === 1 ? \"Reaktion\" : \"Reaktionen\"}${own ? \", einschließlich deiner\" : \"\"}`}${names ? `: ${names}` : \"\"}`,\n messageAddReaction: \"Reaktion hinzufügen\",\n messageReplies: ({ count }) => (count === 1 ? \"1 Antwort\" : `${count} Antworten`),\n messageLastReply: ({ time }) => `Letzte Antwort ${time}`,\n messageStop: \"Stoppen\",\n conversationMessages: ({ label }) => `Nachrichten in ${label}`,\n dialogTabs: \"Dialog-Tabs\",\n files: \"Dateien\",\n chooseFileToPreview: \"Wähle eine Datei für die Vorschau aus.\",\n change: \"Ändern\",\n changeImage: \"Bild ändern\",\n cropArea: \"Zuschneidebereich. Mit Pfeiltasten verschieben; Umschalt für größere Schritte halten.\",\n cropPreview: \"Zuschneidevorschau\",\n discardChanges: \"Änderungen verwerfen\",\n discardUnsavedFile: \"Ungespeicherte Änderungen an dieser Datei verwerfen?\",\n downloadFailed: \"Download fehlgeschlagen\",\n failedLoadFiles: \"Dateien konnten nicht geladen werden\",\n failedLoadImage: \"Bild konnte nicht geladen werden.\",\n folderEmpty: \"Dieser Ordner ist leer.\",\n folderSelected: \"Ordner ausgewählt\",\n newFile: \"Neue Datei\",\n newFileName: \"Name der neuen Datei:\",\n newFolder: \"Neuer Ordner\",\n newFolderName: \"Name des neuen Ordners:\",\n fileActions: \"Dateiaktionen\",\n actionsFor: ({ name }) => `Aktionen für ${name}`,\n fileSaved: \"Datei gespeichert\",\n pickFileFromTree: \"Wähle im Dateibaum eine Datei aus.\",\n imageProcessingFailed: \"Bild konnte nicht verarbeitet werden.\",\n preparingImage: \"Bild wird vorbereitet…\",\n processingImage: \"Bild wird verarbeitet\",\n removeImage: \"Bild entfernen\",\n rotateRight: \"Nach rechts drehen\",\n selectedImage: \"Ausgewähltes Bild\",\n selectFile: \"Datei auswählen\",\n spaceEmpty: \"Dieser Bereich ist leer.\",\n uploadFiles: \"Dateien hochladen\",\n filterIcons: \"Symbole filtern\",\n loadEarlier: \"Ältere laden\",\n loadingConversation: \"Unterhaltung wird geladen\",\n loadingFiles: \"Dateien werden geladen...\",\n loadingMessages: \"Nachrichten werden geladen\",\n failed: \"Fehlgeschlagen\",\n generating: \"Wird generiert\",\n loadOlderMessages: \"Ältere Nachrichten laden\",\n loadingOlderMessages: \"Ältere Nachrichten werden geladen\",\n couldNotLoadOlderMessages: \"Ältere Nachrichten konnten nicht geladen werden\",\n couldNotLoadEarlierMessages: \"Ältere Nachrichten konnten nicht geladen werden\",\n couldNotPostMessage: \"Nachricht konnte nicht gepostet werden\",\n message: \"Nachricht\",\n messageActions: \"Nachrichtenaktionen\",\n messageComposer: \"Nachricht verfassen\",\n messageInput: \"Nachrichteneingabe\",\n confirmation: \"Bestätigung\",\n typeToConfirm: ({ phrase }: { phrase: string }) => `Gib ${phrase} zur Bestätigung ein`,\n confirm: \"Bestätigen\",\n dialog: \"Dialog\",\n discard: \"Verwerfen\",\n error: \"Fehler\",\n form: \"Formular\",\n filterActions: \"Filteraktionen\",\n info: \"Information\",\n dismissNotification: \"Benachrichtigung schließen\",\n notifications: \"Benachrichtigungen\",\n interactiveLineChart: \"Interaktives Liniendiagramm\",\n interactiveChart:\n \"Interaktives Diagramm. Pfeiltasten zum Erkunden, Enter zum Auswählen, Escape zum Schließen. In Karten und Zeitleisten Alt mit Pfeiltasten zum Erkunden.\",\n chartFields: ({ key }: { key: string }) => {\n const labels: Record<string, string> = {\n x: \"X\",\n y: \"Y\",\n value: \"Wert\",\n percent: \"Anteil\",\n total: \"Gesamt\",\n from: \"Von\",\n to: \"Bis\",\n upperInclusive: \"Obergrenze enthalten\",\n count: \"Anzahl\",\n q1: \"Unteres Quartil\",\n q2: \"Median\",\n q3: \"Oberes Quartil\",\n whiskerLow: \"Unterer Whisker\",\n whiskerHigh: \"Oberer Whisker\",\n min: \"Minimum\",\n max: \"Maximum\",\n threshold: \"Schwellenwert\",\n delta: \"Änderung\",\n latitude: \"Breitengrad\",\n longitude: \"Längengrad\",\n size: \"Größe\",\n state: \"Zustand\",\n duration: \"Dauer\",\n detail: \"Details\",\n errY: \"Y-Fehler\",\n errYHigh: \"Oberer Y-Fehler\",\n errYLow: \"Unterer Y-Fehler\",\n errX: \"X-Fehler\",\n errXHigh: \"Oberer X-Fehler\",\n errXLow: \"Unterer X-Fehler\",\n };\n return labels[key] ?? key;\n },\n interactiveMap: \"Interaktive Karte\",\n interactiveTimeline: \"Interaktive Zeitachse\",\n ok: \"OK\",\n success: \"Erfolg\",\n model: \"Modell\",\n input: \"Eingabe\",\n output: \"Ausgabe\",\n loopTotal: \"Schleife gesamt\",\n remaining: \"Verbleibend\",\n notConfigured: \"Nicht konfiguriert\",\n unknown: \"Unbekannt\",\n system: \"System\",\n tool: \"Werkzeug\",\n user: \"Benutzer\",\n useColor: \"Farbe verwenden\",\n useTransparent: \"Transparent verwenden\",\n series: \"Datenreihe\",\n waiting: \"Wartet\",\n templateEditorPlaceholder: \"HTML mit Liquid-Werten wie {{ APP_NAME }} schreiben...\",\n templatePreview: \"Vorlagenvorschau\",\n lastRequestContext: \"Kontext der letzten Anfrage\",\n contextWindowUsed: \"Kontextfenster verwendet\",\n contextUsageUnavailable: \"Kontextnutzung nicht verfügbar\",\n contextUsageUnavailableWithWindow: ({ window }) => `Kontextnutzung nicht verfügbar, Kontextfenster mit ${window} Token`,\n tokensUsed: ({ total }) => `${total} Token verwendet`,\n tokensUsedPercent: ({ total, percent }) => `${total} Token verwendet, ${percent}% des Kontextfensters`,\n moveDown: \"Nach unten\",\n moveUp: \"Nach oben\",\n moveNamedDown: ({ label }) => `${label} nach unten verschieben`,\n moveNamedUp: ({ label }) => `${label} nach oben verschieben`,\n rowAction: \"Zeilenaktion\",\n addToNamed: ({ name }) => `Zu ${name} hinzufügen`,\n insertBeforeNamed: ({ name }) => `Vor ${name} einfügen`,\n insertAtEnd: \"Am Ende einfügen\",\n addPaneSide: ({ side, name }) =>\n `${side === \"left\" ? \"Links\" : side === \"right\" ? \"Rechts\" : side === \"top\" ? \"Oberhalb\" : \"Unterhalb\"} von ${name} hinzufügen`,\n discardUnsavedChanges: \"Ungespeicherte Änderungen verwerfen?\",\n unsavedChangesTitle: \"Ungespeicherte Änderungen\",\n tagName: \"Tag-Name\",\n name: \"Name\",\n color: \"Farbe\",\n tagCouldNotBeSaved: \"Der Tag konnte nicht gespeichert werden.\",\n tagActionFailed: \"Die Tag-Aktion ist fehlgeschlagen.\",\n tagsPlaceholder: \"Tags (z. B. Tag 1, Tag 2, …)\",\n tagsAdded: ({ tags }) => `Tags hinzugefügt: ${tags}.`,\n tagsRemoved: ({ tags }) => `Tags entfernt: ${tags}.`,\n noFiles: \"Keine Dateien\",\n noLogEntries: \"Keine Logeinträge gefunden.\",\n noPreview: \"Keine Vorschau\",\n openPreview: \"Vorschau öffnen\",\n paneTabs: \"Bereichs-Tabs\",\n paneWorkspace: \"Arbeitsbereich\",\n pdfPreview: \"PDF-Vorschau\",\n pdfPreviewHttpError: ({ status }) => `PDF-Vorschau ist mit HTTP ${status} fehlgeschlagen`,\n pdfPreviewTabBlocked: \"Der Browser hat den neuen Tab blockiert. Erlaube Pop-ups und versuche es erneut.\",\n pdfPreviewRendering: \"PDF-Vorschau wird erstellt…\",\n pickIcon: \"Symbol auswählen...\",\n postMessage: \"Nachricht posten\",\n preview: \"Vorschau\",\n previewPdf: \"PDF anzeigen\",\n renderPdfPreview: \"Erzeuge eine PDF-Vorschau, um das Endergebnis zu sehen.\",\n queueMessage: \"Nachricht einreihen\",\n queueing: \"Wird eingereiht\",\n sending: \"Wird gesendet\",\n steering: \"Wird gesteuert\",\n writeMessage: \"Nachricht schreiben oder / eingeben ...\",\n openInNewTab: ({ name }) => `${name} in neuem Tab öffnen`,\n closeNamed: ({ name }) => `${name} schließen`,\n goToImage: ({ index }) => `Zu Bild ${index} wechseln`,\n pinDigit: ({ index, total }) => `PIN-Ziffer ${index} von ${total}`,\n moreSelected: ({ count }) => `${count} weitere ${count === 1 ? \"Option\" : \"Optionen\"} ausgewählt`,\n removeNamed: ({ name }) => `${name} entfernen`,\n resizeCrop: ({ handle }) => `Zuschneidebereich am Griff ${handle} skalieren`,\n range: \"Zeitraum\",\n resizePanes: \"Bereiche skalieren\",\n resetMapView: \"Kartenansicht zurücksetzen\",\n resetTimelineView: \"Zeitachsenansicht zurücksetzen\",\n retryOlderMessages: \"Ältere Nachrichten erneut laden\",\n saveChanges: \"Änderungen speichern\",\n saving: \"Wird gespeichert\",\n sendMessage: \"Nachricht senden\",\n startConversation: \"Unterhaltung beginnen\",\n steerResponse: \"Antwort steuern\",\n stopResponse: \"Antwort stoppen\",\n stopping: \"Wird gestoppt\",\n unsaved: \"Ungespeichert\",\n unsavedChangeLabel: ({ count }) => `ungespeicherte ${count === 1 ? \"Änderung\" : \"Änderungen\"}`,\n noUnsavedChanges: \"Keine ungespeicherten Änderungen\",\n moveWindow: ({ title }) => `Fenster ${title} verschieben. Pfeiltasten verwenden; Umschalt für größere Schritte halten.`,\n resizeWindow: \"Fenster skalieren. Pfeiltasten verwenden; Umschalt für größere Schritte halten.\",\n window: \"Fenster\",\n zoomIn: \"Vergrößern\",\n zoomOut: \"Verkleinern\",\n resetZoom: \"Zoom zurücksetzen\",\n openFullscreen: \"Im Vollbild öffnen\",\n zoomPanKeys: \"Mit Plus und Minus zoomen, mit den Pfeiltasten verschieben, mit 0 zurücksetzen, mit F im Vollbild öffnen.\",\n binaryFile: \"Binärdatei\",\n boldShortcut: \"Fett (Strg/Cmd+B)\",\n bulletListShortcut: \"Aufzählung (Strg/Cmd+Umschalt+8)\",\n heading1Shortcut: \"Überschrift 1 (Strg/Cmd+Umschalt+1)\",\n heading2Shortcut: \"Überschrift 2 (Strg/Cmd+Umschalt+2)\",\n heading3Shortcut: \"Überschrift 3 (Strg/Cmd+Umschalt+3)\",\n inlineCodeShortcut: \"Inline-Code (Strg/Cmd+E)\",\n italicShortcut: \"Kursiv (Strg/Cmd+I)\",\n linkShortcut: \"Link (Strg/Cmd+K)\",\n markdownFormatting: \"Markdown-Formatierung\",\n numberedListShortcut: \"Nummerierte Liste (Strg/Cmd+Umschalt+7)\",\n quote: \"Zitat\",\n csvSettings: \"CSV-Vorschau einstellen\",\n csvEncoding: \"Zeichenkodierung\",\n csvSeparator: \"Trennzeichen\",\n csvDefaultSeparator: \"Standard des Dateityps\",\n csvComma: \"Komma\",\n csvSemicolon: \"Semikolon\",\n csvTab: \"Tabulator\",\n csvView: \"Darstellung\",\n csvRaw: \"Rohtext\",\n delimitedFileEmpty: \"Diese Trennzeichen-Datei enthält keine Zeilen.\",\n edit: \"Bearbeiten\",\n emptyFile: \"Leere Datei\",\n failedLoadFile: \"Datei konnte nicht geladen werden\",\n noInlinePreview: \"Für diese Quelle ist keine direkte Vorschau verfügbar.\",\n previewMoreLines: (n: number) => `… ${n} weitere Zeilen`,\n previewColumnsLimited: \"Die ersten 50 Spalten werden angezeigt. Lade die Datei für alle Spalten herunter.\",\n textEditor: \"Texteditor\",\n audioUnsupported: \"Dein Browser unterstützt keine Audiowiedergabe.\",\n videoUnsupported: \"Dein Browser unterstützt keine Videowiedergabe.\",\n yes: \"Ja\",\n installApp: \"App installieren\",\n installNative: ({ appName }) => `Dein Browser kann ${appName} installieren. Bestätige die Installation im nächsten Dialog.`,\n installRequested: \"Installation angefragt. Folge den Hinweisen deines Browsers.\",\n installFailed: \"Der Installationsdialog konnte nicht geöffnet werden.\",\n installOpenShare: \"Teilen öffnen\",\n installOpenShareDetail: \"Tippe in Safari auf Teilen. Der Eintrag kann im Mehr-Menü liegen.\",\n installHomeScreen: \"Zum Home-Bildschirm\",\n installHomeScreenDetail: \"Scrolle durch die Aktionen und wähle „Zum Home-Bildschirm“.\",\n installConfirmAdd: \"Hinzufügen bestätigen\",\n installConfirmAddDetail: \"Lass „Als Web-App öffnen“ aktiviert, falls angezeigt, und tippe auf „Hinzufügen“.\",\n installOpenShareBrowserDetail: \"Tippe in Chrome in der Adressleiste auf Teilen. Öffne in Firefox oder Edge das Menü und dann Teilen.\",\n installSafariFallback:\n \"Kein „Zum Home-Bildschirm“? Dann ist die Seite vielleicht in einer anderen App geöffnet. Öffne sie in Safari.\",\n installSafariMenu: \"Safari-Menü öffnen\",\n installSafariMenuDetail: \"Öffne auf deinem Mac in Safari „Ablage“ oder klicke auf Teilen.\",\n installAddDock: \"Zum Dock hinzufügen\",\n installAddDockDetail: \"Wähle „Zum Dock hinzufügen“ und bestätige mit „Hinzufügen“. Verfügbar in Safari ab macOS Sonoma.\",\n installBrowserMenu: \"Browser-Menü öffnen\",\n installBrowserMenuDetail: \"Nutze das Menü neben der Adressleiste.\",\n installAndroidDetail: \"Wähle „App installieren“ oder „Zum Startbildschirm hinzufügen“ und folge den Hinweisen des Browsers.\",\n installBrowserDetail: \"Suche nach „App installieren“ im Menü oder nach einem Installationssymbol in der Adressleiste.\",\n installUnavailable:\n \"Keine Installationsoption? Nutze die App weiter im Browser oder versuche einen anderen Browser mit Installationsunterstützung.\",\n installAppleInAppTitle: \"Öffne diese Seite in Safari\",\n installAppleInAppDetail: ({ appName }) =>\n `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App (••• oder Teilen) „In Safari öffnen“ oder kopiere den Link und füge ihn in Safari ein.`,\n installInAppTitle: \"Öffne diese Seite in deinem Browser\",\n installInAppDetail: ({ appName }) =>\n `Diese Seite ist in einer anderen App geöffnet, die ${appName} nicht installieren kann. Wähle im Menü dieser App „In Chrome öffnen“ oder „Im Browser öffnen“ oder kopiere den Link und füge ihn in Chrome ein.`,\n installAppleBrowserTitle: \"Am besten mit Safari\",\n installAppleBrowserDetail:\n \"In diesem Browser installierst du über Teilen → Zum Home-Bildschirm. Fehlt der Eintrag, öffne diese Seite in Safari.\",\n installAndroidBrowserTitle: \"Am besten mit Chrome\",\n installAndroidBrowserDetail:\n \"Suche in diesem Browser im Menü nach „Installieren“ oder „Zum Startbildschirm hinzufügen“. Fehlt der Eintrag, öffne diese Seite in Chrome.\",\n installSamsungTitle: \"Mit Chrome installieren\",\n installSamsungDetail: ({ appName }) =>\n `Auf Samsung-Handys erstellt Samsung Internet ein eigenes App-Paket, das Android ab Version 14 als „für eine ältere Android-Version entwickelt“ blockieren kann. Diese Warnung betrifft das Paket, nicht ${appName}. Mit Chrome installierst du ${appName} ohne sie. Ohne Chrome nutze das Menü dieses Browsers und fahre trotz dieser Warnung fort.`,\n installOpenChrome: \"In Chrome öffnen\",\n installCopyLink: \"Link kopieren\",\n installLinkCopied: \"Link kopiert\",\n installCopyFailed: \"Der Link konnte nicht kopiert werden. Kopiere diese Adresse manuell:\",\n qrCameraPreview: \"Kameravorschau zum Scannen eines QR-Codes\",\n qrCameraStarting: \"Kamera wird gestartet…\",\n qrCameraInstructions: \"Richte die Kamera auf einen QR-Code.\",\n qrCameraPrivacy: \"Kamerabilder bleiben auf diesem Gerät.\",\n },\n },\n});\n\nexport type UiMessages = ReturnType<(typeof uiMessages)[\"resolve\"]>[\"t\"];\n\n/** Generic component chrome owned by @k2b/ui, resolved from the inherited render locale. */\nexport const useUiMessages = (): (() => UiMessages) => {\n const locale = useLocale();\n return () => uiMessages.resolve([locale()]).t;\n};\n\n/** Browser-only imperative UI (for example prompts) inherits the document locale. */\nexport const resolveUiMessages = (locale?: string): UiMessages =>\n uiMessages.resolve([locale ?? (typeof document === \"undefined\" ? uiMessages.baseLocale : document.documentElement.lang)]).t;\n\nexport const checkUiMessages = () => uiMessages.check();\n"],"mappings":"AAAA,SAAS,IAAI,QAAQ,aAAa;AAClC,SAAS,SAAS,QAAQ,UAAU;AAEpC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;EAC7B,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE;IACR,EAAE,EAAE;MACF,SAAS,EAAE,YAAY;MACvB,YAAY,EAAE,SAAS;MACvB,SAAS,EAAE,OAAO;MAClB,WAAW,EAAE,mBAAmB;MAChC,SAAS,EAAE,MAAM;MACjB,YAAY,EAAE,UAAU;MACxB,YAAY,EAAE,SAAS;MACvB,kBAAkB,EAAE,qBAAqB;MACzC,cAAc,EAAE,WAAW;MAC3B,YAAY,EAAE,SAAS;MACvB,iBAAiB,EAAE,kBAAkB;MACrC,qBAAqB,EAAE,mBAAmB;MAC1C,iBAAiB,EAAE,wDAAwD;MAC3E,aAAa,EAAE,WAAW;MAC1B,eAAe,EAAE,qBAAqB;MAEtC,OAAO,EAAE,SAAS;MAClB,GAAG,EAAE,KAAK;MACV,MAAM,EAAE,SAAS;MACjB,QAAQ,EAAE,WAAW;MACrB,KAAK,EAAE,OAAO;MACd,WAAW,EAAE,aAAa;MAC1B,SAAS,EAAE,WAAW;MACtB,WAAW,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,GAAG,IAAI,SAAS;MAC7D,GAAG,EAAE,KAAK;MACV,QAAQ,EAAE,UAAU;MACpB,KAAK,EAAE,OAAO;MACd,SAAS,EAAE,YAAY;MACvB,cAAc,EAAE,iBAAiB;MACjC,YAAY,EAAE,eAAe;MAC7B,KAAK,EAAE,OAAO;MACd,WAAW,EAAE,cAAc;MAC3B,MAAM,EAAE,QAAQ;MAChB,aAAa,EAAE,MAAM;MACrB,aAAa,EAAE,MAAM;MACrB,gBAAgB,EAAE,SAAS;MAC3B,gBAAgB,EAAE,SAAS;MAC3B,eAAe,EAAE,QAAQ;MACzB,IAAI,EAAE,MAAM;MACZ,aAAa,EAAE,gBAAgB;MAC/B,gBAAgB,EAAE,0BAA0B;MAC5C,UAAU,EAAE,aAAa;MACzB,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,cAAc;MAC3B,aAAa,EAAE,gBAAgB;MAC/B,QAAQ,EAAE,UAAU;MACpB,aAAa,EAAE,iBAAiB;MAChC,aAAa,EAAE,gBAAgB;MAC/B,SAAS,EAAE,+BAA+B;MAC1C,YAAY,EAAE,gBAAgB;MAC9B,YAAY,EAAE,eAAe;MAC7B,eAAe,EAAE,kBAAkB;MACnC,aAAa,EAAE,gBAAgB;MAC/B,mBAAmB,EAAE,wBAAwB;MAC7C,aAAa,EAAE,gBAAgB;MAC/B,eAAe,EAAE,kBAAkB;MACnC,aAAa,EAAE,gBAAgB;MAC/B,OAAO,EAAE,YAAY;MACrB,YAAY,EAAE,eAAe;MAC7B,SAAS,EAAE,aAAa;MACxB,MAAM,EAAE,UAAU;MAClB,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,aAAa;MACxB,cAAc,EAAE,kBAAkB;MAClC,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,sBAAsB;MACjC,mBAAmB,EAAE,6BAA6B;MAClD,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,mBAAmB;MAChC,aAAa,EAAE,kBAAkB;MACjC,EAAE,EAAE,IAAI;MACR,OAAO,EAAE,SAAS;MAClB,UAAU,EAAE,YAAY;MACxB,MAAM,EAAE,CAAC;QAAE,IAAI;QAAE;MAAuC,CAAC,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE;MACxF,QAAQ,EAAE,WAAW;MACrB,aAAa,EAAE,gBAAgB;MAC/B,aAAa,EAAE,gBAAgB;MAC/B,YAAY,EAAE,eAAe;MAC7B,YAAY,EAAE,eAAe;MAC7B,SAAS,EAAE,YAAY;MACvB,QAAQ,EAAE,WAAW;MACrB,QAAQ,EAAE,WAAW;MACrB,QAAQ,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,cAAc,IAAI,EAAE;MAC9D,KAAK,EAAE,OAAO;MACd,UAAU,EAAE,YAAY;MACxB,KAAK,EAAE,OAAO;MACd,QAAQ,EAAE,UAAU;MACpB,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,YAAY,EAAE;MAChH,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,YAAY,EAAE;MAC/G,OAAO,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC9F,OAAO,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC7F,MAAM,EAAE,QAAQ;MAChB,MAAM,EAAE,QAAQ;MAChB,MAAM,EAAE,QAAQ;MAChB,SAAS,EAAE,YAAY;MACvB,MAAM,EAAE,WAAW;MACnB,WAAW,EAAE,QAAQ;MACrB,kBAAkB,EAAE,aAAa;MACjC,YAAY,EAAE,gBAAgB;MAC9B,aAAa,EAAE,gBAAgB;MAC/B,IAAI,EAAE,MAAM;MACZ,YAAY,EAAE,mBAAmB;MACjC,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,WAAW;MACpE,aAAa,EAAE,gBAAgB;MAC/B,MAAM,EAAE,WAAW;MACnB,oBAAoB,EAAE,0BAA0B;MAChD,YAAY,EAAE,eAAe;MAC7B,WAAW,EAAE,aAAa;MAC1B,uBAAuB,EAAE,iCAAiC;MAC1D,YAAY,EAAE,eAAe;MAC7B,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,OAAO;MAC5D,qBAAqB,EAAE,wBAAwB;MAC/C,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,SAAS,EAAE,YAAY;MACvB,UAAU,EAAE,aAAa;MACzB,WAAW,EAAE,cAAc;MAC3B,kBAAkB,EAAE,wCAAwC;MAC5D,eAAe,EAAE,kBAAkB;MACnC,sBAAsB,EAAE,qBAAqB;MAC7C,gBAAgB,EAAE,0BAA0B;MAC5C,cAAc,EAAE,kBAAkB;MAClC,YAAY,EAAE,mBAAmB;MACjC,YAAY,EAAE,gBAAgB;MAC9B,YAAY,EAAE,gBAAgB;MAC9B,KAAK,EAAE,OAAO;MACd,GAAG,EAAE,KAAK;MACV,mBAAmB,EAAE,6BAA6B;MAClD,OAAO,EAAE,UAAU;MACnB,SAAS,EAAE,aAAa;MACxB,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,eAAe;MAC7B,QAAQ,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,EAAE;MAC3D,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,mBAAmB,KAAK,EAAE;MAC3E,uBAAuB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,4BAA4B;MAC/F,iBAAiB,EAAE,CAAC;QAAE,KAAK;QAAE,KAAK;QAAE;MAAmD,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,OAAO,GAAG,EAAE;MAC3H,KAAK,EAAE,OAAO;MACd,GAAG,EAAE,KAAK;MACV,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,OAAO;MACd,IAAI,EAAE,MAAM;MACZ,MAAM,EAAE,SAAS;MACjB,QAAQ,EAAE,WAAW;MACrB,QAAQ,EAAE,UAAU;MACpB,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,cAAc;MAC3B,MAAM,EAAE,QAAQ;MAChB,IAAI,EAAE,MAAM;MACZ,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,OAAO;MAC5D,MAAM,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,UAAU,MAAM,EAAE;MAC9D,QAAQ,EAAE,UAAU;MACpB,iBAAiB,EAAE,sBAAsB;MACzC,YAAY,EAAE,cAAc;MAC5B,YAAY,EAAE,gBAAgB;MAC9B,gBAAgB,EAAE,gBAAgB;MAClC,qBAAqB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,mBAAmB,KAAK,MAAM;MACvF,YAAY,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAM,KAAK,KAAK,CAAC,GAAG,YAAY,GAAG,GAAG,KAAK,YAAa;MACnG,aAAa,EAAE,KAAK;MACpB,WAAW,EAAE,MAAM;MACnB,cAAc,EAAE,UAAU;MAC1B,YAAY,EAAE,OAAO;MACrB,eAAe,EAAE,WAAW;MAC5B,eAAe,EAAE,WAAW;MAC5B,cAAc,EAAE,aAAa;MAC7B,gBAAgB,EAAE,WAAW;MAC7B,aAAa,EAAE,QAAQ;MACvB,cAAc,EAAE,0BAA0B;MAC1C,YAAY,EAAE,OAAO;MACrB,sBAAsB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,OAAO;MACzE,gBAAgB,EAAE,WAAW;MAC7B,eAAe,EAAE,CAAC;QAAE,KAAK;QAAE,KAAK;QAAE,KAAK;QAAE;MAAqE,CAAC,KAC7G,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,CAAC,GAAG,eAAe,GAAG,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,UAAU,GAAG,WAAW,GAAG,GAAG,GAAG,mBAAmB,GAAG,EAAE,EAAE,GAAG,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,EAAE,EAAE;MACxK,kBAAkB,EAAE,cAAc;MAClC,cAAc,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAM,KAAK,KAAK,CAAC,GAAG,SAAS,GAAG,GAAG,KAAK,UAAW;MAChG,gBAAgB,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,cAAc,IAAI,EAAE;MACtE,WAAW,EAAE,MAAM;MACnB,oBAAoB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,WAAW;MAC3E,UAAU,EAAE,aAAa;MACzB,KAAK,EAAE,OAAO;MACd,mBAAmB,EAAE,8BAA8B;MACnD,MAAM,EAAE,QAAQ;MAChB,WAAW,EAAE,cAAc;MAC3B,QAAQ,EAAE,iEAAiE;MAC3E,WAAW,EAAE,cAAc;MAC3B,cAAc,EAAE,iBAAiB;MACjC,kBAAkB,EAAE,2CAA2C;MAC/D,cAAc,EAAE,iBAAiB;MACjC,eAAe,EAAE,sBAAsB;MACvC,eAAe,EAAE,uBAAuB;MACxC,WAAW,EAAE,uBAAuB;MACpC,cAAc,EAAE,iBAAiB;MACjC,OAAO,EAAE,UAAU;MACnB,WAAW,EAAE,uBAAuB;MACpC,SAAS,EAAE,YAAY;MACvB,aAAa,EAAE,yBAAyB;MACxC,WAAW,EAAE,cAAc;MAC3B,UAAU,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,eAAe,IAAI,EAAE;MACjE,SAAS,EAAE,YAAY;MACvB,gBAAgB,EAAE,uCAAuC;MACzD,qBAAqB,EAAE,+BAA+B;MACtD,cAAc,EAAE,kBAAkB;MAClC,eAAe,EAAE,kBAAkB;MACnC,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,aAAa,EAAE,gBAAgB;MAC/B,UAAU,EAAE,eAAe;MAC3B,UAAU,EAAE,sBAAsB;MAClC,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,WAAW,EAAE,cAAc;MAC3B,mBAAmB,EAAE,sBAAsB;MAC3C,YAAY,EAAE,kBAAkB;MAChC,eAAe,EAAE,kBAAkB;MACnC,MAAM,EAAE,QAAQ;MAChB,UAAU,EAAE,YAAY;MACxB,iBAAiB,EAAE,qBAAqB;MACxC,oBAAoB,EAAE,wBAAwB;MAC9C,yBAAyB,EAAE,+BAA+B;MAC1D,2BAA2B,EAAE,iCAAiC;MAC9D,mBAAmB,EAAE,wBAAwB;MAC7C,OAAO,EAAE,SAAS;MAClB,cAAc,EAAE,iBAAiB;MACjC,eAAe,EAAE,kBAAkB;MACnC,YAAY,EAAE,eAAe;MAC7B,YAAY,EAAE,cAAc;MAC5B,aAAa,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,QAAQ,MAAM,aAAa;MAC9E,OAAO,EAAE,SAAS;MAClB,MAAM,EAAE,QAAQ;MAChB,OAAO,EAAE,SAAS;MAClB,KAAK,EAAE,OAAO;MACd,IAAI,EAAE,MAAM;MACZ,aAAa,EAAE,gBAAgB;MAC/B,IAAI,EAAE,MAAM;MACZ,mBAAmB,EAAE,sBAAsB;MAC3C,aAAa,EAAE,eAAe;MAC9B,oBAAoB,EAAE,wBAAwB;MAC9C,gBAAgB,EACd,6IAA6I;MAC/I,WAAW,EAAE,CAAC;QAAE;MAAqB,CAAC,KAAK;QACzC,MAAM,MAA8B,GAAG;UACrC,CAAC,EAAE,GAAG;UACN,CAAC,EAAE,GAAG;UACN,KAAK,EAAE,OAAO;UACd,OAAO,EAAE,OAAO;UAChB,KAAK,EAAE,OAAO;UACd,IAAI,EAAE,MAAM;UACZ,EAAE,EAAE,IAAI;UACR,cAAc,EAAE,sBAAsB;UACtC,KAAK,EAAE,OAAO;UACd,EAAE,EAAE,gBAAgB;UACpB,EAAE,EAAE,QAAQ;UACZ,EAAE,EAAE,gBAAgB;UACpB,UAAU,EAAE,eAAe;UAC3B,WAAW,EAAE,eAAe;UAC5B,GAAG,EAAE,SAAS;UACd,GAAG,EAAE,SAAS;UACd,SAAS,EAAE,WAAW;UACtB,KAAK,EAAE,QAAQ;UACf,QAAQ,EAAE,UAAU;UACpB,SAAS,EAAE,WAAW;UACtB,IAAI,EAAE,MAAM;UACZ,KAAK,EAAE,OAAO;UACd,QAAQ,EAAE,UAAU;UACpB,MAAM,EAAE,QAAQ;UAChB,IAAI,EAAE,SAAS;UACf,QAAQ,EAAE,eAAe;UACzB,OAAO,EAAE,eAAe;UACxB,IAAI,EAAE,SAAS;UACf,QAAQ,EAAE,eAAe;UACzB,OAAO,EAAE;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG;MAC3B,CAAC;MACD,cAAc,EAAE,iBAAiB;MACjC,mBAAmB,EAAE,sBAAsB;MAC3C,EAAE,EAAE,IAAI;MACR,OAAO,EAAE,SAAS;MAClB,KAAK,EAAE,OAAO;MACd,KAAK,EAAE,OAAO;MACd,MAAM,EAAE,QAAQ;MAChB,SAAS,EAAE,YAAY;MACvB,SAAS,EAAE,WAAW;MACtB,aAAa,EAAE,gBAAgB;MAC/B,OAAO,EAAE,SAAS;MAClB,MAAM,EAAE,QAAQ;MAChB,IAAI,EAAE,MAAM;MACZ,IAAI,EAAE,MAAM;MACZ,QAAQ,EAAE,aAAa;MACvB,cAAc,EAAE,iBAAiB;MACjC,MAAM,EAAE,QAAQ;MAChB,OAAO,EAAE,SAAS;MAClB,yBAAyB,EAAE,sDAAsD;MACjF,eAAe,EAAE,kBAAkB;MACnC,kBAAkB,EAAE,sBAAsB;MAC1C,iBAAiB,EAAE,qBAAqB;MACxC,uBAAuB,EAAE,2BAA2B;MACpD,iCAAiC,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,8BAA8B,MAAM,uBAAuB;MAClI,UAAU,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,cAAc;MACpE,iBAAiB,EAAE,CAAC;QAAE,KAAK;QAAE;MAA4C,CAAC,KACxE,GAAG,KAAK,iBAAiB,OAAO,yBAAyB;MAC3D,QAAQ,EAAE,WAAW;MACrB,MAAM,EAAE,SAAS;MACjB,aAAa,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,OAAO;MACrE,WAAW,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,KAAK;MACjE,SAAS,EAAE,YAAY;MACvB,UAAU,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,UAAU,IAAI,EAAE;MAC5D,iBAAiB,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,iBAAiB,IAAI,EAAE;MAC1E,WAAW,EAAE,eAAe;MAC5B,WAAW,EAAE,CAAC;QAAE,IAAI;QAAE;MAAkE,CAAC,KAAK,OAAO,IAAI,OAAO,IAAI,EAAE;MACtH,qBAAqB,EAAE,0BAA0B;MACjD,mBAAmB,EAAE,iBAAiB;MACtC,OAAO,EAAE,UAAU;MACnB,IAAI,EAAE,MAAM;MACZ,KAAK,EAAE,OAAO;MACd,kBAAkB,EAAE,6BAA6B;MACjD,eAAe,EAAE,wBAAwB;MACzC,eAAe,EAAE,8BAA8B;MAC/C,SAAS,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,eAAe,IAAI,GAAG;MACjE,WAAW,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,iBAAiB,IAAI,GAAG;MACrE,OAAO,EAAE,UAAU;MACnB,YAAY,EAAE,uBAAuB;MACrC,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,cAAc;MAC3B,QAAQ,EAAE,WAAW;MACrB,aAAa,EAAE,gBAAgB;MAC/B,UAAU,EAAE,aAAa;MACzB,mBAAmB,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,gCAAgC,MAAM,EAAE;MACjG,oBAAoB,EAAE,+DAA+D;MACrF,mBAAmB,EAAE,wBAAwB;MAC7C,QAAQ,EAAE,iBAAiB;MAC3B,WAAW,EAAE,cAAc;MAC3B,OAAO,EAAE,SAAS;MAClB,UAAU,EAAE,aAAa;MACzB,gBAAgB,EAAE,+CAA+C;MACjE,YAAY,EAAE,eAAe;MAC7B,QAAQ,EAAE,UAAU;MACpB,OAAO,EAAE,SAAS;MAClB,QAAQ,EAAE,UAAU;MACpB,YAAY,EAAE,+BAA+B;MAC7C,YAAY,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,QAAQ,IAAI,eAAe;MACzE,UAAU,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,SAAS,IAAI,EAAE;MAC3D,SAAS,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,eAAe,KAAK,EAAE;MACnE,QAAQ,EAAE,CAAC;QAAE,KAAK;QAAE;MAAwC,CAAC,KAAK,aAAa,KAAK,OAAO,KAAK,EAAE;MAClG,YAAY,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,GAAG,KAAK,gBAAgB;MACxE,WAAW,EAAE,CAAC;QAAE;MAAuB,CAAC,KAAK,UAAU,IAAI,EAAE;MAC7D,UAAU,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,eAAe,MAAM,EAAE;MACvE,KAAK,EAAE,OAAO;MACd,WAAW,EAAE,cAAc;MAC3B,YAAY,EAAE,gBAAgB;MAC9B,iBAAiB,EAAE,qBAAqB;MACxC,kBAAkB,EAAE,8BAA8B;MAClD,WAAW,EAAE,cAAc;MAC3B,MAAM,EAAE,QAAQ;MAChB,WAAW,EAAE,cAAc;MAC3B,iBAAiB,EAAE,sBAAsB;MACzC,aAAa,EAAE,gBAAgB;MAC/B,YAAY,EAAE,eAAe;MAC7B,QAAQ,EAAE,UAAU;MACpB,OAAO,EAAE,SAAS;MAClB,kBAAkB,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,WAAW,KAAK,KAAK,CAAC,GAAG,QAAQ,GAAG,SAAS,EAAE;MACrG,gBAAgB,EAAE,oBAAoB;MACtC,UAAU,EAAE,CAAC;QAAE;MAAyB,CAAC,KAAK,QAAQ,KAAK,uDAAuD;MAClH,YAAY,EAAE,6DAA6D;MAC3E,MAAM,EAAE,QAAQ;MAChB,MAAM,EAAE,SAAS;MACjB,OAAO,EAAE,UAAU;MACnB,SAAS,EAAE,YAAY;MACvB,cAAc,EAAE,iBAAiB;MACjC,WAAW,EAAE,2FAA2F;MACxG,UAAU,EAAE,aAAa;MACzB,YAAY,EAAE,mBAAmB;MACjC,kBAAkB,EAAE,gCAAgC;MACpD,gBAAgB,EAAE,8BAA8B;MAChD,gBAAgB,EAAE,8BAA8B;MAChD,gBAAgB,EAAE,8BAA8B;MAChD,kBAAkB,EAAE,0BAA0B;MAC9C,cAAc,EAAE,qBAAqB;MACrC,YAAY,EAAE,mBAAmB;MACjC,kBAAkB,EAAE,qBAAqB;MACzC,oBAAoB,EAAE,kCAAkC;MACxD,KAAK,EAAE,OAAO;MACd,WAAW,EAAE,sBAAsB;MACnC,WAAW,EAAE,UAAU;MACvB,YAAY,EAAE,WAAW;MACzB,mBAAmB,EAAE,mBAAmB;MACxC,QAAQ,EAAE,OAAO;MACjB,YAAY,EAAE,WAAW;MACzB,MAAM,EAAE,KAAK;MACb,OAAO,EAAE,SAAS;MAClB,MAAM,EAAE,UAAU;MAClB,kBAAkB,EAAE,uCAAuC;MAC3D,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,YAAY;MACvB,cAAc,EAAE,qBAAqB;MACrC,eAAe,EAAE,8CAA8C;MAC/D,gBAAgB,EAAG,CAAS,IAAK,KAAK,CAAC,aAAa;MACpD,qBAAqB,EAAE,kEAAkE;MACzF,UAAU,EAAE,aAAa;MACzB,gBAAgB,EAAE,+CAA+C;MACjE,gBAAgB,EAAE,+CAA+C;MACjE,GAAG,EAAE,KAAK;MACV,UAAU,EAAE,aAAa;MACzB,aAAa,EAAE,CAAC;QAAE;MAA6B,CAAC,KAC9C,4BAA4B,OAAO,uDAAuD;MAC5F,gBAAgB,EAAE,6DAA6D;MAC/E,aAAa,EAAE,8CAA8C;MAC7D,gBAAgB,EAAE,YAAY;MAC9B,sBAAsB,EAAE,iEAAiE;MACzF,iBAAiB,EAAE,oBAAoB;MACvC,uBAAuB,EAAE,6DAA6D;MACtF,iBAAiB,EAAE,aAAa;MAChC,uBAAuB,EAAE,0DAA0D;MACnF,6BAA6B,EAAE,yFAAyF;MACxH,qBAAqB,EAAE,8FAA8F;MACrH,iBAAiB,EAAE,sBAAsB;MACzC,uBAAuB,EAAE,kDAAkD;MAC3E,cAAc,EAAE,aAAa;MAC7B,oBAAoB,EAAE,yFAAyF;MAC/G,kBAAkB,EAAE,uBAAuB;MAC3C,wBAAwB,EAAE,sCAAsC;MAChE,oBAAoB,EAAE,uFAAuF;MAC7G,oBAAoB,EAAE,gFAAgF;MACtG,kBAAkB,EAAE,2GAA2G;MAC/H,sBAAsB,EAAE,0BAA0B;MAClD,uBAAuB,EAAE,CAAC;QAAE;MAA6B,CAAC,KACxD,6DAA6D,OAAO,0GAA0G;MAChL,iBAAiB,EAAE,gCAAgC;MACnD,kBAAkB,EAAE,CAAC;QAAE;MAA6B,CAAC,KACnD,6DAA6D,OAAO,gHAAgH;MACtL,wBAAwB,EAAE,mBAAmB;MAC7C,yBAAyB,EAAE,0GAA0G;MACrI,0BAA0B,EAAE,mBAAmB;MAC/C,2BAA2B,EACzB,yHAAyH;MAC3H,mBAAmB,EAAE,qBAAqB;MAC1C,oBAAoB,EAAE,CAAC;QAAE;MAA6B,CAAC,KACrD,iMAAiM,OAAO,qBAAqB,OAAO,yFAAyF;MAC/T,iBAAiB,EAAE,gBAAgB;MACnC,eAAe,EAAE,WAAW;MAC5B,iBAAiB,EAAE,aAAa;MAChC,iBAAiB,EAAE,2DAA2D;MAC9E,eAAe,EAAE,uCAAuC;MACxD,gBAAgB,EAAE,kBAAkB;MACpC,oBAAoB,EAAE,gCAAgC;MACtD,eAAe,EAAE;IACnB,CAAC;IACD,EAAE,EAAE;MACF,SAAS,EAAE,iBAAiB;MAC5B,YAAY,EAAE,UAAU;MACxB,SAAS,EAAE,SAAS;MACpB,WAAW,EAAE,uBAAuB;MACpC,SAAS,EAAE,WAAW;MACtB,YAAY,EAAE,eAAe;MAC7B,YAAY,EAAE,WAAW;MACzB,kBAAkB,EAAE,yBAAyB;MAC7C,cAAc,EAAE,WAAW;MAC3B,YAAY,EAAE,SAAS;MACvB,iBAAiB,EAAE,sBAAsB;MACzC,qBAAqB,EAAE,qBAAqB;MAC5C,iBAAiB,EAAE,oEAAoE;MACvF,aAAa,EAAE,gBAAgB;MAC/B,eAAe,EAAE,oCAAoC;MAErD,OAAO,EAAE,UAAU;MACnB,GAAG,EAAE,YAAY;MACjB,MAAM,EAAE,gBAAgB;MACxB,QAAQ,EAAE,iBAAiB;MAC3B,KAAK,EAAE,YAAY;MACnB,WAAW,EAAE,SAAS;MACtB,SAAS,EAAE,WAAW;MACtB,WAAW,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,cAAc,IAAI,EAAE;MAC/C,GAAG,EAAE,MAAM;MACX,QAAQ,EAAE,UAAU;MACpB,KAAK,EAAE,QAAQ;MACf,SAAS,EAAE,eAAe;MAC1B,cAAc,EAAE,iBAAiB;MACjC,YAAY,EAAE,kBAAkB;MAChC,KAAK,EAAE,WAAW;MAClB,WAAW,EAAE,kBAAkB;MAC/B,MAAM,EAAE,SAAS;MACjB,aAAa,EAAE,OAAO;MACtB,aAAa,EAAE,MAAM;MACrB,gBAAgB,EAAE,QAAQ;MAC1B,gBAAgB,EAAE,SAAS;MAC3B,eAAe,EAAE,QAAQ;MACzB,IAAI,EAAE,UAAU;MAChB,aAAa,EAAE,uBAAuB;MACtC,gBAAgB,EAAE,0CAA0C;MAC5D,UAAU,EAAE,eAAe;MAC3B,SAAS,EAAE,cAAc;MACzB,WAAW,EAAE,gBAAgB;MAC7B,aAAa,EAAE,iBAAiB;MAChC,QAAQ,EAAE,eAAe;MACzB,aAAa,EAAE,uBAAuB;MACtC,aAAa,EAAE,oBAAoB;MACnC,SAAS,EAAE,4CAA4C;MACvD,YAAY,EAAE,uBAAuB;MACrC,YAAY,EAAE,eAAe;MAC7B,eAAe,EAAE,eAAe;MAChC,aAAa,EAAE,kBAAkB;MACjC,mBAAmB,EAAE,gCAAgC;MACrD,aAAa,EAAE,aAAa;MAC5B,eAAe,EAAE,gBAAgB;MACjC,aAAa,EAAE,cAAc;MAC7B,OAAO,EAAE,iBAAiB;MAC1B,YAAY,EAAE,qBAAqB;MACnC,SAAS,EAAE,gBAAgB;MAC3B,MAAM,EAAE,cAAc;MACtB,SAAS,EAAE,gBAAgB;MAC3B,SAAS,EAAE,iBAAiB;MAC5B,cAAc,EAAE,2BAA2B;MAC3C,SAAS,EAAE,eAAe;MAC1B,SAAS,EAAE,0BAA0B;MACrC,mBAAmB,EAAE,uCAAuC;MAC5D,SAAS,EAAE,kBAAkB;MAC7B,WAAW,EAAE,wBAAwB;MACrC,aAAa,EAAE,oBAAoB;MACnC,EAAE,EAAE,MAAM;MACV,OAAO,EAAE,UAAU;MACnB,UAAU,EAAE,kBAAkB;MAC9B,MAAM,EAAE,CAAC;QAAE,IAAI;QAAE;MAAM,CAAC,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;MACzD,QAAQ,EAAE,iBAAiB;MAC3B,aAAa,EAAE,iBAAiB;MAChC,aAAa,EAAE,kBAAkB;MACjC,YAAY,EAAE,iBAAiB;MAC/B,YAAY,EAAE,iBAAiB;MAC/B,SAAS,EAAE,gBAAgB;MAC3B,QAAQ,EAAE,eAAe;MACzB,QAAQ,EAAE,eAAe;MACzB,QAAQ,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,YAAY,IAAI,EAAE;MAC1C,KAAK,EAAE,kBAAkB;MACzB,UAAU,EAAE,mBAAmB;MAC/B,KAAK,EAAE,cAAc;MACrB,QAAQ,EAAE,cAAc;MACxB,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,UAAU;MAC3D,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,UAAU;MAC1D,OAAO,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC7E,OAAO,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,KAAK,GAAG,MAAM,EAAE;MAC5E,MAAM,EAAE,YAAY;MACpB,MAAM,EAAE,SAAS;MACjB,MAAM,EAAE,WAAW;MACnB,SAAS,EAAE,eAAe;MAC1B,MAAM,EAAE,WAAW;MACnB,WAAW,EAAE,QAAQ;MACrB,kBAAkB,EAAE,mBAAmB;MACvC,YAAY,EAAE,uBAAuB;MACrC,aAAa,EAAE,gBAAgB;MAC/B,IAAI,EAAE,WAAW;MACjB,YAAY,EAAE,wBAAwB;MACtC,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,gBAAgB,KAAK,EAAE;MACrD,aAAa,EAAE,sBAAsB;MACrC,MAAM,EAAE,cAAc;MACtB,oBAAoB,EAAE,gCAAgC;MACtD,YAAY,EAAE,kBAAkB;MAChC,WAAW,EAAE,YAAY;MACzB,uBAAuB,EAAE,yCAAyC;MAClE,YAAY,EAAE,mBAAmB;MACjC,IAAI,EAAE,SAAS;MACf,SAAS,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,MAAM;MACxC,qBAAqB,EAAE,8BAA8B;MACrD,WAAW,EAAE,aAAa;MAC1B,WAAW,EAAE,mBAAmB;MAChC,SAAS,EAAE,mBAAmB;MAC9B,UAAU,EAAE,iBAAiB;MAC7B,WAAW,EAAE,mBAAmB;MAChC,kBAAkB,EAAE,+CAA+C;MACnE,eAAe,EAAE,yBAAyB;MAC1C,sBAAsB,EAAE,4BAA4B;MACpD,gBAAgB,EAAE,gCAAgC;MAClD,cAAc,EAAE,yBAAyB;MACzC,YAAY,EAAE,sBAAsB;MACpC,YAAY,EAAE,wBAAwB;MACtC,YAAY,EAAE,wBAAwB;MACtC,KAAK,EAAE,QAAQ;MACf,GAAG,EAAE,MAAM;MACX,mBAAmB,EAAE,6CAA6C;MAClE,OAAO,EAAE,oBAAoB;MAC7B,SAAS,EAAE,qBAAqB;MAChC,WAAW,EAAE,kBAAkB;MAC/B,WAAW,EAAE,uBAAuB;MACpC,YAAY,EAAE,iBAAiB;MAC/B,QAAQ,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,SAAS;MAC1C,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,aAAa,KAAK,YAAY;MAC5D,uBAAuB,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,qCAAqC;MACrF,iBAAiB,EAAE,CAAC;QAAE,KAAK;QAAE,KAAK;QAAE;MAAI,CAAC,KAAK,GAAG,KAAK,KAAK,KAAK,QAAQ,GAAG,EAAE;MAC7E,KAAK,EAAE,OAAO;MACd,GAAG,EAAE,KAAK;MACV,IAAI,EAAE,OAAO;MACb,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,OAAO;MACd,IAAI,EAAE,MAAM;MACZ,MAAM,EAAE,WAAW;MACnB,QAAQ,EAAE,eAAe;MACzB,QAAQ,EAAE,QAAQ;MAClB,IAAI,EAAE,QAAQ;MACd,SAAS,EAAE,oBAAoB;MAC/B,WAAW,EAAE,oBAAoB;MACjC,MAAM,EAAE,WAAW;MACnB,IAAI,EAAE,MAAM;MACZ,WAAW,EAAE,kBAAkB;MAC/B,WAAW,EAAE,mBAAmB;MAChC,IAAI,EAAE,MAAM;MACZ,SAAS,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,YAAY,KAAK,EAAE;MAC7C,MAAM,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,UAAU,MAAM,EAAE;MAC1C,QAAQ,EAAE,SAAS;MACnB,iBAAiB,EAAE,8BAA8B;MACjD,YAAY,EAAE,cAAc;MAC5B,YAAY,EAAE,wBAAwB;MACtC,gBAAgB,EAAE,cAAc;MAChC,qBAAqB,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,iBAAiB,KAAK,MAAM;MAClE,YAAY,EAAE,CAAC;QAAE;MAAM,CAAC,KAAM,KAAK,KAAK,CAAC,GAAG,iBAAiB,GAAG,GAAG,KAAK,gBAAiB;MACzF,aAAa,EAAE,KAAK;MACpB,WAAW,EAAE,UAAU;MACvB,cAAc,EAAE,gBAAgB;MAChC,YAAY,EAAE,eAAe;MAC7B,eAAe,EAAE,eAAe;MAChC,eAAe,EAAE,kBAAkB;MACnC,cAAc,EAAE,aAAa;MAC7B,gBAAgB,EAAE,gBAAgB;MAClC,aAAa,EAAE,YAAY;MAC3B,cAAc,EAAE,gCAAgC;MAChD,YAAY,EAAE,OAAO;MACrB,sBAAsB,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,UAAU;MACzD,gBAAgB,EAAE,YAAY;MAC9B,eAAe,EAAE,CAAC;QAAE,KAAK;QAAE,KAAK;QAAE,KAAK;QAAE;MAAI,CAAC,KAC5C,GAAG,KAAK,IAAI,GAAG,IAAI,KAAK,KAAK,CAAC,GAAG,gBAAgB,GAAG,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,GAAG,UAAU,GAAG,YAAY,GAAG,GAAG,GAAG,yBAAyB,GAAG,EAAE,EAAE,GAAG,KAAK,GAAG,KAAK,KAAK,EAAE,GAAG,EAAE,EAAE;MAChL,kBAAkB,EAAE,qBAAqB;MACzC,cAAc,EAAE,CAAC;QAAE;MAAM,CAAC,KAAM,KAAK,KAAK,CAAC,GAAG,WAAW,GAAG,GAAG,KAAK,YAAa;MACjF,gBAAgB,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,kBAAkB,IAAI,EAAE;MACxD,WAAW,EAAE,SAAS;MACtB,oBAAoB,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,kBAAkB,KAAK,EAAE;MAC9D,UAAU,EAAE,aAAa;MACzB,KAAK,EAAE,SAAS;MAChB,mBAAmB,EAAE,wCAAwC;MAC7D,MAAM,EAAE,QAAQ;MAChB,WAAW,EAAE,aAAa;MAC1B,QAAQ,EAAE,uFAAuF;MACjG,WAAW,EAAE,oBAAoB;MACjC,cAAc,EAAE,sBAAsB;MACtC,kBAAkB,EAAE,sDAAsD;MAC1E,cAAc,EAAE,yBAAyB;MACzC,eAAe,EAAE,sCAAsC;MACvD,eAAe,EAAE,mCAAmC;MACpD,WAAW,EAAE,yBAAyB;MACtC,cAAc,EAAE,mBAAmB;MACnC,OAAO,EAAE,YAAY;MACrB,WAAW,EAAE,uBAAuB;MACpC,SAAS,EAAE,cAAc;MACzB,aAAa,EAAE,yBAAyB;MACxC,WAAW,EAAE,eAAe;MAC5B,UAAU,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,gBAAgB,IAAI,EAAE;MAChD,SAAS,EAAE,mBAAmB;MAC9B,gBAAgB,EAAE,oCAAoC;MACtD,qBAAqB,EAAE,uCAAuC;MAC9D,cAAc,EAAE,wBAAwB;MACxC,eAAe,EAAE,uBAAuB;MACxC,WAAW,EAAE,gBAAgB;MAC7B,WAAW,EAAE,oBAAoB;MACjC,aAAa,EAAE,mBAAmB;MAClC,UAAU,EAAE,iBAAiB;MAC7B,UAAU,EAAE,0BAA0B;MACtC,WAAW,EAAE,mBAAmB;MAChC,WAAW,EAAE,iBAAiB;MAC9B,WAAW,EAAE,cAAc;MAC3B,mBAAmB,EAAE,2BAA2B;MAChD,YAAY,EAAE,2BAA2B;MACzC,eAAe,EAAE,4BAA4B;MAC7C,MAAM,EAAE,gBAAgB;MACxB,UAAU,EAAE,gBAAgB;MAC5B,iBAAiB,EAAE,0BAA0B;MAC7C,oBAAoB,EAAE,mCAAmC;MACzD,yBAAyB,EAAE,iDAAiD;MAC5E,2BAA2B,EAAE,iDAAiD;MAC9E,mBAAmB,EAAE,wCAAwC;MAC7D,OAAO,EAAE,WAAW;MACpB,cAAc,EAAE,qBAAqB;MACrC,eAAe,EAAE,qBAAqB;MACtC,YAAY,EAAE,oBAAoB;MAClC,YAAY,EAAE,aAAa;MAC3B,aAAa,EAAE,CAAC;QAAE;MAA2B,CAAC,KAAK,OAAO,MAAM,sBAAsB;MACtF,OAAO,EAAE,YAAY;MACrB,MAAM,EAAE,QAAQ;MAChB,OAAO,EAAE,WAAW;MACpB,KAAK,EAAE,QAAQ;MACf,IAAI,EAAE,UAAU;MAChB,aAAa,EAAE,gBAAgB;MAC/B,IAAI,EAAE,aAAa;MACnB,mBAAmB,EAAE,4BAA4B;MACjD,aAAa,EAAE,oBAAoB;MACnC,oBAAoB,EAAE,6BAA6B;MACnD,gBAAgB,EACd,yJAAyJ;MAC3J,WAAW,EAAE,CAAC;QAAE;MAAqB,CAAC,KAAK;QACzC,MAAM,MAA8B,GAAG;UACrC,CAAC,EAAE,GAAG;UACN,CAAC,EAAE,GAAG;UACN,KAAK,EAAE,MAAM;UACb,OAAO,EAAE,QAAQ;UACjB,KAAK,EAAE,QAAQ;UACf,IAAI,EAAE,KAAK;UACX,EAAE,EAAE,KAAK;UACT,cAAc,EAAE,sBAAsB;UACtC,KAAK,EAAE,QAAQ;UACf,EAAE,EAAE,iBAAiB;UACrB,EAAE,EAAE,QAAQ;UACZ,EAAE,EAAE,gBAAgB;UACpB,UAAU,EAAE,iBAAiB;UAC7B,WAAW,EAAE,gBAAgB;UAC7B,GAAG,EAAE,SAAS;UACd,GAAG,EAAE,SAAS;UACd,SAAS,EAAE,eAAe;UAC1B,KAAK,EAAE,UAAU;UACjB,QAAQ,EAAE,aAAa;UACvB,SAAS,EAAE,YAAY;UACvB,IAAI,EAAE,OAAO;UACb,KAAK,EAAE,SAAS;UAChB,QAAQ,EAAE,OAAO;UACjB,MAAM,EAAE,SAAS;UACjB,IAAI,EAAE,UAAU;UAChB,QAAQ,EAAE,iBAAiB;UAC3B,OAAO,EAAE,kBAAkB;UAC3B,IAAI,EAAE,UAAU;UAChB,QAAQ,EAAE,iBAAiB;UAC3B,OAAO,EAAE;QACX,CAAC;QACD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG;MAC3B,CAAC;MACD,cAAc,EAAE,mBAAmB;MACnC,mBAAmB,EAAE,uBAAuB;MAC5C,EAAE,EAAE,IAAI;MACR,OAAO,EAAE,QAAQ;MACjB,KAAK,EAAE,QAAQ;MACf,KAAK,EAAE,SAAS;MAChB,MAAM,EAAE,SAAS;MACjB,SAAS,EAAE,iBAAiB;MAC5B,SAAS,EAAE,aAAa;MACxB,aAAa,EAAE,oBAAoB;MACnC,OAAO,EAAE,WAAW;MACpB,MAAM,EAAE,QAAQ;MAChB,IAAI,EAAE,UAAU;MAChB,IAAI,EAAE,UAAU;MAChB,QAAQ,EAAE,iBAAiB;MAC3B,cAAc,EAAE,uBAAuB;MACvC,MAAM,EAAE,YAAY;MACpB,OAAO,EAAE,QAAQ;MACjB,yBAAyB,EAAE,wDAAwD;MACnF,eAAe,EAAE,kBAAkB;MACnC,kBAAkB,EAAE,6BAA6B;MACjD,iBAAiB,EAAE,0BAA0B;MAC7C,uBAAuB,EAAE,gCAAgC;MACzD,iCAAiC,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,sDAAsD,MAAM,QAAQ;MACvH,UAAU,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,kBAAkB;MACrD,iBAAiB,EAAE,CAAC;QAAE,KAAK;QAAE;MAAQ,CAAC,KAAK,GAAG,KAAK,qBAAqB,OAAO,uBAAuB;MACtG,QAAQ,EAAE,YAAY;MACtB,MAAM,EAAE,WAAW;MACnB,aAAa,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,yBAAyB;MAC/D,WAAW,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,wBAAwB;MAC5D,SAAS,EAAE,cAAc;MACzB,UAAU,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,MAAM,IAAI,aAAa;MACjD,iBAAiB,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,OAAO,IAAI,WAAW;MACvD,WAAW,EAAE,kBAAkB;MAC/B,WAAW,EAAE,CAAC;QAAE,IAAI;QAAE;MAAK,CAAC,KAC1B,GAAG,IAAI,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI,KAAK,OAAO,GAAG,QAAQ,GAAG,IAAI,KAAK,KAAK,GAAG,UAAU,GAAG,WAAW,QAAQ,IAAI,aAAa;MACjI,qBAAqB,EAAE,sCAAsC;MAC7D,mBAAmB,EAAE,2BAA2B;MAChD,OAAO,EAAE,UAAU;MACnB,IAAI,EAAE,MAAM;MACZ,KAAK,EAAE,OAAO;MACd,kBAAkB,EAAE,0CAA0C;MAC9D,eAAe,EAAE,oCAAoC;MACrD,eAAe,EAAE,8BAA8B;MAC/C,SAAS,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,qBAAqB,IAAI,GAAG;MACrD,WAAW,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,kBAAkB,IAAI,GAAG;MACpD,OAAO,EAAE,eAAe;MACxB,YAAY,EAAE,6BAA6B;MAC3C,SAAS,EAAE,gBAAgB;MAC3B,WAAW,EAAE,iBAAiB;MAC9B,QAAQ,EAAE,eAAe;MACzB,aAAa,EAAE,gBAAgB;MAC/B,UAAU,EAAE,cAAc;MAC1B,mBAAmB,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,6BAA6B,MAAM,iBAAiB;MACzF,oBAAoB,EAAE,kFAAkF;MACxG,mBAAmB,EAAE,6BAA6B;MAClD,QAAQ,EAAE,qBAAqB;MAC/B,WAAW,EAAE,kBAAkB;MAC/B,OAAO,EAAE,UAAU;MACnB,UAAU,EAAE,cAAc;MAC1B,gBAAgB,EAAE,yDAAyD;MAC3E,YAAY,EAAE,qBAAqB;MACnC,QAAQ,EAAE,iBAAiB;MAC3B,OAAO,EAAE,eAAe;MACxB,QAAQ,EAAE,gBAAgB;MAC1B,YAAY,EAAE,yCAAyC;MACvD,YAAY,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,GAAG,IAAI,sBAAsB;MACzD,UAAU,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,GAAG,IAAI,YAAY;MAC7C,SAAS,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,WAAW,KAAK,WAAW;MACrD,QAAQ,EAAE,CAAC;QAAE,KAAK;QAAE;MAAM,CAAC,KAAK,cAAc,KAAK,QAAQ,KAAK,EAAE;MAClE,YAAY,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,KAAK,CAAC,GAAG,QAAQ,GAAG,UAAU,aAAa;MACjG,WAAW,EAAE,CAAC;QAAE;MAAK,CAAC,KAAK,GAAG,IAAI,YAAY;MAC9C,UAAU,EAAE,CAAC;QAAE;MAAO,CAAC,KAAK,8BAA8B,MAAM,YAAY;MAC5E,KAAK,EAAE,UAAU;MACjB,WAAW,EAAE,oBAAoB;MACjC,YAAY,EAAE,4BAA4B;MAC1C,iBAAiB,EAAE,gCAAgC;MACnD,kBAAkB,EAAE,iCAAiC;MACrD,WAAW,EAAE,sBAAsB;MACnC,MAAM,EAAE,kBAAkB;MAC1B,WAAW,EAAE,kBAAkB;MAC/B,iBAAiB,EAAE,uBAAuB;MAC1C,aAAa,EAAE,iBAAiB;MAChC,YAAY,EAAE,iBAAiB;MAC/B,QAAQ,EAAE,eAAe;MACzB,OAAO,EAAE,eAAe;MACxB,kBAAkB,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,kBAAkB,KAAK,KAAK,CAAC,GAAG,UAAU,GAAG,YAAY,EAAE;MAC9F,gBAAgB,EAAE,kCAAkC;MACpD,UAAU,EAAE,CAAC;QAAE;MAAM,CAAC,KAAK,WAAW,KAAK,4EAA4E;MACvH,YAAY,EAAE,iFAAiF;MAC/F,MAAM,EAAE,SAAS;MACjB,MAAM,EAAE,YAAY;MACpB,OAAO,EAAE,aAAa;MACtB,SAAS,EAAE,mBAAmB;MAC9B,cAAc,EAAE,oBAAoB;MACpC,WAAW,EAAE,2GAA2G;MACxH,UAAU,EAAE,YAAY;MACxB,YAAY,EAAE,mBAAmB;MACjC,kBAAkB,EAAE,kCAAkC;MACtD,gBAAgB,EAAE,qCAAqC;MACvD,gBAAgB,EAAE,qCAAqC;MACvD,gBAAgB,EAAE,qCAAqC;MACvD,kBAAkB,EAAE,0BAA0B;MAC9C,cAAc,EAAE,qBAAqB;MACrC,YAAY,EAAE,mBAAmB;MACjC,kBAAkB,EAAE,uBAAuB;MAC3C,oBAAoB,EAAE,yCAAyC;MAC/D,KAAK,EAAE,OAAO;MACd,WAAW,EAAE,yBAAyB;MACtC,WAAW,EAAE,kBAAkB;MAC/B,YAAY,EAAE,cAAc;MAC5B,mBAAmB,EAAE,wBAAwB;MAC7C,QAAQ,EAAE,OAAO;MACjB,YAAY,EAAE,WAAW;MACzB,MAAM,EAAE,WAAW;MACnB,OAAO,EAAE,aAAa;MACtB,MAAM,EAAE,SAAS;MACjB,kBAAkB,EAAE,gDAAgD;MACpE,IAAI,EAAE,YAAY;MAClB,SAAS,EAAE,aAAa;MACxB,cAAc,EAAE,mCAAmC;MACnD,eAAe,EAAE,wDAAwD;MACzE,gBAAgB,EAAG,CAAS,IAAK,KAAK,CAAC,iBAAiB;MACxD,qBAAqB,EAAE,mFAAmF;MAC1G,UAAU,EAAE,YAAY;MACxB,gBAAgB,EAAE,iDAAiD;MACnE,gBAAgB,EAAE,iDAAiD;MACnE,GAAG,EAAE,IAAI;MACT,UAAU,EAAE,kBAAkB;MAC9B,aAAa,EAAE,CAAC;QAAE;MAAQ,CAAC,KAAK,qBAAqB,OAAO,+DAA+D;MAC3H,gBAAgB,EAAE,8DAA8D;MAChF,aAAa,EAAE,uDAAuD;MACtE,gBAAgB,EAAE,eAAe;MACjC,sBAAsB,EAAE,mEAAmE;MAC3F,iBAAiB,EAAE,qBAAqB;MACxC,uBAAuB,EAAE,6DAA6D;MACtF,iBAAiB,EAAE,uBAAuB;MAC1C,uBAAuB,EAAE,mFAAmF;MAC5G,6BAA6B,EAAE,sGAAsG;MACrI,qBAAqB,EACnB,+GAA+G;MACjH,iBAAiB,EAAE,oBAAoB;MACvC,uBAAuB,EAAE,iEAAiE;MAC1F,cAAc,EAAE,qBAAqB;MACrC,oBAAoB,EAAE,kGAAkG;MACxH,kBAAkB,EAAE,qBAAqB;MACzC,wBAAwB,EAAE,wCAAwC;MAClE,oBAAoB,EAAE,sGAAsG;MAC5H,oBAAoB,EAAE,gGAAgG;MACtH,kBAAkB,EAChB,gIAAgI;MAClI,sBAAsB,EAAE,6BAA6B;MACrD,uBAAuB,EAAE,CAAC;QAAE;MAAQ,CAAC,KACnC,sDAAsD,OAAO,2IAA2I;MAC1M,iBAAiB,EAAE,qCAAqC;MACxD,kBAAkB,EAAE,CAAC;QAAE;MAAQ,CAAC,KAC9B,sDAAsD,OAAO,kJAAkJ;MACjN,wBAAwB,EAAE,sBAAsB;MAChD,yBAAyB,EACvB,sHAAsH;MACxH,0BAA0B,EAAE,sBAAsB;MAClD,2BAA2B,EACzB,4IAA4I;MAC9I,mBAAmB,EAAE,yBAAyB;MAC9C,oBAAoB,EAAE,CAAC;QAAE;MAAQ,CAAC,KAChC,2MAA2M,OAAO,gCAAgC,OAAO,4FAA4F;MACvV,iBAAiB,EAAE,kBAAkB;MACrC,eAAe,EAAE,eAAe;MAChC,iBAAiB,EAAE,cAAc;MACjC,iBAAiB,EAAE,sEAAsE;MACzF,eAAe,EAAE,2CAA2C;MAC5D,gBAAgB,EAAE,wBAAwB;MAC1C,oBAAoB,EAAE,sCAAsC;MAC5D,eAAe,EAAE;IACnB;EACF;AACF,CAAC,CAAC;AAIF;AACA,OAAO,MAAM,aAAa,GAAG,MAA0B;EACrD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;EAC1B,OAAO,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;;AAED;AACA,OAAO,MAAM,iBAAiB,GAAI,MAAe,IAC/C,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,OAAO,QAAQ,KAAK,WAAW,GAAG,UAAU,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7H,OAAO,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC","ignoreList":[]}
@@ -15,6 +15,19 @@ const initialsFor = name => {
15
15
  if (parts.length === 1) return parts[0]?.slice(0, 2).toUpperCase() ?? "?";
16
16
  return `${parts[0]?.[0] ?? ""}${parts.at(-1)?.[0] ?? ""}`.toUpperCase();
17
17
  };
18
+
19
+ /** Tints behind initials, as many as `.k2b-avatar[data-tint]` rules in the stylesheet. */
20
+ const TINTS = 10;
21
+
22
+ /**
23
+ * The tint behind initials and icons, from the name, so the same name has one color wherever an avatar shows it. The
24
+ * hash is the one of `@k2b/stdlib`'s generated avatar.
25
+ */
26
+ const tintFor = name => {
27
+ let hash = 0;
28
+ for (let index = 0; index < name.length; index++) hash = hash * 31 + name.charCodeAt(index) >>> 0;
29
+ return hash % TINTS;
30
+ };
18
31
  export function Avatar(props) {
19
32
  const messages = useUiMessages();
20
33
  const [failed, setFailed] = createSignal(false);
@@ -32,7 +45,7 @@ export function Avatar(props) {
32
45
  return _$memo(() => !!!failed())() ? props.src || undefined : undefined;
33
46
  },
34
47
  get fallback() {
35
- return _$ssr(_tmpl$2, _$ssrAttribute("class", _$escape(className(), true), false) + _$ssrAttribute("data-size", _$escape(props.size ?? "md", true), false), _$ssrStyle(props.style), _$ssrAttribute("aria-label", _$escape(props.alt ?? messages().avatarLabel({
48
+ return _$ssr(_tmpl$2, _$ssrAttribute("class", _$escape(className(), true), false) + _$ssrAttribute("data-size", _$escape(props.size ?? "md", true), false) + _$ssrAttribute("data-tint", _$escape(tintFor(props.name.trim()), true), false), _$ssrStyle(props.style), _$ssrAttribute("aria-label", _$escape(props.alt ?? messages().avatarLabel({
36
49
  name: label()
37
50
  }), true), false), _$escape(fallbackContent()));
38
51
  },
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["surfaces/Avatar.tsx"],"sourcesContent":["import { createEffect, createSignal, type JSX, on, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type AvatarProps = {\n name: string;\n src?: string | null;\n icon?: string;\n alt?: string;\n fallback?: string;\n size?: AvatarSize;\n loading?: \"eager\" | \"lazy\";\n class?: string;\n style?: JSX.CSSProperties | string;\n};\n\nconst initialsFor = (name: string): string => {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n if (parts.length === 1) return parts[0]?.slice(0, 2).toUpperCase() ?? \"?\";\n return `${parts[0]?.[0] ?? \"\"}${parts.at(-1)?.[0] ?? \"\"}`.toUpperCase();\n};\n\nexport function Avatar(props: AvatarProps): JSX.Element {\n const messages = useUiMessages();\n const [failed, setFailed] = createSignal(false);\n const label = () => props.name.trim() || messages().unknownUser;\n // Derive initials from the given name, not from the accessible-name fallback:\n // an empty `name` must render \"?\" the way Cloud's avatar does, not \"UU\".\n const fallback = () => props.fallback ?? initialsFor(props.name);\n const fallbackContent = () => (props.icon ? <i class={props.icon} aria-hidden=\"true\" /> : fallback());\n const className = () => `k2b-avatar ${props.class ?? \"\"}`;\n\n createEffect(\n on(\n () => props.src,\n () => setFailed(false),\n { defer: true },\n ),\n );\n\n return (\n <Show\n when={!failed() ? props.src || undefined : undefined}\n fallback={\n <span\n class={className()}\n data-size={props.size ?? \"md\"}\n style={props.style}\n role=\"img\"\n aria-label={props.alt ?? messages().avatarLabel({ name: label() })}\n >\n {fallbackContent()}\n </span>\n }\n >\n {(src) => (\n <img\n src={src()}\n alt={props.alt ?? messages().avatarLabel({ name: label() })}\n class={className()}\n data-size={props.size ?? \"md\"}\n style={props.style}\n loading={props.loading ?? \"lazy\"}\n decoding=\"async\"\n onError={() => setFailed(true)}\n />\n )}\n </Show>\n );\n}\n"],"mappings":";;;;;;;;;AAAA,SAAS,YAAY,EAAE,YAAY,EAAY,EAAE,EAAE,IAAI,QAAQ,UAAU;AACzE,SAAS,aAAa,QAAQ,kBAAkB;AAgBhD,MAAM,WAAW,GAAI,IAAY,IAAa;EAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;EACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,GAAG;EAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG;EACzE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;AACzE,CAAC;AAED,OAAO,SAAS,MAAM,CAAC,KAAkB,EAAe;EACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC;EAChC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC;EAC/C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,WAAW;EAC/D;EACA;EACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;EAChE,MAAM,eAAe,GAAG,MAAO,KAAK,CAAC,IAAI,kDAAa,KAAK,CAAC,IAAI,mBAA0B,QAAQ,CAAC,CAAE;EACrG,MAAM,SAAS,GAAG,MAAM,cAAc,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;EAEzD,YAAY,CACV,EAAE,CACA,MAAM,KAAK,CAAC,GAAG,EACf,MAAM,SAAS,CAAC,KAAK,CAAC,EACtB;IAAE,KAAK,EAAE;EAAK,CAChB,CACF,CAAC;EAED,yBACG,IAAI;IAAA,IACH,IAAI;MAAA,OAAE,gBAAC,MAAM,CAAC,CAAC,MAAG,KAAK,CAAC,GAAG,IAAI,SAAS,GAAG,SAAS;IAAA;IAAA,IACpD,QAAQ;MAAA,uDAEG,SAAS,CAAC,CAAC,uDACP,KAAK,CAAC,IAAI,IAAI,IAAI,4BACtB,KAAK,CAAC,KAAK,yCAEN,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;MAAE,CAAC,CAAC,0BAEjE,eAAe,CAAC,CAAC;IAAA;IAAA,UAIpB,GAAG,kDAEI,GAAG,CAAC,CAAC,iDACL,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;MAAE,IAAI,EAAE,KAAK,CAAC;IAAE,CAAC,CAAC,mDACpD,SAAS,CAAC,CAAC,uDACP,KAAK,CAAC,IAAI,IAAI,IAAI,4BACtB,KAAK,CAAC,KAAK,sCACT,KAAK,CAAC,OAAO,IAAI,MAAM;EAInC;AAGP","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["surfaces/Avatar.tsx"],"sourcesContent":["import { createEffect, createSignal, type JSX, on, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type AvatarProps = {\n name: string;\n src?: string | null;\n icon?: string;\n alt?: string;\n fallback?: string;\n size?: AvatarSize;\n loading?: \"eager\" | \"lazy\";\n class?: string;\n style?: JSX.CSSProperties | string;\n};\n\nconst initialsFor = (name: string): string => {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n if (parts.length === 1) return parts[0]?.slice(0, 2).toUpperCase() ?? \"?\";\n return `${parts[0]?.[0] ?? \"\"}${parts.at(-1)?.[0] ?? \"\"}`.toUpperCase();\n};\n\n/** Tints behind initials, as many as `.k2b-avatar[data-tint]` rules in the stylesheet. */\nconst TINTS = 10;\n\n/**\n * The tint behind initials and icons, from the name, so the same name has one color wherever an avatar shows it. The\n * hash is the one of `@k2b/stdlib`'s generated avatar.\n */\nconst tintFor = (name: string): number => {\n let hash = 0;\n for (let index = 0; index < name.length; index++) hash = (hash * 31 + name.charCodeAt(index)) >>> 0;\n return hash % TINTS;\n};\n\nexport function Avatar(props: AvatarProps): JSX.Element {\n const messages = useUiMessages();\n const [failed, setFailed] = createSignal(false);\n const label = () => props.name.trim() || messages().unknownUser;\n // Derive initials from the given name, not from the accessible-name fallback:\n // an empty `name` must render \"?\" the way Cloud's avatar does, not \"UU\".\n const fallback = () => props.fallback ?? initialsFor(props.name);\n const fallbackContent = () => (props.icon ? <i class={props.icon} aria-hidden=\"true\" /> : fallback());\n const className = () => `k2b-avatar ${props.class ?? \"\"}`;\n\n createEffect(\n on(\n () => props.src,\n () => setFailed(false),\n { defer: true },\n ),\n );\n\n return (\n <Show\n when={!failed() ? props.src || undefined : undefined}\n fallback={\n <span\n class={className()}\n data-size={props.size ?? \"md\"}\n data-tint={tintFor(props.name.trim())}\n style={props.style}\n role=\"img\"\n aria-label={props.alt ?? messages().avatarLabel({ name: label() })}\n >\n {fallbackContent()}\n </span>\n }\n >\n {(src) => (\n <img\n src={src()}\n alt={props.alt ?? messages().avatarLabel({ name: label() })}\n class={className()}\n data-size={props.size ?? \"md\"}\n style={props.style}\n loading={props.loading ?? \"lazy\"}\n decoding=\"async\"\n onError={() => setFailed(true)}\n />\n )}\n </Show>\n );\n}\n"],"mappings":"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","ignoreList":[]}