From 33c8172ed2dbb56551b3a2665ef403e0eb6c1d5a Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 25 Jan 2026 14:37:46 +0000
Subject: [PATCH 01/21] Initial plan
From d920c95a8dcfebde990af413a9429c10e34f0e35 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 25 Jan 2026 14:43:06 +0000
Subject: [PATCH 02/21] Add dynamic OG image generation via API route
Co-authored-by: abernier <76580+abernier@users.noreply.github.com>
---
src/app/[...slug]/page.tsx | 11 +++-
src/app/api/og/route.tsx | 129 +++++++++++++++++++++++++++++++++++++
2 files changed, 138 insertions(+), 2 deletions(-)
create mode 100644 src/app/api/og/route.tsx
diff --git a/src/app/[...slug]/page.tsx b/src/app/[...slug]/page.tsx
index 518116ca..f678fcac 100644
--- a/src/app/[...slug]/page.tsx
+++ b/src/app/[...slug]/page.tsx
@@ -13,17 +13,24 @@ export async function generateMetadata({ params }: Props) {
const title = `${doc.title} - ${process.env.NEXT_PUBLIC_LIBNAME}`
const description = doc.description
const url = doc.url
- const image = doc.image
+ const ogImageUrl = `/api/og?slug=${slug.join('/')}`
return {
title,
description,
openGraph: {
title,
- images: [{ url: image }],
description,
url,
type: 'article',
+ images: [
+ {
+ url: ogImageUrl,
+ width: 1200,
+ height: 630,
+ alt: doc.title,
+ },
+ ],
},
}
}
diff --git a/src/app/api/og/route.tsx b/src/app/api/og/route.tsx
new file mode 100644
index 00000000..9038b58c
--- /dev/null
+++ b/src/app/api/og/route.tsx
@@ -0,0 +1,129 @@
+import { getData } from '@/utils/docs'
+import { ImageResponse } from 'next/og'
+import { NextRequest } from 'next/server'
+
+export const runtime = 'nodejs'
+
+export async function GET(request: NextRequest) {
+ try {
+ const { searchParams } = new URL(request.url)
+ const slugParam = searchParams.get('slug')
+
+ if (!slugParam) {
+ return new Response('Missing slug parameter', { status: 400 })
+ }
+
+ const slug = slugParam.split('/')
+ const { doc } = await getData(...slug)
+
+ const NEXT_PUBLIC_LIBNAME = process.env.NEXT_PUBLIC_LIBNAME || 'Documentation'
+ const primary = process.env.THEME_PRIMARY || '#323e48'
+
+ return new ImageResponse(
+
+ {/* Site name / logo area */}
+
+
+
+ {NEXT_PUBLIC_LIBNAME}
+
+
+
+ {/* Main content area */}
+
+
+ {doc.title}
+
+ {doc.description && (
+
+ {doc.description}
+
+ )}
+
+
+ {/* Footer area */}
+
+ {process.env.NEXT_PUBLIC_URL?.replace(/^https?:\/\//, '') || 'docs'}
+
+
,
+ {
+ width: 1200,
+ height: 630,
+ },
+ )
+ } catch (e) {
+ console.error('Error generating OG image:', e)
+ return new Response('Failed to generate image', { status: 500 })
+ }
+}
From 8fd4e076c05e8fd8110f61ed313cb220b1a9bd97 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 25 Jan 2026 14:48:00 +0000
Subject: [PATCH 03/21] Improve error handling in OG image generation
Co-authored-by: abernier <76580+abernier@users.noreply.github.com>
---
src/app/api/og/route.tsx | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/app/api/og/route.tsx b/src/app/api/og/route.tsx
index 9038b58c..cd8858c2 100644
--- a/src/app/api/og/route.tsx
+++ b/src/app/api/og/route.tsx
@@ -14,7 +14,14 @@ export async function GET(request: NextRequest) {
}
const slug = slugParam.split('/')
- const { doc } = await getData(...slug)
+ let doc
+ try {
+ const result = await getData(...slug)
+ doc = result.doc
+ } catch (error) {
+ console.error('Error fetching doc data:', error)
+ return new Response('Doc not found', { status: 404 })
+ }
const NEXT_PUBLIC_LIBNAME = process.env.NEXT_PUBLIC_LIBNAME || 'Documentation'
const primary = process.env.THEME_PRIMARY || '#323e48'
From 86bd0d8f4fd10859f9be790add405640222bdacb Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 25 Jan 2026 17:04:42 +0000
Subject: [PATCH 04/21] Remove API route incompatible with static export
The /api/og route cannot work with output: 'export' which is used by this project. Next.js API routes are not supported in static exports. Removed the API route to fix the build failure.
Co-authored-by: abernier <76580+abernier@users.noreply.github.com>
---
src/app/api/og/route.tsx | 136 ---------------------------------------
1 file changed, 136 deletions(-)
delete mode 100644 src/app/api/og/route.tsx
diff --git a/src/app/api/og/route.tsx b/src/app/api/og/route.tsx
deleted file mode 100644
index cd8858c2..00000000
--- a/src/app/api/og/route.tsx
+++ /dev/null
@@ -1,136 +0,0 @@
-import { getData } from '@/utils/docs'
-import { ImageResponse } from 'next/og'
-import { NextRequest } from 'next/server'
-
-export const runtime = 'nodejs'
-
-export async function GET(request: NextRequest) {
- try {
- const { searchParams } = new URL(request.url)
- const slugParam = searchParams.get('slug')
-
- if (!slugParam) {
- return new Response('Missing slug parameter', { status: 400 })
- }
-
- const slug = slugParam.split('/')
- let doc
- try {
- const result = await getData(...slug)
- doc = result.doc
- } catch (error) {
- console.error('Error fetching doc data:', error)
- return new Response('Doc not found', { status: 404 })
- }
-
- const NEXT_PUBLIC_LIBNAME = process.env.NEXT_PUBLIC_LIBNAME || 'Documentation'
- const primary = process.env.THEME_PRIMARY || '#323e48'
-
- return new ImageResponse(
-
- {/* Site name / logo area */}
-
-
-
- {NEXT_PUBLIC_LIBNAME}
-
-
-
- {/* Main content area */}
-
-
- {doc.title}
-
- {doc.description && (
-
- {doc.description}
-
- )}
-
-
- {/* Footer area */}
-
- {process.env.NEXT_PUBLIC_URL?.replace(/^https?:\/\//, '') || 'docs'}
-
-
,
- {
- width: 1200,
- height: 630,
- },
- )
- } catch (e) {
- console.error('Error generating OG image:', e)
- return new Response('Failed to generate image', { status: 500 })
- }
-}
From d2e9db580b3309a228f4b79a696bcfaabe4fc1ed Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 25 Jan 2026 17:05:37 +0000
Subject: [PATCH 05/21] Restore original page metadata without API route
reference
Properly revert page.tsx to use doc.image instead of the non-existent /api/og route
Co-authored-by: abernier <76580+abernier@users.noreply.github.com>
---
src/app/[...slug]/page.tsx | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/src/app/[...slug]/page.tsx b/src/app/[...slug]/page.tsx
index f678fcac..518116ca 100644
--- a/src/app/[...slug]/page.tsx
+++ b/src/app/[...slug]/page.tsx
@@ -13,24 +13,17 @@ export async function generateMetadata({ params }: Props) {
const title = `${doc.title} - ${process.env.NEXT_PUBLIC_LIBNAME}`
const description = doc.description
const url = doc.url
- const ogImageUrl = `/api/og?slug=${slug.join('/')}`
+ const image = doc.image
return {
title,
description,
openGraph: {
title,
+ images: [{ url: image }],
description,
url,
type: 'article',
- images: [
- {
- url: ogImageUrl,
- width: 1200,
- height: 630,
- alt: doc.title,
- },
- ],
},
}
}
From 89c4485c0580da33443aa8041fe78ea015427bd8 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 25 Jan 2026 17:21:09 +0000
Subject: [PATCH 06/21] Implement build-time OG image generation
Add prebuild script that generates static OG images for all documentation pages using @vercel/og. Images are created at build time and saved to public/og/, making them compatible with static export.
- Created scripts/generate-og-images.mts to crawl MDX files and generate 1200x630 PNG images
- Updated package.json to add @vercel/og and tsx dependencies
- Added prebuild script to run OG generation before Next.js build
- Updated page metadata to reference generated images at /og/{slug}.png
- Added public/og/ to .gitignore as build artifacts
This approach works with output: 'export' by generating images at build time rather than runtime.
Co-authored-by: abernier <76580+abernier@users.noreply.github.com>
---
.gitignore | 1 +
package.json | 5 +-
pnpm-lock.yaml | 432 +++++++++++++++++++++++++++++++++
scripts/generate-og-images.mts | 234 ++++++++++++++++++
src/app/[...slug]/page.tsx | 12 +-
5 files changed, 681 insertions(+), 3 deletions(-)
create mode 100644 scripts/generate-og-images.mts
diff --git a/.gitignore b/.gitignore
index 0b08a48a..1e114af4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,4 @@ chromatic-archives/
*storybook.log
*archive.log
storybook-static
+public/og/
diff --git a/package.json b/package.json
index cf4a670c..951294dc 100644
--- a/package.json
+++ b/package.json
@@ -35,7 +35,9 @@
"tailwindcss": "^4.1.18",
"tailwindcss-animate": "^1.0.7",
"tw-animate-css": "^1.4.0",
- "typescript": "^5.6.2"
+ "typescript": "^5.6.2",
+ "@vercel/og": "^0.6.3",
+ "tsx": "^4.19.0"
},
"dependencies": {
"@codesandbox/sandpack-react": "^2.20.0",
@@ -72,6 +74,7 @@
"scripts": {
"dev": "NODE_OPTIONS='--inspect' next",
"start": "next start",
+ "prebuild": "tsx scripts/generate-og-images.mts",
"build": "next build",
"format": "prettier -w src/",
"lint": "eslint src/**/*.{ts,tsx} && prettier . --check",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 528e719e..40058c6f 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -141,6 +141,9 @@ importers:
'@types/sanitize-html':
specifier: ^2.16.0
version: 2.16.0
+ '@vercel/og':
+ specifier: ^0.6.3
+ version: 0.6.8
autoprefixer:
specifier: ^10.4.23
version: 10.4.23(postcss@8.5.6)
@@ -180,6 +183,9 @@ importers:
tailwindcss-animate:
specifier: ^1.0.7
version: 1.0.7(tailwindcss@4.1.18)
+ tsx:
+ specifier: ^4.19.0
+ version: 4.21.0
tw-animate-css:
specifier: ^1.4.0
version: 1.4.0
@@ -409,156 +415,312 @@ packages:
cpu: [ppc64]
os: [aix]
+ '@esbuild/aix-ppc64@0.27.2':
+ resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [aix]
+
'@esbuild/android-arm64@0.25.12':
resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
+ '@esbuild/android-arm64@0.27.2':
+ resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [android]
+
'@esbuild/android-arm@0.25.12':
resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
+ '@esbuild/android-arm@0.27.2':
+ resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [android]
+
'@esbuild/android-x64@0.25.12':
resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
+ '@esbuild/android-x64@0.27.2':
+ resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [android]
+
'@esbuild/darwin-arm64@0.25.12':
resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
+ '@esbuild/darwin-arm64@0.27.2':
+ resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [darwin]
+
'@esbuild/darwin-x64@0.25.12':
resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
+ '@esbuild/darwin-x64@0.27.2':
+ resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [darwin]
+
'@esbuild/freebsd-arm64@0.25.12':
resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
+ '@esbuild/freebsd-arm64@0.27.2':
+ resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [freebsd]
+
'@esbuild/freebsd-x64@0.25.12':
resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
+ '@esbuild/freebsd-x64@0.27.2':
+ resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [freebsd]
+
'@esbuild/linux-arm64@0.25.12':
resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
+ '@esbuild/linux-arm64@0.27.2':
+ resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [linux]
+
'@esbuild/linux-arm@0.25.12':
resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
+ '@esbuild/linux-arm@0.27.2':
+ resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==}
+ engines: {node: '>=18'}
+ cpu: [arm]
+ os: [linux]
+
'@esbuild/linux-ia32@0.25.12':
resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
+ '@esbuild/linux-ia32@0.27.2':
+ resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [linux]
+
'@esbuild/linux-loong64@0.25.12':
resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
+ '@esbuild/linux-loong64@0.27.2':
+ resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==}
+ engines: {node: '>=18'}
+ cpu: [loong64]
+ os: [linux]
+
'@esbuild/linux-mips64el@0.25.12':
resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
+ '@esbuild/linux-mips64el@0.27.2':
+ resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==}
+ engines: {node: '>=18'}
+ cpu: [mips64el]
+ os: [linux]
+
'@esbuild/linux-ppc64@0.25.12':
resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
+ '@esbuild/linux-ppc64@0.27.2':
+ resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==}
+ engines: {node: '>=18'}
+ cpu: [ppc64]
+ os: [linux]
+
'@esbuild/linux-riscv64@0.25.12':
resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
+ '@esbuild/linux-riscv64@0.27.2':
+ resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==}
+ engines: {node: '>=18'}
+ cpu: [riscv64]
+ os: [linux]
+
'@esbuild/linux-s390x@0.25.12':
resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
+ '@esbuild/linux-s390x@0.27.2':
+ resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==}
+ engines: {node: '>=18'}
+ cpu: [s390x]
+ os: [linux]
+
'@esbuild/linux-x64@0.25.12':
resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
+ '@esbuild/linux-x64@0.27.2':
+ resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [linux]
+
'@esbuild/netbsd-arm64@0.25.12':
resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
+ '@esbuild/netbsd-arm64@0.27.2':
+ resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [netbsd]
+
'@esbuild/netbsd-x64@0.25.12':
resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
+ '@esbuild/netbsd-x64@0.27.2':
+ resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [netbsd]
+
'@esbuild/openbsd-arm64@0.25.12':
resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
+ '@esbuild/openbsd-arm64@0.27.2':
+ resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openbsd]
+
'@esbuild/openbsd-x64@0.25.12':
resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
+ '@esbuild/openbsd-x64@0.27.2':
+ resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [openbsd]
+
'@esbuild/openharmony-arm64@0.25.12':
resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
+ '@esbuild/openharmony-arm64@0.27.2':
+ resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [openharmony]
+
'@esbuild/sunos-x64@0.25.12':
resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
+ '@esbuild/sunos-x64@0.27.2':
+ resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [sunos]
+
'@esbuild/win32-arm64@0.25.12':
resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
+ '@esbuild/win32-arm64@0.27.2':
+ resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==}
+ engines: {node: '>=18'}
+ cpu: [arm64]
+ os: [win32]
+
'@esbuild/win32-ia32@0.25.12':
resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
+ '@esbuild/win32-ia32@0.27.2':
+ resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==}
+ engines: {node: '>=18'}
+ cpu: [ia32]
+ os: [win32]
+
'@esbuild/win32-x64@0.25.12':
resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
+ '@esbuild/win32-x64@0.27.2':
+ resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==}
+ engines: {node: '>=18'}
+ cpu: [x64]
+ os: [win32]
+
'@eslint-community/eslint-utils@4.9.1':
resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1180,6 +1342,10 @@ packages:
peerDependencies:
react: '>=16.8'
+ '@resvg/resvg-wasm@2.4.0':
+ resolution: {integrity: sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg==}
+ engines: {node: '>= 10'}
+
'@rtsao/scc@1.1.0':
resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
@@ -1193,6 +1359,11 @@ packages:
resolution: {integrity: sha512-xwMkyXgr7xgPsP0w79nzCwRHYi9jzj9ps4Im7xWGK8AKKE4eox39tMZOdRtpDbvXQlrs9fh64ZC0w/yZZDM/9g==}
engines: {node: '>=18'}
+ '@shuding/opentype.js@1.4.0-beta.0':
+ resolution: {integrity: sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==}
+ engines: {node: '>= 8.0.0'}
+ hasBin: true
+
'@stitches/core@1.2.8':
resolution: {integrity: sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==}
@@ -1789,6 +1960,10 @@ packages:
cpu: [x64]
os: [win32]
+ '@vercel/og@0.6.8':
+ resolution: {integrity: sha512-e4kQK9mP8ntpo3dACWirGod/hHv4qO5JMj9a/0a2AZto7b4persj5YP7t1Er372gTtYFTYxNhMx34jRvHooglw==}
+ engines: {node: '>=16'}
+
'@webassemblyjs/ast@1.14.1':
resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
@@ -2006,6 +2181,10 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ 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==}
@@ -2077,6 +2256,9 @@ packages:
camel-case@4.1.2:
resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==}
+ camelize@1.0.1:
+ resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==}
+
caniuse-lite@1.0.30001765:
resolution: {integrity: sha512-LWcNtSyZrakjECqmpP4qdg0MMGdN368D7X8XvvAqOcqMv0RxnlqVKZl2V6/mBR68oYMxOZPLw/gO7DuisMHUvQ==}
@@ -2236,6 +2418,20 @@ packages:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
+ 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-gradient-parser@0.0.16:
+ resolution: {integrity: sha512-3O5QdqgFRUbXvK1x5INf1YkBz1UKSWqrd63vWsum8MNHDBYD5urm3QtxZbKU259OrEXNM26lP/MPY3d1IGkBgA==}
+ engines: {node: '>=16'}
+
css-loader@6.11.0:
resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==}
engines: {node: '>= 12.13.0'}
@@ -2251,6 +2447,9 @@ packages:
css-select@4.3.0:
resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
+ css-to-react-native@3.2.0:
+ resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==}
+
css-what@6.2.2:
resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==}
engines: {node: '>= 6'}
@@ -2664,6 +2863,11 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ esbuild@0.27.2:
+ resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==}
+ engines: {node: '>=18'}
+ hasBin: true
+
escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
@@ -2671,6 +2875,9 @@ packages:
escape-carriage@1.3.1:
resolution: {integrity: sha512-GwBr6yViW3ttx1kb7/Oh+gKQ1/TrhYwxKqVmg5gS+BK+Qe2KrOa/Vh7w3HPBvgGf0LfcDGoY9I6NHKoA5Hozhw==}
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
@@ -2895,6 +3102,9 @@ packages:
picomatch:
optional: true
+ fflate@0.7.4:
+ resolution: {integrity: sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==}
+
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
@@ -3113,6 +3323,10 @@ packages:
hermes-parser@0.25.1:
resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
+ hex-rgb@4.3.0:
+ resolution: {integrity: sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==}
+ engines: {node: '>=6'}
+
html-entities@2.6.0:
resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==}
@@ -3565,6 +3779,9 @@ packages:
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==}
@@ -4047,6 +4264,9 @@ packages:
package-manager-detector@1.6.0:
resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==}
+ pako@0.2.9:
+ resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
+
param-case@3.0.4:
resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
@@ -4054,6 +4274,9 @@ packages:
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.2:
resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
@@ -4517,6 +4740,10 @@ packages:
sanitize-html@2.17.0:
resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==}
+ satori@0.12.2:
+ resolution: {integrity: sha512-3C/laIeE6UUe9A+iQ0A48ywPVCCMKCNSTU5Os101Vhgsjd3AAxGNjyq0uAA8kulMPK5n0csn8JlxPN9riXEjLA==}
+ engines: {node: '>=16'}
+
scheduler@0.27.0:
resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
@@ -4654,6 +4881,9 @@ 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.prototype.includes@2.0.1:
resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
engines: {node: '>= 0.4'}
@@ -4787,6 +5017,9 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ 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==}
@@ -4827,6 +5060,11 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+ tsx@4.21.0:
+ resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==}
+ engines: {node: '>=18.0.0'}
+ hasBin: true
+
tw-animate-css@1.4.0:
resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==}
@@ -4879,6 +5117,9 @@ packages:
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
+ unicode-trie@2.0.0:
+ resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
+
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
@@ -5118,6 +5359,9 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
+ yoga-wasm-web@0.3.3:
+ resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==}
+
zod-validation-error@4.0.2:
resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
engines: {node: '>=18.0.0'}
@@ -5575,81 +5819,159 @@ snapshots:
'@esbuild/aix-ppc64@0.25.12':
optional: true
+ '@esbuild/aix-ppc64@0.27.2':
+ optional: true
+
'@esbuild/android-arm64@0.25.12':
optional: true
+ '@esbuild/android-arm64@0.27.2':
+ optional: true
+
'@esbuild/android-arm@0.25.12':
optional: true
+ '@esbuild/android-arm@0.27.2':
+ optional: true
+
'@esbuild/android-x64@0.25.12':
optional: true
+ '@esbuild/android-x64@0.27.2':
+ optional: true
+
'@esbuild/darwin-arm64@0.25.12':
optional: true
+ '@esbuild/darwin-arm64@0.27.2':
+ optional: true
+
'@esbuild/darwin-x64@0.25.12':
optional: true
+ '@esbuild/darwin-x64@0.27.2':
+ optional: true
+
'@esbuild/freebsd-arm64@0.25.12':
optional: true
+ '@esbuild/freebsd-arm64@0.27.2':
+ optional: true
+
'@esbuild/freebsd-x64@0.25.12':
optional: true
+ '@esbuild/freebsd-x64@0.27.2':
+ optional: true
+
'@esbuild/linux-arm64@0.25.12':
optional: true
+ '@esbuild/linux-arm64@0.27.2':
+ optional: true
+
'@esbuild/linux-arm@0.25.12':
optional: true
+ '@esbuild/linux-arm@0.27.2':
+ optional: true
+
'@esbuild/linux-ia32@0.25.12':
optional: true
+ '@esbuild/linux-ia32@0.27.2':
+ optional: true
+
'@esbuild/linux-loong64@0.25.12':
optional: true
+ '@esbuild/linux-loong64@0.27.2':
+ optional: true
+
'@esbuild/linux-mips64el@0.25.12':
optional: true
+ '@esbuild/linux-mips64el@0.27.2':
+ optional: true
+
'@esbuild/linux-ppc64@0.25.12':
optional: true
+ '@esbuild/linux-ppc64@0.27.2':
+ optional: true
+
'@esbuild/linux-riscv64@0.25.12':
optional: true
+ '@esbuild/linux-riscv64@0.27.2':
+ optional: true
+
'@esbuild/linux-s390x@0.25.12':
optional: true
+ '@esbuild/linux-s390x@0.27.2':
+ optional: true
+
'@esbuild/linux-x64@0.25.12':
optional: true
+ '@esbuild/linux-x64@0.27.2':
+ optional: true
+
'@esbuild/netbsd-arm64@0.25.12':
optional: true
+ '@esbuild/netbsd-arm64@0.27.2':
+ optional: true
+
'@esbuild/netbsd-x64@0.25.12':
optional: true
+ '@esbuild/netbsd-x64@0.27.2':
+ optional: true
+
'@esbuild/openbsd-arm64@0.25.12':
optional: true
+ '@esbuild/openbsd-arm64@0.27.2':
+ optional: true
+
'@esbuild/openbsd-x64@0.25.12':
optional: true
+ '@esbuild/openbsd-x64@0.27.2':
+ optional: true
+
'@esbuild/openharmony-arm64@0.25.12':
optional: true
+ '@esbuild/openharmony-arm64@0.27.2':
+ optional: true
+
'@esbuild/sunos-x64@0.25.12':
optional: true
+ '@esbuild/sunos-x64@0.27.2':
+ optional: true
+
'@esbuild/win32-arm64@0.25.12':
optional: true
+ '@esbuild/win32-arm64@0.27.2':
+ optional: true
+
'@esbuild/win32-ia32@0.25.12':
optional: true
+ '@esbuild/win32-ia32@0.27.2':
+ optional: true
+
'@esbuild/win32-x64@0.25.12':
optional: true
+ '@esbuild/win32-x64@0.27.2':
+ optional: true
+
'@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))':
dependencies:
eslint: 9.39.2(jiti@2.6.1)
@@ -6233,6 +6555,8 @@ snapshots:
dependencies:
react: 19.2.3
+ '@resvg/resvg-wasm@2.4.0': {}
+
'@rtsao/scc@1.1.0': {}
'@segment/analytics-core@1.7.0':
@@ -6258,6 +6582,11 @@ snapshots:
transitivePeerDependencies:
- encoding
+ '@shuding/opentype.js@1.4.0-beta.0':
+ dependencies:
+ fflate: 0.7.4
+ string.prototype.codepointat: 0.2.1
+
'@stitches/core@1.2.8': {}
'@storybook/addon-actions@8.5.8(storybook@8.5.8(prettier@3.8.0))':
@@ -6928,6 +7257,12 @@ snapshots:
'@unrs/resolver-binding-win32-x64-msvc@1.11.1':
optional: true
+ '@vercel/og@0.6.8':
+ dependencies:
+ '@resvg/resvg-wasm': 2.4.0
+ satori: 0.12.2
+ yoga-wasm-web: 0.3.3
+
'@webassemblyjs/ast@1.14.1':
dependencies:
'@webassemblyjs/helper-numbers': 1.13.2
@@ -7182,6 +7517,8 @@ snapshots:
balanced-match@1.0.2: {}
+ base64-js@0.0.8: {}
+
base64-js@1.5.1: {}
baseline-browser-mapping@2.9.15: {}
@@ -7256,6 +7593,8 @@ snapshots:
pascal-case: 3.1.2
tslib: 2.8.1
+ camelize@1.0.1: {}
+
caniuse-lite@1.0.30001765: {}
case-sensitive-paths-webpack-plugin@2.4.0: {}
@@ -7402,6 +7741,14 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
+ css-background-parser@0.1.0: {}
+
+ css-box-shadow@1.0.0-3: {}
+
+ css-color-keywords@1.0.0: {}
+
+ css-gradient-parser@0.0.16: {}
+
css-loader@6.11.0(webpack@5.104.1(esbuild@0.25.12)):
dependencies:
icss-utils: 5.1.0(postcss@8.5.6)
@@ -7423,6 +7770,12 @@ snapshots:
domutils: 2.8.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-what@6.2.2: {}
cssesc@3.0.0: {}
@@ -7958,10 +8311,41 @@ snapshots:
'@esbuild/win32-ia32': 0.25.12
'@esbuild/win32-x64': 0.25.12
+ esbuild@0.27.2:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.27.2
+ '@esbuild/android-arm': 0.27.2
+ '@esbuild/android-arm64': 0.27.2
+ '@esbuild/android-x64': 0.27.2
+ '@esbuild/darwin-arm64': 0.27.2
+ '@esbuild/darwin-x64': 0.27.2
+ '@esbuild/freebsd-arm64': 0.27.2
+ '@esbuild/freebsd-x64': 0.27.2
+ '@esbuild/linux-arm': 0.27.2
+ '@esbuild/linux-arm64': 0.27.2
+ '@esbuild/linux-ia32': 0.27.2
+ '@esbuild/linux-loong64': 0.27.2
+ '@esbuild/linux-mips64el': 0.27.2
+ '@esbuild/linux-ppc64': 0.27.2
+ '@esbuild/linux-riscv64': 0.27.2
+ '@esbuild/linux-s390x': 0.27.2
+ '@esbuild/linux-x64': 0.27.2
+ '@esbuild/netbsd-arm64': 0.27.2
+ '@esbuild/netbsd-x64': 0.27.2
+ '@esbuild/openbsd-arm64': 0.27.2
+ '@esbuild/openbsd-x64': 0.27.2
+ '@esbuild/openharmony-arm64': 0.27.2
+ '@esbuild/sunos-x64': 0.27.2
+ '@esbuild/win32-arm64': 0.27.2
+ '@esbuild/win32-ia32': 0.27.2
+ '@esbuild/win32-x64': 0.27.2
+
escalade@3.2.0: {}
escape-carriage@1.3.1: {}
+ escape-html@1.0.3: {}
+
escape-string-regexp@4.0.0: {}
escape-string-regexp@5.0.0: {}
@@ -8285,6 +8669,8 @@ snapshots:
optionalDependencies:
picomatch: 4.0.3
+ fflate@0.7.4: {}
+
file-entry-cache@8.0.0:
dependencies:
flat-cache: 4.0.1
@@ -8578,6 +8964,8 @@ snapshots:
dependencies:
hermes-estree: 0.25.1
+ hex-rgb@4.3.0: {}
+
html-entities@2.6.0: {}
html-minifier-terser@6.1.0:
@@ -8984,6 +9372,11 @@ snapshots:
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: {}
lint-staged@15.5.2:
@@ -9764,6 +10157,8 @@ snapshots:
package-manager-detector@1.6.0: {}
+ pako@0.2.9: {}
+
param-case@3.0.4:
dependencies:
dot-case: 3.0.4
@@ -9773,6 +10168,11 @@ snapshots:
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.2:
dependencies:
'@types/unist': 2.0.11
@@ -10245,6 +10645,20 @@ snapshots:
parse-srcset: 1.0.2
postcss: 8.5.6
+ satori@0.12.2:
+ 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.6.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
+
scheduler@0.27.0: {}
schema-utils@3.3.0:
@@ -10429,6 +10843,8 @@ snapshots:
get-east-asian-width: 1.4.0
strip-ansi: 7.1.2
+ string.prototype.codepointat@0.2.1: {}
+
string.prototype.includes@2.0.1:
dependencies:
call-bind: 1.0.8
@@ -10563,6 +10979,8 @@ snapshots:
commander: 2.20.3
source-map-support: 0.5.21
+ tiny-inflate@1.0.3: {}
+
tiny-invariant@1.3.3: {}
tinyexec@1.0.2: {}
@@ -10597,6 +11015,13 @@ snapshots:
tslib@2.8.1: {}
+ tsx@4.21.0:
+ dependencies:
+ esbuild: 0.27.2
+ get-tsconfig: 4.13.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
tw-animate-css@1.4.0: {}
type-check@0.4.0:
@@ -10664,6 +11089,11 @@ snapshots:
undici-types@7.16.0: {}
+ unicode-trie@2.0.0:
+ dependencies:
+ pako: 0.2.9
+ tiny-inflate: 1.0.3
+
unified@11.0.5:
dependencies:
'@types/unist': 3.0.3
@@ -10977,6 +11407,8 @@ snapshots:
yocto-queue@0.1.0: {}
+ yoga-wasm-web@0.3.3: {}
+
zod-validation-error@4.0.2(zod@4.3.5):
dependencies:
zod: 4.3.5
diff --git a/scripts/generate-og-images.mts b/scripts/generate-og-images.mts
new file mode 100644
index 00000000..ffd717e0
--- /dev/null
+++ b/scripts/generate-og-images.mts
@@ -0,0 +1,234 @@
+#!/usr/bin/env node
+
+/**
+ * Generate static Open Graph images at build time
+ * Compatible with Next.js static export
+ */
+
+import { ImageResponse } from '@vercel/og'
+import fs from 'node:fs'
+import path from 'node:path'
+import { fileURLToPath } from 'node:url'
+import matter from 'gray-matter'
+
+const __filename = fileURLToPath(import.meta.url)
+const __dirname = path.dirname(__filename)
+
+const MDX = process.env.MDX || 'docs'
+const NEXT_PUBLIC_LIBNAME = process.env.NEXT_PUBLIC_LIBNAME || 'Documentation'
+const THEME_PRIMARY = process.env.THEME_PRIMARY || '#323e48'
+const NEXT_PUBLIC_URL = process.env.NEXT_PUBLIC_URL || ''
+
+const MARKDOWN_REGEX = /\.mdx?$/
+
+/**
+ * Recursively find all MDX files
+ */
+async function crawl(dir, files = []) {
+ if (!fs.existsSync(dir)) {
+ return files
+ }
+
+ const entries = fs.readdirSync(dir, { withFileTypes: true })
+
+ for (const entry of entries) {
+ const fullPath = path.join(dir, entry.name)
+ if (entry.isDirectory() && entry.name !== 'node_modules') {
+ await crawl(fullPath, files)
+ } else if (entry.isFile() && MARKDOWN_REGEX.test(entry.name)) {
+ files.push(fullPath)
+ }
+ }
+
+ return files
+}
+
+/**
+ * Extract metadata from MDX file
+ */
+function getDocMetadata(filePath, rootDir) {
+ const content = fs.readFileSync(filePath, 'utf-8')
+ const { data: frontmatter } = matter(content)
+
+ const relativePath = filePath.replace(`${rootDir}/`, '')
+ const slug = relativePath.replace(MARKDOWN_REGEX, '').toLowerCase().split('/')
+
+ const title = frontmatter.title || slug[slug.length - 1].replace(/-/g, ' ')
+ const description = frontmatter.description || ''
+
+ return { slug, title, description }
+}
+
+async function generateOGImage(title, description) {
+ const imageResponse = new ImageResponse(
+ {
+ type: 'div',
+ props: {
+ style: {
+ height: '100%',
+ width: '100%',
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'flex-start',
+ justifyContent: 'space-between',
+ backgroundColor: '#1a1a1a',
+ padding: 80,
+ },
+ children: [
+ // Site name with accent bar
+ {
+ type: 'div',
+ props: {
+ style: {
+ display: 'flex',
+ alignItems: 'center',
+ gap: 16,
+ },
+ children: [
+ {
+ type: 'div',
+ props: {
+ style: {
+ width: 8,
+ height: 48,
+ backgroundColor: THEME_PRIMARY,
+ borderRadius: 4,
+ },
+ },
+ },
+ {
+ type: 'div',
+ props: {
+ style: {
+ fontSize: 36,
+ fontWeight: 600,
+ color: '#ffffff',
+ opacity: 0.9,
+ },
+ children: NEXT_PUBLIC_LIBNAME,
+ },
+ },
+ ],
+ },
+ },
+ // Main content
+ {
+ type: 'div',
+ props: {
+ style: {
+ display: 'flex',
+ flexDirection: 'column',
+ gap: 16,
+ maxWidth: '100%',
+ },
+ children: [
+ {
+ type: 'div',
+ props: {
+ style: {
+ fontSize: 72,
+ fontWeight: 700,
+ color: '#ffffff',
+ lineHeight: 1.1,
+ letterSpacing: '-0.02em',
+ },
+ children: title,
+ },
+ },
+ description
+ ? {
+ type: 'div',
+ props: {
+ style: {
+ fontSize: 32,
+ color: '#a0a0a0',
+ lineHeight: 1.4,
+ },
+ children: description,
+ },
+ }
+ : null,
+ ].filter(Boolean),
+ },
+ },
+ // Footer
+ {
+ type: 'div',
+ props: {
+ style: {
+ display: 'flex',
+ alignItems: 'center',
+ fontSize: 24,
+ color: '#606060',
+ },
+ children: NEXT_PUBLIC_URL.replace(/^https?:\/\//, '') || 'docs',
+ },
+ },
+ ],
+ },
+ },
+ {
+ width: 1200,
+ height: 630,
+ },
+ )
+
+ const arrayBuffer = await imageResponse.arrayBuffer()
+ return Buffer.from(arrayBuffer)
+}
+
+async function main() {
+ console.log('đźď¸ Generating Open Graph images...')
+
+ try {
+ const rootDir = path.join(__dirname, '..', MDX)
+ const files = await crawl(rootDir)
+
+ if (files.length === 0) {
+ console.log(' No MDX files found')
+ return
+ }
+
+ const ogDir = path.join(__dirname, '..', 'public', 'og')
+
+ // Create og directory
+ if (!fs.existsSync(ogDir)) {
+ fs.mkdirSync(ogDir, { recursive: true })
+ }
+
+ let successCount = 0
+ let errorCount = 0
+
+ for (const file of files) {
+ try {
+ const { slug, title, description } = getDocMetadata(file, rootDir)
+ const pngBuffer = await generateOGImage(title, description)
+
+ const slugPath = slug.join('/')
+ const filePath = path.join(ogDir, `${slugPath}.png`)
+ const fileDir = path.dirname(filePath)
+
+ if (!fs.existsSync(fileDir)) {
+ fs.mkdirSync(fileDir, { recursive: true })
+ }
+
+ fs.writeFileSync(filePath, pngBuffer)
+ console.log(` â ${slugPath}`)
+ successCount++
+ } catch (error) {
+ console.error(` â ${file}: ${error.message}`)
+ errorCount++
+ }
+ }
+
+ console.log(
+ `\n⨠Generated ${successCount} OG images${errorCount > 0 ? ` (${errorCount} errors)` : ''}`,
+ )
+ } catch (error) {
+ console.error('Error generating OG images:', error)
+ // Don't fail the build
+ process.exit(0)
+ }
+}
+
+main()
diff --git a/src/app/[...slug]/page.tsx b/src/app/[...slug]/page.tsx
index 518116ca..a8c0b40f 100644
--- a/src/app/[...slug]/page.tsx
+++ b/src/app/[...slug]/page.tsx
@@ -13,14 +13,22 @@ export async function generateMetadata({ params }: Props) {
const title = `${doc.title} - ${process.env.NEXT_PUBLIC_LIBNAME}`
const description = doc.description
const url = doc.url
- const image = doc.image
+ // Use generated OG image, fallback to doc.image or nothing
+ const ogImage = `/og/${slug.join('/')}.png`
return {
title,
description,
openGraph: {
title,
- images: [{ url: image }],
+ images: [
+ {
+ url: ogImage,
+ width: 1200,
+ height: 630,
+ alt: doc.title,
+ },
+ ],
description,
url,
type: 'article',
From 55774e853789c3156b059fa861559199844b0af1 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 25 Jan 2026 17:29:36 +0000
Subject: [PATCH 07/21] Include generated OG images for Chromatic visual
testing
Remove public/og/ from .gitignore and commit the generated OG images so they are tracked in the repository and included in Chromatic visual regression tests.
Generated images:
- getting-started/authoring.png
- getting-started/github-actions.png
- getting-started/introduction.png
Co-authored-by: abernier <76580+abernier@users.noreply.github.com>
---
.gitignore | 2 +-
public/og/getting-started/authoring.png | Bin 0 -> 21795 bytes
public/og/getting-started/github-actions.png | Bin 0 -> 31182 bytes
public/og/getting-started/introduction.png | Bin 0 -> 27164 bytes
4 files changed, 1 insertion(+), 1 deletion(-)
create mode 100644 public/og/getting-started/authoring.png
create mode 100644 public/og/getting-started/github-actions.png
create mode 100644 public/og/getting-started/introduction.png
diff --git a/.gitignore b/.gitignore
index 1e114af4..aacb208c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,4 +34,4 @@ chromatic-archives/
*storybook.log
*archive.log
storybook-static
-public/og/
+.env.local
diff --git a/public/og/getting-started/authoring.png b/public/og/getting-started/authoring.png
new file mode 100644
index 0000000000000000000000000000000000000000..25520462fd5d8bb647e1894c5509b88f9c156768
GIT binary patch
literal 21795
zcmeFZXH?T$*Ds2Qk0J_g6cD6HiHI}-siAB^6bT)rg(d+JLJ_j*Rkw&+nn38yLNP)@
zkpQ6!8hQ~S!9YMnh$QqD2<`mCZs(kF-*5NB9d|sR9GGOSIp>=7H|JV^n3>!{(duP;cM3ekVA0febB^wY@ICJ7>=M;tl%z
zM)YIh<()x2_VMFJ(I*&UXLurx*g0K$^q+{UpB*23|J@(5tlyBscZ~fz2kQ~;
zdq;L^#hdk}&M_i{4ntHhQ2DwfjG*K9zoOVA&{6TLy
z*lW1pQ+Mxh?~EiCngMHB>6bKN=ZFD%_`o8qWuF#n-9Wyj!}v^g*V*|xH8LmBXvluJ
z59K;@N5aUQA!kMN)P?4I^v&9qh~R*X4(-iKRvCaM%mdakarO#~iM4<9Mz6azg1$@9
zi3-M!?R_oS`?^@1<0Igh=h#+?Jj1l)hr)+^Ipkq}u+WkYwvyC{pptWYVuSI-{$-47zbA;CX51QIlNr?@8f
z+T?fJ_TjSEuM2<6b5M)rrF_M%4IZ34-+i>@?4qmWfa&f>(^ChGcUDa^dr4vA)0>a<
zlj-(#5AV@;S`K!0U=-v&=t&5f=BV0OUmC^kB7Csb!3BI@d4n)iP_49pZd!_18k-EY
z&ga8Q0DM?EB^m6ohg1Cwz?Pov?!E`j9SQg{gB*0yJ>!t_m
z%kR7wcX4(w``A
zI90-LN1#+UB-w6frPA|Gi5jp!D+U<+)!;??)nXo%VUwq!kZ&U?XFx~3s?`ZVc1)f!
zCiXXLxen?fc-QXWasR~BsZo@Qdl~nObNuDVqI|}1iSVhrj$3Vfi|u)xqfM)6<${jJ
zkjrWCT$KTJen#rr{dut?1NPBr4FAO^`mwH@d8algG*LLUZ-?4U84b7U9u-WvNS87V
z>0SonXtX2X9exu&VkPlIieq)Y=C)eOi_6?EUER%+mn47nICd=HOe$F#bPm$Q{+rkb
zQ$yUsm7%9>0+MsN-t+=8{OQ_;sUZ6RAB27_o@j$5Q+HvvY$CS>xHR
zs$&eGUup#}Y-G;ts$Zf!e`0A#_3H_%`n@z)oXgBqD>>AsaRuLSpv8IOOG|Z8C(hCo
z1)k3R)z>5urB}5=-)
zI;yJT8~3dpn|a;BE&ZFTan-7b`9x1SiN-4kjiJ~fqCt~~HE#cFNIL6ZC#X@*B3<>&
z^s0qCK5o83eY@OQs%p@*Q>lp4<@H@(UWR-~7ep@9S7BnqBECI4^_4N2Y|*hUFA90rZ2XO~vWZDNe-ke$xC2=X=|Tf)pG;`z0M+DkX<^zq;ic2tur
z%cPDN4!+H46;QyX2htSNu(b)4g0NGA!Pb|P75M3KDzrb(PwtU7I4Yn?R9P1+Z>yH3l
z3M}BvS@bv2r`uIw8>LPW=AEeyP<9?WDns7>L9F!jK4>_T!-oo;U2SfRl6iHbNolUF
zcU%030c$=fg+-bhBQbs(Iy=1QHPU1yw3^%dw?ugZ_zRF29)-twrslmK*Ic4%EiXC#=-ySvn~)4XwdbFQR#(Z;)GXLU;9rOg`Q@f2RPpMIhcvohOPupoJ2N_xijeaS0Wg9MXHHQh4G$kFXBv<}Ey!D1DFMK|RXC@@B
z)hqtSXUhs@%##*gLFrWb%~B^Ajv%GL<9xbBZ&TE+@;9HGT2J}p>>KqKs~7SVIV+#{
z#>Q{NOpOD2xef&P!il40Qw-r#eAF|dqDI}hPxz&h>BYUa0yl>D;7#uHg9;l1C5#CR
z5!JiCWkR);^Un<5S_t28l5TjyIby5Rsl84YYOw`ZsG1@pVad=Jh5eN$~Edl1mkxe)CUBz>lPEpIiqB$MP|4gG6#K}CI%
zQ*2=@$vh|QrY(NDkW^Gt-4u)bcD2?&u>-s&{>m2K2;>85B0%=w;Bka-=R}3dv)h@;
z+#$Z*xghUn|4O*)%+tojfbt8DLRNpV4dN!bdiCf{yy0<~X_C|{aJgb5z}$E!ANe4!
zM7X>t$zHct0x&u>H5+n7#+_q61XiTyf4*
z>ow|&H$2*9r(L-37v7l2QFIr)@vnMa`f$UCFOH3y{Ss#v+Kt`vIVu#kP=~&&BjOp}
z6g#k>z5B;N#3EuRwl*o~fw8*r;2rvV<=9ygNs;p;!rMQ=b7P}V8Fdtc9@*2RApmJt
zB>w4TKxLhr+2P*&m<6)vEeYq_{H1)0+aZ9uSs$vKI^Y~@pXHspZk((DuBN@^gt@$%
zumStP-Qq1>1O-RHwDkYnG^fkfZqEd^sDI5vQoMMk1J4Eg%uvtr>nExQK<%QgS8_Td
z$QDbsT{a~*FmB8OG~kW~Fw{UgDZz@EzBcf-}xu-e*$vBMpBvNg;-wRu?@urWwcxy=WNH=RjAHa;+CHXu(LmJlyvJRUAzS3b%&HCYLxv;S+5#fSO1$`@I9;K
zm*TYo#Xkbjcb7w7HRLD
zbrbdV3rR}nVp+U{w_IztLXpE~0m{1cnq)Z))BiTeQ-3y`1jeXF7>2Fc8We~jtuH-ovj|;21-EK{O=xlr@b@>WtbpokA
zedZO
z4K9Kn)8*<~$pR$xnx0298oUByhxD*b#Of~96{vQ>C00u=Ch?ZcG=FM
zf=pOZx$^0aIt$&2#bU2|ks7%V0CE=;JRtn#@eUHd-qzu^p9vU_@M5Z|XVHGOWKnva
z8A_h$E3+gEv(_aL80!%-&YQNJn9!T_VKBnhw;4e@b%V&)RRqeZ%@~rF0T=71w_KK_y;pjpFFxxT%0(V&Yl`6YTjyD8joODicEUzA6BO0
zXMy5%9ZP2{HTZ@M>dAkN*+@Is9U!-ae}B_(ur<`eb--NdTQ!@_1%qb+eYN2`i?qdv
z$tkA>az@M6HaYLWKbDzDvp63;to2yxFCFgv68_&m0jc~~8cg;1uQD*PmH&S$L*~Q1
z4dN08Hw*ZgPd+Vsn`BAtl|QC<0KOmMPElZ=nzv`k
zU0q!OI2SD)%Tg-N6*~BP;8Msy*i-9_&>!L=b6+7D$t<*Pdc3}?QOk^;~-@mGq974%!fMam?g99p4ry>AIW^MWT)^e;);||_;7e6)PP;*j}DRNqQ
zOC$BYhr{LfexTCQ=-RXnH7wn{LgMl>L^e)D`X(p@cq9J#a5a7*+1FYTq|#hNjn
zvE#N_&5v4BhRqX}Ob}7||M<~orTmq6GQ^27#MD0AOghV@Er?n6q2lrVta4n98-2WCa&K{}B}nUuPQ#-AUVnRP{(50VgUfi!?o3a$G^k-L
z^y^ecrOZOVh{{{HS{G8zV6AFVU)IrWJ4nu#&EB}i=G<9Q+NNvbY>=fqQG|u%BAX3G
zf}=x*yMtTIK5PNoURs`ApKz5M=~{`4v2sp5w(uo?vwCVogZC|I4wBL2vUl&*8W0-rOnUL4V-
zM67uMS8d)z5HA)ar>3U0Zjt>q!Q)e|snI(-%>TGubfGIp;)4xAHNcVMb9Ekgz
zn{Xl8GQdZ4O%c{o?7;r{z1}sa4htvU{z~O(AQ7l|3TQ*M&*@&Vz}@IgLfHGCvb6%j
zr97j($4-?f@VK0_jGL6HImmEVz5TXZ1~4CMr{RZgi;0&+C-?G
zQo7~PKM7O5OKW;PUS?eX4z*
z=q%He4j2XW7w5d+WrE)uh&1eN&Ou*&XTrLmfrCHL!m|@6y=HauzdVo)hk34m`E&*0
z7+>^?!NcTlSG-AL=ih=PI@Q-Us;kDX3>b~od+W2-uz8nwz-S~QQL7*>T$|9TEOpPq
z+h=i@qUn02HS}+1gY|`z8nNNUYhSg|vhAgIBxDUXFb2bK4H%v>pmrBIdSoyib{s1Y
zWcPb?88+zF`*J_j6RdPxJXdm#ZE-klwE@Ppx`(1X2C?142~n@Si|YMtSBe`6nCua}(mp+^DE`PLM)}nQ%n6
zW~aUEn$p_a#{3jo8eDlK=^xEg?D_tXI@R$x^y+W9n{`EYkBoWiDE!XYY7&@_74!L>
z&U7x^9Ac2{ASK0q#m?V8a9*NN>d|K;n+7pkN-=!iDI#O2QnUxm*42^8~N8r6npw(Wb8Yt40Nhf-|?8aDujAH_;S*#
z>I|PV769XG-aX-m%m_4p=P7@%=zlvecDBt1?x@ciH-8NhjK!Z;9j|DyLbJdYY-%wP
zc=<`wR%^%>k^vR%5oLF_=s+qX&^*owdAYgs%wRb+;?F;wI#rjBZKzOuihc=R4Kc}s
zP~fcfy`}aAAVNG45nBaV%X;S9MfR5?&DGNNcV9(|Hn|IjhZTx=Mo&}}af==`uOM&bt1oe!j6McL%x#J}ssJkwb_$2kr0=>Rj
z*(b8V=$Fy-wE#JZxPR@yLw3USeVrHC=Qn?U23Z
z(T!&IN}03r{>qr=lGP*K(tR5NIoZ!A+0qlkO7lvxtYfQZ9omRbDq?#bc5DQOWdhV$
z%hthrle#ob2;L1-4(%u6UdsNfC=$%{06zc2HR9*+Nv*0E{f`;f?5=kXU35d?&cF^?
z>iNZ4mi=71XF|u2pKpvX^eL}?DLQ%VCnx!)TF|ZnqSj4r7&sw2SYv=e@R)b4@kD;D
zYjdAgiOh8N3fWM)GyY$GGNA_Ywp&S{6OfB4Gu3e;R?hFQ8Q6NteYAPM<&CBLv)RB&
zAqH^G^!T0eMmz4%GUcFV&;T2JL)ql%vYYpduul6hqJ6tnG+V-Zd_SudHDPn-sh^<~*FY1-&U}J1_tF
zT@=kh6}@7kxQK>LU;FTr8-3Nit8M^Gul_*Gea~5uz8;c5$c6gnvys?qI?{XJU}rJY
z*?vHtXaj)a_*JtRP5Y4U6bETpH1z4}8M@5lwSWY|_Ym5#WvjSJtFR22&5Q>lQ8+xT
zE5xn?pIvGHCSYeY5z?Exqh$8BDvy(hlL%mFt7`>k6OHPNm
z!Qr(YHY>mKQA;P^Zpmfr<`?W?KP1z1u^20{~^ciu2OeA!H?D=8h-Jgrv
zV^j!<>J)_ttpxPrbSpLFfQ>dB>XEPjh}?5J1x6%!{$&w)uh^{FEBf0>?iaDV1JGEG
z|82EM!Uo@;5>}A|NVMbPaH@)BgsE_;i
z$TsBo)O!SDjo>Sd0d<2X6J9;W_90K@C|dLF*warv12$+xr#Dmyw*zyDfU7=mva!Gk*T
z2?`X=;_{NpyMsev(aN=7)&?s}Do5%7%_Cf8#S%_oXgvDm)8)Z2NDa^>pRJ@=ioU^11a8M5~!{l4*NB>dI
z{|K+YJiY)V&2;7%L?cDZm!3^*ydR9svwHChyCU}k!67?MUm>|(Y{35}Q$M4(Uo=z*
z@iPJ)Y#>0#=4c*XJk`~V+>r6GXzZnrj-I7|YyW=^ySMpkxfEc7KuTWFBBp7RG&NE)
z%Zp@oqjP+lLxPpdvB47>_7CzTncB4>0~nnjpb#BTH2$|N-2xgbtw1j;0)3cgDjRO#
zQ#OupGPXu|8a8WB8=c?MTqlYWJsmo1{yEduSe@OeuGm_4g}rf#c2F?3iQY_aYB&x|
zTeO$PxzXMZ4luUNDee+MiQR+bww`~+D
zOx4knYW0kntt>8wcwytX|I9e?i4H#stfU2>$*6G2Rzu^4WZPqKLYjd84eR}DL5JF+
z>4}qaN&||MHS5o<8(rvyl3E@>y;cO~NLrxT(FT+U?sirnY~xp+d0x
zQK0|QEN3hs6^PS$PUweI%-RshYB4}(#n&gpfT>ixJGFo<{5iBCRC4zq6izLY@5S
zfLZ)C@KV)LUyiTlnRzjm>Dumdqs^EA(~}k4mq9k!DGF-q+fJT~bfdDr!}5h}=y+bP
zR}_S3BdrNJkrw0ETvOc^W3ZggvS`Df6K~!F*aWg5Dwz!#tAhCWg0c*+jJGLl#91gO2olyQsfc8Rz^6d2r8EO_!J
zoVh2?4~S$KB#Sih-3EVR_`Z^eiS&`6$BXL!IH#Lc6+NuJ-2^W4e5IgL;;Um`KKk%u
zJRVVuN-N$G_FwEa2!O6r0)NY^L1SU`DnwpdxidGv~a_EmoV;vjhScZF{zMZ7oYVJ
z?`Boz7)i%oH^7T?P}xKwfTr|sC=upQWmoBER(!O2WrA0m_Ult7o;s+%qZ^m&?(r>U
zSu&ze&9uu&*eEzHG=uc698$zZuV#^6yLf$lSgyCzT@|PxXF&dYrY0tvNA|e?VfsH+
z54_0r@9(eR(g?b0aYW6yQqW!|$91uQALadSM{>0@Sj0Pu7X@=Z`ScfjTCz#(lY1cr
z=W9Vn^0M=BlV)ua0yp-(mDOxxnrzbdCW%R8Oboq_)twQpEg
zC(0k>BeJ6(_B6}+nVzZ;BbH+?R2wuP_EtmW3#P;h#>SuKgj(QNLr7F5V1%av$pSx$
z;4sR(IRMZ@h|qHN
ziLA!#APM0M%B{}{iG#2iyBUV$R`$O_zZi#`w>#hCvLwSh3mFd_^WG6shS@$8u^X*<
z{1oO|V%nc0WRH$vc<{F1^eZ=d3qW=hFYL;-du_P{8xf_Ts<0~y1@-$KhQWT>%UAke
zmm?Otj#zmKxugv|oF(%9U1S^B_F{d;H11bMmEk_oQXK9f8oCMHE~*0)hQU1O!MWvq!uB~D+3>u@se!=44j#GN4vQbp+373KTa@gDs@AaNELFZ2j_wHk&9`|Uj
zVMhPiP3l9}od+pGCQunhQsvz-|1j5lH1bnGckcXP*LM|;oyL3%>ILxqWMSL4?#cPb
zO-u4DBa*76xn2&u)^sx@WdtUIylzj{q+Gq|Ed&iq;JocLRFW(0W`dUl`zWe}G^O>7
z5MQr{bZ6tzzj+&ya%+4+-o`l{HQ5LhxFCVem%Rka-CW`e6tX%*g@P3+Cbadf>_ml)
z?DfyVM;bq|hQX%;XE#ew$F{Z1@t|o-+KPaGp#Po{*YhWSQn4ohs4IHyVk@h2<^1>h
z4FWXQI^%HS&mF)vTU~HPtNz+OfZhT44vP$dA^rMreHj3WvXO}*S4Rd~B~x6q=(qtP
zN1$5pG6jAlwhejuH>Ak~u?~7-fXu}GI`bp>u&+IVrcsP9z&4@Z&ldbF4+ruL_nW|H
z*O{$6dMNZf|oeC@J`(_){Q#V{zAuKK3xJQ#O)lkLa5Pzgq1rePTVil`yHcOS52(
z`UJ{HuEfRu`_;=0g-j%J;Sf#BncSV7YUsF~hbrZ9Jj526!*mS;;j>EZEx_viPgyv=
zT}iG0@R4M*xkCik*f;dc{uHfX>!ak;CAn0xJrh!0bK3WGJgtm
znSh_poUHKY1OwlS?g0ia0WQ6xm>@14{HDKcp?0#l0qD+e4lvtx*
zuJCGp3dOz%peR@M|Ep8YgL$!uh~sqNhv-fmzo5^+P~C?8*^d`+NDT$dY;C
z<>=${6I*!I#l^bm#3`_Kfyhp!$XG_*Ogc1BWM{PFsr6t@P1f^(+<|@!hVBMV2SCm93w{)yEs??rgWoi9-=1(eZGfzs@q^|VV
z;nOrQ>}(d_4Hu4%y^YerY&V6LakEnBegG=^uo-Beayz4ydYj1ddqeW4%b%QszVlUT
zwCG@to7$ryoG&nkR)d(v8*5DiHh#nTXl+LgC>hn9Sj$d3^s~V0d>Y{8O@UF;w)p`_
z_x2yQx3;Biwl&h}GgeKVN)EF=h}&VpyWfs;l?U!nWFofOMTCLbNSlZHR&%rC+ZFEJ^0`nC%%K2iInA#6$F7?u
zY%YwpIkSTcOkU#Kj+`injF{qZ8a*g$cAN_e2WCqff0UoO@3^}K%>T~U6*s5*FUDW*
zFQDJIN5F^Ehx&UbbHyp$Ar{@Ez=8h(I$}l2W2`C%6c6w>RD&0sN_%O;8F1uwTIK#$
zhfec>9mHuhyx2g5GpixeoZ6!f8T*pBF0TU#^UvRv*}KpawmMO*1IwxG+@WZ9SSoV)
zPYkD4%20ZU>goq|d+bjPb1b?CI7c!uZmaPj5EvQc$-xltrKdj0(}F
z!EI+ZTR6nL%XFg5Nlt?G#jublMtaSRK#>+|3FtMz_xq)X%6lJm`sw4F;{6=lNn9)}
z)<=&Jp32>dR<s#Kd6nQ)jnM^+L>|MpV;
zT*bm5PwtVYMygjQWFAJXsYW5T`tN-eLPmdkf%+yE*Q1$nDUOydxQ174_WP{sKTiS7
zh91|NsS%a@$(v-pJF&FqxE8*_nWD4zMW-oDAvgLGs5=~R!wu=%FD#HD>Bl^qUJeLm
z=kV#PTgy&ozkC_s008L4MGGYXKQ-B*iZ^lpar2tR=uvwzg|fL&N{HRXZeq*HNqXJL^|`e2@R`U(H<|qHUUwDBul!?;LH+H*n-vk!
zUj%-Sckj=b?YT$`I!e;sM{}RZEa-Ij=A%~
zlVc#=NSVkgvo2k1=VK{uqY;iw8LRip1CQUnZO^j$mJ)M!j}Pn874{zSjq6~UE7m&J
z?a>AG=6MN&u(OXxs@|dpaw6Sx@q02IGdujT1}&y%>s(jz6%y@Zky4;K=^+AJtRV
zD%c@xNE=3MhcFyw4Ll$WWHZkkl!SDy3vbz&u>XSlwLbqKS)~v&oSecCo9qeb!U1!P
zlyEnrp2p|(7=s6?qi}ghzh(i{5=9N*R{jOSuLjig^7*S-=k7
zjyXvD23^f6OX#SnmZh%glaPZRp5aQs_)tN|lZ0)V-jR$@#asA2AX);w)kC2}c&k1E
zgRdM&zQ%9IcFL3KuAehvZYLMG{o<(mZd`HwR@C|}V3x?$-PHEn{V64$8%TXCUOij3
zPp{~BHCJ1)xC-QXd5MxjUpIx^7(0fFWW
zb6X5A_2CpT+qP)oCEx&*iSk3W^R5E5paof?gien=bajH@uDsNfd2`kiGZ3sv8*rZW
znov^liK2F^b2-r1;L~gR4wES>ec^pe(YyVI7vTJFcFWd9*RHI=%Y@_XmyqhQ7!T5&
zd^+EDd`Sd$*Rd<$%7-t*?h14s%L-bapc?a%DG)n
zo3_AHV_=c_Ll*K|RcbwAvi|wpjjpf2SlGMyp>ACn3sc^g0m~M{-k!4B6xUzUxdXr@
z!``N?FV;rl*6oB`unhH*2?b@WGv@aO``Dq_Y7fo-1YAv_7oSs?D>8VS>gTgjdU;KT
z_`tJrynf%38WURD{B|ciTLE3})Enc>pNe#O#}&}Pl>nt0{y`Aa_J&-5QNt0`mHcdZ
z7#uTcKS_miqX#?+4}h7-n^c9&?4D2M`_%G9y|K(tC-S~t!3ZPBKo^5@Mq_-tw&cv|
z_uln~M$RbZC{hNMjU7-*#cjo6N1%}h$Qt7a6MrGg=QuzlxnTc1e_0^8HUzbj%xpgj
zigOepfuyBLN9~Z|1@b6#_6)ZuwZ=o{h%`W_bb8
zFFtwm;$%DGJ%p~*=oY@tk5w3n^*=4v5RC_W<7e{^tYYJ1Nh(FcODpc4-Ptr%#
zOy-5yDf%vX?Kf)U#sF8sb)j5iY`IUAw2U-$^6qwCs-hLK)-^oiEiE_O2|~InO}yvn
zwFXvfkrr=JvJ-`wCoK(c%>>;vl-VXjqkL)wbbxry1;q0-{a%GCGegu!913-82wCNv
z6#CiXIPY`}wCTmb!0TMq>&8vs*N#YI*{bwTF&U75bGt?zzS*T7CUPF|sp)kbKF;O7VdDk0Qn0vZ)mmLG(;
z4l#FHLLt%uZ)vqascT8J(x{q3Z`ekij7Lv8v3!_^eU^I=i=><6sjgiG73-qx_I4h4
z_LqAcEVt+c9e3Yu%J_?C11C$DcL@O^Uy70H2pIIZ1xnJ*WHw+n=m*_Ca&ly75vg`g
z1#cS{8WbyDJX`615g{KjU#aX2a)=S8GE090VM4VomSwIEBt7Aj}z!V2k(6NonvD#hRLCySA4*lLz~NAJj#O
zZKOq+_Lc8?m9j_|tROG9C~=~Wj{6l@S{oKRNFfsWfn)ypmve>lo{Z&%*p?OEh)nl4
zXu62zdtf`5b`TWRIND8LThs88+K@orRS!K+Ais{od>+z0>QB=#h-yZ
zPk-eT1V4qR!hnN#EnE)rz5or|&87vtZMLwMiC7vAp&>ASZ!vn_&xbJfsmMy~#!Qe+
zpwlcO`^DyqmEGsKZN;MXsli~QJh)**uiBkHiWq1JgH#W2fZ&02DD+S3{g@ro_Ue-b
zue4NhL6M-vaoK78FT;9j7bcZ~hm&
z(HNRp&g*JvqJ*25aYXw;{=(s8gw7j%Mk+4P!c`lo(Xl4Ix<&}kvS7SG^d&3|u@BdLP3Ni%Sb&uZv(D)<0GSmptKzzGnlUPnG(`&vA9s;tYmd=HcuSbSF5x`OM
zw%W`(9m3&kS
zFB?+{0J7Im_=$EC3w#|7z&2|8kv0X{qcjjqa)C&6Ocbp`mVARnMe4P
zW1FvzQMotN&!+rPx1I~ado`+I%FS6z*>pjJo>*0;X0HJ!teImcbF0Z&YnZ;ucTSwB
zvPP2`KGHQTc%k&@C`x;n7|b8!-ZkZi+Bs=S+7;kl=W|&S=LeU5R5DLkXkT@6anPR{)M2x?k7BHX#Scvv
z(!n%b$-}VAG~AR=7ENm4b1bfYsod~qcWtP4>gggP$tqCp0uY95bwN%9%vF}j}W(%u9gTd5ymh3=jY1X
z5q*unna%3{bpu&bll1?zErxUd5f=S|2fF4HO3rsS7zJ(@T|+&
zpVPjDdulUdu4|*k?C^Bek5J&kTRBjFUx~}Kd2jZX4`Lf%7(cSq#kxp<`Zhh_yKR2_
z7`v}ObadDS#mQ3jGjzG4wF~pAG0IS=|3{Mow$AR251jXftwFz(_cH?S{h0x^G`gFN
zrO6w|pM*Uh+1IqImtk2dy+G`GQhbAyS#=}J-Q&x!i+Vuu$5)?%@X`^zK8>AW2qVZu
z0o|kzrAO7@9is7N@nwl%8|ByTc}Jk>BXPTWk8Ec3$p?&j$_{%}@$9X=tT@6(>6riD
zXOCVZfIllny^oXH^WfjFg{=k+W^dl|u%3nRB<)Wj&Wh|+Fq_<#T9X<6i&Fvy)fMAeqEb+;fsu}r5I6@=?LuN
zX8gbwzW6JOD(aYc+u=3&)%VP4nKhY?Ld{?sHcAsp-VH4XEs!LFDP8Jf)AksrK*O|$
zSK{`D_DOZk!)Y3jh?%t)xN``i9Hkd4hbWD|uI@`p_cMNx5?#I+MICTQX{!)5r}dKXdS81p@;hE5d6onC`3wP;(C*3;!2nWjs{3
zq!Zh>l|f5UDNIPN8Cer0UR;}sbK3n5+&gckH|HygDDwHszEN(WR(1{`CUSL}XW`BF
z51L-D-}CXJUG(uuJckbaTO-Swgn>5zr2kBa2r}oWG1k1|QnI#nz_qmH)Nh46jyxNQ
znVB4gPec68FQ-J`3zsH%NK{+~pT#S3N@1(T2D#mZtIT1BBkrG&(d$Xy%5On?e(g9!4t8a3?ldxIaEpD
zU+1hbQChP&6OUVuaq&>x;`aXV2IPTVe*|E-{BLX+6NC`>oE|B&@@=^}((ge6?a*qe
zJsSlnw3JHYFgy%A;g(h7K0y?^nFvy~KOplpFUOD%hrPj0cNuHU2YlM20N29OpTq(eKOBQUSPTSu
zD?5P)jPe7GM(U(00A?==QzLY46RMF72<%ANX(eTc_?|BU
zGZIuDMuyXiQ`JJAE2YIo+{bsBb<
zK=|GY!avb>kKju#knhHEVt)ZB!tk<|B_LaYi_Y5;zZt%LAK3V1iFt)VM8bG`HKV0*
zr}LJ!e;20OAai|h@?bBuQG$=q8fD&z{D=(4{i)T|tjT0Tw(XAdp;_qYe@flfhe
zkOiQN-B`h;M4(wIjE!|01vS2^gH&DdrzG3kbu?VJ|=iS4`WO~Tuqw>Zle>p@Bl
z7_o*He|uf@6La=fPY(!dSv5%1nsna7DY1tR^umIc#sD^1td))sZW?||9R%hDLy#9e
zy)SSrj9(GG+g6Nx&2~TJ{wNr@q&x+7N)xhGm%BF%p4{$_(=A%sX$Bq#(NN>@i5RPm
z7+X9Z`R(}T(tsaUWbd;GnFv-cG0bECwhx?P=;6aQ_Dw)qEcIyM&ZwD0ya5jA`@HA6
z&TUsH19Wny3=#)Sa*-(L2v7mhi+^aM0pPjlh*f`1s5m&vE+BD6(BsyRI>P9%zmaRK
z1u1trXCoCOg{b
z7Cmv4(&z7CyJJb*Q2<_qi8KKw&X#Zu3;e&Y12--O)AbqY(bC<@KtndVG!0NjP@zGl
zA}54fMPl4wOCfy>&;6{r?dAB*^sAujeKrvoHftQ&t1iF2MJ^2yub07{BJs`Rn2m4P
z*w`lc3EtcEOzIeEXkQ8)DCykoH(hfhP)+NHDA(5{qD>+s>g+P|qK6?lgAoDO&98bd
zEqce$9AC(DqiFBztGl(Y;{8YmgxcnSt^OiKRe!Rg+>EUae*+RHWOdk4n$Gc)T4SCa
z<|b1|AHoDLNyJOlrh`TeE+#LFH)K7noQ&%8DHc@atZb%-wFJ@g08kTX&_=47wdEM(
zsml%MymON@r5e0NB4#4kANuEas#9yy9)gx+A3@9+sWl)$NJR=!-Pb1!(qz6QaK*6U
zEUB=?!}Ld8xDNi29my{6TpG+jygwsw7MPkgtT;OZ7gBWVut2F!=TE~tfXlHCGa+{a
zCaFucR70>*zDJM;?ao`}^vJ@(Nl=+*%mXa<;K&C)fCc-6KNUkw;)sv-(wZTVuPv#EctzIG(jPm#!*j!}!Ymw`c;0|t;#E!;wX;DWKS<%O`zd%tLum8Ad
z-oJFx5+6jJTGS6QWyPEW2&%IK3KWaSaT=|Lmn{N$jAPWz+v3Lf80N-s>GVy=x`S9`w^FRe-t!E9H8Z~U^13D3QmPc+^
zH;WV*qrag8yjUC9g3#Zjt9qmcXz!Bxd{9->GNJ_Lqe@+C1j7pun`$e}z}16T>!2=^
zy7^|q%*d?2>oPyl;g~J~{
zA~hSXM8#mV1K&04aX&dlM2K7j?Vi6-E50OhTvA^hcqs^P*O5LwOCoEiG<@dnc9jvU
zrMca@)4j!uzfAE2#*2oY&U+cYNHe<(vhx`d(#`3A{1j*;x~TG%rX`8O|l{LIh)<~*E%7~54X+xogQaa5-Mlv
zaDf>xDELd267V3=FZMNQMN4*x_pFuR9XL}|x&vkOV)RE+N{naMB;crv6*
zsY4V7QMHyd66IE5a3;m#xU_j&+6w*6dI=9FHc{3)3m)`U
zmf*Q$gF@`?>v?OU8QH@`^nCEUpzaaFGs=r$9_|qlaJS=*LX5N(@0bF#3gFjTM-D@c
z#qbd;wes-
zyZphDHFLiI_Cs!Ul}DWvZ8|Q(%wqqYlkSV*)Fu7ExgR_1X)b~)X*CHgB1Jmzqh*)D
zY50YH1rJlkHEp@6LF?w#w1|tAv1)UAtd)Y6NlwUU_eQ1C%O4#33m(2T*s1#cUA$8=
zVrFk9yKn)}T-R}kK^mf1%LAU+gBzmwwTSKY+vq1sMRd~7KAYKMgEDJj(82(wTv5lr
zX>G4soY)W!z_fpvPOJMBGXu5Mm#;xnH(1ju0m6e*U)(oTw|<<)Ccz#e_QAX@flZtp
z%l+{OW%?oLNcS*sj+AS_d_roV>!RFV2|)s&%$^Xj
zJ)$XDfYa{-~Lrd{XHvKw_*2#lXQ)J|mdzMG+CC*>aegj<7
z!_J-tXtVbQOsor&-^rO1YHgZ)@sj9G*0e?wgH*t`-gc~&I3@7Ew(g?c8qI~COw-=*
zczp;wG-;2%^)4Zut6$YSPF4%GJlXL}>~M=AXXvMWzkUb)GUi*}wKKV!r988|X@!Tz
z)H458z0BfYGl3`IXqGNNE4i4ZH2Bj$qjfLS`!o{+&dq;NAXE2r#un}4F8iMC@c12M
zRHvJnZJEB#^VW=SPsPq{S*ZHlSH8H$Qm^*(&u2^Ifv1ES9$)fgm)}`qpxbvyf%i=^
wyZ|q$VQ5%4$_0kXXlMY}R}Da7xb>g$#GycW4enj4K>HayUHx3vIVCg!0B#Km`2YX_
literal 0
HcmV?d00001
diff --git a/public/og/getting-started/github-actions.png b/public/og/getting-started/github-actions.png
new file mode 100644
index 0000000000000000000000000000000000000000..ceec07443fbc1c13f2cb341ae13ed9713385e32c
GIT binary patch
literal 31182
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