@scallywag/validation 1.0.0 → 1.0.4

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.
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Validation Schemas
3
+ *
4
+ * Common Zod schemas for application validation
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Base primitive schemas
9
+ */
10
+ export declare const primitiveSchemas: {
11
+ nonEmptyString: z.ZodString;
12
+ email: z.ZodString;
13
+ url: z.ZodString;
14
+ uuid: z.ZodString;
15
+ positiveInt: z.ZodNumber;
16
+ nonNegativeInt: z.ZodNumber;
17
+ percentage: z.ZodNumber;
18
+ isoDate: z.ZodString;
19
+ futureDate: z.ZodDate;
20
+ booleanString: z.ZodPipe<z.ZodEnum<{
21
+ true: "true";
22
+ false: "false";
23
+ }>, z.ZodTransform<boolean, "true" | "false">>;
24
+ };
25
+ /**
26
+ * Security-focused schemas
27
+ */
28
+ export declare const securitySchemas: {
29
+ safeString: z.ZodString;
30
+ safeFilename: z.ZodString;
31
+ sqlSafeString: z.ZodString;
32
+ strongPassword: z.ZodString;
33
+ };
34
+ /**
35
+ * API Common schemas
36
+ */
37
+ export declare const apiSchemas: {
38
+ pagination: z.ZodObject<{
39
+ page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
40
+ limit: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
41
+ sortBy: z.ZodOptional<z.ZodString>;
42
+ sortOrder: z.ZodDefault<z.ZodEnum<{
43
+ asc: "asc";
44
+ desc: "desc";
45
+ }>>;
46
+ }, z.core.$strip>;
47
+ apiResponse: <T extends z.ZodTypeAny>(dataSchema: T) => z.ZodObject<{
48
+ success: z.ZodBoolean;
49
+ data: z.ZodOptional<T>;
50
+ error: z.ZodOptional<z.ZodString>;
51
+ timestamp: z.ZodString;
52
+ requestId: z.ZodString;
53
+ }, z.core.$strip>;
54
+ errorResponse: z.ZodObject<{
55
+ success: z.ZodLiteral<false>;
56
+ error: z.ZodString;
57
+ details: z.ZodOptional<z.ZodArray<z.ZodObject<{
58
+ field: z.ZodString;
59
+ message: z.ZodString;
60
+ code: z.ZodString;
61
+ }, z.core.$strip>>>;
62
+ timestamp: z.ZodString;
63
+ requestId: z.ZodString;
64
+ }, z.core.$strip>;
65
+ };
66
+ /**
67
+ * User and Authentication schemas
68
+ */
69
+ export declare const authSchemas: {
70
+ userRegistration: z.ZodObject<{
71
+ email: z.ZodString;
72
+ password: z.ZodString;
73
+ firstName: z.ZodString;
74
+ lastName: z.ZodString;
75
+ acceptTerms: z.ZodBoolean;
76
+ }, z.core.$strip>;
77
+ userLogin: z.ZodObject<{
78
+ email: z.ZodString;
79
+ password: z.ZodString;
80
+ rememberMe: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
81
+ }, z.core.$strip>;
82
+ jwtPayload: z.ZodObject<{
83
+ sub: z.ZodString;
84
+ email: z.ZodString;
85
+ roles: z.ZodArray<z.ZodString>;
86
+ permissions: z.ZodArray<z.ZodString>;
87
+ iat: z.ZodNumber;
88
+ exp: z.ZodNumber;
89
+ }, z.core.$strip>;
90
+ };
91
+ /**
92
+ * Fractal Gateway specific schemas
93
+ */
94
+ export declare const fractalSchemas: {
95
+ exportConfig: z.ZodObject<{
96
+ interfaces: z.ZodArray<z.ZodEnum<{
97
+ api: "api";
98
+ cli: "cli";
99
+ sdk: "sdk";
100
+ webhook: "webhook";
101
+ }>>;
102
+ method: z.ZodOptional<z.ZodEnum<{
103
+ GET: "GET";
104
+ POST: "POST";
105
+ PUT: "PUT";
106
+ PATCH: "PATCH";
107
+ DELETE: "DELETE";
108
+ }>>;
109
+ path: z.ZodOptional<z.ZodString>;
110
+ description: z.ZodString;
111
+ version: z.ZodOptional<z.ZodString>;
112
+ authentication: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
113
+ rateLimit: z.ZodOptional<z.ZodObject<{
114
+ requests: z.ZodNumber;
115
+ window: z.ZodNumber;
116
+ }, z.core.$strip>>;
117
+ }, z.core.$strip>;
118
+ testConfig: z.ZodObject<{
119
+ categories: z.ZodArray<z.ZodEnum<{
120
+ unit: "unit";
121
+ integration: "integration";
122
+ e2e: "e2e";
123
+ performance: "performance";
124
+ security: "security";
125
+ }>>;
126
+ priority: z.ZodDefault<z.ZodEnum<{
127
+ low: "low";
128
+ medium: "medium";
129
+ high: "high";
130
+ critical: "critical";
131
+ }>>;
132
+ timeout: z.ZodOptional<z.ZodNumber>;
133
+ retries: z.ZodDefault<z.ZodNumber>;
134
+ parallel: z.ZodDefault<z.ZodBoolean>;
135
+ }, z.core.$strip>;
136
+ validationConfig: z.ZodObject<{
137
+ rules: z.ZodArray<z.ZodObject<{
138
+ field: z.ZodString;
139
+ type: z.ZodEnum<{
140
+ string: "string";
141
+ number: "number";
142
+ boolean: "boolean";
143
+ object: "object";
144
+ array: "array";
145
+ email: "email";
146
+ url: "url";
147
+ uuid: "uuid";
148
+ date: "date";
149
+ custom: "custom";
150
+ }>;
151
+ required: z.ZodBoolean;
152
+ constraints: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
153
+ message: z.ZodOptional<z.ZodString>;
154
+ }, z.core.$strip>>;
155
+ securityLevel: z.ZodDefault<z.ZodEnum<{
156
+ low: "low";
157
+ medium: "medium";
158
+ high: "high";
159
+ critical: "critical";
160
+ }>>;
161
+ sanitize: z.ZodDefault<z.ZodBoolean>;
162
+ }, z.core.$strip>;
163
+ cacheConfig: z.ZodObject<{
164
+ ttl: z.ZodNumber;
165
+ key: z.ZodString;
166
+ strategy: z.ZodDefault<z.ZodEnum<{
167
+ memory: "memory";
168
+ redis: "redis";
169
+ database: "database";
170
+ }>>;
171
+ invalidateOn: z.ZodOptional<z.ZodArray<z.ZodString>>;
172
+ compress: z.ZodDefault<z.ZodBoolean>;
173
+ }, z.core.$strip>;
174
+ authConfig: z.ZodObject<{
175
+ roles: z.ZodArray<z.ZodString>;
176
+ permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
177
+ requireAll: z.ZodDefault<z.ZodBoolean>;
178
+ allowAnonymous: z.ZodDefault<z.ZodBoolean>;
179
+ sessionRequired: z.ZodDefault<z.ZodBoolean>;
180
+ }, z.core.$strip>;
181
+ };
182
+ /**
183
+ * Environment validation schemas
184
+ */
185
+ export declare const envSchemas: {
186
+ development: z.ZodObject<{
187
+ NODE_ENV: z.ZodLiteral<"development">;
188
+ DATABASE_URL: z.ZodOptional<z.ZodString>;
189
+ API_KEY: z.ZodOptional<z.ZodString>;
190
+ DEBUG: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
191
+ }, z.core.$strip>;
192
+ production: z.ZodObject<{
193
+ NODE_ENV: z.ZodLiteral<"production">;
194
+ DATABASE_URL: z.ZodString;
195
+ API_KEY: z.ZodString;
196
+ JWT_SECRET: z.ZodString;
197
+ REDIS_URL: z.ZodOptional<z.ZodString>;
198
+ DEBUG: z.ZodLiteral<false>;
199
+ }, z.core.$strip>;
200
+ };
201
+ /**
202
+ * File upload schemas
203
+ */
204
+ export declare const fileSchemas: {
205
+ imageUpload: z.ZodObject<{
206
+ filename: z.ZodString;
207
+ mimetype: z.ZodEnum<{
208
+ "image/jpeg": "image/jpeg";
209
+ "image/png": "image/png";
210
+ "image/gif": "image/gif";
211
+ "image/webp": "image/webp";
212
+ }>;
213
+ size: z.ZodNumber;
214
+ buffer: z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>;
215
+ }, z.core.$strip>;
216
+ documentUpload: z.ZodObject<{
217
+ filename: z.ZodString;
218
+ mimetype: z.ZodEnum<{
219
+ "application/json": "application/json";
220
+ "application/pdf": "application/pdf";
221
+ "text/plain": "text/plain";
222
+ }>;
223
+ size: z.ZodNumber;
224
+ buffer: z.ZodCustom<Buffer<ArrayBufferLike>, Buffer<ArrayBufferLike>>;
225
+ }, z.core.$strip>;
226
+ };
227
+ /**
228
+ * Dynamic schema builder for fractal modules
229
+ * TODO: Fix TypeScript type issues
230
+ */
231
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;CAoB5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;CAuC3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;kBAUP,CAAC,SAAS,CAAC,CAAC,UAAU,cAAc,CAAC;;;;;;;;;;;;;;;;;;CAyBpD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;CA0BvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4E1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;CAkBtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;CAgBvB,CAAC;AAEF;;;GAGG"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Validation Schemas
3
+ *
4
+ * Common Zod schemas for application validation
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Base primitive schemas
9
+ */
10
+ export const primitiveSchemas = {
11
+ // String validations
12
+ nonEmptyString: z.string().min(1, 'Field is required'),
13
+ email: z.string().email('Invalid email format'),
14
+ url: z.string().url('Invalid URL format'),
15
+ uuid: z.string().uuid('Invalid UUID format'),
16
+ // Number validations
17
+ positiveInt: z.number().int().positive('Must be a positive integer'),
18
+ nonNegativeInt: z.number().int().min(0, 'Must be non-negative'),
19
+ percentage: z.number().min(0).max(100, 'Must be between 0 and 100'),
20
+ // Date validations
21
+ isoDate: z.string().datetime('Invalid ISO date format'),
22
+ futureDate: z
23
+ .date()
24
+ .refine((date) => date > new Date(), 'Date must be in the future'),
25
+ // Boolean
26
+ booleanString: z.enum(['true', 'false']).transform((val) => val === 'true'),
27
+ };
28
+ /**
29
+ * Security-focused schemas
30
+ */
31
+ export const securitySchemas = {
32
+ // Safe string - no XSS patterns
33
+ safeString: z
34
+ .string()
35
+ .refine((val) => !/<script|javascript:|data:|vbscript:/i.test(val), 'Contains unsafe content')
36
+ .refine((val) => !/on\w+=/i.test(val), 'Contains event handlers'),
37
+ // Safe filename
38
+ safeFilename: z
39
+ .string()
40
+ .refine((val) => !/[<>:"/\\|?*]/.test(val), 'Contains invalid filename characters')
41
+ .refine((val) => !val.includes('..'), 'Contains path traversal'),
42
+ // SQL injection protection
43
+ sqlSafeString: z
44
+ .string()
45
+ .refine((val) => !/union|select|insert|update|delete|drop|exec|execute/i.test(val), 'Contains SQL keywords'),
46
+ // Password strength
47
+ strongPassword: z
48
+ .string()
49
+ .min(8, 'Password must be at least 8 characters')
50
+ .refine((val) => /[A-Z]/.test(val), 'Must contain uppercase letter')
51
+ .refine((val) => /[a-z]/.test(val), 'Must contain lowercase letter')
52
+ .refine((val) => /[0-9]/.test(val), 'Must contain number')
53
+ .refine((val) => /[^A-Za-z0-9]/.test(val), 'Must contain special character'),
54
+ };
55
+ /**
56
+ * API Common schemas
57
+ */
58
+ export const apiSchemas = {
59
+ // Pagination
60
+ pagination: z.object({
61
+ page: z.coerce.number().int().min(1).default(1),
62
+ limit: z.coerce.number().int().min(1).max(100).default(20),
63
+ sortBy: z.string().optional(),
64
+ sortOrder: z.enum(['asc', 'desc']).default('desc'),
65
+ }),
66
+ // API Response wrapper
67
+ apiResponse: (dataSchema) => z.object({
68
+ success: z.boolean(),
69
+ data: dataSchema.optional(),
70
+ error: z.string().optional(),
71
+ timestamp: z.string().datetime(),
72
+ requestId: z.string().uuid(),
73
+ }),
74
+ // Error response
75
+ errorResponse: z.object({
76
+ success: z.literal(false),
77
+ error: z.string(),
78
+ details: z
79
+ .array(z.object({
80
+ field: z.string(),
81
+ message: z.string(),
82
+ code: z.string(),
83
+ }))
84
+ .optional(),
85
+ timestamp: z.string().datetime(),
86
+ requestId: z.string().uuid(),
87
+ }),
88
+ };
89
+ /**
90
+ * User and Authentication schemas
91
+ */
92
+ export const authSchemas = {
93
+ // User registration
94
+ userRegistration: z.object({
95
+ email: primitiveSchemas.email,
96
+ password: securitySchemas.strongPassword,
97
+ firstName: securitySchemas.safeString.min(1).max(50),
98
+ lastName: securitySchemas.safeString.min(1).max(50),
99
+ acceptTerms: z.boolean().refine((val) => val === true, 'Must accept terms'),
100
+ }),
101
+ // User login
102
+ userLogin: z.object({
103
+ email: primitiveSchemas.email,
104
+ password: z.string().min(1, 'Password is required'),
105
+ rememberMe: z.boolean().optional().default(false),
106
+ }),
107
+ // JWT payload
108
+ jwtPayload: z.object({
109
+ sub: primitiveSchemas.uuid,
110
+ email: primitiveSchemas.email,
111
+ roles: z.array(z.string()),
112
+ permissions: z.array(z.string()),
113
+ iat: z.number(),
114
+ exp: z.number(),
115
+ }),
116
+ };
117
+ /**
118
+ * Fractal Gateway specific schemas
119
+ */
120
+ export const fractalSchemas = {
121
+ // Export configuration
122
+ exportConfig: z.object({
123
+ interfaces: z.array(z.enum(['api', 'cli', 'sdk', 'webhook'])),
124
+ method: z.enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH']).optional(),
125
+ path: z.string().regex(/^\//, 'Path must start with /').optional(),
126
+ description: z.string().min(1).max(500),
127
+ version: z
128
+ .string()
129
+ .regex(/^\d+\.\d+\.\d+$/, 'Invalid semver format')
130
+ .optional(),
131
+ authentication: z.boolean().optional().default(false),
132
+ rateLimit: z
133
+ .object({
134
+ requests: primitiveSchemas.positiveInt,
135
+ window: primitiveSchemas.positiveInt, // seconds
136
+ })
137
+ .optional(),
138
+ }),
139
+ // Test configuration
140
+ testConfig: z.object({
141
+ categories: z.array(z.enum(['unit', 'integration', 'e2e', 'performance', 'security'])),
142
+ priority: z.enum(['low', 'medium', 'high', 'critical']).default('medium'),
143
+ timeout: primitiveSchemas.positiveInt.optional(),
144
+ retries: primitiveSchemas.nonNegativeInt.default(0),
145
+ parallel: z.boolean().default(false),
146
+ }),
147
+ // Validation configuration
148
+ validationConfig: z.object({
149
+ rules: z.array(z.object({
150
+ field: z.string(),
151
+ type: z.enum([
152
+ 'string',
153
+ 'number',
154
+ 'boolean',
155
+ 'array',
156
+ 'object',
157
+ 'email',
158
+ 'url',
159
+ 'uuid',
160
+ 'date',
161
+ 'custom',
162
+ ]),
163
+ required: z.boolean(),
164
+ constraints: z.record(z.string(), z.any()).optional(),
165
+ message: z.string().optional(),
166
+ })),
167
+ securityLevel: z
168
+ .enum(['low', 'medium', 'high', 'critical'])
169
+ .default('medium'),
170
+ sanitize: z.boolean().default(true),
171
+ }),
172
+ // Cache configuration
173
+ cacheConfig: z.object({
174
+ ttl: primitiveSchemas.positiveInt, // seconds
175
+ key: z.string().min(1).max(100),
176
+ strategy: z.enum(['memory', 'redis', 'database']).default('memory'),
177
+ invalidateOn: z.array(z.string()).optional(),
178
+ compress: z.boolean().default(false),
179
+ }),
180
+ // Auth configuration
181
+ authConfig: z.object({
182
+ roles: z.array(z.string()),
183
+ permissions: z.array(z.string()).optional(),
184
+ requireAll: z.boolean().default(false),
185
+ allowAnonymous: z.boolean().default(false),
186
+ sessionRequired: z.boolean().default(true),
187
+ }),
188
+ };
189
+ /**
190
+ * Environment validation schemas
191
+ */
192
+ export const envSchemas = {
193
+ // Development environment
194
+ development: z.object({
195
+ NODE_ENV: z.literal('development'),
196
+ DATABASE_URL: z.string().url().optional(),
197
+ API_KEY: z.string().optional(),
198
+ DEBUG: z.boolean().optional().default(true),
199
+ }),
200
+ // Production environment
201
+ production: z.object({
202
+ NODE_ENV: z.literal('production'),
203
+ DATABASE_URL: z.string().url(),
204
+ API_KEY: z.string().min(32, 'API key too short for production'),
205
+ JWT_SECRET: z.string().min(32, 'JWT secret too short for production'),
206
+ REDIS_URL: z.string().url().optional(),
207
+ DEBUG: z.literal(false),
208
+ }),
209
+ };
210
+ /**
211
+ * File upload schemas
212
+ */
213
+ export const fileSchemas = {
214
+ // Image upload
215
+ imageUpload: z.object({
216
+ filename: securitySchemas.safeFilename,
217
+ mimetype: z.enum(['image/jpeg', 'image/png', 'image/gif', 'image/webp']),
218
+ size: z.number().max(5 * 1024 * 1024, 'File too large (max 5MB)'),
219
+ buffer: z.instanceof(Buffer),
220
+ }),
221
+ // Document upload
222
+ documentUpload: z.object({
223
+ filename: securitySchemas.safeFilename,
224
+ mimetype: z.enum(['application/pdf', 'text/plain', 'application/json']),
225
+ size: z.number().max(10 * 1024 * 1024, 'File too large (max 10MB)'),
226
+ buffer: z.instanceof(Buffer),
227
+ }),
228
+ };
229
+ /**
230
+ * Dynamic schema builder for fractal modules
231
+ * TODO: Fix TypeScript type issues
232
+ */
233
+ // export function createFractalModuleSchema(
234
+ // baseSchema: z.ZodObject<any>,
235
+ // validationRules: Array<{ field: string; schema: z.ZodTypeAny }>
236
+ // ) {
237
+ // const schemaShape: Record<string, z.ZodTypeAny> = { ...baseSchema.shape };
238
+ //
239
+ // for (const rule of validationRules) {
240
+ // schemaShape[rule.field] = rule.schema;
241
+ // }
242
+ //
243
+ // return z.object(schemaShape as z.ZodRawShape);
244
+ // }
245
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,qBAAqB;IACrB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,mBAAmB,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;IAC/C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;IAE5C,qBAAqB;IACrB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACpE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;IAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,2BAA2B,CAAC;IAEnE,mBAAmB;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IACvD,UAAU,EAAE,CAAC;SACV,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,EAAE,4BAA4B,CAAC;IAEpE,UAAU;IACV,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC;CAC5E,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,gCAAgC;IAChC,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,sCAAsC,CAAC,IAAI,CAAC,GAAG,CAAC,EAC1D,yBAAyB,CAC1B;SACA,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,yBAAyB,CAAC;IAEnE,gBAAgB;IAChB,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAClC,sCAAsC,CACvC;SACA,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,yBAAyB,CAAC;IAElE,2BAA2B;IAC3B,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CACN,CAAC,sDAAsD,CAAC,IAAI,CAAC,GAAG,CAAC,EACnE,uBAAuB,CACxB;IAEH,oBAAoB;IACpB,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,wCAAwC,CAAC;SAChD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC;SACnE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC;SACnE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC;SACzD,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EACjC,gCAAgC,CACjC;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,aAAa;IACb,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;KACnD,CAAC;IAEF,uBAAuB;IACvB,WAAW,EAAE,CAAyB,UAAa,EAAE,EAAE,CACrD,CAAC,CAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE;QAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;KAC7B,CAAC;IAEJ,iBAAiB;IACjB,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,OAAO,EAAE,CAAC;aACP,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;YACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,CAAC,CACH;aACA,QAAQ,EAAE;QACb,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;KAC7B,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,oBAAoB;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC;QACzB,KAAK,EAAE,gBAAgB,CAAC,KAAK;QAC7B,QAAQ,EAAE,eAAe,CAAC,cAAc;QACxC,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,EAAE,mBAAmB,CAAC;KAC5E,CAAC;IAEF,aAAa;IACb,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,gBAAgB,CAAC,KAAK;QAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;QACnD,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAClD,CAAC;IAEF,cAAc;IACd,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,GAAG,EAAE,gBAAgB,CAAC,IAAI;QAC1B,KAAK,EAAE,gBAAgB,CAAC,KAAK;QAC7B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAChC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;KAChB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uBAAuB;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC;QACrB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;QAC7D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;QACpE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,QAAQ,EAAE;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QACvC,OAAO,EAAE,CAAC;aACP,MAAM,EAAE;aACR,KAAK,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;aACjD,QAAQ,EAAE;QACb,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACrD,SAAS,EAAE,CAAC;aACT,MAAM,CAAC;YACN,QAAQ,EAAE,gBAAgB,CAAC,WAAW;YACtC,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,UAAU;SACjD,CAAC;aACD,QAAQ,EAAE;KACd,CAAC;IAEF,qBAAqB;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,CAAC,CAAC,KAAK,CACjB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAClE;QACD,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzE,OAAO,EAAE,gBAAgB,CAAC,WAAW,CAAC,QAAQ,EAAE;QAChD,OAAO,EAAE,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KACrC,CAAC;IAEF,2BAA2B;IAC3B,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,MAAM,CAAC;YACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;YACjB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;gBACX,QAAQ;gBACR,QAAQ;gBACR,SAAS;gBACT,OAAO;gBACP,QAAQ;gBACR,OAAO;gBACP,KAAK;gBACL,MAAM;gBACN,MAAM;gBACN,QAAQ;aACT,CAAC;YACF,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;YACrB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;YACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,CAAC,CACH;QACD,aAAa,EAAE,CAAC;aACb,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;aAC3C,OAAO,CAAC,QAAQ,CAAC;QACpB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KACpC,CAAC;IAEF,sBAAsB;IACtB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,GAAG,EAAE,gBAAgB,CAAC,WAAW,EAAE,UAAU;QAC7C,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnE,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC5C,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KACrC,CAAC;IAEF,qBAAqB;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;QAC3C,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACtC,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KAC3C,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,0BAA0B;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;KAC5C,CAAC;IAEF,yBAAyB;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;QACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;QAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,kCAAkC,CAAC;QAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,qCAAqC,CAAC;QACrE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;QACtC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;KACxB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,eAAe;IACf,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,QAAQ,EAAE,eAAe,CAAC,YAAY;QACtC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACxE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,0BAA0B,CAAC;QACjE,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;KAC7B,CAAC;IAEF,kBAAkB;IAClB,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC;QACvB,QAAQ,EAAE,eAAe,CAAC,YAAY;QACtC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;QACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,2BAA2B,CAAC;QACnE,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,6CAA6C;AAC7C,kCAAkC;AAClC,oEAAoE;AACpE,MAAM;AACN,+EAA+E;AAC/E,EAAE;AACF,0CAA0C;AAC1C,6CAA6C;AAC7C,MAAM;AACN,EAAE;AACF,mDAAmD;AACnD,IAAI"}