vorzelajs 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +188 -0
- package/bin/vorzelajs.mjs +2 -0
- package/dist/analytics.d.ts +132 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +690 -0
- package/dist/cli/build.d.ts +2 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +22 -0
- package/dist/cli/dev.d.ts +2 -0
- package/dist/cli/dev.d.ts.map +1 -0
- package/dist/cli/dev.js +93 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +29 -0
- package/dist/cli/serve.d.ts +2 -0
- package/dist/cli/serve.d.ts.map +1 -0
- package/dist/cli/serve.js +43 -0
- package/dist/cookie.d.ts +33 -0
- package/dist/cookie.d.ts.map +1 -0
- package/dist/cookie.js +198 -0
- package/dist/debug/error-stack.d.ts +14 -0
- package/dist/debug/error-stack.d.ts.map +1 -0
- package/dist/debug/error-stack.js +52 -0
- package/dist/internal/document.d.ts +12 -0
- package/dist/internal/document.d.ts.map +1 -0
- package/dist/internal/document.jsx +56 -0
- package/dist/internal/entry-client.d.ts +2 -0
- package/dist/internal/entry-client.d.ts.map +1 -0
- package/dist/internal/entry-client.jsx +8 -0
- package/dist/internal/entry-server.d.ts +14 -0
- package/dist/internal/entry-server.d.ts.map +1 -0
- package/dist/internal/entry-server.jsx +71 -0
- package/dist/runtime/create-route.d.ts +8 -0
- package/dist/runtime/create-route.d.ts.map +1 -0
- package/dist/runtime/create-route.js +18 -0
- package/dist/runtime/head.d.ts +10 -0
- package/dist/runtime/head.d.ts.map +1 -0
- package/dist/runtime/head.js +111 -0
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.jsx +4 -0
- package/dist/runtime/navigation.d.ts +36 -0
- package/dist/runtime/navigation.d.ts.map +1 -0
- package/dist/runtime/navigation.js +70 -0
- package/dist/runtime/path.d.ts +11 -0
- package/dist/runtime/path.d.ts.map +1 -0
- package/dist/runtime/path.js +80 -0
- package/dist/runtime/resolve.d.ts +11 -0
- package/dist/runtime/resolve.d.ts.map +1 -0
- package/dist/runtime/resolve.js +449 -0
- package/dist/runtime/runtime.d.ts +40 -0
- package/dist/runtime/runtime.d.ts.map +1 -0
- package/dist/runtime/runtime.jsx +779 -0
- package/dist/runtime/search.d.ts +23 -0
- package/dist/runtime/search.d.ts.map +1 -0
- package/dist/runtime/search.js +178 -0
- package/dist/runtime/server.d.ts +10 -0
- package/dist/runtime/server.d.ts.map +1 -0
- package/dist/runtime/server.js +5 -0
- package/dist/runtime/types.d.ts +248 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +1 -0
- package/dist/seo.d.ts +16 -0
- package/dist/seo.d.ts.map +1 -0
- package/dist/seo.js +69 -0
- package/dist/server/index.d.ts +53 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +268 -0
- package/dist/session.d.ts +23 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +58 -0
- package/dist/vite/index.d.ts +13 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +174 -0
- package/dist/vite/routes-plugin.d.ts +4 -0
- package/dist/vite/routes-plugin.d.ts.map +1 -0
- package/dist/vite/routes-plugin.js +345 -0
- package/dist/vite/server-only.d.ts +3 -0
- package/dist/vite/server-only.d.ts.map +1 -0
- package/dist/vite/server-only.js +342 -0
- package/package.json +76 -0
- package/templates/bare/README.md +22 -0
- package/templates/bare/src/components/counter-card.tsx +19 -0
- package/templates/bare/src/routes/__root.tsx +24 -0
- package/templates/bare/src/routes/index.tsx +36 -0
- package/templates/base/gitignore +4 -0
- package/templates/base/public/favicon.svg +5 -0
- package/templates/base/tsconfig.json +18 -0
- package/templates/modern/README.md +28 -0
- package/templates/modern/src/components/counter-card.tsx +19 -0
- package/templates/modern/src/routes/__root.tsx +42 -0
- package/templates/modern/src/routes/about.tsx +55 -0
- package/templates/modern/src/routes/index.tsx +51 -0
- package/templates/styling/css/styles.css +269 -0
- package/templates/styling/css-modules/styles.css +269 -0
- package/templates/styling/tailwind/styles.css +271 -0
package/README.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# VorzelaJs
|
|
2
|
+
|
|
3
|
+
Batteries-included SolidJS framework with file-based routing, streamed SSR, server-only boundaries, and zero config.
|
|
4
|
+
|
|
5
|
+
## Create a New App
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm create vorzelajs@latest my-app
|
|
9
|
+
cd my-app
|
|
10
|
+
npm install
|
|
11
|
+
npm run dev
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
You'll be prompted for:
|
|
15
|
+
|
|
16
|
+
- **Template** — `modern` (multi-page with nav) or `bare` (single landing page)
|
|
17
|
+
- **Styling** — `tailwindcss`, `css-modules`, or `css`
|
|
18
|
+
|
|
19
|
+
## Manual Setup
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
mkdir my-app && cd my-app
|
|
23
|
+
npm init -y
|
|
24
|
+
npm install vorzelajs solid-js
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Add scripts to `package.json`:
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"scripts": {
|
|
32
|
+
"dev": "vorzelajs dev",
|
|
33
|
+
"build": "vorzelajs build",
|
|
34
|
+
"serve": "NODE_ENV=production vorzelajs serve"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Create your first route:
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
// src/routes/__root.tsx
|
|
43
|
+
import { createRootRoute, Outlet } from 'vorzelajs'
|
|
44
|
+
|
|
45
|
+
export const Route = createRootRoute({
|
|
46
|
+
component: () => <Outlet />,
|
|
47
|
+
})
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```tsx
|
|
51
|
+
// src/routes/index.tsx
|
|
52
|
+
import { createFileRoute } from 'vorzelajs'
|
|
53
|
+
|
|
54
|
+
export const Route = createFileRoute('/')({
|
|
55
|
+
component: () => <h1>Hello VorzelaJs</h1>,
|
|
56
|
+
head: () => ({ title: 'Home' }),
|
|
57
|
+
})
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Add a stylesheet at `src/styles.css` and run `npm run dev`.
|
|
61
|
+
|
|
62
|
+
## Project Structure
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
src/
|
|
66
|
+
├── routes/ # File-based routes (pages and layouts)
|
|
67
|
+
├── components/ # Reusable UI components
|
|
68
|
+
├── lib/ # Helpers, API clients, utilities
|
|
69
|
+
├── styles.css # Global styles
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
You own `src/`. The framework handles Vite config, server, SSR entry, and document shell.
|
|
73
|
+
|
|
74
|
+
## Features
|
|
75
|
+
|
|
76
|
+
- **File-based routing** — Drop a file in `src/routes/` and it becomes a route with automatic code splitting
|
|
77
|
+
- **Streamed SSR** — Server-rendered HTML streams to the browser with selective hydration per route branch
|
|
78
|
+
- **Server-only boundaries** — `.server.ts` files and route `loader`/`beforeLoad` are stripped from the client bundle
|
|
79
|
+
- **Payload navigation** — Client navigations fetch JSON payloads instead of full page reloads
|
|
80
|
+
- **Head management** — Per-route `<title>`, `<meta>`, `<link>`, canonical URLs, and JSON-LD
|
|
81
|
+
- **Cookie & session helpers** — `createCookie()`, `createCookieSessionStorage()` via `vorzelajs/server`
|
|
82
|
+
- **Analytics** — First-party analytics with `defineAnalytics()` and `createAnalyticsClient()`
|
|
83
|
+
- **SEO** — Robots.txt, sitemap.xml, and structured data built in
|
|
84
|
+
- **Security headers** — CSP with nonces, HSTS, X-Frame-Options, and more out of the box
|
|
85
|
+
- **Zero config** — No `vite.config.ts` or `server.ts` to maintain
|
|
86
|
+
|
|
87
|
+
## Routes
|
|
88
|
+
|
|
89
|
+
### Basic Route
|
|
90
|
+
|
|
91
|
+
```tsx
|
|
92
|
+
import { createFileRoute } from 'vorzelajs'
|
|
93
|
+
|
|
94
|
+
export const Route = createFileRoute('/about')({
|
|
95
|
+
component: AboutPage,
|
|
96
|
+
head: () => ({
|
|
97
|
+
title: 'About',
|
|
98
|
+
meta: [{ name: 'description', content: 'About us' }],
|
|
99
|
+
}),
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
function AboutPage() {
|
|
103
|
+
return <h1>About</h1>
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Route with Server Loader
|
|
108
|
+
|
|
109
|
+
```tsx
|
|
110
|
+
import { createFileRoute } from 'vorzelajs'
|
|
111
|
+
import { db } from '~/lib/db.server'
|
|
112
|
+
|
|
113
|
+
export const Route = createFileRoute('/posts')({
|
|
114
|
+
loader: async () => {
|
|
115
|
+
const posts = await db.posts.findMany()
|
|
116
|
+
return { posts }
|
|
117
|
+
},
|
|
118
|
+
component: PostsPage,
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
function PostsPage() {
|
|
122
|
+
const { posts } = Route.useLoaderData()
|
|
123
|
+
return <ul>{posts.map((p) => <li>{p.title}</li>)}</ul>
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Dynamic Routes
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
src/routes/posts/$postId.tsx → /posts/:postId
|
|
131
|
+
src/routes/users/$userId.tsx → /users/:userId
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Access params with `Route.useParams()`.
|
|
135
|
+
|
|
136
|
+
### Pathless Layouts
|
|
137
|
+
|
|
138
|
+
Prefix with `_` to create layout wrappers without adding a URL segment:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
src/routes/_auth.tsx → layout (no URL segment)
|
|
142
|
+
src/routes/_auth/login.tsx → /login
|
|
143
|
+
src/routes/_auth/register.tsx → /register
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Server Exports
|
|
147
|
+
|
|
148
|
+
Import server helpers from `vorzelajs/server`:
|
|
149
|
+
|
|
150
|
+
```tsx
|
|
151
|
+
import { createCookie, defineAnalytics, defineRobotsConfig } from 'vorzelajs/server'
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Styling
|
|
155
|
+
|
|
156
|
+
The framework detects your styling choice automatically:
|
|
157
|
+
|
|
158
|
+
- **Tailwind CSS** — Install `tailwindcss` + `@tailwindcss/vite` and add `@import "tailwindcss"` to `styles.css`
|
|
159
|
+
- **CSS Modules** — Create `*.module.css` files (Vite handles them natively)
|
|
160
|
+
- **Plain CSS** — Write global CSS in `styles.css`
|
|
161
|
+
|
|
162
|
+
Bring your own fonts. The default font stack is system fonts.
|
|
163
|
+
|
|
164
|
+
## Commands
|
|
165
|
+
|
|
166
|
+
| Command | Description |
|
|
167
|
+
|---------|-------------|
|
|
168
|
+
| `vorzelajs dev` | Start dev server with HMR |
|
|
169
|
+
| `vorzelajs build` | Build client and server for production |
|
|
170
|
+
| `vorzelajs serve` | Serve the production build |
|
|
171
|
+
|
|
172
|
+
## Vite Escape Hatch
|
|
173
|
+
|
|
174
|
+
For advanced use cases, import the plugin directly:
|
|
175
|
+
|
|
176
|
+
```ts
|
|
177
|
+
// vite.config.ts
|
|
178
|
+
import { vorzelaPlugin } from 'vorzelajs/vite'
|
|
179
|
+
import { defineConfig } from 'vite'
|
|
180
|
+
|
|
181
|
+
export default defineConfig({
|
|
182
|
+
plugins: [vorzelaPlugin()],
|
|
183
|
+
})
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## License
|
|
187
|
+
|
|
188
|
+
MIT
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import type { CookieOptions } from './cookie';
|
|
2
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
3
|
+
export declare const DEFAULT_ANALYTICS_ENDPOINT = "/__vorzela/analytics";
|
|
4
|
+
export type AnalyticsEventType = 'event' | 'pageview';
|
|
5
|
+
export type AnalyticsTrafficChannel = 'direct' | 'email' | 'internal' | 'organic-search' | 'organic-social' | 'paid-search' | 'paid-social' | 'referral' | 'unknown';
|
|
6
|
+
export interface AnalyticsTouchPoint {
|
|
7
|
+
campaign: string | null;
|
|
8
|
+
capturedAt: string;
|
|
9
|
+
channel: AnalyticsTrafficChannel;
|
|
10
|
+
clickIds: Record<string, string>;
|
|
11
|
+
content: string | null;
|
|
12
|
+
entryUrl: string;
|
|
13
|
+
isPaid: boolean;
|
|
14
|
+
medium: string | null;
|
|
15
|
+
platform: string | null;
|
|
16
|
+
referrer: string | null;
|
|
17
|
+
referrerHost: string | null;
|
|
18
|
+
source: string | null;
|
|
19
|
+
term: string | null;
|
|
20
|
+
}
|
|
21
|
+
export interface AnalyticsClientContext {
|
|
22
|
+
language?: string | null;
|
|
23
|
+
screen?: {
|
|
24
|
+
height: number;
|
|
25
|
+
width: number;
|
|
26
|
+
} | null;
|
|
27
|
+
sessionId?: string | null;
|
|
28
|
+
timezone?: string | null;
|
|
29
|
+
visitorId?: string | null;
|
|
30
|
+
}
|
|
31
|
+
export interface AnalyticsClientPayload {
|
|
32
|
+
context?: AnalyticsClientContext;
|
|
33
|
+
firstTouch?: AnalyticsTouchPoint | null;
|
|
34
|
+
lastTouch?: AnalyticsTouchPoint | null;
|
|
35
|
+
name?: string;
|
|
36
|
+
pathname?: string;
|
|
37
|
+
properties?: Record<string, unknown>;
|
|
38
|
+
referrer?: string | null;
|
|
39
|
+
search?: string;
|
|
40
|
+
timestamp?: string;
|
|
41
|
+
title?: string | null;
|
|
42
|
+
type?: AnalyticsEventType;
|
|
43
|
+
url?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface AnalyticsUserAgentSummary {
|
|
46
|
+
browser: string | null;
|
|
47
|
+
browserVersion: string | null;
|
|
48
|
+
deviceType: 'bot' | 'desktop' | 'mobile' | 'tablet' | 'unknown';
|
|
49
|
+
isBot: boolean;
|
|
50
|
+
os: string | null;
|
|
51
|
+
platformHint: string | null;
|
|
52
|
+
raw: string | null;
|
|
53
|
+
}
|
|
54
|
+
export interface AnalyticsGeoSummary {
|
|
55
|
+
city: string | null;
|
|
56
|
+
country: string | null;
|
|
57
|
+
region: string | null;
|
|
58
|
+
}
|
|
59
|
+
export interface AnalyticsEvent {
|
|
60
|
+
attribution: AnalyticsTouchPoint;
|
|
61
|
+
client: {
|
|
62
|
+
language: string | null;
|
|
63
|
+
screen: AnalyticsClientContext['screen'];
|
|
64
|
+
timezone: string | null;
|
|
65
|
+
};
|
|
66
|
+
firstTouch: AnalyticsTouchPoint | null;
|
|
67
|
+
id: string;
|
|
68
|
+
lastTouch: AnalyticsTouchPoint | null;
|
|
69
|
+
name: string;
|
|
70
|
+
occurredAt: string;
|
|
71
|
+
page: {
|
|
72
|
+
pathname: string | null;
|
|
73
|
+
referrer: string | null;
|
|
74
|
+
search: string;
|
|
75
|
+
title: string | null;
|
|
76
|
+
url: string | null;
|
|
77
|
+
};
|
|
78
|
+
properties: Record<string, unknown>;
|
|
79
|
+
receivedAt: string;
|
|
80
|
+
request: {
|
|
81
|
+
host: string | null;
|
|
82
|
+
origin: string | null;
|
|
83
|
+
referer: string | null;
|
|
84
|
+
secFetchSite: string | null;
|
|
85
|
+
};
|
|
86
|
+
sessionId: string | null;
|
|
87
|
+
type: AnalyticsEventType;
|
|
88
|
+
userAgent: AnalyticsUserAgentSummary;
|
|
89
|
+
visitorId: string;
|
|
90
|
+
geo: AnalyticsGeoSummary | null;
|
|
91
|
+
}
|
|
92
|
+
export interface AnalyticsDefinition {
|
|
93
|
+
allowedOrigins?: string[] | ((origin: string | null, request: Request) => boolean);
|
|
94
|
+
onEvent?: (event: AnalyticsEvent, context: {
|
|
95
|
+
payload: AnalyticsClientPayload;
|
|
96
|
+
request: Request;
|
|
97
|
+
}) => MaybePromise<void>;
|
|
98
|
+
visitorCookie?: false | {
|
|
99
|
+
name?: string;
|
|
100
|
+
options?: CookieOptions;
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export interface AnalyticsClientOptions {
|
|
104
|
+
credentials?: RequestCredentials;
|
|
105
|
+
endpoint?: string;
|
|
106
|
+
firstTouchKey?: string;
|
|
107
|
+
includeLanguage?: boolean;
|
|
108
|
+
includeScreen?: boolean;
|
|
109
|
+
includeTimezone?: boolean;
|
|
110
|
+
lastTouchKey?: string;
|
|
111
|
+
sessionKey?: string;
|
|
112
|
+
storageKey?: string;
|
|
113
|
+
transport?: 'auto' | 'beacon' | 'fetch';
|
|
114
|
+
}
|
|
115
|
+
export interface AnalyticsClient {
|
|
116
|
+
event: (name: string, properties?: Record<string, unknown>, payload?: Omit<AnalyticsClientPayload, 'name' | 'properties' | 'type'>) => Promise<boolean>;
|
|
117
|
+
pageview: (payload?: Omit<AnalyticsClientPayload, 'name' | 'type'>) => Promise<boolean>;
|
|
118
|
+
startAutoPageviews: (options?: {
|
|
119
|
+
trackInitialPageview?: boolean;
|
|
120
|
+
}) => () => void;
|
|
121
|
+
track: (payload: AnalyticsClientPayload) => Promise<boolean>;
|
|
122
|
+
}
|
|
123
|
+
export declare function classifyAnalyticsTraffic(input: {
|
|
124
|
+
landingUrl?: string | URL | null;
|
|
125
|
+
referrer?: string | null;
|
|
126
|
+
}): AnalyticsTouchPoint;
|
|
127
|
+
export declare function extractAnalyticsTouchPoint(landingUrl: string | URL, referrer?: string | null): AnalyticsTouchPoint;
|
|
128
|
+
export declare function defineAnalytics(options: AnalyticsDefinition): AnalyticsDefinition;
|
|
129
|
+
export declare function handleAnalyticsRequest(request: Request, analytics: AnalyticsDefinition): Promise<Response>;
|
|
130
|
+
export declare function createAnalyticsClient(options?: AnalyticsClientOptions): AnalyticsClient;
|
|
131
|
+
export {};
|
|
132
|
+
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../src/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAG7C,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAwErC,eAAO,MAAM,0BAA0B,yBAAyB,CAAA;AAEhE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,UAAU,CAAA;AACrD,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,OAAO,GACP,UAAU,GACV,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,UAAU,GACV,SAAS,CAAA;AAEb,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,uBAAuB,CAAA;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,GAAG,IAAI,CAAA;IACR,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,UAAU,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACvC,SAAS,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;IAC/D,KAAK,EAAE,OAAO,CAAA;IACd,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,mBAAmB,CAAA;IAChC,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAA;QACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KACxB,CAAA;IACD,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACtC,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KACnB,CAAA;IACD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;QACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAC5B,CAAA;IACD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,IAAI,EAAE,kBAAkB,CAAA;IACxB,SAAS,EAAE,yBAAyB,CAAA;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAA;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAA;IAClF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE;QAAE,OAAO,EAAE,sBAAsB,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,YAAY,CAAC,IAAI,CAAC,CAAA;IACvH,aAAa,CAAC,EAAE,KAAK,GAAG;QACtB,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,aAAa,CAAA;KACxB,CAAA;CACF;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACvJ,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACvF,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,IAAI,CAAA;IAChF,KAAK,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7D;AA2ID,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,GAAG,mBAAmB,CAyCtB;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,uBAK5F;AAoVD,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CAEjF;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAyDhH;AAiFD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,eAAe,CA2F3F"}
|