diff --git a/docs/.npmrc b/docs/.npmrc deleted file mode 100644 index bac7fb07..00000000 --- a/docs/.npmrc +++ /dev/null @@ -1,2 +0,0 @@ -shamefully-hoist=true -ignore-workspace-root-check=true diff --git a/docs/content/1.setup/4.vue/0.installation.md b/docs/0.angular/1.installation.md similarity index 98% rename from docs/content/1.setup/4.vue/0.installation.md rename to docs/0.angular/1.installation.md index 9709c1a7..c6fbd7f0 100644 --- a/docs/content/1.setup/4.vue/0.installation.md +++ b/docs/0.angular/1.installation.md @@ -1,5 +1,5 @@ --- -title: Install Vue Unhead +title: Installing Unhead with Vue description: Learn how to start using Unhead with Vue. navigation: title: 'Installation' @@ -160,5 +160,6 @@ export default { Your Vue app is now setup for head management, congrats! ๐ŸŽ‰ Try next: + 1. Optional: [Setup SSR](/setup/ssr/installation) 2. Explore the [Composables](/usage/composables/use-head) diff --git a/docs/0.angular/3.troubleshooting.md b/docs/0.angular/3.troubleshooting.md new file mode 100644 index 00000000..d742f74f --- /dev/null +++ b/docs/0.angular/3.troubleshooting.md @@ -0,0 +1,12 @@ +--- +title: Troubleshooting +description: Learn how Unhead works under the hood. +--- + +Unhead manages the ``{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. + +The core package is framework-agnostic and should work in any setup. + +Framework packages are provided to improve the DX of using Unhead with the framework. + +Optional packages exist to add extra functionality and optimisations to Unhead. diff --git a/docs/content/1.setup/4.vue/4.how-it-works.md b/docs/0.angular/guides/0.reactivity.md similarity index 69% rename from docs/content/1.setup/4.vue/4.how-it-works.md rename to docs/0.angular/guides/0.reactivity.md index 31e5361d..05e5add9 100644 --- a/docs/content/1.setup/4.vue/4.how-it-works.md +++ b/docs/0.angular/guides/0.reactivity.md @@ -1,13 +1,14 @@ --- -title: How Vue Unhead Works -description: Learn how to use reactivity with Vue Unhead. -navigation: - title: How it works +title: Vue Reactivity +description: Master Vue and Unhead by following the best practices. --- +## How Reactivity Works + When using any of the provided composables, such as `useHead`, full reactivity is provided out of the box. All values are reactive and support: + - ref - computed getter - computed (not recommended) @@ -37,3 +38,27 @@ It's recommended to avoid using `computed`, as you will have simpler and more pe When using reactivity in SSR, only at the time of rendering the SSR tags will be refs be resolved. When using reactivity in CSR, any ref changes will trigger a request to update the DOM. + +## Avoid Watch and useHead + +Avoid wrapping `useHead` in a watcher. + +```ts +// bad +watch((title) => { + useHead({ + title, + }) +}) +``` + +This is because each call of `useHead` will add a new entry, which has its own side effects. + +Instead, use a computed getter. + +```ts +// good +useHead({ + title: () => title +}) +``` diff --git a/docs/content/1.setup/4.vue/1.components.md b/docs/0.angular/guides/1.components.md similarity index 63% rename from docs/content/1.setup/4.vue/1.components.md rename to docs/0.angular/guides/1.components.md index c861fdff..c9193082 100644 --- a/docs/content/1.setup/4.vue/1.components.md +++ b/docs/0.angular/guides/1.components.md @@ -1,16 +1,16 @@ --- -title: Components +title: Component description: Use the component to manage your head tags. navigation: - title: 'Components' + title: ' Component' --- -The Unhead Vue package exports a `` component that can be used to manage your head tags. +The Unhead Vue package exports a ``{lang="html"} component that can be used to manage your head tags. While it's recommended to use the `useHead` composable as it offers a more flexible API with full TypeScript support, -the `` component may make more sense for your project. +the ``{lang="html"} component may make more sense for your project. -The component will takes any child elements that you would normally put in your actual `` and renders them +The component will takes any child elements that you would normally put in your actual ``{lang="html"} and renders them with Unhead. ```vue @@ -24,3 +24,4 @@ import { Head } from '@unhead/vue/components' +``` diff --git a/docs/0.angular/guides/2.managing-context.md b/docs/0.angular/guides/2.managing-context.md new file mode 100644 index 00000000..5e5f67f7 --- /dev/null +++ b/docs/0.angular/guides/2.managing-context.md @@ -0,0 +1,243 @@ +--- +title: Understanding Async Context and useHead() +description: Manage head tags with useHead() in Vue across async operations, component lifecycles, and server-side rendering. +navigation: + title: 'Async Context' +--- + +## Introduction + +This injection pattern is fundamental to how Vue manages component state and dependencies in the Composition API. + +When we call `useHead()`{lang="ts"}, behind the scenes, it's calling the Vue [inject](https://vuejs.org/api/composition-api-dependency-injection.html#inject) function to get the Unhead instance +attached to the Vue instance. + +```ts +import { inject } from 'vue' + +function useHead(input) { + const head = inject(HEAD_KEY) + head.push(input) +} + +function injectHead() { + return inject(HEAD_KEY) +} +``` + +The `inject()`{lang="ts"} function keeps track of your Vue component instance, however, after async operations within lifecycle hooks or nested functions, Vue loses track of this context. + +```vue + +``` + +When trying to inject once Vue has lost the context, you'll receive an error from Unhead: + +> useHead() was called without provide context. + +We'll look at how we can prevent this error and ensure our head updates work correctly across async operations. + +## Use Top Level Await + +Vue's script setup handles async operations through [compile-time transforms](https://github.com/vuejs/rfcs/blob/master/active-rfcs/0040-script-setup.md#top-level-await) that preserve the component instance context. As explained in Anthony's [article on async composition](https://antfu.me/posts/async-with-composition-api), this makes most async operations work seamlessly. + +At the top level of script setup, context is automatically preserved: + +```vue + +``` + +This is the simplest and most effective way to handle async operations in Vue. + +## Using `effectScope()`{lang="ts"} + +The `effectScope()`{lang="ts"} API allows you to re-run a code block using the same component context, making it ideal for solving +the async context loss issue. + +```vue + +``` + +## Using `injectHead()`{lang="ts"} + +The `injectHead()` function lets us grab a reference to Unhead's instance before any async operations occur. + +Here's how to use it effectively: + +```vue + +``` + +The key idea is that `injectHead()`{lang="ts"} should be called at the top level of your component, before any async operations. This ensures you have a stable reference to use throughout your component's lifecycle. + +## Using Reactive State + +A more elegant way to handle async head updates is to combine reactive state with useHead. This approach lets you define your head configuration once and have it automatically update as your data changes: + +```vue + +``` + +### Pinia Store + +You can also use this pattern with more complex state management: + +```vue + +``` + +This reactive state pattern aligns well with Vue's composition API design and often results in cleaner, more maintainable code than manually updating the head after each async operation. + +## Async Context in Nuxt + +When using Nuxt, you don't need to worry about managing async context for head updates. This is because Nuxt attaches Unhead directly to the Nuxt application instance which is globally accessible regardless of the async operation. + +This decision allows you to use `useHead()`{lang="ts"} anywhere, including plugins, middleware and layouts without worrying about context. + +## Learn More + +The Vue team's solution for async context through script setup transforms is quite elegant. You can read more about the technical implementation in the [Script Setup RFC](https://github.com/vuejs/rfcs/blob/master/active-rfcs/0040-script-setup.md#top-level-await). For a deeper understanding of how async context evolved in Vue's Composition API, check out Anthony Fu's [detailed exploration](https://antfu.me/posts/async-with-composition-api) of the topic. diff --git a/docs/0.introduction.md b/docs/0.introduction.md new file mode 100644 index 00000000..e5e49354 --- /dev/null +++ b/docs/0.introduction.md @@ -0,0 +1,55 @@ +--- +title: "Unhead: Full Stack Head Manager" +description: Learn how Unhead can help you manage the head of your document in both server and client-rendered environments. +navigation: + title: Introduction +--- + +## What is head manager? + +Setting tags in your ``{lang="html"} is one of the fundamental tasks in web development. Whether it be setting a page title using ``{lang="html"} or +loading in a JavaScript framework using `<script>`{lang="html"} tags. + +While setting tags in a HTML document is dead simple, JavaScript frameworks have moved us well away from the days of pure HTML into +a world of fully dynamic client-side pages and server-side rendering. + +Modern JavaScript applications need to render code outside the app entry (typically `<div id="app"></div>`{lang="html"}) in both a +server-rendered and client-rendered environment. + +The role of the "head manager" is then to manage the tags in the `<head>`{lang="html"} and all tags outside the app entry. + +```html +<!DOCTYPE html> +<html> <!-- Unhead: htmlAttrs --> + <head> + <!-- Unhead: head --> + </head> + <body> <!-- Unhead: bodyAttrs --> + <!-- Unhead: bodyOpen --> + <div id="app"></div> <!-- Your app --> + <!-- Unhead: bodyClose --> + </body> +</html> +``` + +## Introducing Unhead + +Unhead was built as a universal head manager for JavaScript applications. Allowing frameworks such as Vue and Nuxt, +to offload the complex work of managing the head to a standalone library. + +While many frameworks themselves implement solutions for managing the above tags, it can be difficult to maintain for +the diverse ways tags can be inserted into the document. + +As Unhead is a dedicated library it can innovate on the head management developer experience, providing an ecosystem of plugins and integrations that can be used across all frameworks. + +## Innovating on Head Management + +- Lazy DOM Patching with tiny DOM diffing engine +- Fully typed API with MDN documentation +- Flat SEO meta tags with `useSeoMeta()`{lang="ts"} +- Schema.org support with `useSchemaOrg()`{lang="ts"} +- Script API with `useScript()`{lang="ts"} + +## Getting Started + +Ready to jump in? Check out the [installation guide](/getting-started/installation) to get started with Unhead. diff --git a/docs/0.nuxt/1.installation.md b/docs/0.nuxt/1.installation.md new file mode 100644 index 00000000..bcee31fc --- /dev/null +++ b/docs/0.nuxt/1.installation.md @@ -0,0 +1,14 @@ +--- +title: Installing Unhead with Nuxt +description: Learn how to start using Unhead with Nuxt. +navigation: + title: 'Installation' +--- + +## Introduction + +Unhead has first-class support for Nuxt. In fact much of the work gone into Unhead is a direct result of feedback from the Nuxt community. + +::tip +Nuxt is integrated out-of-the-box with Unhead so no installation is required. +:: diff --git a/docs/0.nuxt/3.troubleshooting.md b/docs/0.nuxt/3.troubleshooting.md new file mode 100644 index 00000000..d742f74f --- /dev/null +++ b/docs/0.nuxt/3.troubleshooting.md @@ -0,0 +1,12 @@ +--- +title: Troubleshooting +description: Learn how Unhead works under the hood. +--- + +Unhead manages the `<head>`{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. + +The core package is framework-agnostic and should work in any setup. + +Framework packages are provided to improve the DX of using Unhead with the framework. + +Optional packages exist to add extra functionality and optimisations to Unhead. diff --git a/docs/0.nuxt/guides/0.reactivity.md b/docs/0.nuxt/guides/0.reactivity.md new file mode 100644 index 00000000..05e5add9 --- /dev/null +++ b/docs/0.nuxt/guides/0.reactivity.md @@ -0,0 +1,64 @@ +--- +title: Vue Reactivity +description: Master Vue and Unhead by following the best practices. +--- + +## How Reactivity Works + +When using any of the provided composables, such as `useHead`, full reactivity is provided out of the box. + +All values are reactive and support: + +- ref +- computed getter +- computed (not recommended) + +```ts +const myPage = ref({ description: 'This is my page' }) +const title = ref('title') +const myScript = computed(() => ({ + src: 'https://example.com/script.js', + defer: true, +})) +useHead({ + // ref (recommended) + title, + // computed getter (recommended) + meta: [{ name: 'description', content: () => myPage.value.description },], + // computed (not recommended) + script: [computed(() => ({ + src: 'https://example.com/script.js', + defer: true, + }))], +}) +``` + +It's recommended to avoid using `computed`, as you will have simpler and more performant code. + +When using reactivity in SSR, only at the time of rendering the SSR tags will be refs be resolved. + +When using reactivity in CSR, any ref changes will trigger a request to update the DOM. + +## Avoid Watch and useHead + +Avoid wrapping `useHead` in a watcher. + +```ts +// bad +watch((title) => { + useHead({ + title, + }) +}) +``` + +This is because each call of `useHead` will add a new entry, which has its own side effects. + +Instead, use a computed getter. + +```ts +// good +useHead({ + title: () => title +}) +``` diff --git a/docs/0.nuxt/guides/1.components.md b/docs/0.nuxt/guides/1.components.md new file mode 100644 index 00000000..c9193082 --- /dev/null +++ b/docs/0.nuxt/guides/1.components.md @@ -0,0 +1,27 @@ +--- +title: <Head> Component +description: Use the <Head> component to manage your head tags. +navigation: + title: '<Head> Component' +--- + +The Unhead Vue package exports a `<Head>`{lang="html"} component that can be used to manage your head tags. + +While it's recommended to use the `useHead` composable as it offers a more flexible API with full TypeScript support, +the `<Head>`{lang="html"} component may make more sense for your project. + +The component will takes any child elements that you would normally put in your actual `<head>`{lang="html"} and renders them +with Unhead. + +```vue +<script lang="ts" setup> +import { Head } from '@unhead/vue/components' +</script> + +<template> + <Head> + <title>My awesome site + + + +``` diff --git a/docs/0.react/1.installation.md b/docs/0.react/1.installation.md new file mode 100644 index 00000000..c388bfbc --- /dev/null +++ b/docs/0.react/1.installation.md @@ -0,0 +1,165 @@ +--- +title: Installing Unhead with Nuxt +description: Learn how to start using Unhead with Nuxt. +navigation: + title: 'Installation' +--- + +## Introduction + +Unhead is the official head management library for Vue. It provides a simple and intuitive API for managing the head of your application, including the title, meta tags, and other elements that are important for SEO and user experience. + +## Setup + +1. Install `@unhead/vue` dependency to your project: + +::code-group + +```bash [yarn] +yarn add @unhead/vue +``` + +```bash [npm] +npm install @unhead/vue +``` + +```bash [pnpm] +pnpm add @unhead/vue +``` + +:: + +If you're using Vue 2, you will need to install v1 of `@unhead/vue` instead. + +::code-group + +```bash [yarn] +yarn add @unhead/vue@^1 +``` + +```bash [npm] +npm install @unhead/vue@^1 +``` + +```bash [pnpm] +pnpm add @unhead/vue@^1 +``` + +:: + +### Demos + +- [StackBlitz - Vite - Vue SPA](https://stackblitz.com/edit/vitejs-vite-uijgqa?file=package.json) + +2. Register the Vue plugin: + +```ts [Vue 3] +import { createHead } from '@unhead/vue' +import { createApp } from 'vue' + +const app = createApp() + +const head = createHead() +app.use(head) + +app.mount('#app') +``` + +```ts [Vue 2] +// You must use v1 of Unhead for Vue 2 support +import { createHead } from '@unhead/vue' +import { UnheadPlugin } from '@unhead/vue/vue2' +import Vue from 'vue' + +const head = createHead() +Vue.use(UnheadPlugin) +``` + +:: + +3. Done! Now you can use the `useHead` composable to manage your head. + +::code-group + +```vue [useHead] + +``` + +```vue [Options API] + +``` + +:: + +## Optional: Auto-Imports + +Unhead provides out-of-the-box configuration for [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import). + +```ts [vite.config.ts] +import { unheadVueComposablesImports } from '@unhead/vue' + +export default defineConfig({ + plugins: [ + AutoImport({ + imports: [ + unheadVueComposablesImports, + ], + }), + ] +}) +``` + +## Optional: Vue 3 Options API + +The options API functionality is only provided out-of-the-box for Vue 2, if you'd like to use in Vue 3 you will need to install the mixin. + +```ts +import { createHead, VueHeadMixin } from '@unhead/vue' +import { createApp } from 'vue' + +const app = createApp() +const head = createHead() +app.mixin(VueHeadMixin) +// ... +``` + +This key can either be a function or a plain object or reactive data. See [Reactivity](/setup/vue/how-it-works) for more details. + +```vue + + + +``` + +## Next Steps + +Your Vue app is now setup for head management, congrats! ๐ŸŽ‰ + +Try next: + +1. Optional: [Setup SSR](/setup/ssr/installation) +2. Explore the [Composables](/usage/composables/use-head) diff --git a/docs/0.react/3.troubleshooting.md b/docs/0.react/3.troubleshooting.md new file mode 100644 index 00000000..d742f74f --- /dev/null +++ b/docs/0.react/3.troubleshooting.md @@ -0,0 +1,12 @@ +--- +title: Troubleshooting +description: Learn how Unhead works under the hood. +--- + +Unhead manages the ``{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. + +The core package is framework-agnostic and should work in any setup. + +Framework packages are provided to improve the DX of using Unhead with the framework. + +Optional packages exist to add extra functionality and optimisations to Unhead. diff --git a/docs/0.react/guides/0.reactivity.md b/docs/0.react/guides/0.reactivity.md new file mode 100644 index 00000000..6216dd7d --- /dev/null +++ b/docs/0.react/guides/0.reactivity.md @@ -0,0 +1,92 @@ +--- +title: State Management +description: Learn how reactivity works with Unhead in React. +--- + +## How State Works + +Unhead integrates with React's state management out of the box. You can use both `useState` and `useMemo` with the `useHead` hook: + +```ts +import { useState, useMemo } from 'react' +import { useHead } from '@unhead/react' + +function MyComponent() { + const [pageData, setPageData] = useState({ + description: 'This is my page' + }) + const [title, setTitle] = useState('title') + + // Use memoization for complex objects + const scriptConfig = useMemo(() => ({ + src: 'https://example.com/script.js', + defer: true + }), []) + + useHead({ + // Direct state usage + title, + // Callback for dynamic values + meta: [{ + name: 'description', + content: () => pageData.description + }], + // Memoized complex objects + script: [scriptConfig] + }) + + return
My Page
+} +``` + +## Performance Tips + +1. Use `useMemo` for complex objects to prevent unnecessary re-renders +2. Prefer direct state references over callbacks when possible +3. Split large head configurations into smaller, focused pieces + +## Common Pitfalls + +### Don't Call useHead in Effects + +```ts +// Bad: Creates new entries on every effect run +useEffect(() => { + useHead({ + title + }) +}, [title]) + +// Good: Direct state reference +useHead({ + title +}) +``` + +### Don't Create New Objects Inline + +```ts +// Bad: New object on every render +useHead({ + script: [{ + src: 'https://example.com/script.js', + defer: true + }] +}) + +// Good: Memoized object +const scriptConfig = useMemo(() => ({ + src: 'https://example.com/script.js', + defer: true +}), []) + +useHead({ + script: [scriptConfig] +}) +``` + +## Learn More + +- [React Official Docs on State Management](https://react.dev/learn/managing-state) +- [Understanding React Re-renders](https://www.joshwcomeau.com/react/why-react-re-renders/) +- [Performance Optimization in React](https://legacy.reactjs.org/docs/optimizing-performance.html) diff --git a/docs/0.react/guides/1.components.md b/docs/0.react/guides/1.components.md new file mode 100644 index 00000000..c9193082 --- /dev/null +++ b/docs/0.react/guides/1.components.md @@ -0,0 +1,27 @@ +--- +title: Component +description: Use the component to manage your head tags. +navigation: + title: ' Component' +--- + +The Unhead Vue package exports a ``{lang="html"} component that can be used to manage your head tags. + +While it's recommended to use the `useHead` composable as it offers a more flexible API with full TypeScript support, +the ``{lang="html"} component may make more sense for your project. + +The component will takes any child elements that you would normally put in your actual ``{lang="html"} and renders them +with Unhead. + +```vue + + + +``` diff --git a/docs/0.react/guides/2.managing-context.md b/docs/0.react/guides/2.managing-context.md new file mode 100644 index 00000000..5b506452 --- /dev/null +++ b/docs/0.react/guides/2.managing-context.md @@ -0,0 +1,175 @@ +--- +title: Understanding Async Context and useHead() +description: Manage head tags with useHead() in React across async operations, component lifecycles, and server-side rendering. +navigation: + title: 'Async Context' +--- + +## Understanding React Context + +The `useHead()`{lang="Ts"} hook uses React's Context API under the hood to access the Unhead instance: + +```ts +import { useContext } from 'react' +import { UnheadContext } from '@unhead/react' + +function useHead(input) { + const head = useContext(UnheadContext) + head.push(input) +} +``` + +## Handling Async Updates + +Here are the key patterns for managing async head updates: + +### Using `useEffect()`{lang="ts"} + +The most basic way to handle async updates is with `useEffect`: + +```tsx +import { useEffect, useState } from 'react' +import { useHead } from '@unhead/react' + +function MyComponent() { + const [title, setTitle] = useState('Loading...') + + useEffect(() => { + async function loadData() { + const data = await fetchData() + setTitle(data.title) + } + loadData() + }, []) + + // Head automatically updates when title changes + useHead({ + title + }) + + return
{title}
+} +``` + +### Using State for Complex Head Data + +For more complex head configurations, manage your state with objects: + +```ts +import { useState, useEffect } from 'react' +import { useHead } from '@unhead/react' + +function PageHead() { + const [pageData, setPageData] = useState({ + title: 'Loading...', + description: '', + image: '/placeholder.jpg' + }) + + useHead({ + title: pageData.title, + meta: [ + { + name: 'description', + content: pageData.description + }, + { + property: 'og:image', + content: pageData.image + } + ] + }) + + useEffect(() => { + async function loadPage(id) { + const data = await fetchPage(id) + setPageData(data) + } + loadPage('home') + }, []) + + return null +} +``` + +### Using React Query + +For better async state management, consider using [React Query](https://tanstack.com/query/latest): + +```ts +import { useQuery } from '@tanstack/react-query' +import { useHead } from '@unhead/react' + +function PageHead({ id }) { + const { data = { title: 'Loading...', description: '' } } = useQuery({ + queryKey: ['page', id], + queryFn: () => fetchPage(id) + }) + + useHead({ + title: data.title, + meta: [ + { + name: 'description', + content: data.description + } + ] + }) + + return null +} +``` + +### Using Redux + +For global state management, you can combine useHead with Redux: + +```ts +import { useSelector } from 'react-redux' +import { useHead } from '@unhead/react' + +function PageHead() { + const { title, description } = useSelector(state => state.page) + + useHead({ + title, + meta: [ + { + name: 'description', + content: description + } + ] + }) + + return null +} +``` + +## Performance Tips + +1. Use `useMemo` for complex head configurations +2. Consider code-splitting head components for lazy loading +3. Debounce rapid head updates using `useCallback` + +## Next.js Integration + +When using Next.js, you get additional benefits for head management through the App Router: + +```ts +// app/layout.tsx +import { useHead } from '@unhead/react' + +export default function RootLayout() { + useHead({ + titleTemplate: '%s | My Site' + }) + + return ... +} +``` + +## Learn More + +- [React Query Data Management](https://tanstack.com/query/latest/docs/react/overview) +- [React Context Deep Dive](https://react.dev/learn/passing-data-deeply-with-context) +- [Next.js Metadata API](https://nextjs.org/docs/app/api-reference/functions/generate-metadata) diff --git a/docs/0.typescript/1.installation.md b/docs/0.typescript/1.installation.md new file mode 100644 index 00000000..5213d47c --- /dev/null +++ b/docs/0.typescript/1.installation.md @@ -0,0 +1,177 @@ +--- +title: 'Install Unhead on TypeScript Projects' +description: 'Get started with Unhead by installing the dependency to your project.' +navigation: + title: 'Installation' +--- + +## Introduction + +Unhead is built for JavaScript applications that need to manage the head of their document in both server and client-rendered environments. + +This guide is for installing Unhead with just TypeScript and no framework. Using a JavaScript framework? Select your framework below or continue with the TypeScript setup below. + +:FrameworkSelector + +Installation is split into two parts: + +- Client-side rendering (CSR) +- Server-side rendering (SSR) +- Composables + +## 1. Install Dependency + +:ModuleInstall{name="unhead"} + +## 2. Setup Client-Side Rendering + +Create a client Unhead instance somewhere in your apps client entry. + +```ts [main.ts] +import { createApp } from './app' +import { createHead } from 'unhead/client' + +// Create a global head instance +const app = createApp() +const head = createHead() +// attach unhead to your app lifecycle +app.use(head) +``` + +It's important you only create one head instance per app, you should tie the head instance to your app lifecycle in some way. + +## 3. Setup Server-Side Rendering (optional) + +::note +If you app does not SSR, you can skip this step. Unhead works fine as a CSR only library, however you won't get +the SEO benefits. +:: + +Somewhere in your server entry, create a server head instance. + +```ts [main.ts] +import { createHead } from 'unhead/server' + +// Create a global head instance +const head = createHead() +``` + +Once you're ready to start displaying tags on the server, you'll need to generate the SSR payload. + +```ts +import { renderSSRHead } from 'unhead/server' + +// head is from createHead() +const payload = await renderSSRHead(head) +``` + +The payload schema looks like the following: + +```ts +export interface SSRHeadPayload { + headTags: string + bodyTags: string + bodyTagsOpen: string + htmlAttrs: string + bodyAttrs: string +} +``` + +You will need to update your app template to add in the templates for +the SSR tags. + +Different frameworks differ in how they handle this template. + +**Simple string replace** + +```html + +> + + + + + > + +
+ + + + +``` + +To handle this type of template you can use this code + +```ts +const headPayload = await renderSSRHead(head) + +Object.entries(headPayload).forEach(([key, value]) => { + html = html.replace(``{lang="html"}, value) +}) +``` + +## 4. Setup Composables + +The core Unhead library does not provide any tools to manage the context. To make use of the `useHead()`{lang="ts"} composables +you're required to pass the context as the first argument. + +```ts +import { useHead } from 'unhead' + +const head = app.head +// โŒ using the built-in composables requires passing the head instance - not ideal +useHead(head, { + title: 'My Page', + meta: [ + { + name: 'description', + content: 'My page description', + }, + ], +}) +``` + +This isn't a great DX, to improve this it's recommended you wrap the composables in a function that sets the context. + +```ts +import { useHead as baseUseHead } from 'unhead' + +export function useHead(input) { + const { head } = useMyAppContext() + return baseUseHead(head, input) +} +``` + +::tip +Not sure how to setup the context? Check out [unctx](https://github.com/unjs/unctx) for a simple context management solution. +:: + +## 5. Done! How hydration works + +When your client-side app hydrates the server head tags, it will attempt to hydrate each +element based on the nodes being equal `$el.isEqualNode($newEl)` or them sharing the same +dedupe key (see [Tag Deduping](/usage/guides/handling-duplicates)). + +If you're rendering content that differs between client and server, you should +specify a `key` attribute if the element does not have a unique dedupe key. + +```ts +useHead({ + script: [ + { + // key is needed to avoid seperate scripts being created + key: 'my-script', + innerHTML: process.server ? '' : 'console.log("hello world")', + } + ] +}) +``` + +### Next Steps + +Your app is now setup for head management, congrats! ๐ŸŽ‰ + +Try next: + +1. Add some [recipes](/addons/recipes) +2. Consider using the [Vite plugin](/addons/vite-plugin) diff --git a/docs/0.typescript/3.troubleshooting.md b/docs/0.typescript/3.troubleshooting.md new file mode 100644 index 00000000..7e66e8dd --- /dev/null +++ b/docs/0.typescript/3.troubleshooting.md @@ -0,0 +1,20 @@ +--- +title: "Troubleshooting" +description: Create minimal reproductions for Unhead or just experiment with the package. +--- + +## StackBlitz Playgrounds + +You can use the Nuxt SEO StackBlitz playgrounds for either: + +- Playing around with the module in a sandbox environment +- Making reproductions for issues (Learn more about [Why Reproductions are Required](https://antfu.me/posts/why-reproductions-are-required)) + +- [Basic](https://stackblitz.com/edit/nuxt-starter-gfrej6?file=nuxt.config.ts) + +Have a question about Nuxt SEO? Check out the frequently asked questions below or +[Jump in the Discord](https://discord.com/invite/5jDAMswWwX) and ask me directly! + +## Discord + +If you have any questions or need help, feel free to ask in the [Discord](https://discord.com/invite/5jDAMswWwX) server. diff --git a/docs/0.vue/1.installation.md b/docs/0.vue/1.installation.md new file mode 100644 index 00000000..9f8fc1f0 --- /dev/null +++ b/docs/0.vue/1.installation.md @@ -0,0 +1,226 @@ +--- +title: Installing Unhead with Vue +description: Learn how to start using Unhead with Vue. +navigation: + title: 'Installation' +--- + +## Introduction + +Unhead has first-class support for Vue. In fact much of the code belongs to the original [@vueuse/head](https://github.com/vueuse/head) repo which was a Vue 3 version of [Vue Meta](https://github.com/nuxt/vue-meta). + +Vue Unhead works both for CSR and SSR, and it's designed to be framework-agnostic, so you can use it with any Vue setup. + +This guide assumes you're following a similar structure to the [vite-ssr-vue](https://github.com/bluwy/create-vite-extra/tree/master/template-ssr-vue) template +or a SPA Vue setup. + +::note +Using [Nuxt](https://nuxt.com/docs/getting-started/seo-meta)? Unhead is already integrated, and you can skip this guide. +:: + +### Demos + +- [StackBlitz - Vite - Vue SPA](https://stackblitz.com/edit/vitejs-vite-uijgqa?file=package.json) + +## Setup + +### 1. Add Dependency + +Install `@unhead/vue`{lang="bash"} dependency to your project: + +:ModuleInstall{name="@unhead/vue"} + +#### Using Vue 2 + +In Unhead v2, official support for Vue 2 has been dropped. If you're using Vue 2, you will need to install v1 of `@unhead/vue@^1`{lang="bash"} instead. + +:ModuleInstall{name="@unhead/vue@^1"} + +### 2. Setup Client-Side Rendering + +To begin with, we'll be adding the Unhead Vue Plugin to our Vue app, but _only_ for the client Vue app entry. + +Typically, this entry file is named `entry-client.js`{lang="js"}. If you're not server-side rendering, you can add this to your main Vue app entry instead. + +```ts [src/entry-client.js] +import { createHead } from '@unhead/vue/client' +import { createApp } from 'vue' + +const app = createApp() +// Create a new unhead instance and attach to your Vue app +const head = createHead() +app.use(head) + +app.mount('#app') +``` + +Make sure you're importing from `@unhead/vue/client`{lang="bash"}. + +### 3. Setup Server-Side Rendering + +::note +Serving your app as an SPA? You can skip this step. +:: + +Setting up server-side rendering is more complicated as it requires rendering out the tags to the HTML string before sending it to the client. + +We'll start with setting up the plugin in the _server_ entry this time. Make sure to import from `@unhead/vue/server`{lang="bash"} instead. + +```ts {1,8-10} [src/entry-server.ts] +import { createHead } from '@unhead/vue/server' +import { createApp } from './main' +import { renderToString } from 'vue/server-renderer' + +export async function render(_url: string) { + const { app } = createApp() + + const head = createHead() + app.use(head) + + const ctx = {} + const html = await renderToString(app, ctx) + + return { html } +} +``` + +Next we'll update our template `index.html`{lang="bash"} file. We'll be removing any head tags that should be dynamic +and replacing them with placeholders. + +```html {1,3,5,7} [./index.html] + + > + + + + + > + +
+ + + + +``` + +Now we need to render out the head tags _after_ vue has rendered the app and replace these +placeholders with the actual head tags. + +To start with we need to modify the `render` function to return the template data. + +```ts {1,14-15} [src/entry-server.ts] +import { createHead, renderSSRHead } from '@unhead/vue/server' +import { createApp } from './main' +import { renderToString } from 'vue/server-renderer' + +export async function render(_url: string) { + const { app } = createApp() + + const head = createHead() + app.use(head) + + const ctx = {} + const html = await renderToString(app, ctx) + + const templateData = await renderSSRHead(head) + return [html, templateData] +} +``` + +Within your `server.ts` file or wherever you're handling the template logic, you need to swap out your template +placeholders for the generated head tags. + +```ts {8-13} [server.ts] +export async function createServer( + root = process.cwd(), + isProd = process.env.NODE_ENV === 'production', + hmrPort, +) { + app.use('*', async (req, res) => { + // ... + const [appHtml, templateData] = await render(url, manifest) + // replace placeholders + let html = template.replace('', appHtml) + Object.entries(templateData).forEach(([key, value]) => { + html = html.replace(``{lang="html"}, value) + }) + // ... + }) + + return { app, vite } +} +``` + +### 4. Your First Tags + +Done! Your app should now be rendering head tags on the server and client. + +If you'd like to add any default tags to your app, doing so in your server entry means you won't add any weight +to your client bundle. + +```ts {2,9-12} [src/entry-server.ts] +import { createHead, renderSSRHead } from '@unhead/vue/server' +import { useSeoMeta } from '@unhead/vue' +import { createApp } from './main' +import { renderToString } from 'vue/server-renderer' + +export async function render(_url: string) { + // ... + const head = createHead() + useSeoMeta({ + title: 'My Awesome Site', + description: 'My awesome site description', + }, { head }) + app.use(head) + // ... +} +``` + +You'll notice we're passing the `head` instance here, this is because we're outside the Vue app context. + +For all other tags, simply use any of the composables within your script setup block. + +```vue + +``` + +### 5. Optional: Auto-Imports + +If you're using [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import), you can automatically import the composables. + +```ts [vite.config.ts] +import { unheadVueComposablesImports } from '@unhead/vue' + +export default defineConfig({ + plugins: [ + AutoImport({ + imports: [ + unheadVueComposablesImports, + ], + }), + ] +}) +``` + +## Next Steps + +Your Vue app is now setup for head management, congrats! ๐ŸŽ‰ + +You can get started with any of the composables: +- [`useHead()`{lang="ts"}](/docs/api/use-head) +- [`useSeoMeta()`{lang="ts"}](/docs/api/use-seo-meta) + +Or explore some of the optional extras: + +- Add support for the [Options API](/docs/vue/guides/options-api) +- Setup a [``{lang="html"} component](/docs/vue/guides/components) +- Add [`useSchemaOrg()`{lang="ts"}](/docs/api/use-schema-org) for structured data +- Use [`useScript()`{lang="ts"}](/docs/scripts/introduction) for performance optimized script loading diff --git a/docs/0.vue/3.troubleshooting.md b/docs/0.vue/3.troubleshooting.md new file mode 100644 index 00000000..d742f74f --- /dev/null +++ b/docs/0.vue/3.troubleshooting.md @@ -0,0 +1,12 @@ +--- +title: Troubleshooting +description: Learn how Unhead works under the hood. +--- + +Unhead manages the ``{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. + +The core package is framework-agnostic and should work in any setup. + +Framework packages are provided to improve the DX of using Unhead with the framework. + +Optional packages exist to add extra functionality and optimisations to Unhead. diff --git a/docs/0.vue/guides/0.reactivity.md b/docs/0.vue/guides/0.reactivity.md new file mode 100644 index 00000000..05e5add9 --- /dev/null +++ b/docs/0.vue/guides/0.reactivity.md @@ -0,0 +1,64 @@ +--- +title: Vue Reactivity +description: Master Vue and Unhead by following the best practices. +--- + +## How Reactivity Works + +When using any of the provided composables, such as `useHead`, full reactivity is provided out of the box. + +All values are reactive and support: + +- ref +- computed getter +- computed (not recommended) + +```ts +const myPage = ref({ description: 'This is my page' }) +const title = ref('title') +const myScript = computed(() => ({ + src: 'https://example.com/script.js', + defer: true, +})) +useHead({ + // ref (recommended) + title, + // computed getter (recommended) + meta: [{ name: 'description', content: () => myPage.value.description },], + // computed (not recommended) + script: [computed(() => ({ + src: 'https://example.com/script.js', + defer: true, + }))], +}) +``` + +It's recommended to avoid using `computed`, as you will have simpler and more performant code. + +When using reactivity in SSR, only at the time of rendering the SSR tags will be refs be resolved. + +When using reactivity in CSR, any ref changes will trigger a request to update the DOM. + +## Avoid Watch and useHead + +Avoid wrapping `useHead` in a watcher. + +```ts +// bad +watch((title) => { + useHead({ + title, + }) +}) +``` + +This is because each call of `useHead` will add a new entry, which has its own side effects. + +Instead, use a computed getter. + +```ts +// good +useHead({ + title: () => title +}) +``` diff --git a/docs/0.vue/guides/1.components.md b/docs/0.vue/guides/1.components.md new file mode 100644 index 00000000..c9193082 --- /dev/null +++ b/docs/0.vue/guides/1.components.md @@ -0,0 +1,27 @@ +--- +title: Component +description: Use the component to manage your head tags. +navigation: + title: ' Component' +--- + +The Unhead Vue package exports a ``{lang="html"} component that can be used to manage your head tags. + +While it's recommended to use the `useHead` composable as it offers a more flexible API with full TypeScript support, +the ``{lang="html"} component may make more sense for your project. + +The component will takes any child elements that you would normally put in your actual ``{lang="html"} and renders them +with Unhead. + +```vue + + + +``` diff --git a/docs/0.vue/guides/2.managing-context.md b/docs/0.vue/guides/2.managing-context.md new file mode 100644 index 00000000..5e5f67f7 --- /dev/null +++ b/docs/0.vue/guides/2.managing-context.md @@ -0,0 +1,243 @@ +--- +title: Understanding Async Context and useHead() +description: Manage head tags with useHead() in Vue across async operations, component lifecycles, and server-side rendering. +navigation: + title: 'Async Context' +--- + +## Introduction + +This injection pattern is fundamental to how Vue manages component state and dependencies in the Composition API. + +When we call `useHead()`{lang="ts"}, behind the scenes, it's calling the Vue [inject](https://vuejs.org/api/composition-api-dependency-injection.html#inject) function to get the Unhead instance +attached to the Vue instance. + +```ts +import { inject } from 'vue' + +function useHead(input) { + const head = inject(HEAD_KEY) + head.push(input) +} + +function injectHead() { + return inject(HEAD_KEY) +} +``` + +The `inject()`{lang="ts"} function keeps track of your Vue component instance, however, after async operations within lifecycle hooks or nested functions, Vue loses track of this context. + +```vue + +``` + +When trying to inject once Vue has lost the context, you'll receive an error from Unhead: + +> useHead() was called without provide context. + +We'll look at how we can prevent this error and ensure our head updates work correctly across async operations. + +## Use Top Level Await + +Vue's script setup handles async operations through [compile-time transforms](https://github.com/vuejs/rfcs/blob/master/active-rfcs/0040-script-setup.md#top-level-await) that preserve the component instance context. As explained in Anthony's [article on async composition](https://antfu.me/posts/async-with-composition-api), this makes most async operations work seamlessly. + +At the top level of script setup, context is automatically preserved: + +```vue + +``` + +This is the simplest and most effective way to handle async operations in Vue. + +## Using `effectScope()`{lang="ts"} + +The `effectScope()`{lang="ts"} API allows you to re-run a code block using the same component context, making it ideal for solving +the async context loss issue. + +```vue + +``` + +## Using `injectHead()`{lang="ts"} + +The `injectHead()` function lets us grab a reference to Unhead's instance before any async operations occur. + +Here's how to use it effectively: + +```vue + +``` + +The key idea is that `injectHead()`{lang="ts"} should be called at the top level of your component, before any async operations. This ensures you have a stable reference to use throughout your component's lifecycle. + +## Using Reactive State + +A more elegant way to handle async head updates is to combine reactive state with useHead. This approach lets you define your head configuration once and have it automatically update as your data changes: + +```vue + +``` + +### Pinia Store + +You can also use this pattern with more complex state management: + +```vue + +``` + +This reactive state pattern aligns well with Vue's composition API design and often results in cleaner, more maintainable code than manually updating the head after each async operation. + +## Async Context in Nuxt + +When using Nuxt, you don't need to worry about managing async context for head updates. This is because Nuxt attaches Unhead directly to the Nuxt application instance which is globally accessible regardless of the async operation. + +This decision allows you to use `useHead()`{lang="ts"} anywhere, including plugins, middleware and layouts without worrying about context. + +## Learn More + +The Vue team's solution for async context through script setup transforms is quite elegant. You can read more about the technical implementation in the [Script Setup RFC](https://github.com/vuejs/rfcs/blob/master/active-rfcs/0040-script-setup.md#top-level-await). For a deeper understanding of how async context evolved in Vue's Composition API, check out Anthony Fu's [detailed exploration](https://antfu.me/posts/async-with-composition-api) of the topic. diff --git a/docs/0.vue/guides/3.options-api.md b/docs/0.vue/guides/3.options-api.md new file mode 100644 index 00000000..ad5e817d --- /dev/null +++ b/docs/0.vue/guides/3.options-api.md @@ -0,0 +1,63 @@ +--- +title: Options API +description: Learn how to use the options API with Unhead. +--- + +## Introduction + +While Vue does not recommend usage of the Options API, it is a valid way to build Vue 3 applications. + +Vue Unhead provides opt-in functionality to the options API, allowing you to define the head of your page directly in the component options. + +## Setup + +Import the options API mixin from the `@unhead/vue`{lang="bash"} package and add it to any Vue app entry files. + +```ts {1,6} +import { createHead, VueHeadMixin } from '@unhead/vue' +import { createApp } from 'vue' + +const app = createApp() +const head = createHead() +app.mixin(VueHeadMixin) +``` + +If you're SSR make sure you update the client and server entry files. + +## Usage + +Pass your head data to the `head` property in your component options. + +```vue + +``` + +Any data provided follows the same [Vue Reactivity](/docs/vue/guides/reactivity) that `useHead()`{lang="ts"} provides. + +You can alternative provide a plain object to the `head` property. + +```vue + +``` + +Unhead will automatically handle mixin merging for you. diff --git a/docs/content/1.usage/2.guides/_dir.yml b/docs/1.guides/.navigation.yml similarity index 100% rename from docs/content/1.usage/2.guides/_dir.yml rename to docs/1.guides/.navigation.yml diff --git a/docs/1.guides/0.titles.md b/docs/1.guides/0.titles.md new file mode 100644 index 00000000..ccff0c27 --- /dev/null +++ b/docs/1.guides/0.titles.md @@ -0,0 +1,221 @@ +--- +title: Page Titles with Unhead +description: Learn how to master page titles in Vue & Nuxt using useHead, title templates, and SEO best practices. Includes reactive titles, social sharing, and template params. +navigation: + title: 'Page Titles' +publishedAt: 2024-10-24 +updatedAt: 2024-11-03 +readTime: 8 mins +--- + +## Introduction + +Page titles are crucial for SEO. They're your primary call-to-action in search results and help users understand your page's content and context. + +```html + + Mastering Titles ยท My App< + +``` + +While setting page titles with Unhead is straightforward, certain scenarios can be tricky. Let's start with the essential patterns you should follow. + +## Understanding the Title Tags + +The ``{lang="html"} tag displays text in browser tabs and typically appears as your page's heading in search engine results (SERPs). + +In Vue, you might be tempted to set titles directly: + +```ts +// โŒ Careful! This won't work in SSR +document.title = 'Home' +``` + +This approach has two major issues: + +It breaks during Server-Side Rendering (SSR) +Search engines may not properly index your titles + +Instead, use Vue's head manager [Unhead](https://unhead.unjs.io/) (already included in Nuxt). +New to SEO titles? Check out Google's guide on [Influencing your title links in search results](https://developers.google.com/search/docs/appearance/title-link). + +## Dynamic Page Titles with `useHead()`{lang="ts"} + +Now that we understand why direct title manipulation won't work, let's use Unhead's [`useHead()`{lang="ts"}](https://unhead.unjs.io/) composable to set titles properly: + +::code-group + +```ts twoslash [input.ts] +useHead({ + title: 'Home' +}) +``` + +```html [output.html] +<head> + <title>Home + +``` + +:: + +This single line creates an SSR-friendly title that search engines can read. The composable handles all the complexity of managing your document head in both client and server environments. + +You can use this in any component and set any ``{lang="html"} tag you like. + +```ts +useHead({ + title: 'Home', + meta: [ + { name: 'description', content: 'Welcome to MyApp' } + ] +}) +``` + +## Setting Up Title Templates + +You may notice that most people set up their titles with a site name and a separator, this is seen as a best practice as it +can help with brand recognition and SEO. + +```html + + Home | MySite + +``` + +Creating your own title like this is simple using `useHead()`{lang="ts"} with a [Title Template](https://unhead.unjs.io/usage/guides/title-template). + +::code-group + +```ts twoslash [input.vue] +useHead({ + title: 'Home', + titleTemplate: '%s %seperator MySite' +}) +``` + +```html [output.html] + + Home | MySite + +``` + +:: + +[Template params](https://unhead.unjs.io/usage/guides/template-params) like `%s` act as placeholders that get replaced with your page title and separator. + +### Template Params + +You may ask why we don't just use a function for the title template, and while this is supported, it can create issues with SSR and hydration. + +Instead, it's recommended to use the params. Out-of-the-box, Unhead provides: + +| Token | Description | +|-------|-------------------------------------------------| +| `%s` | The current page title. | +| `%seperator` | The separator, defaults to a pipe character \|. | + +The `%separator` token is smart - it only appears between content and automatically removes itself when the title is empty or when multiple separators would appear. + +Define custom template params to maintain consistent formatting: + +::code-group + +```ts twoslash [input.vue] +useHead({ + title: 'Home', + titleTemplate: '%s %seperator %siteName', + templateParams: { + seperator: 'โ€”', + siteName: 'MySite' + } +}) +``` + +```html [output.html] + + Home โ€” MySite + +``` + +:: + +I'd suggest choosing your own separator as the `'|'` is a bit ugly in my opinion, you can try: + +```ts +type Seperator = '-' | 'โ€”' | 'โ€ข' | 'ยท' | 'โค๏ธ' +``` + +You can use template params in other head tags too, such as meta descriptions and open graph tags. + +```ts +useHead({ + templateParams: { + siteName: 'MyApp' + }, + title: 'Home', + meta: [ + { name: 'description', content: 'Welcome to %siteName - where we make awesome happen' }, + { property: 'og:title', content: 'Home | %siteName' }, + { property: 'og:description', content: 'Check out %siteName today!' } + ] +}) +``` + +### Resetting the Title Template + +If you need to reset the title template for a specific page, you can pass `null` to the `titleTemplate` option. + +::code-group + +```vue [input.vue] + +``` + +```html [output.html] + + Home + +``` + +:: + +### Social Share Titles + +Social platforms use different meta tags for sharing titles. + +:FigureImage{src="/nuxt-x-share.png" alt="Nuxt X Share" lazy="true"} + +In the above we can see the title "Nuxt: The Intuitive Vue Framework". + +This title is set using the `twitter:title` meta tag and will fall back to the `og:title` meta tag if not set. + +Remembering how to use the meta tags can be annoying, so we can use the [`useSeoMeta()`{lang="ts"}](https://unhead.unjs.io/usage/composables/use-seo-meta) composable to set these up. + +::code-group + +```ts [input.vue] +useSeoMeta({ + titleTemplate: '%s %seperator Health Tips', + title: 'Why you should eat more broccoli', + // og title is not effected by titleTemplate, we can use template params here if we need + ogTitle: 'Hey! Health Tips %seperator 10 reasons to eat more broccoli.', + // explicit twitter title is only needed when we want to display something just for X + twitterTitle: 'Hey X! Health Tips %seperator 10 reasons to eat more broccoli.', +}) +``` + +```html [output.html] + + Why you should eat more broccoli | Health Tips + + + +``` + +:: diff --git a/docs/1.guides/2.positions.md b/docs/1.guides/2.positions.md new file mode 100644 index 00000000..f3731430 --- /dev/null +++ b/docs/1.guides/2.positions.md @@ -0,0 +1,181 @@ +--- +title: Tag Placement +description: How tags are position in the DOM and how to configure them. +--- + +## Introduction + +By default, tags are rendered in the document ``{lang="html"} in a [specific order](#default-sorting) for optimal performance and compatibility. + +However, this is not always useful, say if you need to render a script at the end of the document or have a specific +placement of a tag. + +To solve these two issues we have two options: + +- `tagPosition`: To control where the tag is rendered in the document (e.g. `head`, `bodyClose`, `bodyOpen`, etc) +- `tagPriority`: To control the order of tags within the document section + +## Document Placement + +For the `script`, `noscript` and `style` tags you may provide an optional `tagPosition` property with the possible values: + +- `head` - Render in the ``{lang="html"} (default) +- `bodyOpen` - Render at the start of the `` +- `bodyClose` - Render at the end of the `` + +::tab-comparison + +```ts [TypeScript] +import { useHead } from 'unhead' + +useHead({ + script: [ + { + src: '/my-lazy-script.js', + tagPosition: 'bodyClose', + }, + ], +}) +// renders +// ... +// +// +``` + +```ts [Vue] +import { useHead } from '@unhead/vue' + +useHead({ + script: [ + { + src: '/my-lazy-script.js', + tagPosition: 'bodyClose', + }, + ], +}) +// renders +// ... +// +// +``` + +```ts [Nuxt] +import { useHead } from '#imports' + +useHead({ + script: [ + { + src: '/my-lazy-script.js', + tagPosition: 'bodyClose', + }, + ], +}) +// renders +// ... +// +// +``` + +:: + +## Sort Order + +All tags are given a weight with the lower the number, the higher the priority. + +[Capo.js](https://rviscomi.github.io/capo.js/) weights are automatically applied to tags to avoid [Critical Request Chains](https://web.dev/critical-request-chains/). As +well as default weights to avoid site stability issues: + +- **-20** - `` +- **-10** - `` +- **0** - `` +- **10** - `` +- **20** - `<link rel="preconnect" ...>` + +All other tags have a default priority of 100: <meta>, <script>, <link>, <style>, etc + +Escaping out of these default weights can be accomplished by setting the `tagPriority` property. + +### Using `tagPriority` + +The `tagPriority` property can be set to an explicit weight, a string alias or a string to target a specific tag. + +#### Sorting with Aliases + +You can also make use of a string alias that adjusts the priority by a relative amount: + +- `critical` - **-80** +- `high` - **-10** +- `low` - **20** + +```ts +useHead({ + script: [ + { + src: '/my-lazy-script.js', + tagPriority: 'low', + }, + ], +}) +``` + +#### Sort by number + +When providing a number, refer to the priorities set for critical tags above. + +```ts +// some layout we have a js file that is ran +useHead({ + script: [ + { + src: '/not-important-script.js', + }, + ], +}) + +// but in our page we want to run a script before the above +useHead({ + script: [ + { + src: '/very-important-script.js', + tagPriority: 0, + }, + ], +}) + +// <script src=\"/very-important-script.js\"></script> +// <script src=\"/not-important-script.js\"></script> +``` + +#### Sort with `before:` and `after:` + +When providing a string, you can use `before:` or `after:` to target a tag key. + +Tag keys are prefixed with their tag name to avoid dedupe collisions, so you need to use the form of `{tagName}:{key}`. + +```ts +useHead({ + script: [ + { + key: 'not-important', + src: '/not-important-script.js', + }, + ], +}) +useHead({ + script: [ + { + // script is the tag name to target, `not-important` is the key we're targeting + tagPriority: 'before:script:not-important', + src: '/must-be-first-script.js', + }, + ], +}) +// <script src=\"/must-be-first-script.js\"></script> +// <script src=\"/not-important-script.js\"></script> +``` + +### Hydration Caveats + +When hydrating the state (e.g., SSR or page switch), Unhead replaces existing tags in their current position to avoid a flash of content. + +This may cause `tagPriority` to be ignored during hydration. diff --git a/docs/content/1.usage/2.guides/3.class-attr.md b/docs/1.guides/3.class-attr.md similarity index 93% rename from docs/content/1.usage/2.guides/3.class-attr.md rename to docs/1.guides/3.class-attr.md index 5bde1cb2..a055dc22 100644 --- a/docs/content/1.usage/2.guides/3.class-attr.md +++ b/docs/1.guides/3.class-attr.md @@ -1,9 +1,11 @@ --- title: Class & Style Attributes -description: Style your pages by applying classes and styles to your `<html>` and `<body>` tags. +description: Style your pages by applying classes and styles to your <html> and <body> tags. --- -When you need to style your page by adding classes or styles to the `<html>` or `<body>`, Unhead makes it easy by +## Introduction + +When you need to style your page by adding classes or styles to the `<html>`{lang="html"} or `<body>`{lang="html"}, Unhead makes it easy by providing object and array support for the `class` and `style` attributes. ## Static Classes & Styles @@ -29,6 +31,7 @@ useHead({ } }) ``` + :: Tip: If you're server-side rendering and applying diff --git a/docs/1.guides/4.inner-content.md b/docs/1.guides/4.inner-content.md new file mode 100644 index 00000000..da1f2730 --- /dev/null +++ b/docs/1.guides/4.inner-content.md @@ -0,0 +1,63 @@ +--- +title: Inline Style & Script Tags +description: How to add inner html to tags. +--- + +## Introduction + +The `<style>`{lang="html"}, `<script>`{lang="html"} and `<noscript>`{lang="html"} tags are unique in that +they can have inner content. + +## Inner Content + +When working with the inner content of a tag, you can set the inner content using the `textContent` or `innerHTML` properties. + +```ts +useHead({ + script: [ + { + innerHTML: 'window.analytics = window.analytics || []', + }, + ], + style: [ + { + textContent: 'body { background: salmon; color: cyan; }', + }, + ] +}) +``` + +### Safely using `innerHTML` + +Setting the inner content using `textContent` is the safest way if you are not sure about the content, however in some instances you will need to use `innerHTML`. + +::caution +When using `innerHTML` the content will not be sanitised. Make sure you sanitise user input if providing it with this property. +:: + +```ts +const someUserScript = await loadMyUserScript() +useHead({ + script: [ + { + // โŒ Eek! This is dangerous! + innerHTML: someUserScript + }, + ], +}) +``` + +## Shorthand Syntax + +For ease of use, you can provide a string as the array entry and Unhead will choose the correct property to set. + +```ts +useHead({ + script: [ + 'window.analytics = window.analytics || []', + ], + style: [ + 'body { background: salmon; color: cyan; }', + ] +}) +``` diff --git a/docs/content/1.usage/2.guides/6.handling-duplicates.md b/docs/1.guides/6.handling-duplicates.md similarity index 96% rename from docs/content/1.usage/2.guides/6.handling-duplicates.md rename to docs/1.guides/6.handling-duplicates.md index 8a4c77c5..50f39921 100644 --- a/docs/content/1.usage/2.guides/6.handling-duplicates.md +++ b/docs/1.guides/6.handling-duplicates.md @@ -1,23 +1,26 @@ --- -title: Tag Deduping +title: Handling Duplicates description: How duplicate tags are handled and how to extend them. --- +## Introduction + When implementing tags across an app hierachy, it's likely you'll want to override tags. This logic is called deduping. Unhead determines which tags are duplicated based on whether you are allowed to have multiple of them in the DOM. -For example, you can only have one `title`, and a single `<meta name="description">`. +For example, you can only have one `title`, and a single `<meta name="description">`{lang="html"}. ## Deduping Logic When you register multiple tags which are duplicated, only the most recent one will be used. There is different logic used to determine what tags are duplicates: + - Any of the following tags: `base`, `title`, `titleTemplate`, `bodyAttrs`, `htmlAttrs`. -- `<link rel="canonical">` -- `<meta charset="">` +- `<link rel="canonical">`{lang="html"} +- `<meta charset="">`{lang="html"} - Custom provided `key` attribute - Meta `content`, `property` and `http-equiv` attributes diff --git a/docs/content/1.usage/2.guides/6.template-params.md b/docs/1.guides/6.template-params.md similarity index 99% rename from docs/content/1.usage/2.guides/6.template-params.md rename to docs/1.guides/6.template-params.md index 4bef104f..ad4a0604 100644 --- a/docs/content/1.usage/2.guides/6.template-params.md +++ b/docs/1.guides/6.template-params.md @@ -3,9 +3,12 @@ title: Template Params description: Use template params to simplify your code. --- +## Introduction + Template parameters allow you to write runtime templates within your tags in a SSR-friendly and easy to use way. They are always prefixed with a `%` symbol and are case-sensitive. By default, they will work with the following tags: + - `title` - `titleTemplate` - `<meta content>` diff --git a/docs/content/1.usage/2.guides/7.client-only-tags.md b/docs/1.guides/7.client-only-tags.md similarity index 78% rename from docs/content/1.usage/2.guides/7.client-only-tags.md rename to docs/1.guides/7.client-only-tags.md index 8681f2f9..ba51c5e3 100644 --- a/docs/content/1.usage/2.guides/7.client-only-tags.md +++ b/docs/1.guides/7.client-only-tags.md @@ -3,7 +3,9 @@ title: Client Only Tags description: Learn how to use server only tags. --- -The second argument with any of the `useHead` composables, is an options object with a property called `mode`. +## Introduction + +The second argument with any of the `useHead()`{lang="ts"} composables, is an options object with a property called `mode`. This `mode` field can be used to indicate if the tag should be rendered on the client. diff --git a/docs/content/1.usage/2.guides/8.dom-event-handling.md b/docs/1.guides/8.dom-event-handling.md similarity index 97% rename from docs/content/1.usage/2.guides/8.dom-event-handling.md rename to docs/1.guides/8.dom-event-handling.md index dc0208f1..28ad5ebc 100644 --- a/docs/content/1.usage/2.guides/8.dom-event-handling.md +++ b/docs/1.guides/8.dom-event-handling.md @@ -3,6 +3,8 @@ title: DOM Events description: Learn how to use DOM event handling with Unhead. --- +## Introduction + DOM event handling is the ability to use raw DOM event listeners in your tags. This is useful for running logic when certain events happen. @@ -36,7 +38,7 @@ And that's it, Unhead will manage all side effects for you. ## HTTP Events -These are only supported for `<script>` and `<link>` tags. +These are only supported for `<script>`{lang="html"} and `<link>`{lang="html"} tags. ```ts export interface HttpEventAttributes { diff --git a/docs/content/3.plugins/recipes/0.critical-tags.md b/docs/3.recipes/0.critical-tags.md similarity index 100% rename from docs/content/3.plugins/recipes/0.critical-tags.md rename to docs/3.recipes/0.critical-tags.md diff --git a/docs/content/3.plugins/recipes/0.pausing-dom-rendering.md b/docs/3.recipes/0.pausing-dom-rendering.md similarity index 98% rename from docs/content/3.plugins/recipes/0.pausing-dom-rendering.md rename to docs/3.recipes/0.pausing-dom-rendering.md index cfdb24dc..c314303e 100644 --- a/docs/content/3.plugins/recipes/0.pausing-dom-rendering.md +++ b/docs/3.recipes/0.pausing-dom-rendering.md @@ -5,7 +5,7 @@ description: Learn how to pause DOM rendering with Unhead. Pausing the DOM rendering is useful for when you want to ensure your page is fully loaded before updating tags. -In Vue, this is especially useful when you're using `<Suspense>`. +In Vue, this is especially useful when you're using `<Suspense>`{lang="html"}. ::code-group diff --git a/docs/content/3.plugins/plugins/infer-seo-meta-tags.md b/docs/3.recipes/infer-seo-meta-tags.md similarity index 100% rename from docs/content/3.plugins/plugins/infer-seo-meta-tags.md rename to docs/3.recipes/infer-seo-meta-tags.md diff --git a/docs/content/3.plugins/plugins/4.vite-plugin.md b/docs/5.build-plugins/4.vite-plugin.md similarity index 97% rename from docs/content/3.plugins/plugins/4.vite-plugin.md rename to docs/5.build-plugins/4.vite-plugin.md index c3c7f58d..286b8bee 100644 --- a/docs/content/3.plugins/plugins/4.vite-plugin.md +++ b/docs/5.build-plugins/4.vite-plugin.md @@ -1,5 +1,5 @@ --- -title: Treeshaking +title: Treeshaking Plugin description: Remove composables from your client builds. --- @@ -9,6 +9,7 @@ your code. While optional, it's recommended for most use cases to ensure Unhead runs optimally. It will perform the following optimisations: + - Remove server composables in client builds (e.g. `useServerHead`, `useServerSeoMeta`) - Transform `useSeoMeta` to raw `useHead` (saves ~3kb) diff --git a/docs/content/1.usage/2.composables/_dir.yml b/docs/7.api/.navigation.yml similarity index 100% rename from docs/content/1.usage/2.composables/_dir.yml rename to docs/7.api/.navigation.yml diff --git a/docs/content/1.usage/2.composables/0.use-head.md b/docs/7.api/0.use-head.md similarity index 99% rename from docs/content/1.usage/2.composables/0.use-head.md rename to docs/7.api/0.use-head.md index 8bf399bc..ec592526 100644 --- a/docs/content/1.usage/2.composables/0.use-head.md +++ b/docs/7.api/0.use-head.md @@ -1,5 +1,5 @@ --- -title: useHead +title: useHead() description: How to use the useHead composable. --- diff --git a/docs/content/1.usage/2.composables/1.use-head-safe.md b/docs/7.api/1.use-head-safe.md similarity index 89% rename from docs/content/1.usage/2.composables/1.use-head-safe.md rename to docs/7.api/1.use-head-safe.md index 745502b8..2682acbd 100644 --- a/docs/content/1.usage/2.composables/1.use-head-safe.md +++ b/docs/7.api/1.use-head-safe.md @@ -1,5 +1,5 @@ --- -title: useHeadSafe +title: useHeadSafe() description: How to use the useHeadSafe composable. --- @@ -25,8 +25,8 @@ const WhitelistAttributes = { } ``` -- Style tags and attributes not supported `<link rel="stylesheet" ...>`, `<style>`, they are a vector for XSS attacks and clickjacking. -- Scripts of any sort are not allowed, except for JSON. `<script type="application/json">`, use `textContent: myObject`. +- Style tags and attributes not supported `<link rel="stylesheet" ...>`{lang="html"}, `<style>`{lang="html"}, they are a vector for XSS attacks and clickjacking. +- Scripts of any sort are not allowed, except for JSON. `<script type="application/json">`{lang="html"}, use `textContent: myObject`. - http-equiv is not allowed on meta. - `data-*` attributes are allowed. - Link tags will strip invalid href's (data:, javascript:) and do not support rels: `['stylesheet', 'canonical', 'modulepreload', 'prerender', 'preload', 'prefetch']`. diff --git a/docs/content/1.usage/2.composables/2.use-server-head.md b/docs/7.api/2.use-server-head.md similarity index 99% rename from docs/content/1.usage/2.composables/2.use-server-head.md rename to docs/7.api/2.use-server-head.md index 145866ed..1c7be18c 100644 --- a/docs/content/1.usage/2.composables/2.use-server-head.md +++ b/docs/7.api/2.use-server-head.md @@ -1,5 +1,5 @@ --- -title: useServerHead +title: useServerHead() description: Learn how to use server only tags. --- diff --git a/docs/content/1.usage/2.composables/3.use-seo-meta.md b/docs/7.api/3.use-seo-meta.md similarity index 98% rename from docs/content/1.usage/2.composables/3.use-seo-meta.md rename to docs/7.api/3.use-seo-meta.md index b0bbd697..ab3223c5 100644 --- a/docs/content/1.usage/2.composables/3.use-seo-meta.md +++ b/docs/7.api/3.use-seo-meta.md @@ -1,5 +1,5 @@ --- -title: useSeoMeta +title: useSeoMeta() description: The simplest way to add meta tags to your site. --- diff --git a/docs/app.config.ts b/docs/app.config.ts deleted file mode 100644 index dd1f370d..00000000 --- a/docs/app.config.ts +++ /dev/null @@ -1,16 +0,0 @@ -export default defineAppConfig({ - ui: { - primary: 'emerald', - gray: 'slate', - button: { - color: { - white: { - link: 'text-white dark:text-white hover:text-gray-300 dark:hover:text-gray-300 underline-offset-4 hover:underline focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-gray-500 dark:focus-visible:ring-gray-400 transition-all duration-200', - }, - transparent: { - outline: 'ring-1 ring-inset ring-gray-700 text-white dark:text-white hover:bg-gray-900 disabled:bg-gray-300 dark:hover:bg-gray-900 dark:disabled:bg-gray-300 focus-visible:ring-2 focus-visible:ring-gray-400 dark:focus-visible:ring-gray-400', - }, - }, - }, - }, -}) diff --git a/docs/app.vue b/docs/app.vue deleted file mode 100644 index 47237025..00000000 --- a/docs/app.vue +++ /dev/null @@ -1,37 +0,0 @@ -<script setup lang="ts"> -const { data: navigation } = await useAsyncData('navigation', () => fetchContentNavigation()) -provide('navigation', navigation) -</script> - -<template> - <div> - <Header /> - - <main> - <UContainer> - <NuxtPage /> - </UContainer> - </main> - - <ClientOnly> - <DocsSearch /> - </ClientOnly> - - <footer class="text-sm border-t border-gray-100 dark:border-gray-800 mt-10 text-gray-700 dark:text-gray-200 flex justify-center items-center py-5"> - <div class="mx-auto px-4 sm:px-6 lg:px-8 w-full max-w-7xl items-center flex justify-between"> - <NuxtLink to="https://unjs.pages.dev/" class="flex items-center "> - <img src="https://unjs.pages.dev/favicon.svg" loading="lazy" class="w-6 h-6 mr-2" alt="UnJS logo"> - UnJS ecosystem - </NuxtLink> - <div class="flex items-center"> - Created and maintained by - <UButton to="https://harlanzw.com" variant="ghost" :padded="false" class="ml-2"> - <UAvatar src="https://avatars.githubusercontent.com/u/5326365?v=4" size="xs" class="w-5 h-5" /> Harlan Wilton - </UButton> - </div> - </div> - </footer> - - <NuxtLoadingIndicator /> - </div> -</template> diff --git a/docs/app/router.options.ts b/docs/app/router.options.ts deleted file mode 100644 index 36a4061d..00000000 --- a/docs/app/router.options.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { RouterConfig } from '@nuxt/schema' - -function findHashPosition(hash): { el: any, behavior: ScrollBehavior, top: number } { - const el = document.querySelector(hash) - // vue-router does not incorporate scroll-margin-top on its own. - if (el) { - const top = Number.parseFloat(getComputedStyle(el).scrollMarginTop) - - return { - el: hash, - behavior: 'smooth', - top, - } - } -} - -// https://router.vuejs.org/api/#routeroptions -export default <RouterConfig>{ - scrollBehavior(to, from, savedPosition) { - const nuxtApp = useNuxtApp() - - // If history back - if (savedPosition) { - // Handle Suspense resolution - return new Promise((resolve) => { - nuxtApp.hooks.hookOnce('page:finish', () => { - setTimeout(() => resolve(savedPosition), 50) - }) - }) - } - - // Scroll to heading on click - if (to.hash) { - return new Promise((resolve) => { - if (to.path === from.path) { - setTimeout(() => resolve(findHashPosition(to.hash)), 50) - } - else { - nuxtApp.hooks.hookOnce('page:finish', () => { - setTimeout(() => resolve(findHashPosition(to.hash)), 50) - }) - } - }) - } - - // Scroll to top of window - return { top: 0 } - }, -} diff --git a/docs/components/Header.vue b/docs/components/Header.vue deleted file mode 100644 index cba713bd..00000000 --- a/docs/components/Header.vue +++ /dev/null @@ -1,32 +0,0 @@ -<script setup lang="ts"> -import { Dialog, DialogPanel, TransitionRoot } from '@headlessui/vue' - -const isDialogOpen = ref(false) - -const links = [ - { label: 'Documentation', to: '/getting-started' }, - { label: 'Components', to: '/elements/avatar' }, - { label: 'Examples', to: '/examples' }, -] -</script> - -<template> - <header class="sticky top-0 z-50 w-full backdrop-blur flex-none border-b border-gray-200 dark:border-gray-800 bg-white/75 dark:bg-gray-900/75"> - <UContainer> - <HeaderLinks v-model="isDialogOpen" :links="links" /> - </UContainer> - - <TransitionRoot :show="isDialogOpen" as="template"> - <Dialog as="div" @close="isDialogOpen = false"> - <DialogPanel class="fixed inset-0 z-50 overflow-y-auto bg-white dark:bg-gray-900 lg:hidden"> - <div class="px-4 sm:px-6 sticky top-0 border-b border-gray-200 dark:border-gray-800 bg-white/75 dark:bg-gray-900/75 backdrop-blur z-10"> - <HeaderLinks v-model="isDialogOpen" :links="links" /> - </div> - <div class="px-4 sm:px-6 py-4 sm:py-6"> - <DocsAsideLinks @click="isDialogOpen = false" /> - </div> - </DialogPanel> - </Dialog> - </TransitionRoot> - </header> -</template> diff --git a/docs/components/HeaderLinks.vue b/docs/components/HeaderLinks.vue deleted file mode 100644 index fd60ec93..00000000 --- a/docs/components/HeaderLinks.vue +++ /dev/null @@ -1,82 +0,0 @@ -<script setup lang="ts"> -import type { NavItem } from '@nuxt/content/dist/runtime/types' - -const props = defineProps<{ modelValue: boolean, links: { to: string, label: string }[] }>() -const emit = defineEmits(['update:modelValue']) - -const isDialogOpen = useVModel(props, 'modelValue', emit) - -const navigation: Ref<NavItem[]> = inject('navigation') - -const route = useRoute() -function isActive(item) { - return computed(() => { - return route.path.startsWith(item._path) - }) -} -</script> - -<template> - <div class="flex items-center justify-between gap-2 h-16"> - <div class="flex items-center gap-6"> - <div class="flex items-center gap-3"> - <NuxtLink to="/" class="group"> - <div class="flex items-center"> - <div class="flex items-center mr-3 mb-1"> - <div class="relative"> - <Icon name="lucide:triangle" class="text-black dark:text-white w-7 h-7 transition-all group-hover:opacity-30" /> - <Icon name="lucide:triangle" class="text-black dark:text-white w-7 h-7 transition-all absolute left-0 top-0 group-hover:-translate-x-2" /> - </div> - <div class="ml-3"> - <h1 class="font-bold text-xl group-hover:drop-shadow-md"> - Unhead - <div class="h-[2px] bg-gradient-to-b from-gray-800 to-transparent to-60% transition-all group-hover:opacity-70 group-hover:translate-y-0 opacity-0 translate-y-2" /> - </h1> - </div> - </div> - </div> - </NuxtLink> - </div> - </div> - - <div class="flex space-x-5"> - <UButton v-for="(item, i) in navigation" :key="i" :to="item.children[0].children[0]._path" :variant="!isActive(item).value ? 'ghost' : 'outline'" class="md:block hidden"> - <span class="text-gray-700 dark:text-gray-200">{{ item.title }}</span> - </UButton> - </div> - - <div class="flex items-center justify-end -mr-1.5 gap-3"> - <DocsSearchButton class="ml-1.5 flex-1 lg:flex-none lg:w-48" /> - - <div class="flex items-center lg:gap-1.5"> - <ColorModeButton /> - - <UButton - to="https://twitter.com/harlan_zw" - target="_blank" - color="gray" - variant="ghost" - class="hidden lg:inline-flex" - icon="i-simple-icons-twitter" - /> - - <UButton - to="https://github.com/unjs/unhead" - target="_blank" - color="gray" - variant="ghost" - class="hidden lg:inline-flex" - icon="i-simple-icons-github" - /> - - <UButton - color="gray" - variant="ghost" - class="lg:hidden" - :icon="isDialogOpen ? 'i-heroicons-x-mark-20-solid' : 'i-heroicons-bars-3-20-solid'" - @click="isDialogOpen = !isDialogOpen" - /> - </div> - </div> - </div> -</template> diff --git a/docs/components/ShowcaseCard.vue b/docs/components/ShowcaseCard.vue deleted file mode 100644 index 87f10bce..00000000 --- a/docs/components/ShowcaseCard.vue +++ /dev/null @@ -1,46 +0,0 @@ -<script lang="ts" setup> -const props = defineProps<{ - to?: string - label: string - description: string - icon?: string -}>() - -const NuxtLink = resolveComponent('NuxtLink') -const linkAttrs = computed(() => { - const attrs: Record<string, string> = {} - if (props.to) - attrs.to = props.to - return attrs -}) -</script> - -<template> - <div class="showcase-card relative h-full"> - <Component :is="to ? NuxtLink : 'div'" v-bind="linkAttrs" class="h-full"> - <div class="group relative border hover:border-yellow-400 transition rounded-xl overflow-hidden h-full"> - <div - class="h-48 relative flex items-center justify-center bg-no-repeat bg-cover border-b-2 border-gray-100/30 dark:border-gray-900/10" - style="background-image: url('/grid.png')" - > - <div - class="blur-overlay w-full h-full absolute pointer-events-none" - /> - <div class="z-10 text-yellow-200 group-hover:text-[1.25rem] w-full h-full flex items-center justify-center group-hover:text-yellow-500 transition-all relative transform group-hover:drop-shadow-xl group-hover:scale-110"> - <slot /> - </div> - <slot name="teleport" /> - </div> - - <div class="p-4"> - <h3 class="font-semibold mb-1"> - {{ label }} - </h3> - <p class="text-sm mt-1 text-gray-500"> - {{ description }} - </p> - </div> - </div> - </Component> - </div> -</template> diff --git a/docs/components/ads/Ads.vue b/docs/components/ads/Ads.vue deleted file mode 100644 index d81872d6..00000000 --- a/docs/components/ads/Ads.vue +++ /dev/null @@ -1,109 +0,0 @@ -<template> - <div class="space-y-3"> - <ScriptCarbonAds - serve="CW7DTKJI" - placement="unheadunjsio" - class="Carbon border border-gray-200 dark:border-gray-800 rounded-lg bg-white dark:bg-white/5" - > - <template #error> - <AdsFallback /> - </template> - </ScriptCarbonAds> - </div> -</template> - -late> - -<style lang="postcss"> -/* Credits to nuxt.com */ -.dark .Carbon { - min-height: 220px; - .carbon-text { - @apply text-gray-400; - - &:hover { - @apply text-gray-200; - } - } -} - -.light .Carbon { - .carbon-text { - @apply text-gray-600; - - &:hover { - @apply text-gray-800; - } - } -} - -.Carbon { - @apply p-3 flex flex-col max-w-full; - - @screen sm { - @apply max-w-xs; - } - - @screen lg { - @apply mt-0; - } - - #carbonads span { - @apply flex flex-col justify-between; - - .carbon-wrap { - @apply flex flex-col; - - flex: 1; - - @media (min-width: 320px) { - @apply flex-row; - } - - @screen lg { - @apply flex-col; - } - - .carbon-img { - @apply flex items-start justify-center mb-4; - - @media (min-width: 320px) { - @apply mb-0; - } - - @screen lg { - @apply mb-4; - } - } - - .carbon-text { - @apply flex-1 text-sm w-full m-0 text-left block; - - &:hover { - @apply no-underline; - } - - @media (min-width: 320px) { - @apply ml-4; - } - - @screen lg { - @apply ml-0; - } - } - } - } - - img { - @apply w-full; - } - - & .carbon-poweredby { - @apply ml-2 text-xs text-right text-gray-400 block pt-2; - - &:hover { - @apply no-underline text-gray-500; - } - } -} -</style> diff --git a/docs/components/ads/AdsFallback.vue b/docs/components/ads/AdsFallback.vue deleted file mode 100644 index 11040269..00000000 --- a/docs/components/ads/AdsFallback.vue +++ /dev/null @@ -1,24 +0,0 @@ -<template> - <div class="nui-support-nuxt"> - <div> - <p class="pt-2 m-0 font-bold sm:text-sm text-gray-900 dark:text-white"> - Unhead needs you! - </p> - <p class="pb-2 m-0 leading-normal text-gray-600 dark:text-white sm:text-xs"> - By allowing unhead.unjs.io on your Ad-Blocker, you support our work and help us financially. - </p> - </div> - </div> -</template> - -<style lang="postcss"> -.nui-support-nuxt { - @apply py-2 px-4 rounded-md bg-gray-100 dark:bg-white dark:bg-opacity-10 flex flex-row w-full items-center mt-4; -} - -@screen sm { - .nui-support-nuxt { - @apply flex-col w-40 mt-0; - } -} -</style> diff --git a/docs/components/content/Alert.vue b/docs/components/content/Alert.vue deleted file mode 100644 index 0e7eba8e..00000000 --- a/docs/components/content/Alert.vue +++ /dev/null @@ -1,33 +0,0 @@ -<script setup lang="ts"> -defineProps({ - icon: { - type: String, - default: null, - }, - color: { - type: String, - default: 'text-primary-500 dark:text-primary-400', - }, - to: { - type: String, - default: null, - }, -}) - -const NuxtLink = resolveComponent('NuxtLink') -</script> - -<template> - <Component - :is="to ? NuxtLink : 'div'" - :to="to" - class="block pl-4 pr-6 py-3 rounded-md !border !border-gray-200 dark:!border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-700 dark:text-gray-300 text-sm leading-6 my-5 last:mb-0 font-normal group relative prose-code:bg-white dark:prose-code:bg-gray-900" - :class="[to ? 'hover:!border-primary-500 dark:hover:!border-primary-400 hover:text-primary-500 dark:hover:text-primary-400 border-dashed hover:text-gray-800 dark:hover:text-gray-200' : '']" - > - <UIcon v-if="!!to" name="i-heroicons-link-20-solid" class="w-3 h-3 absolute right-2 top-2 text-gray-400 dark:text-gray-500 group-hover:text-primary-500 dark:group-hover:text-primary-400" /> - - <UIcon v-if="icon" :name="icon" class="w-4 h-4 mr-2 inline-flex items-center align-text-top" :class="color" /> - - <ContentSlot :use="$slots.default" unwrap="p" /> - </Component> -</template> diff --git a/docs/components/content/BadgeShortcut.vue b/docs/components/content/BadgeShortcut.vue deleted file mode 100644 index 681f192b..00000000 --- a/docs/components/content/BadgeShortcut.vue +++ /dev/null @@ -1,18 +0,0 @@ -<script setup lang="ts"> -const props = defineProps({ - value: { - type: String, - required: true, - }, -}) - -const { metaSymbol } = useShortcuts() - -const shortcut = computed(() => props.value === 'meta' ? metaSymbol.value : props.value) -</script> - -<template> - <UKbd class="!my-0 align-text-top"> - {{ shortcut }} - </UKbd> -</template> diff --git a/docs/components/content/CodeGroup.vue b/docs/components/content/CodeGroup.vue deleted file mode 100644 index 77cec165..00000000 --- a/docs/components/content/CodeGroup.vue +++ /dev/null @@ -1,53 +0,0 @@ -<script setup lang="ts"> -const slots = useSlots() - -const selectedIndex = ref(0) - -// Computed - -const tabs = computed(() => slots.default?.().map((slot, index) => { - return { - label: slot.props?.filename || slot.props?.label || `${index}`, - component: slot, - } -}) || []) - -const selectedTab = computed(() => tabs.value.find((_, index) => index === selectedIndex.value)) - -// Methods - -function changeTab(index) { - selectedIndex.value = index -} -</script> - -<script lang="ts"> -export default { - inheritAttrs: false, -} -</script> - -<template> - <div :selected-index="selectedIndex" @change="changeTab"> - <div class="flex border border-gray-200 dark:border-gray-700 border-b-0 rounded-t-md overflow-hidden -mb-px"> - <div - v-for="(tab, index) in tabs" - :key="index" - as="template" - @click="selectedIndex = index" - > - <button - class="px-4 py-2 focus:outline-none text-sm border-r border-r-gray-200 dark:border-r-gray-700 transition-colors" - tabindex="-1" - :class="[selectedIndex === index ? 'font-medium text-primary-500 dark:text-primary-400 bg-gray-50 dark:bg-gray-800' : 'hover:bg-gray-50 dark:hover:bg-gray-800']" - > - {{ tab.label }} - </button> - </div> - </div> - - <div class="[&>div>pre]:!rounded-t-none"> - <Component :is="selectedTab.component" /> - </div> - </div> -</template> diff --git a/docs/components/content/ColorModeButton.vue b/docs/components/content/ColorModeButton.vue deleted file mode 100644 index d557bd63..00000000 --- a/docs/components/content/ColorModeButton.vue +++ /dev/null @@ -1,28 +0,0 @@ -<script setup lang="ts"> -const colorMode = useColorMode() - -const isDark = computed({ - get() { - return colorMode.value === 'dark' - }, - set() { - colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark' - }, -}) -</script> - -<template> - <ClientOnly> - <UButton - :icon="isDark ? 'i-heroicons-moon-20-solid' : 'i-heroicons-sun-20-solid'" - color="gray" - variant="ghost" - aria-label="Theme" - @click="isDark = !isDark" - /> - - <template #fallback> - <div class="w-8 h-8" /> - </template> - </ClientOnly> -</template> diff --git a/docs/components/content/ComponentCard.vue b/docs/components/content/ComponentCard.vue deleted file mode 100644 index 8d9a468e..00000000 --- a/docs/components/content/ComponentCard.vue +++ /dev/null @@ -1,211 +0,0 @@ -<script setup lang="ts"> -import { transformContent } from '@nuxt/content/transformers' - -const props = defineProps({ - slug: { - type: String, - default: null, - }, - padding: { - type: Boolean, - default: true, - }, - props: { - type: Object, - default: () => ({}), - }, - code: { - type: String, - default: null, - }, - slots: { - type: Object, - default: null, - }, - baseProps: { - type: Object, - default: () => ({}), - }, - ui: { - type: Object, - default: () => ({}), - }, - excludedProps: { - type: Array, - default: () => [], - }, - extraColors: { - type: Array, - default: () => [], - }, - backgroundClass: { - type: String, - default: 'bg-white dark:bg-gray-900', - }, - overflowClass: { - type: String, - default: '', - }, - previewOnly: { - type: Boolean, - default: false, - }, -}) - -const baseProps = reactive({ ...props.baseProps }) -const componentProps = reactive({ ...props.props }) - -const appConfig = useAppConfig() -const route = useRoute() - -const slug = props.slug || route.params.slug[1] -const camelName = useCamelCase(slug) -const name = `U${useUpperFirst(camelName)}` - -const meta = await fetchComponentMeta(name) - -// Computed - -const ui = computed(() => ({ ...appConfig.ui[camelName], ...props.ui })) - -const fullProps = computed(() => ({ ...baseProps, ...componentProps })) -const vModel = computed({ - get: () => baseProps.modelValue, - set: (value) => { - baseProps.modelValue = value - }, -}) - -const propsToSelect = computed(() => Object.keys(componentProps).map((key) => { - if (props.excludedProps.includes(key)) - return null - - const prop = meta?.meta?.props?.find((prop: any) => prop.name === key) - const dottedKey = useKebabCase(key).replaceAll('-', '.') - const keys = useGet(ui.value, dottedKey, {}) - let options = typeof keys === 'object' && Object.keys(keys) - if (key.toLowerCase().endsWith('color')) { - options = [...appConfig.ui.colors, ...props.extraColors] - } - - return { - type: prop?.type || 'string', - name: key, - label: key === 'modelValue' ? 'value' : useCamelCase(key), - options, - } -}).filter(Boolean)) - -const code = computed(() => { - let code = `\`\`\`html -<${name}` - for (const [key, value] of Object.entries(componentProps)) { - if (value === 'undefined' || value === null) - continue - - const prop = meta?.meta?.props?.find((prop: any) => prop.name === key) - - code += ` ${(prop?.type === 'boolean' && value !== true) || typeof value === 'object' ? ':' : ''}${key === 'modelValue' ? 'value' : useKebabCase(key)}${prop?.type === 'boolean' && !!value && key !== 'modelValue' ? '' : `="${typeof value === 'object' ? renderObject(value) : value}"`}` - } - - if (props.slots) { - code += `> - ${Object.entries(props.slots).map(([key, value]) => `<template #${key}> - ${value} - </template>`).join('\n ')} -</${name}>` - } - else if (props.code) { - const lineBreaks = (props.code.match(/\n/g) || []).length - if (lineBreaks > 1) { - code += `> - ${props.code}</${name}>` - } - else { - code += `>${props.code}</${name}>` - } - } - else { - code += ' />' - } - code += ` -\`\`\` -` - return code -}) - -function renderObject(obj: any) { - if (Array.isArray(obj)) - return `[${obj.map(renderObject).join(', ')}]` - - if (typeof obj === 'object') - return `{ ${Object.entries(obj).map(([key, value]) => `${key}: ${renderObject(value)}`).join(', ')} }` - - if (typeof obj === 'string') - return `'${obj}'` - - return obj -} - -const { data: ast } = await useAsyncData(`${name}-ast-${JSON.stringify(props)}`, () => transformContent('content:_markdown.md', code.value, { - highlight: { - theme: { - light: 'material-lighter', - dark: 'material-palenight', - }, - }, -}), { watch: [code] }) -</script> - -<template> - <div> - <div v-if="propsToSelect.length" class="relative flex border border-gray-200 dark:border-gray-700 rounded-t-md overflow-hidden not-prose"> - <div v-for="prop in propsToSelect" :key="prop.name" class="flex flex-col gap-0.5 justify-between py-1.5 font-medium bg-gray-50 dark:bg-gray-800 border-r border-r-gray-200 dark:border-r-gray-700"> - <label :for="`prop-${prop.name}`" class="block text-xs px-3 font-medium text-gray-400 dark:text-gray-500 -my-px">{{ prop.label }}</label> - <UCheckbox - v-if="prop.type === 'boolean'" - v-model="componentProps[prop.name]" - :name="`prop-${prop.name}`" - tabindex="-1" - :ui="{ wrapper: 'relative flex items-start justify-center' }" - /> - <USelectMenu - v-else-if="prop.type === 'string' && prop.options.length" - v-model="componentProps[prop.name]" - :options="prop.options" - :name="`prop-${prop.name}`" - variant="none" - :ui="{ width: 'w-32 !-mt-px', rounded: 'rounded-b-md', wrapper: 'relative inline-flex' }" - class="!py-0" - tabindex="-1" - :popper="{ strategy: 'fixed', placement: 'bottom-start' }" - /> - <UInput - v-else - :model-value="componentProps[prop.name]" - :type="prop.type === 'number' ? 'number' : 'text'" - :name="`prop-${prop.name}`" - variant="none" - autocomplete="off" - class="!py-0" - tabindex="-1" - @update:model-value="val => componentProps[prop.name] = prop.type === 'number' ? Number(val) : val" - /> - </div> - </div> - - <div class="flex border border-b-0 border-gray-200 dark:border-gray-700 relative not-prose" :class="[{ 'p-4': padding }, propsToSelect.length ? 'border-t-0' : 'rounded-t-md', backgroundClass, overflowClass]"> - <Component :is="name" v-model="vModel" v-bind="fullProps"> - <ContentSlot v-if="$slots.default" :use="$slots.default" /> - - <template v-for="slot in Object.keys(slots || {})" :key="slot" #[slot]> - <ClientOnly> - <ContentSlot v-if="$slots[slot]" :use="$slots[slot]" /> - </ClientOnly> - </template> - </Component> - </div> - - <ContentRenderer v-if="!previewOnly" :value="ast" class="[&>div>pre]:!rounded-t-none" /> - </div> -</template> diff --git a/docs/components/content/ComponentExample.vue b/docs/components/content/ComponentExample.vue deleted file mode 100644 index 2f447d29..00000000 --- a/docs/components/content/ComponentExample.vue +++ /dev/null @@ -1,26 +0,0 @@ -<script setup lang="ts"> -defineProps({ - padding: { - type: Boolean, - default: true, - }, - backgroundClass: { - type: String, - default: 'bg-white dark:bg-gray-900', - }, - overflowClass: { - type: String, - default: '', - }, -}) -</script> - -<template> - <div class="[&>div>pre]:!rounded-t-none"> - <div class="flex border border-gray-200 dark:border-gray-700 relative not-prose rounded-t-md" :class="[{ 'p-4': padding, 'rounded-b-md': !$slots.code, 'border-b-0': !!$slots.code }, backgroundClass, overflowClass]"> - <ContentSlot v-if="$slots.default" :use="$slots.default" /> - </div> - - <ContentSlot v-if="$slots.code" :use="$slots.code" /> - </div> -</template> diff --git a/docs/components/content/ComponentPreset.vue b/docs/components/content/ComponentPreset.vue deleted file mode 100644 index e72cdad6..00000000 --- a/docs/components/content/ComponentPreset.vue +++ /dev/null @@ -1,36 +0,0 @@ -<script setup lang="ts"> -import { transformContent } from '@nuxt/content/transformers' - -const props = defineProps({ - slug: { - type: String, - default: null, - }, -}) - -const appConfig = useAppConfig() -const route = useRoute() - -const slug = props.slug || route.params.slug[1] -const camelName = useCamelCase(slug) -const name = `U${useUpperFirst(camelName)}` - -const preset = appConfig.ui[camelName] - -const { data: ast } = await useAsyncData(`${name}-preset`, () => transformContent('content:_markdown.md', ` -\`\`\`json -${JSON.stringify(preset, null, 2)} -\`\`\`\ -`, { - highlight: { - theme: { - light: 'material-lighter', - dark: 'material-palenight', - }, - }, -})) -</script> - -<template> - <ContentRenderer :value="ast" /> -</template> diff --git a/docs/components/content/ComponentProps.vue b/docs/components/content/ComponentProps.vue deleted file mode 100644 index 867c74a3..00000000 --- a/docs/components/content/ComponentProps.vue +++ /dev/null @@ -1,56 +0,0 @@ -<script setup lang="ts"> -const props = defineProps({ - slug: { - type: String, - default: null, - }, -}) - -const route = useRoute() - -const slug = props.slug || route.params.slug[1] -const camelName = useCamelCase(slug) -const name = `U${useUpperFirst(camelName)}` - -const meta = await fetchComponentMeta(name) - -const metaProps = computed(() => useSortBy(meta?.meta?.props || [], [ - prop => ['string', 'number', 'boolean', 'any'].indexOf(prop.type), -])) -</script> - -<template> - <div> - <table class="table-fixed"> - <thead> - <tr> - <th class="w-[25%]"> - Prop - </th> - <th class="w-[50%]"> - Default - </th> - <th>Description</th> - </tr> - </thead> - <tbody> - <tr v-for="prop in metaProps" :key="prop.name"> - <td class="relative flex-shrink-0"> - <code>{{ prop.name }}</code><span v-if="prop.required" class="font-bold text-red-500 dark:text-red-400 absolute top-0 ml-1">*</span> - </td> - <td> - <code v-if="prop.default">{{ prop.default }}</code> - </td> - <td> - <a v-if="prop.name === 'ui'" href="#preset"> - <code>{{ prop.type }}</code> - </a> - <code v-else class="break-all"> - {{ prop.type }} - </code> - </td> - </tr> - </tbody> - </table> - </div> -</template> diff --git a/docs/components/content/ComponentSlots.vue b/docs/components/content/ComponentSlots.vue deleted file mode 100644 index 612e5dfe..00000000 --- a/docs/components/content/ComponentSlots.vue +++ /dev/null @@ -1,35 +0,0 @@ -<script setup lang="ts"> -const props = defineProps({ - slug: { - type: String, - default: null, - }, -}) - -const route = useRoute() - -const slug = props.slug || route.params.slug[1] -const camelName = useCamelCase(slug) -const name = `U${useUpperFirst(camelName)}` - -const meta = await fetchComponentMeta(name) -</script> - -<template> - <div> - <table> - <thead> - <tr> - <th>Slot</th> - </tr> - </thead> - <tbody> - <tr v-for="slot in (meta.meta.slots as any[])" :key="slot.name"> - <td class="whitespace-nowrap"> - <code>{{ slot.name }}</code> - </td> - </tr> - </tbody> - </table> - </div> -</template> diff --git a/docs/components/content/Placeholder.vue b/docs/components/content/Placeholder.vue deleted file mode 100644 index a11f9468..00000000 --- a/docs/components/content/Placeholder.vue +++ /dev/null @@ -1,21 +0,0 @@ -<template> - <div class="relative overflow-hidden rounded border border-dashed border-gray-400 dark:border-gray-500 opacity-75"> - <svg class="absolute inset-0 h-full w-full stroke-gray-900/10 dark:stroke-white/10" fill="none"> - <defs> - <pattern - id="pattern-5c1e4f0e-62d5-498b-8ff0-cf77bb448c8e" - x="0" - y="0" - width="10" - height="10" - patternUnits="userSpaceOnUse" - > - <path d="M-3 13 15-5M-5 5l18-18M-1 21 17 3" /> - </pattern> - </defs> - <rect stroke="none" fill="url(#pattern-5c1e4f0e-62d5-498b-8ff0-cf77bb448c8e)" width="100%" height="100%" /> - </svg> - - <slot /> - </div> -</template> diff --git a/docs/components/content/VoltaEmbed.vue b/docs/components/content/VoltaEmbed.vue deleted file mode 100644 index aba5b205..00000000 --- a/docs/components/content/VoltaEmbed.vue +++ /dev/null @@ -1,17 +0,0 @@ -<script setup lang="ts"> -const props = defineProps({ - token: { - type: String, - required: true, - }, -}) - -const appConfig = useAppConfig() -const colorMode = useColorMode() - -const src = computed(() => `https://volta.net/embed/${props.token}?theme=${colorMode.value}&gray=${appConfig.ui.gray}&primary=${appConfig.ui.primary}`) -</script> - -<template> - <iframe :src="src" class="w-full min-h-[calc(100vh/1.5)] border border-gray-200 dark:border-gray-800 rounded-md" /> -</template> diff --git a/docs/components/content/prose/ProseCode.vue b/docs/components/content/prose/ProseCode.vue deleted file mode 100644 index e7648a41..00000000 --- a/docs/components/content/prose/ProseCode.vue +++ /dev/null @@ -1,71 +0,0 @@ -<script lang="ts"> -import { defineComponent } from '#imports' - -export default defineComponent({ - props: { - code: { - type: String, - default: '', - }, - language: { - type: String, - default: null, - }, - filename: { - type: String, - default: null, - }, - highlights: { - type: Array as () => number[], - default: () => [], - }, - meta: { - type: String, - default: null, - }, - }, - setup(props) { - const clipboard = useCopyToClipboard({ timeout: 2000 }) - const icon = ref('i-heroicons-clipboard-document') - - function copy() { - clipboard.copy(props.code, { title: 'Copied to clipboard!' }) - - icon.value = 'i-heroicons-clipboard-document-check' - - setTimeout(() => { - icon.value = 'i-heroicons-clipboard-document' - }, 2000) - } - - return { - icon, - copy, - } - }, -}) -</script> - -<template> - <div class="group relative" :class="`language-${language}`"> - <UButton - :icon="icon" - variant="solid" - class="absolute right-3 top-3 opacity-0 group-hover:opacity-100 transition-opacity z-[1]" - size="xs" - tabindex="-1" - @click="copy" - /> - - <span v-if="filename" class="text-gray-400 dark:text-gray-500 absolute right-3 bottom-3 text-sm group-hover:opacity-0 transition-opacity">{{ filename }}</span> - - <slot /> - </div> -</template> - -<style> -pre code .line { - display: block; - min-height: 1rem; -} -</style> diff --git a/docs/components/content/prose/ProseH2.vue b/docs/components/content/prose/ProseH2.vue deleted file mode 100644 index 182d2779..00000000 --- a/docs/components/content/prose/ProseH2.vue +++ /dev/null @@ -1,15 +0,0 @@ -<script setup lang="ts"> -defineProps<{ id: string }>() -</script> - -<template> - <h2 :id="id" class="scroll-mt-[161px] lg:scroll-mt-[112px]"> - <NuxtLink :href="`#${id}`" class="group"> - <div class="-ml-6 pr-2 py-2 inline-flex opacity-0 group-hover:opacity-100 transition-opacity absolute"> - <UIcon name="i-heroicons-hashtag-20-solid" class="w-4 h-4 text-primary-500 dark:text-primary-400" /> - </div> - - <slot /> - </NuxtLink> - </h2> -</template> diff --git a/docs/components/content/prose/ProseH3.vue b/docs/components/content/prose/ProseH3.vue deleted file mode 100644 index ac24ed2b..00000000 --- a/docs/components/content/prose/ProseH3.vue +++ /dev/null @@ -1,15 +0,0 @@ -<script setup lang="ts"> -defineProps<{ id: string }>() -</script> - -<template> - <h3 :id="id" class="scroll-mt-[145px] lg:scroll-mt-[96px]"> - <NuxtLink :href="`#${id}`" class="group"> - <div class="-ml-6 pr-2 py-2 inline-flex opacity-0 group-hover:opacity-100 transition-opacity absolute"> - <UIcon name="i-heroicons-hashtag-20-solid" class="w-4 h-4 text-primary-500 dark:text-primary-400" /> - </div> - - <slot /> - </NuxtLink> - </h3> -</template> diff --git a/docs/components/content/prose/ProseH4.vue b/docs/components/content/prose/ProseH4.vue deleted file mode 100644 index ac24ed2b..00000000 --- a/docs/components/content/prose/ProseH4.vue +++ /dev/null @@ -1,15 +0,0 @@ -<script setup lang="ts"> -defineProps<{ id: string }>() -</script> - -<template> - <h3 :id="id" class="scroll-mt-[145px] lg:scroll-mt-[96px]"> - <NuxtLink :href="`#${id}`" class="group"> - <div class="-ml-6 pr-2 py-2 inline-flex opacity-0 group-hover:opacity-100 transition-opacity absolute"> - <UIcon name="i-heroicons-hashtag-20-solid" class="w-4 h-4 text-primary-500 dark:text-primary-400" /> - </div> - - <slot /> - </NuxtLink> - </h3> -</template> diff --git a/docs/components/docs/DocsAside.vue b/docs/components/docs/DocsAside.vue deleted file mode 100644 index ccde663c..00000000 --- a/docs/components/docs/DocsAside.vue +++ /dev/null @@ -1,15 +0,0 @@ -<template> - <aside class="hidden py-8 overflow-y-auto lg:block lg:self-start lg:top-16 lg:max-h-[calc(100vh-65px)] lg:sticky lg:pr-8 lg:pl-[2px]"> - <div class="relative"> - <!-- <div class="sticky top-0 pointer-events-none z-[1]"> - <div class="h-8 bg-white dark:bg-gray-900" /> - <div class="bg-white dark:bg-gray-900 relative pointer-events-auto"> - <DocsSearchButton class="w-full" /> - </div> - <div class="h-8 bg-gradient-to-b from-white dark:from-gray-900" /> - </div> --> - - <DocsAsideLinks /> - </div> - </aside> -</template> diff --git a/docs/components/docs/DocsAsideLinks.vue b/docs/components/docs/DocsAsideLinks.vue deleted file mode 100644 index 5d58ce3f..00000000 --- a/docs/components/docs/DocsAsideLinks.vue +++ /dev/null @@ -1,47 +0,0 @@ -<script setup lang="ts"> -import type { NavItem } from '@nuxt/content/dist/runtime/types' -import type { Ref } from 'vue' - -const navigation: Ref<NavItem[]> = inject('navigation') - -function mapContentLinks(links: NavItem[]) { - return links?.map(link => ({ label: link.asideTitle || link.title, icon: link.icon, to: link._path, badge: link.badge })) || [] -} -</script> - -<template> - <div v-if="navigation" class="space-y-8"> - <div v-for="(group, index) in navigation" :key="index" class="space-y-3"> - <div class="space-y-3"> - <p class="text-sm font-semibold text-gray-900 dark:text-gray-200 truncate leading-6"> - {{ group.title }} - </p> - <div v-for="(group2, i2) in group.children" :key="i2" class="ml-5"> - <p class="text-sm font-semibold text-gray-900 dark:text-gray-200 truncate leading-6"> - {{ group2.title }} - </p> - <UVerticalNavigation - :links="mapContentLinks(group2.children)" - class="mt-1" - :ui="{ - wrapper: 'border-l border-gray-200 dark:border-gray-800 space-y-2', - base: 'group block border-l -ml-px lg:leading-6 flex items-center gap-2', - padding: 'pl-4', - rounded: '', - font: '', - ring: '', - active: 'text-primary-500 dark:text-primary-400 border-current', - inactive: 'border-transparent hover:border-gray-400 dark:hover:border-gray-500 text-gray-700 hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300', - }" - > - <template #badge="{ link }"> - <UBadge v-if="link.badge" size="xs" :ui="{ rounded: 'rounded-full' }"> - {{ link.badge }} - </UBadge> - </template> - </UVerticalNavigation> - </div> - </div> - </div> - </div> -</template> diff --git a/docs/components/docs/DocsFooter.vue b/docs/components/docs/DocsFooter.vue deleted file mode 100644 index 8642a480..00000000 --- a/docs/components/docs/DocsFooter.vue +++ /dev/null @@ -1,39 +0,0 @@ -<script setup lang="ts"> -const config = useRuntimeConfig().public -</script> - -<template> - <footer class="flex items-center justify-between gap-1.5"> - <div class="flex items-baseline gap-1.5 text-sm text-center text-gray-500 dark:text-gray-400"> - Made with <a href="https://ui.nuxtlabs.com/" class="text-primary">Nuxt UI</a>. - </div> - - <div class="flex items-center gap-3 -my-1"> - <div class="flex lg:hidden items-center gap-1.5"> - <UButton - to="https://twitter.com/harlan_zw" - target="_blank" - color="gray" - title="X" - size="2xs" - variant="ghost" - icon="i-simple-icons-twitter" - /> - - <UButton - to="https://github.com/harlan-zw" - target="_blank" - title="GitHub" - color="gray" - size="2xs" - variant="ghost" - icon="i-simple-icons-github" - /> - </div> - - <NuxtLink :to="`https://github.com/unjs/unhead/releases/tag/v${config.version}`" target="_blank"> - <UBadge :label="`v${config.version}`" /> - </NuxtLink> - </div> - </footer> -</template> diff --git a/docs/components/docs/DocsPageFooter.vue b/docs/components/docs/DocsPageFooter.vue deleted file mode 100644 index c564a957..00000000 --- a/docs/components/docs/DocsPageFooter.vue +++ /dev/null @@ -1,22 +0,0 @@ -<script setup lang="ts"> -defineProps({ - page: { - type: Object, - default: null, - }, -}) -</script> - -<template> - <div class="flex items-center justify-between gap-1.5"> - <UButton - v-if="page" - :to="`https://github.com/harlan-zw/nuxt-seo-kit/edit/v2/docs/content/${page._file}`" - label="Edit this page on GitHub" - color="primary" - variant="link" - :padded="false" - icon="i-heroicons-pencil-square" - /> - </div> -</template> diff --git a/docs/components/docs/DocsPageHeader.vue b/docs/components/docs/DocsPageHeader.vue deleted file mode 100644 index 96033776..00000000 --- a/docs/components/docs/DocsPageHeader.vue +++ /dev/null @@ -1,34 +0,0 @@ -<script setup lang="ts"> -defineProps({ - page: { - type: Object, - default: null, - }, -}) -</script> - -<template> - <header v-if="page" class="relative border-b border-gray-200 dark:border-gray-800 pb-8 mb-12"> - <p class="mb-4 text-sm leading-6 font-semibold text-primary-500 dark:text-primary-400 capitalize"> - {{ page._dir?.title ? page._dir.title : useLowerCase(page._dir) }} - </p> - <div class="flex flex-col lg:flex-row lg:items-center lg:justify-between"> - <h1 class="text-3xl sm:text-4xl font-extrabold text-gray-900 tracking-tight dark:text-white"> - {{ page.title }} - </h1> - - <div v-if="page.headlessui || page.github" class="flex items-center gap-2 mt-4 lg:mt-0"> - <UButton - v-if="page.headlessui" - :label="page.headlessui.label" - :to="page.headlessui.to" - icon="i-simple-icons-headlessui" - color="white" - /> - </div> - </div> - <p v-if="page.description" class="mt-4 text-lg text-gray-500 dark:text-gray-400"> - {{ page.description }} - </p> - </header> -</template> diff --git a/docs/components/docs/DocsPrevNext.vue b/docs/components/docs/DocsPrevNext.vue deleted file mode 100644 index 15f3fc17..00000000 --- a/docs/components/docs/DocsPrevNext.vue +++ /dev/null @@ -1,33 +0,0 @@ -<script setup lang="ts"> -defineProps({ - prev: { - type: Object, - default: null, - }, - next: { - type: Object, - default: null, - }, -}) -</script> - -<template> - <div class="grid gap-6 sm:grid-cols-2"> - <DocsPrevNextCard - v-if="prev" - :title="prev.title" - :description="prev.description" - :to="prev._path" - icon="i-heroicons-arrow-left-20-solid" - /> - <span v-else class="hidden sm:block"> </span> - <DocsPrevNextCard - v-if="next" - :title="next.title" - :description="next.description" - :to="next._path" - icon="i-heroicons-arrow-right-20-solid" - class="text-right" - /> - </div> -</template> diff --git a/docs/components/docs/DocsPrevNextCard.vue b/docs/components/docs/DocsPrevNextCard.vue deleted file mode 100644 index 0f848efa..00000000 --- a/docs/components/docs/DocsPrevNextCard.vue +++ /dev/null @@ -1,36 +0,0 @@ -<script setup lang="ts"> -defineProps({ - icon: { - type: String, - default: null, - }, - title: { - type: String, - default: '', - }, - description: { - type: String, - default: '', - }, - to: { - type: String, - required: true, - }, -}) -</script> - -<template> - <NuxtLink :to="to" class="block px-5 py-8 border not-prose rounded-lg border-gray-200 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-800/50 group"> - <div v-if="icon" class="inline-flex items-center rounded-full p-1.5 bg-gray-50 dark:bg-gray-800 group-hover:bg-primary-50 dark:group-hover:bg-primary-400/10 ring-1 ring-gray-300 dark:ring-gray-700 mb-4 group-hover:ring-primary-500/50 dark:group-hover:ring-primary-400/50"> - <UIcon :name="icon" class="w-5 h-5 text-gray-900 dark:text-gray-100 group-hover:text-primary-500 dark:group-hover:text-primary-400" /> - </div> - - <p class="text-gray-900 dark:text-gray-50 font-medium text-[15px] mb-1"> - {{ title }} - </p> - - <p class="text-sm font-normal text-gray-500 dark:text-gray-400"> - {{ description }} - </p> - </NuxtLink> -</template> diff --git a/docs/components/docs/DocsSearch.vue b/docs/components/docs/DocsSearch.vue deleted file mode 100644 index 72ccb5e6..00000000 --- a/docs/components/docs/DocsSearch.vue +++ /dev/null @@ -1,176 +0,0 @@ -<script setup lang="ts"> -import type { NavItem } from '@nuxt/content/dist/runtime/types' -import type { Command } from '../../../src/runtime/types' - -const navigation: Ref<NavItem[]> = inject('navigation') - -const router = useRouter() -const { usingInput } = useShortcuts() -const { isSearchModalOpen } = useDocs() -const breakpoints = useBreakpoints({ mobile: 640 }) - -const isXs = breakpoints.smaller('mobile') - -const commandPaletteRef = ref<HTMLElement & { query: Ref<string>, results: { item: Command }[] }>() - -const { data: files } = await useLazyAsyncData('search', () => queryContent().where({ _type: 'markdown' }).find(), { default: () => [] }) - -// Computed - -const defaultGroups = computed(() => navigation.value.map(item => ({ - key: item._path, - label: item.title, - commands: files.value.filter(file => file._path.startsWith(item._path)).map(file => ({ - id: file._id, - title: file.navigation?.title || file.title, - to: file._path, - suffix: file.description, - icon: file.icon, - })), -}))) - -const queryGroups = computed(() => navigation.value.map(item => ({ - key: item._path, - label: item.title, - commands: files.value.filter(file => file._path.startsWith(item._path)).flatMap((file) => { - return [{ - id: file._id, - title: file.navigation?.title || file.title, - to: file._path, - description: file.description, - icon: file.icon, - }, - // @ts-expect-error untyped - ...Object.entries(groupByHeading(file.body.children)).map(([hash, { title, children }]) => ({ - id: `${file._path}${hash}`, - title, - prefix: `${file.navigation?.title || file.title} ->`, - prefixClass: 'text-gray-700 dark:text-gray-200', - to: `${file._path}${hash}`, - children: concatChildren(children), - icon: file.icon, - }))] - }), -}))) - -const groups = computed(() => commandPaletteRef.value?.query ? queryGroups.value : defaultGroups.value) - -// avoid conflicts between multiple meta_k shortcuts -const canToggleModal = computed(() => isSearchModalOpen.value || !usingInput.value) - -// Methods - -function remapChildren(children: any[]) { - return children?.map((grandChild) => { - if (['code-inline', 'em', 'a', 'strong'].includes(grandChild.tag)) - return { type: 'text', value: grandChild.children.find(child => child.type === 'text')?.value || '' } - - return grandChild - }) -} - -function concatChildren(children: any[]) { - return children.map((child) => { - if (['alert'].includes(child.tag)) - child.children = concatChildren(child.children) - - if (child.tag === 'p') { - child.children = remapChildren(child.children) - - child.children = child.children?.reduce((acc, grandChild) => { - if (grandChild.type === 'text') { - if (acc.length && acc[acc.length - 1].type === 'text') - acc[acc.length - 1].value += grandChild.value - else - acc.push(grandChild) - } - else { - acc.push(grandChild) - } - return acc - }, []) - } - if (['style'].includes(child.tag)) - return null - - return child - }) -} - -function groupByHeading(children: any[]) { - const groups = {} // grouped by path - let hash = '' // file.page with potential `#anchor` concat - let title: string | null - for (const node of children) { - // if heading found, udpate current path - if (['h2', 'h3'].includes(node.tag)) { - // find heading text value - title = node.children?.find(child => child.type === 'text')?.value - if (title) - hash = `#${node.props.id}` - } - // push to existing/new group based on path - if (groups[hash]) - groups[hash].children.push(node) - else - groups[hash] = { children: [node], title } - } - return groups -} - -function onSelect(option) { - isSearchModalOpen.value = false - - if (option.click) - option.click() - else if (option.to) - router.push(option.to) - else if (option.href) - window.open(option.href, '_blank') -} - -// Shortcuts - -defineShortcuts({ - meta_k: { - usingInput: true, - whenever: [canToggleModal], - handler: () => { - isSearchModalOpen.value = !isSearchModalOpen.value - }, - }, - escape: { - usingInput: true, - whenever: [isSearchModalOpen], - handler: () => { isSearchModalOpen.value = false }, - }, -}) -</script> - -<template> - <UModal - v-model="isSearchModalOpen" - :overlay="!isXs" - :transition="!isXs" - :ui="{ - padding: 'sm:p-4', - rounded: 'sm:rounded-lg', - width: 'sm:max-w-3xl', - height: 'h-screen sm:h-[28rem]', - }" - > - <UCommandPalette - ref="commandPaletteRef" - :groups="groups" - command-attribute="title" - :close-button="{ icon: 'i-heroicons-x-mark-20-solid', color: 'gray', variant: 'ghost', size: 'sm', class: '-mr-1.5' }" - :ui="{ input: { height: 'h-16 sm:h-12', icon: { size: 'h-5 w-5', padding: 'pl-11' } } }" - :fuse="{ - fuseOptions: { ignoreLocation: true, includeMatches: true, threshold: 0, keys: ['title', 'description', 'children.children.value', 'children.children.children.value'] }, - resultLimit: 10, - }" - @update:model-value="onSelect" - @close="isSearchModalOpen = false" - /> - </UModal> -</template> diff --git a/docs/components/docs/DocsSearchButton.vue b/docs/components/docs/DocsSearchButton.vue deleted file mode 100644 index 21372dd6..00000000 --- a/docs/components/docs/DocsSearchButton.vue +++ /dev/null @@ -1,33 +0,0 @@ -<script setup lang="ts"> -const { isSearchModalOpen } = useDocs() -const { metaSymbol } = useShortcuts() -</script> - -<template> - <UButton - color="white" - variant="outline" - icon="i-heroicons-magnifying-glass-20-solid" - label="Search..." - truncate - :ui="{ - color: { - white: { - outline: 'ring-1 ring-inset ring-gray-200 dark:ring-gray-800 hover:ring-gray-300 dark:hover:ring-gray-700 hover:bg-gray-50 dark:hover:bg-gray-800/50 text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400', - }, - }, - }" - @click="isSearchModalOpen = true" - > - <template #trailing> - <div class="hidden lg:flex items-center gap-0.5 ml-auto -my-1 flex-shrink-0"> - <UKbd class="!text-inherit"> - {{ metaSymbol }} - </UKbd> - <UKbd class="!text-inherit"> - K - </UKbd> - </div> - </template> - </UButton> -</template> diff --git a/docs/components/docs/DocsToc.vue b/docs/components/docs/DocsToc.vue deleted file mode 100644 index 619fc71d..00000000 --- a/docs/components/docs/DocsToc.vue +++ /dev/null @@ -1,24 +0,0 @@ -<script setup lang="ts"> -defineProps({ - toc: { - type: Object, - default: null, - }, -}) - -const isTocOpen = ref(false) -</script> - -<template> - <div class="sticky top-16 bg-white/75 dark:bg-gray-900/75 backdrop-blur group lg:self-start -mx-4 sm:-mx-6 lg:mx-0 px-4 sm:px-6 lg:pl-8 lg:pr-0"> - <div class="py-3 lg:py-8 border-b border-dashed border-gray-200 dark:border-gray-800 lg:border-0"> - <button class="flex items-center gap-2" tabindex="-1" @click="isTocOpen = !isTocOpen"> - <span class="text-sm text-slate-900 font-semibold text-sm leading-6 dark:text-slate-100 truncate">Table of Contents</span> - - <UIcon name="i-heroicons-chevron-right-20-solid" class="lg:hidden w-4 h-4 transition-transform duration-100 transform text-gray-400 dark:text-gray-500" :class="[isTocOpen ? 'rotate-90' : 'rotate-0']" /> - </button> - - <DocsTocLinks class="mt-2 lg:mt-4" :links="toc.links" :class="[isTocOpen ? 'lg:block' : 'hidden lg:block']" /> - </div> - </div> -</template> diff --git a/docs/components/docs/DocsTocLinks.vue b/docs/components/docs/DocsTocLinks.vue deleted file mode 100644 index 7f2eea2c..00000000 --- a/docs/components/docs/DocsTocLinks.vue +++ /dev/null @@ -1,49 +0,0 @@ -<script setup lang="ts"> -import type { TocLink } from '@nuxt/content/dist/runtime/types' - -defineProps({ - links: { - type: Array as PropType<TocLink[]>, - default: () => [], - }, -}) - -const emit = defineEmits(['move']) - -const route = useRoute() -const router = useRouter() -const { activeHeadings, updateHeadings } = useScrollspy() - -watch(() => route.path, () => { - setTimeout(() => { - if (process.client) { - updateHeadings([ - ...document.querySelectorAll('h2'), - ...document.querySelectorAll('h3'), - ]) - } - }, 300) -}, { immediate: true }) - -function scrollToHeading(id: string) { - router.push(`#${id}`) - emit('move', id) -} -</script> - -<template> - <ul> - <li v-for="link in links" :key="link.text" :class="{ 'ml-3': link.depth === 3 }"> - <a - :href="`#${link.id}`" - class="block py-1 font-medium text-sm" - :class="[activeHeadings.includes(link.id) ? 'text-primary-500 dark:text-primary-400' : 'hover:text-gray-900 dark:text-gray-400 dark:hover:text-gray-300']" - @click.prevent="scrollToHeading(link.id)" - > - {{ link.text }} - </a> - - <DocsTocLinks v-if="link.children" :links="link.children" /> - </li> - </ul> -</template> diff --git a/docs/composables/useComponentMeta.ts b/docs/composables/useComponentMeta.ts deleted file mode 100644 index 2a0b773c..00000000 --- a/docs/composables/useComponentMeta.ts +++ /dev/null @@ -1,30 +0,0 @@ -const useComponentsMetaState = () => useState('components-meta', () => ({})) - -export async function fetchComponentMeta(name: string) { - const state = useComponentsMetaState() - - if (state.value[name]?.then) { - await state.value[name] - return state.value[name] - } - if (state.value[name]) - return state.value[name] - - // Store promise to avoid multiple calls - - // add to nitro prerender - // eslint-disable-next-line node/prefer-global/process - if (process.server) { - const event = useRequestEvent() - event.node.res.setHeader( - 'x-nitro-prerender', - [event.node.res.getHeader('x-nitro-prerender'), `/api/component-meta/${name}.json`].filter(Boolean).join(','), - ) - } - state.value[name] = $fetch(`/api/component-meta/${name}.json`).then((meta) => { - state.value[name] = meta - }) - - await state.value[name] - return state.value[name] -} diff --git a/docs/composables/useDocs.ts b/docs/composables/useDocs.ts deleted file mode 100644 index 2847d152..00000000 --- a/docs/composables/useDocs.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { createSharedComposable } from '@vueuse/core' - -function _useDocs() { - const isSearchModalOpen = ref(false) - - return { - isSearchModalOpen, - } -} - -export const useDocs = createSharedComposable(_useDocs) diff --git a/docs/composables/useScrollspy.ts b/docs/composables/useScrollspy.ts deleted file mode 100644 index 79e763db..00000000 --- a/docs/composables/useScrollspy.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Scrollspy allows you to watch visible headings in a specific page. - * Useful for table of contents live style updates. - */ -export function useScrollspy() { - const observer = ref() as Ref<IntersectionObserver> - const visibleHeadings = ref([]) as Ref<string[]> - const activeHeadings = ref([]) as Ref<string[]> - - const observerCallback = (entries: IntersectionObserverEntry[]) => entries.forEach((entry) => { - const id = entry.target.id - - if (entry.isIntersecting) - visibleHeadings.value.push(id) - else visibleHeadings.value = visibleHeadings.value.filter(t => t !== id) - }) - - const updateHeadings = (headings: Element[]) => headings.forEach((heading) => { - observer.value.observe(heading) - }) - - watch(visibleHeadings, (val, oldVal) => { - if (val.length === 0) - activeHeadings.value = oldVal - else activeHeadings.value = val - }) - - // Create intersection observer - onBeforeMount(() => (observer.value = new IntersectionObserver(observerCallback))) - - // Destroy it - onBeforeUnmount(() => observer.value?.disconnect()) - - return { - visibleHeadings, - activeHeadings, - updateHeadings, - } -} diff --git a/docs/content/1.setup/1.unhead/1.installation.md b/docs/content/1.setup/1.unhead/1.installation.md deleted file mode 100644 index 01928703..00000000 --- a/docs/content/1.setup/1.unhead/1.installation.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: 'Install Unhead' -description: 'Get started with Unhead by installing the dependency to your project.' -navigation: - title: 'Installation' ---- - -Using :Icon{name="logos:vue"} Vue? Check out the [Vue integration](/setup/vue/installation). - -Using :Icon{name="logos:nuxt-icon"} Nuxt? Unhead is already built-in! Check out the [Nuxt docs](https://nuxt.com/docs/getting-started/seo-meta). - -## Setup - -1. Install `unhead` dependency to your project: - -::code-group - -```bash [yarn] -yarn add unhead -``` - -```bash [npm] -npm install unhead -``` - -```bash [pnpm] -pnpm add unhead -``` - -:: - -2. Create a head instance somewhere in your apps entry. - -```ts [main.ts] -import { createHead } from 'unhead' - -// Create a global head instance -const head = createHead() -``` - -3. Done! Now you can use the `useHead` composable to manage your head. - -```ts -import { useHead } from 'unhead' - -useHead({ - title: 'My awesome site' -}) -``` - -## Optional: Auto-Imports - -Unhead provides out-of-the-box configuration for [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import). - -```ts [vite.config.ts] -import { unheadComposablesImports } from 'unhead' - -export default defineConfig({ - plugins: [ - AutoImport({ - imports: [ - unheadComposablesImports[0], - ], - }), - ] -}) -``` - -### Next Steps - -Your app is now setup for head management, congrats! ๐ŸŽ‰ - -Try next: -1. Optional: [Setup SSR](/setup/ssr/installation) -2. Add some [recipes](/addons/recipes) diff --git a/docs/content/1.setup/1.unhead/5.how-it-works.md b/docs/content/1.setup/1.unhead/5.how-it-works.md deleted file mode 100644 index 04c6efc4..00000000 --- a/docs/content/1.setup/1.unhead/5.how-it-works.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: How it works -description: Learn how Unhead works under the hood. ---- - -## Core - -The Unhead core is a small API which abstracts the common logic for all head integrations. It is designed to be used by any head integration, -and is not specific to any one framework. - -Extensibility and customisation is a core goal of Unhead. All internal logic is powered by hooks and plugins, hooks -being provided by [hookable](https://github.com/unjs/hookable). - -The API is as follows: - -```ts -export interface Unhead<Input extends Record<string, any> = Head> { - /** - * The active head entries. - */ - headEntries: () => HeadEntry<Input>[] - /** - * Create a new head entry. - */ - push: (entry: Input, options?: HeadEntryOptions) => ActiveHeadEntry<Input> - /** - * Resolve tags from head entries. - */ - resolveTags: () => Promise<HeadTag[]> - /** - * Exposed hooks for easier extension. - */ - hooks: Hookable<HeadHooks> - /** - * Resolved options - */ - resolvedOptions: CreateHeadOptions - /** - * @internal - */ - _popSideEffectQueue: () => SideEffectsRecord -} -``` - -### Head entries - -Head entries are the data for Unhead. They are created by calling `push` on the Unhead instance. - -An entry is a simple object which contains the tags to be added. Head entries are resolved to tags with the -`resolveTags` method. - -```ts -const myFirstEntry = head.push( - { - title: 'My title', - meta: [ - { - name: 'description', - content: 'My description', - }, - ], - } -) -``` - -### Resolve Tags - -When a DOM or SSR render is triggered, the tags will be resolved. - -This is done by calling `resolveTags` on the Unhead instance. This will return a promise which resolves to an array of tags. - -```ts -const tags = await head.resolveTags() - -// [ -// { -// "_d": "title", -// "_e": 0, -// "_p": 0, -// "textContent": "My title", -// "props": {}, -// "tag": "title", -// }, -// { -// "_d": "meta:name:description", -// "_e": 0, -// "_p": 1, -// "props": { -// "content": "My description", -// "name": "description", -// }, -// "tag": "meta", -// }, -// ] -```` - -When resolving the tags, the following steps are taken: - -#### Call hook `entries:resolve` - -Resolve any reactive elements within the input - -#### Call hook `tags:normalise` - -Normalise the tags, makes sure the schema of the tag is correct: - -1. Assigns a dedupe key to the tag -2. Handles deprecated options -3. Assigns tag meta data (entry id, position id, etc) - -#### Call hook `tags:resolve` - -Process the hooks for default plugin logic: - -1. Deduping tags, including class and style merging -2. Ordering tags -3. Handling title template - -Frameworks integrations will abstract these lifecycle functions away, but they are available for custom integrations. - -## `@unhead/dom` - -By default, when entries are updated, the hook `entries:updated` is called, which -will trigger a debounced DOM update. - -The DOM rendered resolves the tags as above and starts patching - -The DOM patching algorithm is non-aggressive and will preserve existing state as much as possible. - -To support mismatch SSR / CSR content, Unhead assigns a `data-h-key="${hash}"` key to rendered attributes when a `key` is provided. - -### Side effects - -When rendering elements or attributes, side effects are collected with the head entry to dispose of when needed. - -When you dispose or update the entry, these side effects will be cleared. - -```ts -myFirstEntry.dispose() -// next time the DOM render is called, the side effects will be cleared -``` diff --git a/docs/content/1.setup/1.unhead/_dir.yml b/docs/content/1.setup/1.unhead/_dir.yml deleted file mode 100644 index 7d7dc2cc..00000000 --- a/docs/content/1.setup/1.unhead/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -title: Unhead -icon: noto:star diff --git a/docs/content/1.setup/2.ssr/0.installation.md b/docs/content/1.setup/2.ssr/0.installation.md deleted file mode 100644 index 851da735..00000000 --- a/docs/content/1.setup/2.ssr/0.installation.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: 'Install Unhead SSR' -description: 'Get started with Unhead SSR by installing the dependency to your project.' -navigation: - title: 'Installation' ---- - -## Setup - -1. Install `@unhead/ssr` dependency to your project: - -::code-group - -```bash [yarn] -yarn add @unhead/ssr -``` - -```bash [npm] -npm install @unhead/ssr -``` - -```bash [pnpm] -pnpm add @unhead/ssr -``` - -:: - -## 1. Generating the SSR payload - -Once you're ready to start displaying tags on the server, you'll need to generate the SSR payload. - -For this you will need the `@unhead/ssr` dependency. - -```ts -import { renderSSRHead } from '@unhead/ssr' - -// head is from createHead() -const payload = await renderSSRHead(head) -``` - -The payload schema looks like the following: - -```ts -export interface SSRHeadPayload { - headTags: string - bodyTags: string - bodyTagsOpen: string - htmlAttrs: string - bodyAttrs: string -} -``` - -### Options - -When using `renderSSRHead`, you can pass an optional `options` object to customize the output. - -```ts -export interface RenderSSRHeadOptions { - omitLineBreaks?: boolean -} -``` - -#### omitLineBreaks - -- Type: `boolean` -- Default: `false` - -Set `omitLineBreaks` to `true` if you prefer to render the head tags without line breaks. - -Example usage: - -```ts -const options = { omitLineBreaks: true } -const payload = await renderSSRHead(head, options) -``` - -This will render the head tags as a single line, omitting any line breaks that would normally be included. - -## 2. Update your app template - -You will need to update your app template to add in the templates for -the SSR tags. - -Different frameworks differ in how they handle this template. - -Some examples below: - -**Lodash template function** - -```html -<html${htmlAttrs}> - <head> - ${headTags} - </head> - <body${bodyAttrs}> - ${bodyTagsOpen} - <div id="app">${appHTML}</div> - ${bodyTags} - </body> -</html> -``` - -**Simple string replace** - -```html -<!DOCTYPE html> -<html<!--htmlAttrs-->> - <head> - <!--headTags--> - <!--preload-links--> - </head> - <body<!--bodyAttrs-->> - <!--bodyTagsOpen--> - <div id="app"><!--app-html--></div> - <script type="module" src="/src/entry-client.js"></script> - <!--bodyTags--> - </body> -</html> -``` - -To handle this type of template you can use this code - -```ts -const headPayload = await renderSSRHead(head) - -Object.entries(headPayload).forEach(([key, value]) => { - html = html.replace(`<!--${key}-->`, value) -}) -``` - -## 3. Done! How hydration works - -When your client-side app hydrates the server head tags, it will attempt to hydrate each -element based on the nodes being equal `$el.isEqualNode($newEl)` or them sharing the same -dedupe key (see [Tag Deduping](/usage/guides/handling-duplicates)). - -If you're rendering content that differs between client and server, you should -specify a `key` attribute if the element does not have a unique dedupe key. - -```ts -useHead({ - script: [ - { - // key is needed to avoid seperate scripts being created - key: 'my-script', - innerHTML: process.server ? '' : 'console.log("hello world")', - } - ] -}) -``` diff --git a/docs/content/1.setup/2.ssr/1.templates.md b/docs/content/1.setup/2.ssr/1.templates.md deleted file mode 100644 index 743b1875..00000000 --- a/docs/content/1.setup/2.ssr/1.templates.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: 'Unhead SSR Templates' -description: 'Get started with Unhead SSR by installing the dependency to your project.' -navigation: - title: 'Templates' ---- - -You will need to update your app template to add in the templates for -the SSR tags. - -Different frameworks differ in how they handle this template. - -In all cases, you'll be using the [renderSSRHead](/api/render/render-ssr-head) function. - -Some examples below: - -## Static String - -```ts -import { renderSSRHead } from '@unhead/ssr' -import { createHead } from 'unhead' - -const head = createHead() - -head.push({ title: 'Hello World ' }) - -const { headTags, bodyTags, bodyTagsOpen, htmlAttrs, bodyAttrs } = await renderSSRHead(head) - -return ` -<!DOCTYPE html> -<html ${htmlAttrs}> - <head> - ${headTags} - </head> - <body ${bodyAttrs}> - ${bodyTagsOpen} - <div id="app"></div> - ${bodyTags} - </body> -</html>` -``` - -## Lodash - -```html -<html${htmlAttrs}> - <head> - ${headTags} - </head> - <body${bodyAttrs}> - ${bodyTagsOpen} - <div id="app">${appHTML}</div> - ${bodyTags} - </body> -</html> -``` - -## String Replace - -```html -<!DOCTYPE html> -<html<!--htmlAttrs-->> - <head> - <!--headTags--> - <!--preload-links--> - </head> - <body<!--bodyAttrs-->> - <!--bodyTagsOpen--> - <div id="app"><!--app-html--></div> - <script type="module" src="/src/entry-client.js"></script> - <!--bodyTags--> - </body> -</html> -``` - -To handle this type of template you can use this code - -```ts -const headPayload = await renderSSRHead(head) - -Object.entries(headPayload).forEach(([key, value]) => { - html = html.replace(`<!--${key}-->`, value) -}) -``` diff --git a/docs/content/1.setup/2.ssr/_dir.yml b/docs/content/1.setup/2.ssr/_dir.yml deleted file mode 100644 index e9aacb1e..00000000 --- a/docs/content/1.setup/2.ssr/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -title: SSR -icon: noto:star diff --git a/docs/content/1.setup/2.ssr/how-it-works.md b/docs/content/1.setup/2.ssr/how-it-works.md deleted file mode 100644 index fdf497f0..00000000 --- a/docs/content/1.setup/2.ssr/how-it-works.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: 'How SSR works' -description: 'Get started with Unhead SSR by installing the dependency to your project.' -navigation: - title: 'How it works' ---- - -When your client-side app hydrates the server head tags, it will attempt to hydrate each -element based on the nodes being equal `$el.isEqualNode($newEl)` or them sharing the same -dedupe key (see [Tag Deduping](/usage/guides/handling-duplicates)). - -If you're rendering content that differs between client and server, you should -specify a `key` attribute if the element does not have a unique dedupe key. - -```ts -useHead({ - script: [ - { - // key is needed to avoid seperate scripts being created - key: 'my-script', - innerHTML: process.server ? '' : 'console.log("hello world")', - } - ] -}) -``` diff --git a/docs/content/1.setup/4.vue/3.best-practices.md b/docs/content/1.setup/4.vue/3.best-practices.md deleted file mode 100644 index f03f1048..00000000 --- a/docs/content/1.setup/4.vue/3.best-practices.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Best Practices -description: Master Vue and Unhead by following the best practices. ---- - -## Avoid Watch and useHead - -Avoid wrapping `useHead` in a watcher. - -```ts -// bad -watch((title) => { - useHead({ - title, - }) -}) -``` - -This is because each call of `useHead` will add a new entry, which has its own side effects. - -Instead, use a computed getter. - -```ts -// good -useHead({ - title: () => title -}) -``` diff --git a/docs/content/1.usage/2.composables/4.use-script.md b/docs/content/1.usage/2.composables/4.use-script.md deleted file mode 100644 index 0ef23a5e..00000000 --- a/docs/content/1.usage/2.composables/4.use-script.md +++ /dev/null @@ -1,674 +0,0 @@ ---- -title: useScript -description: Load third-party scripts with SSR support and a proxied API. ---- - -## Features - -- ๐Ÿชจ Turn a third-party script into a fully typed API -- โ˜• Delay loading your scripts until you need them: `manual` or `Promise` -- ๐Ÿš€ Best performance and privacy defaults -- ๐ŸŽƒ Easily hook into script events: `onload`, `onerror`, etc -- ๐Ÿช Proxy API: Use a scripts functions before it's loaded (or while SSR) -- ๐Ÿ‡น Fully typed APIs - -## Installation - -As of Unhead v2, you will need to add the `@unhead/scripts` dependency to use `useScript`. - -::code-group - -```bash [yarn] -yarn add -D @unhead/scripts -``` - -```bash [npm] -npm install -D @unhead/scripts -``` - -```bash [pnpm] -pnpm add -D @unhead/scripts -``` - -:: - -## Background - -Loading scripts using the `useHead` composable is easy. - -```ts [Google Analytics] -useHead({ - script: [ - // Google Analytics Setup - { innerHTML: `window.dataLayer = window.dataLayer || [], window.gtag = function gtag(...p) { window.dataLayer.push(p) }, window.gtag('js', new Date()), window.gtag('config', options.id);` }, - // Load the script - { src: 'https://www.googletagmanager.com/gtm.js?id=GTM-MNJD4B' } - ] -}) -``` - -However, when loading a third-party script, you often want to access some functionality provided by the script. - -For example, Google Analytics provides a `gtag` function that you can use to track events. - -```ts -// We need to load first: https://www.google-analytics.com/analytics.js -gtag('event', 'page_view', { - page_title: 'Home', - page_location: 'https://example.com', - page_path: '/', -}) -``` - -The API provided by these scripts doesn't work in an SSR environment or if the script isn't loaded yet. -Leading to -a jumbled mess of trying to make sure we _can_ use the API. For TypeScript you'll need to augment global window types to -use the API effectively. - -The `useScript` composable aims to solve these issues and more with the goal of making third-party scripts a breeze to use. - -```ts -const googleAnalytics = useScript('https://www.google-analytics.com/analytics.js', { - beforeInit() { - window.dataLayer = window.dataLayer || [] - window.dataLayer.push('js', new Date()) - window.dataLayer.push('config', options.id) - }, - use() { return { dataLayer: window.dataLayer } } -}) -// fully typed, usable in SSR and when lazy loaded -googleAnalytics.proxy.dataLayer.push('event', 'page_view', { - page_title: 'Home', - page_location: 'https://example.com', - page_path: '/', -}) - -declare global { - interface Window { - dataLayer: any[] - } -} -``` - -## Usage - -### `referrerpolicy` and `crossorigin` - -The `useScript` composable is optimized for end user privacy and security. - -By default, the `referrerpolicy` is set to `no-referrer` and `crossorigin` is set to `anonymous`. - -Some scripts will not run correctly with these settings. If you find yourself having CORS or behavior issues, you should -disable these defaults. - -```ts -const instance = useScript({ - src: 'https://example.com/my-awesome-script.js', - // setting these to false will revert the defaults - referrerpolicy: false, - crossorigin: false, -}, { - use() { - return window.myAwesomeScript - } -}) -``` - -### Script Deduping - -By default, your scripts will be deduped based on the script `src`. - -```ts -const instance = useScript('/my-script.js') -const instance2 = useScript('/my-script.js') -// instance2 will return the same reference as instance without loading a new script -``` - -In cases where the `src` is dynamic and you're using -it in multiple places, you should provide a `key` to the script options. - -```ts -const instance = useScript({ key: 'my-script', src: '/123.js' }) -const instance2 = useScript({ key: 'my-script', src: '/456.js' }) -// instance2 will return the same reference as instance without loading a new script -``` - -### Triggering Script Load - -The `trigger` option is used to control when the script is loaded by the browser. - -It can be one of the following: -- `undefined` | `client`: Script tag will be inserted as the `useScript` is hydrated on the client side. The script will be usable once the network request is complete. -- `manual`: Load the script manually using the `load()` function. Only runs on the client. -- `Promise`: Load the script when the promise resolves. This allows you to load the script after a certain time or event, -for example on the `requestIdleCallback` hook. Only runs on the client. -- `Function`: Load the script when the function is called. Only runs on the client. -- `server`: Insert the script tag into the SSR HTML response (`<script src="...">`). - -When you're using a `trigger` that isn't `server`, the script will not exist within your SSR response, meaning it will only load client-side. - -::code-group - -```ts [Manual] -const { load } = useScript('/script.js', { - trigger: 'manual' -}) -// ... -load((instance) => { - // use the script instance -}) -``` - -```ts [Promise] -useScript('/script.js', { - trigger: new Promise((resolve) => { - setTimeout(resolve, 10000) // load after 10 seconds - }) -}) -``` - -```ts [Idle] -useScript('/script.js', { - trigger: typeof window !== 'undefined' ? window.requestIdleCallback : 'manual' -}) -``` - -```ts [Ref (Vue)] -const shouldLoad = ref(false) -useScript('/script.js', { - trigger: shouldLoad -}) -``` - -:: - -### Waiting for Script Load - -To use the underlying API exposed by a script, it's recommended to use the `onLoaded` function, which accepts -a callback function once the script is loaded. - -::code-block - -```ts [Vanilla] -const { onLoaded } = useScript('/script.js') -onLoaded(() => { - // script ready! -}) -``` - -```ts [Vue] -const { onLoaded } = useScript('/script.js') -onLoaded(() => { - // script ready! -}) -``` - -:: - -If you have registered your script using a `manual` trigger, then you can call `load()` with the same syntax. - -```ts -const { load } = useScript('/script.js', { - trigger: 'manual' -}) -load((instance) => { - // runs once the script loads -}) -``` - -The `onLoaded` function returns a function that you can use to dispose of the callback. For reactive integrations -such as Vue, this will automatically bind to the scope lifecycle. - -::code-block - -```ts [Vanilla] -const { onLoaded } = useScript('/script.js') -const dispose = onLoaded(() => { - // script ready! -}) -// ... -dispose() // nevermind! -``` - -```ts [Vue] -const { onLoaded } = useScript('/script.js') - -onLoaded(() => { - // this will never be called once the scope unmounts -}) -``` - -:: - -If you just need to call a function on a script once it's loaded and don't care about the result, -you may consider using the [Proxy API](#proxy-api) instead. - -### Removing a Script - -When you're done with a script, you can remove it from the document using the `remove()` function. - -```ts -const myScript = useScript('/script.js') - -myScript.remove() -``` - -The `remove()` function will return a boolean indicating if the script was removed in the case where the -script has already been removed. - -### Script Loading Errors - -Sometimes scripts just won't load, this can be due to network issues, browser extensions blocking the script -or many other reasons. - -As the script instance is a native promise, you can use the `.catch()` function. - -```ts -const myScript = useScript('/script.js') - .onError((err) => { - console.error('Failed to load script', err) - }) -``` - -Otherwise, you always check the status of the script using `status`. - -::code-block - -```ts [Vanilla] -const myScript = useScript('/script.js') -myScript.status // 'awaitingLoad' | 'loading' | 'loaded' | 'error' -``` - -```ts [Vue] -const myScript = useScript('/script.js') -myScript.status // Ref<'awaitingLoad' | 'loading' | 'loaded' | 'error'> -``` - -:: - -### Proxy API - -A `proxy` object is accessible on the script instance which provides a consistent interface for calling script functions -regardless of the script being loaded. - -This can be useful in instances where you don't care when the function is called or what it returns. - -```ts -declare global { - interface Window { - analytics: { - event: ((arg: string) => void) - } - } -} - -const analytics = useScript('/analytics.js', { - use() { return window.analytics } -}) -// send an event if or when the script is loaded -analytics.proxy.event('foo') // void -```` - -Using the proxy API will noop in SSR, is stubbable and is future-proofed to call functions of scripts through web workers. - -It's important to know when to and not to use the proxy API, it should not be used for accessing properties or when you -need to know the return of the function. - -```ts -declare global { - interface Window { - analytics: { - event: ((arg: string) => void) - siteId: number - loadUser: () => { id: string } - } - } -} - -const analytics = useScript('/analytics.js', { - use() { return window.analytics } -}) -const val = myScript.proxy.siteId // โŒ val will be a function -const user = myScript.proxy.loadUser() // โŒ the result of calling any function is always void -```` - -## API - -```ts -useScript<API>(scriptOptions, options) -``` - -### Argument: Script Options - -The script options, this is the same as the `script` option for `useHead`. For example `src`, `async`, etc. - -A shorthand for the `src` option is also available where you can just provide the URL as a string. - -::code-block - -```ts [Simple] -useScript('https://www.google-analytics.com/analytics.js') -``` - -```ts [Object] -useScript({ - key: 'google-analytics', // custom key - src: 'https://www.google-analytics.com/analytics.js', - async: true, - defer: true, -}) -``` - -:: - -### Argument: Use Script Options - -#### `trigger` - -- Type: `'undefined' | 'manual' | 'server' | 'client' | Promise<void>` -- Additional Vue Types: `Ref<boolean>` - -A strategy to use for when the script should be loaded. Defaults to `client`. - -::code-group - -```ts [Promise] -useScript({ - src: 'https://example.com/script.js', -}, { - trigger: new Promise((resolve) => { - setTimeout(resolve, 10000) // load after 10 seconds - }) -}) -``` - -```ts [Vue - Ref] -const shouldLoad = ref(false) -useScript({ - src: 'https://example.com/script.js', -}, { - trigger: shouldLoad -}) -``` - -:: - -When `server` is set as the trigger, the script will be injected into the SSR HTML response, allowing for quicker -loading of the script. - -The `client` trigger ensures that the script is only loaded when the script is hydrated on the client-side. - -#### `use` - -- Type: `() => API` - -A function that resolves the scripts API. This is only called client-side. - -```ts -const fathom = useScript<FathomApi>({ - // fathom analytics - src: 'https://cdn.usefathom.com/script.js', -}, { - use: () => window.fathom -}) -fathom.then((api) => { - // api is equal to window.fathom -}) -``` - -## Script Instance API - -The `useScript` composable returns the script instance that you can use to interact with the script. - -### id - -The unique ID of the script instance. - -### status - -The status of the script. Can be one of the following: `'awaitingLoad' | 'loading' | 'loaded' | 'error'` - -In Vue, this is a `Ref`. - -### onLoaded(cb: (instance: ReturnType<typeof use>) => void | Promise<void>): () => void - -A function that is called when the script is loaded. This is useful when you want to access the script directly. - -```ts -const myScript = useScript('/script.js') -myScript.onLoaded(() => { - // ready -}) -``` - -### then(cb: (instance: ReturnType<typeof use>) => void | Promise<void>) - -A function that is called when the script is loaded. This is useful when you want to access the script directly. - -```ts -const myScript = useScript('/script.js') -myScript.onLoaded(() => { - // ready -}) -``` - -### load(callback?: (instance: ReturnType<typeof use>) => void | Promise<void>): Promise<ReturnType<typeof use>> - -Trigger the script to load. This is useful when using the `manual` loading strategy. - -```ts -const { load } = useScript('/script.js', { - trigger: 'manual' -}) -// ... -load() -``` - -You can optionally provide a callback function to run once the script is loaded, this is recommended over using `load()` -as a promise. - -```ts -const { load } = useScript('/script.js', { - trigger: 'manual' -}) -load(() => { - -}) -``` - -### remove() - -Remove the script from the document. - -#### proxy - -The proxy API for calling the script functions. See the [Proxy API](#proxy-api) for further details. - -```ts -const myScript = useScript<MyScriptApi>('/script.js', { - use() { return window.myScript } -}) -myScript.proxy.myFunction('hello') -``` - -#### instance - -Internal value providing the `use()` function, this will be the result. This is passed when resolving the script using `then()` or `load()`. - -```ts -const myScript = useScript<MyScriptApi>('/script.js', { - use() { return window.myScript } -}) -myScript.instance // window.myScript -``` - -### entry - -The internal head entry for the script. This is useful for debugging and tracking the script. - -```ts -const myScript = useScript('/script.js') -myScript.entry // ReturnType<typeof useHead> -``` - -## Examples - -### CloudFlare Analytics - -::code-group - -```ts [Unhead] -import { useScript } from 'unhead' - -interface CloudflareAnalyticsApi { - __cfBeacon: { - load: 'single' - spa: boolean - token: string - } - __cfRl?: unknown -} - -declare global { - interface Window extends CloudflareAnalyticsApi {} -} - -export function useCloudflareAnalytics() { - return useScript<CloudflareAnalyticsApi>({ - 'src': 'https://static.cloudflareinsights.com/beacon.min.js', - 'data-cf-beacon': JSON.stringify({ token: 'my-token', spa: true }), - }, { - use() { - return { __cfBeacon: window.__cfBeacon, __cfRl: window.__cfRl } - }, - }) -} -``` - -```ts [Vue] -import { useScript } from '@unhead/vue' - -interface CloudflareAnalyticsApi { - __cfBeacon: { - load: 'single' - spa: boolean - token: string - } - __cfRl?: unknown -} - -declare global { - interface Window extends CloudflareAnalyticsApi {} -} - -export function useCloudflareAnalytics() { - return useScript<CloudflareAnalyticsApi>({ - 'src': 'https://static.cloudflareinsights.com/beacon.min.js', - 'data-cf-beacon': JSON.stringify({ token: 'my-token', spa: true }), - }, { - use() { - return { __cfBeacon: window.__cfBeacon, __cfRl: window.__cfRl } - }, - }) -} -``` - -:: - -### Fathom Analytics - -::code-group - -```ts [Unhead] -import { useScript } from 'unhead' - -interface FathomAnalyticsApi { - trackPageview: (ctx?: { url: string, referrer?: string }) => void - trackGoal: (eventName: string, value?: { _value: number }) => void -} - -declare global { - interface Window { fathom: FathomAnalyticsApi } -} - -export function useFathomAnalytics() { - return useScript<FathomAnalyticsApi>({ - 'src': 'https://cdn.usefathom.com/script.js', - 'data-site': 'my-site', - // See https://usefathom.com/docs/script/script-advanced - }, { - use: () => window.fathom, - }) -} -``` - -```ts [Vue] -import { useScript } from '@unhead/vue' - -interface FathomAnalyticsApi { - trackPageview: (ctx?: { url: string, referrer?: string }) => void - trackGoal: (eventName: string, value?: { _value: number }) => void -} - -declare global { - interface Window { fathom: FathomAnalyticsApi } -} - -export function useFathomAnalytics() { - return useScript<FathomAnalyticsApi>({ - 'src': 'https://cdn.usefathom.com/script.js', - 'data-site': 'my-site', - // See https://usefathom.com/docs/script/script-advanced - }, { - use: () => window.fathom, - }) -} -``` - -:: - -### Google Analytics - -::code-group - -```ts [Unhead] -import { useScript } from 'unhead' - -interface GoogleAnalyticsApi { - gtag: ((fn: 'event', opt: string, opt2: { [key: string]: string }) => void) -} - -declare global { - interface Window extends GoogleAnalyticsApi {} -} - -export function useGoogleAnalytics() { - return useScript<GoogleAnalyticsApi>({ - src: 'https://www.google-analytics.com/analytics.js', - }, { - use: () => ({ gtag: window.gtag }) - }) -} -``` - -```ts [Vue] -import { useScript } from '@unhead/vue' - -interface GoogleAnalyticsApi { - gtag: ((fn: 'event', opt: string, opt2: { [key: string]: string }) => void) -} - -declare global { - interface Window extends GoogleAnalyticsApi {} -} - -export function useGoogleAnalytics() { - return useScript<GoogleAnalyticsApi>({ - src: 'https://www.google-analytics.com/analytics.js', - }, { - use: () => ({ gtag: window.gtag }) - }) -} -``` - -:: diff --git a/docs/content/1.usage/2.guides/2.positions.md b/docs/content/1.usage/2.guides/2.positions.md deleted file mode 100644 index a11e83a6..00000000 --- a/docs/content/1.usage/2.guides/2.positions.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Tag Position -description: How tags are position in the DOM and how to configure them. ---- - -For non-attribute tags such as `<script>`, `<style>` and `<link>`, they are rendered by default in the document `<head>`. - -But this isn't always useful. Sometimes you need to embed tags in different positions. - -## `tagPosition` - -The `tagPosition` attribute lets you control where the tag is rendered for tags that support it. - -Possible values: -- `head` - Render in the `<head>` (default) -- `bodyOpen` - Render at the start of the `<body>` -- `bodyClose` - Render at the end of the `<body>` - -Note: -- Sorting may not be stricly honoured when moving outside the head - -## Examples - -### Render a script at the end of the document - -```ts -useHead({ - script: [ - { - src: '/my-lazy-script.js', - tagPosition: 'bodyClose', - }, - ], -}) -``` diff --git a/docs/content/1.usage/2.guides/2.sorting.md b/docs/content/1.usage/2.guides/2.sorting.md deleted file mode 100644 index 4c84be3b..00000000 --- a/docs/content/1.usage/2.guides/2.sorting.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Tag Sorting -description: How tags are sorted and how to configure them. ---- - -## Introduction - -Sorting the tags is important to ensure critical tags are rendered first, as well as allowing you to have tags in a specific order that you need them in. - -## Tag Sorting Logic - -Sorting is first done using the [Capo.js](https://rviscomi.github.io/capo.js/) weights, making sure tags are rendered in -a specific way to avoid [Critical Request Chains](https://web.dev/critical-request-chains/) issues as well -as rendering bugs. - -Sorting is done in multiple steps: -- order critical tags first -- order by provided `tagPriority` -- order by natural order they were registered - -### Critical Tags - -The following critical tags have their own default `tagPriority`: - -- **-20** - `<meta charset ...>` -- **-10** - `<base>` -- **0** - `<meta http-equiv="content-security-policy" ...>` -- **10** - `<title>` -- **20** - `<link rel="preconnect" ...>` - -All other tags have a default priority of 100: <meta>, <script>, <link>, <style>, etc - -## `tagPriority` - -You can set custom priorities for tags using the `tagPriority` attribute. - -Providing a number will set the priority to that number. The lower the number, the higher the priority. - -You can also make use of a string alias that adjusts the priority by a relative amount: -- `critical` - **-80** -- `high` - **-10** -- `low` - **20** - -Lastly you can set the priority based on the position of another tag using `before:` or `after:`. This is useful when you need to ensure a tag is rendered before or after another tag. - -### Sort by number - -When providing a number, refer to the priorities set for critical tags above. - -```ts -// some layout we have a js file that is ran -useHead({ - script: [ - { - src: '/not-important-script.js', - }, - ], -}) - -// but in our page we want to run a script before the above -useHead({ - script: [ - { - src: '/very-important-script.js', - tagPriority: 0, - }, - ], -}) - -// <script src=\"/very-important-script.js\"></script> -// <script src=\"/not-important-script.js\"></script> -``` - -### Sort with `before:` and `after:` - -When providing a string, you can use `before:` or `after:` to target a tag key. - -Tag keys are prefixed with their tag name to avoid dedupe collisions, so you need to use the form of `{tagName}:{key}`. - -```ts -useHead({ - script: [ - { - key: 'not-important', - src: '/not-important-script.js', - }, - ], -}) -useHead({ - script: [ - { - // script is the tag name to target, `not-important` is the key we're targeting - tagPriority: 'before:script:not-important', - src: '/must-be-first-script.js', - }, - ], -}) -// <script src=\"/must-be-first-script.js\"></script> -// <script src=\"/not-important-script.js\"></script> -``` - -### Hydration Caveats - -When hydrating the state, either through mounting a SSR document or switching between pages, the package is dealt with a problem. - -How to handle previously rendered tags that need to be replaced? - -To do so Unhead will simply replace the tag in its current position. This provides a nicer UX with less -tags jumping around. - -This means that the `tagPriority` may not be honoured when hydrating. diff --git a/docs/content/1.usage/2.guides/4.inner-content.md b/docs/content/1.usage/2.guides/4.inner-content.md deleted file mode 100644 index 73fd8605..00000000 --- a/docs/content/1.usage/2.guides/4.inner-content.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Inner HTML -description: How to add inner html to tags. ---- - -For tags that set inner content, such as `<style>` and `<script>`, -you can set the inner content using the `textContent` or `innerHTML` properties. - -When using `textContent` the content will have simple sanitisation applied server side. Client side it will use the -`element.textContent` setter. - -โš ๏ธ When using `innerHTML` the content will not be sanitised. Client side it will use the `element.innerHTML` setter. Make sure you sanitise user input if providing it with this property. - -Note: `children` is an alias for `innerHTML` and is deprecated. - -## Example - -```ts -useHead({ - style: [ - { - innerHTML: 'body {color: red}', - }, - ], - noscript: [ - { - textContent: 'Javascript is required', - }, - ], -}) -``` diff --git a/docs/content/1.usage/2.guides/5.title-template.md b/docs/content/1.usage/2.guides/5.title-template.md deleted file mode 100644 index 96806d59..00000000 --- a/docs/content/1.usage/2.guides/5.title-template.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Title Template -description: Learn how to set a title template for your site. ---- - -Title templates allow you to render your page titles in a uniform way. - -## `titleTemplate` - -Using the `titleTemplate` key allows you to set a template for your page titles. - -Title template can either be: -- A string with a `%s`, that is replaced with the `title` -- A function which has an optional title as the only argument and returns a string - -### String - -```ts -useHead({ - titleTemplate: 'My Site - %s', -}) -``` - -### Function - -```ts -useHead({ - titleTemplate: (title?: string) => `${title} - My Site`, -}) -``` - -## Disabling titleTemplate - -If you want to disable the title template for a specific page, you can set `titleTemplate` to `null`. - -```ts -useHead({ - titleTemplate: null, -}) -``` - -## Examples - -### Setting a default title - -```ts -useHead({ - titleTemplate: (title?: string) => !title ? 'Default title' : `${title} - My Site`, -}) -``` diff --git a/docs/content/3.plugins/plugins/_dir.yml b/docs/content/3.plugins/plugins/_dir.yml deleted file mode 100644 index 382935c8..00000000 --- a/docs/content/3.plugins/plugins/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -title: Plugins -icon: noto:package diff --git a/docs/content/3.plugins/recipes/_dir.yml b/docs/content/3.plugins/recipes/_dir.yml deleted file mode 100644 index bdf5eaf1..00000000 --- a/docs/content/3.plugins/recipes/_dir.yml +++ /dev/null @@ -1,2 +0,0 @@ -title: Recipes -icon: noto:cook diff --git a/docs/content/_code-examples.md b/docs/content/_code-examples.md deleted file mode 100644 index 6bd27f4f..00000000 --- a/docs/content/_code-examples.md +++ /dev/null @@ -1,70 +0,0 @@ -::code-group - -```ts [useHead] -// all the goodies -useHead({ - // Titles - title: 'Hello World', - titleTemplate: '%s %separator %siteName', - // Template params - templateParams: { separator: '|', siteName: 'My App' }, - // Classes - bodyAttrs: { class: { overflow: true } }, - // Deduping - script: [{ key: '123', src: '/script.js' }], -}) -``` - -```ts [useServerHead] -// server only head tags for improved performance -useServerHead({ - link: [ - { - href: '/assets/MyFont.css', - rel: 'stylesheet', - type: 'text/css' - } - ] -}) -``` - -```ts [useSeoMeta] -// the easiest meta tags -useSeoMeta({ - charset: 'utf-8', - description: 'Welcome to my site', - ogImage: 'https://example.com/image.jpg', - ogLocale: 'en', - ogLocaleAlternate: ['fr', 'zh'], -}) -``` - -```ts [DOM events] -// DOM events right in your head that _just work_ -useHead({ - script: [ - { - // async prop support - src: './script.js', - // dom handlers - onload: () => alert('woo'), - }, - ], - htmlAttrs: { onclick: () => alert('just works') }, -}) -``` - -```ts [useSchemaOrg] -// schema.org graphs as simple as it gets -useSchemaOrg([ - defineWebPage(), - defineWebSite({ - name: 'My Awesome Website', - }), - defineOrganization({ - name: 'Acme Corp', - }), -]) -``` - -:: diff --git a/docs/content/api/0.core/create-head.md b/docs/content/api/0.core/create-head.md deleted file mode 100644 index c3719116..00000000 --- a/docs/content/api/0.core/create-head.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Create Head -description: How to create your Unhead instance. ---- - -**Type:** - -```ts -export function createHead<T extends Record<string, any> = Head>(options: CreateHeadOptions = {}): Unhead -``` - -The `createHead` function is used to create an instance of Unhead. - -## Example - -```ts -import { createHead } from 'unhead' - -createHead() -``` - -## Types - - ```ts - export interface Unhead<Input extends Record<string, any> = Head> { - /** - * The active head entries. - */ - headEntries: () => HeadEntry<Input>[] - /** - * Create a new head entry. - */ - push: (entry: Input, options?: HeadEntryOptions) => ActiveHeadEntry<Input> - /** - * Resolve tags from head entries. - */ - resolveTags: () => Promise<HeadTag[]> - /** - * Exposed hooks for easier extension. - */ - hooks: Hookable<HeadHooks> - /** - * Resolved options - */ - resolvedOptions: CreateHeadOptions - } - ``` diff --git a/docs/content/api/0.core/hooks.md b/docs/content/api/0.core/hooks.md deleted file mode 100644 index 55aad549..00000000 --- a/docs/content/api/0.core/hooks.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Hooks -description: Access the hooks of Unhead. ---- - -**Type:** - -```ts -(entry: Input, options?: HeadEntryOptions) => ActiveHeadEntry<Input> -``` - -Can be used to register and call the hooks of Unhead. Powered by Hookable. - -Hooks are used for all core functionality within Unhead. - -## Examples - -### Call hook - -```ts -import { createHead } from 'unhead' - -const head = createHead() - -// trigger DOM rendering -head.hooks.callHook('entries:updated') -``` - -### Attach hook - -```ts -import { createHead } from 'unhead' - -const head = createHead({ - hooks: { - init() { console.log('ready') } - } -}) -``` - -## Available hooks - -### Core hooks - -- `'init'`: `ctx: Unhead<any>`. - -- `'entries:updated'`: `ctx: Unhead<any>`. - -- `'entries:resolve'`: `ctx: EntryResolveCtx<any>`. - -- `'tag:normalise'`: `ctx: { tag: HeadTag; entry: HeadEntry<any>; resolvedOptions: CreateHeadOptions }`. - -- `'tags:beforeResolve'`: `ctx: { tags: HeadTag[] }`. - -- `'tags:resolve'`: `ctx: { tags: HeadTag[] }`. - -### DOM hooks - -- `'dom:beforeRender'`: `ctx: ShouldRenderContext & { tags: DomRenderTagContext[] }`. - -- `'dom:renderTag'`: `ctx: DomRenderTagContext`, `document: Document`, and `track: any`. - -- `'dom:rendered'`: `ctx: { renders: DomRenderTagContext[] }`. - -### SSR hooks - -- `'ssr:beforeRender'`: `ctx: ShouldRenderContext`. - -- `'ssr:render'`: `ctx: { tags: HeadTag[] }`. - -- `'ssr:rendered'`: `ctx: SSRRenderContext`. diff --git a/docs/content/api/0.core/push.md b/docs/content/api/0.core/push.md deleted file mode 100644 index b2bf1b24..00000000 --- a/docs/content/api/0.core/push.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Push -description: Push an entry to Unhead. ---- - -**Type:** - -```ts -(entry: Input, options?: HeadEntryOptions) => ActiveHeadEntry<Input> -``` - -Pushes an entry to the active head. - -This is a lower-level function that is used internally with composable functions like `useHead`. - -## Example - -```ts -import { createHead } from 'unhead' - -const head = createHead() - -head.push({ - title: 'Hello World' -}) -``` - -## Using the Entry API - -The `push` function will not reactive to your data changes. You will need to use the returned entry API to handle lifecycle. - -```ts -import { createHead } from 'unhead' - -const head = createHead() - -// push initial -const input = { title: 'Hello World' } -const entry = head.push(input) - -// push changes -input.title = 'Hello World 2' -entry.patch(entry) - -// remove entry -entry.dispose() -``` diff --git a/docs/content/api/0.core/resolve-tags.md b/docs/content/api/0.core/resolve-tags.md deleted file mode 100644 index 7ae525f6..00000000 --- a/docs/content/api/0.core/resolve-tags.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Resolve Tags -description: Generate the list of tags that will be rendered. ---- - -**Type:** - -```ts -() => Promise<HeadTag[]> -``` - -Generate the list of tags that will be rendered. This is used internally for DOM rendering and SSR render. - -## Example - -```ts -import { createHead } from 'unhead' - -const head = createHead() - -head.push({ title: 'Hello World ' }) - -await head.resolveTags() - -// [ -// { tag: 'title', props: { textContent: 'Hello World' } } -// ] -``` diff --git a/docs/content/api/0.core/use.md b/docs/content/api/0.core/use.md deleted file mode 100644 index 7ba3ec33..00000000 --- a/docs/content/api/0.core/use.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Use -description: Add a plugin to Unhead. ---- - -**Type:** - -```ts -export type use = (plugin: HeadPlugin) => void -``` - -Adds a plugin to Unhead. - -This will register the hooks used by the plugin. - -## Example - -```ts -import { createHead } from 'unhead' - -const head = createHead() - -const deleteFooPlugin = defineHeadPlugin({ - hooks: { - 'tag:normalise': function ({ tag }) { - delete tag.props.foo - }, - } -}) - -head.use(deleteFooPlugin) -``` diff --git a/docs/content/api/2.render/debounced-render-dom-head.md b/docs/content/api/2.render/debounced-render-dom-head.md deleted file mode 100644 index 91e0a58d..00000000 --- a/docs/content/api/2.render/debounced-render-dom-head.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: debouncedRenderDOMHead -description: Render the Unhead tags to the DOM using a debounce function. ---- - -**Type:** - -```ts -function debouncedRenderDOMHead<T extends Unhead>(head: T, options: DebouncedRenderDomHeadOptions = {}): Promise<void> -``` - -```ts -interface DebouncedRenderDomHeadOptions { - /** - * Document to use for rendering. Allows stubbing for testing. - */ - document?: Document - /** - * Specify a custom delay function for delaying the render. - */ - delayFn?: (fn: () => void) => void -} -``` - -Render the Unhead tags to the DOM using a debounce function. - -This is useful for when you want to render the tags to the DOM, but don't want to do it immediately. - -## Example - -```ts -import { debouncedRenderDOMHead } from '@unhead/dom' -import { createHead } from 'unhead' - -const head = createHead() - -head.push({ title: 'Hello World ' }) - -debouncedRenderDOMHead(head, { - // wait 1 second before rendering - delayFn: fn => setTimeout(fn, 1000) -}) -``` diff --git a/docs/content/api/2.render/render-dom-head.md b/docs/content/api/2.render/render-dom-head.md deleted file mode 100644 index 5032b1bc..00000000 --- a/docs/content/api/2.render/render-dom-head.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: renderDOMHead -description: Render the head to the DOM. ---- - -**Type:** - -```ts -function renderDOMHead<T extends Unhead<any>>(head: T, options: RenderDomHeadOptions = {}): void -``` - -```ts -interface RenderDomHeadOptions { - /** - * Document to use for rendering. Allows stubbing for testing. - */ - document?: Document -} -``` - -Render the head to the DOM. - -This is useful for when you want to render the tags to the DOM immediately. - -## Example - -```ts -import { renderDOMHead } from '@unhead/dom' -import { createHead } from 'unhead' - -const head = createHead() - -head.push({ title: 'Hello World ' }) - -renderDOMHead(head) -``` diff --git a/docs/content/api/2.render/render-ssr-head.md b/docs/content/api/2.render/render-ssr-head.md deleted file mode 100644 index 0bd16aa9..00000000 --- a/docs/content/api/2.render/render-ssr-head.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: renderSSRHead -description: Render Unhead to a string that be can be server side rendered. ---- - -**Type:** - -```ts -function renderSSRHead<T extends Record<string, any>>(head: Unhead<T>): Promise<SSRHeadPayload> -``` - -```ts -export interface SSRHeadPayload { - headTags: string - bodyTags: string - bodyTagsOpen: string - htmlAttrs: string - bodyAttrs: string -} -``` - -Render Unhead to a string that can be server side rendered. - -This is useful for when you want to render the tags to a string that can be used in SSR. - -## Example - -```ts -import { renderSSRHead } from '@unhead/ssr' -import { createHead } from 'unhead' - -const head = createHead() - -head.push({ title: 'Hello World ' }) - -// requires top-level await -const { headTags, bodyTags, bodyTagsOpen, htmlAttrs, bodyAttrs } = await renderSSRHead(head) - -return ` -<!DOCTYPE html> -<html ${htmlAttrs}> - <head> - ${headTags} - </head> - <body ${bodyAttrs}> - ${bodyTagsOpen} - <div id="app"></div> - ${bodyTags} - </body> -</html> -` diff --git a/docs/content/schema-org/5.api/_dir.yml b/docs/content/schema-org/5.api/_dir.yml deleted file mode 100644 index 04d91e0c..00000000 --- a/docs/content/schema-org/5.api/_dir.yml +++ /dev/null @@ -1 +0,0 @@ -title: API diff --git a/docs/content/schema-org/5.releases/2.v1-release.md b/docs/content/schema-org/5.releases/2.v1-release.md deleted file mode 100644 index dac64bb2..00000000 --- a/docs/content/schema-org/5.releases/2.v1-release.md +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: v1 Release -description: Release v1 is here, learn what new features are available and how to migrate. -navigation: false ---- - -## Background - -After releasing 0.x it was clear that the package was missing some functionality: -- No schema.dts support -- Package added ~30kb to your page weight -- Reactivity was dodgy - -After a few weeks rebuilding the core and struggling with the module resolutions, I've managed to solve all of the above. - -Breaking changes were attempted to be minimised but have been implemented where needed to simplify the API. - -## ๐Ÿš€ Features - -### ๐ŸŒฒ Performance Improvements - -The package now supports mocking out runtime define functions and components for client-side builds. - -- **Ships 0kb of JS to the client - ~30kb reduction!** This is enabled by default for environments using SSR. See the `client` [User Config](/schema-org/getting-started/params) for more details. -- Script is embedded to the end of the `body` to avoid slowing down DOM render - -### ๐Ÿ‡น Simple and Full Types - -Types for define functions are now runtime, supporting switching the types being used. - -- **Supports schema-dts** You can opt-in to "full" mode which augments the types to use [schema-dts](https://github.com/google/schema-dts). - See the `full` [User Config](/schema-org/getting-started/params) for more details. -- **Reactivity Type** Types for fields are now all `MaybeRef`able. -- **Automatic Aliasing** When switching between full and simple modes your tsconfig.json wil be updated for you. - -### ๐Ÿ’ช New Core - -The core was rebuilt and is now available as its own package: [@unhead/schema-org](https://github.com/harlan-zw/unhead-schema-org). - -- **Improved reactivity** -- Less performance overhead in resolving graph -- Runtime overrides of user config -- New Schema.org: [Course](/schema-org/schema/course), [Event](/schema-org/schema/event), [Book](/schema-org/schema/book), [SoftwareApp](/schema-org/schema/software-app) -- Better resolving of relationships requiring less boilerplate - -### Others - -- Webpack support -- New Docs powered by Docus - -## Migration Guide - -As a first step, you should follow the new installation docs for your framework again and -verify integration is up-to-date: - -- [Nuxt](/guide/getting-started/nuxt) -- [Vitesse](/guide/getting-started/vitesse) -- [Vite](/guide/getting-started/vite) -- [VitePress](/guide/getting-started/vitepress) - -### High Risk - Breaking Changes - -#### Partial define functions removed - -To allow for empty define functions while providing a strict API, the `define${Node}Partial` functions existed. This has been removed to simplify the API. - -You will need to remove any define partial functions in favour of the main define functions. - -::code-group - -```ts [Before - v0] -defineWebPagePartial({ - // ... -}) -``` - -```ts [Current - v1] -defineWebPage({ - // ... -}) -``` - -:: - -#### Component prop `render-scoped-slots` removed - -Previously you were able to provide the `render-scoped-slots` prop to allow scoped slots to render. This was useful -to minimise code, but was removed as the functionality was misleading. - -You will now need to render within the default slot. - -::code-group - -```vue {2} [Before - v0] -<template> - <SchemaOrgQuestion render-scoped-slots> - <template #question> - What is the question? - </template> - <template #answer> - Not sure - </template> - </SchemaOrgQuestion> -</template> -``` - -```vue [Current - v1] -<template> - <SchemaOrgQuestion> - <template #question> - What is the question? - </template> - <template #answer> - Not sure - </template> - <div> - <div class="font-bold mb-3 text-xl"> - What is the question? - </div> - <div>Not sure</div> - </div> - </SchemaOrgQuestion> -</template> -``` -:: - -#### SchemaOrgInspector renamed to SchemaOrgDebug - -::code-group - -```vue {2} [Before - v0] -<template> - <SchemaOrgInspector /> -</template> -``` - -```vue [Current - v1] -<template> - <SchemaOrgDebug /> -</template> -``` -:: - -#### SearchAction and ReadAction composables renamed - -::code-group - -```ts [Before - v0] -defineWebSite({ - potentialAction: [ - asSearchAction({ - target: '/search?q={search_term_string}' - }) - ] -}) -``` - -```ts [Current - v1] -defineWebSite({ - potentialAction: [ - defineSearchAction({ - target: '/search?q={search_term_string}' - }) - ] -}) -``` -:: - -## Next Steps - -Once you have finished migrating, it's worth re-testing your Schema.org using https://validator.schema.org/ and https://search.google.com/test/rich-results. - -If you see any issues please [create an issue](https://github.com/vueuse/schema-org/issues/new). diff --git a/docs/content/schema-org/_dir.yml b/docs/content/schema-org/_dir.yml deleted file mode 100644 index 45ff8b4d..00000000 --- a/docs/content/schema-org/_dir.yml +++ /dev/null @@ -1 +0,0 @@ -title: Schema.org diff --git a/docs/error.vue b/docs/error.vue deleted file mode 100644 index bd3b920b..00000000 --- a/docs/error.vue +++ /dev/null @@ -1,38 +0,0 @@ -<script setup lang="ts"> -import type { NuxtError } from '#app' - -defineProps<{ - error: NuxtError -}>() - -useSeoMeta({ - title: 'Page not found', - description: 'We are sorry but this page could not be found.', -}) - -const { data: navigation } = await useLazyAsyncData('navigation', () => fetchContentNavigation(), { - default: () => [], - // transform: (navigation) => { - // navigation = navigation.find(link => link._path === prefix.value)?.children || [] - // - // return prefix.value === '/main' ? removePrefixFromNavigation(navigation) : navigation - // } -}) - -// Provide -provide('navigation', navigation) -</script> - -<template> - <div> - <Header /> - - <UContainer> - <UMain> - <UPage> - <UPageError :error="error" /> - </UPage> - </UMain> - </UContainer> - </div> -</template> diff --git a/docs/migration.md b/docs/migration.md new file mode 100644 index 00000000..92c0070e --- /dev/null +++ b/docs/migration.md @@ -0,0 +1,403 @@ +--- +title: Migrate to Unhead v2 +description: Learn about how to migrate to Unhead v2 from v1 +navigation: + title: Upgrade Guide +--- + +## Introduction + +The goal of Unhead v2 was to remove deprecations and remove the implicit context implementation. + +### Legacy Support + +Unhead v2 is mostly fully backwards compatible with Unhead v1. + +While not recommended, if upgrading is not possible for you, you can change your imports to the following: + +::code-group + +```diff [TypeScript] +-import { createServerHead, useHead } from 'unhead' ++import { createServerHead, useHead } from 'unhead/legacy' +``` + +```diff [Vue] +-import { createServerHead, useHead } from '@unhead/vue' ++import { createServerHead, useHead } from '@unhead/vue/legacy' +``` + +:: + +This will be removed in a future minor version, so you should lock your dependencies to the version that works for you. + +## Client / Server Subpath Exports + +๐Ÿšฆ Impact Level: Critical + +::tip +Nuxt should not be effected by this change. +:: + +**โš ๏ธ Breaking Changes:** + +- `createServerHead()`{lang="ts"} and `createHead()`{lang="ts"} exports from `unhead` are removed + +The path where you import `createHead` from has been updated to be a subpath export. + +Please follow the updated installation instructions or simply update the import to use the subpath. + +::TabComparison + +<div label="TypeScript" icon="i-vscode-icons-file-type-typescript"> + +**Client bundle:** + +```diff +-import { createServerHead } from 'unhead' ++import { createHead } from 'unhead/client' + +// avoids bundling server plugins +createHead() +``` + +**Server bundle:** + +```diff +-import { createServerHead } from 'unhead' ++import { createHead } from 'unhead/server' + +// avoids bundling server plugins +-createServerHead() ++createHead() +``` + +</div> + +<div label="Vue" icon="i-vscode-icons-file-type-vue"> + +**Client bundle:** + +```diff +-import { createHead } from '@unhead/vue' ++import { createHead } from '@unhead/vue/client' +import { createApp } from 'vue' + +const app = createApp() +const head = createHead() +app.use(head) +``` + +**Server bundle:** + +```diff +-import { createServerHead } from '@unhead/vue' ++import { createHead } from '@unhead/vue/server' +import { createApp } from 'vue' + +const app = createApp() + +-const head = createServerHead() ++const head = createHead() + +app.use(head) +``` + +</div> + +:: + +## Removed Implicit Context + +๐Ÿšฆ Impact Level: Critical + +::tip +Nuxt should not be effected by this change. +:: + +**โš ๏ธ Breaking Changes:** + +- `getActiveHead()`{lang="ts"}, `activeHead`{lang="ts"} exports are removed +- Vue Only: `setHeadInjectionHandler()`{lang="ts"} is removed +- Vue Only: Error may be thrown when using `useHead()`{lang="ts"} after async operations + +The implicit context implementation kept a global instance of Unhead available so that you could use the `useHead()`{lang="ts"} composables +anywhere in your application. + +```ts +useHead({ + title: 'This just worked!' +}) +``` + +While safe client side, this was a leaky abstraction server side and led to memory leaks in some cases. + +In v2, the core composables no longer have access to the Unhead instance. Instead, you must pass the Unhead instance to the composables. + +::note +Passing the instance is only relevant if you're importing from `unhead`. In JavaScript frameworks we tie the context to the framework itself so you +don't need to worry about this. +:: + +::code-group + +```ts [TypeScript v2] +import { useHead } from 'unhead' + +// example of getting the instance +const unheadInstance = useMyApp().unhead +useHead(unheadInstance, { + title: 'Looks good' +}) +``` + +```ts [TypeScript v1] +import { useHead } from 'unhead' + +useHead({ + title: 'Just worked! But with SSR issues' +}) +``` + +:: + +For frameworks users, you may run into issues with the context being lost. + +::code-group + +```vue [Vue Context Lost] +<script setup lang="ts"> +// In Vue this happens in lifecycle hooks where we have async operations. +onMounted(async () => { + await fetchSomeData() + useHead({ + title: 'This will not work' + }) +}) +</script> +``` + +:: + +If you're getting errors on your `useHead()`{lang="ts"} about context, check the new documentation: + +- [Vue: Understanding Async Context and useHead()](/docs/vue/guides/managing-context) +- [React: Understanding Async Context and useHead()](/docs/react/guides/managing-context) + +## Removed `vmid`, `hid`, `children`, `body` + +๐Ÿšฆ Impact Level: High + +For legacy support with Vue Meta we allowed end users to provide deprecated properties: `vmid`, `hid`, `children` and `body`. + +You must either update these properties to the appropriate replacement, remove them, or you can use the `DeprecationsPlugin`. + +**Meta tags with `vmid`, `hid`** + +These are already deduped magically so you can safely remove them there. + +```diff +useHead({ + meta: [{ + name: 'description', +- vmid: 'description' +- hid: 'description' + }] +}) +``` + +**Other Tags with `vmid`, `hid`** + +Use `key` if you need the deduplication feature. This is useful for tags that may change from server to client +rendering. + +```diff +useHead({ + script: [{ +- vmid: 'my-key' +- hid: 'my-key' ++ key: 'my-key', + }] +}) +``` + +**Using `children`** + +The `children` key is a direct replacement of `innerHTML` which you should use instead. + +::Caution +When migrating your code ensure that you're not dynamically setting `innerHTML` as this can lead to XSS vulnerabilities. +:: + +```diff +useHead({ + script: [ + { +- children: '..' ++ innerHTML: '..' + } + ] +}) +``` + +**Using `body`** + +The `body` key should be updated to use the Tag Position feature. + +```diff +useHead({ + script: [ + { +- body: true ++ tagPosition: 'bodyClose' + } + ] +}) +``` + +**Use Deprecations Plugin** + +```ts +import { createHead } from 'unhead' +import { DeprecationsPlugin } from 'unhead/optionalPlugins' + +const unhead = createHead({ + plugins: [DeprecationsPlugin] +}) +``` + +## Vue 2 Support + +๐Ÿšฆ Impact Level: Critical + +Unhead v2 no longer supports Vue v2. If you're using Vue v2, you will need to lock your dependencies to the latest v1 version of Unhead. + +## Promise Input Support + +๐Ÿšฆ Impact Level: Medium + +If you have promises as input they will no longer be resolved, either await the promise before passing it along or register the optional promises plugin. + +**Option 1: Await Promise** + +```diff +useHead({ + link: [ + { +- href: import('~/assets/MyFont.css?url'), ++ href: await import('~/assets/MyFont.css?url'), + rel: 'stylesheet', + type: 'text/css' + } + ] +}) +``` + +**Option 2: Promise Plugin** + +```ts +import { PromisePlugin } from 'unhead/optionalPlugins' + +const unhead = createHead({ + plugins: [PromisePlugin] +}) +``` + +## Updated `useScript()`{lang="ts"} + +๐Ÿšฆ Impact Level: High + +**โš ๏ธ Breaking Changes:** + +- `useScript()`{lang="ts"} composable is now exported from `@unhead/scripts` +- Script instance is no longer augmented as a proxy and promise +- `script.proxy`{lang="ts"} is rewritten for simpler, more stable behavior +- `stub()`{lang="ts"} and runtime hook `script:instance-fn` are removed + +You will need to update any `useScript()`{lang="ts"} calls to be from `@unhead/scripts`. + +::TabComparison + +```diff [TypeScript] +-import { useScript } from 'unhead' ++import { useScript } from '@unhead/scripts' +``` + +```diff [Vue] +-import { useScript } from '@unhead/vue' ++import { useScript } from '@unhead/scripts/vue' +``` + +:: + +**Legacy Subpath Export** + +For the underlying logic changes, you can opt-in the previous behavior by importing from the legacy subpath export. + +```ts +import { useScript } from '@unhead/scripts/legacy' + +// same behavior as v1 +useScript() +``` + +```ts +import { useScript } from '@unhead/scripts/vue-legacy' + +// same behavior as v1 +useScript() +``` + +**Replacing promise usage** + +If you're using the script as a promise you should instead opt to use the `onLoaded()` functions. + +```diff +const script = useScript() + +-script.then(() => console.log('loaded') ++script.onLoaded(() => console.log('loaded')) +``` + +**Replacing proxy usage** + +If you're accessing the underlying API directly from the script instance, you will now need to only access it from the `.proxy`. + +```diff +const script = useScript('..', { + use() { return { foo: [] } } +}) + +-script.foo.push('bar') ++script.proxy.foo.push('bar') +``` + +**Replacing `stub()`** + +If you were using stub for anything you should replace this with either custom `use()` behavior. + +```diff +const script = useScript('...', { +- stub() { return { foo: import.meta.server ? [] : undefined } } +}) + ++script.proxy = {} // your own implementation +``` + +## Tag Sorting Updated + +๐Ÿšฆ Impact Level: :UBadge{color="success" variant="subtle" size="sm" label="Low"} + +An optional [Capo.js](https://rviscomi.github.io/capo.js/) plugin was added to Unhead, in v2 we make this the default sorting behavior. + +::warning +As all head tags may be re-ordered this will break any snapshot tests that you have in place and in some rare cases may lead to performance regressions. +:: + +You can opt-out of Capo.js sorting by providing the option. + +```ts +createHead({ + disableCapoSorting: true, +}) +``` diff --git a/docs/nuxt.config.ts b/docs/nuxt.config.ts deleted file mode 100755 index eb1c43ee..00000000 --- a/docs/nuxt.config.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { dirname } from 'pathe' -import { readPackageJSON } from 'pkg-types' - -const pkgJson = readPackageJSON(`${dirname(__dirname)}/package.json`) - -export default defineNuxtConfig({ - extends: [ - 'nuxt-lego', - '@nuxt/ui-pro', - ], - - modules: [ - '@nuxt/ui', - '@vueuse/nuxt', - '@nuxt/content', - '@nuxt/fonts', - 'nuxt-og-image', - 'nuxt-icon', - '@nuxtjs/seo', - '@nuxt/image', - '@nuxt/scripts', - ], - - build: { - transpile: ['shiki'], - }, - - site: { - name: 'Unhead', - url: 'unhead.unjs.io', - description: 'Unhead is the any-framework document head manager built for performance and delightful developer experience.', - tagline: 'Get your <head> in the game.', - }, - - runtimeConfig: { - public: { - version: pkgJson.version, - }, - }, - - scripts: { - registry: { - fathomAnalytics: { - site: 'BRDEJWKJ', - }, - }, - }, - - nitro: { - prerender: { - failOnError: false, - crawlLinks: true, - routes: ['/'], - }, - }, - - content: { - highlight: { - theme: { - light: 'github-light', - default: 'material-theme-lighter', - dark: 'material-theme-palenight', - }, - }, - }, - - ui: { - global: true, - }, - - sitemap: { - strictNuxtContentPaths: true, - xslColumns: [ - { label: 'URL', width: '50%' }, - { label: 'Last Modified', select: 'sitemap:lastmod', width: '25%' }, - { label: 'Priority', select: 'sitemap:priority', width: '12.5%' }, - { label: 'Change Frequency', select: 'sitemap:changefreq', width: '12.5%' }, - ], - }, - - app: { - head: { - link: [ - { rel: 'stylesheet', href: 'https://rsms.me/inter/inter.css' }, - ], - - bodyAttrs: { - class: 'antialiased font-sans text-gray-700 dark:text-gray-200 bg-white dark:bg-gray-900', - }, - seoMeta: { - googleSiteVerification: 'SnwVo-uFg39U69WHDoKma6bdT7hoh7sNYrviT8QuJww', - themeColor: [ - { content: '#18181b', media: '(prefers-color-scheme: dark)' }, - { content: 'white', media: '(prefers-color-scheme: light)' }, - ], - }, - }, - }, - - devtools: { - enabled: true, - }, - - tailwindcss: { - viewer: false, - }, - - seo: { - // redirectToCanonicalSiteUrl: true, - }, - - ogImage: { - // eslint-disable-next-line node/prefer-global/process - debug: process.dev, - }, - - experimental: { - // asyncContext: true, - headNext: true, - externalVue: false, - }, - - compatibilityDate: '2024-07-22', -}) diff --git a/docs/package.json b/docs/package.json deleted file mode 100755 index c0d8f65e..00000000 --- a/docs/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "unhead-docs", - "private": true, - "scripts": { - "dev": "nuxi dev", - "build": "nuxi build", - "generate": "nuxi build", - "preview": "nuxi preview" - }, - "devDependencies": { - "@iconify-json/heroicons": "^1.2.2", - "@iconify-json/lucide": "^1.2.25", - "@iconify-json/noto": "^1.2.2", - "@iconify-json/ph": "^1.2.2", - "@iconify-json/simple-icons": "^1.2.22", - "@nuxt/content": "^3.0.1", - "@nuxt/devtools": "^1.7.0", - "@nuxt/fonts": "0.10.3", - "@nuxt/image": "^1.9.0", - "@nuxt/scripts": "^0.9.5", - "@nuxt/ui": "2.21.0", - "@nuxt/ui-pro": "1.7.0", - "@nuxtjs/seo": "2.1.0", - "@vueuse/nuxt": "^12.5.0", - "nuxt": "3.15.3", - "nuxt-icon": "0.6.10", - "nuxt-lego": "^0.0.14", - "vue": "3.5.13" - } -} diff --git a/docs/pages/[...slug].vue b/docs/pages/[...slug].vue deleted file mode 100644 index e0ea5d7e..00000000 --- a/docs/pages/[...slug].vue +++ /dev/null @@ -1,138 +0,0 @@ -<script setup lang="ts"> -import { defineOgImageComponent, findPageHeadline, mapContentNavigation } from '#imports' - -const route = useRoute() - -const { data: page } = await useAsyncData(`docs-${route.path}`, () => queryContent(route.path).findOne()) -if (!page.value) - throw createError({ statusCode: 404, statusMessage: 'Page not found' }) - -const { data: surround } = await useAsyncData(`docs-${route.path}-surround`, () => queryContent() - .only(['_path', 'title', 'navigation', 'description']) - .where({ _extension: 'md', navigation: { $ne: false } }) - .findSurround(route.path.endsWith('/') ? route.path.slice(0, -1) : route.path)) - -useSeoMeta({ - title: () => page.value?.title, - description: () => page.value?.description, -}) - -defineOgImageComponent('NuxtSeo', { - title: page.value?.title, - description: page.value?.description, - colorMode: 'light', - theme: '#ecdc5a', -}) - -const navigation = inject('navigation') -const children = computed(() => { - return navigation.value.find((item) => { - return route.path.startsWith(item._path) - })?.children || [] -}) - -const headline = computed(() => findPageHeadline(page.value)) -const communityLinks = computed(() => [ - { - icon: 'i-ph-pen-duotone', - label: 'Edit this page', - to: `https://github.com/unjs/unhead/edit/main/docs/content/${page?.value?._file}`, - target: '_blank', - }, - { - icon: 'i-ph-chat-centered-text-duotone', - label: 'Discord Support', - to: 'https://discord.gg/275MBUBvgP', - target: '_blank', - }, - { - icon: 'i-ph-hand-heart-duotone', - label: 'Become a Sponsor', - to: 'https://github.com/sponsors/harlan-zw', - target: '_blank', - }, -]) - -const ecosystemLinks = [ - { - label: 'Zhead', - to: 'https://zhead.dev', - target: '_blank', - }, - { - label: 'Unlighthouse', - to: 'https://unlighthouse.dev', - target: '_blank', - }, - { - label: 'Request Indexing', - to: 'https://requestindexing.com', - target: '_blank', - }, -] -</script> - -<template> - <UMain> - <UPage :ui="{ wrapper: 'xl:gap-10' }"> - <template #left> - <UAside> - <UNavigationTree :links="mapContentNavigation(children)" /> - </UAside> - </template> - <div> - <UPage :ui="{ wrapper: 'xl:gap-18' }"> - <UPageHeader :title="page.title" :description="page.description" :links="page.links" :headline="headline" /> - - <UPageBody prose class="pb-0"> - <ContentRenderer v-if="page.body" :value="page" /> - <hr v-if="surround?.length" class="my-8"> - <UContentSurround :surround="surround" /> - </UPageBody> - - <template #right> - <UContentToc :links="page.body?.toc?.links || []"> - <template #bottom> - <div class="hidden !mt-6 lg:block space-y-6"> - <UDivider dashed /> - <Ads /> - <UDivider v-if="page.body?.toc?.links?.length" dashed /> - <UPageLinks title="Community" :links="communityLinks" /> - <UDivider dashed /> - <UPageLinks title="Ecosystem" :links="ecosystemLinks" /> - </div> - </template> - </UContentToc> - </template> - </UPage> - </div> - </UPage> - </UMain> -</template> - -<style> -::-webkit-scrollbar { - width: 8px; - height: 8px; -} -::-webkit-scrollbar-track { - border-radius: 10px; - background-color: #f5f5f5; -} -::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #e0e0e0; -} -::-webkit-scrollbar-thumb:hover { - background-color: #999999; -} -.dark ::-webkit-scrollbar-track { - background-color: #333333; -} -.dark ::-webkit-scrollbar-thumb { - background-color: #555555; -} -.dark ::-webkit-scrollbar-thumb:hover { - background-color: #777777; -} -</style> diff --git a/docs/pages/index.vue b/docs/pages/index.vue deleted file mode 100644 index 2f6a374e..00000000 --- a/docs/pages/index.vue +++ /dev/null @@ -1,91 +0,0 @@ -<script setup lang="ts"> -import { queryContent } from '#imports' - -const siteConfig = useSiteConfig() - -const { data } = await useAsyncData('code-example', () => queryContent('/_code-examples').findOne()) - -defineOgImageComponent('NuxtSeo', { - title: 'Unhead', - description: 'The any-framework document head manager built for performance and delightful developer experience.', - colorMode: 'light', - theme: '#ecdc5a', -}) -</script> - -<template> - <div> - <section class="py-5 sm:py-10 xl:py-20"> - <div class="xl:grid gap-8 lg:grid-cols-12 mx-auto w-full sm:px-6 xl:h-[400px]"> - <div class="col-span-5 mb-5 sm:mb-10 xl:mb-0 flex flex-col justify-center"> - <h1 class="font-title mb-7 text-gray-900 dark:text-gray-100 text-center text-4xl leading-25 font-extrabold tracking-tight sm:text-5xl xl:text-left xl:text-[3.5rem]" style="line-height: 1.3;"> - <span class="max-w-6xl" v-html="siteConfig.tagline" /> - </h1> - <p class="text-gray-600 dark:text-gray-300 max-w-2xl mx-auto xl:ml-0 text-center text-xl xl:text-left"> - {{ siteConfig.description }} - </p> - - <div class="mt-6 flex items-center justify-center gap-4 sm:mt-10 flex-row sm:gap-6 xl:justify-start"> - <UButton size="xl" to="/setup/unhead/introduction" class="transition"> - Get setup - </UButton> - <UButton to="/usage/composables/use-head" size="xl" variant="ghost"> - See Usage - </UButton> - </div> - </div> - <div class="padded-code xl:col-span-7 hidden sm:block"> - <div class="flex justify-center xl:justify-end"> - <div class="flex relative items-center bg-gradient-to-br to-green-200/50 from-blue-100/50 dark:from-green-500/10 dark:to-blue-500/20 rounded"> - <ContentRenderer :value="data" class="xl:col-span-6 max-w-full" /> - </div> - </div> - </div> - </div> - </section> - <section class="py-5 sm:py-10 xl:py-20"> - <h2 class="mb-10 text-3xl font-title"> - Features - </h2> - <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-5"> - <ShowcaseCard label="Feature Packed" description="With deduping, sorting, title templates, template params and dom events out of the box."> - <Icon name="noto:bento-box" class="w-1/2 h-1/2" /> - </ShowcaseCard> - <ShowcaseCard label="Rock-solid DOM Updates" description="Custom side-effect based algorithm to play nicely with your existing tags."> - <Icon name="noto:rock" class="w-1/2 h-1/2" /> - </ShowcaseCard> - <ShowcaseCard label="Pluggable Core" description="Hook into any part of the head rendering process using Hookable."> - <Icon name="noto:deciduous-tree" class="w-1/2 h-1/2" /> - </ShowcaseCard> - <ShowcaseCard label="Plugins for Extra Oomph" description="Boost your performance with custom plugins: Capo.js ordering, Vite tree-shaking, etc."> - <Icon name="noto:rocket" class="w-1/2 h-1/2" /> - </ShowcaseCard> - <ShowcaseCard label="Totally Typed" description="Full TypeScript head schema with MDN documentation."> - <Icon name="noto:gem-stone" class="w-1/2 h-1/2" /> - </ShowcaseCard> - <ShowcaseCard label="Ecosystem Battled Tested" description="Adopted by the Vue ecosystem with hundreds of bugs squished."> - <Icon name="logos:vue" class="w-1/4 h-1/4" /> - <Icon name="logos:nuxt-icon" class="w-1/4 h-1/4" /> - <Icon name="logos:vitejs" class="w-1/4 h-1/4" /> - </ShowcaseCard> - </div> - </section> - <section> - <h2 class="mb-10 text-3xl font-title"> - Sponsors - </h2> - - This package is most possible by these amazing sponsors. - - <a href="https://raw.githubusercontent.com/harlan-zw/static/main/sponsors.svg"> - <img src="https://raw.githubusercontent.com/harlan-zw/static/main/sponsors.svg" width="800" height="545" style="margin: 0 auto;"> - </a> - </section> - </div> -</template> - -<style> -.padded-code pre { - padding: 0.75em 1em; -} -</style> diff --git a/docs/public/android-chrome-192x192.png b/docs/public/android-chrome-192x192.png deleted file mode 100644 index c67f7818..00000000 Binary files a/docs/public/android-chrome-192x192.png and /dev/null differ diff --git a/docs/public/android-chrome-512x512.png b/docs/public/android-chrome-512x512.png deleted file mode 100644 index abdc436b..00000000 Binary files a/docs/public/android-chrome-512x512.png and /dev/null differ diff --git a/docs/public/apple-touch-icon.png b/docs/public/apple-touch-icon.png deleted file mode 100644 index ae531380..00000000 Binary files a/docs/public/apple-touch-icon.png and /dev/null differ diff --git a/docs/public/favicon.ico b/docs/public/favicon.ico deleted file mode 100644 index da808d82..00000000 Binary files a/docs/public/favicon.ico and /dev/null differ diff --git a/docs/public/google-logo.svg b/docs/public/google-logo.svg deleted file mode 100644 index e0ae6ecc..00000000 --- a/docs/public/google-logo.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.27" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 262"><path fill="#4285F4" d="M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027"></path><path fill="#34A853" d="M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1"></path><path fill="#FBBC05" d="M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782"></path><path fill="#EB4335" d="M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251"></path></svg> diff --git a/docs/public/grid.png b/docs/public/grid.png deleted file mode 100644 index b6e42cd0..00000000 Binary files a/docs/public/grid.png and /dev/null differ diff --git a/docs/public/icon.svg b/docs/public/icon.svg deleted file mode 100644 index b78b9e88..00000000 --- a/docs/public/icon.svg +++ /dev/null @@ -1,15 +0,0 @@ -<svg width="900" height="900" viewBox="0 0 900 900" fill="none" xmlns="http://www.w3.org/2000/svg"> -<style> - path { - fill: black; - } - - @media (prefers-color-scheme: dark) { - path { - fill: white; - } - } -</style> - -<path d="M504.908 750H839.476C850.103 750.001 860.542 747.229 869.745 741.963C878.948 736.696 886.589 729.121 891.9 719.999C897.211 710.876 900.005 700.529 900 689.997C899.995 679.465 897.193 669.12 891.873 660.002L667.187 274.289C661.876 265.169 654.237 257.595 645.036 252.329C635.835 247.064 625.398 244.291 614.773 244.291C604.149 244.291 593.711 247.064 584.511 252.329C575.31 257.595 567.67 265.169 562.36 274.289L504.908 372.979L392.581 179.993C387.266 170.874 379.623 163.301 370.42 158.036C361.216 152.772 350.777 150 340.151 150C329.525 150 319.086 152.772 309.883 158.036C300.679 163.301 293.036 170.874 287.721 179.993L8.12649 660.002C2.80743 669.12 0.00462935 679.465 5.72978e-06 689.997C-0.00461789 700.529 2.78909 710.876 8.10015 719.999C13.4112 729.121 21.0523 736.696 30.255 741.963C39.4576 747.229 49.8973 750.001 60.524 750H270.538C353.748 750 415.112 713.775 457.336 643.101L559.849 467.145L614.757 372.979L779.547 655.834H559.849L504.908 750ZM267.114 655.737L120.551 655.704L340.249 278.586L449.87 467.145L376.474 593.175C348.433 639.03 316.577 655.737 267.114 655.737Z" /> -</svg> diff --git a/docs/public/logo-dark.svg b/docs/public/logo-dark.svg deleted file mode 100644 index 45e44598..00000000 --- a/docs/public/logo-dark.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"> - <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/> -</svg> diff --git a/docs/public/logo-light.svg b/docs/public/logo-light.svg deleted file mode 100644 index d5ca483b..00000000 --- a/docs/public/logo-light.svg +++ /dev/null @@ -1,4 +0,0 @@ - -<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"> - <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/> -</svg> diff --git a/docs/public/logo.svg b/docs/public/logo.svg deleted file mode 100644 index ae60180b..00000000 --- a/docs/public/logo.svg +++ /dev/null @@ -1,3 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"> - <path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21.73 18l-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/> -</svg> diff --git a/docs/public/site.webmanifest b/docs/public/site.webmanifest deleted file mode 100644 index fa99de77..00000000 --- a/docs/public/site.webmanifest +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "", - "short_name": "", - "icons": [ - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/docs/public/vueuse.svg b/docs/public/vueuse.svg deleted file mode 100644 index 1b95eda5..00000000 --- a/docs/public/vueuse.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" width="532" height="662"><foreignObject x="0" y="0" width="100%" height="100%"><div data-v-8ff3697e="" data-v-215b0901="" id="frame" class="frame frame" style="background: linear-gradient(140deg, rgb(89, 212, 153), rgb(160, 135, 45)) 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background-blend-mode: normal; baseline-shift: 0px; block-size: 662px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 662px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 520px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: 920px; max-width: 920px; min-block-size: 154px; min-height: 154px; min-inline-size: 520px; min-width: 520px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 32px; padding: 32px; padding-inline: 32px; paint-order: normal; perspective: none; perspective-origin: 260px 331px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 260px 331px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 520px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 1; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;" xmlns="http://www.w3.org/1999/xhtml"><!----><div data-v-8ff3697e="" class="app-frame-container" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 598px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 12px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 12px; border-end-start-radius: 12px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 12px; border-start-start-radius: 12px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 598px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 456px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 228px 299px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 228px 299px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 456px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div data-v-8ff3697e="" class="shadow uk0bi8" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 598px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 12px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 12px; border-end-start-radius: 12px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 12px; border-start-start-radius: 12px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 598px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 456px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 228px 299px; pointer-events: auto; position: absolute; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 228px 299px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 456px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div data-v-8ff3697e="" class="shadow-background" style="background: linear-gradient(140deg, rgb(89, 212, 153), rgb(160, 135, 45)) 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background-blend-mode: normal; baseline-shift: 0px; block-size: 598px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 12px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 12px; border-end-start-radius: 12px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 12px; border-start-start-radius: 12px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 598px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 456px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 228px 299px; pointer-events: auto; position: absolute; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 228px 299px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 456px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div><style>.uk0bi8::after{accent-color: auto; align-content: normal; align-items: normal; align-self: auto; alignment-baseline: auto; animation-delay: 0s; animation-direction: normal; animation-duration: 0s; animation-fill-mode: none; animation-iteration-count: 1; animation-name: none; animation-play-state: running; animation-timing-function: ease; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background-attachment: scroll; background-blend-mode: normal; background-clip: border-box; background-color: rgba(0, 0, 0, 0.6); background-image: none; background-origin: padding-box; background-position: 0% 0%; background-repeat: repeat; background-size: auto; baseline-shift: 0px; block-size: 598px; border-block-end-color: rgb(255, 255, 255); border-block-end-style: none; border-block-end-width: 0px; border-block-start-color: rgb(255, 255, 255); border-block-start-style: none; border-block-start-width: 0px; border-bottom-color: rgb(255, 255, 255); border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; border-bottom-style: none; border-bottom-width: 0px; border-collapse: separate; border-end-end-radius: 12px; border-end-start-radius: 12px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-inline-end-color: rgb(255, 255, 255); border-inline-end-style: none; border-inline-end-width: 0px; border-inline-start-color: rgb(255, 255, 255); border-inline-start-style: none; border-inline-start-width: 0px; border-left-color: rgb(255, 255, 255); border-left-style: none; border-left-width: 0px; border-right-color: rgb(255, 255, 255); border-right-style: none; border-right-width: 0px; border-start-end-radius: 12px; border-start-start-radius: 12px; border-top-color: rgb(255, 255, 255); border-top-left-radius: 12px; border-top-right-radius: 12px; border-top-style: none; border-top-width: 0px; bottom: -24px; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; column-count: auto; column-gap: normal; column-rule-color: rgb(255, 255, 255); column-rule-style: none; column-rule-width: 0px; column-span: none; column-width: auto; contain-intrinsic-block-size: none; contain-intrinsic-height: none; contain-intrinsic-inline-size: none; contain-intrinsic-size: none; contain-intrinsic-width: none; content: ""; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: blur(30px); flex-basis: auto; flex-direction: row; flex-grow: 0; flex-shrink: 1; flex-wrap: nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-size: 16px; font-stretch: 100%; font-style: normal; font-synthesis-small-caps: auto; font-synthesis-style: auto; font-synthesis-weight: auto; font-variant: normal; font-variant-caps: normal; font-variant-east-asian: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-weight: 400; grid-auto-columns: auto; grid-auto-flow: row; grid-auto-rows: auto; grid-column-end: auto; grid-column-start: auto; grid-row-end: auto; grid-row-start: auto; grid-template-areas: none; grid-template-columns: none; grid-template-rows: none; height: 598px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 456px; inset-block-end: -24px; inset-block-start: 24px; inset-inline-end: 0px; inset-inline-start: 0px; isolation: auto; justify-content: normal; justify-items: normal; justify-self: auto; left: 0px; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-block-end: 0px; margin-block-start: 0px; margin-bottom: 0px; margin-inline-end: 0px; margin-inline-start: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; marker-end: none; marker-mid: none; marker-start: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset-distance: 0px; offset-path: none; offset-rotate: auto 0deg; opacity: 1; order: 0; orphans: 2; outline-color: rgb(255, 255, 255); outline-offset: 0px; outline-style: none; outline-width: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow-x: visible; overflow-y: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block-end: 0px; padding-block-start: 0px; padding-bottom: 0px; padding-inline-end: 0px; padding-inline-start: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; paint-order: normal; perspective: none; perspective-origin: 228px 299px; pointer-events: auto; position: absolute; r: 0px; resize: none; right: 0px; row-gap: normal; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block-end: 0px; scroll-margin-block-start: 0px; scroll-margin-inline-end: 0px; scroll-margin-inline-start: 0px; scroll-padding-block-end: auto; scroll-padding-block-start: auto; scroll-padding-inline-end: auto; scroll-padding-inline-start: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-color: rgb(255, 255, 255); text-decoration-line: none; text-decoration-skip-ink: auto; text-decoration-style: solid; text-emphasis-color: rgb(255, 255, 255); text-emphasis-position: over; text-emphasis-style: none; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; top: 24px; touch-action: auto; transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1, 1); transform-origin: 228px 299px; transform-style: flat; transition-delay: 0s; transition-duration: 0s; transition-property: all; transition-timing-function: ease; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 456px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: -1; zoom: 1; -webkit-border-horizontal-spacing: 0px; -webkit-border-image: none; -webkit-border-vertical-spacing: 0px; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-box-reflect: none; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-line-clamp: none; -webkit-locale: "en"; -webkit-mask-box-image: none; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-source: none; -webkit-mask-box-image-width: auto; -webkit-mask-clip: border-box; -webkit-mask-composite: source-over; -webkit-mask-image: none; -webkit-mask-origin: border-box; -webkit-mask-position: 0% 0%; -webkit-mask-repeat: repeat; -webkit-mask-size: auto; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke-color: rgb(255, 255, 255); -webkit-text-stroke-width: 0px; -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;}</style></div><div data-v-8ff3697e="" class="app-frame" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0.75); background-blend-mode: normal; baseline-shift: 0px; block-size: 598px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 12px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 12px; border-end-start-radius: 12px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 12px; border-start-start-radius: 12px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 598px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 456px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 16px; padding: 16px; padding-inline: 16px; paint-order: normal; perspective: none; perspective-origin: 228px 299px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 228px 299px; transform-style: preserve-3d; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 456px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div data-v-4606dc58="" data-v-8ff3697e="" class="app-frame-header" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 15px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: grid; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / 60px 304px 60px; grid-area: auto / auto / auto / auto; height: 15px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 7.5px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 7.5px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div data-v-4606dc58="" class="controls" style="accent-color: auto; place-content: normal; place-items: center normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 15px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 15px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 60px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: auto; min-height: auto; min-inline-size: auto; min-width: auto; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 30px 7.5px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 30px 7.5px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 60px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div data-v-4606dc58="" class="control close" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(255, 255, 255, 0.2); background-blend-mode: normal; baseline-shift: 0px; block-size: 12px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 6px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 6px; border-end-start-radius: 6px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 6px; border-start-start-radius: 6px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 12px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 12px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px 8px 0px 0px; margin-inline: 0px 8px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: auto; min-height: auto; min-inline-size: auto; min-width: auto; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 6px 6px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 6px 6px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 12px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div><div data-v-4606dc58="" class="control minimize" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(255, 255, 255, 0.2); background-blend-mode: normal; baseline-shift: 0px; block-size: 12px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 6px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 6px; border-end-start-radius: 6px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 6px; border-start-start-radius: 6px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 12px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 12px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px 8px 0px 0px; margin-inline: 0px 8px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: auto; min-height: auto; min-inline-size: auto; min-width: auto; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 6px 6px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 6px 6px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 12px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div><div data-v-4606dc58="" class="control maximize" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(255, 255, 255, 0.2); background-blend-mode: normal; baseline-shift: 0px; block-size: 12px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 6px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 6px; border-end-start-radius: 6px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 6px; border-start-start-radius: 6px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 12px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 12px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px 8px 0px 0px; margin-inline: 0px 8px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: auto; min-height: auto; min-inline-size: auto; min-width: auto; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 6px 6px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 6px 6px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 12px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div></div><div data-v-4606dc58="" class="title" style="accent-color: auto; place-content: normal center; place-items: center normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 15px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: flex; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 500 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 15px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 304px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.32px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: auto; min-height: auto; min-inline-size: auto; min-width: auto; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: hidden; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 152px 7.5px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: center; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: ellipsis; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 152px 7.5px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: nowrap; widows: 2; width: 304px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 20; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><input data-v-4606dc58="" type="text" spellcheck="false" value="@vueuse/schema-org" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: auto; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 15px; border-block-end: 0px none rgba(255, 255, 255, 0.6); border-block-start: 0px none rgba(255, 255, 255, 0.6); border-color: rgba(255, 255, 255, 0.6); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgba(255, 255, 255, 0.6); border-inline-start: 0px none rgba(255, 255, 255, 0.6); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgba(255, 255, 255, 0.6); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgba(255, 255, 255, 0.6); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgba(255, 255, 255, 0.6); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 12px / 12px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 15px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 304px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: auto; min-height: auto; min-inline-size: 200px; min-width: 200px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgba(255, 255, 255, 0.6) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: hidden; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 152px 7.5px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: center; text-align-last: auto; text-anchor: start; text-decoration: none solid rgba(255, 255, 255, 0.6); text-decoration-skip-ink: auto; text-emphasis: none rgba(255, 255, 255, 0.6); text-emphasis-position: over; text-indent: 0px; text-overflow: ellipsis; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 152px 7.5px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: text; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: nowrap; widows: 2; width: 304px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgba(255, 255, 255, 0.6); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgba(255, 255, 255, 0.6); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;" /></div></div><div data-v-8ff3697e="" class="vue-codemirror code-editor" style="--syntax-text:#FFFFFF; --syntax-background:rgba 0,0,0,0.75; --syntax-string:#E9EB9D; --syntax-comment:#708B6C; --syntax-variable:#B3D767; --syntax-variable-2:#E5FFE4; --syntax-variable-3:#2EFFB4; --syntax-number:#46B114; --syntax-atom:#46B114; --syntax-keyword:#6DD79F; --syntax-property:#E4B165; --syntax-definition:#B3D767; --syntax-meta:#E5FFE4; --syntax-operator:#6DD79F; --syntax-attribute:#B3D767; --syntax-tag:#6DD79F; accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 551px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 16px "Inter var", sans-serif; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 551px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: auto; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 275.5px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 275.5px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><textarea name="codemirror" placeholder="" style="display: none; accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: auto; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 1px solid rgb(118, 118, 118); border-block-start: 1px solid rgb(118, 118, 118); border-color: rgb(118, 118, 118); border-radius: 0px; border-style: solid; border-width: 1px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 1px solid rgb(118, 118, 118); border-inline-start: 1px solid rgb(118, 118, 118); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(0, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(0, 0, 0); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(0, 0, 0); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 13.3333px monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(0, 0, 0) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 2px; padding: 2px; padding-inline: 2px; paint-order: normal; perspective: none; perspective-origin: 50% 50%; pointer-events: auto; position: static; r: 0px; resize: both; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(0, 0, 0); text-decoration-skip-ink: auto; text-emphasis: none rgb(0, 0, 0); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 50% 50%; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(0, 0, 0); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(0, 0, 0); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></textarea><div class="CodeMirror cm-s-default CodeMirror-wrap" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 551px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 551px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: normal; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: hidden; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 20px; padding: 20px 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 275.5px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 275.5px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: auto; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div style="overflow: hidden; position: relative; accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 0px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 24px -4px -24px 4px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 0px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 3px; inset-block: 24px -24px; inset-inline: 4px -4px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 1.5px 0px; pointer-events: auto; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 1.5px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 3px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" style="position: absolute; inset: 0px -997px -15px 0px; outline: rgb(0, 0, 0) none 0px; accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: auto; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); background-blend-mode: normal; baseline-shift: 0px; block-size: 15px; border-block-end: 1px solid rgb(118, 118, 118); border-block-start: 1px solid rgb(118, 118, 118); border-color: rgb(118, 118, 118); border-radius: 0px; border-style: solid; border-width: 1px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 1px solid rgb(118, 118, 118); border-inline-start: 1px solid rgb(118, 118, 118); border-start-end-radius: 0px; border-start-start-radius: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(0, 0, 0); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(0, 0, 0); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(0, 0, 0); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 15px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 1000px; inset-block: 0px -15px; inset-inline: 0px -997px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: auto; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 500px 7.5px; pointer-events: auto; r: 0px; resize: both; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(0, 0, 0); text-decoration-skip-ink: auto; text-emphasis: none rgb(0, 0, 0); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 500px 7.5px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 1000px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(0, 0, 0); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(0, 0, 0); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;" tabindex="0"></textarea></div><div class="CodeMirror-vscrollbar" tabindex="-1" cm-not-content="true" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px 0px auto auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: 0px auto; inset-inline: auto 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: hidden scroll; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 50% 50%; pointer-events: auto; position: absolute; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 50% 50%; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 6; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 0px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 0px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 1px; min-width: 1px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 50% 50%; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 50% 50%; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div></div><div class="CodeMirror-hscrollbar" tabindex="-1" cm-not-content="true" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto auto 0px 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto 0px; inset-inline: 0px auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: scroll hidden; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 50% 50%; pointer-events: auto; position: absolute; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 50% 50%; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 6; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 100%; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 100%; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 0px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 1px; min-height: 1px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 50% 50%; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 50% 50%; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 0px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto 0px 0px auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto 0px; inset-inline: auto 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 50% 50%; pointer-events: auto; position: absolute; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 50% 50%; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 6; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div><div class="CodeMirror-gutter-filler" cm-not-content="true" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto auto 0px 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: none; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto 0px; inset-inline: 0px auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 50% 50%; pointer-events: auto; position: absolute; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 50% 50%; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 6; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div><div class="CodeMirror-scroll" tabindex="-1" draggable="false" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 511px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 511px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 459px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px -50px; margin: 0px -50px -50px 0px; margin-inline: 0px -50px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: hidden scroll; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px 50px; padding: 0px 0px 50px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 237px 280.5px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 237px 280.5px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 459px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: none; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div class="CodeMirror-sizer" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 526px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255) rgba(0, 0, 0, 0) rgb(255, 255, 255) rgb(255, 255, 255); border-radius: 0px; border-style: none solid none none; border-width: 0px 35px 0px 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 35px solid rgba(0, 0, 0, 0); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 526px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px -15px; margin: 0px 0px -15px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 526px; min-height: 526px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 229.5px 263px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 229.5px 263px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div style="position: relative; accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 525.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 525.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 262.75px; pointer-events: auto; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 262.75px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div class="CodeMirror-lines" role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 525.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 525.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 1px; min-height: 1px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 4px; padding: 4px 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 262.75px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 262.75px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div role="presentation" style="position: relative; outline: rgb(255, 255, 255) none 0px; accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 517.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 517.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 258.75px; pointer-events: auto; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 258.75px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><div class="CodeMirror-measure" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 0px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px 0px 517.5px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 0px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px 517.5px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: hidden; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 0px; pointer-events: auto; position: absolute; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: hidden; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><pre class="CodeMirror-line-like" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: hidden; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: hidden; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 0px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px 0px 517.5px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 0px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px 517.5px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: hidden; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 0px; pointer-events: auto; position: absolute; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: hidden; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div><div style="position: relative; z-index: 1; accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 0px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 0px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 0px; pointer-events: auto; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div><div class="CodeMirror-code" role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 517.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 517.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 212px 258.75px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 258.75px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span class="cm-variable" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(179, 215, 103); border-block-start: 0px none rgb(179, 215, 103); border-color: rgb(179, 215, 103); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(179, 215, 103); border-inline-start: 0px none rgb(179, 215, 103); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(179, 215, 103); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(179, 215, 103); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(179, 215, 103); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(179, 215, 103) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(179, 215, 103); text-decoration-skip-ink: auto; text-emphasis: none rgb(179, 215, 103); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(179, 215, 103); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(179, 215, 103); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">useSchemaOrg</span>([</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย <span class="cm-variable" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(179, 215, 103); border-block-start: 0px none rgb(179, 215, 103); border-color: rgb(179, 215, 103); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(179, 215, 103); border-inline-start: 0px none rgb(179, 215, 103); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(179, 215, 103); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(179, 215, 103); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(179, 215, 103); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(179, 215, 103) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(179, 215, 103); text-decoration-skip-ink: auto; text-emphasis: none rgb(179, 215, 103); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(179, 215, 103); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(179, 215, 103); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">definePerson</span>({</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย <span class="cm-string cm-property" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(228, 177, 101); border-block-start: 0px none rgb(228, 177, 101); border-color: rgb(228, 177, 101); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(228, 177, 101); border-inline-start: 0px none rgb(228, 177, 101); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(228, 177, 101); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(228, 177, 101); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(228, 177, 101); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(228, 177, 101) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(228, 177, 101); text-decoration-skip-ink: auto; text-emphasis: none rgb(228, 177, 101); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(228, 177, 101); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(228, 177, 101); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'@id'</span>: <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'https://evanyou.me/#identity'</span></span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย <span class="cm-variable" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(179, 215, 103); border-block-start: 0px none rgb(179, 215, 103); border-color: rgb(179, 215, 103); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(179, 215, 103); border-inline-start: 0px none rgb(179, 215, 103); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(179, 215, 103); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(179, 215, 103); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(179, 215, 103); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(179, 215, 103) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(179, 215, 103); text-decoration-skip-ink: auto; text-emphasis: none rgb(179, 215, 103); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(179, 215, 103); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(179, 215, 103); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">name</span>: <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'Evan You'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย <span class="cm-variable" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(179, 215, 103); border-block-start: 0px none rgb(179, 215, 103); border-color: rgb(179, 215, 103); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(179, 215, 103); border-inline-start: 0px none rgb(179, 215, 103); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(179, 215, 103); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(179, 215, 103); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(179, 215, 103); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(179, 215, 103) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(179, 215, 103); text-decoration-skip-ink: auto; text-emphasis: none rgb(179, 215, 103); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(179, 215, 103); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(179, 215, 103); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">sameAs</span>: [</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย  ย <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'https://twitter.com/youyuxi'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย  ย <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'https://github.com/yyx990803'</span></span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ]</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> })</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย <span class="cm-variable" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(179, 215, 103); border-block-start: 0px none rgb(179, 215, 103); border-color: rgb(179, 215, 103); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(179, 215, 103); border-inline-start: 0px none rgb(179, 215, 103); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(179, 215, 103); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(179, 215, 103); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(179, 215, 103); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(179, 215, 103) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(179, 215, 103); text-decoration-skip-ink: auto; text-emphasis: none rgb(179, 215, 103); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(179, 215, 103); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(179, 215, 103); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">defineOrganization</span>({</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย <span class="cm-property" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(228, 177, 101); border-block-start: 0px none rgb(228, 177, 101); border-color: rgb(228, 177, 101); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(228, 177, 101); border-inline-start: 0px none rgb(228, 177, 101); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(228, 177, 101); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(228, 177, 101); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(228, 177, 101); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(228, 177, 101) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(228, 177, 101); text-decoration-skip-ink: auto; text-emphasis: none rgb(228, 177, 101); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(228, 177, 101); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(228, 177, 101); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">name</span>: <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'Vue'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย <span class="cm-property" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(228, 177, 101); border-block-start: 0px none rgb(228, 177, 101); border-color: rgb(228, 177, 101); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(228, 177, 101); border-inline-start: 0px none rgb(228, 177, 101); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(228, 177, 101); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(228, 177, 101); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(228, 177, 101); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(228, 177, 101) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(228, 177, 101); text-decoration-skip-ink: auto; text-emphasis: none rgb(228, 177, 101); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(228, 177, 101); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(228, 177, 101); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">logo</span>: <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'/logo.png'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย <span class="cm-property" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(228, 177, 101); border-block-start: 0px none rgb(228, 177, 101); border-color: rgb(228, 177, 101); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(228, 177, 101); border-inline-start: 0px none rgb(228, 177, 101); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(228, 177, 101); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(228, 177, 101); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(228, 177, 101); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(228, 177, 101) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(228, 177, 101); text-decoration-skip-ink: auto; text-emphasis: none rgb(228, 177, 101); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(228, 177, 101); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(228, 177, 101); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">founder</span>: <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'https://evanyou.me/#identity'</span></span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย <span class="cm-variable" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(179, 215, 103); border-block-start: 0px none rgb(179, 215, 103); border-color: rgb(179, 215, 103); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(179, 215, 103); border-inline-start: 0px none rgb(179, 215, 103); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(179, 215, 103); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(179, 215, 103); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(179, 215, 103); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(179, 215, 103) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(179, 215, 103); text-decoration-skip-ink: auto; text-emphasis: none rgb(179, 215, 103); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(179, 215, 103); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(179, 215, 103); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">sameAs</span>: [</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย  ย <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'https://github.com/vuejs/vue'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ย  ย <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'https://twitter.com/vuejs'</span></span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  ]</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> }),</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย <span class="cm-variable" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(179, 215, 103); border-block-start: 0px none rgb(179, 215, 103); border-color: rgb(179, 215, 103); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(179, 215, 103); border-inline-start: 0px none rgb(179, 215, 103); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(179, 215, 103); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(179, 215, 103); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(179, 215, 103); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(179, 215, 103) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(179, 215, 103); text-decoration-skip-ink: auto; text-emphasis: none rgb(179, 215, 103); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(179, 215, 103); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(179, 215, 103); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">defineWebPage</span>(),</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย <span class="cm-variable" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(179, 215, 103); border-block-start: 0px none rgb(179, 215, 103); border-color: rgb(179, 215, 103); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(179, 215, 103); border-inline-start: 0px none rgb(179, 215, 103); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(179, 215, 103); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(179, 215, 103); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(179, 215, 103); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(179, 215, 103) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(179, 215, 103); text-decoration-skip-ink: auto; text-emphasis: none rgb(179, 215, 103); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(179, 215, 103); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(179, 215, 103); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">defineWebSite</span>({</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> ย  <span class="cm-property" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(228, 177, 101); border-block-start: 0px none rgb(228, 177, 101); border-color: rgb(228, 177, 101); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(228, 177, 101); border-inline-start: 0px none rgb(228, 177, 101); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(228, 177, 101); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(228, 177, 101); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(228, 177, 101); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(228, 177, 101) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(228, 177, 101); text-decoration-skip-ink: auto; text-emphasis: none rgb(228, 177, 101); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(228, 177, 101); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(228, 177, 101); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">name</span>: <span class="cm-string" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(233, 235, 157); border-block-start: 0px none rgb(233, 235, 157); border-color: rgb(233, 235, 157); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(233, 235, 157); border-inline-start: 0px none rgb(233, 235, 157); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(233, 235, 157); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(233, 235, 157); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(233, 235, 157); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(233, 235, 157) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(233, 235, 157); text-decoration-skip-ink: auto; text-emphasis: none rgb(233, 235, 157); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(233, 235, 157); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(233, 235, 157); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">'Vue Docs'</span>,</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"> }),</span></pre><pre class=" CodeMirror-line " role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 22.5px; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 22.5px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 424px; inset-block: 0px; inset-inline: 0px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 4px; padding-inline: 4px; paint-order: normal; perspective: none; perspective-origin: 212px 11.25px; pointer-events: auto; position: relative; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 212px 11.25px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: 424px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 2; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"><span role="presentation" style="accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: auto; border-block-end: 0px none rgb(255, 255, 255); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255); border-radius: 0px; border-style: none; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: auto; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: text; cx: 0px; cy: 0px; d: none; direction: ltr; display: inline; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font-family: "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-size: 15px; font-stretch: 100%; font-style: normal; font-synthesis: weight style small-caps; font-variant: contextual; font-weight: 400; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: auto; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: auto; inset-inline: auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; line-height: 22.5px; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: break-word; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px 0.1px 0px 0px; padding-inline: 0px 0.1px; paint-order: normal; perspective: none; perspective-origin: 0px 0px; pointer-events: auto; position: static; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0px 0px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: pre-wrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;">])</span></pre></div></div></div></div></div><div style="position: absolute; accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0); background-blend-mode: normal; baseline-shift: 0px; block-size: 35px; border-block-end: 0px solid rgba(0, 0, 0, 0); border-block-start: 0px none rgb(255, 255, 255); border-color: rgb(255, 255, 255) rgb(255, 255, 255) rgba(0, 0, 0, 0); border-radius: 0px; border-style: none none solid; border-width: 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 0px none rgb(255, 255, 255); border-inline-start: 0px none rgb(255, 255, 255); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 526px 458px 0px 0px; box-shadow: none; box-sizing: border-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(255, 255, 255); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(255, 255, 255); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(255, 255, 255); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; display: block; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 35px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: 1px; inset-block: 526px 0px; inset-inline: 0px 458px; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 0px; min-height: 0px; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(255, 255, 255) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 0.5px 17.5px; pointer-events: auto; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(255, 255, 255); text-decoration-skip-ink: auto; text-emphasis: none rgb(255, 255, 255); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 0.5px 17.5px; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: normal; widows: 2; width: 1px; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: auto; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(255, 255, 255); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(255, 255, 255); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div><div class="CodeMirror-gutters" style="display: none; accent-color: auto; place-content: normal; place-items: normal; place-self: auto; alignment-baseline: auto; animation: 0s ease 0s 1 normal none running none; app-region: none; appearance: none; backdrop-filter: none; backface-visibility: visible; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(247, 247, 247); background-blend-mode: normal; baseline-shift: 0px; block-size: 561px; border-block-end: 0px none rgb(40, 42, 54); border-block-start: 0px none rgb(40, 42, 54); border-color: rgb(40, 42, 54) rgb(221, 221, 221) rgb(40, 42, 54) rgb(40, 42, 54); border-radius: 0px; border-style: none solid none none; border-width: 0px 1px 0px 0px; border-collapse: separate; border-end-end-radius: 0px; border-end-start-radius: 0px; border-image: none 100% / 1 / 0 stretch; border-inline-end: 1px solid rgb(221, 221, 221); border-inline-start: 0px none rgb(40, 42, 54); border-start-end-radius: 0px; border-start-start-radius: 0px; inset: 0px auto auto 0px; box-shadow: none; box-sizing: content-box; break-after: auto; break-before: auto; break-inside: auto; buffered-rendering: auto; caption-side: top; caret-color: rgb(40, 42, 54); clear: none; clip: auto; clip-path: none; clip-rule: nonzero; color: rgb(40, 42, 54); color-interpolation: srgb; color-interpolation-filters: linearrgb; color-rendering: auto; columns: auto auto; gap: normal; column-rule: 0px none rgb(40, 42, 54); column-span: none; contain-intrinsic-block-size: none; contain-intrinsic-size: none; contain-intrinsic-inline-size: none; content: normal; cursor: auto; cx: 0px; cy: 0px; d: none; direction: ltr; dominant-baseline: auto; empty-cells: show; fill: rgb(0, 0, 0); fill-opacity: 1; fill-rule: nonzero; filter: none; flex: 0 1 auto; flex-flow: row nowrap; float: none; flood-color: rgb(0, 0, 0); flood-opacity: 1; font: 400 15px / 22.5px "JetBrains Mono", monospace; font-kerning: auto; font-optical-sizing: auto; font-synthesis: weight style small-caps; grid: auto-flow auto / none; grid-area: auto / auto / auto / auto; height: 561px; hyphens: manual; image-orientation: from-image; image-rendering: auto; inline-size: auto; inset-block: 0px auto; inset-inline: 0px auto; isolation: auto; letter-spacing: 0.1px; lighting-color: rgb(255, 255, 255); line-break: auto; list-style: outside none disc; margin-block: 0px; margin: 0px; margin-inline: 0px; marker: none; mask-type: luminance; max-block-size: none; max-height: none; max-inline-size: none; max-width: none; min-block-size: 100%; min-height: 100%; min-inline-size: 0px; min-width: 0px; mix-blend-mode: normal; object-fit: fill; object-position: 50% 50%; offset: none 0px auto 0deg; opacity: 1; order: 0; orphans: 2; outline: rgb(40, 42, 54) none 0px; outline-offset: 0px; overflow-anchor: auto; overflow-clip-margin: 0px; overflow-wrap: normal; overflow: visible; overscroll-behavior-block: auto; overscroll-behavior-inline: auto; padding-block: 0px; padding: 0px; padding-inline: 0px; paint-order: normal; perspective: none; perspective-origin: 50% 50%; pointer-events: auto; position: absolute; r: 0px; resize: none; ruby-position: over; rx: auto; ry: auto; scroll-behavior: auto; scroll-margin-block: 0px; scroll-margin-inline: 0px; scroll-padding-block: auto; scroll-padding-inline: auto; scrollbar-gutter: auto; shape-image-threshold: 0; shape-margin: 0px; shape-outside: none; shape-rendering: auto; speak: normal; stop-color: rgb(0, 0, 0); stop-opacity: 1; stroke: none; stroke-dasharray: none; stroke-dashoffset: 0px; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; stroke-opacity: 1; stroke-width: 1px; tab-size: 8; table-layout: auto; text-align: start; text-align-last: auto; text-anchor: start; text-decoration: none solid rgb(40, 42, 54); text-decoration-skip-ink: auto; text-emphasis: none rgb(40, 42, 54); text-emphasis-position: over; text-indent: 0px; text-overflow: clip; text-rendering: auto; text-shadow: none; text-size-adjust: auto; text-transform: none; text-underline-position: auto; touch-action: auto; transform: none; transform-origin: 50% 50%; transform-style: flat; transition: all 0s ease 0s; unicode-bidi: normal; user-select: none; vector-effect: none; vertical-align: baseline; visibility: visible; white-space: nowrap; widows: 2; width: auto; will-change: auto; word-break: normal; word-spacing: 0px; writing-mode: horizontal-tb; x: 0px; y: 0px; z-index: 3; zoom: 1; border-spacing: 0px; -webkit-border-image: none; -webkit-box-align: stretch; -webkit-box-decoration-break: slice; -webkit-box-direction: normal; -webkit-box-flex: 0; -webkit-box-ordinal-group: 1; -webkit-box-orient: horizontal; -webkit-box-pack: start; -webkit-font-smoothing: antialiased; -webkit-highlight: none; -webkit-hyphenate-character: auto; -webkit-line-break: auto; -webkit-locale: "en"; -webkit-mask-box-image-source: none; -webkit-mask-box-image-slice: 0 fill; -webkit-mask-box-image-width: auto; -webkit-mask-box-image-outset: 0; -webkit-mask-box-image-repeat: stretch; -webkit-mask: none 0% 0% / auto repeat border-box border-box; -webkit-mask-composite: source-over; -webkit-print-color-adjust: economy; -webkit-rtl-ordering: logical; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.18); -webkit-text-combine: none; -webkit-text-decorations-in-effect: none; -webkit-text-fill-color: rgb(40, 42, 54); -webkit-text-orientation: vertical-right; -webkit-text-security: none; -webkit-text-stroke: 0px rgb(40, 42, 54); -webkit-user-drag: auto; -webkit-user-modify: read-only; -webkit-writing-mode: horizontal-tb;"></div></div></div></div></div></div><style></style></div></foreignObject></svg> \ No newline at end of file diff --git a/docs/content/schema-org/1.getting-started/_dir.yml b/docs/schema-org/0.angular/.navigation.yml similarity index 100% rename from docs/content/schema-org/1.getting-started/_dir.yml rename to docs/schema-org/0.angular/.navigation.yml diff --git a/docs/content/schema-org/1.getting-started/0.setup.md b/docs/schema-org/0.angular/0.installation.md similarity index 99% rename from docs/content/schema-org/1.getting-started/0.setup.md rename to docs/schema-org/0.angular/0.installation.md index d61bb9cf..38d4d482 100644 --- a/docs/content/schema-org/1.getting-started/0.setup.md +++ b/docs/schema-org/0.angular/0.installation.md @@ -151,6 +151,7 @@ export default defineConfig({ Your Nuxt app is now serving basic Schema.org, congrats! ๐ŸŽ‰ The next steps are: + 1. Choose an [Identity](/schema-org/recipes/identity) 2. Set up your pages for [Schema.org Params](/guide/getting-started/how-it-works#runtime-inferences) 3. Then feel free to follow some recipes: diff --git a/docs/content/schema-org/1.getting-started/2.how-it-works.md b/docs/schema-org/0.introduction.md similarity index 84% rename from docs/content/schema-org/1.getting-started/2.how-it-works.md rename to docs/schema-org/0.introduction.md index 911b9e75..b4122e5b 100644 --- a/docs/content/schema-org/1.getting-started/2.how-it-works.md +++ b/docs/schema-org/0.introduction.md @@ -1,3 +1,10 @@ +--- +title: Unhead Schema.org +description: Learn more about Unhead Schema.org. +navigation: + title: Introduction +--- + ## Background With Unhead Schema.org you can inject a Schema.org graph into your page. @@ -14,15 +21,15 @@ Otherwise, you can provide your own custom nodes that are passed through as is. When resolving the graph, the package will inject config from the site and page level to reduce the amount of boilerplate. -For example, if you have a `<title>` on your page, then it's likely we can use this same title to generate the Schema.org WebPage's `name`. +For example, if you have a `<title>`{lang="html"} on your page, then it's likely we can use this same title to generate the Schema.org WebPage's `name`. -The following inferences are from your `<head>` data: +The following inferences are from your `<head>`{lang="html"} data: -- `inLanguage` - `<html lang="en">` (`en`) -- `name` - `<title>test` (`test`) -- `description` - `` (`test`) -- `url` - `` (`https://example.com`) -- `image` - `` (`https://example.com/image.jpg`) +- `inLanguage` - ``{lang="html"} (`en`) +- `name` - `test`{lang="html"} (`test`) +- `description` - ``{lang="html"} (`test`) +- `url` - ``{lang="html"} (`https://example.com`) +- `image` - ``{lang="html"} (`https://example.com/image.jpg`) Otherwise, they will come from your [Schema.org Params](/schema-org/getting-started/params). diff --git a/docs/schema-org/0.nuxt/.navigation.yml b/docs/schema-org/0.nuxt/.navigation.yml new file mode 100644 index 00000000..bcd2ba14 --- /dev/null +++ b/docs/schema-org/0.nuxt/.navigation.yml @@ -0,0 +1 @@ +title: Getting Started diff --git a/docs/schema-org/0.nuxt/0.installation.md b/docs/schema-org/0.nuxt/0.installation.md new file mode 100644 index 00000000..b67335bd --- /dev/null +++ b/docs/schema-org/0.nuxt/0.installation.md @@ -0,0 +1,28 @@ +--- +title: 'Install Unhead Schema.org' +description: 'Get started with Unhead Schema.org by installing the dependency to your project.' +navigation: + title: 'Installation' +--- + +## Introduction + +To use Unhead Schema.org with Nuxt, you need to install the Nuxt Schema.org module. + +## Setup + +Please follow the [installation documentation](https://nuxtseo.com/docs/schema-org/getting-started/installation) to get started. + +## Next Steps + +Your Nuxt app is now serving basic Schema.org, congrats! ๐ŸŽ‰ + +The next steps are: + +1. Choose an [Identity](/schema-org/recipes/identity) +2. Set up your pages for [Schema.org Params](/guide/getting-started/how-it-works#runtime-inferences) +3. Then feel free to follow some recipes: + +- [Breadcrumbs](/schema-org/recipes/breadcrumbs) +- [FAQ Page](/schema-org/recipes/faq) +- [Site Search](/schema-org/recipes/site-search) diff --git a/docs/content/1.setup/1.unhead/0.introduction.md b/docs/schema-org/0.nuxt/3.troubleshooting.md similarity index 72% rename from docs/content/1.setup/1.unhead/0.introduction.md rename to docs/schema-org/0.nuxt/3.troubleshooting.md index 41942f62..f6ff59de 100644 --- a/docs/content/1.setup/1.unhead/0.introduction.md +++ b/docs/schema-org/0.nuxt/3.troubleshooting.md @@ -1,9 +1,9 @@ --- -title: Introduction +title: Troubleshooting description: Learn how Unhead works under the hood. --- -Unhead manages the `` of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. +Unhead manages the ``{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. The core package is framework-agnostic and should work in any setup. diff --git a/docs/content/schema-org/1.getting-started/5.vue-components.md b/docs/schema-org/0.nuxt/guides/5.vue-components.md similarity index 100% rename from docs/content/schema-org/1.getting-started/5.vue-components.md rename to docs/schema-org/0.nuxt/guides/5.vue-components.md diff --git a/docs/schema-org/0.react/.navigation.yml b/docs/schema-org/0.react/.navigation.yml new file mode 100644 index 00000000..bcd2ba14 --- /dev/null +++ b/docs/schema-org/0.react/.navigation.yml @@ -0,0 +1 @@ +title: Getting Started diff --git a/docs/schema-org/0.react/0.installation.md b/docs/schema-org/0.react/0.installation.md new file mode 100644 index 00000000..38d4d482 --- /dev/null +++ b/docs/schema-org/0.react/0.installation.md @@ -0,0 +1,161 @@ +--- +title: 'Install Unhead Schema.org' +description: 'Get started with Unhead Schema.org by installing the dependency to your project.' +navigation: + title: 'Installation' +--- + +Using :Icon{name="logos:nuxt-icon"} Nuxt? Check out [nuxt-schema-org](https://nuxtseo.com/schema-org). + +## Demos + +::UButton{to="https://stackblitz.com/edit/vitejs-vite-xbb1fa" target="_blank" style="margin-right: 10px;"} +Vite SPA +:: + +::UButton{to="https://stackblitz.com/edit/vitejs-vite-vsf3sy" target="_blank"} +Vite + Vite SSR +:: + +## Setup + +1. Install `@unhead/schema-org` dependency to your project: + +::code-group + +```bash [yarn] +yarn add -D @unhead/schema-org +``` + +```bash [npm] +npm install -D @unhead/schema-org +``` + +```bash [pnpm] +pnpm add -D @unhead/schema-org +``` + +:: + +2. Configure the Schema.org params + +At a minimum you should provide a [host](https://developers.google.com/search/docs/advanced/crawling/consolidate-duplicate-urls). + +```ts +import { SchemaOrgUnheadPlugin } from '@unhead/schema-org' + +useHead({ + templateParams: { + schemaOrg: { + host: 'https://example.com', + } + } +}) +``` + +See the [Schema.org Params](/schema-org/getting-started/params) for all options you can pass on `schemaOrg`. + +### 3. Add Site Schema.org + +```ts +useSchemaOrg([ + // @todo Select Identity: http://unhead.unjs.io/schema-org/recipes/identity + defineWebSite({ + name: 'My Awesome Website', + }), + defineWebPage(), +]) +``` + +## Recommended: Tree-shaking for SSR + +If you're using Vite SSR, it's highly recommended to add the [Unhead tree-shaking plugin](/plugins/plugins/vite-plugin). + +This will remove the `@unhead/schema-org` dependency from your client bundle, and only include it in your server bundle. + +```ts [@unhead/schema-org] +import UnheadVite from '@unhead/addons/vite' +import { defineConfig } from 'vite' + +export default defineConfig({ + plugins: [ + UnheadVite(), + ] +}) +``` + +## Optional: Auto-Imports + +If you're using Vite with [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) or [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import), you can optionally configure automatic imports. + +Modify your `vite.config.ts` to get the auto-imports. + +::code-group + +```ts [@unhead/schema-org] +import { schemaAutoImports, SchemaOrgResolver } from '@unhead/schema-org' + +export default defineConfig({ + plugins: [ + // ... + Components({ + // ... + resolvers: [ + // auto-import schema-org components + SchemaOrgResolver(), + ], + }), + AutoImport({ + // ... + imports: [ + // auto-import schema-org composables + { + '@unhead/schema-org': schemaAutoImports, + }, + ], + }), + ] +}) +``` + +```ts [@unhead/schema-org/vue] +import { schemaAutoImports, SchemaOrgResolver } from '@unhead/schema-org/vue' + +export default defineConfig({ + plugins: [ + // ... + Components({ + // ... + resolvers: [ + // auto-import schema-org components + SchemaOrgResolver(), + ], + }), + AutoImport({ + // ... + imports: [ + // auto-import schema-org composables + { + '@unhead/schema-org/vue': schemaAutoImports, + }, + ], + }), + ] +}) +``` + +:: + +## Next Steps + +Your Nuxt app is now serving basic Schema.org, congrats! ๐ŸŽ‰ + +The next steps are: + +1. Choose an [Identity](/schema-org/recipes/identity) +2. Set up your pages for [Schema.org Params](/guide/getting-started/how-it-works#runtime-inferences) +3. Then feel free to follow some recipes: + +- [Breadcrumbs](/schema-org/recipes/breadcrumbs) +- [FAQ Page](/schema-org/recipes/faq) +- [Site Search](/schema-org/recipes/site-search) diff --git a/docs/schema-org/0.svelte/.navigation.yml b/docs/schema-org/0.svelte/.navigation.yml new file mode 100644 index 00000000..bcd2ba14 --- /dev/null +++ b/docs/schema-org/0.svelte/.navigation.yml @@ -0,0 +1 @@ +title: Getting Started diff --git a/docs/schema-org/0.svelte/0.installation.md b/docs/schema-org/0.svelte/0.installation.md new file mode 100644 index 00000000..38d4d482 --- /dev/null +++ b/docs/schema-org/0.svelte/0.installation.md @@ -0,0 +1,161 @@ +--- +title: 'Install Unhead Schema.org' +description: 'Get started with Unhead Schema.org by installing the dependency to your project.' +navigation: + title: 'Installation' +--- + +Using :Icon{name="logos:nuxt-icon"} Nuxt? Check out [nuxt-schema-org](https://nuxtseo.com/schema-org). + +## Demos + +::UButton{to="https://stackblitz.com/edit/vitejs-vite-xbb1fa" target="_blank" style="margin-right: 10px;"} +Vite SPA +:: + +::UButton{to="https://stackblitz.com/edit/vitejs-vite-vsf3sy" target="_blank"} +Vite + Vite SSR +:: + +## Setup + +1. Install `@unhead/schema-org` dependency to your project: + +::code-group + +```bash [yarn] +yarn add -D @unhead/schema-org +``` + +```bash [npm] +npm install -D @unhead/schema-org +``` + +```bash [pnpm] +pnpm add -D @unhead/schema-org +``` + +:: + +2. Configure the Schema.org params + +At a minimum you should provide a [host](https://developers.google.com/search/docs/advanced/crawling/consolidate-duplicate-urls). + +```ts +import { SchemaOrgUnheadPlugin } from '@unhead/schema-org' + +useHead({ + templateParams: { + schemaOrg: { + host: 'https://example.com', + } + } +}) +``` + +See the [Schema.org Params](/schema-org/getting-started/params) for all options you can pass on `schemaOrg`. + +### 3. Add Site Schema.org + +```ts +useSchemaOrg([ + // @todo Select Identity: http://unhead.unjs.io/schema-org/recipes/identity + defineWebSite({ + name: 'My Awesome Website', + }), + defineWebPage(), +]) +``` + +## Recommended: Tree-shaking for SSR + +If you're using Vite SSR, it's highly recommended to add the [Unhead tree-shaking plugin](/plugins/plugins/vite-plugin). + +This will remove the `@unhead/schema-org` dependency from your client bundle, and only include it in your server bundle. + +```ts [@unhead/schema-org] +import UnheadVite from '@unhead/addons/vite' +import { defineConfig } from 'vite' + +export default defineConfig({ + plugins: [ + UnheadVite(), + ] +}) +``` + +## Optional: Auto-Imports + +If you're using Vite with [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) or [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import), you can optionally configure automatic imports. + +Modify your `vite.config.ts` to get the auto-imports. + +::code-group + +```ts [@unhead/schema-org] +import { schemaAutoImports, SchemaOrgResolver } from '@unhead/schema-org' + +export default defineConfig({ + plugins: [ + // ... + Components({ + // ... + resolvers: [ + // auto-import schema-org components + SchemaOrgResolver(), + ], + }), + AutoImport({ + // ... + imports: [ + // auto-import schema-org composables + { + '@unhead/schema-org': schemaAutoImports, + }, + ], + }), + ] +}) +``` + +```ts [@unhead/schema-org/vue] +import { schemaAutoImports, SchemaOrgResolver } from '@unhead/schema-org/vue' + +export default defineConfig({ + plugins: [ + // ... + Components({ + // ... + resolvers: [ + // auto-import schema-org components + SchemaOrgResolver(), + ], + }), + AutoImport({ + // ... + imports: [ + // auto-import schema-org composables + { + '@unhead/schema-org/vue': schemaAutoImports, + }, + ], + }), + ] +}) +``` + +:: + +## Next Steps + +Your Nuxt app is now serving basic Schema.org, congrats! ๐ŸŽ‰ + +The next steps are: + +1. Choose an [Identity](/schema-org/recipes/identity) +2. Set up your pages for [Schema.org Params](/guide/getting-started/how-it-works#runtime-inferences) +3. Then feel free to follow some recipes: + +- [Breadcrumbs](/schema-org/recipes/breadcrumbs) +- [FAQ Page](/schema-org/recipes/faq) +- [Site Search](/schema-org/recipes/site-search) diff --git a/docs/schema-org/0.typescript/.navigation.yml b/docs/schema-org/0.typescript/.navigation.yml new file mode 100644 index 00000000..bcd2ba14 --- /dev/null +++ b/docs/schema-org/0.typescript/.navigation.yml @@ -0,0 +1 @@ +title: Getting Started diff --git a/docs/schema-org/0.typescript/0.installation.md b/docs/schema-org/0.typescript/0.installation.md new file mode 100644 index 00000000..38d4d482 --- /dev/null +++ b/docs/schema-org/0.typescript/0.installation.md @@ -0,0 +1,161 @@ +--- +title: 'Install Unhead Schema.org' +description: 'Get started with Unhead Schema.org by installing the dependency to your project.' +navigation: + title: 'Installation' +--- + +Using :Icon{name="logos:nuxt-icon"} Nuxt? Check out [nuxt-schema-org](https://nuxtseo.com/schema-org). + +## Demos + +::UButton{to="https://stackblitz.com/edit/vitejs-vite-xbb1fa" target="_blank" style="margin-right: 10px;"} +Vite SPA +:: + +::UButton{to="https://stackblitz.com/edit/vitejs-vite-vsf3sy" target="_blank"} +Vite + Vite SSR +:: + +## Setup + +1. Install `@unhead/schema-org` dependency to your project: + +::code-group + +```bash [yarn] +yarn add -D @unhead/schema-org +``` + +```bash [npm] +npm install -D @unhead/schema-org +``` + +```bash [pnpm] +pnpm add -D @unhead/schema-org +``` + +:: + +2. Configure the Schema.org params + +At a minimum you should provide a [host](https://developers.google.com/search/docs/advanced/crawling/consolidate-duplicate-urls). + +```ts +import { SchemaOrgUnheadPlugin } from '@unhead/schema-org' + +useHead({ + templateParams: { + schemaOrg: { + host: 'https://example.com', + } + } +}) +``` + +See the [Schema.org Params](/schema-org/getting-started/params) for all options you can pass on `schemaOrg`. + +### 3. Add Site Schema.org + +```ts +useSchemaOrg([ + // @todo Select Identity: http://unhead.unjs.io/schema-org/recipes/identity + defineWebSite({ + name: 'My Awesome Website', + }), + defineWebPage(), +]) +``` + +## Recommended: Tree-shaking for SSR + +If you're using Vite SSR, it's highly recommended to add the [Unhead tree-shaking plugin](/plugins/plugins/vite-plugin). + +This will remove the `@unhead/schema-org` dependency from your client bundle, and only include it in your server bundle. + +```ts [@unhead/schema-org] +import UnheadVite from '@unhead/addons/vite' +import { defineConfig } from 'vite' + +export default defineConfig({ + plugins: [ + UnheadVite(), + ] +}) +``` + +## Optional: Auto-Imports + +If you're using Vite with [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) or [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import), you can optionally configure automatic imports. + +Modify your `vite.config.ts` to get the auto-imports. + +::code-group + +```ts [@unhead/schema-org] +import { schemaAutoImports, SchemaOrgResolver } from '@unhead/schema-org' + +export default defineConfig({ + plugins: [ + // ... + Components({ + // ... + resolvers: [ + // auto-import schema-org components + SchemaOrgResolver(), + ], + }), + AutoImport({ + // ... + imports: [ + // auto-import schema-org composables + { + '@unhead/schema-org': schemaAutoImports, + }, + ], + }), + ] +}) +``` + +```ts [@unhead/schema-org/vue] +import { schemaAutoImports, SchemaOrgResolver } from '@unhead/schema-org/vue' + +export default defineConfig({ + plugins: [ + // ... + Components({ + // ... + resolvers: [ + // auto-import schema-org components + SchemaOrgResolver(), + ], + }), + AutoImport({ + // ... + imports: [ + // auto-import schema-org composables + { + '@unhead/schema-org/vue': schemaAutoImports, + }, + ], + }), + ] +}) +``` + +:: + +## Next Steps + +Your Nuxt app is now serving basic Schema.org, congrats! ๐ŸŽ‰ + +The next steps are: + +1. Choose an [Identity](/schema-org/recipes/identity) +2. Set up your pages for [Schema.org Params](/guide/getting-started/how-it-works#runtime-inferences) +3. Then feel free to follow some recipes: + +- [Breadcrumbs](/schema-org/recipes/breadcrumbs) +- [FAQ Page](/schema-org/recipes/faq) +- [Site Search](/schema-org/recipes/site-search) diff --git a/docs/schema-org/0.typescript/3.troubleshooting.md b/docs/schema-org/0.typescript/3.troubleshooting.md new file mode 100644 index 00000000..f6ff59de --- /dev/null +++ b/docs/schema-org/0.typescript/3.troubleshooting.md @@ -0,0 +1,28 @@ +--- +title: Troubleshooting +description: Learn how Unhead works under the hood. +--- + +Unhead manages the ``{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. + +The core package is framework-agnostic and should work in any setup. + +Framework packages are provided to improve the DX of using Unhead with the framework. + +Optional packages exist to add extra functionality and optimisations to Unhead. + +## Core Package + +- `unhead` - Core package which provides the API for manipulating the head. +- `@unhead/schema` - Provides the TypeScript types for Unhead. +- `@unhead/shared` - Provides shared utilities for Unhead. +- `@unhead/dom` - Manipulating the DOM and collecting the side effects. + +## Integration Packages + +- `@unhead/vue` - Vue 2/3 integration. + +## Optional Packages + +- `@unhead/ssr` - Outputting SSR compatible strings to be used in injecting into a template. +- `@unhead/addons` - Optional addons for Unhead. diff --git a/docs/schema-org/0.vue/.navigation.yml b/docs/schema-org/0.vue/.navigation.yml new file mode 100644 index 00000000..bcd2ba14 --- /dev/null +++ b/docs/schema-org/0.vue/.navigation.yml @@ -0,0 +1 @@ +title: Getting Started diff --git a/docs/schema-org/0.vue/0.installation.md b/docs/schema-org/0.vue/0.installation.md new file mode 100644 index 00000000..0ba068bf --- /dev/null +++ b/docs/schema-org/0.vue/0.installation.md @@ -0,0 +1,163 @@ +--- +title: 'Install Unhead Schema.org' +description: 'Get started with Unhead Schema.org by installing the dependency to your project.' +navigation: + title: 'Installation' +--- + +Using :Icon{name="logos:nuxt-icon"} Nuxt? Check out [nuxt-schema-org](https://nuxtseo.com/schema-org). + +## Demos + +::UButton{to="https://stackblitz.com/edit/vitejs-vite-xbb1fa" target="_blank" style="margin-right: 10px;"} +Vite SPA +:: + +::UButton{to="https://stackblitz.com/edit/vitejs-vite-vsf3sy" target="_blank"} +Vite + Vite SSR +:: + +## Setup + +1. Install `@unhead/schema-org` dependency to your project: + +::code-group + +```bash [yarn] +yarn add -D @unhead/schema-org +``` + +```bash [npm] +npm install -D @unhead/schema-org +``` + +```bash [pnpm] +pnpm add -D @unhead/schema-org +``` + +:: + +2. Configure the Schema.org params + +At a minimum you should provide a [host](https://developers.google.com/search/docs/advanced/crawling/consolidate-duplicate-urls). + +```ts +import { SchemaOrgUnheadPlugin } from '@unhead/schema-org/vue' + +useHead({ + templateParams: { + schemaOrg: { + host: 'https://example.com', + } + } +}) +``` + +See the [Schema.org Params](/schema-org/getting-started/params) for all options you can pass on `schemaOrg`. + +### 3. Add Site Schema.org + +```ts +import { SchemaOrgUnheadPlugin } from '@unhead/schema-org/vue' + +useSchemaOrg([ + // @todo Select Identity: http://unhead.unjs.io/schema-org/recipes/identity + defineWebSite({ + name: 'My Awesome Website', + }), + defineWebPage(), +]) +``` + +## Recommended: Tree-shaking for SSR + +If you're using Vite SSR, it's highly recommended to add the [Unhead tree-shaking plugin](/plugins/plugins/vite-plugin). + +This will remove the `@unhead/schema-org` dependency from your client bundle, and only include it in your server bundle. + +```ts [@unhead/schema-org] +import UnheadVite from '@unhead/addons/vite' +import { defineConfig } from 'vite' + +export default defineConfig({ + plugins: [ + UnheadVite(), + ] +}) +``` + +## Optional: Auto-Imports + +If you're using Vite with [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components) or [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import), you can optionally configure automatic imports. + +Modify your `vite.config.ts` to get the auto-imports. + +::code-group + +```ts [@unhead/schema-org] +import { schemaAutoImports, SchemaOrgResolver } from '@unhead/schema-org' + +export default defineConfig({ + plugins: [ + // ... + Components({ + // ... + resolvers: [ + // auto-import schema-org components + SchemaOrgResolver(), + ], + }), + AutoImport({ + // ... + imports: [ + // auto-import schema-org composables + { + '@unhead/schema-org': schemaAutoImports, + }, + ], + }), + ] +}) +``` + +```ts [@unhead/schema-org/vue] +import { schemaAutoImports, SchemaOrgResolver } from '@unhead/schema-org/vue' + +export default defineConfig({ + plugins: [ + // ... + Components({ + // ... + resolvers: [ + // auto-import schema-org components + SchemaOrgResolver(), + ], + }), + AutoImport({ + // ... + imports: [ + // auto-import schema-org composables + { + '@unhead/schema-org/vue': schemaAutoImports, + }, + ], + }), + ] +}) +``` + +:: + +## Next Steps + +Your Nuxt app is now serving basic Schema.org, congrats! ๐ŸŽ‰ + +The next steps are: + +1. Choose an [Identity](/schema-org/recipes/identity) +2. Set up your pages for [Schema.org Params](/guide/getting-started/how-it-works#runtime-inferences) +3. Then feel free to follow some recipes: + +- [Breadcrumbs](/schema-org/recipes/breadcrumbs) +- [FAQ Page](/schema-org/recipes/faq) +- [Site Search](/schema-org/recipes/site-search) diff --git a/docs/schema-org/0.vue/3.troubleshooting.md b/docs/schema-org/0.vue/3.troubleshooting.md new file mode 100644 index 00000000..f6ff59de --- /dev/null +++ b/docs/schema-org/0.vue/3.troubleshooting.md @@ -0,0 +1,28 @@ +--- +title: Troubleshooting +description: Learn how Unhead works under the hood. +--- + +Unhead manages the ``{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. + +The core package is framework-agnostic and should work in any setup. + +Framework packages are provided to improve the DX of using Unhead with the framework. + +Optional packages exist to add extra functionality and optimisations to Unhead. + +## Core Package + +- `unhead` - Core package which provides the API for manipulating the head. +- `@unhead/schema` - Provides the TypeScript types for Unhead. +- `@unhead/shared` - Provides shared utilities for Unhead. +- `@unhead/dom` - Manipulating the DOM and collecting the side effects. + +## Integration Packages + +- `@unhead/vue` - Vue 2/3 integration. + +## Optional Packages + +- `@unhead/ssr` - Outputting SSR compatible strings to be used in injecting into a template. +- `@unhead/addons` - Optional addons for Unhead. diff --git a/docs/schema-org/0.vue/guides/5.vue-components.md b/docs/schema-org/0.vue/guides/5.vue-components.md new file mode 100644 index 00000000..9c50cdf4 --- /dev/null +++ b/docs/schema-org/0.vue/guides/5.vue-components.md @@ -0,0 +1,73 @@ +--- +title: Vue Components +description: Learn how to use the Vue components API. +--- + +โš ๏ธ Using the components API is on longer recommended. You should use the composables for better developer experience. + +Each Schema has a component that can be used to configure +Schema. + +Each component implements the same logic and there are multiple ways to define your components. + +## Headless - Attributes + +Any attribute passed on the component will be forwarded to the +Schema. + +For fields which are prefixed with `@`, such as `@type` and `@id`, you can simply omit the `@`. + +For example, to set a page name and type: + +```vue + +``` + +## Headless - Slots + +Alternatively to providing attributes on the prop, you are also able to provide the data through slots which +use the same name as the attribute. + +- Only supports shallow text nodes + +For example, we can generate a FAQ Question with the following: + +```vue + +``` + +## Rendered Default slot + +If you want to render the markup and want full customisation, you can provide a default slot. The slot props +will be the resolved node. + +```vue + +``` diff --git a/docs/content/schema-org/2.guides/_dir.yml b/docs/schema-org/2.guides/.navigation.yml similarity index 100% rename from docs/content/schema-org/2.guides/_dir.yml rename to docs/schema-org/2.guides/.navigation.yml diff --git a/docs/content/schema-org/2.guides/2.deduping-nodes.md b/docs/schema-org/2.guides/2.deduping-nodes.md similarity index 100% rename from docs/content/schema-org/2.guides/2.deduping-nodes.md rename to docs/schema-org/2.guides/2.deduping-nodes.md diff --git a/docs/content/schema-org/2.guides/2.nodes.md b/docs/schema-org/2.guides/2.nodes.md similarity index 100% rename from docs/content/schema-org/2.guides/2.nodes.md rename to docs/schema-org/2.guides/2.nodes.md diff --git a/docs/content/schema-org/1.getting-started/3.params.md b/docs/schema-org/2.guides/3.params.md similarity index 84% rename from docs/content/schema-org/1.getting-started/3.params.md rename to docs/schema-org/2.guides/3.params.md index f4a11a5a..deccff29 100644 --- a/docs/content/schema-org/1.getting-started/3.params.md +++ b/docs/schema-org/2.guides/3.params.md @@ -37,34 +37,34 @@ useHead({ ### `tagPosition` - - **type**: `string` - - **default**: `head` +- **type**: `string` +- **default**: `head` The position of the Schema.org script tag. This is useful if you want to load the script in the body of your page. ### `host` - - **type**: `string` +- **type**: `string` The production URL of your site. This allows the client to generate all URLs for you and is important to set correctly. ### `path` - - **type**: `string` - - **default**: `window.location.pathname` +- **type**: `string` +- **default**: `window.location.pathname` The path of the current page. This allows the client to generate all URLs for you and is important to set correctly. ### `inLanguage` - - **type**: `string` - - **default**: `en` +- **type**: `string` +- **default**: `en` Will set the `isLanguage` to this value for any Schema which uses it. Should be a valid language code, i.e `en-AU` ### `trailingSlash` - - **type**: `boolean` - - **default**: `false` +- **type**: `boolean` +- **default**: `false` Whether to add a trailing slash to the URL. This is important for Google to understand the canonical URL of your page. diff --git a/docs/content/schema-org/2.guides/9.debugging.md b/docs/schema-org/2.guides/9.debugging.md similarity index 68% rename from docs/content/schema-org/2.guides/9.debugging.md rename to docs/schema-org/2.guides/9.debugging.md index d064b145..2bec3b9a 100644 --- a/docs/content/schema-org/2.guides/9.debugging.md +++ b/docs/schema-org/2.guides/9.debugging.md @@ -5,4 +5,4 @@ description: Learn how to debug and test your Schema.org once you have it setup. ## Third Party Validators -To confirm the schema generated is valid, you should run it through both https://validator.schema.org/ and https://search.google.com/test/rich-results. +To confirm the schema generated is valid, you should run it through both and . diff --git a/docs/content/schema-org/4.recipes/_dir.yml b/docs/schema-org/4.recipes/.navigation.yml similarity index 100% rename from docs/content/schema-org/4.recipes/_dir.yml rename to docs/schema-org/4.recipes/.navigation.yml diff --git a/docs/content/schema-org/4.recipes/0.custom-nodes.md b/docs/schema-org/4.recipes/0.custom-nodes.md similarity index 100% rename from docs/content/schema-org/4.recipes/0.custom-nodes.md rename to docs/schema-org/4.recipes/0.custom-nodes.md diff --git a/docs/content/schema-org/4.recipes/1.identity.md b/docs/schema-org/4.recipes/1.identity.md similarity index 99% rename from docs/content/schema-org/4.recipes/1.identity.md rename to docs/schema-org/4.recipes/1.identity.md index 9e3d3540..27512b77 100644 --- a/docs/content/schema-org/4.recipes/1.identity.md +++ b/docs/schema-org/4.recipes/1.identity.md @@ -14,6 +14,7 @@ While Schema.org provides detailed types, it's recommended to choose a single pr Selecting an Organization is the most common choice. It's recommended to use this if you're not sure which to use. Tips: + - Doesn't need to relate to an official business - Should be used for eCommerce that doesn't have a physical location @@ -46,6 +47,7 @@ useSchemaOrg([ ``` + :: ## Person @@ -81,6 +83,7 @@ useSchemaOrg([ ``` + :: ## Local Business @@ -88,6 +91,7 @@ useSchemaOrg([ Selecting a Local Business should be used when your website is about a physical business, requiring an address. Tips: + - Extends an [Organization](/schema-org/schema/organization) - Should be used for eCommerce that has a physical location @@ -130,6 +134,7 @@ useSchemaOrg([ ``` + :: ## Schema.org Node Relations diff --git a/docs/content/schema-org/4.recipes/blog.md b/docs/schema-org/4.recipes/blog.md similarity index 99% rename from docs/content/schema-org/4.recipes/blog.md rename to docs/schema-org/4.recipes/blog.md index 1c02e4cf..9abd2021 100644 --- a/docs/content/schema-org/4.recipes/blog.md +++ b/docs/schema-org/4.recipes/blog.md @@ -43,6 +43,7 @@ useSchemaOrg([ /> ``` + :: ## Specifying the Article Type @@ -110,6 +111,7 @@ useSchemaOrg([ ``` + :: ## Markup Blog Archive Pages @@ -136,4 +138,5 @@ useSchemaOrg([ /> ``` + :: diff --git a/docs/content/schema-org/4.recipes/breadcrumbs.md b/docs/schema-org/4.recipes/breadcrumbs.md similarity index 99% rename from docs/content/schema-org/4.recipes/breadcrumbs.md rename to docs/schema-org/4.recipes/breadcrumbs.md index 44ea5388..3419f850 100644 --- a/docs/content/schema-org/4.recipes/breadcrumbs.md +++ b/docs/schema-org/4.recipes/breadcrumbs.md @@ -77,6 +77,7 @@ const breadcrumb = [ ``` + :: ## Adding Multiple Breadcrumbs diff --git a/docs/content/schema-org/4.recipes/e-commerce.md b/docs/schema-org/4.recipes/e-commerce.md similarity index 99% rename from docs/content/schema-org/4.recipes/e-commerce.md rename to docs/schema-org/4.recipes/e-commerce.md index 5aa7b617..d426f094 100644 --- a/docs/content/schema-org/4.recipes/e-commerce.md +++ b/docs/schema-org/4.recipes/e-commerce.md @@ -35,4 +35,5 @@ useSchemaOrg([ }) ]) ``` + :: diff --git a/docs/content/schema-org/4.recipes/faq.md b/docs/schema-org/4.recipes/faq.md similarity index 99% rename from docs/content/schema-org/4.recipes/faq.md rename to docs/schema-org/4.recipes/faq.md index ac9bfd6a..81b9ef31 100644 --- a/docs/content/schema-org/4.recipes/faq.md +++ b/docs/schema-org/4.recipes/faq.md @@ -21,6 +21,7 @@ to create Question Schema whilst handling relations for you. Note: When using a page with the path `/faq`, the page type will be automatically set for you. Tips: + - The answer may contain HTML content such as links and lists. ::code-group @@ -78,4 +79,5 @@ useSchemaOrg([ ``` + :: diff --git a/docs/content/schema-org/4.recipes/how-to.md b/docs/schema-org/4.recipes/how-to.md similarity index 100% rename from docs/content/schema-org/4.recipes/how-to.md rename to docs/schema-org/4.recipes/how-to.md diff --git a/docs/content/schema-org/4.recipes/site-search.md b/docs/schema-org/4.recipes/site-search.md similarity index 99% rename from docs/content/schema-org/4.recipes/site-search.md rename to docs/schema-org/4.recipes/site-search.md index 04947582..f11f2d7c 100644 --- a/docs/content/schema-org/4.recipes/site-search.md +++ b/docs/schema-org/4.recipes/site-search.md @@ -41,6 +41,7 @@ useSchemaOrg([ /> ``` + :: ## Define your Search Results Page @@ -62,4 +63,5 @@ useSchemaOrg([ ``` + :: diff --git a/docs/content/api/_dir.yml b/docs/schema-org/5.api/.navigation.yml similarity index 100% rename from docs/content/api/_dir.yml rename to docs/schema-org/5.api/.navigation.yml diff --git a/docs/content/schema-org/5.api/0.use-schema-org.md b/docs/schema-org/5.api/0.use-schema-org.md similarity index 95% rename from docs/content/schema-org/5.api/0.use-schema-org.md rename to docs/schema-org/5.api/0.use-schema-org.md index d0e3300e..2b6520d1 100644 --- a/docs/content/schema-org/5.api/0.use-schema-org.md +++ b/docs/schema-org/5.api/0.use-schema-org.md @@ -1,9 +1,9 @@ --- -title: useSchemaOrg +title: useSchemaOrg() description: How to use the useSchemaOrg composable. --- -The `useSchemaOrg` composable is the primary way to manage the head of the document at runtime. +The `useSchemaOrg()`{lang="ts"} composable is the primary way to manage the head of the document at runtime. ```ts useSchemaOrg(input, options) diff --git a/docs/content/schema-org/10.schema/_dir.yml b/docs/schema-org/9.schema/.navigation.yml similarity index 100% rename from docs/content/schema-org/10.schema/_dir.yml rename to docs/schema-org/9.schema/.navigation.yml diff --git a/docs/content/schema-org/10.schema/article.md b/docs/schema-org/9.schema/article.md similarity index 100% rename from docs/content/schema-org/10.schema/article.md rename to docs/schema-org/9.schema/article.md diff --git a/docs/content/schema-org/10.schema/book.md b/docs/schema-org/9.schema/book.md similarity index 100% rename from docs/content/schema-org/10.schema/book.md rename to docs/schema-org/9.schema/book.md diff --git a/docs/content/schema-org/10.schema/breadcrumb.md b/docs/schema-org/9.schema/breadcrumb.md similarity index 95% rename from docs/content/schema-org/10.schema/breadcrumb.md rename to docs/schema-org/9.schema/breadcrumb.md index 93e485ff..4d473e6d 100644 --- a/docs/content/schema-org/10.schema/breadcrumb.md +++ b/docs/schema-org/9.schema/breadcrumb.md @@ -8,7 +8,7 @@ ## Useful Links -- [BreadcrumbList - Schema.org ](https://schema.org/BreadcrumbList) +- [BreadcrumbList - Schema.org](https://schema.org/BreadcrumbList) - [Breadcrumb Schema Markup - Google Search Central](https://developers.google.com/search/docs/advanced/structured-data/breadcrumb) - [Breadcrumb - Yoast](https://developer.yoast.com/features/schema/pieces/breadcrumb) - [Recipe: Breadcrumbs](/schema-org/recipes/breadcrumbs) diff --git a/docs/content/schema-org/10.schema/comment.md b/docs/schema-org/9.schema/comment.md similarity index 100% rename from docs/content/schema-org/10.schema/comment.md rename to docs/schema-org/9.schema/comment.md diff --git a/docs/content/schema-org/10.schema/course.md b/docs/schema-org/9.schema/course.md similarity index 100% rename from docs/content/schema-org/10.schema/course.md rename to docs/schema-org/9.schema/course.md diff --git a/docs/content/schema-org/10.schema/event.md b/docs/schema-org/9.schema/event.md similarity index 100% rename from docs/content/schema-org/10.schema/event.md rename to docs/schema-org/9.schema/event.md diff --git a/docs/content/schema-org/10.schema/food-establishment.md b/docs/schema-org/9.schema/food-establishment.md similarity index 100% rename from docs/content/schema-org/10.schema/food-establishment.md rename to docs/schema-org/9.schema/food-establishment.md diff --git a/docs/content/schema-org/10.schema/how-to.md b/docs/schema-org/9.schema/how-to.md similarity index 100% rename from docs/content/schema-org/10.schema/how-to.md rename to docs/schema-org/9.schema/how-to.md diff --git a/docs/content/schema-org/10.schema/image.md b/docs/schema-org/9.schema/image.md similarity index 100% rename from docs/content/schema-org/10.schema/image.md rename to docs/schema-org/9.schema/image.md diff --git a/docs/content/schema-org/10.schema/item-list.md b/docs/schema-org/9.schema/item-list.md similarity index 100% rename from docs/content/schema-org/10.schema/item-list.md rename to docs/schema-org/9.schema/item-list.md diff --git a/docs/content/schema-org/10.schema/job-posting.md b/docs/schema-org/9.schema/job-posting.md similarity index 100% rename from docs/content/schema-org/10.schema/job-posting.md rename to docs/schema-org/9.schema/job-posting.md diff --git a/docs/content/schema-org/10.schema/local-business.md b/docs/schema-org/9.schema/local-business.md similarity index 100% rename from docs/content/schema-org/10.schema/local-business.md rename to docs/schema-org/9.schema/local-business.md diff --git a/docs/content/schema-org/10.schema/movie.md b/docs/schema-org/9.schema/movie.md similarity index 100% rename from docs/content/schema-org/10.schema/movie.md rename to docs/schema-org/9.schema/movie.md diff --git a/docs/content/schema-org/10.schema/organization.md b/docs/schema-org/9.schema/organization.md similarity index 100% rename from docs/content/schema-org/10.schema/organization.md rename to docs/schema-org/9.schema/organization.md diff --git a/docs/content/schema-org/10.schema/person.md b/docs/schema-org/9.schema/person.md similarity index 100% rename from docs/content/schema-org/10.schema/person.md rename to docs/schema-org/9.schema/person.md diff --git a/docs/content/schema-org/10.schema/product.md b/docs/schema-org/9.schema/product.md similarity index 100% rename from docs/content/schema-org/10.schema/product.md rename to docs/schema-org/9.schema/product.md diff --git a/docs/content/schema-org/10.schema/question.md b/docs/schema-org/9.schema/question.md similarity index 100% rename from docs/content/schema-org/10.schema/question.md rename to docs/schema-org/9.schema/question.md diff --git a/docs/content/schema-org/10.schema/recipe.md b/docs/schema-org/9.schema/recipe.md similarity index 100% rename from docs/content/schema-org/10.schema/recipe.md rename to docs/schema-org/9.schema/recipe.md diff --git a/docs/content/schema-org/10.schema/software-app.md b/docs/schema-org/9.schema/software-app.md similarity index 100% rename from docs/content/schema-org/10.schema/software-app.md rename to docs/schema-org/9.schema/software-app.md diff --git a/docs/content/schema-org/10.schema/video.md b/docs/schema-org/9.schema/video.md similarity index 100% rename from docs/content/schema-org/10.schema/video.md rename to docs/schema-org/9.schema/video.md diff --git a/docs/content/schema-org/10.schema/webpage.md b/docs/schema-org/9.schema/webpage.md similarity index 99% rename from docs/content/schema-org/10.schema/webpage.md rename to docs/schema-org/9.schema/webpage.md index 75869fe1..8ebd586b 100644 --- a/docs/content/schema-org/10.schema/webpage.md +++ b/docs/schema-org/9.schema/webpage.md @@ -30,6 +30,7 @@ - **isPartOf**: WebSite reference Home page only + - **about**: Identity Reference - **primaryImageOfPage**: Logo reference diff --git a/docs/content/schema-org/10.schema/website.md b/docs/schema-org/9.schema/website.md similarity index 100% rename from docs/content/schema-org/10.schema/website.md rename to docs/schema-org/9.schema/website.md diff --git a/docs/scripts/0.introduction.md b/docs/scripts/0.introduction.md new file mode 100644 index 00000000..17e062a0 --- /dev/null +++ b/docs/scripts/0.introduction.md @@ -0,0 +1,97 @@ +--- +title: "Loading Scripts with Unhead" +description: "Add type-safe scripts to your site - optimized for SSR, privacy and performance" +navigation: + title: Introduction +--- + +# Loading Scripts with Unhead + +Third-party scripts slow down your site and leak user data. Unhead Scripts helps you fix this. + +## Install + +```bash +pnpm add -D @unhead/scripts +``` + +## Quick Example + +```ts +const script = useScript('https://example.com/tracker.js', { + use() { + return window.tracker + } +}) + +// Works in SSR, runs when script loads +script.proxy.trackEvent('page_view') +``` + +## What Makes It Different? + +- Scripts don't block page load +- No script runs until you need it +- No user data sent without consent +- Works in SSR without hacks + +## When Not to Use + +1. **Static Scripts**: If your script never changes and runs on every page, just add it to your HTML. +2. **Small Utilities**: For scripts under 5KB, just bundle them. +3. **Core Features**: Don't lazy load scripts your site needs to work. + +## Real Performance Impact + +Loading scripts the wrong way makes your site slow: + +- 1 analytics script: +2s load time +- 1 chat widget: +3s load time +- 1 ad script: +4s load time + +Source: [HTTP Archive's Web Almanac](https://almanac.httparchive.org/en/2023/performance) + +## External Resources + +- [Script Loading Best Practices (web.dev)](https://web.dev/optimizing-content-efficiency-loading-third-party-javascript/) +- [Performance Impact of Third Party JS](https://www.speedcurve.com/blog/real-cost-of-third-party-javascript/) +- [Browser Resource Loading (MDN)](https://developer.mozilla.org/en-US/docs/Web/Performance/Resource_loading) + +## Next Steps + +- [Add Types to Scripts โ†’](/unhead/scripts/typed-scripts) +- [Control Loading โ†’](/unhead/scripts/load-triggers) +- [Handle Errors โ†’](/unhead/scripts/load-failures) + +--- + +title: Introduction to Unhead +description: Manage page metadata for modern JavaScript applications +navigation: +title: Introduction +--- + +## What is head manager? + +Unhead is built for modern JavaScript applications that need to render code outside their `
`{lang="html"} entry in both a +server-rendered and client-rendered environment. + +JavaScript applications need different metadata for each page or view. Without proper management, applications encounter several issues: + +Pages show incorrect titles and descriptions during navigation. Social media previews display wrong information. Search engines receive duplicate or conflicting meta tags. Server-rendered pages break when JavaScript takes over in the browser. + +These issues affect SEO, social sharing, and user experience. They become more significant in server-rendered applications where metadata must work correctly during the initial page load and subsequent JavaScript updates. + +```html + + + + + + + +
+ + + +``` diff --git a/docs/content/1.setup/4.vue/_dir.yml b/docs/scripts/0.nuxt/.navigation.yml similarity index 100% rename from docs/content/1.setup/4.vue/_dir.yml rename to docs/scripts/0.nuxt/.navigation.yml diff --git a/docs/scripts/0.nuxt/1.installation.md b/docs/scripts/0.nuxt/1.installation.md new file mode 100644 index 00000000..c6fbd7f0 --- /dev/null +++ b/docs/scripts/0.nuxt/1.installation.md @@ -0,0 +1,165 @@ +--- +title: Installing Unhead with Vue +description: Learn how to start using Unhead with Vue. +navigation: + title: 'Installation' +--- + +## Introduction + +Unhead is the official head management library for Vue. It provides a simple and intuitive API for managing the head of your application, including the title, meta tags, and other elements that are important for SEO and user experience. + +## Setup + +1. Install `@unhead/vue` dependency to your project: + +::code-group + +```bash [yarn] +yarn add @unhead/vue +``` + +```bash [npm] +npm install @unhead/vue +``` + +```bash [pnpm] +pnpm add @unhead/vue +``` + +:: + +If you're using Vue 2, you will need to install v1 of `@unhead/vue` instead. + +::code-group + +```bash [yarn] +yarn add @unhead/vue@^1 +``` + +```bash [npm] +npm install @unhead/vue@^1 +``` + +```bash [pnpm] +pnpm add @unhead/vue@^1 +``` + +:: + +### Demos + +- [StackBlitz - Vite - Vue SPA](https://stackblitz.com/edit/vitejs-vite-uijgqa?file=package.json) + +2. Register the Vue plugin: + +```ts [Vue 3] +import { createHead } from '@unhead/vue' +import { createApp } from 'vue' + +const app = createApp() + +const head = createHead() +app.use(head) + +app.mount('#app') +``` + +```ts [Vue 2] +// You must use v1 of Unhead for Vue 2 support +import { createHead } from '@unhead/vue' +import { UnheadPlugin } from '@unhead/vue/vue2' +import Vue from 'vue' + +const head = createHead() +Vue.use(UnheadPlugin) +``` + +:: + +3. Done! Now you can use the `useHead` composable to manage your head. + +::code-group + +```vue [useHead] + +``` + +```vue [Options API] + +``` + +:: + +## Optional: Auto-Imports + +Unhead provides out-of-the-box configuration for [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import). + +```ts [vite.config.ts] +import { unheadVueComposablesImports } from '@unhead/vue' + +export default defineConfig({ + plugins: [ + AutoImport({ + imports: [ + unheadVueComposablesImports, + ], + }), + ] +}) +``` + +## Optional: Vue 3 Options API + +The options API functionality is only provided out-of-the-box for Vue 2, if you'd like to use in Vue 3 you will need to install the mixin. + +```ts +import { createHead, VueHeadMixin } from '@unhead/vue' +import { createApp } from 'vue' + +const app = createApp() +const head = createHead() +app.mixin(VueHeadMixin) +// ... +``` + +This key can either be a function or a plain object or reactive data. See [Reactivity](/setup/vue/how-it-works) for more details. + +```vue + + + +``` + +## Next Steps + +Your Vue app is now setup for head management, congrats! ๐ŸŽ‰ + +Try next: + +1. Optional: [Setup SSR](/setup/ssr/installation) +2. Explore the [Composables](/usage/composables/use-head) diff --git a/docs/scripts/0.nuxt/3.troubleshooting.md b/docs/scripts/0.nuxt/3.troubleshooting.md new file mode 100644 index 00000000..f6ff59de --- /dev/null +++ b/docs/scripts/0.nuxt/3.troubleshooting.md @@ -0,0 +1,28 @@ +--- +title: Troubleshooting +description: Learn how Unhead works under the hood. +--- + +Unhead manages the ``{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. + +The core package is framework-agnostic and should work in any setup. + +Framework packages are provided to improve the DX of using Unhead with the framework. + +Optional packages exist to add extra functionality and optimisations to Unhead. + +## Core Package + +- `unhead` - Core package which provides the API for manipulating the head. +- `@unhead/schema` - Provides the TypeScript types for Unhead. +- `@unhead/shared` - Provides shared utilities for Unhead. +- `@unhead/dom` - Manipulating the DOM and collecting the side effects. + +## Integration Packages + +- `@unhead/vue` - Vue 2/3 integration. + +## Optional Packages + +- `@unhead/ssr` - Outputting SSR compatible strings to be used in injecting into a template. +- `@unhead/addons` - Optional addons for Unhead. diff --git a/docs/scripts/0.typescript/1.installation.md b/docs/scripts/0.typescript/1.installation.md new file mode 100644 index 00000000..e373f635 --- /dev/null +++ b/docs/scripts/0.typescript/1.installation.md @@ -0,0 +1,191 @@ +--- +title: 'Install Unhead' +description: 'Get started with Unhead by installing the dependency to your project.' +navigation: + title: 'Installation' +--- + +Using :Icon{name="logos:vue"} Vue? Check out the [Vue integration](/setup/vue/installation). + +Using :Icon{name="logos:nuxt-icon"} Nuxt? Unhead is already built-in! Check out the [Nuxt docs](https://nuxt.com/docs/getting-started/seo-meta). + +## Setup + +1. Install `unhead` dependency to your project: + +::code-group + +```bash [yarn] +yarn add unhead +``` + +```bash [npm] +npm install unhead +``` + +```bash [pnpm] +pnpm add unhead +``` + +:: + +### Setup Client-Side Rendering (CSR) + +Create a head instance somewhere in your apps client entry. + +```ts [main.ts] +import { createHead } from 'unhead/client' + +// Create a global head instance +const head = createHead() +``` + +Done! Now you can use the `useHead` composable to manage your head. + +```ts +import { useHead } from 'unhead' + +useHead({ + title: 'My awesome site' +}) +``` + +### Setup Server-Side Rendering (SSR) + +If you app does not SSR, you can skip this step. + +**1. Create a head instance** + +Somewhere in your server entry, create a head instance. + +```ts [main.ts] +import { createHead } from 'unhead/server' + +// Create a global head instance +const head = createHead() +``` + +**2. Manage context** + +To make use of the `useHead()`{lang="ts"} composables, Unhead uses [unctx](https://github.com/unjs/unctx) under the hood which requires you to manually +set and unset the context when handling requests to avoid cross-request pollution. + +This is usually done by attaching setting the context as part of handling the request. + +```ts +import { unheadCtx } from 'unhead' +import { createHead } from 'unhead/server' + +function handleRequest(req, res) { + const head = createHead() + unheadCtx.set(head) + // Your SSR logic here + unheadCtx.unset() +} +``` + +**3. Generate SSR Payload** + +Once you're ready to start displaying tags on the server, you'll need to generate the SSR payload. + +```ts +import { renderSSRHead } from 'unhead/server' + +// head is from createHead() +const payload = await renderSSRHead(head) +``` + +The payload schema looks like the following: + +```ts +export interface SSRHeadPayload { + headTags: string + bodyTags: string + bodyTagsOpen: string + htmlAttrs: string + bodyAttrs: string +} +``` + +**4. Update your app template** + +You will need to update your app template to add in the templates for +the SSR tags. + +Different frameworks differ in how they handle this template. + +**Simple string replace** + +```html + +> + + + + + > + +
+ + + + +``` + +To handle this type of template you can use this code + +```ts +const headPayload = await renderSSRHead(head) + +Object.entries(headPayload).forEach(([key, value]) => { + html = html.replace(``{lang="html"}, value) +}) +``` + +## 3. Done! How hydration works + +When your client-side app hydrates the server head tags, it will attempt to hydrate each +element based on the nodes being equal `$el.isEqualNode($newEl)` or them sharing the same +dedupe key (see [Tag Deduping](/usage/guides/handling-duplicates)). + +If you're rendering content that differs between client and server, you should +specify a `key` attribute if the element does not have a unique dedupe key. + +```ts +useHead({ + script: [ + { + // key is needed to avoid seperate scripts being created + key: 'my-script', + innerHTML: process.server ? '' : 'console.log("hello world")', + } + ] +}) +``` + +## Optional: Auto-Imports + +Unhead provides out-of-the-box configuration for [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import). + +```ts [vite.config.ts] +import { unheadComposablesImports } from 'unhead' + +export default defineConfig({ + plugins: [ + AutoImport({ + imports: [ + unheadComposablesImports[0], + ], + }), + ] +}) +``` + +### Next Steps + +Your app is now setup for head management, congrats! ๐ŸŽ‰ + +Try next: + +1. Optional: [Setup SSR](/setup/ssr/installation) +2. Add some [recipes](/addons/recipes) diff --git a/docs/scripts/0.typescript/3.troubleshooting.md b/docs/scripts/0.typescript/3.troubleshooting.md new file mode 100644 index 00000000..f6ff59de --- /dev/null +++ b/docs/scripts/0.typescript/3.troubleshooting.md @@ -0,0 +1,28 @@ +--- +title: Troubleshooting +description: Learn how Unhead works under the hood. +--- + +Unhead manages the ``{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. + +The core package is framework-agnostic and should work in any setup. + +Framework packages are provided to improve the DX of using Unhead with the framework. + +Optional packages exist to add extra functionality and optimisations to Unhead. + +## Core Package + +- `unhead` - Core package which provides the API for manipulating the head. +- `@unhead/schema` - Provides the TypeScript types for Unhead. +- `@unhead/shared` - Provides shared utilities for Unhead. +- `@unhead/dom` - Manipulating the DOM and collecting the side effects. + +## Integration Packages + +- `@unhead/vue` - Vue 2/3 integration. + +## Optional Packages + +- `@unhead/ssr` - Outputting SSR compatible strings to be used in injecting into a template. +- `@unhead/addons` - Optional addons for Unhead. diff --git a/docs/scripts/0.vue/.navigation.yml b/docs/scripts/0.vue/.navigation.yml new file mode 100644 index 00000000..46518f8b --- /dev/null +++ b/docs/scripts/0.vue/.navigation.yml @@ -0,0 +1,2 @@ +title: Vue +icon: logos:vue diff --git a/docs/scripts/0.vue/1.installation.md b/docs/scripts/0.vue/1.installation.md new file mode 100644 index 00000000..c6fbd7f0 --- /dev/null +++ b/docs/scripts/0.vue/1.installation.md @@ -0,0 +1,165 @@ +--- +title: Installing Unhead with Vue +description: Learn how to start using Unhead with Vue. +navigation: + title: 'Installation' +--- + +## Introduction + +Unhead is the official head management library for Vue. It provides a simple and intuitive API for managing the head of your application, including the title, meta tags, and other elements that are important for SEO and user experience. + +## Setup + +1. Install `@unhead/vue` dependency to your project: + +::code-group + +```bash [yarn] +yarn add @unhead/vue +``` + +```bash [npm] +npm install @unhead/vue +``` + +```bash [pnpm] +pnpm add @unhead/vue +``` + +:: + +If you're using Vue 2, you will need to install v1 of `@unhead/vue` instead. + +::code-group + +```bash [yarn] +yarn add @unhead/vue@^1 +``` + +```bash [npm] +npm install @unhead/vue@^1 +``` + +```bash [pnpm] +pnpm add @unhead/vue@^1 +``` + +:: + +### Demos + +- [StackBlitz - Vite - Vue SPA](https://stackblitz.com/edit/vitejs-vite-uijgqa?file=package.json) + +2. Register the Vue plugin: + +```ts [Vue 3] +import { createHead } from '@unhead/vue' +import { createApp } from 'vue' + +const app = createApp() + +const head = createHead() +app.use(head) + +app.mount('#app') +``` + +```ts [Vue 2] +// You must use v1 of Unhead for Vue 2 support +import { createHead } from '@unhead/vue' +import { UnheadPlugin } from '@unhead/vue/vue2' +import Vue from 'vue' + +const head = createHead() +Vue.use(UnheadPlugin) +``` + +:: + +3. Done! Now you can use the `useHead` composable to manage your head. + +::code-group + +```vue [useHead] + +``` + +```vue [Options API] + +``` + +:: + +## Optional: Auto-Imports + +Unhead provides out-of-the-box configuration for [unplugin-auto-import](https://github.com/antfu/unplugin-auto-import). + +```ts [vite.config.ts] +import { unheadVueComposablesImports } from '@unhead/vue' + +export default defineConfig({ + plugins: [ + AutoImport({ + imports: [ + unheadVueComposablesImports, + ], + }), + ] +}) +``` + +## Optional: Vue 3 Options API + +The options API functionality is only provided out-of-the-box for Vue 2, if you'd like to use in Vue 3 you will need to install the mixin. + +```ts +import { createHead, VueHeadMixin } from '@unhead/vue' +import { createApp } from 'vue' + +const app = createApp() +const head = createHead() +app.mixin(VueHeadMixin) +// ... +``` + +This key can either be a function or a plain object or reactive data. See [Reactivity](/setup/vue/how-it-works) for more details. + +```vue + + + +``` + +## Next Steps + +Your Vue app is now setup for head management, congrats! ๐ŸŽ‰ + +Try next: + +1. Optional: [Setup SSR](/setup/ssr/installation) +2. Explore the [Composables](/usage/composables/use-head) diff --git a/docs/scripts/0.vue/3.troubleshooting.md b/docs/scripts/0.vue/3.troubleshooting.md new file mode 100644 index 00000000..f6ff59de --- /dev/null +++ b/docs/scripts/0.vue/3.troubleshooting.md @@ -0,0 +1,28 @@ +--- +title: Troubleshooting +description: Learn how Unhead works under the hood. +--- + +Unhead manages the ``{lang="html"} of your site with support for SSR (Server-Side Rendering) and CSR (Client-Side Rendering). It's split into multiple packages to improve modularization and flexibility, allowing developers to choose and use only the components they actually need. + +The core package is framework-agnostic and should work in any setup. + +Framework packages are provided to improve the DX of using Unhead with the framework. + +Optional packages exist to add extra functionality and optimisations to Unhead. + +## Core Package + +- `unhead` - Core package which provides the API for manipulating the head. +- `@unhead/schema` - Provides the TypeScript types for Unhead. +- `@unhead/shared` - Provides shared utilities for Unhead. +- `@unhead/dom` - Manipulating the DOM and collecting the side effects. + +## Integration Packages + +- `@unhead/vue` - Vue 2/3 integration. + +## Optional Packages + +- `@unhead/ssr` - Outputting SSR compatible strings to be used in injecting into a template. +- `@unhead/addons` - Optional addons for Unhead. diff --git a/docs/scripts/1.guides/.navigation.yml b/docs/scripts/1.guides/.navigation.yml new file mode 100644 index 00000000..bb9742a7 --- /dev/null +++ b/docs/scripts/1.guides/.navigation.yml @@ -0,0 +1,2 @@ +title: Guides +icon: noto:open-book diff --git a/docs/scripts/1.guides/0.key-concepts.md b/docs/scripts/1.guides/0.key-concepts.md new file mode 100644 index 00000000..43fa3cc0 --- /dev/null +++ b/docs/scripts/1.guides/0.key-concepts.md @@ -0,0 +1,81 @@ +--- +title: Key Concepts +description: Learn about the key concepts of Nuxt Scripts. +--- + +The [useScript](/docs/api/use-script) composable is the core of Nuxt Scripts and is used to load all scripts. + +There are additional layers of abstraction built on top of `useScript` to make it easier to load scripts in different ways. + +1. [Registry Scripts](/docs/guides/registry-scripts) - Preconfigured third-party scripts that can be loaded through Nuxt Config, composables and components. +2. [Global Scripts](/docs/guides/global) - Load scripts through your Nuxt Config file. + +## Unhead Abstraction + +The Nuxt Scripts `useScript` composable is an abstraction of Unhead's [useScript](https://unhead.unjs.io/usage/composables/use-script), which in turn is +an abstraction on top of [useHead](https://unhead.unjs.io/usage/composables/use-head). Many of the features available to you +through `useHead` are also available in Nuxt Scripts `useScript`. + +## Script Singleton + +With Nuxt Scripts, it's not possible to load a script with the same `src` (or `key`) multiple times. This is because the script is loaded globally and is shared across all components. + +This means that a script will only go through the initialization process once, and any subsequent calls to `useScript` will return the same instance. + +For this reason, you may consider wrapping your `useScript` calls in their own composable to allow for easier instantiation of the script. + +```ts [useMyScript.ts] +export function useMyScript() { + return useScript({ + src: 'https://example.com/script.js', + }) +} +``` + +## Default Behavior + +Nuxt Scripts does not insert script tags within the SSR response. This is a performance decision to minimise the interruptions +to the hydration process. Instead, scripts are loaded by default when Nuxt is fully hydrated on the client side. + +You can change this behavior by modifying the [defaultScriptOptions](docs/api/nuxt-config#defaultscriptoptions). + +Nuxt Scripts will also insert several extra tags to the script element to help with performance and privacy. + +- `async` - Scripts are loaded asynchronously to prevent blocking the rendering of the page. +- `defer` - Scripts are deferred to ensure they are executed in the order they are loaded. +- `crossorigin="anonymous"` - Scripts are loaded with the `anonymous` attribute to prevent them from accessing cookies. +- `referrerpolicy="no-referrer"` - Scripts are loaded with the `no-referrer` policy to prevent them from sending the referrer header. + +## Understanding proxied functions + +You may wonder how the `useScript` composable can return SSR safe functions that can be called before the script is loaded. + +```ts +const { proxy } = useScript('/script.js') +// just works as you'd expect - magic? +proxy.gtag('event', 'page_view') +``` + +The `gtag` function call is a proxy that queues the function to be called when the script is loaded. If +the script never loads then the function is never called. + +This has several benefits: + +- SSR safe +- Won't break your site if the script never loads (blocked by adblockers) +- Allows you to load the script whenever you want without worrying about the order of the script and function calls + +But it also has some downsides: + +- It only works for functions where you don't need the return value. You can await the function call to get the return value, but this will block the rendering of the page. +- It can be confusing to debug if you're not aware of how it works. + +It's recommended to await the script load if you want to access the script's API directly. + +```ts +const { onLoaded } = useScript('/script.js') +// use the script instance directly, not proxied +onLoaded(({ gtag }) => { + gtag('event', 'page_view') +}) +``` diff --git a/docs/scripts/1.guides/1.script-triggers.md b/docs/scripts/1.guides/1.script-triggers.md new file mode 100644 index 00000000..96db8153 --- /dev/null +++ b/docs/scripts/1.guides/1.script-triggers.md @@ -0,0 +1,118 @@ +--- +title: Triggering Script Loading +--- + +Nuxt Scripts provides several ways to trigger the loading of scripts. + +::code-group + +```ts [useScript - Ref] +import { useTimeout } from '@vueuse/core' + +const { ready } = useTimeout(3000) +useScript({ + src: 'https://example.com/script.js', +}, { + // load however you like! + trigger: ready, // refs supported +}) +``` + +```ts [useScript - Computed] +const route = useRoute() +useScript({ + src: 'https://example.com/script.js', +}, { + // only if route has a specific query + trigger: computed(() => !!route.query.affiliateId), +}) +``` + +```ts [Registry Script] +import { useTimeout } from '@vueuse/core' + +const { ready } = useTimeout(3000) +useScriptMetaPixel({ + id: '1234567890', + scriptOptions: { + trigger: ready + } +}) +``` + +```ts [Global Script] +export default defineNuxtConfig({ + scripts: { + globals: { + myScript: ['https://example.com/script.js', { + // load however you like! + trigger: 'onNuxtReady' + }] + } + } +}) +``` + +:: + +## Default Behavior + +By default, scripts are loaded when Nuxt is fully hydrated. You can change this default by modifying the [defaultScriptOptions](/docs/api/nuxt-config#defaultscriptoptions). + +## Element Event Triggers + +The [useScriptTriggerElement](/docs/api/use-script-trigger-element) composable allows you to hook into element events as a way to load script. This is useful for loading scripts when a user interacts with a specific element. + +```ts +const somethingEl = ref() +const { trigger } = useScript({ + src: 'https://example.com/script.js', +}, { + trigger: useScriptTriggerElement({ + trigger: 'hover', + somethingEl, + }) +}) +``` + +It has support for the following triggers: + +- `visible` - Triggered when the element becomes visible in the viewport. +- `mouseover` - Triggered when the element is hovered over. + +## Manual Trigger + +The `manual` trigger allows you to manually trigger the loading of a script. This gives you complete +control over when the script is loaded. + +```ts +const { load } = useScript('https://example.com/script.js', { + trigger: 'manual' +}) +// ... +load() +``` + +## Promise + +You can use a promise to trigger the loading of a script. This is useful for any other custom trigger you might want to use. + +```ts +const myScript = useScript('/script.js', { + // load after 3 seconds + trigger: new Promise(resolve => setTimeout(resolve, 3000)) +}) +``` + +## Ref + +You can use a ref to trigger the loading of a script. This is useful for any other custom trigger you might want to use. + +```ts +const myRef = ref(false) +const myScript = useScript('/script.js', { + trigger: myRef +}) +// ... +myRef.value = true +``` diff --git a/docs/scripts/1.guides/1.warmup.md b/docs/scripts/1.guides/1.warmup.md new file mode 100644 index 00000000..3b2e125e --- /dev/null +++ b/docs/scripts/1.guides/1.warmup.md @@ -0,0 +1,56 @@ +--- +title: Warmup Strategy +description: Customize the preload or preconnect strategy used for your scripts. +--- + +## Background + +Nuxt Scripts will insert relevant warmup `link` tags to optimize the loading of your scripts. Optimizing +for the quickest load after Nuxt has finished hydrating. + +For example if we have a script like so: + +```ts +useScript('/script.js') +``` + +This code will load in `/script.js` on the `onNuxtReady` event. As the network may be idle while your Nuxt App is hydrating, +Nuxt Scripts will use this time to warmup the script by inserting a `preload` tag in the `head` of the document. + +```html + +``` + +The behavior is only applied when we are using the `client` or `onNuxtReady` [Script Triggers](/docs/guides/scripts-triggers). +To customize the behavior further we can use the `warmupStrategy` option. + +## `warmupStrategy` + +The `warmupStrategy` option can be used to customize the `link` tag inserted for the script. The option can be a function +that returns an object with the following properties: + +* `false` - Disable warmup. +* `'preload'` - Preload the script, use when the script is loaded immediately. +* `'preconnect'` or `'dns-prefetch'` - Preconnect to the script origin, use when you know a script will be loaded within 10 seconds. Only works when loading a script from a different origin, will fallback to `false` if the origin is the same. + +All of these options can also be passed to a callback function, which can be useful when have a dynamic trigger for the script. + +## `warmup` + +The `warmup` function can be called explicitly to add either preconnect or preload link tags for a script. This will only work the first time the function is called. + +This can be useful when you know that the script is going to be loaded shortly. + +```ts +const script = useScript('/video.js', { + trigger: 'manual' +}) +// warmup the script when we think the user may need the script +onVisible(videoContainer, () => { + script.warmup('preload') +}) +// load it in +onClick(videoContainer, () => { + script.load() +}) +``` diff --git a/docs/scripts/1.guides/3.consent.md b/docs/scripts/1.guides/3.consent.md new file mode 100644 index 00000000..c247750e --- /dev/null +++ b/docs/scripts/1.guides/3.consent.md @@ -0,0 +1,80 @@ +--- +title: Consent Management +description: Learn how to get user consent before loading scripts. +--- + +## Background + +Many third-party scripts include tracking cookies that require user consent under privacy laws. Nuxt Scripts simplifies this process with the [useScriptTriggerConsent](/docs/api/use-script-trigger-consent) composable, allowing scripts to be loaded only after receiving user consent. + +## Usage + +The [useScriptTriggerConsent](/docs/api/use-script-trigger-consent) composable offers flexible interaction options suitable for various scenarios. + +See the [API](/docs/api/use-script-trigger-consent) docs for full details on the available options. + +### Accepting as a Function + +The easiest way to make use of `useScriptTriggerConsent` is by invoking the `accept` method when user consent is granted. + +For an example of how you might lay out your code to handle this, see the following: + +::code-group + +```ts [utils/cookie.ts] +export const agreedToCookiesScriptConsent = useScriptTriggerConsent() +``` + +```vue [app.vue] + +``` + +```vue [components/cookie-banner.vue] + + + +``` + +:: + +### Accepting as a resolvable boolean + +Alternatively, you can pass a reactive reference to the consent state to the `useScriptTriggerConsent` composable. This will automatically load the script when the consent state is `true`. + +```ts +const agreedToCookies = ref(false) +useScript('https://www.google-analytics.com/analytics.js', { + trigger: useScriptTriggerConsent({ + consent: agreedToCookies + }) +}) +``` + +### Delaying script load after consent + +There may be instances where you want to trigger the script load after a certain event, only if the user has consented. + +For this you can use the `postConsentTrigger`, which shares the same API as `trigger` from the `useScript` composable. + +```ts +const agreedToCookies = ref(false) +useScript('https://www.google-analytics.com/analytics.js', { + trigger: useScriptTriggerConsent({ + consent: agreedToCookies, + // load 3 seconds after consent is granted + postConsentTrigger: new Promise(resolve => setTimeout(resolve, 3000)) + }) +}) +``` diff --git a/docs/scripts/1.guides/3.page-events.md b/docs/scripts/1.guides/3.page-events.md new file mode 100644 index 00000000..c7dad1a9 --- /dev/null +++ b/docs/scripts/1.guides/3.page-events.md @@ -0,0 +1,33 @@ +--- +title: Script Event Page +description: Learn how to send page events to your analytics provider. +--- + +## Background + +When using tracking scripts, it's common to send an event when the page changes. Due to Nuxt's head implementation being +async, the page title is not always available on route change immediately. + +Nuxt Scripts provides the [useScriptEventPage](/docs/api/use-script-event-page) composable to solve this problem. + +See the [API](/docs/api/use-script-event-page) docs for full details on the available options. + +### Usage + +The composable works by providing a function that will be invoked whenever the page changes, providing the newly resolved +title and path. + +You can use this with any analytics provider where you're seeing the page title not being accurate on route change. + +```ts +const { proxy } = useScriptGoogleAnalytics() + +useScriptEventPage(({ title, path }) => { + // triggered on route change + proxy.gtag('event', 'page_view', { + page_title: title, + page_location: 'https://example.com', + page_path: path + }) +}) +``` diff --git a/docs/scripts/1.guides/4.global.md b/docs/scripts/1.guides/4.global.md new file mode 100644 index 00000000..0798cd39 --- /dev/null +++ b/docs/scripts/1.guides/4.global.md @@ -0,0 +1,127 @@ +--- +title: Global Scripts +description: Load global third-party scripts and optimize them for your Nuxt app. +--- + +## Background + +While the `app.head` method in Nuxt Config allows for loading global scripts, it can be cumbersome and requires manual optimization. + +```ts +export default defineNuxtConfig({ + head: { + script: [ { src: 'https://analytics.com/tracker.js', async: true } ] + } +}) +``` + +A simpler method is now available: directly input the script URL into `scripts.globals`. You can also include optional settings to tailor the script loading process with specific optimizations in mind. + +You may consider using global scripts when: + +- The script isn't a supported [Registry Script](/docs/api/use-script#registry-script). +- You don't care about interacting with the API provided by the third-party script (e.g. you don't need to use `gtag` from Google Analytics). +- You are interacting with the API provided by the third-party script, but you don't care about type safety. + +Otherwise, it's recommended to use [useScript](/docs/api/use-script) to load scripts in a safer way. + +## Usage + +The `globals` key supports strings, objects and arrays. + +**Example: Load a script using just the src** + +```ts +export default defineNuxtConfig({ + scripts: { + globals: { + myScript: 'https://analytics.com/tracker.js', + } + } +}) +``` + +**Example: Load a script while providing extra script attributes** + +```ts +export default defineNuxtConfig({ + scripts: { + globals: { + myScript: { + src: 'https://example.com/script.js', + integrity: 'sha256-abc123', + } + } + } +}) +``` + +You can optionally provide the script as an array which allows you to provide [Script Options](/docs/api/use-script#NuxtUseScriptOptions). + +```ts +export default defineNuxtConfig({ + scripts: { + globals: { + myScript: [ + { src: 'https://example.com/script.js' }, + // load the script as part of the hydration process instead of on idle + { trigger: 'client' } + ] + } + } +}) +``` + +### Accessing a global script + +All Nuxt Scripts are registered on the `$scripts` Nuxt App property. + +For scripts registered through nuxt.config, type autocompletion is available. + +```vue + +``` + +## How it Works + +The `globals` configuration will be used to create a virtual Nuxt plugin that loads in the script using the `useScript` composable. + +As `useScript` is being used under the hood, it's important to understand the defaults and behavior of the [useScript](/api/use-script) composable.. + +::code-group + +```ts [nuxt.config.ts] +export default defineNuxtConfig({ + scripts: { + globals: { + tracker: 'https://analytics.com/tracker.js', + } + } +}) +``` + +```vue [components/Tracking.vue] + + + +``` + +:: diff --git a/docs/scripts/1.guides/failures.md b/docs/scripts/1.guides/failures.md new file mode 100644 index 00000000..2e347b65 --- /dev/null +++ b/docs/scripts/1.guides/failures.md @@ -0,0 +1,88 @@ +--- +title: "Handle Script Loading Failures" +description: "Gracefully handle third-party script errors and timeouts" +--- + +# Handle Script Loading Failures + +Scripts fail to load. Handle it gracefully. + +## Quick Error Handling + +```ts +const script = useScript('widget.js') + .catch(error => { + console.error('Widget failed to load:', error) + // Show fallback UI + }) +``` + +## Common Failures + +### Timeout + +```ts +function loadWithTimeout(src: string, timeout = 3000) { + return useScript(src, { + trigger: new Promise((resolve, reject) => { + const timer = setTimeout(() => { + reject(new Error('Script load timeout')) + }, timeout) + + resolve() + clearTimeout(timer) + }) + }) +} +``` + +### Network Error + +```ts +const analytics = useScript('analytics.js') + .catch(error => { + if (error.name === 'NetworkError') { + // Queue events for retry + return { + event: (name: string) => { + queueEvent(name) + } + } + } + throw error + }) +``` + +### Content Blockers + +```ts +const script = useScript('tracker.js') + .catch(error => { + if (error.name === 'SecurityError') { + // Ad blocker or privacy tool blocked script + disableTracking() + } + }) +``` + +## Check Script Status + +```ts +const script = useScript('widget.js') + +// Reactive in Vue, normal value in vanilla +console.log(script.status) +// 'awaitingLoad' | 'loading' | 'loaded' | 'error' +``` + +## External Resources + +- [Script Error Logging](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror) +- [Content Blocking Detection](https://webkit.org/blog/8943/privacy-preserving-ad-click-attribution-for-the-web/) +- [Network Error Handling](https://developer.mozilla.org/en-US/docs/Web/API/NetworkError) + +## Next Steps + +- [Use Proxy API โ†’](/unhead/scripts/proxy-api) +- [Respect Privacy โ†’](/unhead/scripts/respecting-privacy) +- [Load Triggers โ†’](/unhead/scripts/load-triggers) diff --git a/docs/scripts/1.guides/migrating.md b/docs/scripts/1.guides/migrating.md new file mode 100644 index 00000000..216777bb --- /dev/null +++ b/docs/scripts/1.guides/migrating.md @@ -0,0 +1,106 @@ +--- +title: "Migration Guide" +description: "Move from other script loaders to Unhead Scripts" +--- + +Move from other script loaders to Unhead Scripts safely. + +## From Script Tags + +```html + + + + + +```ts +const analytics = useScript('analytics.js', { + beforeInit() { + window.analytics = window.analytics || [] + window.analytics.push(['init']) + } +}) +``` + +## From Vue-Meta + +```ts +// Before +metaInfo: { + script: [ + { src: 'widget.js', async: true }, + { innerHTML: 'widget.init()' } + ] +} + +// After +useScript('widget.js', { + beforeInit() { + widget.init() + } +}) +``` + +## From React Helmet + +```tsx +// Before + + + + +// After +useScript('chat.js', { + beforeInit() { + window.$crisp = [] + } +}) +``` + +## Common Issues + +### Script Order + +```ts +// Before: Scripts load in order + + +// After: Pass through beforeInit +useScript('app.js', { + beforeInit() { + window.CONFIG = { api: '/api' } + } +}) +``` + +## External Resources + +- [Script Loading Patterns](https://www.patterns.dev/vanilla/loading-javascript) +- [Vue Meta Migration](https://vue-meta.nuxtjs.org/migrating/from-v1) +- [React Helmet Alternative](https://github.com/nfl/react-helmet#migrate) + +## Next Steps + +- [Test Scripts โ†’](/unhead/scripts/testing-scripts) +- [Monitor Performance โ†’](/unhead/scripts/performance-monitoring) +- [Handle Errors โ†’](/unhead/scripts/load-failures) diff --git a/docs/scripts/1.guides/monitor-performance.md b/docs/scripts/1.guides/monitor-performance.md new file mode 100644 index 00000000..39d801b9 --- /dev/null +++ b/docs/scripts/1.guides/monitor-performance.md @@ -0,0 +1,86 @@ +--- +title: "Monitor Script Performance" +description: "Track and improve third-party script performance" +--- + +Measure the real impact of your third-party scripts. + +## Basic Monitoring + +```ts +const script = useScript('widget.js', { + beforeInit() { + performance.mark('widget-start') + }, + onLoaded() { + performance.mark('widget-end') + performance.measure('widget-load', 'widget-start', 'widget-end') + } +}) +``` + +## Real User Monitoring + +```ts +useScript('analytics.js', { + onLoaded() { + const entry = performance.getEntriesByName('script-load')[0] + + sendToAnalytics({ + name: 'script_load', + duration: entry.duration, + size: entry.transferSize, + cache: entry.transferSize === 0 + }) + } +}) +``` + +## Performance Budget + +```ts +const MAX_LOAD_TIME = 2000 // 2 seconds + +useScript('heavy.js', { + onLoaded() { + const timing = performance.now() + if (timing > MAX_LOAD_TIME) { + console.warn(`Script load exceeded budget: ${timing}ms`) + } + } +}) +``` + +## Tracking Script Impact + +Use the Performance API: + +```ts +// Before script load +const beforeFCP = performance.getEntriesByType('paint')[0]?.startTime + +useScript('widget.js', { + onLoaded() { + const afterFCP = performance.getEntriesByType('paint')[0]?.startTime + console.log(`FCP Impact: ${afterFCP - beforeFCP}ms`) + } +}) +``` + +## Common Problems + +- First Paint +300ms +- First Input Delay +200ms +- Time to Interactive +2s + +## External Resources + +- [Performance API Guide](https://web.dev/articles/custom-metrics) +- [RUM vs Synthetic Monitoring](https://web.dev/articles/vitals-measurement-getting-started) +- [Core Web Vitals](https://web.dev/articles/vitals) + +## Next Steps + +- [Test Scripts โ†’](/unhead/scripts/testing-scripts) +- [Handle Errors โ†’](/unhead/scripts/load-failures) +- [Load Triggers โ†’](/unhead/scripts/load-triggers) diff --git a/docs/scripts/1.guides/privacy.md b/docs/scripts/1.guides/privacy.md new file mode 100644 index 00000000..d4b55381 --- /dev/null +++ b/docs/scripts/1.guides/privacy.md @@ -0,0 +1,94 @@ +--- +title: "Respect User Privacy" +description: "Load third-party scripts without compromising user privacy" +--- + +Third-party scripts collect user data. Do it ethically. + +## Privacy Defaults + +```ts +useScript('tracker.js', { + // No referrer data sent + referrerpolicy: 'no-referrer', + + // No credentials sent + crossorigin: 'anonymous', + + // Load after consent + trigger: hasConsent +}) +``` + +## Common Scripts + +### Google Analytics + +```ts +useScript('gtag.js', { + beforeInit() { + window.dataLayer = window.dataLayer || [] + window.gtag = function() { dataLayer.push(arguments) } + gtag('consent', 'default', { + 'analytics_storage': 'denied', + 'ad_storage': 'denied' + }) + } +}) +``` + +### Marketing Tags + +```ts +useScript('tags.js', { + // Clear params from URL + src: cleanUrl('https://tags.example.com/tag.js'), + // Don't send document.referrer + referrerpolicy: 'no-referrer', + // Don't send cookies + crossorigin: 'anonymous', +}) +``` + +## Script Permissions + +Check what scripts can access: + +- `document.referrer`: Previous page URL +- `navigator.userAgent`: Browser info +- `window.localStorage`: Stored data +- `document.cookie`: Cookies +- `navigator.geolocation`: Location + +## Privacy Tools Impact + +Scripts often break with: + +- uBlock Origin +- Privacy Badger +- DuckDuckGo App +- Brave Browser + +Handle it gracefully: + +```ts +const script = useScript('tracker.js') + .catch(error => { + if (error.name === 'SecurityError') { + // Privacy tool blocked script + disableTracking() + } + }) +``` + +## External Resources + +- [Browser Fingerprinting](https://www.w3.org/2001/tag/doc/unsanctioned-tracking/) +- [GDPR Compliance](https://gdpr.eu/cookies/) +- [Privacy by Design](https://web.dev/articles/cookie-notice-best-practices) + +## Next Steps + +- [Load Triggers โ†’](/unhead/scripts/load-triggers) +- [Handle Errors โ†’](/unhead/scripts/load-failures) +- [Use Proxy API โ†’](/unhead/scripts/proxy-api) diff --git a/docs/scripts/1.guides/proxy.md b/docs/scripts/1.guides/proxy.md new file mode 100644 index 00000000..d3780c52 --- /dev/null +++ b/docs/scripts/1.guides/proxy.md @@ -0,0 +1,90 @@ +--- +title: "Script Proxy API" +description: "Use third-party script functions before they load" +--- + +Use script functions before they load. All calls queue until the script is ready. + +## Basic Usage + + ```ts +const analytics = useScript('analytics.js', { + use() { + return window.analytics + } +}) + +// Works before script loads +analytics.proxy.trackEvent('page_view') +``` + +## What to Proxy + +### Good Use Cases + + ```ts +// Fire and forget events +analytics.proxy.event('click') + +// State updates +chat.proxy.setUser(userId) + +// One-way commands +player.proxy.play() +``` + +### Bad Use Cases + + ```ts +// DON'T proxy getters +const id = script.proxy.userId // Always undefined + +// DON'T proxy return values +const data = script.proxy.getData() // Always void + +// DON'T proxy promises +await script.proxy.fetch() // Never resolves +``` + +## Real Examples + +### Google Analytics + + ```ts +const ga = useScript('gtag.js', { + use() { + return window.gtag + } +}) + +// Queues until script loads +ga.proxy.event('timing_complete', { + name: 'load', + value: performance.now() +}) +``` + +### Crisp Chat + + ```ts +const crisp = useScript('crisp.js', { + use() { + return window.$crisp + } +}) + +// Safe to call anytime +crisp.proxy.push(['do', 'chat:open']) +``` + +## External Resources + +- [JavaScript Proxy Objects](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy) +- [Command Pattern](https://www.patterns.dev/vanilla/command-pattern) +- [Queue Theory](https://web.dev/articles/network-connections) + +## Next Steps + +- [Respect Privacy โ†’](/unhead/scripts/respecting-privacy) +- [Load Triggers โ†’](/unhead/scripts/load-triggers) +- [Handle Errors โ†’](/unhead/scripts/load-failures) diff --git a/docs/scripts/1.guides/testing.md b/docs/scripts/1.guides/testing.md new file mode 100644 index 00000000..fa9914ee --- /dev/null +++ b/docs/scripts/1.guides/testing.md @@ -0,0 +1,86 @@ +--- +title: "Testing Third-Party Scripts" +description: "Test third-party scripts in CI and locally without slowing down development" +--- + +Third-party scripts break. Catch issues before production. + +## Mock Scripts + +```ts +// __mocks__/analytics.ts +export const mockAnalytics = { + event: vi.fn(), + pageview: vi.fn() +} + +// tests/analytics.test.ts +const analytics = useScript('analytics.js', { + use: () => mockAnalytics +}) + +test('tracks page view', () => { + analytics.proxy.pageview() + expect(mockAnalytics.pageview).toHaveBeenCalled() +}) +``` + +## Test Load Failures + +```ts +test('handles network error', async () => { + // Mock fetch to fail + global.fetch = vi.fn(() => + Promise.reject(new Error('Failed to load')) + ) + + const script = useScript('widget.js') + + expect(script.status).toBe('error') + expect(console.error).toHaveBeenCalled() +}) +``` + +## Local Development + +Use local versions in development: + +```ts +const isProd = process.env.NODE_ENV === 'production' + +useScript( + isProd + ? 'https://cdn.analytics.com/script.js' + : '/mocks/analytics.js' +) +``` + +## CI Pipeline + +```yaml +name: Test Scripts +on: [push] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Mock third-party domains + run: | + echo "127.0.0.1 cdn.analytics.com" >> /etc/hosts + - name: Run tests + run: pnpm test +``` + +## External Resources + +- [Vitest Mocking](https://vitest.dev/guide/mocking.html) +- [Testing Third Party Scripts](https://web.dev/articles/test-third-party) +- [CI Script Testing](https://playwright.dev/docs/ci) + +## Next Steps + +- [Monitor Performance โ†’](/unhead/scripts/performance-monitoring) +- [Handle Errors โ†’](/unhead/scripts/load-failures) +- [Privacy Settings โ†’](/unhead/scripts/respecting-privacy) diff --git a/docs/scripts/1.guides/typed-scripts.md b/docs/scripts/1.guides/typed-scripts.md new file mode 100644 index 00000000..f1b4268d --- /dev/null +++ b/docs/scripts/1.guides/typed-scripts.md @@ -0,0 +1,143 @@ +--- +title: "Type-Safe Third Party Scripts" +description: "Add TypeScript support to any external JavaScript - from analytics to widgets" +--- + +Most third-party scripts have bad or no types. Here's how to fix that. + +## Basic Types + +```ts +const fathom = useScript<{ trackPageview: () => void }>('https://cdn.usefathom.com/script.js', { + use() { + return window.fathom + } +}) + +// Full autocomplete + type checking +fathom.proxy.trackPageview() +``` + +## Window Types + +Better approach - augment the Window interface: + +```ts +declare global { + interface Window { + gtag: ( + command: 'event', + action: string, + params: { [key: string]: any } + ) => void + } +} + +const analytics = useScript('https://www.googletagmanager.com/gtag/js', { + use() { + return { gtag: window.gtag } + } +}) +``` + +## Common Mistakes + +1. Don't type everything: + +```ts +// Bad - way too much typing +interface ComplexScript { + internal: { ... } // 100s of internal types +} + +// Good - type only what you use +interface ComplexScript { + track: (event: string) => void +} +``` + +2. Don't type dynamic values: + +```ts +// Bad - these change often +interface BadAnalytics { + version: string + buildId: string +} + +// Good - only type stable APIs +interface GoodAnalytics { + track: (event: string) => void +} +``` + +## Real Examples + +### Google Analytics + +```ts +interface GA { + gtag: ( + command: 'event' | 'config', + target: string, + params?: { + page_title?: string + page_path?: string + [key: string]: any + } + ) => void +} + +export function useGoogleAnalytics(id: string) { + return useScript('https://www.googletagmanager.com/gtag/js', { + beforeInit() { + window.dataLayer = window.dataLayer || [] + window.gtag = function gtag() { dataLayer.push(arguments) } + gtag('js', new Date()) + gtag('config', id) + }, + use() { + return { gtag: window.gtag } + } + }) +} +``` + +### Crisp Chat + +```ts +interface Crisp { + push: (args: string[]) => void + is: (state: string) => boolean +} + +declare global { + interface Window { + $crisp: Crisp + } +} + +export function useCrispChat(websiteId: string) { + return useScript('https://client.crisp.chat/l.js', { + beforeInit() { + window.$crisp = [] + window.CRISP_WEBSITE_ID = websiteId + }, + use() { + return window.$crisp + } + }) +} +``` + +## External Resources + +- [Understanding TypeScript's Global Types](https://www.typescriptlang.org/docs/handbook/declaration-files/by-example.html) +- [Google's Official gtag.js Types](https://developers.google.com/tag-platform/gtagjs/reference) +- [Creating .d.ts Files](https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html) + +## Next Steps + +- [Control Loading โ†’](/unhead/scripts/load-triggers) +- [Handle Errors โ†’](/unhead/scripts/load-failures) +- [Use the Proxy API โ†’](/unhead/scripts/proxy-api) diff --git a/docs/tailwind.config.ts b/docs/tailwind.config.ts deleted file mode 100644 index 32ae326a..00000000 --- a/docs/tailwind.config.ts +++ /dev/null @@ -1,184 +0,0 @@ -import type { Config } from 'tailwindcss' -import defaultTheme from 'tailwindcss/defaultTheme' - -export default > { - content: [ - 'content/**/*.md', - ], - theme: { - extend: { - fontFamily: { - // title family - title: ['Plus Jakarta Sans', ...defaultTheme.fontFamily.sans], - sans: ['Inter var', ...defaultTheme.fontFamily.sans], - }, - maxWidth: { - '8xl': '90rem', - }, - typography: () => { - return { - DEFAULT: { - css: { - 'h1, h2, h3, h4': { - 'fontWeight': '600', - 'scroll-margin-top': 'var(--scroll-mt)', - }, - 'h1 a, h2 a, h3 a, h4 a': { - borderBottom: 'none !important', - color: 'inherit', - fontWeight: 'inherit', - }, - 'a': { - textDecoration: 'none', - borderBottom: '1px solid transparent', - }, - 'a:hover': { - borderColor: 'var(--tw-prose-links)', - }, - 'a:has(> code)': { - borderColor: 'transparent !important', - }, - 'a code': { - color: 'var(--tw-prose-code)', - border: '1px dashed var(--tw-prose-pre-border)', - }, - 'a:hover code': { - color: 'var(--tw-prose-links)', - borderColor: 'var(--tw-prose-links)', - }, - 'pre': { - margin: '0', - borderRadius: '0.375rem', - border: '1px solid var(--tw-prose-pre-border)', - whiteSpace: 'pre-wrap', - wordBreak: 'break-word', - }, - 'code': { - backgroundColor: 'var(--tw-prose-pre-bg)', - padding: '0.25rem 0.375rem', - borderRadius: '0.375rem', - border: '1px solid var(--tw-prose-pre-border)', - }, - 'code::before': { - content: '', - }, - 'code::after': { - content: '', - }, - 'blockquote p:first-of-type::before': { - content: '', - }, - 'blockquote p:last-of-type::after': { - content: '', - }, - 'input[type="checkbox"]': { - 'color': 'rgb(var(--color-primary-500))', - 'borderColor': 'rgb(var(--color-gray-300))', - 'marginTop': '-3.5px !important', - 'marginBottom': '0 !important', - '&:focus': { - '--tw-ring-offset-width': 0, - }, - }, - 'input[type="checkbox"]:checked': { - borderColor: 'rgb(var(--color-primary-500))', - }, - 'input[type="checkbox"]:disabled': { - opacity: 0.5, - cursor: 'not-allowed', - }, - 'ul.contains-task-list': { - marginLeft: '-1.625em', - }, - 'ul ul': { - // paddingLeft: theme('padding.6'), - }, - 'ul ol': { - // paddingLeft: theme('padding.6'), - }, - 'ul > li.task-list-item': { - paddingLeft: '0 !important', - }, - 'ul > li.task-list-item input': { - marginRight: '7px', - }, - 'ul > li.task-list-item > ul.contains-task-list': { - marginLeft: 'initial', - }, - 'ul > li.task-list-item a': { - marginBottom: 0, - }, - 'ul > li.task-list-item::marker': { - content: 'none', - }, - 'ul > li > p': { - margin: 0, - }, - 'ul > li > span.issue-badge, p > span.issue-badge': { - verticalAlign: 'text-top', - margin: '0 !important', - }, - 'ul > li > button': { - verticalAlign: 'baseline !important', - }, - 'table': { - wordBreak: 'break-all', - }, - }, - }, - primary: { - css: { - '--tw-prose-body': 'rgb(var(--color-gray-700))', - '--tw-prose-headings': 'rgb(var(--color-gray-900))', - '--tw-prose-lead': 'rgb(var(--color-gray-600))', - '--tw-prose-links': 'rgb(var(--color-primary-500))', - '--tw-prose-bold': 'rgb(var(--color-gray-900))', - '--tw-prose-counters': 'rgb(var(--color-gray-500))', - '--tw-prose-bullets': 'rgb(var(--color-gray-300))', - '--tw-prose-hr': 'rgb(var(--color-gray-100))', - '--tw-prose-quotes': 'rgb(var(--color-gray-900))', - '--tw-prose-quote-borders': 'rgb(var(--color-gray-200))', - '--tw-prose-captions': 'rgb(var(--color-gray-500))', - '--tw-prose-code': 'rgb(var(--color-gray-900))', - '--tw-prose-pre-code': 'rgb(var(--color-gray-900))', - '--tw-prose-pre-bg': 'rgb(var(--color-gray-50))', - '--tw-prose-pre-border': 'rgb(var(--color-gray-200))', - '--tw-prose-th-borders': 'rgb(var(--color-gray-300))', - '--tw-prose-td-borders': 'rgb(var(--color-gray-200))', - '--tw-prose-invert-body': 'rgb(var(--color-gray-200))', - // '--tw-prose-invert-headings': theme('colors.white'), - '--tw-prose-invert-lead': 'rgb(var(--color-gray-400))', - '--tw-prose-invert-links': 'rgb(var(--color-primary-400))', - // '--tw-prose-invert-bold': theme('colors.white'), - '--tw-prose-invert-counters': 'rgb(var(--color-gray-400))', - '--tw-prose-invert-bullets': 'rgb(var(--color-gray-600))', - '--tw-prose-invert-hr': 'rgb(var(--color-gray-800))', - '--tw-prose-invert-quotes': 'rgb(var(--color-gray-100))', - '--tw-prose-invert-quote-borders': 'rgb(var(--color-gray-700))', - '--tw-prose-invert-captions': 'rgb(var(--color-gray-400))', - // '--tw-prose-invert-code': theme('colors.white'), - // '--tw-prose-invert-pre-code': theme('colors.white'), - '--tw-prose-invert-pre-bg': 'rgb(var(--color-gray-800))', - '--tw-prose-invert-pre-border': 'rgb(var(--color-gray-700))', - '--tw-prose-invert-th-borders': 'rgb(var(--color-gray-700))', - '--tw-prose-invert-td-borders': 'rgb(var(--color-gray-800))', - }, - }, - invert: { - css: { - '--tw-prose-pre-border': 'var(--tw-prose-invert-pre-border)', - 'input[type="checkbox"]': { - backgroundColor: 'rgb(var(--color-gray-800))', - borderColor: 'rgb(var(--color-gray-700))', - }, - 'input[type="checkbox"]:checked': { - backgroundColor: 'rgb(var(--color-primary-400))', - borderColor: 'rgb(var(--color-primary-400))', - }, - }, - }, - } - }, - }, - }, -} diff --git a/docs/tsconfig.json b/docs/tsconfig.json deleted file mode 100755 index 4b34df15..00000000 --- a/docs/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./.nuxt/tsconfig.json" -} diff --git a/docs/utils/data.ts b/docs/utils/data.ts deleted file mode 100644 index d3e867bf..00000000 --- a/docs/utils/data.ts +++ /dev/null @@ -1,92 +0,0 @@ -export const SiteConfigModule = { - tag: { - label: 'Released', - to: '/site-config/getting-started/installation', - }, - label: 'Site Config', - icon: 'carbon:settings-check', - description: 'Shared site configuration for Nuxt modules.', - to: '/site-config/getting-started/installation', - // repo: 'harlan-zw/nuxt-site-config', - routeRules: { - site: { name: 'Nuxt Site Config', description: 'Shared site configuration for Nuxt modules.' }, - ogImage: { icon: 'carbon:settings-check' }, - }, -} as const - -export function useModuleList() { - return [ - { - label: 'Robots', - icon: 'carbon:bot', - description: 'Tame the robots crawling and indexing your site with ease.', - tag: { - label: 'v3 Released', - to: '/robots/releases/v3', - }, - to: '/robots/getting-started/installation', - repo: 'harlan-zw/nuxt-simple-robots', - }, - { - label: 'Sitemap', - tag: { - label: 'v3 Released', - to: '/sitemap/releases/v3', - }, - to: '/sitemap/getting-started/installation', - icon: 'carbon:load-balancer-application', - description: 'Powerfully flexible XML Sitemaps that integrate seamlessly.', - repo: 'harlan-zw/nuxt-simple-sitemap', - }, - { - label: 'OG Image', - icon: 'carbon:image-search', - description: 'Dynamic and build-time OG Image generation with Satori and Browser Screenshot support.', - tag: { - label: 'v2 Released', - to: '/experiments/releases/v2', - }, - to: '/og-image/getting-started/installation', - repo: 'harlan-zw/nuxt-og-image', - }, - { - label: 'Link Checker', - tag: { - label: 'v2 Released', - to: '/link-checker/releases/v2', - }, - to: '/link-checker/getting-started/installation', - icon: 'carbon:cloud-satellite-link', - description: 'Find and magically fix links that may be negatively effecting your SEO.', - repo: 'harlan-zw/nuxt-link-checker', - }, - { - label: 'Experiments', - icon: 'carbon:chemistry', - tag: { - label: 'v3 Released', - to: '/experiments/releases/v3', - }, - description: 'Powerful SEO DX improvements that may or may not land in the Nuxt core.', - to: '/experiments/getting-started/installation', - repo: 'harlan-zw/nuxt-seo-experiments', - }, - { - label: 'Schema.org', - icon: 'carbon:chart-relationship', - // tag: { - // label: 'v3 Released', - // to: '/schema-org/releases/v3', - // }, - to: '/schema-org/getting-started/installation', - description: 'The quickest and easiest way to build Schema.org graphs.', - repo: 'harlan-zw/nuxt-schema-org', - }, - { - label: 'SEO UI', - icon: 'carbon:brush-freehand', - description: 'Fully styled and customizable components for improving your SEO.', - }, - SiteConfigModule, - ] -} diff --git a/examples/vite-ssr-vue/src/entry-client.js b/examples/vite-ssr-vue/src/entry-client.js index 842acce7..a32877a2 100644 --- a/examples/vite-ssr-vue/src/entry-client.js +++ b/examples/vite-ssr-vue/src/entry-client.js @@ -1,7 +1,12 @@ import { createApp } from './main' +import { VueHeadMixin, createHead } from "@unhead/vue/client"; const { app, router } = createApp() +const head = createHead() +app.use(head) +app.mixin(VueHeadMixin) + // wait until router is ready before mounting to ensure hydration match router.isReady().then(() => { app.mount('#app') diff --git a/examples/vite-ssr-vue/src/entry-server.js b/examples/vite-ssr-vue/src/entry-server.js index db0fb256..199a5906 100644 --- a/examples/vite-ssr-vue/src/entry-server.js +++ b/examples/vite-ssr-vue/src/entry-server.js @@ -1,10 +1,21 @@ import { basename } from 'node:path' import { renderToString } from 'vue/server-renderer' -import { renderSSRHead } from '@unhead/ssr' import { createApp } from './main' +import { createHead, VueHeadMixin, renderSSRHead } from "@unhead/vue/server" export async function render(url, manifest) { - const { app, router, head } = createApp() + const { app, router } = createApp() + const head = createHead() + app.use(head) + app.mixin(VueHeadMixin) + head.push({ + htmlAttrs: { + class: 'layout-default', + }, + bodyAttrs: { + style: 'overflow: hidden;', + }, + }) // set the router to the desired URL before rendering await router.push(url) diff --git a/examples/vite-ssr-vue/src/main.js b/examples/vite-ssr-vue/src/main.js index 59c3b9ed..40a68ee1 100644 --- a/examples/vite-ssr-vue/src/main.js +++ b/examples/vite-ssr-vue/src/main.js @@ -1,6 +1,5 @@ import { createPinia } from 'pinia' import { createSSRApp } from 'vue' -import { VueHeadMixin, createHead } from '@unhead/vue' import App from './App.vue' import { createRouter } from './router' @@ -13,17 +12,6 @@ export function createApp() { app.use(pinia) const router = createRouter() app.use(router) - const head = createHead() - app.use(head) - app.mixin(VueHeadMixin) - head.push({ - htmlAttrs: { - class: 'layout-default', - }, - bodyAttrs: { - style: 'overflow: hidden;', - }, - }) - return { app, router, head } + return { app, router } } diff --git a/packages/unhead/package.json b/packages/unhead/package.json index 7a30fdf5..b38d887e 100644 --- a/packages/unhead/package.json +++ b/packages/unhead/package.json @@ -81,6 +81,9 @@ "build": "unbuild .", "stub": "unbuild . --stub" }, + "devDependencies": { + "devalue": "^5.1.1" + }, "dependencies": { "@unhead/schema": "workspace:*", "@unhead/shared": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa2436e1..23a54b69 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,63 +58,6 @@ importers: specifier: ^3.5.13 version: 3.5.13(typescript@5.7.3) - docs: - devDependencies: - '@iconify-json/heroicons': - specifier: ^1.2.2 - version: 1.2.2 - '@iconify-json/lucide': - specifier: ^1.2.25 - version: 1.2.25 - '@iconify-json/noto': - specifier: ^1.2.2 - version: 1.2.2 - '@iconify-json/ph': - specifier: ^1.2.2 - version: 1.2.2 - '@iconify-json/simple-icons': - specifier: ^1.2.22 - version: 1.2.22 - '@nuxt/content': - specifier: ^3.0.1 - version: 3.0.1(@libsql/client@0.14.0)(magicast@0.3.5)(pg@8.13.1)(rollup@4.30.1) - '@nuxt/devtools': - specifier: ^1.7.0 - version: 1.7.0(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@nuxt/fonts': - specifier: 0.10.3 - version: 0.10.3(encoding@0.1.13)(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/image': - specifier: ^1.9.0 - version: 1.9.0(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.30.1) - '@nuxt/scripts': - specifier: ^0.9.5 - version: 0.9.5(gzoawuwqlk67g3jnggeljffw5u) - '@nuxt/ui': - specifier: 2.21.0 - version: 2.21.0(change-case@5.4.4)(focus-trap@7.6.0)(magicast@0.3.5)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@nuxt/ui-pro': - specifier: 1.7.0 - version: 1.7.0(change-case@5.4.4)(focus-trap@7.6.0)(magicast@0.3.5)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@nuxtjs/seo': - specifier: 2.1.0 - version: 2.1.0(h3@1.14.0)(magicast@0.3.5)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@vueuse/nuxt': - specifier: ^12.5.0 - version: 12.5.0(magicast@0.3.5)(nuxt@3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0))(rollup@4.30.1)(typescript@5.7.3) - nuxt: - specifier: 3.15.3 - version: 3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0) - nuxt-icon: - specifier: 0.6.10 - version: 0.6.10(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - nuxt-lego: - specifier: ^0.0.14 - version: 0.0.14(magicast@0.3.5)(nuxt@3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0))(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)) - vue: - specifier: 3.5.13 - version: 3.5.13(typescript@5.7.3) - examples/angular: dependencies: '@angular/animations': @@ -450,6 +393,10 @@ importers: hookable: specifier: ^5.5.3 version: 5.5.3 + devDependencies: + devalue: + specifier: ^5.1.1 + version: 5.1.1 packages/vue: dependencies: @@ -727,9 +674,6 @@ packages: svelte-eslint-parser: optional: true - '@antfu/install-pkg@0.4.1': - resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} - '@antfu/install-pkg@1.0.0': resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==} @@ -891,47 +835,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/plugin-proposal-decorators@7.24.7': - resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-decorators@7.24.7': - resolution: {integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.26.0': resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.25.6': - resolution: {integrity: sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.26.0': resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.24.7': resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} @@ -1305,22 +1226,12 @@ packages: resolution: {integrity: sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==} engines: {node: '>=6.9.0'} - '@capsizecss/metrics@2.2.0': - resolution: {integrity: sha512-DkFIser1KbGxWyG2hhQQeCit72TnOQDx5pr9bkA7+XlIy7qv+4lYtslH3bidVxm2qkY2guAgypSIPYuQQuk70A==} - - '@capsizecss/unpack@2.3.0': - resolution: {integrity: sha512-qkf9IoFIVTOkkpr8oZtCNSmubyWFCuPU4EOWO6J/rFPP5Ks2b1k1EHDSQRLwfokh6nCd7mJgBT2lhcuDCE6w4w==} - '@clack/core@0.4.1': resolution: {integrity: sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==} '@clack/prompts@0.9.1': resolution: {integrity: sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg==} - '@cloudflare/kv-asset-handler@0.3.4': - resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} - engines: {node: '>=16.13'} - '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1353,18 +1264,6 @@ packages: resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} engines: {node: '>=18'} - '@csstools/selector-resolve-nested@3.0.0': - resolution: {integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==} - engines: {node: '>=18'} - peerDependencies: - postcss-selector-parser: ^7.0.0 - - '@csstools/selector-specificity@5.0.0': - resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} - engines: {node: '>=18'} - peerDependencies: - postcss-selector-parser: ^7.0.0 - '@discoveryjs/json-ext@0.6.3': resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} @@ -1383,12 +1282,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.24.0': - resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.24.2': resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} @@ -1401,12 +1294,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.24.0': - resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.24.2': resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} @@ -1419,12 +1306,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.24.0': - resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.24.2': resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} @@ -1437,12 +1318,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.24.0': - resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.24.2': resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} @@ -1455,12 +1330,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.24.0': - resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.24.2': resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} @@ -1473,12 +1342,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.24.0': - resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.24.2': resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} @@ -1491,12 +1354,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.24.0': - resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.24.2': resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} @@ -1509,12 +1366,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.24.0': - resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.24.2': resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} @@ -1527,12 +1378,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.24.0': - resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.24.2': resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} @@ -1545,12 +1390,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.24.0': - resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.24.2': resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} @@ -1563,12 +1402,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.24.0': - resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.24.2': resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} @@ -1581,12 +1414,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.24.0': - resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.24.2': resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} @@ -1599,12 +1426,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.24.0': - resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.24.2': resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} @@ -1617,12 +1438,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.24.0': - resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.24.2': resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} @@ -1635,12 +1450,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.24.0': - resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.24.2': resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} @@ -1653,12 +1462,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.24.0': - resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.24.2': resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} @@ -1671,12 +1474,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.24.0': - resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.24.2': resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} @@ -1695,12 +1492,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.24.0': - resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.24.2': resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} @@ -1713,12 +1504,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.24.0': - resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.24.2': resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} engines: {node: '>=18'} @@ -1731,12 +1516,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.24.0': - resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.24.2': resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} @@ -1749,12 +1528,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.24.0': - resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.24.2': resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} @@ -1767,12 +1540,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.24.0': - resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.24.2': resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} @@ -1785,12 +1552,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.24.0': - resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.24.2': resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} @@ -1803,12 +1564,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.24.0': - resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.24.2': resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} @@ -1868,22 +1623,6 @@ packages: resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@fastify/accept-negotiator@1.1.0': - resolution: {integrity: sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==} - engines: {node: '>=14'} - - '@headlessui/tailwindcss@0.2.1': - resolution: {integrity: sha512-2+5+NZ+RzMyrVeCZOxdbvkUSssSxGvcUxphkIfSVLpRiKsj+/63T2TOL9dBYMXVfj/CGr6hMxSRInzXv6YY7sA==} - engines: {node: '>=10'} - peerDependencies: - tailwindcss: ^3.0 - - '@headlessui/vue@1.7.23': - resolution: {integrity: sha512-JzdCNqurrtuu0YW6QaDtR2PIYCKPUWq28csDyMvN4zmGccmE7lz40Is6hc3LA4HFeCI7sekZ/PQMTNmn9I/4Wg==} - engines: {node: '>=10'} - peerDependencies: - vue: ^3.2.0 - '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -1904,61 +1643,6 @@ packages: resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} engines: {node: '>=18.18'} - '@iconify-json/carbon@1.2.1': - resolution: {integrity: sha512-dIMY6OOY9LnwR3kOqAtfz4phGFG+KNfESEwSL6muCprBelSlSPpRXtdqvEEO/qWhkf5AJ9hWrOV3Egi5Z2IuKA==} - - '@iconify-json/heroicons@1.2.2': - resolution: {integrity: sha512-qoW4pXr5kTTL6juEjgTs83OJIwpePu7q1tdtKVEdj+i0zyyVHgg/dd9grsXJQnpTpBt6/VwNjrXBvFjRsKPENg==} - - '@iconify-json/logos@1.2.0': - resolution: {integrity: sha512-VkU9QSqeZR2guWbecdqkcoZEAJfgJJTUm6QAsypuZQ7Cve6zy39wOXDjp2H31I8QyQy4O3Cz96+pNji6UQFg4w==} - - '@iconify-json/lucide@1.2.25': - resolution: {integrity: sha512-OsHihLfqdjxwoLWDEnGesrYbCG6VCCoLvmb1U6UJhggsppW+D3DUY/LhhcppZM4Yw3AM4USDIn/gkzqjdRYgEw==} - - '@iconify-json/noto@1.2.2': - resolution: {integrity: sha512-nVyjbd3CJ1AhSXdvzlPyku1hZ4cQPzXEgZh65rDUdZi2sEgvHJHdiDcr//6ynoCbFnWb8o1ck6x/s/HND4mWFA==} - - '@iconify-json/ph@1.2.2': - resolution: {integrity: sha512-PgkEZNtqa8hBGjHXQa4pMwZa93hmfu8FUSjs/nv4oUU6yLsgv+gh9nu28Kqi8Fz9CCVu4hj1MZs9/60J57IzFw==} - - '@iconify-json/ri@1.2.0': - resolution: {integrity: sha512-br8It3uRHylNhEH72aU9VF6gIdL4BAi6JMdcxsCaVbAyWBJ0jd4RxfmsYnil6TmEfP5wxihiCKbtbQmIHZdqKg==} - - '@iconify-json/simple-icons@1.2.22': - resolution: {integrity: sha512-0UzThRMwHuOJfgpp+tyV/y2uEBLjFVrxC4igv9iWjSEQEBK4tNjWZNTRCBCYyv/FwWVYyKAsA8tZQ8vUYzvFnw==} - - '@iconify-json/tabler@1.2.4': - resolution: {integrity: sha512-8sUrdJQpNaX3ZfJ5Po4hhA6n+JougMZeRg3AFvh5OuAvhZ8hEAOzPHuY8OB96x6cZCqY/j5idsbZWqKDinxRbQ==} - - '@iconify-json/vscode-icons@1.2.10': - resolution: {integrity: sha512-qjp/j2RcHEZkesuAT6RP8BfcuHa+oERr7K1twfsulrIHrKZlpxxBeEyFm+3evZSAOgD+sjgU5CuTYS3RfCL+Pg==} - - '@iconify/collections@1.0.492': - resolution: {integrity: sha512-feMan3gInpf7kXbYtQjErLx36UIpHyJyanhbEeNLsAl+za8STeyJsqCMpz9lDC6C3fL26wWsyJDXPYW1kUDV7A==} - - '@iconify/collections@1.0.508': - resolution: {integrity: sha512-YaLPexnXGVLxUgDO9qcJKx7FxZhrBLEe2USu+Ibvcm5nsei2cXIUgJy+OA7ec998tpgD37eQz98nqPuS4N7Y4Q==} - - '@iconify/types@2.0.0': - resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - - '@iconify/utils@2.1.33': - resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} - - '@iconify/utils@2.2.1': - resolution: {integrity: sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==} - - '@iconify/vue@4.1.2': - resolution: {integrity: sha512-CQnYqLiQD5LOAaXhBrmj1mdL2/NCJvwcC4jtW2Z8ukhThiFkLDkutarTOV2trfc9EXqUqRs0KqXOL9pZ/IyysA==} - peerDependencies: - vue: '>=3' - - '@iconify/vue@4.3.0': - resolution: {integrity: sha512-Xq0h6zMrHBbrW8jXJ9fISi+x8oDQllg5hTDkDuxnWiskJ63rpJu9CvJshj8VniHVTbsxCg9fVoPAaNp3RQI5OQ==} - peerDependencies: - vue: '>=3' - '@inquirer/checkbox@4.0.7': resolution: {integrity: sha512-lyoF4uYdBBTnqeB1gjPdYkiQ++fz/iYKaP9DON1ZGlldkvAEJsjaOBRdbl5UW1pOSslBRd701jxhAG0MlhHd2w==} engines: {node: '>=18'} @@ -2049,9 +1733,6 @@ packages: peerDependencies: '@types/node': '>=18' - '@ioredis/commands@1.2.0': - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2103,70 +1784,9 @@ packages: peerDependencies: tslib: '2' - '@koa/router@12.0.2': - resolution: {integrity: sha512-sYcHglGKTxGF+hQ6x67xDfkE9o+NhVlRHBqq6gLywaMc6CojK/5vFZByphdonKinYlMLkEkacm+HEse9HzwgTA==} - engines: {node: '>= 12'} - - '@kwsites/file-exists@1.1.1': - resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} - - '@kwsites/promise-deferred@1.1.1': - resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} - '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@libsql/client@0.14.0': - resolution: {integrity: sha512-/9HEKfn6fwXB5aTEEoMeFh4CtG0ZzbncBb1e++OCdVpgKZ/xyMsIVYXm0w7Pv4RUel803vE6LwniB3PqD72R0Q==} - - '@libsql/core@0.14.0': - resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - - '@libsql/darwin-arm64@0.4.7': - resolution: {integrity: sha512-yOL742IfWUlUevnI5PdnIT4fryY3LYTdLm56bnY0wXBw7dhFcnjuA7jrH3oSVz2mjZTHujxoITgAE7V6Z+eAbg==} - cpu: [arm64] - os: [darwin] - - '@libsql/darwin-x64@0.4.7': - resolution: {integrity: sha512-ezc7V75+eoyyH07BO9tIyJdqXXcRfZMbKcLCeF8+qWK5nP8wWuMcfOVywecsXGRbT99zc5eNra4NEx6z5PkSsA==} - cpu: [x64] - os: [darwin] - - '@libsql/hrana-client@0.7.0': - resolution: {integrity: sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==} - - '@libsql/isomorphic-fetch@0.3.1': - resolution: {integrity: sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==} - engines: {node: '>=18.0.0'} - - '@libsql/isomorphic-ws@0.1.5': - resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} - - '@libsql/linux-arm64-gnu@0.4.7': - resolution: {integrity: sha512-WlX2VYB5diM4kFfNaYcyhw5y+UJAI3xcMkEUJZPtRDEIu85SsSFrQ+gvoKfcVh76B//ztSeEX2wl9yrjF7BBCA==} - cpu: [arm64] - os: [linux] - - '@libsql/linux-arm64-musl@0.4.7': - resolution: {integrity: sha512-6kK9xAArVRlTCpWeqnNMCoXW1pe7WITI378n4NpvU5EJ0Ok3aNTIC2nRPRjhro90QcnmLL1jPcrVwO4WD1U0xw==} - cpu: [arm64] - os: [linux] - - '@libsql/linux-x64-gnu@0.4.7': - resolution: {integrity: sha512-CMnNRCmlWQqqzlTw6NeaZXzLWI8bydaXDke63JTUCvu8R+fj/ENsLrVBtPDlxQ0wGsYdXGlrUCH8Qi9gJep0yQ==} - cpu: [x64] - os: [linux] - - '@libsql/linux-x64-musl@0.4.7': - resolution: {integrity: sha512-nI6tpS1t6WzGAt1Kx1n1HsvtBbZ+jHn0m7ogNNT6pQHZQj7AFFTIMeDQw/i/Nt5H38np1GVRNsFe99eSIMs9XA==} - cpu: [x64] - os: [linux] - - '@libsql/win32-x64-msvc@0.4.7': - resolution: {integrity: sha512-7pJzOWzPm6oJUxml+PCDRzYQ4A1hTMHAciTAHfFK4fkbDZX33nWPVG7Y3vqdKtslcwAzwmrNDc6sXy2nwWnbiw==} - cpu: [x64] - os: [win32] - '@listr2/prompt-adapter-inquirer@2.0.18': resolution: {integrity: sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==} engines: {node: '>=18.0.0'} @@ -2203,10 +1823,6 @@ packages: cpu: [x64] os: [win32] - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} - hasBin: true - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} cpu: [arm64] @@ -2337,21 +1953,6 @@ packages: resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} engines: {node: '>= 10'} - '@neon-rs/load@0.0.4': - resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} - - '@netlify/functions@2.8.2': - resolution: {integrity: sha512-DeoAQh8LuNPvBE4qsKlezjKj0PyXDryOFJfJKo3Z1qZLKzQ21sT314KQKPVjfvw6knqijj+IO+0kHXy/TJiqNA==} - engines: {node: '>=14.0.0'} - - '@netlify/node-cookies@0.1.0': - resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} - engines: {node: ^14.16.0 || >=16.0.0} - - '@netlify/serverless-functions-api@1.26.1': - resolution: {integrity: sha512-q3L9i3HoNfz0SGpTIS4zTcKBbRkxzCRpd169eyiTuk3IwcPC3/85mzLHranlKo2b+HYT0gu37YxGB45aD8A3Tw==} - engines: {node: '>=18.0.0'} - '@ngtools/webpack@19.1.5': resolution: {integrity: sha512-oIpE5Ci/Gl2iZqa0Hs6IOxaXEDHkF/zisHcflzYGkMnYcSFj+wRgYEuBFaHLCwuxQf9OdGu31i05w849i6tY1Q==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -2409,152 +2010,14 @@ packages: resolution: {integrity: sha512-cJXiUlycdizQwvqE1iaAb4VRUM3RX09/8q46zjvy+ct9GhfZRWd7jXYVc1tn/CfRlGPVkX/u4sstRlepsm7hfw==} engines: {node: ^18.17.0 || >=20.5.0} - '@nuxt/cli@3.20.0': - resolution: {integrity: sha512-TmQPjIHXJFPTssPMMFuLF48nr9cm6ctaNwrnhDFl4xLunfLR4rrMJNJAQhepWyukg970ZgokZVbUYMqf6eCnTQ==} - engines: {node: ^16.10.0 || >=18.0.0} - hasBin: true - - '@nuxt/content@3.0.1': - resolution: {integrity: sha512-Tvu9LOqc7HDTSeoGmt2TdnQpyfhXoGLlrXPgmJJj6XQOBVKrDizK1fh9NwN73debQdNqiAr8FOW5Hl22sJPd2w==} - peerDependencies: - '@libsql/client': '*' - pg: '*' - - '@nuxt/devalue@2.0.2': - resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} - - '@nuxt/devtools-kit@1.5.1': - resolution: {integrity: sha512-s2dpN1vCOgua2pSYG7/xUMjf7CyLTBeEK2IRqeOeiNpiElft4ygDddlg6P3ot0Hpp+GvWTz0uPGot/vI73uk4w==} - peerDependencies: - vite: '*' - - '@nuxt/devtools-kit@1.6.3': - resolution: {integrity: sha512-rcWpsGUnaDyGtmA667A4FDrVWdjuAturHV+Lkt3Xmedu5G4wC4sOzoA0+/Yco3/kWZ6fLVUTKwI2mvfzaQIugA==} - peerDependencies: - vite: '*' - - '@nuxt/devtools-kit@1.7.0': - resolution: {integrity: sha512-+NgZ2uP5BuneqvQbe7EdOEaFEDy8762c99pLABtn7/Ur0ExEsQJMP7pYjjoTfKubhBqecr5Vo9yHkPBj1eHulQ==} - peerDependencies: - vite: '*' - - '@nuxt/devtools-kit@2.0.0-beta.3': - resolution: {integrity: sha512-VeMfxhwUk1InAca9C8HouIn0+4ON11B0MxL/Mv7m/FcgdyADH5nTp6P3+GoCe8TsHgyKSJ688ZVFFxXKDDDGcg==} - peerDependencies: - vite: '>=6.0' - - '@nuxt/devtools-ui-kit@1.5.1': - resolution: {integrity: sha512-/1B2AYXuuPePWVuoHd/UGIKR3z3vO2bW73UAEszpHVLc/OwLA19K9f5o91sgyamAi2Qb5NymAMc/UZL0ijN8uA==} - peerDependencies: - '@nuxt/devtools': 1.5.1 - - '@nuxt/devtools-wizard@1.7.0': - resolution: {integrity: sha512-86Gd92uEw0Dh2ErIYT9TMIrMOISE96fCRN4rxeryTvyiowQOsyrbkCeMNYrEehoRL+lohoyK6iDmFajadPNwWQ==} - hasBin: true - - '@nuxt/devtools@1.7.0': - resolution: {integrity: sha512-uvnjt5Zowkz7tZmnks2cGreg1XZIiSyVzQ2MYiRXACodlXcwJ0dpUS3WTxu8BR562K+772oRdvKie9AQlyZUgg==} - hasBin: true - peerDependencies: - vite: '*' - - '@nuxt/fonts@0.10.3': - resolution: {integrity: sha512-wLCQ+olKZtClVmMEgjsNNDfcNCmyhIv8eujcWYYoFiv1Csy1ySqjI2+1Kq7wwaJhWl4sU83KQC2lLdiMuEeHCw==} - - '@nuxt/icon@1.10.3': - resolution: {integrity: sha512-ESIiSIpETLLcn5p4U8S0F3AQ5Mox0MoHAVKczamY4STh3Dwrc8labLhtN6lunwpQEv6UGuiutdvfkJ88zu44Ew==} - - '@nuxt/image@1.9.0': - resolution: {integrity: sha512-kuuePx/jtlmsuG/G8mTMELntw4p8MLD4tu9f4A064xor/ks29oEoBmFRzvfFwxqZ7cqfG2M4LZfTZFjQz5St+Q==} - engines: {node: '>=18.20.5'} - - '@nuxt/kit@3.13.2': - resolution: {integrity: sha512-KvRw21zU//wdz25IeE1E5m/aFSzhJloBRAQtv+evcFeZvuroIxpIQuUqhbzuwznaUwpiWbmwlcsp5uOWmi4vwA==} - engines: {node: ^14.18.0 || >=16.10.0} - - '@nuxt/kit@3.14.1592': - resolution: {integrity: sha512-r9r8bISBBisvfcNgNL3dSIQHSBe0v5YkX5zwNblIC2T0CIEgxEVoM5rq9O5wqgb5OEydsHTtT2hL57vdv6VT2w==} - engines: {node: ^14.18.0 || >=16.10.0} - - '@nuxt/kit@3.15.0': - resolution: {integrity: sha512-Q7k11wDTLIbBgoTfRYNrciK7PvjKklewrKd5PRMJCpn9Lmuqkq59HErNfJXFrBKHsE3Ld0DB6WUtpPGOvWJZoQ==} - engines: {node: '>=18.20.5'} - - '@nuxt/kit@3.15.1': - resolution: {integrity: sha512-7cVWjzfz3L6CsZrg6ppDZa7zGrZxCSfZjEQDIvVFn4mFKtJlK9k2izf5EewL6luzWwIQojkZAC3iq/1wtgI0Xw==} - engines: {node: '>=18.20.5'} - - '@nuxt/kit@3.15.2': - resolution: {integrity: sha512-nxiPJVz2fICcyBKlN5pL1IgZVejyArulREsS5HvAk07hijlYuZ5toRM8soLt51VQNpFd/PedL+Z1AlYu/bQCYQ==} - engines: {node: '>=18.0.0'} - '@nuxt/kit@3.15.3': resolution: {integrity: sha512-NRsJ5tE1SxWX+6VAA6QbD4lJlmTN9LuMsb/TioCeevDRBRNQamBmO2hpSIRahHBU9e6S3NxgZp6qymgj5isVdw==} engines: {node: '>=18.12.0'} - '@nuxt/schema@3.13.2': - resolution: {integrity: sha512-CCZgpm+MkqtOMDEgF9SWgGPBXlQ01hV/6+2reDEpJuqFPGzV8HYKPBcIFvn7/z5ahtgutHLzjP71Na+hYcqSpw==} - engines: {node: ^14.18.0 || >=16.10.0} - - '@nuxt/schema@3.14.1592': - resolution: {integrity: sha512-A1d/08ueX8stTXNkvGqnr1eEXZgvKn+vj6s7jXhZNWApUSqMgItU4VK28vrrdpKbjIPwq2SwhnGOHUYvN9HwCQ==} - engines: {node: ^14.18.0 || >=16.10.0} - - '@nuxt/schema@3.15.0': - resolution: {integrity: sha512-sAgLgSOj/SZxUmlJ/Q3TLRwIAqmiiZ5gCBrT+eq9CowIj7bgxX92pT720pDLEDs4wlXiTTsqC8nyqXQis8pPyA==} - engines: {node: ^14.18.0 || >=16.10.0} - - '@nuxt/schema@3.15.1': - resolution: {integrity: sha512-n5kOHt8uUyUM9z4Wu/8tIZkBYh3KTCGvyruG6oD9bfeT4OaS21+X3M7XsTXFMe+eYBZA70IFFlWn1JJZIPsKeA==} - engines: {node: ^14.18.0 || >=16.10.0} - - '@nuxt/schema@3.15.2': - resolution: {integrity: sha512-cTHGbLTbrQ83B+7Mh0ggc5MzIp74o8KciA0boCiBJyK5uImH9QQNK6VgfwRWcTD5sj3WNKiIB1luOMom3LHgVw==} - engines: {node: ^14.18.0 || >=16.10.0} - '@nuxt/schema@3.15.3': resolution: {integrity: sha512-Mr6XL8vEhVLuFUAO1ey/R947SMq5cxeQuJeIQFdxTi9Ju6HH8LlbFWZexOU4il+XGBjwhxTOf9jfrF8WvMZBzg==} engines: {node: ^14.18.0 || >=16.10.0} - '@nuxt/scripts@0.9.5': - resolution: {integrity: sha512-E71sk4HP7HjwAFPu2CnCdW8Aed0uBv8zkdADyIe0BRvLNBnfwXluEBRLwh/XFarlGSvD5557jWSQ/3+FGZvbSA==} - - '@nuxt/telemetry@2.6.4': - resolution: {integrity: sha512-2Lgdn07Suraly5dSfVQ4ttBQBMtmjvCTGKGUHpc1UyH87HT9xCm3KLFO0UcVQ8+LNYCgoOaK7lq9qDJOfBfZ5A==} - engines: {node: '>=18.20.5'} - hasBin: true - - '@nuxt/ui-pro@1.7.0': - resolution: {integrity: sha512-a7Vqi75wzxgyx5CI5vKyUEv3pewZUBWuO8Pw1J6U9teyeJ+apKHYfZvRWi0qvoUPSf19y1bin+puCD4vseeTlg==} - - '@nuxt/ui@2.21.0': - resolution: {integrity: sha512-kvQkB1/TyyUMvfQJTwQ2gubCyHCwyvwIQWWygEASXc8FfnzMtJZ+1ZYqNeWd9i7sr4+Lq2ye0+5t8M+raweYUw==} - - '@nuxt/vite-builder@3.15.3': - resolution: {integrity: sha512-0tX+jDqE3YY1UIHICmjwLrhZGvZ6cpqSbBRTGYp7MVbz/Oi+36d685PZx5ewKHIaRO1oBWIDs0zJieVNaP+djA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0.0} - peerDependencies: - vue: ^3.3.4 - - '@nuxtjs/color-mode@3.5.2': - resolution: {integrity: sha512-cC6RfgZh3guHBMLLjrBB2Uti5eUoGM9KyauOaYS9ETmxNWBMTvpgjvSiSJp1OFljIXPIqVTJ3xtJpSNZiO3ZaA==} - - '@nuxtjs/mdc@0.13.2': - resolution: {integrity: sha512-svDuGa8CihsroTib4GcmkpcYJfxu2vZc/ohSKf4r+qMP7h4OR56xhK6P8N8pCuTWxDgN4JxgiK98R82upnBihg==} - - '@nuxtjs/robots@5.2.2': - resolution: {integrity: sha512-8krXcdG/iysVhY1VNJFeLyCV20/Qvlq37TjRjgV91EKJnjcsjUWBlvyVYANOJsbKuoZK4WFoFUGt8Ehrbg91gg==} - - '@nuxtjs/seo@2.1.0': - resolution: {integrity: sha512-mIkRzoENKqfPI2HpUGlp6Rpsl+8nUWpf8MvEEofiJknfp+AZhDtLbJR4Fxl4jNoNLu+x7LU8mq5mJzF10okkOQ==} - - '@nuxtjs/sitemap@7.2.3': - resolution: {integrity: sha512-El7By5jORUCYd6aSK8wUvSNtt+vSd/nTnnPZa/vBs6B5GrNXvLVamDrC2AtbO5HrIvYLQIVuNTTfMuA0dV/UPA==} - engines: {node: '>=18.0.0'} - - '@nuxtjs/tailwindcss@6.13.1': - resolution: {integrity: sha512-atL2SaPsxLfMTlXUQvr1UpDYdz6ocNOhH35H+t7M++g4r79QiQScJ7XuyyMR9AyBN19lkPA3nw7NXxazXmYxlA==} - '@parcel/watcher-android-arm64@2.4.1': resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} engines: {node: '>= 10.0.0'} @@ -2609,12 +2072,6 @@ packages: cpu: [x64] os: [linux] - '@parcel/watcher-wasm@2.4.1': - resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} - engines: {node: '>= 10.0.0'} - bundledDependencies: - - napi-wasm - '@parcel/watcher-win32-arm64@2.4.1': resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} engines: {node: '>= 10.0.0'} @@ -2645,102 +2102,6 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@polka/url@1.0.0-next.28': - resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} - - '@popperjs/core@2.11.8': - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - - '@redocly/ajv@8.11.2': - resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} - - '@redocly/config@0.16.0': - resolution: {integrity: sha512-t9jnODbUcuANRSl/K4L9nb12V+U5acIHnVSl26NWrtSdDZVtoqUXk2yGFPZzohYf62cCfEQUT8ouJ3bhPfpnJg==} - - '@redocly/openapi-core@1.25.11': - resolution: {integrity: sha512-bH+a8izQz4fnKROKoX3bEU8sQ9rjvEIZOqU6qTmxlhOJ0NsKa5e+LmU18SV0oFeg5YhWQhhEDihXkvKJ1wMMNQ==} - engines: {node: '>=14.19.0', npm: '>=7.0.0'} - - '@resvg/resvg-js-android-arm-eabi@2.6.2': - resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==} - engines: {node: '>= 10'} - cpu: [arm] - os: [android] - - '@resvg/resvg-js-android-arm64@2.6.2': - resolution: {integrity: sha512-VcOKezEhm2VqzXpcIJoITuvUS/fcjIw5NA/w3tjzWyzmvoCdd+QXIqy3FBGulWdClvp4g+IfUemigrkLThSjAQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [android] - - '@resvg/resvg-js-darwin-arm64@2.6.2': - resolution: {integrity: sha512-nmok2LnAd6nLUKI16aEB9ydMC6Lidiiq2m1nEBDR1LaaP7FGs4AJ90qDraxX+CWlVuRlvNjyYJTNv8qFjtL9+A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@resvg/resvg-js-darwin-x64@2.6.2': - resolution: {integrity: sha512-GInyZLjgWDfsVT6+SHxQVRwNzV0AuA1uqGsOAW+0th56J7Nh6bHHKXHBWzUrihxMetcFDmQMAX1tZ1fZDYSRsw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2': - resolution: {integrity: sha512-YIV3u/R9zJbpqTTNwTZM5/ocWetDKGsro0SWp70eGEM9eV2MerWyBRZnQIgzU3YBnSBQ1RcxRZvY/UxwESfZIw==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@resvg/resvg-js-linux-arm64-gnu@2.6.2': - resolution: {integrity: sha512-zc2BlJSim7YR4FZDQ8OUoJg5holYzdiYMeobb9pJuGDidGL9KZUv7SbiD4E8oZogtYY42UZEap7dqkkYuA91pg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@resvg/resvg-js-linux-arm64-musl@2.6.2': - resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@resvg/resvg-js-linux-x64-gnu@2.6.2': - resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@resvg/resvg-js-linux-x64-musl@2.6.2': - resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@resvg/resvg-js-win32-arm64-msvc@2.6.2': - resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@resvg/resvg-js-win32-ia32-msvc@2.6.2': - resolution: {integrity: sha512-har4aPAlvjnLcil40AC77YDIk6loMawuJwFINEM7n0pZviwMkMvjb2W5ZirsNOZY4aDbo5tLx0wNMREp5Brk+w==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@resvg/resvg-js-win32-x64-msvc@2.6.2': - resolution: {integrity: sha512-ZXtYhtUr5SSaBrUDq7DiyjOFJqBVL/dOBN7N/qmi/pO0IgiWW/f/ue3nbvu9joWE5aAKDoIzy/CxsY0suwGosQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@resvg/resvg-js@2.6.2': - resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==} - engines: {node: '>= 10'} - - '@resvg/resvg-wasm@2.6.2': - resolution: {integrity: sha512-FqALmHI8D4o6lk/LRWDnhw95z5eO+eAa6ORjVg09YRR7BkcM6oPHU9uyC0gtQG5vpFLvgpeU4+zEAz2H8APHNw==} - engines: {node: '>= 10'} - '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} engines: {node: '>=14.0.0'} @@ -2759,15 +2120,6 @@ packages: rollup: optional: true - '@rollup/plugin-inject@5.0.5': - resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-json@6.1.0': resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} @@ -2777,15 +2129,6 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@15.3.0': - resolution: {integrity: sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/plugin-node-resolve@16.0.0': resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} engines: {node: '>=14.0.0'} @@ -2804,19 +2147,6 @@ packages: rollup: optional: true - '@rollup/plugin-terser@0.4.4': - resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - '@rollup/pluginutils@5.1.4': resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} @@ -2930,53 +2260,6 @@ packages: resolution: {integrity: sha512-Yks2QD87z2qJhVLi6O0tQDBG4pyX5n5c8BYEyZ+yiThjzIXBRkHjWS1jIFvd/y1+yU/NQFHYG/sy8sVOxfQ9IA==} engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - - '@shikijs/core@1.22.0': - resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} - - '@shikijs/core@1.29.1': - resolution: {integrity: sha512-Mo1gGGkuOYjDu5H8YwzmOuly9vNr8KDVkqj9xiKhhhFS8jisAtDSEWB9hzqRHLVQgFdA310e8XRJcW4tYhRB2A==} - - '@shikijs/engine-javascript@1.22.0': - resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} - - '@shikijs/engine-javascript@1.29.1': - resolution: {integrity: sha512-Hpi8k9x77rCQ7F/7zxIOUruNkNidMyBnP5qAGbLFqg4kRrg1HZhkB8btib5EXbQWTtLb5gBHOdBwshk20njD7Q==} - - '@shikijs/engine-oniguruma@1.22.0': - resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} - - '@shikijs/engine-oniguruma@1.29.1': - resolution: {integrity: sha512-gSt2WhLNgEeLstcweQOSp+C+MhOpTsgdNXRqr3zP6M+BUBZ8Md9OU2BYwUYsALBxHza7hwaIWtFHjQ/aOOychw==} - - '@shikijs/langs@1.29.1': - resolution: {integrity: sha512-iERn4HlyuT044/FgrvLOaZgKVKf3PozjKjyV/RZ5GnlyYEAZFcgwHGkYboeBv2IybQG1KVS/e7VGgiAU4JY2Gw==} - - '@shikijs/themes@1.29.1': - resolution: {integrity: sha512-lb11zf72Vc9uxkl+aec2oW1HVTHJ2LtgZgumb4Rr6By3y/96VmlU44bkxEb8WBWH3RUtbqAJEN0jljD9cF7H7g==} - - '@shikijs/transformers@1.29.1': - resolution: {integrity: sha512-jVzJhriZ0t9y8TvsV4AzBm74BCLUoK6Bf41aIjJkZc1hKeL0PQtsNL096b1AxgZRwJwTfQalWZ+jBkRAuqVMPw==} - - '@shikijs/types@1.22.0': - resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} - - '@shikijs/types@1.29.1': - resolution: {integrity: sha512-aBqAuhYRp5vSir3Pc9+QPu9WESBOjUo03ao0IHLC4TyTioSsp/SkbAZSrIH4ghYYC1T1KTEpRSBa83bas4RnPA==} - - '@shikijs/vscode-textmate@10.0.1': - resolution: {integrity: sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==} - - '@shikijs/vscode-textmate@9.3.1': - resolution: {integrity: sha512-79QfK1393x9Ho60QFyLti+QfdJzRQCVLFb97kOIV7Eo9vQU/roINgk7m24uv0a7AUvN//RDH36FLjjK48v0s9g==} - - '@shuding/opentype.js@1.4.0-beta.0': - resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==} - engines: {node: '>= 8.0.0'} - hasBin: true - '@sigstore/bundle@3.0.0': resolution: {integrity: sha512-XDUYX56iMPAn/cdgh/DTJxz5RWmqKV4pwvUAEKEWJl+HzKdCd/24wUa9JYNMlDSCb7SUHAdtksxYX779Nne/Zg==} engines: {node: ^18.17.0 || >=20.5.0} @@ -3001,66 +2284,19 @@ packages: resolution: {integrity: sha512-Ggtq2GsJuxFNUvQzLoXqRwS4ceRfLAJnrIHUDrzAD0GgnOhwujJkKkxM/s5Bako07c3WtAs/sZo5PJq7VHjeDg==} engines: {node: ^18.17.0 || >=20.5.0} - '@sindresorhus/is@4.6.0': - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} - '@sindresorhus/merge-streams@4.0.0': - resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} - engines: {node: '>=18'} - '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - '@sqlite.org/sqlite-wasm@3.48.0-build1': - resolution: {integrity: sha512-iRhDKMGVQ4P29W+fUnKV5TgX1fEsWyKzbiaHl/7b3EaCYFr7HUKO06eBz0fUYeFYBvyUiTd9SNDU7+mj2O0iWA==} - hasBin: true - - '@stripe/stripe-js@4.8.0': - resolution: {integrity: sha512-+4Cb0bVHlV4BJXxkJ3cCLSLuWxm3pXKtgcRacox146EuugjCzRRII5T5gUMgL4HpzrBLVwVxjKaZqntNWAXawQ==} - engines: {node: '>=12.16'} - '@stylistic/eslint-plugin@3.0.1': resolution: {integrity: sha512-rQ3tcT5N2cynofJfbjUsnL4seoewTaOVBLyUEwtNldo7iNMPo3h/GUQk+Cl3iHEWwRxjq2wuH6q0FufQrbVL1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} - - '@tailwindcss/aspect-ratio@0.4.2': - resolution: {integrity: sha512-8QPrypskfBa7QIMuKHg2TA7BqES6vhBrDLOv8Unb6FcFyd3TjKbc6lcmb9UPQHxfl24sXoJ41ux/H7qQQvfaSQ==} - peerDependencies: - tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' - - '@tailwindcss/container-queries@0.1.1': - resolution: {integrity: sha512-p18dswChx6WnTSaJCSGx6lTmrGzNNvm2FtXmiO6AuA1V4U5REyoqwmT6kgAsIMdjo07QdAfYXHJ4hnMtfHzWgA==} - peerDependencies: - tailwindcss: '>=3.2.0' - - '@tailwindcss/forms@0.5.10': - resolution: {integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==} - peerDependencies: - tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1' - - '@tailwindcss/typography@0.5.16': - resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} - peerDependencies: - tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - - '@tanstack/virtual-core@3.10.8': - resolution: {integrity: sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==} - - '@tanstack/vue-virtual@3.10.8': - resolution: {integrity: sha512-DB5QA8c/LfqOqIUCpSs3RdOTVroRRdqeHMqBkYrcashSZtOzIv8xbiqHgg7RYxDfkH5F3Y+e0MkuuyGNDVB0BQ==} - peerDependencies: - vue: ^2.7.0 || ^3.0.0 - '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -3133,12 +2369,6 @@ packages: '@types/fs-extra@11.0.4': resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - '@types/google.maps@3.58.1': - resolution: {integrity: sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==} - - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/http-errors@2.0.4': resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} @@ -3172,9 +2402,6 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/parse-path@7.0.3': - resolution: {integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==} - '@types/qs@6.9.18': resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} @@ -3202,24 +2429,15 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/vimeo__player@2.18.3': - resolution: {integrity: sha512-IzSzb6doT4I4uAnBHa+mBCiNtK7iAllEJjtpkX0sKY6/s1Vi+aX1134IAiPgiyFlMvFab/oZQpSeccK4r0/T2A==} - '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} '@types/ws@8.5.14': resolution: {integrity: sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw==} - '@types/youtube@0.1.0': - resolution: {integrity: sha512-Pg33m3X2mFgdmhtvzOlAfUfgOa3341N3/2JCrVY/mXVxb4hagcqqEG6w4vGCfB64StQNWHSj/T8Eotb1Rko/FQ==} - '@typescript-eslint/eslint-plugin@8.21.0': resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3267,118 +2485,6 @@ packages: resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - - '@unocss/astro@0.62.4': - resolution: {integrity: sha512-98KfkbrNhBLx2+uYxMiGsldIeIZ6/PbL4yaGRHeHoiHd7p4HmIyCF+auYe4Psntx3Yr8kU+XSIAhGDYebvTidQ==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - peerDependenciesMeta: - vite: - optional: true - - '@unocss/cli@0.62.4': - resolution: {integrity: sha512-p4VyS40mzn4LCOkIsbIRzN0Zi50rRepesREi2S1+R4Kpvd4QFeeuxTuZNHEyi2uCboQ9ZWl1gfStCXIrNECwTg==} - engines: {node: '>=14'} - hasBin: true - - '@unocss/config@0.62.4': - resolution: {integrity: sha512-XKudKxxW8P44JvlIdS6HBpfE3qZA9rhbemy6/sb8HyZjKYjgeM9jx5yjk+9+4hXNma/KlwDXwjAqY29z0S0SrA==} - engines: {node: '>=14'} - - '@unocss/core@0.62.4': - resolution: {integrity: sha512-Cc+Vo6XlaQpyVejkJrrzzWtiK9pgMWzVVBpm9VCVtwZPUjD4GSc+g7VQCPXSsr7m03tmSuRySJx72QcASmauNQ==} - - '@unocss/core@65.4.2': - resolution: {integrity: sha512-VmXy5D25por+pt9LBlKZ3gk4rOE5ldm80MyVOEnLcpaFb9LqB0g/8qUU9/Dk3TSA+ZPeoGm53Juo0p8LMFIigA==} - - '@unocss/extractor-arbitrary-variants@0.62.4': - resolution: {integrity: sha512-e4hJfBMyFr6T6dYSTTjNv9CQwaU1CVEKxDlYP0GpfSgxsV58pguID9j1mt0/XZD6LvEDzwxj9RTRWKpUSWqp+Q==} - - '@unocss/extractor-arbitrary-variants@65.4.2': - resolution: {integrity: sha512-qm5JXfjbxgXqhQAeOfV1jFT1ThBTi1bP1m+Nu2p6tB9EUbAUp+AKY4sODueqDXoriUtOc7h0QzyW3Lm+s3fTGw==} - - '@unocss/inspector@0.62.4': - resolution: {integrity: sha512-bRcnI99gZecNzrUr6kDMdwGHkhUuTPyvvadRdaOxHc9Ow3ANNyqymeFM1q5anZEUZt8h15TYN0mdyQyIWkU3zg==} - - '@unocss/nuxt@0.62.4': - resolution: {integrity: sha512-ZNfXu/f2kIRc8rnstToR/s2ubcvWDaCPmV5jXL+SQytSPb1ONCkK7ITNgB2TtrTEqQyhNX33VlnHNF8KsM8PNA==} - - '@unocss/postcss@0.62.4': - resolution: {integrity: sha512-kWdHy7UsSP4bDu8I7sCKeO0VuzvVpNHmn2rifK5gNstUx5dZ1H/SoyXTHx5sKtgfZBRzdNXFu2nZ3PzYGvEFbw==} - engines: {node: '>=14'} - peerDependencies: - postcss: ^8.4.21 - - '@unocss/preset-attributify@0.62.4': - resolution: {integrity: sha512-ei5nNT58GON9iyCGRRiIrphzyQbBIZ9iEqSBhIY0flcfi1uAPUXV32aO2slqJnWWAIwbRSb1GMpwYR8mmfuz8g==} - - '@unocss/preset-icons@0.62.4': - resolution: {integrity: sha512-n9m2nRTxyiw0sqOwSioO3rro0kaPW0JJzWlzcfdwQ+ZORNR5WyJL298fLXYUFbZG3EOF+zSPg6CMDWudKk/tlA==} - - '@unocss/preset-mini@0.62.4': - resolution: {integrity: sha512-1O+QpQFx7FT61aheAZEYemW5e4AGib8TFGm+rWLudKq2IBNnXHcS5xsq5QvqdC7rp9Dn3lnW5du6ijow5kCBuw==} - - '@unocss/preset-mini@65.4.2': - resolution: {integrity: sha512-4ZZK9KwDHjI8wFUKeB+30GHekPmy1OzXncjlXhqm+vNQ7FO3xCee7VY00E5bgz5Tt0pXALcKFlrEspjpSaeCoQ==} - - '@unocss/preset-tagify@0.62.4': - resolution: {integrity: sha512-8b2Kcsvt93xu1JqDqcD3QvvW0L5rqvH7ev3BlNEVx6n8ayBqfB5HEd4ILKr7wSC90re+EnCgnMm7EP2FiQAJkw==} - - '@unocss/preset-typography@0.62.4': - resolution: {integrity: sha512-ZVh+NbcibMmD6ve8Deub/G+XAFcGPuzE2Fx/tMAfWfYlfyOAtrMxuL+AARMthpRxdE0JOtggXNTrJb0ZhGYl9g==} - - '@unocss/preset-uno@0.62.4': - resolution: {integrity: sha512-2S6+molIz8dH/al0nfkU7i/pMS0oERPr4k9iW80Byt4cKDIhh/0jhZrC83kgZRtCf5hclSBO4oCoMTi1JF7SBw==} - - '@unocss/preset-web-fonts@0.62.4': - resolution: {integrity: sha512-kaxgYBVyMdBlErseN8kWLiaS2N5OMlwg5ktAxUlei275fMoY7inQjOwppnjDVveJbN9SP6TcqqFpBIPfUayPkQ==} - - '@unocss/preset-wind@0.62.4': - resolution: {integrity: sha512-YOzfQ11AmAnl1ZkcWLMMxCdezLjRKavLNk38LumUMtcdsa0DAy+1JjTp+KEvVQAnD+Et/ld5X+YcBWJkVy5WFQ==} - - '@unocss/preset-wind@65.4.2': - resolution: {integrity: sha512-TQm9P2UHpqfn92APfZJtbK2brkXQ+GInFL2evup/ZChU1fqdbH9mL0ef6ZNQbCH4gjY6mEzwPXt4lhGod6CajA==} - - '@unocss/reset@0.62.4': - resolution: {integrity: sha512-CtxjeDgN39fY/eZDLIXN4wy7C8W7+SD+41AlzGVU5JwhcXmnb1XoDpOd2lzMxc/Yy3F5dIJt2+MRDj9RnpX9Ew==} - - '@unocss/rule-utils@0.62.4': - resolution: {integrity: sha512-XUwLbLUzL+VSHCJNK5QBHC9RbFehumge1/XJmsRfmh0+oxgJoO1gvEvxi57gYEmdJdMRJHRJZ66se6+cB0Ymvw==} - engines: {node: '>=14'} - - '@unocss/rule-utils@65.4.2': - resolution: {integrity: sha512-OdMSJZiZUr8XmLo3Bz3Wrw1nZLT1nTPnPOV8gdi4vZ+2RgCChua9o8Dz4IyeQ7mMhLXoqHIUpJ7jE5Nv+Uz1Fw==} - engines: {node: '>=14'} - - '@unocss/transformer-attributify-jsx@0.62.4': - resolution: {integrity: sha512-z9DDqS2DibDR9gno55diKfAVegeJ9uoyQXQhH3R0KY4YMF49N1fWy/t74gOiHtlPmvjQtDRZYgjgaMCc2w8oWg==} - - '@unocss/transformer-compile-class@0.62.4': - resolution: {integrity: sha512-8yadY9T7LToJwSsrmYU3rUKlnDgPGVRvON7z9g1IjUCmFCGx7Gpg84x9KpKUG6eUTshPQFUI0YUHocrYFevAEA==} - - '@unocss/transformer-directives@0.62.4': - resolution: {integrity: sha512-bq9ZDG6/mr6X2mAogAo0PBVrLSLT0900MPqnj/ixadYHc7mRpX+y6bc/1AgWytZIFYSdNzf7XDoquZuwf42Ucg==} - - '@unocss/transformer-variant-group@0.62.4': - resolution: {integrity: sha512-W1fxMc2Lzxu4E+6JBQEBzK+AwoCQYI+EL2FT2BCUsAno37f3JdnwFFEVscck0epSdmdtidsSLDognyX8h10r8A==} - - '@unocss/vite@0.62.4': - resolution: {integrity: sha512-JKq3V6bcevYl9X5Jl3p9crArbhzI8JVWQkOxKV2nGLFaqvnc47vMSDxlU4MUdRWp3aQvzDw132tcx27oSbrojw==} - peerDependencies: - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - - '@unocss/webpack@0.62.4': - resolution: {integrity: sha512-hccXqpssqi1DyPJOwyIB3IhYe5SWND2JwTPxVTg8wO9fI1JvEK5DxK8FflJpXVps7QjotCmB/AXp0ezD0SutUg==} - peerDependencies: - webpack: ^4 || ^5 - - '@vercel/nft@0.27.6': - resolution: {integrity: sha512-mwuyUxskdcV8dd7N7JnxBgvFEz1D9UOePI/WyLLzktv6HSCwgPNQGit/UJ2IykAWGlypKw4pBQjOKWvIbXITSg==} - engines: {node: '>=16'} - hasBin: true - '@vitejs/plugin-basic-ssl@1.2.0': resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} engines: {node: '>=14.21.3'} @@ -3456,15 +2562,6 @@ packages: '@volar/typescript@2.4.11': resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} - '@vue-macros/common@1.16.1': - resolution: {integrity: sha512-Pn/AWMTjoMYuquepLZP813BIcq8DTZiNCoaceuNlvaYuOTd8DqBZWc5u0uOMQZMInwME1mdSmmBAcTluiV9Jtg==} - engines: {node: '>=16.14.0'} - peerDependencies: - vue: ^2.7.0 || ^3.2.25 - peerDependenciesMeta: - vue: - optional: true - '@vue/babel-helper-vue-transform-on@1.2.5': resolution: {integrity: sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==} @@ -3499,17 +2596,6 @@ packages: '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} - '@vue/devtools-core@7.6.8': - resolution: {integrity: sha512-8X4roysTwzQ94o7IobjVcOd1aZF5iunikrMrHPI2uUdigZCi2kFTQc7ffYiFiTNaLElCpjOhCnM7bo7aK1yU7A==} - peerDependencies: - vue: ^3.0.0 - - '@vue/devtools-kit@7.6.8': - resolution: {integrity: sha512-JhJ8M3sPU+v0P2iZBF2DkdmR9L0dnT5RXJabJqX6o8KtFs3tebdvfoXV2Dm3BFuqeECuMJIfF1aCzSt+WQ4wrw==} - - '@vue/devtools-shared@7.6.8': - resolution: {integrity: sha512-9MBPO5Z3X1nYGFqTJyohl6Gmf/J7UNN1oicHdyzBVZP4jnhZ4c20MgtaHDIzWmHDHCMYVS5bwKxT3jxh7gOOKA==} - '@vue/language-core@2.1.10': resolution: {integrity: sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==} peerDependencies: @@ -3518,14 +2604,6 @@ packages: typescript: optional: true - '@vue/language-core@2.2.0': - resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@vue/reactivity@3.5.13': resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} @@ -3543,148 +2621,12 @@ packages: '@vue/shared@3.5.13': resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} - '@vueuse/core@10.11.1': - resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==} - - '@vueuse/core@11.1.0': - resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==} - - '@vueuse/core@11.3.0': - resolution: {integrity: sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA==} - - '@vueuse/core@12.4.0': - resolution: {integrity: sha512-XnjQYcJwCsyXyIafyA6SvyN/OBtfPnjvJmbxNxQjCcyWD198urwm5TYvIUUyAxEAN0K7HJggOgT15cOlWFyLeA==} - '@vueuse/core@12.5.0': resolution: {integrity: sha512-GVyH1iYqNANwcahAx8JBm6awaNgvR/SwZ1fjr10b8l1HIgDp82ngNbfzJUgOgWEoxjL+URAggnlilAEXwCOZtg==} - '@vueuse/integrations@11.1.0': - resolution: {integrity: sha512-O2ZgrAGPy0qAjpoI2YR3egNgyEqwG85fxfwmA9BshRIGjV4G6yu6CfOPpMHAOoCD+UfsIl7Vb1bXJ6ifrHYDDA==} - peerDependencies: - async-validator: ^4 - axios: ^1 - change-case: ^5 - drauu: ^0.4 - focus-trap: ^7 - fuse.js: ^7 - idb-keyval: ^6 - jwt-decode: ^4 - nprogress: ^0.2 - qrcode: ^1.5 - sortablejs: ^1 - universal-cookie: ^7 - peerDependenciesMeta: - async-validator: - optional: true - axios: - optional: true - change-case: - optional: true - drauu: - optional: true - focus-trap: - optional: true - fuse.js: - optional: true - idb-keyval: - optional: true - jwt-decode: - optional: true - nprogress: - optional: true - qrcode: - optional: true - sortablejs: - optional: true - universal-cookie: - optional: true - - '@vueuse/integrations@12.4.0': - resolution: {integrity: sha512-EZm+TLoZMeEwDnccnEqB54CvvcVKbVnJubOF380HqdyZAxWfQ8egnFCESdlXWEIbxFgjfhcGfZUvQx5Nqw9Ofw==} - peerDependencies: - async-validator: ^4 - axios: ^1 - change-case: ^5 - drauu: ^0.4 - focus-trap: ^7 - fuse.js: ^7 - idb-keyval: ^6 - jwt-decode: ^4 - nprogress: ^0.2 - qrcode: ^1.5 - sortablejs: ^1 - universal-cookie: ^7 - peerDependenciesMeta: - async-validator: - optional: true - axios: - optional: true - change-case: - optional: true - drauu: - optional: true - focus-trap: - optional: true - fuse.js: - optional: true - idb-keyval: - optional: true - jwt-decode: - optional: true - nprogress: - optional: true - qrcode: - optional: true - sortablejs: - optional: true - universal-cookie: - optional: true - - '@vueuse/math@12.4.0': - resolution: {integrity: sha512-rVsmARhaFndB2ObpGyJgoeLRmNjko34t6QQ3x8DCmR4H9iAVIrSAyYtUf6anbLXo8KqMQ8obOagdYbcoWn9t1Q==} - - '@vueuse/metadata@10.11.1': - resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==} - - '@vueuse/metadata@11.1.0': - resolution: {integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==} - - '@vueuse/metadata@11.3.0': - resolution: {integrity: sha512-pwDnDspTqtTo2HwfLw4Rp6yywuuBdYnPYDq+mO38ZYKGebCUQC/nVj/PXSiK9HX5otxLz8Fn7ECPbjiRz2CC3g==} - - '@vueuse/metadata@12.4.0': - resolution: {integrity: sha512-AhPuHs/qtYrKHUlEoNO6zCXufu8OgbR8S/n2oMw1OQuBQJ3+HOLQ+EpvXs+feOlZMa0p8QVvDWNlmcJJY8rW2g==} - '@vueuse/metadata@12.5.0': resolution: {integrity: sha512-Ui7Lo2a7AxrMAXRF+fAp9QsXuwTeeZ8fIB9wsLHqzq9MQk+2gMYE2IGJW48VMJ8ecvCB3z3GsGLKLbSasQ5Qlg==} - '@vueuse/nuxt@10.11.1': - resolution: {integrity: sha512-UiaYSIwOkmUVn8Gl1AqtLWYR12flO+8sEu9X0Y1fNjSR7EWy9jMuiCvOGqwtoeTsqfHrivl0d5HfMzr11GFnMA==} - peerDependencies: - nuxt: ^3.0.0 - - '@vueuse/nuxt@11.3.0': - resolution: {integrity: sha512-FxtRTgFmsoASamR3lOftv/r11o1BojF9zir8obbTnKamVZdlQ5rgJ0hHgVbrgA6dlMuEx/PzwqAmiKNFdU4oCQ==} - peerDependencies: - nuxt: ^3.0.0 - - '@vueuse/nuxt@12.5.0': - resolution: {integrity: sha512-daqSOlXv5ilAiT5GlRBtfqdkYjeMO9P6n50OpbEVm9hXmfXmZoXK3YMND8l5n5KcscD4pnD66IrYPqqOW5eH1Q==} - peerDependencies: - nuxt: ^3.0.0 - - '@vueuse/shared@10.11.1': - resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==} - - '@vueuse/shared@11.1.0': - resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} - - '@vueuse/shared@11.3.0': - resolution: {integrity: sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA==} - - '@vueuse/shared@12.4.0': - resolution: {integrity: sha512-9yLgbHVIF12OSCojnjTIoZL1+UA10+O4E1aD6Hpfo/DKVm5o3SZIwz6CupqGy3+IcKI8d6Jnl26EQj/YucnW0Q==} - '@vueuse/shared@12.5.0': resolution: {integrity: sha512-vMpcL1lStUU6O+kdj6YdHDixh0odjPAUM15uJ9f7MY781jcYkIwFA4iv2EfoIPO6vBmvutI1HxxAwmf0cx5ISQ==} @@ -3742,26 +2684,14 @@ packages: '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - abbrev@3.0.0: resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==} engines: {node: ^18.17.0 || >=20.5.0} - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - acorn-import-attributes@1.9.5: - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} - peerDependencies: - acorn: ^8 - acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3785,10 +2715,6 @@ packages: resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} engines: {node: '>=8.9'} - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - agent-base@7.1.1: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} @@ -3832,9 +2758,6 @@ packages: alien-signals@0.2.0: resolution: {integrity: sha512-StlonZhBBrsPPwrDjiPAiVTf/rolxffLxVPT60Qv/t88BZ81BvUVzHgGqEFvJ1ii8HXtm1+zU2Icr59tfWEcag==} - alien-signals@0.4.14: - resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} - ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -3875,26 +2798,10 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - - archiver-utils@5.0.2: - resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} - engines: {node: '>= 14'} - - archiver@7.0.1: - resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} - engines: {node: '>= 14'} - are-docs-informative@0.0.2: resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} engines: {node: '>=14'} - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -3912,30 +2819,9 @@ packages: resolution: {integrity: sha512-gdvX700WVC6sHCJQ7bJGfDvtuKAh6Sa6weIZROxfzUZKP7BjvB8y0SMlM/o4omSQ3L60PQSJROBJsb0vEViVnA==} engines: {node: '>=16.14.0'} - ast-kit@1.4.0: - resolution: {integrity: sha512-BlGeOw73FDsX7z0eZE/wuuafxYoek2yzNJ6l6A1nsb4+z/p87TOPbHaWuN53kFKNuUXiCQa2M+xLF71IqQmRSw==} - engines: {node: '>=16.14.0'} - - ast-walker-scope@0.6.2: - resolution: {integrity: sha512-1UWOyC50xI3QZkRuDj6PqDtpm1oHWtYs+NQGwqL/2R11eN3Q81PHAHPM0SWW3BNQm53UDwS//Jv8L4CCVLM1bQ==} - engines: {node: '>=16.14.0'} - - async-sema@3.1.1: - resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - - async@2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} - - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} @@ -3943,9 +2829,6 @@ packages: peerDependencies: postcss: ^8.1.0 - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} - babel-loader@9.2.1: resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} engines: {node: '>= 14.15.0'} @@ -3968,33 +2851,11 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.5.0: - resolution: {integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==} - - bare-fs@2.3.5: - resolution: {integrity: sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==} - - bare-os@2.4.4: - resolution: {integrity: sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==} - - bare-path@2.1.3: - resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==} - - bare-stream@2.3.0: - resolution: {integrity: sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==} - - base64-js@0.0.8: - resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==} - engines: {node: '>= 0.4'} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} base64id@2.0.0: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} @@ -4007,9 +2868,6 @@ packages: resolution: {integrity: sha512-Ljqskqx/tbZagIglYoJIMzH5zgssyp+in9+9sAyh15N22AornBeIDnb8EZ6Rk+6ShfMxd92uO3gfpT0NtZbpow==} engines: {node: '>=14.0.0'} - better-sqlite3@11.8.1: - resolution: {integrity: sha512-9BxNaBkblMjhJW8sMRZxnxVTRgbRmssZW0Oxc1MPBTfiR+WW21e2Mk4qu8CzrcZb1LwPCnFsfDEzq+SNcBU8eg==} - big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -4017,18 +2875,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - birpc@0.2.19: - resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - blob-to-buffer@1.2.9: - resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==} - body-parser@1.20.3: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -4049,27 +2898,17 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - brotli@1.3.3: - resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} - browserslist@4.24.2: resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-crc32@1.0.0: - resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} - engines: {node: '>=8.0.0'} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -4083,24 +2922,10 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} - bundle-require@5.0.0: - resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.18' - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - c12@1.11.2: - resolution: {integrity: sha512-oBs8a4uvSDO9dm8b7OCFW7+dgtVrwmwnrVXYzLm43ta7ep2jCn/0MhoUFygIWtxhyy6+/MG7/agvpY0U1Iemew==} - peerDependencies: - magicast: ^0.3.4 - peerDependenciesMeta: - magicast: - optional: true - c12@2.0.1: resolution: {integrity: sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==} peerDependencies: @@ -4117,10 +2942,6 @@ packages: resolution: {integrity: sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==} engines: {node: ^18.17.0 || >=20.5.0} - cache-content-type@1.0.1: - resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} - engines: {node: '>= 6.0.0'} - call-bind-apply-helpers@1.0.1: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} @@ -4141,9 +2962,6 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - camelize@1.0.1: - resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} @@ -4161,33 +2979,9 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - change-case@5.4.4: - resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} - - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -4195,13 +2989,6 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - - cheerio@1.0.0: - resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} - engines: {node: '>=18.17'} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -4210,9 +2997,6 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} @@ -4221,11 +3005,6 @@ packages: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} - chrome-launcher@1.1.2: - resolution: {integrity: sha512-YclTJey34KUm5jB1aEJCq807bSievi7Nb/TU4Gu504fUYi3jw3KCIaH6L7nFWQhdEgH3V+wCh+kKD1P5cXnfxw==} - engines: {node: '>=12.13.0'} - hasBin: true - chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -4261,10 +3040,6 @@ packages: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} - clipboardy@4.0.0: - resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} - engines: {node: '>=18'} - cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -4280,18 +3055,6 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} - clone@2.1.2: - resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} - engines: {node: '>=0.8'} - - cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} - - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -4299,23 +3062,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -4323,9 +3072,6 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} @@ -4337,18 +3083,10 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} - commander@8.3.0: - resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} - engines: {node: '>= 12'} - comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} @@ -4359,13 +3097,6 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - compatx@0.1.8: - resolution: {integrity: sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw==} - - compress-commons@6.0.2: - resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} - engines: {node: '>= 14'} - compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -4377,9 +3108,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -4391,14 +3119,6 @@ packages: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - - consola@3.3.2: - resolution: {integrity: sha512-X3dcWPU+QeEaPrdtX3zBRQ0P0kIeEnmJV49uNtpy4N/TPnzA3grJvHftKjHuFIQNLrqBPzzykmc3fNrkQDl5yA==} - engines: {node: ^14.18.0 || >=16.10.0} - consola@3.3.3: resolution: {integrity: sha512-Qil5KwghMzlqd51UXM0b6fyaGHtOC22scxrwrz4A2882LyUMwQjnvaedN1HAeXzphspQ6CpHkzMAWxBTUruDLg==} engines: {node: ^14.18.0 || >=16.10.0} @@ -4407,9 +3127,6 @@ packages: resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} engines: {node: ^14.18.0 || >=16.10.0} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -4424,9 +3141,6 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -4442,17 +3156,9 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} - cookies@0.9.1: - resolution: {integrity: sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==} - engines: {node: '>= 0.8'} - copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} - copy-webpack-plugin@12.0.2: resolution: {integrity: sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==} engines: {node: '>= 18.12.0'} @@ -4478,64 +3184,16 @@ packages: typescript: optional: true - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - - crc32-stream@6.0.0: - resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} - engines: {node: '>= 14'} - - croner@9.0.0: - resolution: {integrity: sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA==} - engines: {node: '>=18.0'} - - cronstrue@2.52.0: - resolution: {integrity: sha512-NKgHbWkSZXJUcaBHSsyzC8eegD6bBd4O0oCI6XMIJ+y4Bq3v4w7sY3wfWoKPuVlq9pQHRB6od0lmKpIqi8TlKA==} - hasBin: true - - cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crossws@0.2.4: - resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true - - crossws@0.3.1: - resolution: {integrity: sha512-HsZgeVYaG+b5zA+9PbIPGq4+J/CJynJuearykPsXx4V/eMhyQ5EDVg3Ak2FBZtVXCiOLu/U7IiwDHTr9MA+IKw==} - - crossws@0.3.3: - resolution: {integrity: sha512-/71DJT3xJlqSnBr83uGJesmVHSzZEvgxHt/fIKxBAAngqMHmnBWQNxCphVxxJ2XL3xleu5+hJD6IQ3TglBedcw==} - - css-background-parser@0.1.0: - resolution: {integrity: sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==} - - css-box-shadow@1.0.0-3: - resolution: {integrity: sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==} - - css-color-keywords@1.0.0: - resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} - engines: {node: '>=4'} - css-declaration-sorter@7.2.0: resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss: ^8.0.9 - css-gradient-parser@0.0.16: - resolution: {integrity: sha512-3O5QdqgFRUbXvK1x5INf1YkBz1UKSWqrd63vWsum8MNHDBYD5urm3QtxZbKU259OrEXNM26lP/MPY3d1IGkBgA==} - engines: {node: '>=16'} - css-loader@7.1.2: resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} engines: {node: '>= 18.12.0'} @@ -4551,9 +3209,6 @@ packages: css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - css-to-react-native@3.2.0: - resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - css-tree@2.2.1: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -4562,10 +3217,6 @@ packages: resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -4575,9 +3226,6 @@ packages: engines: {node: '>=4'} hasBin: true - cssfilter@0.0.10: - resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} - cssnano-preset-default@7.0.6: resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} @@ -4610,10 +3258,6 @@ packages: custom-event@1.0.1: resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} - data-urls@5.0.0: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} @@ -4622,26 +3266,6 @@ packages: resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} engines: {node: '>=4.0'} - db0@0.2.1: - resolution: {integrity: sha512-BWSFmLaCkfyqbSEZBQINMVNjCVfrogi7GQ2RSy1tmtfK9OXlsup6lUMwLsqSD7FbAjD04eWFdXowSHHUp6SE/Q==} - peerDependencies: - '@electric-sql/pglite': '*' - '@libsql/client': '*' - better-sqlite3: '*' - drizzle-orm: '*' - mysql2: '*' - peerDependenciesMeta: - '@electric-sql/pglite': - optional: true - '@libsql/client': - optional: true - better-sqlite3: - optional: true - drizzle-orm: - optional: true - mysql2: - optional: true - de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -4685,21 +3309,10 @@ packages: decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} - deep-equal@1.0.1: - resolution: {integrity: sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -4722,10 +3335,6 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -4737,13 +3346,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - delegates@1.0.0: - resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - - denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} - depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -4767,18 +3369,11 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - detab@3.0.2: - resolution: {integrity: sha512-7Bp16Bk8sk0Y6gdXiCtnpGbghn8atnTJdd/82aWvS5ESnlcNvgUc10U2NYS0PAiDSGjWiI8qs/Cv1b2uSGdQ8w==} - detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} hasBin: true - detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} - detect-libc@2.0.3: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} @@ -4792,19 +3387,12 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - dfa@1.2.0: - resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} - di@0.0.1: resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} - diff@7.0.0: - resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} - engines: {node: '>=0.3.1'} - dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -4832,10 +3420,6 @@ packages: domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - dot-prop@9.0.0: - resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} - engines: {node: '>=18'} - dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} @@ -4844,9 +3428,6 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -4856,9 +3437,6 @@ packages: electron-to-chromium@1.5.72: resolution: {integrity: sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw==} - emoji-regex-xs@1.0.0: - resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} - emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -4868,16 +3446,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - emojilib@2.4.0: - resolution: {integrity: sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==} - emojis-list@3.0.0: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - emoticon@4.1.0: - resolution: {integrity: sha512-VWZfnxqwNcc51hIy/sbOdEem6D+cVtpPzEEtVAFdaas30+1dgkyaOQ4sQ6Bp0tOMqWO1v+HQfYaoodOkdhK6SQ==} - encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -4886,18 +3458,9 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - encoding-sniffer@0.2.0: - resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} - encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - - engine.io-client@6.6.1: - resolution: {integrity: sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==} - engine.io-parser@5.2.3: resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} @@ -4936,12 +3499,6 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - error-stack-parser-es@0.1.5: - resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==} - - errx@0.1.0: - resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==} - es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} @@ -4971,11 +3528,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.24.0: - resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.24.2: resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} engines: {node: '>=18'} @@ -5202,10 +3754,6 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -5216,22 +3764,10 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} - execa@9.5.2: - resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} - engines: {node: ^18.19.0 || >=20.5.0} - - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - expect-type@1.1.0: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} @@ -5250,15 +3786,9 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} - externality@1.0.2: - resolution: {integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -5273,9 +3803,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-npm-meta@0.2.2: - resolution: {integrity: sha512-E+fdxeaOQGo/CMWc9f4uHFfgUPJRAu7N3uB8GBvB3SDPAIWJK4GKyYhkAGFq+GYrcbKNfQIz5VVQyJnDuPPCrg==} - fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -5294,24 +3821,10 @@ packages: picomatch: optional: true - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - - fflate@0.7.4: - resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==} - - figures@6.1.0: - resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} - engines: {node: '>=18'} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -5356,17 +3869,9 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flat@6.0.1: - resolution: {integrity: sha512-/3FfIa8mbrg3xE7+wAhWeV+bd7L2Mof+xtZb5dRDKZ+wDvYJK4WDYeIOuOhre5Yv5aQObZrlbRmk3RTSiuQBtw==} - engines: {node: '>=18'} - hasBin: true - flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - focus-trap@7.6.0: - resolution: {integrity: sha512-1td0l3pMkWJLFipobUcGaf+5DTY4PLDDrcqoSaKP8ediO/CoWCCYk/fT/Y2A4e6TNB+Sh6clRJCjOPPnKoNHnQ==} - follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -5376,12 +3881,6 @@ packages: debug: optional: true - fontaine@0.5.0: - resolution: {integrity: sha512-vPDSWKhVAfTx4hRKT777+N6Szh2pAosAuzLpbppZ6O3UdD/1m6OlHjNcC3vIbgkRTIcLjzySLHXzPeLO2rE8cA==} - - fontkit@2.0.4: - resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} - foreground-child@3.3.0: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} @@ -5390,10 +3889,6 @@ packages: resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -5405,9 +3900,6 @@ packages: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@11.3.0: resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} @@ -5416,10 +3908,6 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} @@ -5439,15 +3927,6 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - fuse.js@7.0.0: - resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} - engines: {node: '>=10'} - - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -5468,25 +3947,14 @@ packages: resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} engines: {node: '>= 0.4'} - get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-stream@9.0.1: - resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} - engines: {node: '>=18'} - get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} @@ -5494,22 +3962,6 @@ packages: resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true - git-config-path@2.0.0: - resolution: {integrity: sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==} - engines: {node: '>=4'} - - git-up@8.0.0: - resolution: {integrity: sha512-uBI8Zdt1OZlrYfGcSVroLJKgyNNXlgusYFzHk614lTasz35yg2PVpL1RMy0LOO2dcvF9msYW3pRfUSmafZNrjg==} - - git-url-parse@16.0.0: - resolution: {integrity: sha512-Y8iAF0AmCaqXc6a5GYgPQW9ESbncNLOL+CeQAJRhmWUOmnPkKpBYeWYp4mFd3LA5j53CdGDdslzX12yEBVHQQg==} - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - - github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -5529,10 +3981,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - global-directory@4.0.1: - resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} - engines: {node: '>=18'} - globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -5566,31 +4014,6 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - gzip-size@6.0.0: - resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} - engines: {node: '>=10'} - - gzip-size@7.0.0: - resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - h3-compression@0.3.2: - resolution: {integrity: sha512-B+yCKyDRnO0BXSfjAP4tCXJgJwmnKp3GyH5Yh66mY9KuOCrrGQSPk/gBFG2TgH7OyB/6mvqNZ1X0XNVuy0qRsw==} - peerDependencies: - h3: ^1.6.0 - - h3@1.12.0: - resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} - - h3@1.13.0: - resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} - - h3@1.13.1: - resolution: {integrity: sha512-u/z6Z4YY+ANZ05cRRfsFJadTBrNA6e3jxdU+AN5UCbZSZEUwgHiwjvUEe0k1NoQmAvQmETwr+xB5jd7mhCJuIQ==} - - h3@1.14.0: - resolution: {integrity: sha512-ao22eiONdgelqcnknw0iD645qW0s9NnrJHr5OBz4WOMdBdycfSas1EQf1wXRsm+PcB2Yoj43pjBPwqIpJQTeWg==} - handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} @@ -5617,78 +4040,14 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - - hash-sum@2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hast-util-embedded@3.0.0: - resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} - - hast-util-format@1.1.0: - resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==} - - hast-util-from-parse5@8.0.1: - resolution: {integrity: sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==} - - hast-util-has-property@3.0.0: - resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} - - hast-util-heading-rank@3.0.0: - resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} - - hast-util-is-body-ok-link@3.0.1: - resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==} - - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - - hast-util-minify-whitespace@1.0.1: - resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==} - - hast-util-parse-selector@4.0.0: - resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} - - hast-util-phrasing@3.0.1: - resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} - - hast-util-raw@9.0.4: - resolution: {integrity: sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==} - - hast-util-to-html@9.0.4: - resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} - - hast-util-to-mdast@10.1.2: - resolution: {integrity: sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==} - - hast-util-to-parse5@8.0.0: - resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} - - hast-util-to-string@3.0.1: - resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} - - hast-util-to-text@4.0.2: - resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hastscript@8.0.0: - resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} - he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - hex-rgb@4.3.0: - resolution: {integrity: sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==} - engines: {node: '>=6'} - hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} @@ -5710,19 +4069,9 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - html-whitespace-sensitive-tag-names@3.0.1: - resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} - htmlparser2@9.1.0: resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} - http-assert@1.5.0: - resolution: {integrity: sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==} - engines: {node: '>= 0.8'} - http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -5733,10 +4082,6 @@ packages: resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} engines: {node: '>= 0.6'} - http-errors@1.8.1: - resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} - engines: {node: '>= 0.6'} - http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -5765,33 +4110,14 @@ packages: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} - http-shutdown@1.2.2: - resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} - httpxy@0.1.5: - resolution: {integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==} - - human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - human-signals@8.0.0: - resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} - engines: {node: '>=18.18.0'} - hyperdyperid@1.2.0: resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} engines: {node: '>=10.18'} @@ -5821,27 +4147,15 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@6.0.2: - resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==} - engines: {node: '>= 4'} - ignore@7.0.3: resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} engines: {node: '>= 4'} - image-meta@0.2.1: - resolution: {integrity: sha512-K6acvFaelNxx8wc2VjbIzXKDVB0Khs0QT35U6NkGfTdCmjLNcO2945m7RFNR9/RPVFm48hq7QPzK8uGH18HCGw==} - image-size@0.5.5: resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} hasBin: true - image-size@1.2.0: - resolution: {integrity: sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w==} - engines: {node: '>=16.x'} - hasBin: true - immutable@5.0.3: resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} @@ -5849,12 +4163,6 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - importx@0.4.4: - resolution: {integrity: sha512-Lo1pukzAREqrBnnHC+tj+lreMTAvyxtkKsMxLY8H15M/bvLl54p3YuoTI70Tz7Il0AsgSlD7Lrk/FaApRcBL7w==} - - impound@0.2.0: - resolution: {integrity: sha512-gXgeSyp9Hf7qG2/PLKmywHXyQf2xFrw+mJGpoj9DsAB9L7/MIKn+DeEx98UryWXdmbv8wUUPdcQof6qXnZoCGg==} - imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -5863,10 +4171,6 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - index-to-position@0.1.2: - resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} - engines: {node: '>=18'} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -5877,13 +4181,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - ini@4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ini@5.0.0: resolution: {integrity: sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==} engines: {node: ^18.17.0 || >=20.5.0} @@ -5891,10 +4188,6 @@ packages: injection-js@2.4.0: resolution: {integrity: sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==} - ioredis@5.4.1: - resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} - engines: {node: '>=12.22.0'} - ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -5907,29 +4200,9 @@ packages: resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} engines: {node: '>= 10'} - ipx@2.1.0: - resolution: {integrity: sha512-AVnPGXJ8L41vjd11Z4akIF2yd14636Klxul3tBySxHA6PKfCOQPxBDkCFK5zcWh0z/keR6toh1eg8qzdBVUgdA==} - hasBin: true - - iron-webcrypto@1.2.1: - resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - - is-absolute-url@4.0.1: - resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} @@ -5946,14 +4219,6 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5975,26 +4240,15 @@ packages: resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} engines: {node: '>=18'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true - is-installed-globally@1.0.0: - resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} - engines: {node: '>=18'} - is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} @@ -6010,18 +4264,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@4.0.0: - resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} - engines: {node: '>=12'} - is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} engines: {node: '>=10'} - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} @@ -6040,48 +4286,21 @@ packages: resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} - is-ssh@1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} - - is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - is-stream@4.0.1: - resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} - engines: {node: '>=18'} - is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} - is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} - is-what@4.1.16: - resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} - engines: {node: '>=12.13'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} - is64bit@2.0.0: - resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} - engines: {node: '>=18'} - isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} @@ -6119,31 +4338,13 @@ packages: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.0.0-beta.3: - resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} - hasBin: true - - jiti@2.4.1: - resolution: {integrity: sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==} - hasBin: true - jiti@2.4.2: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true - js-base64@3.7.7: - resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} - - js-levenshtein@1.1.6: - resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} - engines: {node: '>=0.10.0'} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} - js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} @@ -6225,10 +4426,6 @@ packages: engines: {node: '>= 10'} hasBin: true - keygrip@1.1.0: - resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} - engines: {node: '>= 0.6'} - keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -6244,41 +4441,12 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} - knitwork@1.1.0: - resolution: {integrity: sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw==} - knitwork@1.2.0: resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} - koa-compose@4.1.0: - resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} - - koa-convert@2.0.0: - resolution: {integrity: sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==} - engines: {node: '>= 10'} - - koa-send@5.0.1: - resolution: {integrity: sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==} - engines: {node: '>= 8'} - - koa-static@5.0.0: - resolution: {integrity: sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==} - engines: {node: '>= 7.6.0'} - - koa@2.15.3: - resolution: {integrity: sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==} - engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} - - kolorist@1.8.0: - resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} - launch-editor@2.9.1: resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} - lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} - less-loader@12.2.0: resolution: {integrity: sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==} engines: {node: '>= 18.12.0'} @@ -6306,11 +4474,6 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - libsql@0.4.7: - resolution: {integrity: sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==} - cpu: [x64, arm64, wasm32] - os: [darwin, linux, win32] - license-webpack-plugin@4.0.2: resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} peerDependencies: @@ -6319,27 +4482,13 @@ packages: webpack: optional: true - lighthouse-logger@2.0.1: - resolution: {integrity: sha512-ioBrW3s2i97noEmnXxmUq7cjIcVRjT5HBpAYy8zE11CxU9HqlWHHeRxfeN1tn8F7OEMVPIC9x1f8t3Z7US9ehQ==} - lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} - linebreak@1.1.0: - resolution: {integrity: sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listhen@1.8.0: - resolution: {integrity: sha512-Wj5hk++HPDqnG/0nc9++oXf8M3GlzObC6AJJJ9VYAVhVTdeW+t3HyeiKhK6Ro0GPhVd8lOYM75zsckrtzLB2Gw==} - hasBin: true - - listhen@1.9.0: - resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==} - hasBin: true - listr2@8.2.5: resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} engines: {node: '>=18.0.0'} @@ -6348,10 +4497,6 @@ packages: resolution: {integrity: sha512-LriG93la4PbmPMwI7Hbv8W+0ncLK7549w4sbZSi4QGDjnnxnmNMgxUkaQTEMzH8TpwsfFvgEjpLX7V8B/I9e3g==} hasBin: true - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -6384,25 +4529,9 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash.castarray@4.4.0: - resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} - lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.isarguments@3.1.0: - resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} @@ -6443,17 +4572,10 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - magic-regexp@0.8.0: - resolution: {integrity: sha512-lOSLWdE156csDYwCTIGiAymOLN7Epu/TU5e/oAnISZfU6qP+pgjkE+xbVjVn3yLPKN8n1G2yIAYTAM5KRk6/ow==} - magic-string-ast@0.6.3: resolution: {integrity: sha512-C9sgUzVZtUtzCBoMdYtwrIRQ4IucGRFGgdhkjL7PXsVfPYmTuWtewqzk7dlipaCMWH/gOYehW9rgMoa4Oebtpw==} engines: {node: '>=16.14.0'} - magic-string-ast@0.7.0: - resolution: {integrity: sha512-686fgAHaJY7wLTFEq7nnKqeQrhqmXB19d1HnqT35Ci7BN6hbAYLZUezTQ062uUHM7ggZEQlqJ94Ftls+KDXU8Q==} - engines: {node: '>=16.14.0'} - magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -6475,9 +4597,6 @@ packages: markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} - marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -6509,9 +4628,6 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -6524,9 +4640,6 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} - media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -6665,16 +4778,6 @@ packages: engines: {node: '>=4.0.0'} hasBin: true - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - - mime@4.0.4: - resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==} - engines: {node: '>=16'} - hasBin: true - mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -6687,10 +4790,6 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -6701,24 +4800,12 @@ packages: peerDependencies: webpack: ^5.0.0 - mini-svg-data-uri@1.4.4: - resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} - hasBin: true - minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -6766,12 +4853,6 @@ packages: resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} engines: {node: '>= 18'} - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -6807,10 +4888,6 @@ packages: mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} @@ -6851,17 +4928,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.0.9: - resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} - engines: {node: ^18 || >=20} - hasBin: true - - nanotar@0.2.0: - resolution: {integrity: sha512-9ca1h0Xjvo9bEkE4UOxgAzLV0jHKe6LMaxo37ND2DAhhAtd0j8pR1Wxz+/goMrZO8AEZTWCmyaOsFI/W5AdpCQ==} - - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -6902,50 +4968,15 @@ packages: tailwindcss: optional: true - nitropack@2.10.4: - resolution: {integrity: sha512-sJiG/MIQlZCVSw2cQrFG1H6mLeSqHlYfFerRjLKz69vUfdu0EL2l0WdOxlQbzJr3mMv/l4cOlCCLzVRzjzzF/g==} - engines: {node: ^16.11.0 || >=17.0.0} - hasBin: true - peerDependencies: - xml2js: ^0.6.2 - peerDependenciesMeta: - xml2js: - optional: true - - node-abi@3.68.0: - resolution: {integrity: sha512-7vbj10trelExNjFSBm5kTvZXXa7pZyKWx9RCKIyqe6I9Ev3IzGpQoqBP3a+cOdxY+pWj6VkP28n/2wWysBHD/A==} - engines: {node: '>=10'} - node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - - node-emoji@2.1.3: - resolution: {integrity: sha512-E2WEOVsgs7O16zsURJ/eH8BqhF029wGpEOnv7Urwdo2wmQanOACwJQh0devF9D9RhoZru0+9JXIS0dBXIAz+lA==} - engines: {node: '>=18'} - node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} @@ -6954,10 +4985,6 @@ packages: resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} hasBin: true - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} - hasBin: true - node-gyp@11.0.0: resolution: {integrity: sha512-zQS+9MTTeCMgY0F3cWPyJyRFAkVltQ1uXm+xXu/ES6KFgC6Czo1Seb9vQW2wNxSX2OrDTiqL0ojtkFxBQ0ypIw==} engines: {node: ^18.17.0 || >=20.5.0} @@ -6966,11 +4993,6 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} engines: {node: ^18.17.0 || >=20.5.0} @@ -7015,70 +5037,13 @@ packages: resolution: {integrity: sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==} engines: {node: ^18.17.0 || >=20.5.0} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npm-run-path@6.0.0: - resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} - engines: {node: '>=18'} - - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nuxt-component-meta@0.10.0: - resolution: {integrity: sha512-iq7hbSnfp4Ff/PTMYBF8pYabTQuF3u7HVN66Kb3hOnrnaPEdXEn/q6HkAn5V8UjOVSgXYpvycM0wSnwyADYNVA==} - hasBin: true - - nuxt-icon@0.4.2: - resolution: {integrity: sha512-yFpvDA+FuUz+ixtt1eRzctTfR4sl7egZoXu7LL+CUc42qFlzCMaTZJ9eqFR2FTW8zu9tfLIZ83RJmUa1jNEWgg==} - - nuxt-icon@0.6.10: - resolution: {integrity: sha512-S9zHVA66ox4ZSpMWvCjqKZC4ZogC0s2z3vZs+M4D95YXGPEXwxDZu+insMKvkbe8+k7gvEmtTk0eq3KusKlxiw==} - - nuxt-lego@0.0.14: - resolution: {integrity: sha512-78HdXDfXHkMRcTKq6IEIoXyajul/c88zCU3xcALShkb0cW4qMhir+He9eMi7l1uKSP1bwLZfmCVFiokyWeFZig==} - - nuxt-link-checker@4.1.0: - resolution: {integrity: sha512-z16I1tXTriyxjL1Hm1ydaXCrhodY0QhKfdZE52Q4icLxR/pcegJ4lxhrNUnTGTCtT8ITN9t2GnaKbL/VJ67nfw==} - - nuxt-og-image@4.1.2: - resolution: {integrity: sha512-TeBsI9Ic/ETD4fTpycKW9lYp5Q2hd5ozE5Bt22opTsIuqzSx20ZKzonj0yiHRgShMhGE+YMZhFzk7YvDaNNWGA==} - engines: {node: '>=18.0.0'} - - nuxt-schema-org@4.1.1: - resolution: {integrity: sha512-2/Nhoh07ZfnwiIDUt5qCGUraqnBf0Pa2UhO7Vf/3U48ayNuq+VepTyFar15EBWLp1hysAEiUSkGAJiJAgqwCxw==} - - nuxt-seo-utils@6.0.8: - resolution: {integrity: sha512-Gx2zqLpHBU5KZM8CZ91V/JxCHXR4sRlRwoPtRfWKqxPH+a35abe2l4YaIBz8YOwL23t9Yo3ww1+zUleLUExYMA==} - - nuxt-site-config-kit@3.0.6: - resolution: {integrity: sha512-QBOFzAIo+D02avFQQ7gNlRyA372/PQlgW2IjL2nttvjfHapqYbvP6tIP55soL+1+D8YvF/bGZgS+vJtfQhroUg==} - - nuxt-site-config@3.0.6: - resolution: {integrity: sha512-Mkyen81br21/nA2sxlLCOtJZ2L8sGL+YzxHlsVhLhEnC355CP2SwKVtYqJNJ4aYFbxeusqZXJFiD4KbveHhk0w==} - - nuxt@3.15.3: - resolution: {integrity: sha512-96D5vPMeqIxceIMvWms3a75Usi63zan/BGJvseXJqYGoi08fDBBql1lFWEa9rQb8QiRevfcmJQ9LiEj3jVjnkg==} - engines: {node: ^18.20.5 || ^20.9.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@parcel/watcher': ^2.1.0 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - peerDependenciesMeta: - '@parcel/watcher': - optional: true - '@types/node': - optional: true - nwsapi@2.2.16: resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} @@ -7087,16 +5052,6 @@ packages: engines: {node: ^14.16.0 || >=16.10.0} hasBin: true - nypm@0.4.1: - resolution: {integrity: sha512-1b9mihliBh8UCcKtcGRu//G50iHpjxIQVUqkdhPT/SDVE7KdJKoHXLS0heuYTQCx95dFqiyUbXZB9r8ikn+93g==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - - nypm@0.5.0: - resolution: {integrity: sha512-+2aEZ9h9Ocvsq1AR9hXsCsRW/7ZFVoPbk3GpYBCosKI1WuSyni58mi3v0WS7UczRA741gFjQ/9ivg4YRR3qv6w==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -7112,12 +5067,6 @@ packages: obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - ofetch@1.4.0: - resolution: {integrity: sha512-MuHgsEhU6zGeX+EMh+8mSMrYTnsqJQQrpM00Q6QHMKNqQ0bKy0B43tk8tL1wg+CnsSTy1kg4Ir2T5Ig6rD+dfQ==} - - ofetch@1.4.1: - resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - ohash@1.1.4: resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} @@ -7148,33 +5097,10 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - oniguruma-to-es@2.3.0: - resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==} - - oniguruma-to-js@0.4.3: - resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} - - only@0.0.2: - resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} - open@10.1.0: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} - open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} - - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - openapi-typescript@7.4.3: - resolution: {integrity: sha512-xTIjMIIOv9kNhsr8JxaC00ucbIY/6ZwuJPJBZMSh5FA2dicZN5uM805DWVJojXdom8YI4AQTavPDPHMx/3g0vQ==} - hasBin: true - peerDependencies: - typescript: ^5.x - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -7240,23 +5166,10 @@ packages: engines: {node: ^18.17.0 || >=20.5.0} hasBin: true - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse-css-color@0.2.1: - resolution: {integrity: sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==} - - parse-entities@4.0.1: - resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} - - parse-git-config@3.0.0: - resolution: {integrity: sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA==} - engines: {node: '>=8'} - parse-gitignore@2.0.0: resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} engines: {node: '>=14'} @@ -7269,34 +5182,13 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} - parse-json@8.1.0: - resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} - engines: {node: '>=18'} - - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} - parse-node-version@1.0.1: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} - parse-path@7.0.0: - resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} - - parse-url@9.2.0: - resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==} - engines: {node: '>=14.13.0'} - parse5-html-rewriting-stream@7.0.0: resolution: {integrity: sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==} - parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} - - parse5-parser-stream@7.1.2: - resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} - parse5-sax-parser@7.0.0: resolution: {integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==} @@ -7343,9 +5235,6 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - path-type@5.0.0: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} @@ -7353,9 +5242,6 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathe@2.0.0: - resolution: {integrity: sha512-G7n4uhtk9qJt2hlD+UFfsIGY854wpF+zs2bUbQ3CQEUTcn7v25LRsrmurOxTo4bJgjE4qkyshd9ldsEuY9M6xg==} - pathe@2.0.1: resolution: {integrity: sha512-6jpjMpOth5S9ITVu5clZ7NOgHNsv5vRQdheL9ztp2vZmM6fRbLvyua1tiBIL4lk8SAe3ARzeXEly6siXCjDHDw==} @@ -7369,40 +5255,6 @@ packages: perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - pg-cloudflare@1.1.1: - resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} - - pg-connection-string@2.7.0: - resolution: {integrity: sha512-PI2W9mv53rXJQEOb8xNR8lH7Hr+EKa6oJa38zsK0S/ky2er16ios1wLKhZyxzD7jUReiWokc9WK5nxSnC7W1TA==} - - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-pool@3.7.0: - resolution: {integrity: sha512-ZOBQForurqh4zZWjrgSwwAtzJ7QiRX0ovFkZr2klsen3Nm0aoh33Ls0fzfv3imeH/nw/O27cjdz5kzYJfeGp/g==} - peerDependencies: - pg: '>=8.0' - - pg-protocol@1.7.0: - resolution: {integrity: sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - - pg@8.13.1: - resolution: {integrity: sha512-OUir1A0rPNZlX//c7ksiu7crsGZTKSOXJPgtNiHGIlC9H0lO+NC6ZDYksSgBYY/thSWhnSRBv8w1lieNNGATNQ==} - engines: {node: '>= 8.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true - - pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -7446,9 +5298,6 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} - pkg-types@1.2.0: - resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} - pkg-types@1.2.1: resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} @@ -7458,19 +5307,10 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - playwright-core@1.49.1: - resolution: {integrity: sha512-BzmpVcs4kE2CH15rWfzpjzVGhWERJfmnXmniSyKeRZUs9Ws65m+RGIi7mjJK/euCegfn3i7jvqWeWyHe9y3Vgg==} - engines: {node: '>=18'} - hasBin: true - pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - portfinder@1.0.32: - resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} - engines: {node: '>= 0.12.0'} - postcss-calc@10.0.2: resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} engines: {node: ^18.12 || ^20.9 || >=22.0} @@ -7625,12 +5465,6 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-nesting@13.0.1: - resolution: {integrity: sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==} - engines: {node: '>=18'} - peerDependencies: - postcss: ^8.4 - postcss-normalize-charset@7.0.0: resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} @@ -7703,10 +5537,6 @@ packages: peerDependencies: postcss: ^8.4.31 - postcss-selector-parser@6.0.10: - resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} - engines: {node: '>=4'} - postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -7738,27 +5568,6 @@ packages: resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-bytea@1.0.0: - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} - engines: {node: '>=0.10.0'} - - postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - - postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - - prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} - engines: {node: '>=10'} - hasBin: true - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -7767,10 +5576,6 @@ packages: resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} - pretty-ms@9.1.0: - resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} - engines: {node: '>=18'} - proc-log@5.0.0: resolution: {integrity: sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -7778,10 +5583,6 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -7790,9 +5591,6 @@ packages: bluebird: optional: true - promise-limit@2.7.0: - resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} - promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} @@ -7801,12 +5599,6 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - - protocols@2.0.1: - resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} - proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -7814,9 +5606,6 @@ packages: prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -7835,15 +5624,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - - queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - - radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} @@ -7858,10 +5638,6 @@ packages: rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - react-dom@19.0.0: resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} peerDependencies: @@ -7910,13 +5686,6 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -7925,14 +5694,6 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} - redis-errors@1.2.0: - resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} - engines: {node: '>=4'} - - redis-parser@3.0.0: - resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} - engines: {node: '>=4'} - refa@0.12.1: resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -7956,18 +5717,6 @@ packages: regex-parser@2.3.0: resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} - regex-recursion@5.1.1: - resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==} - - regex-utilities@2.3.0: - resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - - regex@4.4.0: - resolution: {integrity: sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==} - - regex@5.1.1: - resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==} - regexp-ast-analysis@0.7.1: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -7991,51 +5740,6 @@ packages: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true - rehype-external-links@3.0.0: - resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} - - rehype-minify-whitespace@6.0.2: - resolution: {integrity: sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-remark@10.0.0: - resolution: {integrity: sha512-+aDXY/icqMFOafJQomVjxe3BAP7aR3lIsQ3GV6VIwpbCD2nvNFOXjGvotMe5p0Ny+Gt6L13DhEf/FjOOpTuUbQ==} - - rehype-slug@6.0.0: - resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - - rehype-sort-attribute-values@5.0.1: - resolution: {integrity: sha512-lU3ABJO5frbUgV132YS6SL7EISf//irIm9KFMaeu5ixHfgWf6jhe+09Uf/Ef8pOYUJWKOaQJDRJGCXs6cNsdsQ==} - - rehype-sort-attributes@5.0.1: - resolution: {integrity: sha512-Bxo+AKUIELcnnAZwJDt5zUDDRpt4uzhfz9d0PVGhcxYWsbFj5Cv35xuWxu5r1LeYNFNhgGqsr9Q2QiIOM/Qctg==} - - remark-emoji@5.0.1: - resolution: {integrity: sha512-QCqTSvcZ65Ym+P+VyBKd4JfJfh7icMl7cIOGVmPMzWkDtdD8pQ0nQG7yxGolVIiMzSx90EZ7SwNiVpYpfTxn7w==} - engines: {node: '>=18'} - - remark-gfm@4.0.0: - resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} - - remark-mdc@3.5.3: - resolution: {integrity: sha512-XmIAhEYBCtDvGjvLfyCtF8Bj1Uey9v3JD2f9WutM32Xfy9Uif3vPqJtg9n2whwIsXBtD+nvK+bEBt0zrq1DqtA==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.1: - resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - replace-in-file@6.3.5: - resolution: {integrity: sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg==} - engines: {node: '>=10'} - hasBin: true - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -8051,14 +5755,6 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-path@1.4.0: - resolution: {integrity: sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==} - engines: {node: '>= 0.8'} - resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -8083,9 +5779,6 @@ packages: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} - restructure@3.0.2: - resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} - retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -8117,19 +5810,6 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup-plugin-visualizer@5.14.0: - resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - rolldown: 1.x - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rolldown: - optional: true - rollup: - optional: true - rollup@4.30.1: resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8192,13 +5872,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - satori-html@0.3.2: - resolution: {integrity: sha512-wjTh14iqADFKDK80e51/98MplTGfxz2RmIzh0GqShlf4a67+BooLywF17TvJPD6phO0Hxm7Mf1N5LtRYvdkYRA==} - - satori@0.12.1: - resolution: {integrity: sha512-0SbjchvDrDbeXeQgxWVtSWxww7qcFgk3DtSE2/blHOSlLsSHwIqO2fCrtVa/EudJ7Eqno8A33QNx56rUyGbLuw==} - engines: {node: '>=16'} - sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -8255,16 +5928,10 @@ packages: resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} engines: {node: '>= 0.8.0'} - serve-placeholder@2.0.2: - resolution: {integrity: sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==} - serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} @@ -8282,10 +5949,6 @@ packages: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} - sharp@0.32.6: - resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==} - engines: {node: '>=14.15.0'} - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -8297,12 +5960,6 @@ packages: shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - shiki@1.22.0: - resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} - - shiki@1.29.1: - resolution: {integrity: sha512-TghWKV9pJTd/N+IgAIVJtr0qZkB7FfFCUrrEJc0aRmZupo3D1OCVRknQWVRVA7AX/M0Ld7QfoAruPzr3CnUJuw==} - side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -8321,44 +5978,15 @@ packages: resolution: {integrity: sha512-PHMifhh3EN4loMcHCz6l3v/luzgT3za+9f8subGgeMNjbJjzH4Ij/YoX3Gvu+kaouJRIlVdTHHCREADYf+ZteA==} engines: {node: ^18.17.0 || >=20.5.0} - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} - simple-git@3.27.0: - resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} - - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - - sirv@3.0.0: - resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} - engines: {node: '>=18'} - - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - - site-config-stack@3.0.6: - resolution: {integrity: sha512-lqNI6Xvbwf4NBFqGJ1gNUIe12SOYw8YOuhrbl52JTVwBgtZZzXYh/ZQAwBHwXC7pxULvfIPUd8AJA35WtqU5YA==} - peerDependencies: - vue: ^3 - - skin-tone@2.0.0: - resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} - engines: {node: '>=8'} - - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - - slashes@3.0.12: - resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} + slashes@3.0.12: + resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} @@ -8368,27 +5996,13 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} - slugify@1.6.6: - resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} - engines: {node: '>=8.0.0'} - smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - smob@1.5.0: - resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} - - smooth-dnd@0.12.1: - resolution: {integrity: sha512-Dndj/MOG7VP83mvzfGCLGzV2HuK1lWachMtWl/Iuk6zV7noDycIBnflwaPuDzoaapEl3Pc4+ybJArkkx9sxPZg==} - socket.io-adapter@2.5.5: resolution: {integrity: sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==} - socket.io-client@4.8.1: - resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} - engines: {node: '>=10.0.0'} - socket.io-parser@4.2.4: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} @@ -8429,9 +6043,6 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} @@ -8454,17 +6065,6 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} - speakingurl@14.0.1: - resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} - engines: {node: '>=0.10.0'} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - splitpanes@3.1.5: - resolution: {integrity: sha512-r3Mq2ITFQ5a2VXLOy4/Sb2Ptp7OfEO8YIbhVJqJXoFc9hc5nTXXkCvtVDjIGbvC0vdE7tse+xTM9BMjsszP6bw==} - sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} @@ -8478,9 +6078,6 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - standard-as-callback@2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} engines: {node: '>= 0.6'} @@ -8489,9 +6086,6 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} @@ -8499,9 +6093,6 @@ packages: resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} engines: {node: '>=8.0'} - streamx@2.20.1: - resolution: {integrity: sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -8514,18 +6105,12 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string.prototype.codepointat@0.2.1: - resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} - string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -8538,25 +6123,14 @@ packages: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} - strip-final-newline@4.0.0: - resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} - engines: {node: '>=18'} - strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} - strip-literal@2.1.1: resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} @@ -8574,10 +6148,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true - superjson@2.2.1: - resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} - engines: {node: '>=16'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -8586,10 +6156,6 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - supports-color@9.4.0: - resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} - engines: {node: '>=12'} - supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -8617,23 +6183,6 @@ packages: resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} engines: {node: ^14.18.0 || >=16.0.0} - system-architecture@0.1.0: - resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} - engines: {node: '>=18'} - - tabbable@6.2.0: - resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - - tailwind-config-viewer@2.0.4: - resolution: {integrity: sha512-icvcmdMmt9dphvas8wL40qttrHwAnW3QEN4ExJ2zICjwRsPj7gowd1cOceaWG3IfTuM/cTNGQcx+bsjMtmV+cw==} - engines: {node: '>=13'} - hasBin: true - peerDependencies: - tailwindcss: 1 || 2 || 2.0.1-compat || 3 - - tailwind-merge@2.6.0: - resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} - tailwindcss@3.4.17: resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} engines: {node: '>=14.0.0'} @@ -8643,19 +6192,6 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} - - tar-fs@3.0.6: - resolution: {integrity: sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} @@ -8685,9 +6221,6 @@ packages: engines: {node: '>=10'} hasBin: true - text-decoder@1.2.0: - resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -8701,18 +6234,9 @@ packages: peerDependencies: tslib: ^2 - third-party-capital@2.3.0: - resolution: {integrity: sha512-p4rGOF4JCkI18HH3a1Vfd89Mg37TLlAsGmePBt20MA52frviYSBE6ToGOmTpqRC4EIlS5/4Owv6TpegFJUSkOg==} - thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - tiny-inflate@1.0.3: - resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -8762,17 +6286,10 @@ packages: resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - tough-cookie@5.0.0: resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} engines: {node: '>=16'} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.0.0: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} @@ -8787,15 +6304,6 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trim-trailing-lines@2.1.0: - resolution: {integrity: sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@2.0.0: resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} engines: {node: '>=18.12'} @@ -8808,10 +6316,6 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsscmp@1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - tsx@4.19.1: resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==} engines: {node: '>=18.0.0'} @@ -8821,9 +6325,6 @@ packages: resolution: {integrity: sha512-+68OP1ZzSF84rTckf3FA95vJ1Zlx/uaXyiiKyPd1pA4rZNkpEvDAKmsu1xUSmbF/chCRYgZ6UZkDwC7PmzmAyA==} engines: {node: ^18.17.0 || >=20.5.0} - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo-stream@2.4.0: resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} @@ -8847,17 +6348,10 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - type-fest@4.26.1: - resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} - engines: {node: '>=16'} - type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - type-level-regexp@0.1.17: - resolution: {integrity: sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==} - typed-assert@1.0.9: resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} @@ -8873,9 +6367,6 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - ultrahtml@1.5.3: - resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==} - unbuild@3.3.1: resolution: {integrity: sha512-/5OeeHmW1JlWEyQw3SPkB9BV16lzr6C5i8D+O17NLx6ETgvCZ3ZlyXfWkVVfG2YCsv8xAVQCqJNJtbEAGwHg7A==} hasBin: true @@ -8885,33 +6376,16 @@ packages: typescript: optional: true - unconfig@0.5.5: - resolution: {integrity: sha512-VQZ5PT9HDX+qag0XdgQi8tJepPhXiR/yVOkn707gJDKo31lGjRilPREiQJ9Z6zd/Ugpv6ZvO5VxVIcatldYcNQ==} - - uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - unctx@2.4.1: resolution: {integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==} undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - undici@6.19.8: - resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} - engines: {node: '>=18.17'} - - unenv@1.10.0: - resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} - unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} - unicode-emoji-modifier-base@1.0.0: - resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} - engines: {node: '>=4'} - unicode-match-property-ecmascript@2.0.0: resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} @@ -8920,39 +6394,17 @@ packages: resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} engines: {node: '>=4'} - unicode-properties@1.4.1: - resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} - unicode-property-aliases-ecmascript@2.1.0: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - unicode-trie@2.0.0: - resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} - unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unifont@0.1.6: - resolution: {integrity: sha512-vGGiebrQ8L9mBahIP9bCy5nr9WWxYf66QiEzcw035jKgEgcwr7Drwp8rxQNlGZTabtKXKgiP7/k98ts8tNZgMw==} - - unimport@3.13.1: - resolution: {integrity: sha512-nNrVzcs93yrZQOW77qnyOVHtb68LegvhYFwxFMfuuWScmwQmyVCG/NBuN8tYsaGzgQUVYv34E/af+Cc9u4og4A==} - unimport@3.14.5: resolution: {integrity: sha512-tn890SwFFZxqaJSKQPPd+yygfKSATbM8BZWW1aCR2TJBTs1SDrmLamBueaFtYsGjHtQaRgqEbQflOjN2iW12gA==} - unimport@3.14.6: - resolution: {integrity: sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==} - unimport@4.0.0: resolution: {integrity: sha512-FH+yZ36YaVlh0ZjHesP20Q4uL+wL0EqTNxDZcUupsIn6WRYXZAbIYEMDLTaLBpkNVzFpqZXS+am51/HR3ANUNw==} engines: {node: '>=18.12.0'} @@ -8965,18 +6417,9 @@ packages: resolution: {integrity: sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==} engines: {node: ^18.17.0 || >=20.5.0} - unist-builder@4.0.0: - resolution: {integrity: sha512-wmRFnH+BLpZnTKpc5L7O67Kac89s9HMrtELpnNaE6TAobq5DTZZs5YaTQfAZBA9bFPECx2uVAPO31c+GVug8mg==} - - unist-util-find-after@5.0.0: - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} @@ -8994,18 +6437,6 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unocss@0.62.4: - resolution: {integrity: sha512-SaGbxXQkk8GDPeJpWsBCZ8a23Knu4ixVTt6pvcQWKjOCGTd9XBd+vLZzN2WwdwgBPVwmMmx5wp+/gPHKFNOmIw==} - engines: {node: '>=14'} - peerDependencies: - '@unocss/webpack': 0.62.4 - vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 - peerDependenciesMeta: - '@unocss/webpack': - optional: true - vite: - optional: true - unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -9039,202 +6470,27 @@ packages: '@nuxt/kit': optional: true - unplugin-vue-router@0.11.1: - resolution: {integrity: sha512-uYKJiFcPcLn20ve9KDDfvmGvgZph3mfE9ozd3SduFmkmQXo7bnPhSglytlV7WhuaHkhEDCPfnKx2trKbYieNXQ==} - peerDependencies: - vue-router: ^4.4.0 - peerDependenciesMeta: - vue-router: - optional: true - unplugin@1.16.0: resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} engines: {node: '>=14.0.0'} - unplugin@1.16.1: - resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} - engines: {node: '>=14.0.0'} - unplugin@2.1.2: resolution: {integrity: sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==} engines: {node: '>=18.12.0'} - unstorage@1.12.0: - resolution: {integrity: sha512-ARZYTXiC+e8z3lRM7/qY9oyaOkaozCeNd2xoz7sYK9fv7OLGhVsf+BZbmASqiK/HTZ7T6eAlnVq9JynZppyk3w==} - peerDependencies: - '@azure/app-configuration': ^1.7.0 - '@azure/cosmos': ^4.1.1 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.4.1 - '@azure/keyvault-secrets': ^4.8.0 - '@azure/storage-blob': ^12.24.0 - '@capacitor/preferences': ^6.0.2 - '@netlify/blobs': ^6.5.0 || ^7.0.0 - '@planetscale/database': ^1.19.0 - '@upstash/redis': ^1.34.0 - '@vercel/kv': ^1.0.1 - idb-keyval: ^6.2.1 - ioredis: ^5.4.1 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - ioredis: - optional: true - - unstorage@1.13.1: - resolution: {integrity: sha512-ELexQHUrG05QVIM/iUeQNdl9FXDZhqLJ4yP59fnmn2jGUh0TEulwOgov1ubOb3Gt2ZGK/VMchJwPDNVEGWQpRg==} - peerDependencies: - '@azure/app-configuration': ^1.7.0 - '@azure/cosmos': ^4.1.1 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.5.0 - '@azure/keyvault-secrets': ^4.9.0 - '@azure/storage-blob': ^12.25.0 - '@capacitor/preferences': ^6.0.2 - '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 - '@planetscale/database': ^1.19.0 - '@upstash/redis': ^1.34.3 - '@vercel/kv': ^1.0.1 - idb-keyval: ^6.2.1 - ioredis: ^5.4.1 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - ioredis: - optional: true - - unstorage@1.14.4: - resolution: {integrity: sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==} - peerDependencies: - '@azure/app-configuration': ^1.8.0 - '@azure/cosmos': ^4.2.0 - '@azure/data-tables': ^13.3.0 - '@azure/identity': ^4.5.0 - '@azure/keyvault-secrets': ^4.9.0 - '@azure/storage-blob': ^12.26.0 - '@capacitor/preferences': ^6.0.3 - '@deno/kv': '>=0.8.4' - '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 - '@planetscale/database': ^1.19.0 - '@upstash/redis': ^1.34.3 - '@vercel/blob': '>=0.27.0' - '@vercel/kv': ^1.0.1 - aws4fetch: ^1.0.20 - db0: '>=0.2.1' - idb-keyval: ^6.2.1 - ioredis: ^5.4.2 - uploadthing: ^7.4.1 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@deno/kv': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/blob': - optional: true - '@vercel/kv': - optional: true - aws4fetch: - optional: true - db0: - optional: true - idb-keyval: - optional: true - ioredis: - optional: true - uploadthing: - optional: true - - untun@0.1.3: - resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} - hasBin: true - untyped@1.5.2: resolution: {integrity: sha512-eL/8PlhLcMmlMDtNPKhyyz9kEBDS3Uk4yMu/ewlkT2WFbtzScjHWPJLdQLmaGPUKjXzwe9MumOtOgc4Fro96Kg==} hasBin: true - unwasm@0.3.9: - resolution: {integrity: sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg==} - update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' - uqr@0.1.2: - resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - - uri-js-replace@1.0.1: - resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} - uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - urlpattern-polyfill@8.0.2: - resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -9250,19 +6506,6 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - v-lazy-show@0.2.4: - resolution: {integrity: sha512-Lx9Str2i+HTh+zGzs9O3YyhGAZOAAfU+6MUUPcQPPiPxQO1sHBEv9sH3MO9bPc4T09gsjsS2+sbaCWQ1MdhpJQ==} - peerDependencies: - '@vue/compiler-core': ^3.3 - - valibot@0.42.1: - resolution: {integrity: sha512-3keXV29Ar5b//Hqi4MbSdV7lfVp6zuYLZuA9V1PvQUsXqogr+u5lvLPLk3A4f74VUXDnf/JfWMN6sB+koJ/FFw==} - peerDependencies: - typescript: '>=5' - peerDependenciesMeta: - typescript: - optional: true - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -9274,74 +6517,11 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - vite-hot-client@0.2.4: - resolution: {integrity: sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==} - peerDependencies: - vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 - vite-node@3.0.4: resolution: {integrity: sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-plugin-checker@0.8.0: - resolution: {integrity: sha512-UA5uzOGm97UvZRTdZHiQVYFnd86AVn8EVaD4L3PoVzxH+IZSfaAw14WGFwX9QS23UW3lV/5bVKZn6l0w+q9P0g==} - engines: {node: '>=14.16'} - peerDependencies: - '@biomejs/biome': '>=1.7' - eslint: '>=7' - meow: ^9.0.0 - optionator: ^0.9.1 - stylelint: '>=13' - typescript: '*' - vite: '>=2.0.0' - vls: '*' - vti: '*' - vue-tsc: ~2.1.6 - peerDependenciesMeta: - '@biomejs/biome': - optional: true - eslint: - optional: true - meow: - optional: true - optionator: - optional: true - stylelint: - optional: true - typescript: - optional: true - vls: - optional: true - vti: - optional: true - vue-tsc: - optional: true - - vite-plugin-inspect@0.8.9: - resolution: {integrity: sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==} - engines: {node: '>=14'} - peerDependencies: - '@nuxt/kit': '*' - vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1 - peerDependenciesMeta: - '@nuxt/kit': - optional: true - - vite-plugin-vue-inspector@5.3.1: - resolution: {integrity: sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==} - peerDependencies: - vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 - vite@6.0.11: resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -9414,44 +6594,9 @@ packages: resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} engines: {node: '>=0.10.0'} - vscode-jsonrpc@6.0.0: - resolution: {integrity: sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==} - engines: {node: '>=8.0.0 || >=10.0.0'} - - vscode-languageclient@7.0.0: - resolution: {integrity: sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==} - engines: {vscode: ^1.52.0} - - vscode-languageserver-protocol@3.16.0: - resolution: {integrity: sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==} - - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - - vscode-languageserver-types@3.16.0: - resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} - - vscode-languageserver@7.0.0: - resolution: {integrity: sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==} - hasBin: true - vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - vue-bundle-renderer@2.1.1: - resolution: {integrity: sha512-+qALLI5cQncuetYOXp4yScwYvqh8c6SMXee3B+M7oTZxOgtESP0l4j/fXdEJoZ+EdMxkGWIj+aSEyjXkOdmd7g==} - - vue-component-meta@2.2.0: - resolution: {integrity: sha512-IitQWA2vqutKUoOYawW4KDcSONKq1i4uyr+3NesQWuQbSdLg4tNcfHjQnAQMzHqAMunBTMST8uiknrYixZWHFQ==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - vue-component-type-helpers@2.2.0: - resolution: {integrity: sha512-cYrAnv2me7bPDcg9kIcGwjJiSB6Qyi08+jLDo9yuvoFQjzHiPTzML7RnkJB1+3P6KMsX/KbCD4QE3Tv/knEllw==} - vue-demi@0.14.10: resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} engines: {node: '>=12'} @@ -9463,9 +6608,6 @@ packages: '@vue/composition-api': optional: true - vue-devtools-stub@0.1.0: - resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} - vue-eslint-parser@9.4.3: resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} engines: {node: ^14.17.0 || >=16.0.0} @@ -9483,11 +6625,6 @@ packages: peerDependencies: typescript: '>=5.0.0' - vue3-smooth-dnd@0.0.6: - resolution: {integrity: sha512-CH9ZZhEfE7qU1ef2rlfgBG+nZtQX8PnWlspB2HDDz1uVGU7fXM0Pr65DftBMz4X81S+edw2H+ZFG6Dyb5J81KA==} - peerDependencies: - vue: ^3.0.11 - vue@3.5.13: resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} peerDependencies: @@ -9513,16 +6650,6 @@ packages: weak-lru-cache@1.2.2: resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -9600,19 +6727,11 @@ packages: resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} engines: {node: '>=18'} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true - which@3.0.1: - resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - hasBin: true - which@5.0.0: resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -9623,9 +6742,6 @@ packages: engines: {node: '>=8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} @@ -9691,19 +6807,6 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xmlhttprequest-ssl@2.1.1: - resolution: {integrity: sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==} - engines: {node: '>=0.4.0'} - - xss@1.0.15: - resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} - engines: {node: '>= 0.10.0'} - hasBin: true - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -9718,18 +6821,10 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml-ast-parser@0.0.43: - resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} - yaml-eslint-parser@1.2.3: resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} engines: {node: ^14.17.0 || >=16.0.0} - yaml@2.6.1: - resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} - engines: {node: '>= 14'} - hasBin: true - yaml@2.7.0: resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} engines: {node: '>= 14'} @@ -9751,10 +6846,6 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} - ylru@1.4.0: - resolution: {integrity: sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==} - engines: {node: '>= 4.0.0'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -9767,34 +6858,9 @@ packages: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} - yoctocolors@2.1.1: - resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} - engines: {node: '>=18'} - - yoga-wasm-web@0.3.3: - resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} - zhead@2.2.4: resolution: {integrity: sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag==} - zip-stream@6.0.1: - resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} - engines: {node: '>= 14'} - - zod-to-json-schema@3.24.1: - resolution: {integrity: sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==} - peerDependencies: - zod: ^3.24.1 - - zod-to-ts@1.2.0: - resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} - peerDependencies: - typescript: ^4.9.4 || ^5.0.2 - zod: ^3 - - zod@3.24.1: - resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} - zone.js@0.15.0: resolution: {integrity: sha512-9oxn0IIjbCZkJ67L+LkhYWRyAy7axphb3VgE2MBDlOqnmHMPWGYMxJxBYFueFq/JGY2GMwS0rU+UCLunEmy5UA==} @@ -9803,7 +6869,8 @@ packages: snapshots: - '@alloc/quick-lru@5.2.0': {} + '@alloc/quick-lru@5.2.0': + optional: true '@ampproject/remapping@2.3.0': dependencies: @@ -9958,7 +7025,7 @@ snapshots: browserslist: 4.24.2 esbuild: 0.24.2 fast-glob: 3.3.3 - https-proxy-agent: 7.0.6(supports-color@9.4.0) + https-proxy-agent: 7.0.6 istanbul-lib-instrument: 6.0.3 listr2: 8.2.5 magic-string: 0.30.17 @@ -10148,11 +7215,6 @@ snapshots: - typescript - vitest - '@antfu/install-pkg@0.4.1': - dependencies: - package-manager-detector: 0.2.8 - tinyexec: 0.3.2 - '@antfu/install-pkg@1.0.0': dependencies: package-manager-detector: 0.2.8 @@ -10189,7 +7251,7 @@ snapshots: '@babel/traverse': 7.25.9 '@babel/types': 7.26.7 convert-source-map: 2.0.0 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -10241,7 +7303,7 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.26.5 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 lodash.debounce: 4.0.8 resolve: 1.22.10 transitivePeerDependencies: @@ -10373,44 +7435,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.26.0)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 @@ -10880,7 +7918,7 @@ snapshots: '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/types': 7.26.7 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -10890,16 +7928,6 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@capsizecss/metrics@2.2.0': {} - - '@capsizecss/unpack@2.3.0(encoding@0.1.13)': - dependencies: - blob-to-buffer: 1.2.9 - cross-fetch: 3.1.8(encoding@0.1.13) - fontkit: 2.0.4 - transitivePeerDependencies: - - encoding - '@clack/core@0.4.1': dependencies: picocolors: 1.1.1 @@ -10911,10 +7939,6 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 - '@cloudflare/kv-asset-handler@0.3.4': - dependencies: - mime: 3.0.0 - '@colors/colors@1.5.0': optional: true @@ -10938,14 +7962,6 @@ snapshots: '@csstools/css-tokenizer@3.0.3': {} - '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.0.0)': - dependencies: - postcss-selector-parser: 7.0.0 - - '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.0.0)': - dependencies: - postcss-selector-parser: 7.0.0 - '@discoveryjs/json-ext@0.6.3': {} '@es-joy/jsdoccomment@0.49.0': @@ -10966,153 +7982,102 @@ snapshots: '@esbuild/aix-ppc64@0.23.1': optional: true - '@esbuild/aix-ppc64@0.24.0': - optional: true - '@esbuild/aix-ppc64@0.24.2': optional: true '@esbuild/android-arm64@0.23.1': optional: true - '@esbuild/android-arm64@0.24.0': - optional: true - '@esbuild/android-arm64@0.24.2': optional: true '@esbuild/android-arm@0.23.1': optional: true - '@esbuild/android-arm@0.24.0': - optional: true - '@esbuild/android-arm@0.24.2': optional: true '@esbuild/android-x64@0.23.1': optional: true - '@esbuild/android-x64@0.24.0': - optional: true - '@esbuild/android-x64@0.24.2': optional: true '@esbuild/darwin-arm64@0.23.1': optional: true - '@esbuild/darwin-arm64@0.24.0': - optional: true - '@esbuild/darwin-arm64@0.24.2': optional: true '@esbuild/darwin-x64@0.23.1': optional: true - '@esbuild/darwin-x64@0.24.0': - optional: true - '@esbuild/darwin-x64@0.24.2': optional: true '@esbuild/freebsd-arm64@0.23.1': optional: true - '@esbuild/freebsd-arm64@0.24.0': - optional: true - '@esbuild/freebsd-arm64@0.24.2': optional: true '@esbuild/freebsd-x64@0.23.1': optional: true - '@esbuild/freebsd-x64@0.24.0': - optional: true - '@esbuild/freebsd-x64@0.24.2': optional: true '@esbuild/linux-arm64@0.23.1': optional: true - '@esbuild/linux-arm64@0.24.0': - optional: true - '@esbuild/linux-arm64@0.24.2': optional: true '@esbuild/linux-arm@0.23.1': optional: true - '@esbuild/linux-arm@0.24.0': - optional: true - '@esbuild/linux-arm@0.24.2': optional: true '@esbuild/linux-ia32@0.23.1': optional: true - '@esbuild/linux-ia32@0.24.0': - optional: true - '@esbuild/linux-ia32@0.24.2': optional: true '@esbuild/linux-loong64@0.23.1': optional: true - '@esbuild/linux-loong64@0.24.0': - optional: true - '@esbuild/linux-loong64@0.24.2': optional: true '@esbuild/linux-mips64el@0.23.1': optional: true - '@esbuild/linux-mips64el@0.24.0': - optional: true - '@esbuild/linux-mips64el@0.24.2': optional: true '@esbuild/linux-ppc64@0.23.1': optional: true - '@esbuild/linux-ppc64@0.24.0': - optional: true - '@esbuild/linux-ppc64@0.24.2': optional: true '@esbuild/linux-riscv64@0.23.1': optional: true - '@esbuild/linux-riscv64@0.24.0': - optional: true - '@esbuild/linux-riscv64@0.24.2': optional: true '@esbuild/linux-s390x@0.23.1': optional: true - '@esbuild/linux-s390x@0.24.0': - optional: true - '@esbuild/linux-s390x@0.24.2': optional: true '@esbuild/linux-x64@0.23.1': optional: true - '@esbuild/linux-x64@0.24.0': - optional: true - '@esbuild/linux-x64@0.24.2': optional: true @@ -11122,63 +8087,42 @@ snapshots: '@esbuild/netbsd-x64@0.23.1': optional: true - '@esbuild/netbsd-x64@0.24.0': - optional: true - '@esbuild/netbsd-x64@0.24.2': optional: true '@esbuild/openbsd-arm64@0.23.1': optional: true - '@esbuild/openbsd-arm64@0.24.0': - optional: true - '@esbuild/openbsd-arm64@0.24.2': optional: true '@esbuild/openbsd-x64@0.23.1': optional: true - '@esbuild/openbsd-x64@0.24.0': - optional: true - '@esbuild/openbsd-x64@0.24.2': optional: true '@esbuild/sunos-x64@0.23.1': optional: true - '@esbuild/sunos-x64@0.24.0': - optional: true - '@esbuild/sunos-x64@0.24.2': optional: true '@esbuild/win32-arm64@0.23.1': optional: true - '@esbuild/win32-arm64@0.24.0': - optional: true - '@esbuild/win32-arm64@0.24.2': optional: true '@esbuild/win32-ia32@0.23.1': optional: true - '@esbuild/win32-ia32@0.24.0': - optional: true - '@esbuild/win32-ia32@0.24.2': optional: true '@esbuild/win32-x64@0.23.1': optional: true - '@esbuild/win32-x64@0.24.0': - optional: true - '@esbuild/win32-x64@0.24.2': optional: true @@ -11202,7 +8146,7 @@ snapshots: '@eslint/config-array@0.19.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -11214,7 +8158,7 @@ snapshots: '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 @@ -11244,18 +8188,6 @@ snapshots: '@eslint/core': 0.10.0 levn: 0.4.1 - '@fastify/accept-negotiator@1.1.0': - optional: true - - '@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.17)': - dependencies: - tailwindcss: 3.4.17 - - '@headlessui/vue@1.7.23(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@tanstack/vue-virtual': 3.10.8(vue@3.5.13(typescript@5.7.3)) - vue: 3.5.13(typescript@5.7.3) - '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -11269,91 +8201,6 @@ snapshots: '@humanwhocodes/retry@0.4.1': {} - '@iconify-json/carbon@1.2.1': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/heroicons@1.2.2': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/logos@1.2.0': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/lucide@1.2.25': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/noto@1.2.2': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/ph@1.2.2': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/ri@1.2.0': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/simple-icons@1.2.22': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/tabler@1.2.4': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify-json/vscode-icons@1.2.10': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify/collections@1.0.492': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify/collections@1.0.508': - dependencies: - '@iconify/types': 2.0.0 - - '@iconify/types@2.0.0': {} - - '@iconify/utils@2.1.33': - dependencies: - '@antfu/install-pkg': 0.4.1 - '@antfu/utils': 0.7.10 - '@iconify/types': 2.0.0 - debug: 4.4.0(supports-color@9.4.0) - kolorist: 1.8.0 - local-pkg: 0.5.1 - mlly: 1.7.4 - transitivePeerDependencies: - - supports-color - - '@iconify/utils@2.2.1': - dependencies: - '@antfu/install-pkg': 0.4.1 - '@antfu/utils': 0.7.10 - '@iconify/types': 2.0.0 - debug: 4.4.0(supports-color@9.4.0) - globals: 15.14.0 - kolorist: 1.8.0 - local-pkg: 0.5.1 - mlly: 1.7.4 - transitivePeerDependencies: - - supports-color - - '@iconify/vue@4.1.2(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@iconify/types': 2.0.0 - vue: 3.5.13(typescript@5.7.3) - - '@iconify/vue@4.3.0(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@iconify/types': 2.0.0 - vue: 3.5.13(typescript@5.7.3) - '@inquirer/checkbox@4.0.7(@types/node@22.12.0)': dependencies: '@inquirer/core': 10.1.5(@types/node@22.12.0) @@ -11469,8 +8316,6 @@ snapshots: dependencies: '@types/node': 22.12.0 - '@ioredis/commands@1.2.0': {} - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -11524,82 +8369,8 @@ snapshots: dependencies: tslib: 2.8.1 - '@koa/router@12.0.2': - dependencies: - debug: 4.4.0(supports-color@9.4.0) - http-errors: 2.0.0 - koa-compose: 4.1.0 - methods: 1.1.2 - path-to-regexp: 6.3.0 - transitivePeerDependencies: - - supports-color - - '@kwsites/file-exists@1.1.1': - dependencies: - debug: 4.4.0(supports-color@9.4.0) - transitivePeerDependencies: - - supports-color - - '@kwsites/promise-deferred@1.1.1': {} - '@leichtgewicht/ip-codec@2.0.5': {} - '@libsql/client@0.14.0': - dependencies: - '@libsql/core': 0.14.0 - '@libsql/hrana-client': 0.7.0 - js-base64: 3.7.7 - libsql: 0.4.7 - promise-limit: 2.7.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@libsql/core@0.14.0': - dependencies: - js-base64: 3.7.7 - - '@libsql/darwin-arm64@0.4.7': - optional: true - - '@libsql/darwin-x64@0.4.7': - optional: true - - '@libsql/hrana-client@0.7.0': - dependencies: - '@libsql/isomorphic-fetch': 0.3.1 - '@libsql/isomorphic-ws': 0.1.5 - js-base64: 3.7.7 - node-fetch: 3.3.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@libsql/isomorphic-fetch@0.3.1': {} - - '@libsql/isomorphic-ws@0.1.5': - dependencies: - '@types/ws': 8.5.14 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@libsql/linux-arm64-gnu@0.4.7': - optional: true - - '@libsql/linux-arm64-musl@0.4.7': - optional: true - - '@libsql/linux-x64-gnu@0.4.7': - optional: true - - '@libsql/linux-x64-musl@0.4.7': - optional: true - - '@libsql/win32-x64-msvc@0.4.7': - optional: true - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.2.1(@types/node@22.12.0))': dependencies: '@inquirer/prompts': 7.2.1(@types/node@22.12.0) @@ -11623,21 +8394,6 @@ snapshots: '@lmdb/lmdb-win32-x64@3.2.2': optional: true - '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': - dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 - node-fetch: 2.7.0(encoding@0.1.13) - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.3 - tar: 6.2.1 - transitivePeerDependencies: - - encoding - - supports-color - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': optional: true @@ -11724,19 +8480,6 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.0.1 optional: true - '@neon-rs/load@0.0.4': {} - - '@netlify/functions@2.8.2': - dependencies: - '@netlify/serverless-functions-api': 1.26.1 - - '@netlify/node-cookies@0.1.0': {} - - '@netlify/serverless-functions-api@1.26.1': - dependencies: - '@netlify/node-cookies': 0.1.0 - urlpattern-polyfill: 8.0.2 - '@ngtools/webpack@19.1.5(@angular/compiler-cli@19.1.4(@angular/compiler@19.1.4(@angular/core@19.1.4(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3))(typescript@5.7.3)(webpack@5.97.1(esbuild@0.24.2))': dependencies: '@angular/compiler-cli': 19.1.4(@angular/compiler@19.1.4(@angular/core@19.1.4(rxjs@7.8.1)(zone.js@0.15.0)))(typescript@5.7.3) @@ -11759,7 +8502,7 @@ snapshots: dependencies: agent-base: 7.1.3 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6(supports-color@9.4.0) + https-proxy-agent: 7.0.6 lru-cache: 10.4.3 socks-proxy-agent: 8.0.5 transitivePeerDependencies: @@ -11820,962 +8563,48 @@ snapshots: - bluebird - supports-color - '@nuxt/cli@3.20.0(magicast@0.3.5)': + '@nuxt/kit@3.15.3(magicast@0.3.5)(rollup@4.30.1)': dependencies: + '@nuxt/schema': 3.15.3 c12: 2.0.1(magicast@0.3.5) - chokidar: 4.0.3 - citty: 0.1.6 - clipboardy: 4.0.0 consola: 3.4.0 defu: 6.1.4 - fuse.js: 7.0.0 - giget: 1.2.3 - h3: 1.14.0 - httpxy: 0.1.5 + destr: 2.0.3 + globby: 14.0.2 + ignore: 7.0.3 jiti: 2.4.2 - listhen: 1.9.0 - nypm: 0.4.1 - ofetch: 1.4.1 + klona: 2.0.6 + knitwork: 1.2.0 + mlly: 1.7.4 ohash: 1.1.4 pathe: 2.0.2 - perfect-debounce: 1.0.0 pkg-types: 1.3.1 scule: 1.3.0 semver: 7.6.3 std-env: 3.8.0 - tinyexec: 0.3.2 ufo: 1.5.4 + unctx: 2.4.1 + unimport: 4.0.0(rollup@4.30.1) + untyped: 1.5.2 transitivePeerDependencies: - magicast - - uWebSockets.js + - rollup + - supports-color + optional: true - '@nuxt/content@3.0.1(@libsql/client@0.14.0)(magicast@0.3.5)(pg@8.13.1)(rollup@4.30.1)': + '@nuxt/schema@3.15.3': dependencies: - '@libsql/client': 0.14.0 - '@nuxt/kit': 3.15.3(magicast@0.3.5)(rollup@4.30.1) - '@nuxtjs/mdc': 0.13.2(magicast@0.3.5)(rollup@4.30.1) - '@shikijs/langs': 1.29.1 - '@sqlite.org/sqlite-wasm': 3.48.0-build1 - better-sqlite3: 11.8.1 - c12: 2.0.1(magicast@0.3.5) - chokidar: 4.0.3 consola: 3.4.0 defu: 6.1.4 - destr: 2.0.3 - fast-glob: 3.3.3 - git-url-parse: 16.0.0 - jiti: 2.4.2 - knitwork: 1.2.0 - listhen: 1.9.0 - mdast-util-to-hast: 13.2.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromatch: 4.0.8 - minimatch: 10.0.1 - nuxt-component-meta: 0.10.0(magicast@0.3.5)(rollup@4.30.1) - ohash: 1.1.4 - parse-git-config: 3.0.0 pathe: 2.0.2 - pg: 8.13.1 - pkg-types: 1.3.1 - remark-mdc: 3.5.3 - scule: 1.3.0 - shiki: 1.29.1 - slugify: 1.6.6 - socket.io-client: 4.8.1 - tar: 7.4.3 - typescript: 5.7.3 - ufo: 1.5.4 - unified: 11.0.5 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.0.0 - ws: 8.18.0 - zod: 3.24.1 - zod-to-json-schema: 3.24.1(zod@3.24.1) - zod-to-ts: 1.2.0(typescript@5.7.3)(zod@3.24.1) - transitivePeerDependencies: - - bufferutil - - magicast - - rollup - - supports-color - - uWebSockets.js - - utf-8-validate + std-env: 3.8.0 + optional: true - '@nuxt/devalue@2.0.2': {} + '@parcel/watcher-android-arm64@2.4.1': + optional: true - '@nuxt/devtools-kit@1.5.1(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))': - dependencies: - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - '@nuxt/schema': 3.13.2(rollup@4.30.1) - execa: 7.2.0 - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/devtools-kit@1.6.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))': - dependencies: - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - execa: 7.2.0 - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))': - dependencies: - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.30.1) - '@nuxt/schema': 3.15.0(magicast@0.3.5)(rollup@4.30.1) - execa: 7.2.0 - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/devtools-kit@2.0.0-beta.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))': - dependencies: - '@nuxt/kit': 3.15.3(magicast@0.3.5)(rollup@4.30.1) - '@nuxt/schema': 3.15.2 - execa: 7.2.0 - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/devtools-ui-kit@1.5.1(dkhnd3ahl4toeq7nxzxwcxcznq)': - dependencies: - '@iconify-json/carbon': 1.2.1 - '@iconify-json/logos': 1.2.0 - '@iconify-json/ri': 1.2.0 - '@iconify-json/tabler': 1.2.4 - '@nuxt/devtools': 1.7.0(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@nuxt/devtools-kit': 1.5.1(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - '@unocss/core': 0.62.4 - '@unocss/nuxt': 0.62.4(magicast@0.3.5)(postcss@8.5.1)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(webpack@5.97.1(esbuild@0.23.1)) - '@unocss/preset-attributify': 0.62.4 - '@unocss/preset-icons': 0.62.4 - '@unocss/preset-mini': 0.62.4 - '@unocss/reset': 0.62.4 - '@vueuse/core': 11.1.0(vue@3.5.13(typescript@5.7.3)) - '@vueuse/integrations': 11.1.0(change-case@5.4.4)(focus-trap@7.6.0)(fuse.js@7.0.0)(vue@3.5.13(typescript@5.7.3)) - '@vueuse/nuxt': 11.3.0(magicast@0.3.5)(nuxt@3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0))(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)) - defu: 6.1.4 - focus-trap: 7.6.0 - splitpanes: 3.1.5 - unocss: 0.62.4(@unocss/webpack@0.62.4(rollup@4.30.1)(webpack@5.97.1(esbuild@0.23.1)))(postcss@8.5.1)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - v-lazy-show: 0.2.4(@vue/compiler-core@3.5.13) - transitivePeerDependencies: - - '@unocss/webpack' - - '@vue/compiler-core' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - jwt-decode - - magicast - - nprogress - - nuxt - - postcss - - qrcode - - rollup - - sortablejs - - supports-color - - universal-cookie - - vite - - vue - - webpack - - '@nuxt/devtools-wizard@1.7.0': - dependencies: - consola: 3.3.3 - diff: 7.0.0 - execa: 7.2.0 - global-directory: 4.0.1 - magicast: 0.3.5 - pathe: 1.1.2 - pkg-types: 1.3.0 - prompts: 2.4.2 - rc9: 2.1.2 - semver: 7.6.3 - - '@nuxt/devtools@1.7.0(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/devtools-wizard': 1.7.0 - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.30.1) - '@vue/devtools-core': 7.6.8(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@vue/devtools-kit': 7.6.8 - birpc: 0.2.19 - consola: 3.3.2 - cronstrue: 2.52.0 - destr: 2.0.3 - error-stack-parser-es: 0.1.5 - execa: 7.2.0 - fast-npm-meta: 0.2.2 - flatted: 3.3.2 - get-port-please: 3.1.2 - hookable: 5.5.3 - image-meta: 0.2.1 - is-installed-globally: 1.0.0 - launch-editor: 2.9.1 - local-pkg: 0.5.1 - magicast: 0.3.5 - nypm: 0.4.1 - ohash: 1.1.4 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.2.1 - rc9: 2.1.2 - scule: 1.3.0 - semver: 7.6.3 - simple-git: 3.27.0 - sirv: 3.0.0 - tinyglobby: 0.2.10 - unimport: 3.14.5(rollup@4.30.1) - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.30.1))(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - vite-plugin-vue-inspector: 5.3.1(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - which: 3.0.1 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - rollup - - supports-color - - utf-8-validate - - vue - - '@nuxt/fonts@0.10.3(encoding@0.1.13)(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))': - dependencies: - '@nuxt/devtools-kit': 1.6.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - chalk: 5.3.0 - css-tree: 3.1.0 - defu: 6.1.4 - esbuild: 0.24.0 - fontaine: 0.5.0(encoding@0.1.13) - h3: 1.13.0 - jiti: 2.4.1 - magic-regexp: 0.8.0 - magic-string: 0.30.17 - node-fetch-native: 1.6.4 - ohash: 1.1.4 - pathe: 1.1.2 - sirv: 3.0.0 - tinyglobby: 0.2.10 - ufo: 1.5.4 - unifont: 0.1.6 - unplugin: 2.1.2 - unstorage: 1.13.1(ioredis@5.4.1) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/kv' - - encoding - - idb-keyval - - ioredis - - magicast - - rollup - - supports-color - - uWebSockets.js - - vite - - '@nuxt/icon@1.10.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@iconify/collections': 1.0.508 - '@iconify/types': 2.0.0 - '@iconify/utils': 2.2.1 - '@iconify/vue': 4.3.0(vue@3.5.13(typescript@5.7.3)) - '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - consola: 3.4.0 - local-pkg: 0.5.1 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 1.1.2 - picomatch: 4.0.2 - std-env: 3.8.0 - tinyglobby: 0.2.10 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - vite - - vue - - '@nuxt/image@1.9.0(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(ioredis@5.4.1)(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.30.1) - consola: 3.3.3 - defu: 6.1.4 - h3: 1.13.0 - image-meta: 0.2.1 - ohash: 1.1.4 - pathe: 2.0.0 - std-env: 3.8.0 - ufo: 1.5.4 - optionalDependencies: - ipx: 2.1.0(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(ioredis@5.4.1) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - db0 - - idb-keyval - - ioredis - - magicast - - rollup - - supports-color - - uWebSockets.js - - uploadthing - - '@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/schema': 3.13.2(rollup@4.30.1) - c12: 1.11.2(magicast@0.3.5) - consola: 3.3.3 - defu: 6.1.4 - destr: 2.0.3 - globby: 14.0.2 - hash-sum: 2.0.0 - ignore: 5.3.2 - jiti: 1.21.7 - klona: 2.0.6 - knitwork: 1.1.0 - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.0 - scule: 1.3.0 - semver: 7.6.3 - ufo: 1.5.4 - unctx: 2.4.1 - unimport: 3.14.5(rollup@4.30.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/kit@3.14.1592(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - c12: 2.0.1(magicast@0.3.5) - consola: 3.3.3 - defu: 6.1.4 - destr: 2.0.3 - globby: 14.0.2 - hash-sum: 2.0.0 - ignore: 6.0.2 - jiti: 2.4.2 - klona: 2.0.6 - knitwork: 1.1.0 - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.0 - scule: 1.3.0 - semver: 7.6.3 - ufo: 1.5.4 - unctx: 2.4.1 - unimport: 3.14.5(rollup@4.30.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/schema': 3.15.0(magicast@0.3.5)(rollup@4.30.1) - c12: 2.0.1(magicast@0.3.5) - consola: 3.3.3 - defu: 6.1.4 - destr: 2.0.3 - globby: 14.0.2 - ignore: 7.0.3 - jiti: 2.4.2 - klona: 2.0.6 - knitwork: 1.2.0 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 1.1.2 - pkg-types: 1.3.0 - scule: 1.3.0 - semver: 7.6.3 - ufo: 1.5.4 - unctx: 2.4.1 - unimport: 3.14.5(rollup@4.30.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/kit@3.15.1(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/schema': 3.15.1 - c12: 2.0.1(magicast@0.3.5) - consola: 3.3.3 - defu: 6.1.4 - destr: 2.0.3 - globby: 14.0.2 - ignore: 7.0.3 - jiti: 2.4.2 - klona: 2.0.6 - knitwork: 1.2.0 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 2.0.1 - pkg-types: 1.3.0 - scule: 1.3.0 - semver: 7.6.3 - ufo: 1.5.4 - unctx: 2.4.1 - unimport: 3.14.5(rollup@4.30.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/schema': 3.15.2 - c12: 2.0.1(magicast@0.3.5) - consola: 3.4.0 - defu: 6.1.4 - destr: 2.0.3 - globby: 14.0.2 - ignore: 7.0.3 - jiti: 2.4.2 - klona: 2.0.6 - knitwork: 1.2.0 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 2.0.1 - pkg-types: 1.3.1 - scule: 1.3.0 - semver: 7.6.3 - std-env: 3.8.0 - ufo: 1.5.4 - unctx: 2.4.1 - unimport: 3.14.6(rollup@4.30.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/kit@3.15.3(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/schema': 3.15.3 - c12: 2.0.1(magicast@0.3.5) - consola: 3.4.0 - defu: 6.1.4 - destr: 2.0.3 - globby: 14.0.2 - ignore: 7.0.3 - jiti: 2.4.2 - klona: 2.0.6 - knitwork: 1.2.0 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 2.0.2 - pkg-types: 1.3.1 - scule: 1.3.0 - semver: 7.6.3 - std-env: 3.8.0 - ufo: 1.5.4 - unctx: 2.4.1 - unimport: 4.0.0(rollup@4.30.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/schema@3.13.2(rollup@4.30.1)': - dependencies: - compatx: 0.1.8 - consola: 3.4.0 - defu: 6.1.4 - hookable: 5.5.3 - pathe: 1.1.2 - pkg-types: 1.3.1 - scule: 1.3.0 - std-env: 3.8.0 - ufo: 1.5.4 - uncrypto: 0.1.3 - unimport: 3.14.6(rollup@4.30.1) - untyped: 1.5.2 - transitivePeerDependencies: - - rollup - - supports-color - - '@nuxt/schema@3.14.1592(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - c12: 2.0.1(magicast@0.3.5) - compatx: 0.1.8 - consola: 3.4.0 - defu: 6.1.4 - hookable: 5.5.3 - pathe: 1.1.2 - pkg-types: 1.3.1 - scule: 1.3.0 - std-env: 3.8.0 - ufo: 1.5.4 - uncrypto: 0.1.3 - unimport: 3.14.6(rollup@4.30.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/schema@3.15.0(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - c12: 2.0.1(magicast@0.3.5) - compatx: 0.1.8 - consola: 3.4.0 - defu: 6.1.4 - hookable: 5.5.3 - pathe: 1.1.2 - pkg-types: 1.3.1 - scule: 1.3.0 - std-env: 3.8.0 - ufo: 1.5.4 - uncrypto: 0.1.3 - unimport: 3.14.6(rollup@4.30.1) - untyped: 1.5.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/schema@3.15.1': - dependencies: - consola: 3.4.0 - defu: 6.1.4 - pathe: 2.0.2 - std-env: 3.8.0 - - '@nuxt/schema@3.15.2': - dependencies: - consola: 3.4.0 - defu: 6.1.4 - pathe: 2.0.2 - std-env: 3.8.0 - - '@nuxt/schema@3.15.3': - dependencies: - consola: 3.4.0 - defu: 6.1.4 - pathe: 2.0.2 - std-env: 3.8.0 - - '@nuxt/scripts@0.9.5(gzoawuwqlk67g3jnggeljffw5u)': - dependencies: - '@nuxt/devtools-kit': 1.5.1(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/devtools-ui-kit': 1.5.1(dkhnd3ahl4toeq7nxzxwcxcznq) - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.30.1) - '@stripe/stripe-js': 4.8.0 - '@types/google.maps': 3.58.1 - '@types/vimeo__player': 2.18.3 - '@types/youtube': 0.1.0 - '@unhead/vue': link:packages/vue - '@vueuse/core': 11.1.0(vue@3.5.13(typescript@5.7.3)) - consola: 3.2.3 - defu: 6.1.4 - h3: 1.12.0 - magic-string: 0.30.17 - mlly: 1.7.4 - ofetch: 1.4.0 - ohash: 1.1.4 - pathe: 1.1.2 - pkg-types: 1.2.0 - semver: 7.6.3 - shiki: 1.22.0 - sirv: 3.0.0 - std-env: 3.7.0 - third-party-capital: 2.3.0 - ufo: 1.5.4 - unimport: 3.13.1(rollup@4.30.1) - unplugin: 1.16.0 - unstorage: 1.12.0(ioredis@5.4.1) - valibot: 0.42.1(typescript@5.7.3) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@netlify/blobs' - - '@nuxt/devtools' - - '@planetscale/database' - - '@unocss/webpack' - - '@upstash/redis' - - '@vercel/kv' - - '@vue/compiler-core' - - '@vue/composition-api' - - async-validator - - axios - - change-case - - drauu - - fuse.js - - idb-keyval - - ioredis - - jwt-decode - - magicast - - nprogress - - nuxt - - postcss - - qrcode - - rollup - - sortablejs - - supports-color - - typescript - - uWebSockets.js - - universal-cookie - - vite - - vue - - webpack - - '@nuxt/telemetry@2.6.4(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/kit': 3.15.3(magicast@0.3.5)(rollup@4.30.1) - citty: 0.1.6 - consola: 3.4.0 - destr: 2.0.3 - dotenv: 16.4.7 - git-url-parse: 16.0.0 - is-docker: 3.0.0 - ofetch: 1.4.1 - package-manager-detector: 0.2.8 - parse-git-config: 3.0.0 - pathe: 2.0.2 - rc9: 2.1.2 - std-env: 3.8.0 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxt/ui-pro@1.7.0(change-case@5.4.4)(focus-trap@7.6.0)(magicast@0.3.5)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@iconify-json/vscode-icons': 1.2.10 - '@nuxt/ui': 2.21.0(change-case@5.4.4)(focus-trap@7.6.0)(magicast@0.3.5)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@vueuse/core': 12.4.0(typescript@5.7.3) - defu: 6.1.4 - git-url-parse: 16.0.0 - ofetch: 1.4.1 - parse-git-config: 3.0.0 - pathe: 2.0.1 - pkg-types: 1.3.0 - tailwind-merge: 2.6.0 - vue3-smooth-dnd: 0.0.6(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - async-validator - - axios - - change-case - - drauu - - focus-trap - - idb-keyval - - jwt-decode - - magicast - - nprogress - - qrcode - - rollup - - sortablejs - - supports-color - - ts-node - - typescript - - universal-cookie - - vite - - vue - - '@nuxt/ui@2.21.0(change-case@5.4.4)(focus-trap@7.6.0)(magicast@0.3.5)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.17) - '@headlessui/vue': 1.7.23(vue@3.5.13(typescript@5.7.3)) - '@iconify-json/heroicons': 1.2.2 - '@nuxt/icon': 1.10.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@nuxt/kit': 3.15.1(magicast@0.3.5)(rollup@4.30.1) - '@nuxtjs/color-mode': 3.5.2(magicast@0.3.5)(rollup@4.30.1) - '@nuxtjs/tailwindcss': 6.13.1(magicast@0.3.5)(rollup@4.30.1) - '@popperjs/core': 2.11.8 - '@tailwindcss/aspect-ratio': 0.4.2(tailwindcss@3.4.17) - '@tailwindcss/container-queries': 0.1.1(tailwindcss@3.4.17) - '@tailwindcss/forms': 0.5.10(tailwindcss@3.4.17) - '@tailwindcss/typography': 0.5.16(tailwindcss@3.4.17) - '@vueuse/core': 12.4.0(typescript@5.7.3) - '@vueuse/integrations': 12.4.0(change-case@5.4.4)(focus-trap@7.6.0)(fuse.js@7.0.0)(typescript@5.7.3) - '@vueuse/math': 12.4.0(typescript@5.7.3) - defu: 6.1.4 - fuse.js: 7.0.0 - ohash: 1.1.4 - pathe: 2.0.1 - scule: 1.3.0 - tailwind-merge: 2.6.0 - tailwindcss: 3.4.17 - transitivePeerDependencies: - - async-validator - - axios - - change-case - - drauu - - focus-trap - - idb-keyval - - jwt-decode - - magicast - - nprogress - - qrcode - - rollup - - sortablejs - - supports-color - - ts-node - - typescript - - universal-cookie - - vite - - vue - - '@nuxt/vite-builder@3.15.3(@types/node@22.12.0)(eslint@9.19.0(jiti@2.4.2))(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vue-tsc@2.1.10(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3))(yaml@2.7.0)': - dependencies: - '@nuxt/kit': 3.15.3(magicast@0.3.5)(rollup@4.30.1) - '@rollup/plugin-replace': 6.0.2(rollup@4.30.1) - '@vitejs/plugin-vue': 5.2.1(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@vitejs/plugin-vue-jsx': 4.1.1(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - autoprefixer: 10.4.20(postcss@8.5.1) - consola: 3.4.0 - cssnano: 7.0.6(postcss@8.5.1) - defu: 6.1.4 - esbuild: 0.24.2 - escape-string-regexp: 5.0.0 - externality: 1.0.2 - get-port-please: 3.1.2 - h3: 1.14.0 - jiti: 2.4.2 - knitwork: 1.2.0 - magic-string: 0.30.17 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 2.0.2 - perfect-debounce: 1.0.0 - pkg-types: 1.3.1 - postcss: 8.5.1 - rollup-plugin-visualizer: 5.14.0(rollup@4.30.1) - std-env: 3.8.0 - ufo: 1.5.4 - unenv: 1.10.0 - unplugin: 2.1.2 - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - vite-node: 3.0.4(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - vite-plugin-checker: 0.8.0(eslint@9.19.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3)) - vue: 3.5.13(typescript@5.7.3) - vue-bundle-renderer: 2.1.1 - transitivePeerDependencies: - - '@biomejs/biome' - - '@types/node' - - eslint - - less - - lightningcss - - magicast - - meow - - optionator - - rolldown - - rollup - - sass - - sass-embedded - - stylelint - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - vls - - vti - - vue-tsc - - yaml - - '@nuxtjs/color-mode@3.5.2(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - pathe: 1.1.2 - pkg-types: 1.3.1 - semver: 7.6.3 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxtjs/mdc@0.13.2(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/kit': 3.15.3(magicast@0.3.5)(rollup@4.30.1) - '@shikijs/transformers': 1.29.1 - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@vue/compiler-core': 3.5.13 - consola: 3.4.0 - debug: 4.4.0(supports-color@9.4.0) - defu: 6.1.4 - destr: 2.0.3 - detab: 3.0.2 - github-slugger: 2.0.0 - hast-util-format: 1.1.0 - hast-util-to-mdast: 10.1.2 - hast-util-to-string: 3.0.1 - mdast-util-to-hast: 13.2.0 - micromark-util-sanitize-uri: 2.0.1 - ohash: 1.1.4 - parse5: 7.2.1 - pathe: 2.0.2 - property-information: 6.5.0 - rehype-external-links: 3.0.0 - rehype-minify-whitespace: 6.0.2 - rehype-raw: 7.0.0 - rehype-remark: 10.0.0 - rehype-slug: 6.0.0 - rehype-sort-attribute-values: 5.0.1 - rehype-sort-attributes: 5.0.1 - remark-emoji: 5.0.1 - remark-gfm: 4.0.0 - remark-mdc: 3.5.3 - remark-parse: 11.0.0 - remark-rehype: 11.1.1 - remark-stringify: 11.0.0 - scule: 1.3.0 - shiki: 1.29.1 - ufo: 1.5.4 - unified: 11.0.5 - unist-builder: 4.0.0 - unist-util-visit: 5.0.0 - unwasm: 0.3.9 - vfile: 6.0.3 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - '@nuxtjs/robots@5.2.2(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@nuxt/devtools-kit': 2.0.0-beta.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - consola: 3.4.0 - defu: 6.1.4 - nuxt-site-config: 3.0.6(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - pathe: 2.0.2 - pkg-types: 1.3.1 - sirv: 3.0.0 - std-env: 3.8.0 - ufo: 1.5.4 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - vite - - vue - - '@nuxtjs/seo@2.1.0(h3@1.14.0)(magicast@0.3.5)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - '@nuxtjs/robots': 5.2.2(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@nuxtjs/sitemap': 7.2.3(h3@1.14.0)(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - nuxt-link-checker: 4.1.0(magicast@0.3.5)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - nuxt-og-image: 4.1.2(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - nuxt-schema-org: 4.1.1(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - nuxt-seo-utils: 6.0.8(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - nuxt-site-config: 3.0.6(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - h3 - - magicast - - rollup - - supports-color - - typescript - - vite - - vue - - '@nuxtjs/sitemap@7.2.3(h3@1.14.0)(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@nuxt/devtools-kit': 2.0.0-beta.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - chalk: 5.4.1 - defu: 6.1.4 - h3-compression: 0.3.2(h3@1.14.0) - nuxt-site-config: 3.0.6(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - ofetch: 1.4.1 - pathe: 2.0.2 - pkg-types: 1.3.1 - radix3: 1.1.2 - semver: 7.6.3 - sirv: 3.0.0 - ufo: 1.5.4 - transitivePeerDependencies: - - h3 - - magicast - - rollup - - supports-color - - vite - - vue - - '@nuxtjs/tailwindcss@6.13.1(magicast@0.3.5)(rollup@4.30.1)': - dependencies: - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - autoprefixer: 10.4.20(postcss@8.5.1) - c12: 2.0.1(magicast@0.3.5) - consola: 3.4.0 - defu: 6.1.4 - h3: 1.13.1 - klona: 2.0.6 - pathe: 2.0.1 - postcss: 8.5.1 - postcss-nesting: 13.0.1(postcss@8.5.1) - tailwind-config-viewer: 2.0.4(tailwindcss@3.4.17) - tailwindcss: 3.4.17 - ufo: 1.5.4 - unctx: 2.4.1 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - ts-node - - '@parcel/watcher-android-arm64@2.4.1': - optional: true - - '@parcel/watcher-darwin-arm64@2.4.1': - optional: true + '@parcel/watcher-darwin-arm64@2.4.1': + optional: true '@parcel/watcher-darwin-x64@2.4.1': optional: true @@ -12786,139 +8615,52 @@ snapshots: '@parcel/watcher-linux-arm-glibc@2.4.1': optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.1': - optional: true - - '@parcel/watcher-linux-arm64-musl@2.4.1': - optional: true - - '@parcel/watcher-linux-x64-glibc@2.4.1': - optional: true - - '@parcel/watcher-linux-x64-musl@2.4.1': - optional: true - - '@parcel/watcher-wasm@2.4.1': - dependencies: - is-glob: 4.0.3 - micromatch: 4.0.8 - - '@parcel/watcher-win32-arm64@2.4.1': - optional: true - - '@parcel/watcher-win32-ia32@2.4.1': - optional: true - - '@parcel/watcher-win32-x64@2.4.1': - optional: true - - '@parcel/watcher@2.4.1': - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.1.1 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.1 - '@parcel/watcher-darwin-arm64': 2.4.1 - '@parcel/watcher-darwin-x64': 2.4.1 - '@parcel/watcher-freebsd-x64': 2.4.1 - '@parcel/watcher-linux-arm-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-musl': 2.4.1 - '@parcel/watcher-linux-x64-glibc': 2.4.1 - '@parcel/watcher-linux-x64-musl': 2.4.1 - '@parcel/watcher-win32-arm64': 2.4.1 - '@parcel/watcher-win32-ia32': 2.4.1 - '@parcel/watcher-win32-x64': 2.4.1 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pkgr/core@0.1.1': {} - - '@polka/url@1.0.0-next.28': {} - - '@popperjs/core@2.11.8': {} - - '@redocly/ajv@8.11.2': - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js-replace: 1.0.1 - - '@redocly/config@0.16.0': {} - - '@redocly/openapi-core@1.25.11(encoding@0.1.13)(supports-color@9.4.0)': - dependencies: - '@redocly/ajv': 8.11.2 - '@redocly/config': 0.16.0 - colorette: 1.4.0 - https-proxy-agent: 7.0.6(supports-color@9.4.0) - js-levenshtein: 1.1.6 - js-yaml: 4.1.0 - lodash.isequal: 4.5.0 - minimatch: 5.1.6 - node-fetch: 2.7.0(encoding@0.1.13) - pluralize: 8.0.0 - yaml-ast-parser: 0.0.43 - transitivePeerDependencies: - - encoding - - supports-color - - '@resvg/resvg-js-android-arm-eabi@2.6.2': - optional: true - - '@resvg/resvg-js-android-arm64@2.6.2': - optional: true - - '@resvg/resvg-js-darwin-arm64@2.6.2': - optional: true - - '@resvg/resvg-js-darwin-x64@2.6.2': + '@parcel/watcher-linux-arm64-glibc@2.4.1': optional: true - '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2': + '@parcel/watcher-linux-arm64-musl@2.4.1': optional: true - '@resvg/resvg-js-linux-arm64-gnu@2.6.2': + '@parcel/watcher-linux-x64-glibc@2.4.1': optional: true - '@resvg/resvg-js-linux-arm64-musl@2.6.2': + '@parcel/watcher-linux-x64-musl@2.4.1': optional: true - '@resvg/resvg-js-linux-x64-gnu@2.6.2': + '@parcel/watcher-win32-arm64@2.4.1': optional: true - '@resvg/resvg-js-linux-x64-musl@2.6.2': + '@parcel/watcher-win32-ia32@2.4.1': optional: true - '@resvg/resvg-js-win32-arm64-msvc@2.6.2': + '@parcel/watcher-win32-x64@2.4.1': optional: true - '@resvg/resvg-js-win32-ia32-msvc@2.6.2': + '@parcel/watcher@2.4.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 optional: true - '@resvg/resvg-js-win32-x64-msvc@2.6.2': + '@pkgjs/parseargs@0.11.0': optional: true - '@resvg/resvg-js@2.6.2': - optionalDependencies: - '@resvg/resvg-js-android-arm-eabi': 2.6.2 - '@resvg/resvg-js-android-arm64': 2.6.2 - '@resvg/resvg-js-darwin-arm64': 2.6.2 - '@resvg/resvg-js-darwin-x64': 2.6.2 - '@resvg/resvg-js-linux-arm-gnueabihf': 2.6.2 - '@resvg/resvg-js-linux-arm64-gnu': 2.6.2 - '@resvg/resvg-js-linux-arm64-musl': 2.6.2 - '@resvg/resvg-js-linux-x64-gnu': 2.6.2 - '@resvg/resvg-js-linux-x64-musl': 2.6.2 - '@resvg/resvg-js-win32-arm64-msvc': 2.6.2 - '@resvg/resvg-js-win32-ia32-msvc': 2.6.2 - '@resvg/resvg-js-win32-x64-msvc': 2.6.2 - - '@resvg/resvg-wasm@2.6.2': {} + '@pkgr/core@0.1.1': {} '@rollup/plugin-alias@5.1.1(rollup@4.30.1)': optionalDependencies: @@ -12936,30 +8678,12 @@ snapshots: optionalDependencies: rollup: 4.30.1 - '@rollup/plugin-inject@5.0.5(rollup@4.30.1)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - estree-walker: 2.0.2 - magic-string: 0.30.17 - optionalDependencies: - rollup: 4.30.1 - '@rollup/plugin-json@6.1.0(rollup@4.30.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.30.1) optionalDependencies: rollup: 4.30.1 - '@rollup/plugin-node-resolve@15.3.0(rollup@4.30.1)': - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.30.1 - '@rollup/plugin-node-resolve@16.0.0(rollup@4.30.1)': dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.30.1) @@ -12977,19 +8701,6 @@ snapshots: optionalDependencies: rollup: 4.30.1 - '@rollup/plugin-terser@0.4.4(rollup@4.30.1)': - dependencies: - serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.37.0 - optionalDependencies: - rollup: 4.30.1 - - '@rollup/pluginutils@4.2.1': - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - '@rollup/pluginutils@5.1.4(rollup@4.30.1)': dependencies: '@types/estree': 1.0.6 @@ -13069,80 +8780,6 @@ snapshots: transitivePeerDependencies: - chokidar - '@sec-ant/readable-stream@0.4.1': {} - - '@shikijs/core@1.22.0': - dependencies: - '@shikijs/engine-javascript': 1.22.0 - '@shikijs/engine-oniguruma': 1.22.0 - '@shikijs/types': 1.22.0 - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.4 - - '@shikijs/core@1.29.1': - dependencies: - '@shikijs/engine-javascript': 1.29.1 - '@shikijs/engine-oniguruma': 1.29.1 - '@shikijs/types': 1.29.1 - '@shikijs/vscode-textmate': 10.0.1 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.4 - - '@shikijs/engine-javascript@1.22.0': - dependencies: - '@shikijs/types': 1.22.0 - '@shikijs/vscode-textmate': 9.3.1 - oniguruma-to-js: 0.4.3 - - '@shikijs/engine-javascript@1.29.1': - dependencies: - '@shikijs/types': 1.29.1 - '@shikijs/vscode-textmate': 10.0.1 - oniguruma-to-es: 2.3.0 - - '@shikijs/engine-oniguruma@1.22.0': - dependencies: - '@shikijs/types': 1.22.0 - '@shikijs/vscode-textmate': 9.3.1 - - '@shikijs/engine-oniguruma@1.29.1': - dependencies: - '@shikijs/types': 1.29.1 - '@shikijs/vscode-textmate': 10.0.1 - - '@shikijs/langs@1.29.1': - dependencies: - '@shikijs/types': 1.29.1 - - '@shikijs/themes@1.29.1': - dependencies: - '@shikijs/types': 1.29.1 - - '@shikijs/transformers@1.29.1': - dependencies: - '@shikijs/core': 1.29.1 - '@shikijs/types': 1.29.1 - - '@shikijs/types@1.22.0': - dependencies: - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 - - '@shikijs/types@1.29.1': - dependencies: - '@shikijs/vscode-textmate': 10.0.1 - '@types/hast': 3.0.4 - - '@shikijs/vscode-textmate@10.0.1': {} - - '@shikijs/vscode-textmate@9.3.1': {} - - '@shuding/opentype.js@1.4.0-beta.0': - dependencies: - fflate: 0.7.4 - string.prototype.codepointat: 0.2.1 - '@sigstore/bundle@3.0.0': dependencies: '@sigstore/protobuf-specs': 0.3.3 @@ -13175,17 +8812,10 @@ snapshots: '@sigstore/core': 2.0.0 '@sigstore/protobuf-specs': 0.3.3 - '@sindresorhus/is@4.6.0': {} - '@sindresorhus/merge-streams@2.3.0': {} - '@sindresorhus/merge-streams@4.0.0': {} - - '@socket.io/component-emitter@3.1.2': {} - - '@sqlite.org/sqlite-wasm@3.48.0-build1': {} - - '@stripe/stripe-js@4.8.0': {} + '@socket.io/component-emitter@3.1.2': + optional: true '@stylistic/eslint-plugin@3.0.1(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: @@ -13199,38 +8829,6 @@ snapshots: - supports-color - typescript - '@swc/helpers@0.5.13': - dependencies: - tslib: 2.8.1 - - '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.17)': - dependencies: - tailwindcss: 3.4.17 - - '@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.17)': - dependencies: - tailwindcss: 3.4.17 - - '@tailwindcss/forms@0.5.10(tailwindcss@3.4.17)': - dependencies: - mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.17 - - '@tailwindcss/typography@0.5.16(tailwindcss@3.4.17)': - dependencies: - lodash.castarray: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.17 - - '@tanstack/virtual-core@3.10.8': {} - - '@tanstack/vue-virtual@3.10.8(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@tanstack/virtual-core': 3.10.8 - vue: 3.5.13(typescript@5.7.3) - '@trysound/sax@0.2.0': {} '@tufjs/canonical-json@2.0.0': {} @@ -13337,12 +8935,6 @@ snapshots: '@types/jsonfile': 6.1.4 '@types/node': 22.12.0 - '@types/google.maps@3.58.1': {} - - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - '@types/http-errors@2.0.4': {} '@types/http-proxy@1.17.15': @@ -13379,8 +8971,6 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@types/parse-path@7.0.3': {} - '@types/qs@6.9.18': {} '@types/range-parser@1.2.7': {} @@ -13410,20 +9000,15 @@ snapshots: '@types/tough-cookie@4.0.5': {} - '@types/unist@2.0.11': {} - '@types/unist@3.0.3': {} - '@types/vimeo__player@2.18.3': {} - - '@types/web-bluetooth@0.0.20': {} + '@types/web-bluetooth@0.0.20': + optional: true '@types/ws@8.5.14': dependencies: '@types/node': 22.12.0 - '@types/youtube@0.1.0': {} - '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -13443,293 +9028,64 @@ snapshots: '@typescript-eslint/parser@8.21.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 - debug: 4.4.0(supports-color@9.4.0) - eslint: 9.19.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.21.0': - dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 - - '@typescript-eslint/type-utils@8.21.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - debug: 4.4.0(supports-color@9.4.0) - eslint: 9.19.0(jiti@2.4.2) - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.21.0': {} - - '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': - dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 - debug: 4.4.0(supports-color@9.4.0) - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.21.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - eslint: 9.19.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.21.0': - dependencies: - '@typescript-eslint/types': 8.21.0 - eslint-visitor-keys: 4.2.0 - - '@ungap/structured-clone@1.2.0': {} - - '@unocss/astro@0.62.4(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))': - dependencies: - '@unocss/core': 0.62.4 - '@unocss/reset': 0.62.4 - '@unocss/vite': 0.62.4(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - optionalDependencies: - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - transitivePeerDependencies: - - rollup - - supports-color - - '@unocss/cli@0.62.4(rollup@4.30.1)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - '@unocss/config': 0.62.4 - '@unocss/core': 0.62.4 - '@unocss/preset-uno': 0.62.4 - cac: 6.7.14 - chokidar: 3.6.0 - colorette: 2.0.20 - consola: 3.4.0 - magic-string: 0.30.17 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - tinyglobby: 0.2.10 - transitivePeerDependencies: - - rollup - - supports-color - - '@unocss/config@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - unconfig: 0.5.5 - transitivePeerDependencies: - - supports-color - - '@unocss/core@0.62.4': {} - - '@unocss/core@65.4.2': {} - - '@unocss/extractor-arbitrary-variants@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - - '@unocss/extractor-arbitrary-variants@65.4.2': - dependencies: - '@unocss/core': 65.4.2 - - '@unocss/inspector@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - '@unocss/rule-utils': 0.62.4 - gzip-size: 6.0.0 - sirv: 2.0.4 - - '@unocss/nuxt@0.62.4(magicast@0.3.5)(postcss@8.5.1)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(webpack@5.97.1(esbuild@0.23.1))': - dependencies: - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - '@unocss/config': 0.62.4 - '@unocss/core': 0.62.4 - '@unocss/preset-attributify': 0.62.4 - '@unocss/preset-icons': 0.62.4 - '@unocss/preset-tagify': 0.62.4 - '@unocss/preset-typography': 0.62.4 - '@unocss/preset-uno': 0.62.4 - '@unocss/preset-web-fonts': 0.62.4 - '@unocss/preset-wind': 0.62.4 - '@unocss/reset': 0.62.4 - '@unocss/vite': 0.62.4(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@unocss/webpack': 0.62.4(rollup@4.30.1)(webpack@5.97.1(esbuild@0.23.1)) - unocss: 0.62.4(@unocss/webpack@0.62.4(rollup@4.30.1)(webpack@5.97.1(esbuild@0.23.1)))(postcss@8.5.1)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - transitivePeerDependencies: - - magicast - - postcss - - rollup - - supports-color - - vite - - webpack - - '@unocss/postcss@0.62.4(postcss@8.5.1)': - dependencies: - '@unocss/config': 0.62.4 - '@unocss/core': 0.62.4 - '@unocss/rule-utils': 0.62.4 - css-tree: 2.3.1 - postcss: 8.5.1 - tinyglobby: 0.2.10 - transitivePeerDependencies: - - supports-color - - '@unocss/preset-attributify@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - - '@unocss/preset-icons@0.62.4': - dependencies: - '@iconify/utils': 2.1.33 - '@unocss/core': 0.62.4 - ofetch: 1.4.1 - transitivePeerDependencies: - - supports-color - - '@unocss/preset-mini@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - '@unocss/extractor-arbitrary-variants': 0.62.4 - '@unocss/rule-utils': 0.62.4 - - '@unocss/preset-mini@65.4.2': - dependencies: - '@unocss/core': 65.4.2 - '@unocss/extractor-arbitrary-variants': 65.4.2 - '@unocss/rule-utils': 65.4.2 - - '@unocss/preset-tagify@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - - '@unocss/preset-typography@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - '@unocss/preset-mini': 0.62.4 - - '@unocss/preset-uno@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - '@unocss/preset-mini': 0.62.4 - '@unocss/preset-wind': 0.62.4 - '@unocss/rule-utils': 0.62.4 - - '@unocss/preset-web-fonts@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - ofetch: 1.4.1 - - '@unocss/preset-wind@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - '@unocss/preset-mini': 0.62.4 - '@unocss/rule-utils': 0.62.4 - - '@unocss/preset-wind@65.4.2': - dependencies: - '@unocss/core': 65.4.2 - '@unocss/preset-mini': 65.4.2 - '@unocss/rule-utils': 65.4.2 - - '@unocss/reset@0.62.4': {} - - '@unocss/rule-utils@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - magic-string: 0.30.17 - - '@unocss/rule-utils@65.4.2': - dependencies: - '@unocss/core': 65.4.2 - magic-string: 0.30.17 - - '@unocss/transformer-attributify-jsx@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - - '@unocss/transformer-compile-class@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - - '@unocss/transformer-directives@0.62.4': - dependencies: - '@unocss/core': 0.62.4 - '@unocss/rule-utils': 0.62.4 - css-tree: 2.3.1 + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.21.0 + debug: 4.4.0 + eslint: 9.19.0(jiti@2.4.2) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color - '@unocss/transformer-variant-group@0.62.4': + '@typescript-eslint/scope-manager@8.21.0': dependencies: - '@unocss/core': 0.62.4 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 - '@unocss/vite@0.62.4(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))': + '@typescript-eslint/type-utils@8.21.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - '@unocss/config': 0.62.4 - '@unocss/core': 0.62.4 - '@unocss/inspector': 0.62.4 - chokidar: 3.6.0 - magic-string: 0.30.17 - tinyglobby: 0.2.10 - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.21.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) + debug: 4.4.0 + eslint: 9.19.0(jiti@2.4.2) + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - - rollup - supports-color - '@unocss/webpack@0.62.4(rollup@4.30.1)(webpack@5.97.1(esbuild@0.23.1))': + '@typescript-eslint/types@8.21.0': {} + + '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': dependencies: - '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - '@unocss/config': 0.62.4 - '@unocss/core': 0.62.4 - chokidar: 3.6.0 - magic-string: 0.30.17 - tinyglobby: 0.2.10 - unplugin: 1.16.1 - webpack: 5.97.1(esbuild@0.23.1) - webpack-sources: 3.2.3 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 transitivePeerDependencies: - - rollup - supports-color - '@vercel/nft@0.27.6(encoding@0.1.13)': + '@typescript-eslint/utils@8.21.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3)': dependencies: - '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) - '@rollup/pluginutils': 4.2.1 - acorn: 8.14.0 - acorn-import-attributes: 1.9.5(acorn@8.14.0) - async-sema: 3.1.1 - bindings: 1.5.0 - estree-walker: 2.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - node-gyp-build: 4.8.2 - resolve-from: 5.0.0 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + eslint: 9.19.0(jiti@2.4.2) + typescript: 5.7.3 transitivePeerDependencies: - - encoding - supports-color + '@typescript-eslint/visitor-keys@8.21.0': + dependencies: + '@typescript-eslint/types': 8.21.0 + eslint-visitor-keys: 4.2.0 + '@vitejs/plugin-basic-ssl@1.2.0(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.1)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))': dependencies: vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.1)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) @@ -13811,25 +9167,17 @@ snapshots: '@volar/language-core@2.4.11': dependencies: '@volar/source-map': 2.4.11 + optional: true - '@volar/source-map@2.4.11': {} + '@volar/source-map@2.4.11': + optional: true '@volar/typescript@2.4.11': dependencies: '@volar/language-core': 2.4.11 path-browserify: 1.0.1 vscode-uri: 3.0.8 - - '@vue-macros/common@1.16.1(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@vue/compiler-sfc': 3.5.13 - ast-kit: 1.4.0 - local-pkg: 1.0.0 - magic-string-ast: 0.7.0 - pathe: 2.0.2 - picomatch: 4.0.2 - optionalDependencies: - vue: 3.5.13(typescript@5.7.3) + optional: true '@vue/babel-helper-vue-transform-on@1.2.5': {} @@ -13895,35 +9243,10 @@ snapshots: dependencies: de-indent: 1.0.2 he: 1.2.0 + optional: true '@vue/devtools-api@6.6.4': {} - '@vue/devtools-core@7.6.8(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@vue/devtools-kit': 7.6.8 - '@vue/devtools-shared': 7.6.8 - mitt: 3.0.1 - nanoid: 5.0.9 - pathe: 1.1.2 - vite-hot-client: 0.2.4(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - vite - - '@vue/devtools-kit@7.6.8': - dependencies: - '@vue/devtools-shared': 7.6.8 - birpc: 0.2.19 - hookable: 5.5.3 - mitt: 3.0.1 - perfect-debounce: 1.0.0 - speakingurl: 14.0.1 - superjson: 2.2.1 - - '@vue/devtools-shared@7.6.8': - dependencies: - rfdc: 1.4.1 - '@vue/language-core@2.1.10(typescript@5.7.3)': dependencies: '@volar/language-core': 2.4.11 @@ -13938,19 +9261,6 @@ snapshots: typescript: 5.7.3 optional: true - '@vue/language-core@2.2.0(typescript@5.7.3)': - dependencies: - '@volar/language-core': 2.4.11 - '@vue/compiler-dom': 3.5.13 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.13 - alien-signals: 0.4.14 - minimatch: 9.0.5 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - optionalDependencies: - typescript: 5.7.3 - '@vue/reactivity@3.5.13': dependencies: '@vue/shared': 3.5.13 @@ -13975,45 +9285,6 @@ snapshots: '@vue/shared@3.5.13': {} - '@vueuse/core@10.11.1(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 10.11.1 - '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.7.3)) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/core@11.1.0(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 11.1.0 - '@vueuse/shared': 11.1.0(vue@3.5.13(typescript@5.7.3)) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/core@11.3.0(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 11.3.0 - '@vueuse/shared': 11.3.0(vue@3.5.13(typescript@5.7.3)) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/core@12.4.0(typescript@5.7.3)': - dependencies: - '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 12.4.0 - '@vueuse/shared': 12.4.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - typescript - '@vueuse/core@12.5.0(typescript@5.7.3)': dependencies: '@types/web-bluetooth': 0.0.20 @@ -14022,125 +9293,17 @@ snapshots: vue: 3.5.13(typescript@5.7.3) transitivePeerDependencies: - typescript + optional: true - '@vueuse/integrations@11.1.0(change-case@5.4.4)(focus-trap@7.6.0)(fuse.js@7.0.0)(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@vueuse/core': 11.1.0(vue@3.5.13(typescript@5.7.3)) - '@vueuse/shared': 11.1.0(vue@3.5.13(typescript@5.7.3)) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - optionalDependencies: - change-case: 5.4.4 - focus-trap: 7.6.0 - fuse.js: 7.0.0 - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/integrations@12.4.0(change-case@5.4.4)(focus-trap@7.6.0)(fuse.js@7.0.0)(typescript@5.7.3)': - dependencies: - '@vueuse/core': 12.4.0(typescript@5.7.3) - '@vueuse/shared': 12.4.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - optionalDependencies: - change-case: 5.4.4 - focus-trap: 7.6.0 - fuse.js: 7.0.0 - transitivePeerDependencies: - - typescript - - '@vueuse/math@12.4.0(typescript@5.7.3)': - dependencies: - '@vueuse/shared': 12.4.0(typescript@5.7.3) - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - typescript - - '@vueuse/metadata@10.11.1': {} - - '@vueuse/metadata@11.1.0': {} - - '@vueuse/metadata@11.3.0': {} - - '@vueuse/metadata@12.4.0': {} - - '@vueuse/metadata@12.5.0': {} - - '@vueuse/nuxt@10.11.1(magicast@0.3.5)(nuxt@3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0))(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.3)) - '@vueuse/metadata': 10.11.1 - local-pkg: 0.5.1 - nuxt: 3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - magicast - - rollup - - supports-color - - vue - - '@vueuse/nuxt@11.3.0(magicast@0.3.5)(nuxt@3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0))(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3))': - dependencies: - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - '@vueuse/core': 11.3.0(vue@3.5.13(typescript@5.7.3)) - '@vueuse/metadata': 11.3.0 - local-pkg: 0.5.1 - nuxt: 3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0) - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - magicast - - rollup - - supports-color - - vue - - '@vueuse/nuxt@12.5.0(magicast@0.3.5)(nuxt@3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0))(rollup@4.30.1)(typescript@5.7.3)': - dependencies: - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - '@vueuse/core': 12.5.0(typescript@5.7.3) - '@vueuse/metadata': 12.5.0 - local-pkg: 1.0.0 - nuxt: 3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0) - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - typescript - - '@vueuse/shared@10.11.1(vue@3.5.13(typescript@5.7.3))': - dependencies: - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/shared@11.1.0(vue@3.5.13(typescript@5.7.3))': - dependencies: - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/shared@11.3.0(vue@3.5.13(typescript@5.7.3))': - dependencies: - vue-demi: 0.14.10(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - vue - - '@vueuse/shared@12.4.0(typescript@5.7.3)': - dependencies: - vue: 3.5.13(typescript@5.7.3) - transitivePeerDependencies: - - typescript + '@vueuse/metadata@12.5.0': + optional: true '@vueuse/shared@12.5.0(typescript@5.7.3)': dependencies: vue: 3.5.13(typescript@5.7.3) transitivePeerDependencies: - typescript + optional: true '@webassemblyjs/ast@1.14.1': dependencies: @@ -14224,23 +9387,13 @@ snapshots: '@yarnpkg/lockfile@1.1.0': {} - abbrev@1.1.1: {} - abbrev@3.0.0: {} - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - acorn-jsx@5.3.2(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -14258,15 +9411,9 @@ snapshots: loader-utils: 2.0.4 regex-parser: 2.3.0 - agent-base@6.0.2: - dependencies: - debug: 4.4.0(supports-color@9.4.0) - transitivePeerDependencies: - - supports-color - agent-base@7.1.1: dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -14306,8 +9453,6 @@ snapshots: alien-signals@0.2.0: optional: true - alien-signals@0.4.14: {} - ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -14330,43 +9475,18 @@ snapshots: ansi-styles@6.2.1: {} - any-promise@1.3.0: {} + any-promise@1.3.0: + optional: true anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - aproba@2.0.0: {} - - archiver-utils@5.0.2: - dependencies: - glob: 10.4.5 - graceful-fs: 4.2.11 - is-stream: 2.0.1 - lazystream: 1.0.1 - lodash: 4.17.21 - normalize-path: 3.0.0 - readable-stream: 4.5.2 - - archiver@7.0.1: - dependencies: - archiver-utils: 5.0.2 - async: 3.2.6 - buffer-crc32: 1.0.0 - readable-stream: 4.5.2 - readdir-glob: 1.1.3 - tar-stream: 3.1.7 - zip-stream: 6.0.1 - are-docs-informative@0.0.2: {} - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - - arg@5.0.2: {} + arg@5.0.2: + optional: true argparse@2.0.1: {} @@ -14379,50 +9499,18 @@ snapshots: '@babel/parser': 7.26.2 pathe: 1.1.2 - ast-kit@1.4.0: - dependencies: - '@babel/parser': 7.26.7 - pathe: 2.0.2 - - ast-walker-scope@0.6.2: - dependencies: - '@babel/parser': 7.26.7 - ast-kit: 1.3.2 - - async-sema@3.1.1: {} - - async@2.6.4: - dependencies: - lodash: 4.17.21 - - async@3.2.6: {} - - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - - autoprefixer@10.4.20(postcss@8.4.49): - dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001687 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.4.49 - postcss-value-parser: 4.2.0 + asynckit@0.4.0: {} - autoprefixer@10.4.20(postcss@8.5.1): + autoprefixer@10.4.20(postcss@8.4.49): dependencies: browserslist: 4.24.2 caniuse-lite: 1.0.30001687 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.1 + postcss: 8.4.49 postcss-value-parser: 4.2.0 - b4a@1.6.7: {} - babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.97.1(esbuild@0.24.2)): dependencies: '@babel/core': 7.26.0 @@ -14454,36 +9542,8 @@ snapshots: transitivePeerDependencies: - supports-color - bail@2.0.2: {} - balanced-match@1.0.2: {} - bare-events@2.5.0: - optional: true - - bare-fs@2.3.5: - dependencies: - bare-events: 2.5.0 - bare-path: 2.1.3 - bare-stream: 2.3.0 - optional: true - - bare-os@2.4.4: - optional: true - - bare-path@2.1.3: - dependencies: - bare-os: 2.4.4 - optional: true - - bare-stream@2.3.0: - dependencies: - b4a: 1.6.7 - streamx: 2.20.1 - optional: true - - base64-js@0.0.8: {} - base64-js@1.5.1: {} base64id@2.0.0: @@ -14502,29 +9562,16 @@ snapshots: postcss: 8.5.1 postcss-media-query-parser: 0.2.3 - better-sqlite3@11.8.1: - dependencies: - bindings: 1.5.0 - prebuild-install: 7.1.2 - big.js@5.2.2: {} binary-extensions@2.3.0: {} - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - - birpc@0.2.19: {} - bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - blob-to-buffer@1.2.9: {} - body-parser@1.20.3: dependencies: bytes: 3.1.2 @@ -14562,10 +9609,6 @@ snapshots: dependencies: fill-range: 7.1.1 - brotli@1.3.3: - dependencies: - base64-js: 1.5.1 - browserslist@4.24.2: dependencies: caniuse-lite: 1.0.30001687 @@ -14573,8 +9616,6 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) - buffer-crc32@1.0.0: {} - buffer-from@1.1.2: {} buffer@5.7.1: @@ -14582,11 +9623,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - builtin-modules@3.3.0: {} bumpp@10.0.1(magicast@0.3.5): @@ -14608,30 +9644,8 @@ snapshots: dependencies: run-applescript: 7.0.0 - bundle-require@5.0.0(esbuild@0.23.1): - dependencies: - esbuild: 0.23.1 - load-tsconfig: 0.2.5 - bytes@3.1.2: {} - c12@1.11.2(magicast@0.3.5): - dependencies: - chokidar: 3.6.0 - confbox: 0.1.8 - defu: 6.1.4 - dotenv: 16.4.7 - giget: 1.2.3 - jiti: 1.21.7 - mlly: 1.7.4 - ohash: 1.1.4 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.3.1 - rc9: 2.1.2 - optionalDependencies: - magicast: 0.3.5 - c12@2.0.1(magicast@0.3.5): dependencies: chokidar: 4.0.3 @@ -14666,11 +9680,6 @@ snapshots: tar: 7.4.3 unique-filename: 4.0.0 - cache-content-type@1.0.1: - dependencies: - mime-types: 2.1.35 - ylru: 1.4.0 - call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 @@ -14693,9 +9702,8 @@ snapshots: callsites@3.1.0: {} - camelcase-css@2.0.1: {} - - camelize@1.0.1: {} + camelcase-css@2.0.1: + optional: true caniuse-api@3.0.0: dependencies: @@ -14721,49 +9729,12 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} - - chalk@5.4.1: {} - - change-case@5.4.4: {} - - char-regex@1.0.2: {} - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - character-entities@2.0.2: {} - character-reference-invalid@2.0.1: {} - chardet@0.7.0: {} check-error@2.1.1: {} - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - - cheerio@1.0.0: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - encoding-sniffer: 0.2.0 - htmlparser2: 9.1.0 - parse5: 7.2.1 - parse5-htmlparser2-tree-adapter: 7.0.0 - parse5-parser-stream: 7.1.2 - undici: 6.19.8 - whatwg-mimetype: 4.0.0 - chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -14780,21 +9751,10 @@ snapshots: dependencies: readdirp: 4.0.2 - chownr@1.1.4: {} - chownr@2.0.0: {} chownr@3.0.0: {} - chrome-launcher@1.1.2: - dependencies: - '@types/node': 22.12.0 - escape-string-regexp: 4.0.0 - is-wsl: 2.2.0 - lighthouse-logger: 2.0.1 - transitivePeerDependencies: - - supports-color - chrome-trace-event@1.0.4: {} ci-info@4.0.0: {} @@ -14824,12 +9784,6 @@ snapshots: cli-width@4.1.0: {} - clipboardy@4.0.0: - dependencies: - execa: 8.0.1 - is-wsl: 3.1.0 - is64bit: 2.0.0 - cliui@7.0.4: dependencies: string-width: 4.2.3 @@ -14851,72 +9805,35 @@ snapshots: clone@1.0.4: {} - clone@2.1.2: {} - - cluster-key-slot@1.1.2: {} - - co@4.6.0: {} - color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - optional: true - - color-support@1.1.3: {} - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - optional: true - colord@2.9.3: {} - colorette@1.4.0: {} - colorette@2.0.20: {} combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - comma-separated-tokens@2.0.3: {} - commander@13.1.0: {} commander@2.20.3: {} - commander@4.1.1: {} - - commander@6.2.1: {} + commander@4.1.1: + optional: true commander@7.2.0: {} - commander@8.3.0: {} - comment-parser@1.4.1: {} common-path-prefix@3.0.0: {} commondir@1.0.1: {} - compatx@0.1.8: {} - - compress-commons@6.0.2: - dependencies: - crc-32: 1.2.2 - crc32-stream: 6.0.0 - is-stream: 2.0.1 - normalize-path: 3.0.0 - readable-stream: 4.5.2 - compressible@2.0.18: dependencies: mime-db: 1.53.0 @@ -14935,8 +9852,6 @@ snapshots: concat-map@0.0.1: {} - confbox@0.1.7: {} - confbox@0.1.8: {} connect-history-api-fallback@2.0.0: {} @@ -14951,16 +9866,10 @@ snapshots: - supports-color optional: true - consola@3.2.3: {} - - consola@3.3.2: {} - consola@3.3.3: {} consola@3.4.0: {} - console-control-strings@1.1.0: {} - content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -14971,8 +9880,6 @@ snapshots: convert-source-map@2.0.0: {} - cookie-es@1.2.2: {} - cookie-signature@1.0.6: {} cookie@0.7.1: {} @@ -14982,19 +9889,10 @@ snapshots: cookie@1.0.2: {} - cookies@0.9.1: - dependencies: - depd: 2.0.0 - keygrip: 1.1.0 - copy-anything@2.0.6: dependencies: is-what: 3.14.1 - copy-anything@3.0.5: - dependencies: - is-what: 4.1.16 - copy-webpack-plugin@12.0.2(webpack@5.97.1(esbuild@0.24.2)): dependencies: fast-glob: 3.3.3 @@ -15026,55 +9924,16 @@ snapshots: optionalDependencies: typescript: 5.7.3 - crc-32@1.2.2: {} - - crc32-stream@6.0.0: - dependencies: - crc-32: 1.2.2 - readable-stream: 4.5.2 - - croner@9.0.0: {} - - cronstrue@2.52.0: {} - - cross-fetch@3.1.8(encoding@0.1.13): - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crossws@0.2.4: {} - - crossws@0.3.1: - dependencies: - uncrypto: 0.1.3 - - crossws@0.3.3: - dependencies: - uncrypto: 0.1.3 - - css-background-parser@0.1.0: {} - - css-box-shadow@1.0.0-3: {} - - css-color-keywords@1.0.0: {} - css-declaration-sorter@7.2.0(postcss@8.4.49): dependencies: postcss: 8.4.49 - css-declaration-sorter@7.2.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - - css-gradient-parser@0.0.16: {} - css-loader@7.1.2(webpack@5.97.1(esbuild@0.24.2)): dependencies: icss-utils: 5.1.0(postcss@8.5.1) @@ -15096,12 +9955,6 @@ snapshots: domutils: 3.1.0 nth-check: 2.1.1 - css-to-react-native@3.2.0: - dependencies: - camelize: 1.0.1 - css-color-keywords: 1.0.0 - postcss-value-parser: 4.2.0 - css-tree@2.2.1: dependencies: mdn-data: 2.0.28 @@ -15112,18 +9965,10 @@ snapshots: mdn-data: 2.0.30 source-map-js: 1.2.1 - css-tree@3.1.0: - dependencies: - mdn-data: 2.12.2 - source-map-js: 1.2.1 - css-what@6.1.0: {} cssesc@3.0.0: {} - cssfilter@0.0.10: - optional: true - cssnano-preset-default@7.0.6(postcss@8.4.49): dependencies: browserslist: 4.24.2 @@ -15158,60 +10003,16 @@ snapshots: postcss-svgo: 7.0.1(postcss@8.4.49) postcss-unique-selectors: 7.0.3(postcss@8.4.49) - cssnano-preset-default@7.0.6(postcss@8.5.1): - dependencies: - browserslist: 4.24.2 - css-declaration-sorter: 7.2.0(postcss@8.5.1) - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-calc: 10.0.2(postcss@8.5.1) - postcss-colormin: 7.0.2(postcss@8.5.1) - postcss-convert-values: 7.0.4(postcss@8.5.1) - postcss-discard-comments: 7.0.3(postcss@8.5.1) - postcss-discard-duplicates: 7.0.1(postcss@8.5.1) - postcss-discard-empty: 7.0.0(postcss@8.5.1) - postcss-discard-overridden: 7.0.0(postcss@8.5.1) - postcss-merge-longhand: 7.0.4(postcss@8.5.1) - postcss-merge-rules: 7.0.4(postcss@8.5.1) - postcss-minify-font-values: 7.0.0(postcss@8.5.1) - postcss-minify-gradients: 7.0.0(postcss@8.5.1) - postcss-minify-params: 7.0.2(postcss@8.5.1) - postcss-minify-selectors: 7.0.4(postcss@8.5.1) - postcss-normalize-charset: 7.0.0(postcss@8.5.1) - postcss-normalize-display-values: 7.0.0(postcss@8.5.1) - postcss-normalize-positions: 7.0.0(postcss@8.5.1) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.1) - postcss-normalize-string: 7.0.0(postcss@8.5.1) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.1) - postcss-normalize-unicode: 7.0.2(postcss@8.5.1) - postcss-normalize-url: 7.0.0(postcss@8.5.1) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.1) - postcss-ordered-values: 7.0.1(postcss@8.5.1) - postcss-reduce-initial: 7.0.2(postcss@8.5.1) - postcss-reduce-transforms: 7.0.0(postcss@8.5.1) - postcss-svgo: 7.0.1(postcss@8.5.1) - postcss-unique-selectors: 7.0.3(postcss@8.5.1) - cssnano-utils@5.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 - cssnano-utils@5.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - cssnano@7.0.6(postcss@8.4.49): dependencies: cssnano-preset-default: 7.0.6(postcss@8.4.49) lilconfig: 3.1.3 postcss: 8.4.49 - cssnano@7.0.6(postcss@8.5.1): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.1) - lilconfig: 3.1.3 - postcss: 8.5.1 - csso@5.0.5: dependencies: css-tree: 2.2.1 @@ -15226,8 +10027,6 @@ snapshots: custom-event@1.0.1: optional: true - data-uri-to-buffer@4.0.1: {} - data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 @@ -15236,12 +10035,8 @@ snapshots: date-format@4.0.14: optional: true - db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1): - optionalDependencies: - '@libsql/client': 0.14.0 - better-sqlite3: 11.8.1 - - de-indent@1.0.2: {} + de-indent@1.0.2: + optional: true debug@2.6.9: dependencies: @@ -15254,12 +10049,11 @@ snapshots: debug@4.3.7: dependencies: ms: 2.1.3 + optional: true - debug@4.4.0(supports-color@9.4.0): + debug@4.4.0: dependencies: ms: 2.1.3 - optionalDependencies: - supports-color: 9.4.0 decimal.js@10.4.3: {} @@ -15267,16 +10061,8 @@ snapshots: dependencies: character-entities: 2.0.2 - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - deep-eql@5.0.2: {} - deep-equal@1.0.1: {} - - deep-extend@0.6.0: {} - deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -15298,18 +10084,12 @@ snapshots: es-errors: 1.3.0 gopd: 1.0.1 - define-lazy-prop@2.0.0: {} - define-lazy-prop@3.0.0: {} defu@6.1.4: {} delayed-stream@1.0.0: {} - delegates@1.0.0: {} - - denque@2.1.0: {} - depd@1.1.2: {} depd@2.0.0: {} @@ -15322,13 +10102,11 @@ snapshots: destroy@1.2.0: {} - detab@3.0.2: {} - - detect-libc@1.0.3: {} - - detect-libc@2.0.2: {} + detect-libc@1.0.3: + optional: true - detect-libc@2.0.3: {} + detect-libc@2.0.3: + optional: true detect-node@2.1.0: {} @@ -15338,16 +10116,14 @@ snapshots: dependencies: dequal: 2.0.3 - dfa@1.2.0: {} - di@0.0.1: optional: true - didyoumean@1.2.2: {} - - diff@7.0.0: {} + didyoumean@1.2.2: + optional: true - dlv@1.1.3: {} + dlv@1.1.3: + optional: true dns-packet@5.6.1: dependencies: @@ -15383,10 +10159,6 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 - dot-prop@9.0.0: - dependencies: - type-fest: 4.26.1 - dotenv@16.4.7: {} dunder-proto@1.0.1: @@ -15396,59 +10168,31 @@ snapshots: gopd: 1.2.0 optional: true - duplexer@0.1.2: {} - eastasianwidth@0.2.0: {} ee-first@1.1.1: {} electron-to-chromium@1.5.72: {} - emoji-regex-xs@1.0.0: {} - emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} - emojilib@2.4.0: {} - emojis-list@3.0.0: {} - emoticon@4.1.0: {} - encodeurl@1.0.2: {} encodeurl@2.0.0: {} - encoding-sniffer@0.2.0: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding: 3.1.1 - encoding@0.1.13: dependencies: iconv-lite: 0.6.3 optional: true - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - - engine.io-client@6.6.1: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - engine.io-parser: 5.2.3 - ws: 8.17.1 - xmlhttprequest-ssl: 2.1.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - engine.io-parser@5.2.3: {} + engine.io-parser@5.2.3: + optional: true engine.io@6.6.4: dependencies: @@ -15497,10 +10241,6 @@ snapshots: dependencies: is-arrayish: 0.2.1 - error-stack-parser-es@0.1.5: {} - - errx@0.1.0: {} - es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 @@ -15545,33 +10285,7 @@ snapshots: '@esbuild/win32-arm64': 0.23.1 '@esbuild/win32-ia32': 0.23.1 '@esbuild/win32-x64': 0.23.1 - - esbuild@0.24.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.0 - '@esbuild/android-arm': 0.24.0 - '@esbuild/android-arm64': 0.24.0 - '@esbuild/android-x64': 0.24.0 - '@esbuild/darwin-arm64': 0.24.0 - '@esbuild/darwin-x64': 0.24.0 - '@esbuild/freebsd-arm64': 0.24.0 - '@esbuild/freebsd-x64': 0.24.0 - '@esbuild/linux-arm': 0.24.0 - '@esbuild/linux-arm64': 0.24.0 - '@esbuild/linux-ia32': 0.24.0 - '@esbuild/linux-loong64': 0.24.0 - '@esbuild/linux-mips64el': 0.24.0 - '@esbuild/linux-ppc64': 0.24.0 - '@esbuild/linux-riscv64': 0.24.0 - '@esbuild/linux-s390x': 0.24.0 - '@esbuild/linux-x64': 0.24.0 - '@esbuild/netbsd-x64': 0.24.0 - '@esbuild/openbsd-arm64': 0.24.0 - '@esbuild/openbsd-x64': 0.24.0 - '@esbuild/sunos-x64': 0.24.0 - '@esbuild/win32-arm64': 0.24.0 - '@esbuild/win32-ia32': 0.24.0 - '@esbuild/win32-x64': 0.24.0 + optional: true esbuild@0.24.2: optionalDependencies: @@ -15670,7 +10384,7 @@ snapshots: '@types/doctrine': 0.0.9 '@typescript-eslint/scope-manager': 8.21.0 '@typescript-eslint/utils': 8.21.0(eslint@9.19.0(jiti@2.4.2))(typescript@5.7.3) - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 doctrine: 3.0.0 enhanced-resolve: 5.17.1 eslint: 9.19.0(jiti@2.4.2) @@ -15690,7 +10404,7 @@ snapshots: '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 escape-string-regexp: 4.0.0 eslint: 9.19.0(jiti@2.4.2) espree: 10.3.0 @@ -15753,7 +10467,7 @@ snapshots: eslint-plugin-toml@0.12.0(eslint@9.19.0(jiti@2.4.2)): dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 eslint: 9.19.0(jiti@2.4.2) eslint-compat-utils: 0.6.3(eslint@9.19.0(jiti@2.4.2)) lodash: 4.17.21 @@ -15803,7 +10517,7 @@ snapshots: eslint-plugin-yml@1.16.0(eslint@9.19.0(jiti@2.4.2)): dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 eslint: 9.19.0(jiti@2.4.2) eslint-compat-utils: 0.6.3(eslint@9.19.0(jiti@2.4.2)) lodash: 4.17.21 @@ -15853,7 +10567,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 escape-string-regexp: 4.0.0 eslint-scope: 8.2.0 eslint-visitor-keys: 4.2.0 @@ -15911,26 +10625,12 @@ snapshots: etag@1.8.1: {} - event-target-shim@5.0.1: {} - eventemitter3@4.0.7: {} eventemitter3@5.0.1: {} events@3.3.0: {} - execa@7.2.0: - dependencies: - cross-spawn: 7.0.6 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -15943,23 +10643,6 @@ snapshots: signal-exit: 4.1.0 strip-final-newline: 3.0.0 - execa@9.5.2: - dependencies: - '@sindresorhus/merge-streams': 4.0.0 - cross-spawn: 7.0.6 - figures: 6.1.0 - get-stream: 9.0.1 - human-signals: 8.0.0 - is-plain-obj: 4.1.0 - is-stream: 4.0.1 - npm-run-path: 6.0.0 - pretty-ms: 9.1.0 - signal-exit: 4.1.0 - strip-final-newline: 4.0.0 - yoctocolors: 2.1.1 - - expand-template@2.0.3: {} - expect-type@1.1.0: {} exponential-backoff@3.1.1: {} @@ -16000,7 +10683,8 @@ snapshots: transitivePeerDependencies: - supports-color - extend@3.0.2: {} + extend@3.0.2: + optional: true external-editor@3.1.0: dependencies: @@ -16008,17 +10692,8 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 - externality@1.0.2: - dependencies: - enhanced-resolve: 5.17.1 - mlly: 1.7.4 - pathe: 1.1.2 - ufo: 1.5.4 - fast-deep-equal@3.1.3: {} - fast-fifo@1.3.2: {} - fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -16039,8 +10714,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-npm-meta@0.2.2: {} - fast-uri@3.0.6: {} fastq@1.17.1: @@ -16055,23 +10728,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 - fetch-blob@3.2.0: - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.3.3 - - fflate@0.7.4: {} - - figures@6.1.0: - dependencies: - is-unicode-supported: 2.1.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 - file-uri-to-path@1.0.0: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -16136,41 +10796,11 @@ snapshots: flat@5.0.2: {} - flat@6.0.1: {} - - flatted@3.3.2: {} - - focus-trap@7.6.0: - dependencies: - tabbable: 6.2.0 + flatted@3.3.2: {} follow-redirects@1.15.9(debug@4.4.0): optionalDependencies: - debug: 4.4.0(supports-color@9.4.0) - - fontaine@0.5.0(encoding@0.1.13): - dependencies: - '@capsizecss/metrics': 2.2.0 - '@capsizecss/unpack': 2.3.0(encoding@0.1.13) - magic-regexp: 0.8.0 - magic-string: 0.30.17 - pathe: 1.1.2 - ufo: 1.5.4 - unplugin: 1.16.0 - transitivePeerDependencies: - - encoding - - fontkit@2.0.4: - dependencies: - '@swc/helpers': 0.5.13 - brotli: 1.3.3 - clone: 2.1.2 - dfa: 1.2.0 - fast-deep-equal: 3.1.3 - restructure: 3.0.2 - tiny-inflate: 1.0.3 - unicode-properties: 1.4.1 - unicode-trie: 2.0.0 + debug: 4.4.0 foreground-child@3.3.0: dependencies: @@ -16183,18 +10813,12 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - formdata-polyfill@4.0.10: - dependencies: - fetch-blob: 3.2.0 - forwarded@0.2.0: {} fraction.js@4.3.7: {} fresh@0.5.2: {} - fs-constants@1.0.0: {} - fs-extra@11.3.0: dependencies: graceful-fs: 4.2.11 @@ -16208,13 +10832,6 @@ snapshots: universalify: 0.1.2 optional: true - fs-extra@9.1.0: - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - fs-minipass@2.1.0: dependencies: minipass: 3.3.6 @@ -16223,27 +10840,14 @@ snapshots: dependencies: minipass: 7.1.2 - fs.realpath@1.0.0: {} + fs.realpath@1.0.0: + optional: true fsevents@2.3.3: optional: true function-bind@1.1.2: {} - fuse.js@7.0.0: {} - - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} @@ -16272,23 +10876,14 @@ snapshots: math-intrinsics: 1.1.0 optional: true - get-port-please@3.1.2: {} - get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 optional: true - get-stream@6.0.1: {} - get-stream@8.0.1: {} - get-stream@9.0.1: - dependencies: - '@sec-ant/readable-stream': 0.4.1 - is-stream: 4.0.1 - get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -16304,21 +10899,6 @@ snapshots: pathe: 1.1.2 tar: 6.2.1 - git-config-path@2.0.0: {} - - git-up@8.0.0: - dependencies: - is-ssh: 1.4.0 - parse-url: 9.2.0 - - git-url-parse@16.0.0: - dependencies: - git-up: 8.0.0 - - github-from-package@0.0.0: {} - - github-slugger@2.0.0: {} - glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -16346,10 +10926,7 @@ snapshots: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - - global-directory@4.0.1: - dependencies: - ini: 4.1.1 + optional: true globals@11.12.0: {} @@ -16381,72 +10958,6 @@ snapshots: graphemer@1.4.0: {} - gzip-size@6.0.0: - dependencies: - duplexer: 0.1.2 - - gzip-size@7.0.0: - dependencies: - duplexer: 0.1.2 - - h3-compression@0.3.2(h3@1.14.0): - dependencies: - h3: 1.14.0 - - h3@1.12.0: - dependencies: - cookie-es: 1.2.2 - crossws: 0.2.4 - defu: 6.1.4 - destr: 2.0.3 - iron-webcrypto: 1.2.1 - ohash: 1.1.4 - radix3: 1.1.2 - ufo: 1.5.4 - uncrypto: 0.1.3 - unenv: 1.10.0 - transitivePeerDependencies: - - uWebSockets.js - - h3@1.13.0: - dependencies: - cookie-es: 1.2.2 - crossws: 0.3.1 - defu: 6.1.4 - destr: 2.0.3 - iron-webcrypto: 1.2.1 - ohash: 1.1.4 - radix3: 1.1.2 - ufo: 1.5.4 - uncrypto: 0.1.3 - unenv: 1.10.0 - - h3@1.13.1: - dependencies: - cookie-es: 1.2.2 - crossws: 0.3.1 - defu: 6.1.4 - destr: 2.0.3 - iron-webcrypto: 1.2.1 - ohash: 1.1.4 - radix3: 1.1.2 - ufo: 1.5.4 - uncrypto: 0.1.3 - unenv: 1.10.0 - - h3@1.14.0: - dependencies: - cookie-es: 1.2.2 - crossws: 0.3.3 - defu: 6.1.4 - destr: 2.0.3 - iron-webcrypto: 1.2.1 - ohash: 1.1.4 - radix3: 1.1.2 - ufo: 1.5.4 - uncrypto: 0.1.3 - unenv: 1.10.0 - handle-thing@2.0.1: {} has-flag@4.0.0: {} @@ -16464,161 +10975,15 @@ snapshots: has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 - - has-unicode@2.0.1: {} - - hash-sum@2.0.0: {} + has-symbols: 1.1.0 + optional: true hasown@2.0.2: dependencies: function-bind: 1.1.2 - hast-util-embedded@3.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-is-element: 3.0.0 - - hast-util-format@1.1.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-embedded: 3.0.0 - hast-util-minify-whitespace: 1.0.1 - hast-util-phrasing: 3.0.1 - hast-util-whitespace: 3.0.0 - html-whitespace-sensitive-tag-names: 3.0.1 - unist-util-visit-parents: 6.0.1 - - hast-util-from-parse5@8.0.1: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - devlop: 1.1.0 - hastscript: 8.0.0 - property-information: 6.5.0 - vfile: 6.0.3 - vfile-location: 5.0.3 - web-namespaces: 2.0.1 - - hast-util-has-property@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-heading-rank@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-is-body-ok-link@3.0.1: - dependencies: - '@types/hast': 3.0.4 - - hast-util-is-element@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-minify-whitespace@1.0.1: - dependencies: - '@types/hast': 3.0.4 - hast-util-embedded: 3.0.0 - hast-util-is-element: 3.0.0 - hast-util-whitespace: 3.0.0 - unist-util-is: 6.0.0 - - hast-util-parse-selector@4.0.0: - dependencies: - '@types/hast': 3.0.4 - - hast-util-phrasing@3.0.1: - dependencies: - '@types/hast': 3.0.4 - hast-util-embedded: 3.0.0 - hast-util-has-property: 3.0.0 - hast-util-is-body-ok-link: 3.0.1 - hast-util-is-element: 3.0.0 - - hast-util-raw@9.0.4: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.2.0 - hast-util-from-parse5: 8.0.1 - hast-util-to-parse5: 8.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - parse5: 7.2.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-html@9.0.4: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - - hast-util-to-mdast@10.1.2: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.0 - hast-util-phrasing: 3.0.1 - hast-util-to-html: 9.0.4 - hast-util-to-text: 4.0.2 - hast-util-whitespace: 3.0.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-hast: 13.2.0 - mdast-util-to-string: 4.0.0 - rehype-minify-whitespace: 6.0.2 - trim-trailing-lines: 2.1.0 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - - hast-util-to-parse5@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - - hast-util-to-string@3.0.1: - dependencies: - '@types/hast': 3.0.4 - - hast-util-to-text@4.0.2: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - hast-util-is-element: 3.0.0 - unist-util-find-after: 5.0.0 - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - - hastscript@8.0.0: - dependencies: - '@types/hast': 3.0.4 - comma-separated-tokens: 2.0.3 - hast-util-parse-selector: 4.0.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - - he@1.2.0: {} - - hex-rgb@4.3.0: {} + he@1.2.0: + optional: true hookable@5.5.3: {} @@ -16641,10 +11006,6 @@ snapshots: html-tags@3.3.1: {} - html-void-elements@3.0.0: {} - - html-whitespace-sensitive-tag-names@3.0.1: {} - htmlparser2@9.1.0: dependencies: domelementtype: 2.3.0 @@ -16652,11 +11013,6 @@ snapshots: domutils: 3.1.0 entities: 4.5.0 - http-assert@1.5.0: - dependencies: - deep-equal: 1.0.1 - http-errors: 1.8.1 - http-cache-semantics@4.1.1: {} http-deceiver@1.2.7: {} @@ -16668,14 +11024,6 @@ snapshots: setprototypeof: 1.1.0 statuses: 1.5.0 - http-errors@1.8.1: - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 1.5.0 - toidentifier: 1.0.1 - http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -16689,7 +11037,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 transitivePeerDependencies: - supports-color @@ -16708,7 +11056,7 @@ snapshots: http-proxy-middleware@3.0.3: dependencies: '@types/http-proxy': 1.17.15 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 http-proxy: 1.18.1(debug@4.4.0) is-glob: 4.0.3 is-plain-object: 5.0.0 @@ -16724,30 +11072,15 @@ snapshots: transitivePeerDependencies: - debug - http-shutdown@1.2.2: {} - - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.4.0(supports-color@9.4.0) - transitivePeerDependencies: - - supports-color - - https-proxy-agent@7.0.6(supports-color@9.4.0): + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 transitivePeerDependencies: - supports-color - httpxy@0.1.5: {} - - human-signals@4.3.1: {} - human-signals@5.0.0: {} - human-signals@8.0.0: {} - hyperdyperid@1.2.0: {} iconv-lite@0.4.24: @@ -16770,19 +11103,12 @@ snapshots: ignore@5.3.2: {} - ignore@6.0.2: {} - - ignore@7.0.3: {} - - image-meta@0.2.1: {} + ignore@7.0.3: + optional: true image-size@0.5.5: optional: true - image-size@1.2.0: - dependencies: - queue: 6.0.2 - immutable@5.0.3: {} import-fresh@3.3.0: @@ -16790,67 +11116,26 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - importx@0.4.4: - dependencies: - bundle-require: 5.0.0(esbuild@0.23.1) - debug: 4.4.0(supports-color@9.4.0) - esbuild: 0.23.1 - jiti: 2.0.0-beta.3 - jiti-v1: jiti@1.21.7 - pathe: 1.1.2 - tsx: 4.19.1 - transitivePeerDependencies: - - supports-color - - impound@0.2.0(rollup@4.30.1): - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - mlly: 1.7.4 - pathe: 1.1.2 - unenv: 1.10.0 - unplugin: 1.16.1 - transitivePeerDependencies: - - rollup - imurmurhash@0.1.4: {} indent-string@4.0.0: {} - index-to-position@0.1.2: {} - inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 + optional: true inherits@2.0.3: {} inherits@2.0.4: {} - ini@1.3.8: {} - - ini@4.1.1: {} - ini@5.0.0: {} injection-js@2.4.0: dependencies: tslib: 2.8.1 - ioredis@5.4.1: - dependencies: - '@ioredis/commands': 1.2.0 - cluster-key-slot: 1.1.2 - debug: 4.4.0(supports-color@9.4.0) - denque: 2.1.0 - lodash.defaults: 4.2.0 - lodash.isarguments: 3.1.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - ip-address@9.0.5: dependencies: jsbn: 1.1.0 @@ -16860,62 +11145,8 @@ snapshots: ipaddr.js@2.2.0: {} - ipx@2.1.0(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(ioredis@5.4.1): - dependencies: - '@fastify/accept-negotiator': 1.1.0 - citty: 0.1.6 - consola: 3.3.3 - defu: 6.1.4 - destr: 2.0.3 - etag: 1.8.1 - h3: 1.13.0 - image-meta: 0.2.1 - listhen: 1.9.0 - ofetch: 1.4.1 - pathe: 1.1.2 - sharp: 0.32.6 - svgo: 3.3.2 - ufo: 1.5.4 - unstorage: 1.14.4(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(ioredis@5.4.1) - xss: 1.0.15 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - db0 - - idb-keyval - - ioredis - - uWebSockets.js - - uploadthing - optional: true - - iron-webcrypto@1.2.1: {} - - is-absolute-url@4.0.1: {} - - is-alphabetical@2.0.1: {} - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - is-arrayish@0.2.1: {} - is-arrayish@0.3.2: - optional: true - is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 @@ -16932,10 +11163,6 @@ snapshots: dependencies: hasown: 2.0.2 - is-decimal@2.0.1: {} - - is-docker@2.2.1: {} - is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -16948,25 +11175,14 @@ snapshots: dependencies: get-east-asian-width: 1.3.0 - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.2 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-hexadecimal@2.0.1: {} - is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 - is-installed-globally@1.0.0: - dependencies: - global-directory: 4.0.1 - is-path-inside: 4.0.0 - is-interactive@1.0.0: {} is-module@1.0.0: {} @@ -16975,12 +11191,8 @@ snapshots: is-number@7.0.0: {} - is-path-inside@4.0.0: {} - is-plain-obj@3.0.0: {} - is-plain-obj@4.1.0: {} - is-plain-object@2.0.4: dependencies: isobject: 3.0.1 @@ -17001,36 +11213,16 @@ snapshots: hasown: 2.0.2 optional: true - is-ssh@1.4.0: - dependencies: - protocols: 2.0.1 - - is-stream@2.0.1: {} - is-stream@3.0.0: {} - is-stream@4.0.1: {} - is-unicode-supported@0.1.0: {} - is-unicode-supported@2.1.0: {} - is-what@3.14.1: {} - is-what@4.1.16: {} - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 - is64bit@2.0.0: - dependencies: - system-architecture: 0.1.0 - isarray@1.0.0: {} isbinaryfile@4.0.10: @@ -17068,20 +11260,10 @@ snapshots: jiti@1.21.7: {} - jiti@2.0.0-beta.3: {} - - jiti@2.4.1: {} - jiti@2.4.2: {} - js-base64@3.7.7: {} - - js-levenshtein@1.1.6: {} - js-tokens@4.0.0: {} - js-tokens@9.0.0: {} - js-tokens@9.0.1: {} js-yaml@4.1.0: @@ -17100,7 +11282,7 @@ snapshots: form-data: 4.0.1 html-encoding-sniffer: 4.0.0 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6(supports-color@9.4.0) + https-proxy-agent: 7.0.6 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.16 parse5: 7.2.1 @@ -17191,91 +11373,30 @@ snapshots: ua-parser-js: 0.7.40 yargs: 16.2.0 transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - optional: true - - keygrip@1.1.0: - dependencies: - tsscmp: 1.0.6 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - kind-of@6.0.3: {} - - kleur@3.0.3: {} - - klona@2.0.6: {} - - knitwork@1.1.0: {} - - knitwork@1.2.0: {} - - koa-compose@4.1.0: {} - - koa-convert@2.0.0: - dependencies: - co: 4.6.0 - koa-compose: 4.1.0 - - koa-send@5.0.1: - dependencies: - debug: 4.4.0(supports-color@9.4.0) - http-errors: 1.8.1 - resolve-path: 1.4.0 - transitivePeerDependencies: - - supports-color - - koa-static@5.0.0: - dependencies: - debug: 3.2.7 - koa-send: 5.0.1 - transitivePeerDependencies: + - bufferutil + - debug - supports-color + - utf-8-validate + optional: true - koa@2.15.3: + keyv@4.5.4: dependencies: - accepts: 1.3.8 - cache-content-type: 1.0.1 - content-disposition: 0.5.4 - content-type: 1.0.5 - cookies: 0.9.1 - debug: 4.4.0(supports-color@9.4.0) - delegates: 1.0.0 - depd: 2.0.0 - destroy: 1.2.0 - encodeurl: 1.0.2 - escape-html: 1.0.3 - fresh: 0.5.2 - http-assert: 1.5.0 - http-errors: 1.8.1 - is-generator-function: 1.0.10 - koa-compose: 4.1.0 - koa-convert: 2.0.0 - on-finished: 2.4.1 - only: 0.0.2 - parseurl: 1.3.3 - statuses: 1.5.0 - type-is: 1.6.18 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + klona@2.0.6: + optional: true - kolorist@1.8.0: {} + knitwork@1.2.0: {} launch-editor@2.9.1: dependencies: picocolors: 1.1.1 shell-quote: 1.8.1 - lazystream@1.0.1: - dependencies: - readable-stream: 2.3.8 - less-loader@12.2.0(less@4.2.1)(webpack@5.97.1(esbuild@0.24.2)): dependencies: less: 4.2.1 @@ -17315,87 +11436,16 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libsql@0.4.7: - dependencies: - '@neon-rs/load': 0.0.4 - detect-libc: 2.0.2 - optionalDependencies: - '@libsql/darwin-arm64': 0.4.7 - '@libsql/darwin-x64': 0.4.7 - '@libsql/linux-arm64-gnu': 0.4.7 - '@libsql/linux-arm64-musl': 0.4.7 - '@libsql/linux-x64-gnu': 0.4.7 - '@libsql/linux-x64-musl': 0.4.7 - '@libsql/win32-x64-msvc': 0.4.7 - license-webpack-plugin@4.0.2(webpack@5.97.1(esbuild@0.24.2)): dependencies: webpack-sources: 3.2.3 optionalDependencies: webpack: 5.97.1(esbuild@0.24.2) - lighthouse-logger@2.0.1: - dependencies: - debug: 2.6.9 - marky: 1.2.5 - transitivePeerDependencies: - - supports-color - lilconfig@3.1.3: {} - linebreak@1.1.0: - dependencies: - base64-js: 0.0.8 - unicode-trie: 2.0.0 - lines-and-columns@1.2.4: {} - listhen@1.8.0: - dependencies: - '@parcel/watcher': 2.4.1 - '@parcel/watcher-wasm': 2.4.1 - citty: 0.1.6 - clipboardy: 4.0.0 - consola: 3.4.0 - crossws: 0.2.4 - defu: 6.1.4 - get-port-please: 3.1.2 - h3: 1.13.1 - http-shutdown: 1.2.2 - jiti: 2.4.2 - mlly: 1.7.4 - node-forge: 1.3.1 - pathe: 1.1.2 - std-env: 3.8.0 - ufo: 1.5.4 - untun: 0.1.3 - uqr: 0.1.2 - transitivePeerDependencies: - - uWebSockets.js - - listhen@1.9.0: - dependencies: - '@parcel/watcher': 2.4.1 - '@parcel/watcher-wasm': 2.4.1 - citty: 0.1.6 - clipboardy: 4.0.0 - consola: 3.3.3 - crossws: 0.2.4 - defu: 6.1.4 - get-port-please: 3.1.2 - h3: 1.12.0 - http-shutdown: 1.2.2 - jiti: 2.4.2 - mlly: 1.7.4 - node-forge: 1.3.1 - pathe: 1.1.2 - std-env: 3.8.0 - ufo: 1.5.4 - untun: 0.1.3 - uqr: 0.1.2 - transitivePeerDependencies: - - uWebSockets.js - listr2@8.2.5: dependencies: cli-truncate: 4.0.0 @@ -17421,8 +11471,6 @@ snapshots: '@lmdb/lmdb-win32-x64': 3.2.2 optional: true - load-tsconfig@0.2.5: {} - loader-runner@4.3.0: {} loader-utils@2.0.4: @@ -17455,18 +11503,8 @@ snapshots: dependencies: p-locate: 6.0.0 - lodash.castarray@4.4.0: {} - lodash.debounce@4.0.8: {} - lodash.defaults@4.2.0: {} - - lodash.isarguments@3.1.0: {} - - lodash.isequal@4.5.0: {} - - lodash.isplainobject@4.0.6: {} - lodash.memoize@4.1.2: {} lodash.merge@4.6.2: {} @@ -17491,7 +11529,7 @@ snapshots: log4js@6.9.1: dependencies: date-format: 4.0.14 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 flatted: 3.3.2 rfdc: 1.4.1 streamroller: 3.1.5 @@ -17511,33 +11549,20 @@ snapshots: dependencies: yallist: 3.1.1 - magic-regexp@0.8.0: - dependencies: - estree-walker: 3.0.3 - magic-string: 0.30.17 - mlly: 1.7.4 - regexp-tree: 0.1.27 - type-level-regexp: 0.1.17 - ufo: 1.5.4 - unplugin: 1.16.0 - magic-string-ast@0.6.3: dependencies: magic-string: 0.30.17 - magic-string-ast@0.7.0: - dependencies: - magic-string: 0.30.17 - magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 magicast@0.3.5: dependencies: - '@babel/parser': 7.26.3 + '@babel/parser': 7.26.7 '@babel/types': 7.26.7 source-map-js: 1.2.1 + optional: true make-dir@2.1.0: dependencies: @@ -17567,8 +11592,6 @@ snapshots: markdown-table@3.0.3: {} - marky@1.2.5: {} - math-intrinsics@1.1.0: optional: true @@ -17658,18 +11681,6 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.1 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - mdast-util-to-markdown@2.1.2: dependencies: '@types/mdast': 4.0.4 @@ -17690,8 +11701,6 @@ snapshots: mdn-data@2.0.30: {} - mdn-data@2.12.2: {} - media-typer@0.3.0: {} memfs@4.17.0: @@ -17889,7 +11898,7 @@ snapshots: micromark@4.0.1: dependencies: '@types/debug': 4.1.12 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.2 @@ -17926,18 +11935,12 @@ snapshots: mime@2.6.0: optional: true - mime@3.0.0: {} - - mime@4.0.4: {} - mimic-fn@2.1.0: {} mimic-fn@4.0.0: {} mimic-function@5.0.1: {} - mimic-response@3.1.0: {} - min-indent@1.0.1: {} mini-css-extract-plugin@2.9.2(webpack@5.97.1(esbuild@0.24.2)): @@ -17946,27 +11949,18 @@ snapshots: tapable: 2.2.1 webpack: 5.97.1(esbuild@0.24.2) - mini-svg-data-uri@1.4.4: {} - minimalistic-assert@1.0.1: {} - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: - dependencies: - brace-expansion: 2.0.1 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 - minimist@1.2.8: {} + minimist@1.2.8: + optional: true minipass-collect@2.0.1: dependencies: @@ -18010,13 +12004,10 @@ snapshots: minipass: 7.1.2 rimraf: 5.0.10 - mitt@3.0.1: {} - - mkdirp-classic@0.5.3: {} - mkdirp@0.5.6: dependencies: minimist: 1.2.8 + optional: true mkdirp@1.0.4: {} @@ -18050,8 +12041,6 @@ snapshots: pkg-types: 1.3.0 ufo: 1.5.4 - mri@1.2.0: {} - mrmime@2.0.0: {} ms@2.0.0: {} @@ -18075,7 +12064,8 @@ snapshots: msgpackr-extract: 3.0.3 optional: true - muggle-string@0.4.1: {} + muggle-string@0.4.1: + optional: true multicast-dns@7.2.5: dependencies: @@ -18091,15 +12081,10 @@ snapshots: any-promise: 1.3.0 object-assign: 4.1.1 thenify-all: 1.6.0 + optional: true nanoid@3.3.8: {} - nanoid@5.0.9: {} - - nanotar@0.2.0: {} - - napi-build-utils@1.0.2: {} - natural-compare@1.4.0: {} natural-orderby@5.0.0: {} @@ -18147,136 +12132,14 @@ snapshots: rollup: 4.30.1 tailwindcss: 3.4.17 - nitropack@2.10.4(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(encoding@0.1.13)(typescript@5.7.3): - dependencies: - '@cloudflare/kv-asset-handler': 0.3.4 - '@netlify/functions': 2.8.2 - '@rollup/plugin-alias': 5.1.1(rollup@4.30.1) - '@rollup/plugin-commonjs': 28.0.2(rollup@4.30.1) - '@rollup/plugin-inject': 5.0.5(rollup@4.30.1) - '@rollup/plugin-json': 6.1.0(rollup@4.30.1) - '@rollup/plugin-node-resolve': 15.3.0(rollup@4.30.1) - '@rollup/plugin-replace': 6.0.2(rollup@4.30.1) - '@rollup/plugin-terser': 0.4.4(rollup@4.30.1) - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - '@types/http-proxy': 1.17.15 - '@vercel/nft': 0.27.6(encoding@0.1.13) - archiver: 7.0.1 - c12: 2.0.1(magicast@0.3.5) - chokidar: 3.6.0 - citty: 0.1.6 - compatx: 0.1.8 - confbox: 0.1.8 - consola: 3.4.0 - cookie-es: 1.2.2 - croner: 9.0.0 - crossws: 0.3.1 - db0: 0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1) - defu: 6.1.4 - destr: 2.0.3 - dot-prop: 9.0.0 - esbuild: 0.24.2 - escape-string-regexp: 5.0.0 - etag: 1.8.1 - fs-extra: 11.3.0 - globby: 14.0.2 - gzip-size: 7.0.0 - h3: 1.14.0 - hookable: 5.5.3 - httpxy: 0.1.5 - ioredis: 5.4.1 - jiti: 2.4.2 - klona: 2.0.6 - knitwork: 1.2.0 - listhen: 1.9.0 - magic-string: 0.30.17 - magicast: 0.3.5 - mime: 4.0.4 - mlly: 1.7.4 - node-fetch-native: 1.6.4 - ofetch: 1.4.1 - ohash: 1.1.4 - openapi-typescript: 7.4.3(encoding@0.1.13)(typescript@5.7.3) - pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.3.1 - pretty-bytes: 6.1.1 - radix3: 1.1.2 - rollup: 4.30.1 - rollup-plugin-visualizer: 5.14.0(rollup@4.30.1) - scule: 1.3.0 - semver: 7.6.3 - serve-placeholder: 2.0.2 - serve-static: 1.16.2 - std-env: 3.8.0 - ufo: 1.5.4 - uncrypto: 0.1.3 - unctx: 2.4.1 - unenv: 1.10.0 - unimport: 3.14.6(rollup@4.30.1) - unstorage: 1.14.4(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(ioredis@5.4.1) - untyped: 1.5.2 - unwasm: 0.3.9 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@electric-sql/pglite' - - '@libsql/client' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - better-sqlite3 - - drizzle-orm - - encoding - - idb-keyval - - mysql2 - - rolldown - - supports-color - - typescript - - uWebSockets.js - - uploadthing - - node-abi@3.68.0: - dependencies: - semver: 7.6.3 - node-addon-api@6.1.0: optional: true - node-addon-api@7.1.1: {} - - node-domexception@1.0.0: {} - - node-emoji@2.1.3: - dependencies: - '@sindresorhus/is': 4.6.0 - char-regex: 1.0.2 - emojilib: 2.4.0 - skin-tone: 2.0.0 + node-addon-api@7.1.1: + optional: true node-fetch-native@1.6.4: {} - node-fetch@2.7.0(encoding@0.1.13): - dependencies: - whatwg-url: 5.0.0 - optionalDependencies: - encoding: 0.1.13 - - node-fetch@3.3.2: - dependencies: - data-uri-to-buffer: 4.0.1 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - node-forge@1.3.1: {} node-gyp-build-optional-packages@5.2.2: @@ -18284,8 +12147,6 @@ snapshots: detect-libc: 2.0.3 optional: true - node-gyp-build@4.8.2: {} - node-gyp@11.0.0: dependencies: env-paths: 2.2.1 @@ -18303,10 +12164,6 @@ snapshots: node-releases@2.0.18: {} - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - nopt@8.1.0: dependencies: abbrev: 3.0.0 @@ -18320,376 +12177,56 @@ snapshots: normalize-path@3.0.0: {} - normalize-range@0.1.2: {} - - npm-bundled@4.0.0: - dependencies: - npm-normalize-package-bin: 4.0.0 - - npm-install-checks@7.1.1: - dependencies: - semver: 7.6.3 - - npm-normalize-package-bin@4.0.0: {} - - npm-package-arg@12.0.1: - dependencies: - hosted-git-info: 8.0.2 - proc-log: 5.0.0 - semver: 7.6.3 - validate-npm-package-name: 6.0.0 - - npm-packlist@9.0.0: - dependencies: - ignore-walk: 7.0.0 - - npm-pick-manifest@10.0.0: - dependencies: - npm-install-checks: 7.1.1 - npm-normalize-package-bin: 4.0.0 - npm-package-arg: 12.0.1 - semver: 7.6.3 - - npm-registry-fetch@18.0.2: - dependencies: - '@npmcli/redact': 3.1.1 - jsonparse: 1.3.1 - make-fetch-happen: 14.0.3 - minipass: 7.1.2 - minipass-fetch: 4.0.0 - minizlib: 3.0.1 - npm-package-arg: 12.0.1 - proc-log: 5.0.0 - transitivePeerDependencies: - - supports-color - - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - npm-run-path@6.0.0: - dependencies: - path-key: 4.0.0 - unicorn-magic: 0.3.0 - - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - nuxt-component-meta@0.10.0(magicast@0.3.5)(rollup@4.30.1): - dependencies: - '@nuxt/kit': 3.15.3(magicast@0.3.5)(rollup@4.30.1) - citty: 0.1.6 - mlly: 1.7.4 - scule: 1.3.0 - typescript: 5.7.3 - ufo: 1.5.4 - vue-component-meta: 2.2.0(typescript@5.7.3) - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - nuxt-icon@0.4.2(magicast@0.3.5)(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)): - dependencies: - '@iconify/vue': 4.1.2(vue@3.5.13(typescript@5.7.3)) - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - vue - - nuxt-icon@0.6.10(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)): - dependencies: - '@iconify/collections': 1.0.492 - '@iconify/vue': 4.1.2(vue@3.5.13(typescript@5.7.3)) - '@nuxt/devtools-kit': 1.6.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.30.1) - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - vite - - vue + normalize-range@0.1.2: {} - nuxt-lego@0.0.14(magicast@0.3.5)(nuxt@3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0))(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)): + npm-bundled@4.0.0: dependencies: - '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.7.3)) - '@vueuse/nuxt': 10.11.1(magicast@0.3.5)(nuxt@3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0))(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)) - nuxt-icon: 0.4.2(magicast@0.3.5)(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - '@vue/composition-api' - - magicast - - nuxt - - rollup - - supports-color - - vue + npm-normalize-package-bin: 4.0.0 - nuxt-link-checker@4.1.0(magicast@0.3.5)(rollup@4.30.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)): + npm-install-checks@7.1.1: dependencies: - '@nuxt/devtools-kit': 2.0.0-beta.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - '@vueuse/core': 12.4.0(typescript@5.7.3) - chalk: 5.4.1 - cheerio: 1.0.0 - diff: 7.0.0 - fuse.js: 7.0.0 - magic-string: 0.30.17 - nuxt-site-config: 3.0.6(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - pathe: 2.0.2 - pkg-types: 1.3.1 - radix3: 1.1.2 - sirv: 3.0.0 - ufo: 1.5.4 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - typescript - - vite - - vue + semver: 7.6.3 + + npm-normalize-package-bin@4.0.0: {} - nuxt-og-image@4.1.2(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)): + npm-package-arg@12.0.1: dependencies: - '@nuxt/devtools-kit': 2.0.0-beta.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - '@resvg/resvg-js': 2.6.2 - '@resvg/resvg-wasm': 2.6.2 - '@unocss/core': 65.4.2 - '@unocss/preset-wind': 65.4.2 - chrome-launcher: 1.1.2 - consola: 3.4.0 - defu: 6.1.4 - execa: 9.5.2 - image-size: 1.2.0 - magic-string: 0.30.17 - nuxt-site-config: 3.0.6(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - nypm: 0.5.0 - ofetch: 1.4.1 - ohash: 1.1.4 - pathe: 2.0.2 - pkg-types: 1.3.1 - playwright-core: 1.49.1 - radix3: 1.1.2 - satori: 0.12.1 - satori-html: 0.3.2 - sirv: 3.0.0 - std-env: 3.8.0 - strip-literal: 3.0.0 - ufo: 1.5.4 - unplugin: 2.1.2 - unwasm: 0.3.9 - yoga-wasm-web: 0.3.3 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - vite - - vue + hosted-git-info: 8.0.2 + proc-log: 5.0.0 + semver: 7.6.3 + validate-npm-package-name: 6.0.0 - nuxt-schema-org@4.1.1(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)): + npm-packlist@9.0.0: dependencies: - '@nuxt/devtools-kit': 2.0.0-beta.3(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - '@unhead/schema-org': link:packages/schema-org - defu: 6.1.4 - nuxt-site-config: 3.0.6(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - pathe: 2.0.2 - pkg-types: 1.3.1 - sirv: 3.0.0 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - vite - - vue + ignore-walk: 7.0.0 - nuxt-seo-utils@6.0.8(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)): + npm-pick-manifest@10.0.0: dependencies: - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - '@unhead/addons': link:packages/addons - '@unhead/schema': link:packages/schema - defu: 6.1.4 - escape-string-regexp: 5.0.0 - fast-glob: 3.3.3 - image-size: 1.2.0 - mlly: 1.7.4 - nuxt-site-config: 3.0.6(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - pathe: 2.0.1 - scule: 1.3.0 - ufo: 1.5.4 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - vite - - vue + npm-install-checks: 7.1.1 + npm-normalize-package-bin: 4.0.0 + npm-package-arg: 12.0.1 + semver: 7.6.3 - nuxt-site-config-kit@3.0.6(magicast@0.3.5)(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)): + npm-registry-fetch@18.0.2: dependencies: - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - '@nuxt/schema': 3.15.2 - pkg-types: 1.3.1 - site-config-stack: 3.0.6(vue@3.5.13(typescript@5.7.3)) - std-env: 3.8.0 - ufo: 1.5.4 + '@npmcli/redact': 3.1.1 + jsonparse: 1.3.1 + make-fetch-happen: 14.0.3 + minipass: 7.1.2 + minipass-fetch: 4.0.0 + minizlib: 3.0.1 + npm-package-arg: 12.0.1 + proc-log: 5.0.0 transitivePeerDependencies: - - magicast - - rollup - supports-color - - vue - nuxt-site-config@3.0.6(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)): + npm-run-path@5.3.0: dependencies: - '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.30.1) - '@nuxt/schema': 3.15.2 - nuxt-site-config-kit: 3.0.6(magicast@0.3.5)(rollup@4.30.1)(vue@3.5.13(typescript@5.7.3)) - pathe: 1.1.2 - pkg-types: 1.3.1 - sirv: 3.0.0 - site-config-stack: 3.0.6(vue@3.5.13(typescript@5.7.3)) - ufo: 1.5.4 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - vite - - vue + path-key: 4.0.0 - nuxt@3.15.3(@libsql/client@0.14.0)(@parcel/watcher@2.4.1)(@types/node@22.12.0)(better-sqlite3@11.8.1)(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(encoding@0.1.13)(eslint@9.19.0(jiti@2.4.2))(ioredis@5.4.1)(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3))(yaml@2.7.0): + nth-check@2.1.1: dependencies: - '@nuxt/cli': 3.20.0(magicast@0.3.5) - '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.7.0(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue@3.5.13(typescript@5.7.3)) - '@nuxt/kit': 3.15.3(magicast@0.3.5)(rollup@4.30.1) - '@nuxt/schema': 3.15.3 - '@nuxt/telemetry': 2.6.4(magicast@0.3.5)(rollup@4.30.1) - '@nuxt/vite-builder': 3.15.3(@types/node@22.12.0)(eslint@9.19.0(jiti@2.4.2))(less@4.2.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.30.1)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(typescript@5.7.3)(vue-tsc@2.1.10(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3))(yaml@2.7.0) - '@unhead/dom': link:packages/dom - '@unhead/shared': link:packages/shared - '@unhead/ssr': link:packages/ssr - '@unhead/vue': link:packages/vue - '@vue/shared': 3.5.13 - acorn: 8.14.0 - c12: 2.0.1(magicast@0.3.5) - chokidar: 4.0.3 - compatx: 0.1.8 - consola: 3.4.0 - cookie-es: 1.2.2 - defu: 6.1.4 - destr: 2.0.3 - devalue: 5.1.1 - errx: 0.1.0 - esbuild: 0.24.2 - escape-string-regexp: 5.0.0 - estree-walker: 3.0.3 - globby: 14.0.2 - h3: 1.14.0 - hookable: 5.5.3 - ignore: 7.0.3 - impound: 0.2.0(rollup@4.30.1) - jiti: 2.4.2 - klona: 2.0.6 - knitwork: 1.2.0 - magic-string: 0.30.17 - mlly: 1.7.4 - nanotar: 0.2.0 - nitropack: 2.10.4(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(encoding@0.1.13)(typescript@5.7.3) - nypm: 0.5.0 - ofetch: 1.4.1 - ohash: 1.1.4 - pathe: 2.0.2 - perfect-debounce: 1.0.0 - pkg-types: 1.3.1 - radix3: 1.1.2 - scule: 1.3.0 - semver: 7.6.3 - std-env: 3.8.0 - strip-literal: 3.0.0 - tinyglobby: 0.2.10 - ufo: 1.5.4 - ultrahtml: 1.5.3 - uncrypto: 0.1.3 - unctx: 2.4.1 - unenv: 1.10.0 - unhead: link:packages/unhead - unimport: 4.0.0(rollup@4.30.1) - unplugin: 2.1.2 - unplugin-vue-router: 0.11.1(rollup@4.30.1)(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)) - unstorage: 1.14.4(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(ioredis@5.4.1) - untyped: 1.5.2 - vue: 3.5.13(typescript@5.7.3) - vue-bundle-renderer: 2.1.1 - vue-devtools-stub: 0.1.0 - vue-router: 4.5.0(vue@3.5.13(typescript@5.7.3)) - optionalDependencies: - '@parcel/watcher': 2.4.1 - '@types/node': 22.12.0 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@biomejs/biome' - - '@capacitor/preferences' - - '@deno/kv' - - '@electric-sql/pglite' - - '@libsql/client' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/kv' - - aws4fetch - - better-sqlite3 - - bufferutil - - db0 - - drizzle-orm - - encoding - - eslint - - idb-keyval - - ioredis - - less - - lightningcss - - magicast - - meow - - mysql2 - - optionator - - rolldown - - rollup - - sass - - sass-embedded - - stylelint - - stylus - - sugarss - - supports-color - - terser - - tsx - - typescript - - uWebSockets.js - - uploadthing - - utf-8-validate - - vite - - vls - - vti - - vue-tsc - - xml2js - - yaml + boolbase: 1.0.0 nwsapi@2.2.16: {} @@ -18702,44 +12239,16 @@ snapshots: pkg-types: 1.3.1 ufo: 1.5.4 - nypm@0.4.1: - dependencies: - citty: 0.1.6 - consola: 3.3.3 - pathe: 1.1.2 - pkg-types: 1.3.0 - tinyexec: 0.3.2 - ufo: 1.5.4 - - nypm@0.5.0: - dependencies: - citty: 0.1.6 - consola: 3.4.0 - pathe: 2.0.2 - pkg-types: 1.3.1 - tinyexec: 0.3.2 - ufo: 1.5.4 - - object-assign@4.1.1: {} + object-assign@4.1.1: + optional: true - object-hash@3.0.0: {} + object-hash@3.0.0: + optional: true object-inspect@1.13.2: {} obuf@1.1.2: {} - ofetch@1.4.0: - dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.4 - ufo: 1.5.4 - - ofetch@1.4.1: - dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.4 - ufo: 1.5.4 - ohash@1.1.4: {} on-finished@2.3.0: @@ -18756,6 +12265,7 @@ snapshots: once@1.4.0: dependencies: wrappy: 1.0.2 + optional: true onetime@5.1.2: dependencies: @@ -18769,18 +12279,6 @@ snapshots: dependencies: mimic-function: 5.0.1 - oniguruma-to-es@2.3.0: - dependencies: - emoji-regex-xs: 1.0.0 - regex: 5.1.1 - regex-recursion: 5.1.1 - - oniguruma-to-js@0.4.3: - dependencies: - regex: 4.4.0 - - only@0.0.2: {} - open@10.1.0: dependencies: default-browser: 5.2.1 @@ -18788,29 +12286,6 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 - open@7.4.2: - dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 - - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - openapi-typescript@7.4.3(encoding@0.1.13)(typescript@5.7.3): - dependencies: - '@redocly/openapi-core': 1.25.11(encoding@0.1.13)(supports-color@9.4.0) - ansi-colors: 4.1.3 - change-case: 5.4.4 - parse-json: 8.1.0 - supports-color: 9.4.0 - typescript: 5.7.3 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - encoding - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -18900,33 +12375,10 @@ snapshots: - bluebird - supports-color - pako@0.2.9: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 - parse-css-color@0.2.1: - dependencies: - color-name: 1.1.4 - hex-rgb: 4.3.0 - - parse-entities@4.0.1: - dependencies: - '@types/unist': 2.0.11 - character-entities: 2.0.2 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.0.2 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - - parse-git-config@3.0.0: - dependencies: - git-config-path: 2.0.0 - ini: 1.3.8 - parse-gitignore@2.0.0: {} parse-imports@2.2.1: @@ -18941,40 +12393,14 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - parse-json@8.1.0: - dependencies: - '@babel/code-frame': 7.26.2 - index-to-position: 0.1.2 - type-fest: 4.26.1 - - parse-ms@4.0.0: {} - parse-node-version@1.0.1: {} - parse-path@7.0.0: - dependencies: - protocols: 2.0.1 - - parse-url@9.2.0: - dependencies: - '@types/parse-path': 7.0.3 - parse-path: 7.0.0 - parse5-html-rewriting-stream@7.0.0: dependencies: entities: 4.5.0 parse5: 7.2.1 parse5-sax-parser: 7.0.0 - parse5-htmlparser2-tree-adapter@7.0.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.2.1 - - parse5-parser-stream@7.1.2: - dependencies: - parse5: 7.2.1 - parse5-sax-parser@7.0.0: dependencies: parse5: 7.2.1 @@ -18989,13 +12415,15 @@ snapshots: parseurl@1.3.3: {} - path-browserify@1.0.1: {} + path-browserify@1.0.1: + optional: true path-exists@4.0.0: {} path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} + path-is-absolute@1.0.1: + optional: true path-key@3.1.1: {} @@ -19010,56 +12438,17 @@ snapshots: path-to-regexp@0.1.12: {} - path-to-regexp@6.3.0: {} - path-type@5.0.0: {} pathe@1.1.2: {} - pathe@2.0.0: {} - - pathe@2.0.1: {} - - pathe@2.0.2: {} - - pathval@2.0.0: {} - - perfect-debounce@1.0.0: {} - - pg-cloudflare@1.1.1: - optional: true - - pg-connection-string@2.7.0: {} - - pg-int8@1.0.1: {} - - pg-pool@3.7.0(pg@8.13.1): - dependencies: - pg: 8.13.1 - - pg-protocol@1.7.0: {} + pathe@2.0.1: {} - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.0 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 + pathe@2.0.2: {} - pg@8.13.1: - dependencies: - pg-connection-string: 2.7.0 - pg-pool: 3.7.0(pg@8.13.1) - pg-protocol: 1.7.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.1.1 + pathval@2.0.0: {} - pgpass@1.0.5: - dependencies: - split2: 4.2.0 + perfect-debounce@1.0.0: {} picocolors@1.1.1: {} @@ -19067,7 +12456,8 @@ snapshots: picomatch@4.0.2: {} - pify@2.3.0: {} + pify@2.3.0: + optional: true pify@4.0.1: optional: true @@ -19082,7 +12472,8 @@ snapshots: transitivePeerDependencies: - '@vue/composition-api' - pirates@4.0.6: {} + pirates@4.0.6: + optional: true piscina@4.8.0: optionalDependencies: @@ -19096,12 +12487,6 @@ snapshots: dependencies: find-up: 6.3.0 - pkg-types@1.2.0: - dependencies: - confbox: 0.1.7 - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types@1.2.1: dependencies: confbox: 0.1.8 @@ -19120,30 +12505,14 @@ snapshots: mlly: 1.7.4 pathe: 2.0.2 - playwright-core@1.49.1: {} - pluralize@8.0.0: {} - portfinder@1.0.32: - dependencies: - async: 2.6.4 - debug: 3.2.7 - mkdirp: 0.5.6 - transitivePeerDependencies: - - supports-color - postcss-calc@10.0.2(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-calc@10.0.2(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.4.49): dependencies: browserslist: 4.24.2 @@ -19152,78 +12521,50 @@ snapshots: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.5.1): - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.4.49): dependencies: browserslist: 4.24.2 postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.5.1): - dependencies: - browserslist: 4.24.2 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.3(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-selector-parser: 6.1.2 - postcss-discard-comments@7.0.3(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.4.49): dependencies: postcss: 8.4.49 - postcss-discard-duplicates@7.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-discard-empty@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 - postcss-discard-empty@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-discard-overridden@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 - postcss-discard-overridden@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-import@15.1.0(postcss@8.5.1): dependencies: postcss: 8.5.1 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.10 + optional: true postcss-js@4.0.1(postcss@8.5.1): dependencies: camelcase-css: 2.0.1 postcss: 8.5.1 + optional: true postcss-load-config@4.0.2(postcss@8.5.1): dependencies: lilconfig: 3.1.3 - yaml: 2.6.1 + yaml: 2.7.0 optionalDependencies: postcss: 8.5.1 + optional: true postcss-loader@8.1.1(postcss@8.4.49)(typescript@5.7.3)(webpack@5.97.1(esbuild@0.24.2)): dependencies: @@ -19244,12 +12585,6 @@ snapshots: postcss-value-parser: 4.2.0 stylehacks: 7.0.4(postcss@8.4.49) - postcss-merge-longhand@7.0.4(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.1) - postcss-merge-rules@7.0.4(postcss@8.4.49): dependencies: browserslist: 4.24.2 @@ -19258,24 +12593,11 @@ snapshots: postcss: 8.4.49 postcss-selector-parser: 6.1.2 - postcss-merge-rules@7.0.4(postcss@8.5.1): - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-minify-font-values@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.49): dependencies: colord: 2.9.3 @@ -19283,13 +12605,6 @@ snapshots: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.5.1): - dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.4.49): dependencies: browserslist: 4.24.2 @@ -19297,25 +12612,12 @@ snapshots: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.5.1): - dependencies: - browserslist: 4.24.2 - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.4.49): dependencies: cssesc: 3.0.0 postcss: 8.4.49 postcss-selector-parser: 6.1.2 - postcss-minify-selectors@7.0.4(postcss@8.5.1): - dependencies: - cssesc: 3.0.0 - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - postcss-modules-extract-imports@3.1.0(postcss@8.5.1): dependencies: postcss: 8.5.1 @@ -19341,148 +12643,75 @@ snapshots: dependencies: postcss: 8.5.1 postcss-selector-parser: 6.1.2 + optional: true postcss-nested@7.0.2(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-selector-parser: 7.0.0 - postcss-nesting@13.0.1(postcss@8.5.1): - dependencies: - '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.0.0) - '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) - postcss: 8.5.1 - postcss-selector-parser: 7.0.0 - postcss-normalize-charset@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 - postcss-normalize-charset@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-normalize-display-values@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-normalize-display-values@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.4.49): dependencies: browserslist: 4.24.2 postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.5.1): - dependencies: - browserslist: 4.24.2 - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.4.49): dependencies: cssnano-utils: 5.0.0(postcss@8.4.49) postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.5.1): - dependencies: - cssnano-utils: 5.0.0(postcss@8.5.1) - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.2(postcss@8.4.49): dependencies: browserslist: 4.24.2 caniuse-api: 3.0.0 postcss: 8.4.49 - postcss-reduce-initial@7.0.2(postcss@8.5.1): - dependencies: - browserslist: 4.24.2 - caniuse-api: 3.0.0 - postcss: 8.5.1 - postcss-reduce-transforms@7.0.0(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-value-parser: 4.2.0 - postcss-reduce-transforms@7.0.0(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - - postcss-selector-parser@6.0.10: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -19499,22 +12728,11 @@ snapshots: postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-svgo@7.0.1(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.4.49): dependencies: postcss: 8.4.49 postcss-selector-parser: 6.1.2 - postcss-unique-selectors@7.0.3(postcss@8.5.1): - dependencies: - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - postcss-value-parser@4.2.0: {} postcss@8.4.49: @@ -19529,49 +12747,16 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postgres-array@2.0.0: {} - - postgres-bytea@1.0.0: {} - - postgres-date@1.0.7: {} - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - - prebuild-install@7.1.2: - dependencies: - detect-libc: 2.0.3 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.68.0 - pump: 3.0.2 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.1 - tunnel-agent: 0.6.0 - prelude-ls@1.2.1: {} pretty-bytes@6.1.1: {} - pretty-ms@9.1.0: - dependencies: - parse-ms: 4.0.0 - proc-log@5.0.0: {} process-nextick-args@2.0.1: {} - process@0.11.10: {} - promise-inflight@1.0.1: {} - promise-limit@2.7.0: {} - promise-retry@2.0.1: dependencies: err-code: 2.0.3 @@ -19582,10 +12767,6 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - property-information@6.5.0: {} - - protocols@2.0.1: {} - proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -19594,11 +12775,6 @@ snapshots: prr@1.0.1: optional: true - pump@3.0.2: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - punycode@1.4.1: optional: true @@ -19613,14 +12789,6 @@ snapshots: queue-microtask@1.2.3: {} - queue-tick@1.0.1: {} - - queue@6.0.2: - dependencies: - inherits: 2.0.4 - - radix3@1.1.2: {} - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 @@ -19639,13 +12807,6 @@ snapshots: defu: 6.1.4 destr: 2.0.3 - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - react-dom@19.0.0(react@19.0.0): dependencies: react: 19.0.0 @@ -19674,6 +12835,7 @@ snapshots: read-cache@1.0.0: dependencies: pify: 2.3.0 + optional: true read-pkg-up@7.0.1: dependencies: @@ -19704,30 +12866,12 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.5.2: - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - - readdir-glob@1.1.3: - dependencies: - minimatch: 5.1.6 - readdirp@3.6.0: dependencies: picomatch: 2.3.1 readdirp@4.0.2: {} - redis-errors@1.2.0: {} - - redis-parser@3.0.0: - dependencies: - redis-errors: 1.2.0 - refa@0.12.1: dependencies: '@eslint-community/regexpp': 4.12.1 @@ -19744,166 +12888,35 @@ snapshots: regenerator-transform@0.15.2: dependencies: - '@babel/runtime': 7.26.0 - - regex-parser@2.3.0: {} - - regex-recursion@5.1.1: - dependencies: - regex: 5.1.1 - regex-utilities: 2.3.0 - - regex-utilities@2.3.0: {} - - regex@4.4.0: {} - - regex@5.1.1: - dependencies: - regex-utilities: 2.3.0 - - regexp-ast-analysis@0.7.1: - dependencies: - '@eslint-community/regexpp': 4.12.1 - refa: 0.12.1 - - regexp-tree@0.1.27: {} - - regexpu-core@6.2.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 - regjsgen: 0.8.0 - regjsparser: 0.12.0 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.0 - - regjsgen@0.8.0: {} - - regjsparser@0.10.0: - dependencies: - jsesc: 0.5.0 - - regjsparser@0.12.0: - dependencies: - jsesc: 3.0.2 - - rehype-external-links@3.0.0: - dependencies: - '@types/hast': 3.0.4 - '@ungap/structured-clone': 1.2.0 - hast-util-is-element: 3.0.0 - is-absolute-url: 4.0.1 - space-separated-tokens: 2.0.2 - unist-util-visit: 5.0.0 - - rehype-minify-whitespace@6.0.2: - dependencies: - '@types/hast': 3.0.4 - hast-util-minify-whitespace: 1.0.1 - - rehype-raw@7.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-raw: 9.0.4 - vfile: 6.0.3 - - rehype-remark@10.0.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - hast-util-to-mdast: 10.1.2 - unified: 11.0.5 - vfile: 6.0.3 - - rehype-slug@6.0.0: - dependencies: - '@types/hast': 3.0.4 - github-slugger: 2.0.0 - hast-util-heading-rank: 3.0.0 - hast-util-to-string: 3.0.1 - unist-util-visit: 5.0.0 - - rehype-sort-attribute-values@5.0.1: - dependencies: - '@types/hast': 3.0.4 - hast-util-is-element: 3.0.0 - unist-util-visit: 5.0.0 - - rehype-sort-attributes@5.0.1: - dependencies: - '@types/hast': 3.0.4 - unist-util-visit: 5.0.0 - - remark-emoji@5.0.1: - dependencies: - '@types/mdast': 4.0.4 - emoticon: 4.1.0 - mdast-util-find-and-replace: 3.0.1 - node-emoji: 2.1.3 - unified: 11.0.5 - - remark-gfm@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.0.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-mdc@3.5.3: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - flat: 6.0.1 - mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.2 - micromark: 4.0.1 - micromark-core-commonmark: 2.0.2 - micromark-factory-space: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.1 - parse-entities: 4.0.1 - scule: 1.3.0 - stringify-entities: 4.0.4 - unified: 11.0.5 - unist-util-visit: 5.0.0 - unist-util-visit-parents: 6.0.1 - yaml: 2.7.0 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.26.0 + + regex-parser@2.3.0: {} - remark-parse@11.0.0: + regexp-ast-analysis@0.7.1: dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 - micromark-util-types: 2.0.1 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + + regexp-tree@0.1.27: {} - remark-rehype@11.1.1: + regexpu-core@6.2.0: dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 - unified: 11.0.5 - vfile: 6.0.3 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + regjsgen@0.8.0: {} - remark-stringify@11.0.0: + regjsparser@0.10.0: dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.2 - unified: 11.0.5 + jsesc: 0.5.0 - replace-in-file@6.3.5: + regjsparser@0.12.0: dependencies: - chalk: 4.1.2 - glob: 7.2.3 - yargs: 17.7.2 + jsesc: 3.0.2 require-directory@2.1.1: {} @@ -19913,13 +12926,6 @@ snapshots: resolve-from@4.0.0: {} - resolve-from@5.0.0: {} - - resolve-path@1.4.0: - dependencies: - http-errors: 1.6.3 - path-is-absolute: 1.0.1 - resolve-pkg-maps@1.0.0: {} resolve-url-loader@5.0.0: @@ -19952,8 +12958,6 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 - restructure@3.0.2: {} - retry@0.12.0: {} retry@0.13.1: {} @@ -19965,6 +12969,7 @@ snapshots: rimraf@3.0.2: dependencies: glob: 7.2.3 + optional: true rimraf@5.0.10: dependencies: @@ -19978,15 +12983,6 @@ snapshots: optionalDependencies: '@babel/code-frame': 7.26.2 - rollup-plugin-visualizer@5.14.0(rollup@4.30.1): - dependencies: - open: 8.4.2 - picomatch: 4.0.2 - source-map: 0.7.4 - yargs: 17.7.2 - optionalDependencies: - rollup: 4.30.1 - rollup@4.30.1: dependencies: '@types/estree': 1.0.6 @@ -20060,24 +13056,6 @@ snapshots: optionalDependencies: '@parcel/watcher': 2.4.1 - satori-html@0.3.2: - dependencies: - ultrahtml: 1.5.3 - - satori@0.12.1: - dependencies: - '@shuding/opentype.js': 1.4.0-beta.0 - css-background-parser: 0.1.0 - css-box-shadow: 1.0.0-3 - css-gradient-parser: 0.0.16 - css-to-react-native: 3.2.0 - emoji-regex: 10.4.0 - escape-html: 1.0.3 - linebreak: 1.1.0 - parse-css-color: 0.2.1 - postcss-value-parser: 4.2.0 - yoga-wasm-web: 0.3.3 - sax@1.4.1: optional: true @@ -20155,10 +13133,6 @@ snapshots: transitivePeerDependencies: - supports-color - serve-placeholder@2.0.2: - dependencies: - defu: 6.1.4 - serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -20168,8 +13142,6 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} - set-cookie-parser@2.7.1: {} set-function-length@1.2.2: @@ -20189,18 +13161,6 @@ snapshots: dependencies: kind-of: 6.0.3 - sharp@0.32.6: - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - node-addon-api: 6.1.0 - prebuild-install: 7.1.2 - semver: 7.6.3 - simple-get: 4.0.1 - tar-fs: 3.0.6 - tunnel-agent: 0.6.0 - optional: true - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -20209,26 +13169,6 @@ snapshots: shell-quote@1.8.1: {} - shiki@1.22.0: - dependencies: - '@shikijs/core': 1.22.0 - '@shikijs/engine-javascript': 1.22.0 - '@shikijs/engine-oniguruma': 1.22.0 - '@shikijs/types': 1.22.0 - '@shikijs/vscode-textmate': 9.3.1 - '@types/hast': 3.0.4 - - shiki@1.29.1: - dependencies: - '@shikijs/core': 1.29.1 - '@shikijs/engine-javascript': 1.29.1 - '@shikijs/engine-oniguruma': 1.29.1 - '@shikijs/langs': 1.29.1 - '@shikijs/themes': 1.29.1 - '@shikijs/types': 1.29.1 - '@shikijs/vscode-textmate': 10.0.1 - '@types/hast': 3.0.4 - side-channel@1.0.6: dependencies: call-bind: 1.0.7 @@ -20253,50 +13193,8 @@ snapshots: transitivePeerDependencies: - supports-color - simple-concat@1.0.1: {} - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - - simple-git@3.27.0: - dependencies: - '@kwsites/file-exists': 1.1.1 - '@kwsites/promise-deferred': 1.1.1 - debug: 4.4.0(supports-color@9.4.0) - transitivePeerDependencies: - - supports-color - - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - optional: true - - sirv@2.0.4: - dependencies: - '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 - totalist: 3.0.1 - - sirv@3.0.0: - dependencies: - '@polka/url': 1.0.0-next.28 - mrmime: 2.0.0 - totalist: 3.0.1 - sisteransi@1.0.5: {} - site-config-stack@3.0.6(vue@3.5.13(typescript@5.7.3)): - dependencies: - ufo: 1.5.4 - vue: 3.5.13(typescript@5.7.3) - - skin-tone@2.0.0: - dependencies: - unicode-emoji-modifier-base: 1.0.0 - slash@5.1.0: {} slashes@3.0.12: {} @@ -20311,14 +13209,8 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 - slugify@1.6.6: {} - smart-buffer@4.2.0: {} - smob@1.5.0: {} - - smooth-dnd@0.12.1: {} - socket.io-adapter@2.5.5: dependencies: debug: 4.3.7 @@ -20329,23 +13221,13 @@ snapshots: - utf-8-validate optional: true - socket.io-client@4.8.1: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - engine.io-client: 6.6.1 - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.7 transitivePeerDependencies: - supports-color + optional: true socket.io@4.8.1: dependencies: @@ -20371,7 +13253,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.3 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 socks: 2.8.3 transitivePeerDependencies: - supports-color @@ -20398,8 +13280,6 @@ snapshots: source-map@0.7.4: {} - space-separated-tokens@2.0.2: {} - spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 @@ -20421,7 +13301,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -20432,7 +13312,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -20440,12 +13320,6 @@ snapshots: transitivePeerDependencies: - supports-color - speakingurl@14.0.1: {} - - split2@4.2.0: {} - - splitpanes@3.1.5: {} - sprintf-js@1.1.3: {} ssri@12.0.0: @@ -20456,33 +13330,21 @@ snapshots: stackback@0.0.2: {} - standard-as-callback@2.1.0: {} - statuses@1.5.0: {} statuses@2.0.1: {} - std-env@3.7.0: {} - std-env@3.8.0: {} streamroller@3.1.5: dependencies: date-format: 4.0.14 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 fs-extra: 8.1.0 transitivePeerDependencies: - supports-color optional: true - streamx@2.20.1: - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - text-decoder: 1.2.0 - optionalDependencies: - bare-events: 2.5.0 - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -20501,8 +13363,6 @@ snapshots: get-east-asian-width: 1.3.0 strip-ansi: 7.1.0 - string.prototype.codepointat@0.2.1: {} - string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -20511,11 +13371,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -20526,20 +13381,12 @@ snapshots: strip-final-newline@3.0.0: {} - strip-final-newline@4.0.0: {} - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - strip-json-comments@2.0.1: {} - strip-json-comments@3.1.1: {} - strip-literal@2.1.0: - dependencies: - js-tokens: 9.0.0 - strip-literal@2.1.1: dependencies: js-tokens: 9.0.1 @@ -20547,6 +13394,7 @@ snapshots: strip-literal@3.0.0: dependencies: js-tokens: 9.0.1 + optional: true stylehacks@7.0.4(postcss@8.4.49): dependencies: @@ -20554,12 +13402,6 @@ snapshots: postcss: 8.4.49 postcss-selector-parser: 6.1.2 - stylehacks@7.0.4(postcss@8.5.1): - dependencies: - browserslist: 4.24.2 - postcss: 8.5.1 - postcss-selector-parser: 6.1.2 - sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -20569,10 +13411,7 @@ snapshots: mz: 2.7.0 pirates: 4.0.6 ts-interface-checker: 0.1.13 - - superjson@2.2.1: - dependencies: - copy-anything: 3.0.5 + optional: true supports-color@7.2.0: dependencies: @@ -20582,8 +13421,6 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-color@9.4.0: {} - supports-preserve-symlinks-flag@1.0.0: {} svg-tags@1.0.0: {} @@ -20611,26 +13448,6 @@ snapshots: '@pkgr/core': 0.1.1 tslib: 2.8.1 - system-architecture@0.1.0: {} - - tabbable@6.2.0: {} - - tailwind-config-viewer@2.0.4(tailwindcss@3.4.17): - dependencies: - '@koa/router': 12.0.2 - commander: 6.2.1 - fs-extra: 9.1.0 - koa: 2.15.3 - koa-static: 5.0.0 - open: 7.4.2 - portfinder: 1.0.32 - replace-in-file: 6.3.5 - tailwindcss: 3.4.17 - transitivePeerDependencies: - - supports-color - - tailwind-merge@2.6.0: {} - tailwindcss@3.4.17: dependencies: '@alloc/quick-lru': 5.2.0 @@ -20657,38 +13474,9 @@ snapshots: sucrase: 3.35.0 transitivePeerDependencies: - ts-node - - tapable@2.2.1: {} - - tar-fs@2.1.1: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.2 - tar-stream: 2.2.0 - - tar-fs@3.0.6: - dependencies: - pump: 3.0.2 - tar-stream: 3.1.7 - optionalDependencies: - bare-fs: 2.3.5 - bare-path: 2.1.3 optional: true - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.4 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - - tar-stream@3.1.7: - dependencies: - b4a: 1.6.7 - fast-fifo: 1.3.2 - streamx: 2.20.1 + tapable@2.2.1: {} tar@6.2.1: dependencies: @@ -20708,17 +13496,6 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 - terser-webpack-plugin@5.3.10(esbuild@0.23.1)(webpack@5.97.1(esbuild@0.23.1)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.37.0 - webpack: 5.97.1(esbuild@0.23.1) - optionalDependencies: - esbuild: 0.23.1 - terser-webpack-plugin@5.3.10(esbuild@0.24.2)(webpack@5.97.1): dependencies: '@jridgewell/trace-mapping': 0.3.25 @@ -20737,32 +13514,22 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - text-decoder@1.2.0: - dependencies: - b4a: 1.6.7 - thenify-all@1.6.0: dependencies: thenify: 3.3.1 + optional: true thenify@3.3.1: dependencies: any-promise: 1.3.0 + optional: true thingies@1.21.0(tslib@2.8.1): dependencies: tslib: 2.8.1 - third-party-capital@2.3.0: - dependencies: - semver: 7.6.3 - thunky@1.1.0: {} - tiny-inflate@1.0.3: {} - - tiny-invariant@1.3.3: {} - tinybench@2.9.0: {} tinyexec@0.3.2: {} @@ -20801,14 +13568,10 @@ snapshots: dependencies: eslint-visitor-keys: 3.4.3 - totalist@3.0.1: {} - tough-cookie@5.0.0: dependencies: tldts: 6.1.48 - tr46@0.0.3: {} - tr46@5.0.0: dependencies: punycode: 2.3.1 @@ -20819,41 +13582,31 @@ snapshots: tree-kill@1.2.2: {} - trim-lines@3.0.1: {} - - trim-trailing-lines@2.1.0: {} - - trough@2.2.0: {} - ts-api-utils@2.0.0(typescript@5.7.3): dependencies: typescript: 5.7.3 - ts-interface-checker@0.1.13: {} + ts-interface-checker@0.1.13: + optional: true tslib@2.8.1: {} - tsscmp@1.0.6: {} - tsx@4.19.1: dependencies: esbuild: 0.23.1 get-tsconfig: 4.8.1 optionalDependencies: fsevents: 2.3.3 + optional: true tuf-js@3.0.1: dependencies: '@tufjs/models': 3.0.1 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 make-fetch-happen: 14.0.3 transitivePeerDependencies: - supports-color - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - turbo-stream@2.4.0: {} type-check@0.4.0: @@ -20868,15 +13621,11 @@ snapshots: type-fest@0.8.1: {} - type-fest@4.26.1: {} - type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - type-level-regexp@0.1.17: {} - typed-assert@1.0.9: {} typescript@5.7.3: {} @@ -20886,8 +13635,6 @@ snapshots: ufo@1.5.4: {} - ultrahtml@1.5.3: {} - unbuild@3.3.1(sass@1.83.4)(typescript@5.7.3)(vue-tsc@2.1.10(typescript@5.7.3))(vue@3.5.13(typescript@5.7.3)): dependencies: '@rollup/plugin-alias': 5.1.1(rollup@4.30.1) @@ -20921,94 +13668,28 @@ snapshots: - vue - vue-tsc - unconfig@0.5.5: - dependencies: - '@antfu/utils': 0.7.10 - defu: 6.1.4 - importx: 0.4.4 - transitivePeerDependencies: - - supports-color - - uncrypto@0.1.3: {} - unctx@2.4.1: dependencies: acorn: 8.14.0 estree-walker: 3.0.3 magic-string: 0.30.17 unplugin: 2.1.2 + optional: true undici-types@6.20.0: {} - undici@6.19.8: {} - - unenv@1.10.0: - dependencies: - consola: 3.4.0 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.4 - pathe: 1.1.2 - unicode-canonical-property-names-ecmascript@2.0.1: {} - unicode-emoji-modifier-base@1.0.0: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.1.0 - - unicode-match-property-value-ecmascript@2.2.0: {} - - unicode-properties@1.4.1: - dependencies: - base64-js: 1.5.1 - unicode-trie: 2.0.0 - - unicode-property-aliases-ecmascript@2.1.0: {} - - unicode-trie@2.0.0: - dependencies: - pako: 0.2.9 - tiny-inflate: 1.0.3 - - unicorn-magic@0.1.0: {} - - unicorn-magic@0.3.0: {} - - unified@11.0.5: - dependencies: - '@types/unist': 3.0.3 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - - unifont@0.1.6: - dependencies: - css-tree: 3.1.0 - ohash: 1.1.4 - - unimport@3.13.1(rollup@4.30.1): - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - acorn: 8.14.0 - escape-string-regexp: 5.0.0 - estree-walker: 3.0.3 - fast-glob: 3.3.3 - local-pkg: 0.5.1 - magic-string: 0.30.17 - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.0 - scule: 1.3.0 - strip-literal: 2.1.0 - unplugin: 1.16.0 - transitivePeerDependencies: - - rollup + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unicorn-magic@0.1.0: {} unimport@3.14.5(rollup@4.30.1): dependencies: @@ -21029,25 +13710,6 @@ snapshots: transitivePeerDependencies: - rollup - unimport@3.14.6(rollup@4.30.1): - dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - acorn: 8.14.0 - escape-string-regexp: 5.0.0 - estree-walker: 3.0.3 - fast-glob: 3.3.3 - local-pkg: 1.0.0 - magic-string: 0.30.17 - mlly: 1.7.4 - pathe: 2.0.2 - picomatch: 4.0.2 - pkg-types: 1.3.1 - scule: 1.3.0 - strip-literal: 2.1.1 - unplugin: 1.16.1 - transitivePeerDependencies: - - rollup - unimport@4.0.0(rollup@4.30.1): dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.30.1) @@ -21066,6 +13728,7 @@ snapshots: unplugin: 2.1.2 transitivePeerDependencies: - rollup + optional: true unique-filename@4.0.0: dependencies: @@ -21075,23 +13738,10 @@ snapshots: dependencies: imurmurhash: 0.1.4 - unist-builder@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-find-after@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 @@ -21112,33 +13762,6 @@ snapshots: universalify@2.0.1: {} - unocss@0.62.4(@unocss/webpack@0.62.4(rollup@4.30.1)(webpack@5.97.1(esbuild@0.23.1)))(postcss@8.5.1)(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)): - dependencies: - '@unocss/astro': 0.62.4(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - '@unocss/cli': 0.62.4(rollup@4.30.1) - '@unocss/core': 0.62.4 - '@unocss/postcss': 0.62.4(postcss@8.5.1) - '@unocss/preset-attributify': 0.62.4 - '@unocss/preset-icons': 0.62.4 - '@unocss/preset-mini': 0.62.4 - '@unocss/preset-tagify': 0.62.4 - '@unocss/preset-typography': 0.62.4 - '@unocss/preset-uno': 0.62.4 - '@unocss/preset-web-fonts': 0.62.4 - '@unocss/preset-wind': 0.62.4 - '@unocss/transformer-attributify-jsx': 0.62.4 - '@unocss/transformer-compile-class': 0.62.4 - '@unocss/transformer-directives': 0.62.4 - '@unocss/transformer-variant-group': 0.62.4 - '@unocss/vite': 0.62.4(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)) - optionalDependencies: - '@unocss/webpack': 0.62.4(rollup@4.30.1)(webpack@5.97.1(esbuild@0.23.1)) - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - transitivePeerDependencies: - - postcss - - rollup - - supports-color - unpipe@1.0.0: {} unplugin-ast@0.13.1(rollup@4.30.1): @@ -21172,7 +13795,7 @@ snapshots: '@antfu/utils': 0.7.10 '@rollup/pluginutils': 5.1.4(rollup@4.30.1) chokidar: 3.6.0 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 fast-glob: 3.3.3 local-pkg: 0.5.1 magic-string: 0.30.17 @@ -21187,97 +13810,16 @@ snapshots: - rollup - supports-color - unplugin-vue-router@0.11.1(rollup@4.30.1)(vue-router@4.5.0(vue@3.5.13(typescript@5.7.3)))(vue@3.5.13(typescript@5.7.3)): - dependencies: - '@babel/types': 7.26.7 - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - '@vue-macros/common': 1.16.1(vue@3.5.13(typescript@5.7.3)) - ast-walker-scope: 0.6.2 - chokidar: 3.6.0 - fast-glob: 3.3.3 - json5: 2.2.3 - local-pkg: 1.0.0 - magic-string: 0.30.17 - mlly: 1.7.4 - pathe: 2.0.2 - scule: 1.3.0 - unplugin: 2.1.2 - yaml: 2.7.0 - optionalDependencies: - vue-router: 4.5.0(vue@3.5.13(typescript@5.7.3)) - transitivePeerDependencies: - - rollup - - vue - unplugin@1.16.0: dependencies: acorn: 8.14.0 webpack-virtual-modules: 0.6.2 - unplugin@1.16.1: - dependencies: - acorn: 8.14.0 - webpack-virtual-modules: 0.6.2 - unplugin@2.1.2: dependencies: acorn: 8.14.0 webpack-virtual-modules: 0.6.2 - unstorage@1.12.0(ioredis@5.4.1): - dependencies: - anymatch: 3.1.3 - chokidar: 3.6.0 - destr: 2.0.3 - h3: 1.12.0 - listhen: 1.8.0 - lru-cache: 10.4.3 - mri: 1.2.0 - node-fetch-native: 1.6.4 - ofetch: 1.4.0 - ufo: 1.5.4 - optionalDependencies: - ioredis: 5.4.1 - transitivePeerDependencies: - - uWebSockets.js - - unstorage@1.13.1(ioredis@5.4.1): - dependencies: - anymatch: 3.1.3 - chokidar: 3.6.0 - citty: 0.1.6 - destr: 2.0.3 - h3: 1.13.0 - listhen: 1.9.0 - lru-cache: 10.4.3 - node-fetch-native: 1.6.4 - ofetch: 1.4.1 - ufo: 1.5.4 - optionalDependencies: - ioredis: 5.4.1 - transitivePeerDependencies: - - uWebSockets.js - - unstorage@1.14.4(db0@0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1))(ioredis@5.4.1): - dependencies: - anymatch: 3.1.3 - chokidar: 3.6.0 - destr: 2.0.3 - h3: 1.14.0 - lru-cache: 10.4.3 - node-fetch-native: 1.6.4 - ofetch: 1.4.1 - ufo: 1.5.4 - optionalDependencies: - db0: 0.2.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1) - ioredis: 5.4.1 - - untun@0.1.3: - dependencies: - citty: 0.1.6 - consola: 3.4.0 - pathe: 1.1.2 - untyped@1.5.2: dependencies: '@babel/core': 7.26.0 @@ -21291,31 +13833,16 @@ snapshots: transitivePeerDependencies: - supports-color - unwasm@0.3.9: - dependencies: - knitwork: 1.2.0 - magic-string: 0.30.17 - mlly: 1.7.4 - pathe: 1.1.2 - pkg-types: 1.3.1 - unplugin: 1.16.1 - update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 escalade: 3.2.0 picocolors: 1.1.1 - uqr@0.1.2: {} - - uri-js-replace@1.0.1: {} - uri-js@4.4.1: dependencies: punycode: 2.3.1 - urlpattern-polyfill@8.0.2: {} - util-deprecate@1.0.2: {} utility-types@3.11.0: {} @@ -21324,14 +13851,6 @@ snapshots: uuid@8.3.2: {} - v-lazy-show@0.2.4(@vue/compiler-core@3.5.13): - dependencies: - '@vue/compiler-core': 3.5.13 - - valibot@0.42.1(typescript@5.7.3): - optionalDependencies: - typescript: 5.7.3 - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -21341,29 +13860,10 @@ snapshots: vary@1.1.2: {} - vfile-location@5.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile: 6.0.3 - - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.2 - - vite-hot-client@0.2.4(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)): - dependencies: - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - vite-node@3.0.4(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0): dependencies: cac: 6.7.14 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.2 vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) @@ -21381,62 +13881,6 @@ snapshots: - tsx - yaml - vite-plugin-checker@0.8.0(eslint@9.19.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.7.3)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0))(vue-tsc@2.1.10(typescript@5.7.3)): - dependencies: - '@babel/code-frame': 7.26.2 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - chokidar: 3.6.0 - commander: 8.3.0 - fast-glob: 3.3.3 - fs-extra: 11.3.0 - npm-run-path: 4.0.1 - strip-ansi: 6.0.1 - tiny-invariant: 1.3.3 - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - vscode-languageclient: 7.0.0 - vscode-languageserver: 7.0.0 - vscode-languageserver-textdocument: 1.0.12 - vscode-uri: 3.0.8 - optionalDependencies: - eslint: 9.19.0(jiti@2.4.2) - optionator: 0.9.4 - typescript: 5.7.3 - vue-tsc: 2.1.10(typescript@5.7.3) - - vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.0(magicast@0.3.5)(rollup@4.30.1))(rollup@4.30.1)(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)): - dependencies: - '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.4(rollup@4.30.1) - debug: 4.4.0(supports-color@9.4.0) - error-stack-parser-es: 0.1.5 - fs-extra: 11.3.0 - open: 10.1.0 - perfect-debounce: 1.0.0 - picocolors: 1.1.1 - sirv: 3.0.0 - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - optionalDependencies: - '@nuxt/kit': 3.15.0(magicast@0.3.5)(rollup@4.30.1) - transitivePeerDependencies: - - rollup - - supports-color - - vite-plugin-vue-inspector@5.3.1(vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0)): - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.26.0) - '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.26.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) - '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) - '@vue/compiler-dom': 3.5.13 - kolorist: 1.8.0 - magic-string: 0.30.17 - vite: 6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.2)(sass@1.83.4)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0) - transitivePeerDependencies: - - supports-color - vite@6.0.11(@types/node@22.12.0)(jiti@2.4.2)(less@4.2.1)(sass@1.83.1)(terser@5.37.0)(tsx@4.19.1)(yaml@2.7.0): dependencies: esbuild: 0.24.2 @@ -21477,7 +13921,7 @@ snapshots: '@vitest/spy': 3.0.4 '@vitest/utils': 3.0.4 chai: 5.1.2 - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 expect-type: 1.1.0 magic-string: 0.30.17 pathe: 2.0.2 @@ -21510,53 +13954,16 @@ snapshots: void-elements@2.0.1: optional: true - vscode-jsonrpc@6.0.0: {} - - vscode-languageclient@7.0.0: - dependencies: - minimatch: 3.1.2 - semver: 7.6.3 - vscode-languageserver-protocol: 3.16.0 - - vscode-languageserver-protocol@3.16.0: - dependencies: - vscode-jsonrpc: 6.0.0 - vscode-languageserver-types: 3.16.0 - - vscode-languageserver-textdocument@1.0.12: {} - - vscode-languageserver-types@3.16.0: {} - - vscode-languageserver@7.0.0: - dependencies: - vscode-languageserver-protocol: 3.16.0 - - vscode-uri@3.0.8: {} - - vue-bundle-renderer@2.1.1: - dependencies: - ufo: 1.5.4 - - vue-component-meta@2.2.0(typescript@5.7.3): - dependencies: - '@volar/typescript': 2.4.11 - '@vue/language-core': 2.2.0(typescript@5.7.3) - path-browserify: 1.0.1 - vue-component-type-helpers: 2.2.0 - optionalDependencies: - typescript: 5.7.3 - - vue-component-type-helpers@2.2.0: {} + vscode-uri@3.0.8: + optional: true vue-demi@0.14.10(vue@3.5.13(typescript@5.7.3)): dependencies: vue: 3.5.13(typescript@5.7.3) - vue-devtools-stub@0.1.0: {} - vue-eslint-parser@9.4.3(eslint@9.19.0(jiti@2.4.2)): dependencies: - debug: 4.4.0(supports-color@9.4.0) + debug: 4.4.0 eslint: 9.19.0(jiti@2.4.2) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -21580,11 +13987,6 @@ snapshots: typescript: 5.7.3 optional: true - vue3-smooth-dnd@0.0.6(vue@3.5.13(typescript@5.7.3)): - dependencies: - smooth-dnd: 0.12.1 - vue: 3.5.13(typescript@5.7.3) - vue@3.5.13(typescript@5.7.3): dependencies: '@vue/compiler-dom': 3.5.13 @@ -21615,12 +14017,6 @@ snapshots: weak-lru-cache@1.2.2: optional: true - web-namespaces@2.0.1: {} - - web-streams-polyfill@3.3.3: {} - - webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} webpack-dev-middleware@7.4.2(webpack@5.97.1): @@ -21686,36 +14082,6 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.97.1(esbuild@0.23.1): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.6 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.0 - browserslist: 4.24.2 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.6.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.23.1)(webpack@5.97.1(esbuild@0.23.1)) - watchpack: 2.4.2 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - webpack@5.97.1(esbuild@0.24.2): dependencies: '@types/eslint-scope': 3.7.7 @@ -21765,19 +14131,10 @@ snapshots: tr46: 5.0.0 webidl-conversions: 7.0.0 - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - which@2.0.2: dependencies: isexe: 2.0.0 - which@3.0.1: - dependencies: - isexe: 2.0.0 - which@5.0.0: dependencies: isexe: 3.1.1 @@ -21787,10 +14144,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - wildcard@2.0.1: {} word-wrap@1.2.5: {} @@ -21819,9 +14172,11 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.1.0 - wrappy@1.0.2: {} + wrappy@1.0.2: + optional: true - ws@8.17.1: {} + ws@8.17.1: + optional: true ws@8.18.0: {} @@ -21833,16 +14188,6 @@ snapshots: xmlchars@2.2.0: {} - xmlhttprequest-ssl@2.1.1: {} - - xss@1.0.15: - dependencies: - commander: 2.20.3 - cssfilter: 0.0.10 - optional: true - - xtend@4.0.2: {} - y18n@5.0.8: {} yallist@3.1.1: {} @@ -21851,16 +14196,12 @@ snapshots: yallist@5.0.0: {} - yaml-ast-parser@0.0.43: {} - yaml-eslint-parser@1.2.3: dependencies: eslint-visitor-keys: 3.4.3 lodash: 4.17.21 yaml: 2.7.0 - yaml@2.6.1: {} - yaml@2.7.0: {} yargs-parser@20.2.9: @@ -21889,37 +14230,14 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - ylru@1.4.0: {} - yocto-queue@0.1.0: {} yocto-queue@1.1.1: {} yoctocolors-cjs@2.1.2: {} - yoctocolors@2.1.1: {} - - yoga-wasm-web@0.3.3: {} - zhead@2.2.4: {} - zip-stream@6.0.1: - dependencies: - archiver-utils: 5.0.2 - compress-commons: 6.0.2 - readable-stream: 4.5.2 - - zod-to-json-schema@3.24.1(zod@3.24.1): - dependencies: - zod: 3.24.1 - - zod-to-ts@1.2.0(typescript@5.7.3)(zod@3.24.1): - dependencies: - typescript: 5.7.3 - zod: 3.24.1 - - zod@3.24.1: {} - zone.js@0.15.0: {} zwitch@2.0.4: {}