@appweaver/core 1.3.1 → 1.4.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/export/export-service.d.ts +4 -3
- package/export/export-service.js +39 -22
- package/factory/create-model.js +54 -22
- package/factory/create-service.js +5 -3
- package/package.json +2 -2
- package/prisma/client/commonInputTypes.d.ts +0 -50
- package/prisma/client/internal/class.js +3 -3
- package/prisma/client/models/File.d.ts +15 -28
- package/resource/resource-loader.js +6 -0
- package/resource/resource-routes.js +2 -2
- package/resource/resource-schema.d.ts +38 -12
- package/resource/resource-schema.js +63 -15
- package/resource/resource-service.d.ts +25 -16
- package/resource/resource-service.js +61 -26
- package/resource/schemas/resource-sort-schema.js +2 -2
- package/resource/utils/cursor-util.d.ts +60 -0
- package/resource/utils/cursor-util.js +117 -0
- package/resource/utils/index.d.ts +1 -0
- package/resource/utils/index.js +1 -0
- package/resource/utils/relation-util.d.ts +3 -3
- package/resource/utils/relation-util.js +52 -16
- package/resource/utils/sort-util.d.ts +11 -0
- package/resource/utils/sort-util.js +18 -0
- package/security/api-key/api-key-auth.js +4 -1
- package/security/auth-service.d.ts +7 -7
- package/security/auth-service.js +43 -5
- package/security/create-auth-resources.d.ts +2 -1
- package/security/oauth2/create-oauth2-plugin.js +3 -34
- package/security/oauth2/oauth2-microsoft.js +1 -1
- package/security/oauth2/oauth2-util.d.ts +9 -7
- package/security/oauth2/oauth2-util.js +17 -10
- package/security/resources/api-key/model.js +2 -0
- package/security/resources/connected-account/model.js +2 -0
- package/security/store/database-security-store.js +2 -1
- package/server/swagger.js +49 -1
- package/storage/file-service.d.ts +19 -4
- package/storage/file-service.js +199 -146
- package/storage/resources/file/model.js +4 -2
- package/types/auth.d.ts +8 -8
- package/types/generated.d.ts +8 -2
- package/types/index.d.ts +1 -0
- package/types/index.js +1 -0
- package/types/storage.d.ts +16 -0
- package/types/storage.js +2 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/model-util.d.ts +12 -0
- package/utils/model-util.js +113 -0
|
@@ -8,12 +8,13 @@ export type ExportStream = {
|
|
|
8
8
|
export declare class ExportService {
|
|
9
9
|
/**
|
|
10
10
|
* Exports data as a CSV stream based on the provided filter and sort parameters.
|
|
11
|
-
* The
|
|
11
|
+
* The records are read batch by batch, each following the cursor of the
|
|
12
|
+
* previous one, so the export never counts the records up front.
|
|
12
13
|
*
|
|
13
14
|
* @param {string} modelName - The resource name for which to export data.
|
|
14
15
|
* @param {Object} [filter={}] - The filter conditions to apply when retrieving the data. Default is an empty object.
|
|
15
|
-
* @param {QuerySort} [sort='-createdAt
|
|
16
|
-
* field list or as an object of field directions.
|
|
16
|
+
* @param {QuerySort} [sort='-createdAt'] - The sorting criteria for the data, given either as a comma-separated
|
|
17
|
+
* field list or as an object of field directions.
|
|
17
18
|
* @return {Promise<ExportStream>} A promise resolving to the export stream object, which includes the readable
|
|
18
19
|
* stream, MIME type, and file name for the CSV.
|
|
19
20
|
*/
|
package/export/export-service.js
CHANGED
|
@@ -9,48 +9,59 @@ const utils_1 = require("../utils");
|
|
|
9
9
|
class ExportService {
|
|
10
10
|
/**
|
|
11
11
|
* Exports data as a CSV stream based on the provided filter and sort parameters.
|
|
12
|
-
* The
|
|
12
|
+
* The records are read batch by batch, each following the cursor of the
|
|
13
|
+
* previous one, so the export never counts the records up front.
|
|
13
14
|
*
|
|
14
15
|
* @param {string} modelName - The resource name for which to export data.
|
|
15
16
|
* @param {Object} [filter={}] - The filter conditions to apply when retrieving the data. Default is an empty object.
|
|
16
|
-
* @param {QuerySort} [sort='-createdAt
|
|
17
|
-
* field list or as an object of field directions.
|
|
17
|
+
* @param {QuerySort} [sort='-createdAt'] - The sorting criteria for the data, given either as a comma-separated
|
|
18
|
+
* field list or as an object of field directions.
|
|
18
19
|
* @return {Promise<ExportStream>} A promise resolving to the export stream object, which includes the readable
|
|
19
20
|
* stream, MIME type, and file name for the CSV.
|
|
20
21
|
*/
|
|
21
|
-
async exportCsv(modelName, filter = {}, sort = '-createdAt
|
|
22
|
+
async exportCsv(modelName, filter = {}, sort = '-createdAt') {
|
|
22
23
|
const service = (0, context_1.injectService)(modelName);
|
|
23
24
|
let exportStream;
|
|
24
25
|
try {
|
|
25
|
-
// Initial query is also useful to expose any errors before stream start.
|
|
26
|
-
const checkResult = await service.query(filter, 1, 0, sort);
|
|
27
|
-
const totalCount = checkResult.totalCount;
|
|
28
26
|
const batchSize = common_1.config.EXPORT_BATCH_SIZE;
|
|
29
|
-
let page = 0;
|
|
30
27
|
const mapValues = (items) => this.mapProperties(modelName, items);
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
const readBatch = (cursor) => service.query(filter, 1, batchSize, sort, cursor, false);
|
|
29
|
+
// Read before the stream is handed out, so a failing query becomes an
|
|
30
|
+
// error response instead of a truncated download
|
|
31
|
+
const firstBatch = await readBatch();
|
|
32
|
+
// A generator rather than a `read` callback, which the stream may re-enter
|
|
33
|
+
// while an awaited batch is pending and would then write it twice
|
|
34
|
+
async function* rows() {
|
|
35
|
+
if (common_1.config.EXPORT_CSV_ADD_SEP_ROW) {
|
|
36
|
+
yield `SEP=${common_1.config.EXPORT_CSV_DELIMITER}\n`;
|
|
37
|
+
}
|
|
38
|
+
let batch = firstBatch;
|
|
39
|
+
let addHeaders = common_1.config.EXPORT_CSV_ADD_HEADERS;
|
|
40
|
+
while (batch) {
|
|
41
|
+
let chunk;
|
|
42
|
+
let next;
|
|
34
43
|
try {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this.push((0, utils_1.toCsv)(data, common_1.config.EXPORT_CSV_ADD_HEADERS ? page === 1 : false));
|
|
44
|
+
if (batch.resultCount > 0) {
|
|
45
|
+
chunk = (0, utils_1.toCsv)(mapValues(batch.items), addHeaders);
|
|
46
|
+
addHeaders = false;
|
|
39
47
|
}
|
|
48
|
+
// A next cursor is returned only while further records match
|
|
49
|
+
next = batch.nextCursor
|
|
50
|
+
? await readBatch(batch.nextCursor)
|
|
51
|
+
: undefined;
|
|
40
52
|
}
|
|
41
53
|
catch (e) {
|
|
54
|
+
// End early rather than fail a download already in flight
|
|
42
55
|
common_1.logger.error(e, `${modelName} export error`);
|
|
43
|
-
|
|
44
|
-
return;
|
|
56
|
+
next = undefined;
|
|
45
57
|
}
|
|
46
|
-
if (
|
|
47
|
-
|
|
58
|
+
if (chunk !== undefined) {
|
|
59
|
+
yield chunk;
|
|
48
60
|
}
|
|
61
|
+
batch = next;
|
|
49
62
|
}
|
|
50
|
-
});
|
|
51
|
-
if (common_1.config.EXPORT_CSV_ADD_SEP_ROW) {
|
|
52
|
-
exportStream.push(`SEP=${common_1.config.EXPORT_CSV_DELIMITER}\n`);
|
|
53
63
|
}
|
|
64
|
+
exportStream = node_stream_1.Readable.from(rows(), { objectMode: false });
|
|
54
65
|
}
|
|
55
66
|
catch (e) {
|
|
56
67
|
throw new errors_1.HttpError(`${modelName} export error`, 500, e);
|
|
@@ -88,6 +99,12 @@ class ExportService {
|
|
|
88
99
|
// Skip mapping for non-exposed fields.
|
|
89
100
|
continue;
|
|
90
101
|
}
|
|
102
|
+
// The records are read from the database rather than through a response
|
|
103
|
+
// schema, so the fields no response carries are dropped here instead.
|
|
104
|
+
if (modelSchema?.['hidden'] === true ||
|
|
105
|
+
resourceModel.config.virtual?.[key]?.output?.type === 'none') {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
91
108
|
let header = parentKey ? `${parentKey}.${key}` : key;
|
|
92
109
|
const isArrayValue = (0, common_1.isArray)(value);
|
|
93
110
|
const exportField = exportConfig?.[key];
|
package/factory/create-model.js
CHANGED
|
@@ -10,8 +10,20 @@ const common_1 = require("@appweaver/common");
|
|
|
10
10
|
const context_1 = require("../context");
|
|
11
11
|
const resource_1 = require("../resource");
|
|
12
12
|
function createModel(config, override = false) {
|
|
13
|
+
const resourceModel = buildModel(config);
|
|
14
|
+
common_1.logger.debug({ modelName: resourceModel.name }, 'Created resource model');
|
|
15
|
+
(0, context_1.define)(resourceModel, undefined, override ? 'override' : undefined);
|
|
16
|
+
// The relation inputs and audit fields reference the primary key of another
|
|
17
|
+
// model, which may not be loaded yet. Loaders call this hook once every model
|
|
18
|
+
// is registered, so those references resolve against their final id type.
|
|
19
|
+
resourceModel[common_1.RESOURCE_MODEL_RELINK] = () => {
|
|
20
|
+
Object.assign(resourceModel, buildModel(config));
|
|
21
|
+
};
|
|
22
|
+
return resourceModel;
|
|
23
|
+
}
|
|
24
|
+
function buildModel(config) {
|
|
13
25
|
const name = (0, common_1.capitalize)(config.name || node_path_1.default.basename(node_path_1.default.dirname(__dirname)));
|
|
14
|
-
const idSchema =
|
|
26
|
+
const idSchema = (0, resource_1.idSchema)(config?.id);
|
|
15
27
|
const auditSchema = buildAuditSchema(config?.audit);
|
|
16
28
|
const scalarsSchema = buildScalarsSchema(config?.scalars);
|
|
17
29
|
const virtualSchema = buildScalarsSchema(config?.virtual);
|
|
@@ -38,11 +50,13 @@ function createModel(config, override = false) {
|
|
|
38
50
|
const createModel = omitOrPickScalars(resolveDefaultScalars(typebox_1.Type.Composite([scalarsSchema, virtualSchema]), config), config.create);
|
|
39
51
|
const updateModel = omitOrPickScalars(resolveDefaultScalars(typebox_1.Type.Partial(typebox_1.Type.Composite([scalarsSchema, virtualSchema])), config), config.update);
|
|
40
52
|
const { readOneModel, readManyModel } = buildOutputModels(baseReadModel, relationsModel, filesModel, config);
|
|
53
|
+
const readOneNullableModel = buildNullableOutputModel(name);
|
|
41
54
|
const { createOneModel, updateOneModel, relationCreateModel, relationUpdateModel, relationInputModel } = buildInputModels(createModel, updateModel, relationsModel, idSchema, config);
|
|
42
55
|
const { fileUploadModel, fileDeleteModel } = buildFileInputModels(config);
|
|
43
56
|
const resourceModel = {
|
|
44
57
|
name,
|
|
45
58
|
config: config,
|
|
59
|
+
idModel: idSchema,
|
|
46
60
|
readModel,
|
|
47
61
|
createModel,
|
|
48
62
|
updateModel,
|
|
@@ -51,6 +65,7 @@ function createModel(config, override = false) {
|
|
|
51
65
|
virtualModel,
|
|
52
66
|
readOneModel,
|
|
53
67
|
readManyModel,
|
|
68
|
+
readOneNullableModel,
|
|
54
69
|
createOneModel,
|
|
55
70
|
updateOneModel,
|
|
56
71
|
relationCreateModel,
|
|
@@ -66,22 +81,20 @@ function createModel(config, override = false) {
|
|
|
66
81
|
}
|
|
67
82
|
resourceModel[common_1.RESOURCE_NAME] = name;
|
|
68
83
|
resourceModel[common_1.RESOURCE_TYPE] = common_1.RESOURCE_MODEL_TYPE;
|
|
69
|
-
common_1.logger.debug({ modelName: name }, 'Created resource model');
|
|
70
|
-
(0, context_1.define)(resourceModel, undefined, override ? 'override' : undefined);
|
|
71
84
|
return resourceModel;
|
|
72
85
|
}
|
|
73
|
-
function
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
function referencedIdField(modelName) {
|
|
87
|
+
if (!modelName) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
return context_1.context.resource.models.get((0, common_1.capitalize)(modelName))?.config?.id;
|
|
91
|
+
}
|
|
92
|
+
function authIdField() {
|
|
93
|
+
for (const model of context_1.context.resource.models.values()) {
|
|
94
|
+
if ((0, common_1.isResourceAuthModel)(model)) {
|
|
95
|
+
return model.config?.id;
|
|
96
|
+
}
|
|
83
97
|
}
|
|
84
|
-
return idType;
|
|
85
98
|
}
|
|
86
99
|
function buildAuditSchema(audit = {}) {
|
|
87
100
|
const defaultAudit = {
|
|
@@ -96,7 +109,7 @@ function buildAuditSchema(audit = {}) {
|
|
|
96
109
|
fields.push(name);
|
|
97
110
|
}
|
|
98
111
|
}
|
|
99
|
-
return typebox_1.Type.Pick(resource_1.
|
|
112
|
+
return typebox_1.Type.Pick((0, resource_1.auditSchema)(authIdField()), fields);
|
|
100
113
|
}
|
|
101
114
|
function buildScalarsSchema(fields = {}) {
|
|
102
115
|
const properties = {};
|
|
@@ -212,6 +225,17 @@ function buildOutputModels(readModel, relationsModel, filesModel, config) {
|
|
|
212
225
|
], { $id: `${config.name}Multiple` });
|
|
213
226
|
return { readOneModel, readManyModel };
|
|
214
227
|
}
|
|
228
|
+
function buildNullableOutputModel(name) {
|
|
229
|
+
// Builds the nullable variant of the single read model, registered under its own
|
|
230
|
+
// name so a nullable relation can reference it instead of inlining the union.
|
|
231
|
+
// The response serializer cannot compile an inline `anyOf` union that cycles
|
|
232
|
+
// back to a model it is already writing, since it expands every union branch
|
|
233
|
+
// into a fresh schema. A union behind a name is expanded once and reused, which
|
|
234
|
+
// keeps a self-referencing relation (a category and its parent) serializable.
|
|
235
|
+
return typebox_1.Type.Union([typebox_1.Type.Ref(`${name}Single`), typebox_1.Type.Null()], {
|
|
236
|
+
$id: `${name}SingleNullable`
|
|
237
|
+
});
|
|
238
|
+
}
|
|
215
239
|
function buildInputModels(createModel, updateModel, relationsModel, idSchema, config) {
|
|
216
240
|
const virtualConfig = config.virtual;
|
|
217
241
|
const relationsConfig = config.relations;
|
|
@@ -294,13 +318,17 @@ function relationInputProperties(object, relationConfig, inputType) {
|
|
|
294
318
|
// requests accept them
|
|
295
319
|
const acceptsInlineWrite = config?.input?.allowCreate ||
|
|
296
320
|
(config?.input?.allowUpdate && inputType === 'update');
|
|
297
|
-
// Existing records are connected by an id object or a bare id value
|
|
298
|
-
//
|
|
299
|
-
//
|
|
300
|
-
// the union, since the server
|
|
321
|
+
// Existing records are connected by an id object or a bare id value, both
|
|
322
|
+
// typed after the primary key of the related model. Relations accepting
|
|
323
|
+
// inline writes take the permissive input model instead, which also covers
|
|
324
|
+
// a lone id. Only one object schema may join the union, since the server
|
|
325
|
+
// strips undeclared properties.
|
|
326
|
+
const relatedIdField = referencedIdField(config?.model);
|
|
301
327
|
const itemSchemas = [
|
|
302
|
-
acceptsInlineWrite
|
|
303
|
-
|
|
328
|
+
acceptsInlineWrite
|
|
329
|
+
? typebox_1.Type.Ref(`${config.model}RelationInput`)
|
|
330
|
+
: (0, resource_1.idSchema)(relatedIdField),
|
|
331
|
+
(0, resource_1.idValueSchema)(relatedIdField)
|
|
304
332
|
];
|
|
305
333
|
const isArrayType = type === 'array';
|
|
306
334
|
const isOptional = config?.required === false;
|
|
@@ -334,7 +362,7 @@ function relationOutputProperties(object, relationConfig, outputType) {
|
|
|
334
362
|
return undefined;
|
|
335
363
|
}
|
|
336
364
|
if (config.required === false && schema.type !== 'array') {
|
|
337
|
-
schema = (
|
|
365
|
+
schema = nullableOutputSchema(schema);
|
|
338
366
|
}
|
|
339
367
|
}
|
|
340
368
|
return schema;
|
|
@@ -363,6 +391,10 @@ function relationOutputProperties(object, relationConfig, outputType) {
|
|
|
363
391
|
}, {})
|
|
364
392
|
});
|
|
365
393
|
}
|
|
394
|
+
function nullableOutputSchema(schema) {
|
|
395
|
+
const modelRef = schema.$ref;
|
|
396
|
+
return modelRef ? typebox_1.Type.Ref(`${modelRef}Nullable`) : (0, common_1.Nullable)(schema);
|
|
397
|
+
}
|
|
366
398
|
function removeHiddenFields(schema) {
|
|
367
399
|
const properties = {};
|
|
368
400
|
for (const [name, field] of Object.entries(schema.properties)) {
|
|
@@ -24,15 +24,17 @@ function createService(config, override = false) {
|
|
|
24
24
|
await config.afterFind?.(result);
|
|
25
25
|
return result;
|
|
26
26
|
}
|
|
27
|
-
async query(filter = {}, page = 1, size = 50, sort = '-createdAt,
|
|
28
|
-
await config.beforeQuery?.(filter, page, size, sort);
|
|
29
|
-
const result = await super.query(filter, page, size, sort);
|
|
27
|
+
async query(filter = {}, page = 1, size = 50, sort = '-createdAt', cursor, totalCount = true) {
|
|
28
|
+
await config.beforeQuery?.(filter, page, size, sort, cursor, totalCount);
|
|
29
|
+
const result = await super.query(filter, page, size, sort, cursor, totalCount);
|
|
30
30
|
await config.afterQuery?.(result);
|
|
31
31
|
return result;
|
|
32
32
|
}
|
|
33
33
|
async aggregate(filter = {}, select, dateField = 'createdAt', from, to, step, safeIncrement = true) {
|
|
34
34
|
await config.beforeAggregate?.(filter, select, dateField, from, to, step, safeIncrement);
|
|
35
35
|
const result = await super.aggregate(filter, select, dateField, from, to, step, safeIncrement);
|
|
36
|
+
// The hook is declared once for the model, so it takes the response of
|
|
37
|
+
// every selection, of which this one holds a subset of the fields
|
|
36
38
|
await config.afterAggregate?.(result);
|
|
37
39
|
return result;
|
|
38
40
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appweaver/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Appweaver - the backend framework for AI-first development (@core)",
|
|
5
5
|
"author": "Luka Matosevic",
|
|
6
6
|
"license": "MIT",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
28
|
"generate": "weaver generate --modelPattern ./**/model.ts --typesPath ./types/generated.ts --schemaPath ./prisma/schema.prisma --clientPath ./prisma/client",
|
|
29
|
-
"db:recreate": "rimraf dev.db && rimraf prisma/migrations
|
|
29
|
+
"db:recreate": "rimraf dev.db && rimraf prisma/migrations && weaver migration new init"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@fastify/auth": "5.0.4",
|
|
@@ -171,31 +171,6 @@ export type JsonWithAggregatesFilterBase<$PrismaModel = never> = {
|
|
|
171
171
|
_min?: Prisma.NestedJsonFilter<$PrismaModel>;
|
|
172
172
|
_max?: Prisma.NestedJsonFilter<$PrismaModel>;
|
|
173
173
|
};
|
|
174
|
-
export type IntNullableFilter<$PrismaModel = never> = {
|
|
175
|
-
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null;
|
|
176
|
-
in?: number[] | null;
|
|
177
|
-
notIn?: number[] | null;
|
|
178
|
-
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
179
|
-
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
180
|
-
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
181
|
-
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
182
|
-
not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null;
|
|
183
|
-
};
|
|
184
|
-
export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|
185
|
-
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null;
|
|
186
|
-
in?: number[] | null;
|
|
187
|
-
notIn?: number[] | null;
|
|
188
|
-
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
189
|
-
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
190
|
-
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
191
|
-
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
192
|
-
not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null;
|
|
193
|
-
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
194
|
-
_avg?: Prisma.NestedFloatNullableFilter<$PrismaModel>;
|
|
195
|
-
_sum?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
196
|
-
_min?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
197
|
-
_max?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
198
|
-
};
|
|
199
174
|
export type NestedIntFilter<$PrismaModel = never> = {
|
|
200
175
|
equals?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
201
176
|
in?: number[];
|
|
@@ -368,28 +343,3 @@ export type NestedJsonFilterBase<$PrismaModel = never> = {
|
|
|
368
343
|
array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null;
|
|
369
344
|
not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter;
|
|
370
345
|
};
|
|
371
|
-
export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|
372
|
-
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null;
|
|
373
|
-
in?: number[] | null;
|
|
374
|
-
notIn?: number[] | null;
|
|
375
|
-
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
376
|
-
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
377
|
-
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
378
|
-
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
379
|
-
not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null;
|
|
380
|
-
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
381
|
-
_avg?: Prisma.NestedFloatNullableFilter<$PrismaModel>;
|
|
382
|
-
_sum?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
383
|
-
_min?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
384
|
-
_max?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
385
|
-
};
|
|
386
|
-
export type NestedFloatNullableFilter<$PrismaModel = never> = {
|
|
387
|
-
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null;
|
|
388
|
-
in?: number[] | null;
|
|
389
|
-
notIn?: number[] | null;
|
|
390
|
-
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>;
|
|
391
|
-
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>;
|
|
392
|
-
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>;
|
|
393
|
-
gte?: number | Prisma.FloatFieldRefInput<$PrismaModel>;
|
|
394
|
-
not?: Prisma.NestedFloatNullableFilter<$PrismaModel> | number | null;
|
|
395
|
-
};
|
|
@@ -51,7 +51,7 @@ const config = {
|
|
|
51
51
|
"clientVersion": "7.9.1",
|
|
52
52
|
"engineVersion": "e922089b7d7502aff4249d5da3420f6fa55fc6ad",
|
|
53
53
|
"activeProvider": "sqlite",
|
|
54
|
-
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Generated by Appweaver. Please do not edit this file manually.\n\ndatasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./client\"\n}\n\nmodel ApiKey {\n id Int @id @default(autoincrement())\n key String\n keyHash String @unique\n name String?\n description String?\n enabled Boolean @default(true)\n expiresAt DateTime?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel ConnectedAccount {\n id Int @id @default(autoincrement())\n provider String\n providerAccountId String\n scope String?\n lastLoginAt DateTime\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@index([provider, providerAccountId])\n}\n\nmodel OneTimeToken {\n id Int @id @default(autoincrement())\n tokenHash String\n purpose String\n expiresAt DateTime\n data Json\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@index([tokenHash, purpose])\n}\n\nmodel Permission {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n roles Role[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Role {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n permissions Permission[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Seeder {\n id String @id @default(uuid())\n checksum String\n seederName String @unique\n startedAt DateTime\n finishedAt DateTime\n logs String?\n\n @@map(\"_seeders\")\n}\n\nmodel File {\n id Int @id @default(autoincrement())\n name String @unique\n originalName String\n mimeType String\n sizeBytes Int\n checksum String\n title String?\n description String?\n resourceField String?\n resourceName String?\n resourceId
|
|
54
|
+
"inlineSchema": "// This is your Prisma schema file,\n// learn more about it in the docs: https://pris.ly/d/prisma-schema\n\n// Generated by Appweaver. Please do not edit this file manually.\n\ndatasource db {\n provider = \"sqlite\"\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./client\"\n}\n\nmodel ApiKey {\n id Int @id @default(autoincrement())\n key String\n keyHash String @unique\n name String?\n description String?\n enabled Boolean @default(true)\n expiresAt DateTime?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel ConnectedAccount {\n id Int @id @default(autoincrement())\n provider String\n providerAccountId String\n scope String?\n lastLoginAt DateTime\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@index([provider, providerAccountId])\n}\n\nmodel OneTimeToken {\n id Int @id @default(autoincrement())\n tokenHash String\n purpose String\n expiresAt DateTime\n data Json\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@index([tokenHash, purpose])\n}\n\nmodel Permission {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n roles Role[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Role {\n id Int @id @default(autoincrement())\n name String @unique\n\n /// Related columns\n permissions Permission[] @relation(\"RolePermissionsPermission\")\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n}\n\nmodel Seeder {\n id String @id @default(uuid())\n checksum String\n seederName String @unique\n startedAt DateTime\n finishedAt DateTime\n logs String?\n\n @@map(\"_seeders\")\n}\n\nmodel File {\n id Int @id @default(autoincrement())\n name String @unique\n originalName String\n mimeType String\n sizeBytes Int\n checksum String\n title String?\n description String?\n resourceField String?\n resourceName String?\n resourceId String?\n\n /// Audit columns\n updatedAt DateTime @updatedAt\n createdAt DateTime @default(now())\n\n @@index([resourceField, resourceName, resourceId])\n}\n",
|
|
55
55
|
"runtimeDataModel": {
|
|
56
56
|
"models": {},
|
|
57
57
|
"enums": {},
|
|
@@ -62,10 +62,10 @@ const config = {
|
|
|
62
62
|
"graph": ""
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
|
-
config.runtimeDataModel = JSON.parse("{\"models\":{\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"keyHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ConnectedAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastLoginAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"OneTimeToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"purpose\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Permission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roles\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Role\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"Permission\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Seeder\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"seederName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"logs\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"_seeders\"},\"File\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceField\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"
|
|
65
|
+
config.runtimeDataModel = JSON.parse("{\"models\":{\"ApiKey\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"keyHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"ConnectedAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastLoginAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"OneTimeToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"purpose\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"data\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Permission\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roles\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Role\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"Permission\",\"relationName\":\"RolePermissionsPermission\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"Seeder\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"seederName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"logs\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"_seeders\"},\"File\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"originalName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mimeType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sizeBytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"checksum\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceField\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"resourceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}");
|
|
66
66
|
config.parameterizationSchema = {
|
|
67
67
|
strings: JSON.parse("[\"where\",\"ApiKey.findUnique\",\"ApiKey.findUniqueOrThrow\",\"orderBy\",\"cursor\",\"ApiKey.findFirst\",\"ApiKey.findFirstOrThrow\",\"ApiKey.findMany\",\"data\",\"ApiKey.createOne\",\"ApiKey.createMany\",\"ApiKey.createManyAndReturn\",\"ApiKey.updateOne\",\"ApiKey.updateMany\",\"ApiKey.updateManyAndReturn\",\"create\",\"update\",\"ApiKey.upsertOne\",\"ApiKey.deleteOne\",\"ApiKey.deleteMany\",\"having\",\"_count\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"ApiKey.groupBy\",\"ApiKey.aggregate\",\"ConnectedAccount.findUnique\",\"ConnectedAccount.findUniqueOrThrow\",\"ConnectedAccount.findFirst\",\"ConnectedAccount.findFirstOrThrow\",\"ConnectedAccount.findMany\",\"ConnectedAccount.createOne\",\"ConnectedAccount.createMany\",\"ConnectedAccount.createManyAndReturn\",\"ConnectedAccount.updateOne\",\"ConnectedAccount.updateMany\",\"ConnectedAccount.updateManyAndReturn\",\"ConnectedAccount.upsertOne\",\"ConnectedAccount.deleteOne\",\"ConnectedAccount.deleteMany\",\"ConnectedAccount.groupBy\",\"ConnectedAccount.aggregate\",\"OneTimeToken.findUnique\",\"OneTimeToken.findUniqueOrThrow\",\"OneTimeToken.findFirst\",\"OneTimeToken.findFirstOrThrow\",\"OneTimeToken.findMany\",\"OneTimeToken.createOne\",\"OneTimeToken.createMany\",\"OneTimeToken.createManyAndReturn\",\"OneTimeToken.updateOne\",\"OneTimeToken.updateMany\",\"OneTimeToken.updateManyAndReturn\",\"OneTimeToken.upsertOne\",\"OneTimeToken.deleteOne\",\"OneTimeToken.deleteMany\",\"OneTimeToken.groupBy\",\"OneTimeToken.aggregate\",\"permissions\",\"roles\",\"Permission.findUnique\",\"Permission.findUniqueOrThrow\",\"Permission.findFirst\",\"Permission.findFirstOrThrow\",\"Permission.findMany\",\"Permission.createOne\",\"Permission.createMany\",\"Permission.createManyAndReturn\",\"Permission.updateOne\",\"Permission.updateMany\",\"Permission.updateManyAndReturn\",\"Permission.upsertOne\",\"Permission.deleteOne\",\"Permission.deleteMany\",\"Permission.groupBy\",\"Permission.aggregate\",\"Role.findUnique\",\"Role.findUniqueOrThrow\",\"Role.findFirst\",\"Role.findFirstOrThrow\",\"Role.findMany\",\"Role.createOne\",\"Role.createMany\",\"Role.createManyAndReturn\",\"Role.updateOne\",\"Role.updateMany\",\"Role.updateManyAndReturn\",\"Role.upsertOne\",\"Role.deleteOne\",\"Role.deleteMany\",\"Role.groupBy\",\"Role.aggregate\",\"Seeder.findUnique\",\"Seeder.findUniqueOrThrow\",\"Seeder.findFirst\",\"Seeder.findFirstOrThrow\",\"Seeder.findMany\",\"Seeder.createOne\",\"Seeder.createMany\",\"Seeder.createManyAndReturn\",\"Seeder.updateOne\",\"Seeder.updateMany\",\"Seeder.updateManyAndReturn\",\"Seeder.upsertOne\",\"Seeder.deleteOne\",\"Seeder.deleteMany\",\"Seeder.groupBy\",\"Seeder.aggregate\",\"File.findUnique\",\"File.findUniqueOrThrow\",\"File.findFirst\",\"File.findFirstOrThrow\",\"File.findMany\",\"File.createOne\",\"File.createMany\",\"File.createManyAndReturn\",\"File.updateOne\",\"File.updateMany\",\"File.updateManyAndReturn\",\"File.upsertOne\",\"File.deleteOne\",\"File.deleteMany\",\"File.groupBy\",\"File.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"name\",\"originalName\",\"mimeType\",\"sizeBytes\",\"checksum\",\"title\",\"description\",\"resourceField\",\"resourceName\",\"resourceId\",\"updatedAt\",\"createdAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"seederName\",\"startedAt\",\"finishedAt\",\"logs\",\"every\",\"some\",\"none\",\"tokenHash\",\"purpose\",\"expiresAt\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"provider\",\"providerAccountId\",\"scope\",\"lastLoginAt\",\"key\",\"keyHash\",\"enabled\",\"connectOrCreate\",\"upsert\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
68
|
-
graph: "qQJHcAx-AADiAQAwfwAABAAQgAEAAOIBADCBAQIAAAABggEBAMkBACGIAQEAyQEAIYwBQADLAQAhjQFAAMsBACGiAUAA5AEAIawBAQDIAQAhrQEBAAAAAa4BIADjAQAhAQAAAAEAIAEAAAABACAMfgAA4gEAMH8AAAQAEIABAADiAQAwgQECAMcBACGCAQEAyQEAIYgBAQDJAQAhjAFAAMsBACGNAUAAywEAIaIBQADkAQAhrAEBAMgBACGtAQEAyAEAIa4BIADjAQAhA4IBAADlAQAgiAEAAOUBACCiAQAA5QEAIAMAAAAEACADAAAFADAEAAABACADAAAABAAgAwAABQAwBAAAAQAgAwAAAAQAIAMAAAUAMAQAAAEAIAmBAQIAAAABggEBAAAAAYgBAQAAAAGMAUAAAAABjQFAAAAAAaIBQAAAAAGsAQEAAAABrQEBAAAAAa4BIAAAAAEBCAAACQAgCYEBAgAAAAGCAQEAAAABiAEBAAAAAYwBQAAAAAGNAUAAAAABogFAAAAAAawBAQAAAAGtAQEAAAABrgEgAAAAAQEIAAALADABCAAACwAwCYEBAgDsAQAhggEBAO0BACGIAQEA7QEAIYwBQADvAQAhjQFAAO8BACGiAUAAqQIAIawBAQDrAQAhrQEBAOsBACGuASAAqAIAIQIAAAABACAIAAAOACAJgQECAOwBACGCAQEA7QEAIYgBAQDtAQAhjAFAAO8BACGNAUAA7wEAIaIBQACpAgAhrAEBAOsBACGtAQEA6wEAIa4BIACoAgAhAgAAAAQAIAgAABAAIAIAAAAEACAIAAAQACADAAAAAQAgDwAACQAgEAAADgAgAQAAAAEAIAEAAAAEACAIFQAAowIAIBYAAKQCACAXAACnAgAgGAAApgIAIBkAAKUCACCCAQAA5QEAIIgBAADlAQAgogEAAOUBACAMfgAA2wEAMH8AABcAEIABAADbAQAwgQECALUBACGCAQEAtwEAIYgBAQC3AQAhjAFAALkBACGNAUAAuQEAIaIBQADdAQAhrAEBALYBACGtAQEAtgEAIa4BIADcAQAhAwAAAAQAIAMAABYAMBQAABcAIAMAAAAEACADAAAFADAEAAABACAKfgAA2gEAMH8AAB0AEIABAADaAQAwgQECAAAAAYwBQADLAQAhjQFAAMsBACGoAQEAyAEAIakBAQDIAQAhqgEBAMkBACGrAUAAywEAIQEAAAAaACABAAAAGgAgCn4AANoBADB_AAAdABCAAQAA2gEAMIEBAgDHAQAhjAFAAMsBACGNAUAAywEAIagBAQDIAQAhqQEBAMgBACGqAQEAyQEAIasBQADLAQAhAaoBAADlAQAgAwAAAB0AIAMAAB4AMAQAABoAIAMAAAAdACADAAAeADAEAAAaACADAAAAHQAgAwAAHgAwBAAAGgAgB4EBAgAAAAGMAUAAAAABjQFAAAAAAagBAQAAAAGpAQEAAAABqgEBAAAAAasBQAAAAAEBCAAAIgAgB4EBAgAAAAGMAUAAAAABjQFAAAAAAagBAQAAAAGpAQEAAAABqgEBAAAAAasBQAAAAAEBCAAAJAAwAQgAACQAMAeBAQIA7AEAIYwBQADvAQAhjQFAAO8BACGoAQEA6wEAIakBAQDrAQAhqgEBAO0BACGrAUAA7wEAIQIAAAAaACAIAAAnACAHgQECAOwBACGMAUAA7wEAIY0BQADvAQAhqAEBAOsBACGpAQEA6wEAIaoBAQDtAQAhqwFAAO8BACECAAAAHQAgCAAAKQAgAgAAAB0AIAgAACkAIAMAAAAaACAPAAAiACAQAAAnACABAAAAGgAgAQAAAB0AIAYVAACeAgAgFgAAnwIAIBcAAKICACAYAAChAgAgGQAAoAIAIKoBAADlAQAgCn4AANkBADB_AAAwABCAAQAA2QEAMIEBAgC1AQAhjAFAALkBACGNAUAAuQEAIagBAQC2AQAhqQEBALYBACGqAQEAtwEAIasBQAC5AQAhAwAAAB0AIAMAAC8AMBQAADAAIAMAAAAdACADAAAeADAEAAAaACAKCAAA2AEAIH4AANcBADB_AAA2ABCAAQAA1wEAMIEBAgAAAAGMAUAAywEAIY0BQADLAQAhoAEBAMgBACGhAQEAyAEAIaIBQADLAQAhAQAAADMAIAEAAAAzACAKCAAA2AEAIH4AANcBADB_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_AAB_ABCAAQAAzgEAMIEBAgC1AQAhggEBALYBACGMAUAAuQEAIY0BQAC5AQAhAwAAAE4AIAMAAH4AMBQAAH8AIAMAAABOACADAABPADAEAABQACAJfgAAzQEAMH8AAIUBABCAAQAAzQEAMIEBAQAAAAGGAQEAyAEAIZkBAQAAAAGaAUAAywEAIZsBQADLAQAhnAEBAMkBACEBAAAAggEAIAEAAACCAQAgCX4AAM0BADB_AACFAQAQgAEAAM0BADCBAQEAyAEAIYYBAQDIAQAhmQEBAMgBACGaAUAAywEAIZsBQADLAQAhnAEBAMkBACEBnAEAAOUBACADAAAAhQEAIAMAAIYBADAEAACCAQAgAwAAAIUBACADAACGAQAwBAAAggEAIAMAAACFAQAgAwAAhgEAMAQAAIIBACAGgQEBAAAAAYYBAQAAAAGZAQEAAAABmgFAAAAAAZsBQAAAAAGcAQEAAAABAQgAAIoBACAGgQEBAAAAAYYBAQAAAAGZAQEAAAABmgFAAAAAAZsBQAAAAAGcAQEAAAABAQgAAIwBADABCAAAjAEAMAaBAQEA6wEAIYYBAQDrAQAhmQEBAOsBACGaAUAA7wEAIZsBQADvAQAhnAEBAO0BACECAAAAggEAIAgAAI8BACAGgQEBAOsBACGGAQEA6wEAIZkBAQDrAQAhmgFAAO8BACGbAUAA7wEAIZwBAQDtAQAhAgAAAIUBACAIAACRAQAgAgAAAIUBACAIAACRAQAgAwAAAIIBACAPAACKAQAgEAAAjwEAIAEAAACCAQAgAQAAAIUBACAEFQAA8AEAIBgAAPIBACAZAADxAQAgnAEAAOUBACAJfgAAzAEAMH8AAJgBABCAAQAAzAEAMIEBAQC2AQAhhgEBALYBACGZAQEAtgEAIZoBQAC5AQAhmwFAALkBACGcAQEAtwEAIQMAAACFAQAgAwAAlwEAMBQAAJgBACADAAAAhQEAIAMAAIYBADAEAACCAQAgEH4AAMYBADB_AACeAQAQgAEAAMYBADCBAQIAAAABggEBAAAAAYMBAQDIAQAhhAEBAMgBACGFAQIAxwEAIYYBAQDIAQAhhwEBAMkBACGIAQEAyQEAIYkBAQDJAQAhigEBAMkBACGLAQIAygEAIYwBQADLAQAhjQFAAMsBACEBAAAAmwEAIAEAAACbAQAgEH4AAMYBADB_AACeAQAQgAEAAMYBADCBAQIAxwEAIYIBAQDIAQAhgwEBAMgBACGEAQEAyAEAIYUBAgDHAQAhhgEBAMgBACGHAQEAyQEAIYgBAQDJAQAhiQEBAMkBACGKAQEAyQEAIYsBAgDKAQAhjAFAAMsBACGNAUAAywEAIQWHAQAA5QEAIIgBAADlAQAgiQEAAOUBACCKAQAA5QEAIIsBAADlAQAgAwAAAJ4BACADAACfAQAwBAAAmwEAIAMAAACeAQAgAwAAnwEAMAQAAJsBACADAAAAngEAIAMAAJ8BADAEAACbAQAgDYEBAgAAAAGCAQEAAAABgwEBAAAAAYQBAQAAAAGFAQIAAAABhgEBAAAAAYcBAQAAAAGIAQEAAAABiQEBAAAAAYoBAQAAAAGLAQIAAAABjAFAAAAAAY0BQAAAAAEBCAAAowEAIA2BAQIAAAABggEBAAAAAYMBAQAAAAGEAQEAAAABhQECAAAAAYYBAQAAAAGHAQEAAAABiAEBAAAAAYkBAQAAAAGKAQEAAAABiwECAAAAAYwBQAAAAAGNAUAAAAABAQgAAKUBADABCAAApQEAMA2BAQIA7AEAIYIBAQDrAQAhgwEBAOsBACGEAQEA6wEAIYUBAgDsAQAhhgEBAOsBACGHAQEA7QEAIYgBAQDtAQAhiQEBAO0BACGKAQEA7QEAIYsBAgDuAQAhjAFAAO8BACGNAUAA7wEAIQIAAACbAQAgCAAAqAEAIA2BAQIA7AEAIYIBAQDrAQAhgwEBAOsBACGEAQEA6wEAIYUBAgDsAQAhhgEBAOsBACGHAQEA7QEAIYgBAQDtAQAhiQEBAO0BACGKAQEA7QEAIYsBAgDuAQAhjAFAAO8BACGNAUAA7wEAIQIAAACeAQAgCAAAqgEAIAIAAACeAQAgCAAAqgEAIAMAAACbAQAgDwAAowEAIBAAAKgBACABAAAAmwEAIAEAAACeAQAgChUAAOYBACAWAADnAQAgFwAA6gEAIBgAAOkBACAZAADoAQAghwEAAOUBACCIAQAA5QEAIIkBAADlAQAgigEAAOUBACCLAQAA5QEAIBB-AAC0AQAwfwAAsQEAEIABAAC0AQAwgQECALUBACGCAQEAtgEAIYMBAQC2AQAhhAEBALYBACGFAQIAtQEAIYYBAQC2AQAhhwEBALcBACGIAQEAtwEAIYkBAQC3AQAhigEBALcBACGLAQIAuAEAIYwBQAC5AQAhjQFAALkBACEDAAAAngEAIAMAALABADAUAACxAQAgAwAAAJ4BACADAACfAQAwBAAAmwEAIBB-AAC0AQAwfwAAsQEAEIABAAC0AQAwgQECALUBACGCAQEAtgEAIYMBAQC2AQAhhAEBALYBACGFAQIAtQEAIYYBAQC2AQAhhwEBALcBACGIAQEAtwEAIYkBAQC3AQAhigEBALcBACGLAQIAuAEAIYwBQAC5AQAhjQFAALkBACENFQAAuwEAIBYAAMUBACAXAAC7AQAgGAAAuwEAIBkAALsBACCOAQIAAAABjwECAAAABJABAgAAAASRAQIAAAABkgECAAAAAZMBAgAAAAGUAQIAAAABlQECAMQBACEOFQAAuwEAIBgAAMMBACAZAADDAQAgjgEBAAAAAY8BAQAAAASQAQEAAAAEkQEBAAAAAZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQDCAQAhlgEBAAAAAZcBAQAAAAGYAQEAAAABDhUAAL4BACAYAADBAQAgGQAAwQEAII4BAQAAAAGPAQEAAAAFkAEBAAAABZEBAQAAAAGSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAwAEAIZYBAQAAAAGXAQEAAAABmAEBAAAAAQ0VAAC-AQAgFgAAvwEAIBcAAL4BACAYAAC-AQAgGQAAvgEAII4BAgAAAAGPAQIAAAAFkAECAAAABZEBAgAAAAGSAQIAAAABkwECAAAAAZQBAgAAAAGVAQIAvQEAIQsVAAC7AQAgGAAAvAEAIBkAALwBACCOAUAAAAABjwFAAAAABJABQAAAAASRAUAAAAABkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAALoBACELFQAAuwEAIBgAALwBACAZAAC8AQAgjgFAAAAAAY8BQAAAAASQAUAAAAAEkQFAAAAAAZIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQAC6AQAhCI4BAgAAAAGPAQIAAAAEkAECAAAABJEBAgAAAAGSAQIAAAABkwECAAAAAZQBAgAAAAGVAQIAuwEAIQiOAUAAAAABjwFAAAAABJABQAAAAASRAUAAAAABkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAALwBACENFQAAvgEAIBYAAL8BACAXAAC-AQAgGAAAvgEAIBkAAL4BACCOAQIAAAABjwECAAAABZABAgAAAAWRAQIAAAABkgECAAAAAZMBAgAAAAGUAQIAAAABlQECAL0BACEIjgECAAAAAY8BAgAAAAWQAQIAAAAFkQECAAAAAZIBAgAAAAGTAQIAAAABlAECAAAAAZUBAgC-AQAhCI4BCAAAAAGPAQgAAAAFkAEIAAAABZEBCAAAAAGSAQgAAAABkwEIAAAAAZQBCAAAAAGVAQgAvwEAIQ4VAAC-AQAgGAAAwQEAIBkAAMEBACCOAQEAAAABjwEBAAAABZABAQAAAAWRAQEAAAABkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAMABACGWAQEAAAABlwEBAAAAAZgBAQAAAAELjgEBAAAAAY8BAQAAAAWQAQEAAAAFkQEBAAAAAZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQDBAQAhlgEBAAAAAZcBAQAAAAGYAQEAAAABDhUAALsBACAYAADDAQAgGQAAwwEAII4BAQAAAAGPAQEAAAAEkAEBAAAABJEBAQAAAAGSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAwgEAIZYBAQAAAAGXAQEAAAABmAEBAAAAAQuOAQEAAAABjwEBAAAABJABAQAAAASRAQEAAAABkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAMMBACGWAQEAAAABlwEBAAAAAZgBAQAAAAENFQAAuwEAIBYAAMUBACAXAAC7AQAgGAAAuwEAIBkAALsBACCOAQIAAAABjwECAAAABJABAgAAAASRAQIAAAABkgECAAAAAZMBAgAAAAGUAQIAAAABlQECAMQBACEIjgEIAAAAAY8BCAAAAASQAQgAAAAEkQEIAAAAAZIBCAAAAAGTAQgAAAABlAEIAAAAAZUBCADFAQAhEH4AAMYBADB_AACeAQAQgAEAAMYBADCBAQIAxwEAIYIBAQDIAQAhgwEBAMgBACGEAQEAyAEAIYUBAgDHAQAhhgEBAMgBACGHAQEAyQEAIYgBAQDJAQAhiQEBAMkBACGKAQEAyQEAIYsBAgDKAQAhjAFAAMsBACGNAUAAywEAIQiOAQIAAAABjwECAAAABJABAgAAAASRAQIAAAABkgECAAAAAZMBAgAAAAGUAQIAAAABlQECALsBACELjgEBAAAAAY8BAQAAAASQAQEAAAAEkQEBAAAAAZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQDDAQAhlgEBAAAAAZcBAQAAAAGYAQEAAAABC44BAQAAAAGPAQEAAAAFkAEBAAAABZEBAQAAAAGSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAwQEAIZYBAQAAAAGXAQEAAAABmAEBAAAAAQiOAQIAAAABjwECAAAABZABAgAAAAWRAQIAAAABkgECAAAAAZMBAgAAAAGUAQIAAAABlQECAL4BACEIjgFAAAAAAY8BQAAAAASQAUAAAAAEkQFAAAAAAZIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQAC8AQAhCX4AAMwBADB_AACYAQAQgAEAAMwBADCBAQEAtgEAIYYBAQC2AQAhmQEBALYBACGaAUAAuQEAIZsBQAC5AQAhnAEBALcBACEJfgAAzQEAMH8AAIUBABCAAQAAzQEAMIEBAQDIAQAhhgEBAMgBACGZAQEAyAEAIZoBQADLAQAhmwFAAMsBACGcAQEAyQEAIQd-AADOAQAwfwAAfwAQgAEAAM4BADCBAQIAtQEAIYIBAQC2AQAhjAFAALkBACGNAUAAuQEAIQd-AADPAQAwfwAAaQAQgAEAAM8BADCBAQIAtQEAIYIBAQC2AQAhjAFAALkBACGNAUAAuQEAIQg9AADRAQAgfgAA0AEAMH8AAFIAEIABAADQAQAwgQECAMcBACGCAQEAyAEAIYwBQADLAQAhjQFAAMsBACEDnQEAAE4AIJ4BAABOACCfAQAATgAgCDwAANMBACB-AADSAQAwfwAATgAQgAEAANIBADCBAQIAxwEAIYIBAQDIAQAhjAFAAMsBACGNAUAAywEAIQOdAQAAUgAgngEAAFIAIJ8BAABSACAKCAAA1QEAIH4AANQBADB_AABJABCAAQAA1AEAMIEBAgC1AQAhjAFAALkBACGNAUAAuQEAIaABAQC2AQAhoQEBALYBACGiAUAAuQEAIQoVAAC7AQAgGAAA1gEAIBkAANYBACCOAYAAAAABlQGAAAAAAaMBAQAAAAGkAQEAAAABpQEBAAAAAaYBgAAAAAGnAYAAAAABB44BgAAAAAGVAYAAAAABowEBAAAAAaQBAQAAAAGlAQEAAAABpgGAAAAAAacBgAAAAAEKCAAA2AEAIH4AANcBADB_AAA2ABCAAQAA1wEAMIEBAgDHAQAhjAFAAMsBACGNAUAAywEAIaABAQDIAQAhoQEBAMgBACGiAUAAywEAIQeOAYAAAAABlQGAAAAAAaMBAQAAAAGkAQEAAAABpQEBAAAAAaYBgAAAAAGnAYAAAAABCn4AANkBADB_AAAwABCAAQAA2QEAMIEBAgC1AQAhjAFAALkBACGNAUAAuQEAIagBAQC2AQAhqQEBALYBACGqAQEAtwEAIasBQAC5AQAhCn4AANoBADB_AAAdABCAAQAA2gEAMIEBAgDHAQAhjAFAAMsBACGNAUAAywEAIagBAQDIAQAhqQEBAMgBACGqAQEAyQEAIasBQADLAQAhDH4AANsBADB_AAAXABCAAQAA2wEAMIEBAgC1AQAhggEBALcBACGIAQEAtwEAIYwBQAC5AQAhjQFAALkBACGiAUAA3QEAIawBAQC2AQAhrQEBALYBACGuASAA3AEAIQUVAAC7AQAgGAAA4QEAIBkAAOEBACCOASAAAAABlQEgAOABACELFQAAvgEAIBgAAN8BACAZAADfAQAgjgFAAAAAAY8BQAAAAAWQAUAAAAAFkQFAAAAAAZIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQADeAQAhCxUAAL4BACAYAADfAQAgGQAA3wEAII4BQAAAAAGPAUAAAAAFkAFAAAAABZEBQAAAAAGSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAA3gEAIQiOAUAAAAABjwFAAAAABZABQAAAAAWRAUAAAAABkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAAN8BACEFFQAAuwEAIBgAAOEBACAZAADhAQAgjgEgAAAAAZUBIADgAQAhAo4BIAAAAAGVASAA4QEAIQx-AADiAQAwfwAABAAQgAEAAOIBADCBAQIAxwEAIYIBAQDJAQAhiAEBAMkBACGMAUAAywEAIY0BQADLAQAhogFAAOQBACGsAQEAyAEAIa0BAQDIAQAhrgEgAOMBACECjgEgAAAAAZUBIADhAQAhCI4BQAAAAAGPAUAAAAAFkAFAAAAABZEBQAAAAAGSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAA3wEAIQAAAAAAAAGxAQEAAAABBbEBAgAAAAG3AQIAAAABuAECAAAAAbkBAgAAAAG6AQIAAAABAbEBAQAAAAEFsQECAAAAAbcBAgAAAAG4AQIAAAABuQECAAAAAboBAgAAAAEBsQFAAAAAAQAAAAAAAAAACg8AAPkBADAQAAD9AQAwrwEAAPoBADCwAQAA-wEAMLEBAAD8AQAwsgEAAPwBADCzAQAA_AEAMLQBAAD8AQAwtQEAAP4BADC2AQAA_wEAMASBAQIAAAABggEBAAAAAYwBQAAAAAGNAUAAAAABAgAAAEwAIA8AAIMCACADAAAATAAgDwAAgwIAIBAAAIICACAIPQAA0QEAIH4AANABADB_AABSABCAAQAA0AEAMIEBAgAAAAGCAQEAAAABjAFAAMsBACGNAUAAywEAIQIAAABMACAIAACCAgAgAgAAAIACACAIAACBAgAgB34AAP8BADB_AACAAgAQgAEAAP8BADCBAQIAxwEAIYIBAQDIAQAhjAFAAMsBACGNAUAAywEAIQd-AAD_AQAwfwAAgAIAEIABAAD_AQAwgQECAMcBACGCAQEAyAEAIYwBQADLAQAhjQFAAMsBACEEgQECAOwBACGCAQEA6wEAIYwBQADvAQAhjQFAAO8BACEEgQECAOwBACGCAQEA6wEAIYwBQADvAQAhjQFAAO8BACEEgQECAAAAAYIBAQAAAAGMAUAAAAABjQFAAAAAAQMPAAD5AQAwrwEAAPoBADC0AQAA_AEAMAAAAAAACg8AAIsCADAQAACPAgAwrwEAAIwCADCwAQAAjQIAMLEBAACOAgAwsgEAAI4CADCzAQAAjgIAMLQBAACOAgAwtQEAAJACADC2AQAAkQIAMASBAQIAAAABggEBAAAAAYwBQAAAAAGNAUAAAAABAgAAAFAAIA8AAJUCACADAAAAUAAgDwAAlQIAIBAAAJQCACAIPAAA0wEAIH4AANIBADB_AABOABCAAQAA0gEAMIEBAgAAAAGCAQEAAAABjAFAAMsBACGNAUAAywEAIQIAAABQACAIAACUAgAgAgAAAJICACAIAACTAgAgB34AAJECADB_AACSAgAQgAEAAJECADCBAQIAxwEAIYIBAQDIAQAhjAFAAMsBACGNAUAAywEAIQd-AACRAgAwfwAAkgIAEIABAACRAgAwgQECAMcBACGCAQEAyAEAIYwBQADLAQAhjQFAAMsBACEEgQECAOwBACGCAQEA6wEAIYwBQADvAQAhjQFAAO8BACEEgQECAOwBACGCAQEA6wEAIYwBQADvAQAhjQFAAO8BACEEgQECAAAAAYIBAQAAAAGMAUAAAAABjQFAAAAAAQMPAACLAgAwrwEAAIwCADC0AQAAjgIAMAAAAAAAAAAAAAAAAAAAAAAAAbEBIAAAAAEBsQFAAAAAAQAAAAAFFQAGFgAHFwAIGAAJGQAKAAAAAAAFFQAGFgAHFwAIGAAJGQAKAAAABRUAEBYAERcAEhgAExkAFAAAAAAABRUAEBYAERcAEhgAExkAFAAAAAUVABoWABsXABwYAB0ZAB4AAAAAAAUVABoWABsXABwYAB0ZAB4CFQAjPVEhAhUAIjxUIAE8VQABPVYAAAAFFQAnFgAoFwApGAAqGQArAAAAAAAFFQAnFgAoFwApGAAqGQArAAAFFQAwFgAxFwAyGAAzGQA0AAAAAAAFFQAwFgAxFwAyGAAzGQA0AAAAAxUAOhgAOxkAPAAAAAMVADoYADsZADwAAAAFFQBCFgBDFwBEGABFGQBGAAAAAAAFFQBCFgBDFwBEGABFGQBGAQIBAgMBBQYBBgcBBwgBCQoBCgwCCw0DDA8BDRECDhIEERMBEhQBExUCGhgFGxkLHBsMHRwMHh8MHyAMICEMISMMIiUCIyYNJCgMJSoCJisOJywMKC0MKS4CKjEPKzIVLDQWLTUWLjgWLzkWMDoWMTwWMj4CMz8XNEEWNUMCNkQYN0UWOEYWOUcCOkoZO0sfPk0gP1cgQFggQVkgQlogQ1wgRF4CRV8kRmEgR2MCSGQlSWUgSmYgS2cCTGomTWssTmwhT20hUG4hUW8hUnAhU3IhVHQCVXUtVnchV3kCWHouWXshWnwhW30CXIABL12BATVegwE2X4QBNmCHATZhiAE2YokBNmOLATZkjQECZY4BN2aQATZnkgECaJMBOGmUATZqlQE2a5YBAmyZATltmgE9bpwBPm-dAT5woAE-caEBPnKiAT5zpAE-dKYBAnWnAT92qQE-d6sBAnisAUB5rQE-eq4BPnuvAQJ8sgFBfbMBRw"
|
|
68
|
+
graph: "pAJHcAx-AADeAQAwfwAABAAQgAEAAN4BADCBAQIAAAABggEBAMYBACGIAQEAxgEAIYwBQADHAQAhjQFAAMcBACGiAUAA4AEAIawBAQDFAQAhrQEBAAAAAa4BIADfAQAhAQAAAAEAIAEAAAABACAMfgAA3gEAMH8AAAQAEIABAADeAQAwgQECAMQBACGCAQEAxgEAIYgBAQDGAQAhjAFAAMcBACGNAUAAxwEAIaIBQADgAQAhrAEBAMUBACGtAQEAxQEAIa4BIADfAQAhA4IBAADhAQAgiAEAAOEBACCiAQAA4QEAIAMAAAAEACADAAAFADAEAAABACADAAAABAAgAwAABQAwBAAAAQAgAwAAAAQAIAMAAAUAMAQAAAEAIAmBAQIAAAABggEBAAAAAYgBAQAAAAGMAUAAAAABjQFAAAAAAaIBQAAAAAGsAQEAAAABrQEBAAAAAa4BIAAAAAEBCAAACQAgCYEBAgAAAAGCAQEAAAABiAEBAAAAAYwBQAAAAAGNAUAAAAABogFAAAAAAawBAQAAAAGtAQEAAAABrgEgAAAAAQEIAAALADABCAAACwAwCYEBAgDoAQAhggEBAOkBACGIAQEA6QEAIYwBQADqAQAhjQFAAOoBACGiAUAApAIAIawBAQDnAQAhrQEBAOcBACGuASAAowIAIQIAAAABACAIAAAOACAJgQECAOgBACGCAQEA6QEAIYgBAQDpAQAhjAFAAOoBACGNAUAA6gEAIaIBQACkAgAhrAEBAOcBACGtAQEA5wEAIa4BIACjAgAhAgAAAAQAIAgAABAAIAIAAAAEACAIAAAQACADAAAAAQAgDwAACQAgEAAADgAgAQAAAAEAIAEAAAAEACAIFQAAngIAIBYAAJ8CACAXAACiAgAgGAAAoQIAIBkAAKACACCCAQAA4QEAIIgBAADhAQAgogEAAOEBACAMfgAA1wEAMH8AABcAEIABAADXAQAwgQECALUBACGCAQEAtwEAIYgBAQC3AQAhjAFAALgBACGNAUAAuAEAIaIBQADZAQAhrAEBALYBACGtAQEAtgEAIa4BIADYAQAhAwAAAAQAIAMAABYAMBQAABcAIAMAAAAEACADAAAFADAEAAABACAKfgAA1gEAMH8AAB0AEIABAADWAQAwgQECAAAAAYwBQADHAQAhjQFAAMcBACGoAQEAxQEAIakBAQDFAQAhqgEBAMYBACGrAUAAxwEAIQEAAAAaACABAAAAGgAgCn4AANYBADB_AAAdABCAAQAA1gEAMIEBAgDEAQAhjAFAAMcBACGNAUAAxwEAIagBAQDFAQAhqQEBAMUBACGqAQEAxgEAIasBQADHAQAhAaoBAADhAQAgAwAAAB0AIAMAAB4AMAQAABoAIAMAAAAdACADAAAeADAEAAAaACADAAAAHQAgAwAAHgAwBAAAGgAgB4EBAgAAAAGMAUAAAAABjQFAAAAAAagBAQAAAAGpAQEAAAABqgEBAAAAAasBQAAAAAEBCAAAIgAgB4EBAgAAAAGMAUAAAAABjQFAAAAAAagBAQAAAAGpAQEAAAABqgEBAAAAAasBQAAAAAEBCAAAJAAwAQgAACQAMAeBAQIA6AEAIYwBQADqAQAhjQFAAOoBACGoAQEA5wEAIakBAQDnAQAhqgEBAOkBACGrAUAA6gEAIQIAAAAaACAIAAAnACAHgQECAOgBACGMAUAA6gEAIY0BQADqAQAhqAEBAOcBACGpAQEA5wEAIaoBAQDpAQAhqwFAAOoBACECAAAAHQAgCAAAKQAgAgAAAB0AIAgAACkAIAMAAAAaACAPAAAiACAQAAAnACABAAAAGgAgAQAAAB0AIAYVAACZAgAgFgAAmgIAIBcAAJ0CACAYAACcAgAgGQAAmwIAIKoBAADhAQAgCn4AANUBADB_AAAwABCAAQAA1QEAMIEBAgC1AQAhjAFAALgBACGNAUAAuAEAIagBAQC2AQAhqQEBALYBACGqAQEAtwEAIasBQAC4AQAhAwAAAB0AIAMAAC8AMBQAADAAIAMAAAAdACADAAAeADAEAAAaACAKCAAA1AEAIH4AANMBADB_AAA2ABCAAQAA0wEAMIEBAgAAAAGMAUAAxwEAIY0BQADHAQAhoAEBAMUBACGhAQEAxQEAIaIBQADHAQAhAQAAADMAIAEAAAAzACAKCAAA1AEAIH4AANMBADB_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_AAB_ABCAAQAAygEAMIEBAgC1AQAhggEBALYBACGMAUAAuAEAIY0BQAC4AQAhAwAAAE4AIAMAAH4AMBQAAH8AIAMAAABOACADAABPADAEAABQACAJfgAAyQEAMH8AAIUBABCAAQAAyQEAMIEBAQAAAAGGAQEAxQEAIZkBAQAAAAGaAUAAxwEAIZsBQADHAQAhnAEBAMYBACEBAAAAggEAIAEAAACCAQAgCX4AAMkBADB_AACFAQAQgAEAAMkBADCBAQEAxQEAIYYBAQDFAQAhmQEBAMUBACGaAUAAxwEAIZsBQADHAQAhnAEBAMYBACEBnAEAAOEBACADAAAAhQEAIAMAAIYBADAEAACCAQAgAwAAAIUBACADAACGAQAwBAAAggEAIAMAAACFAQAgAwAAhgEAMAQAAIIBACAGgQEBAAAAAYYBAQAAAAGZAQEAAAABmgFAAAAAAZsBQAAAAAGcAQEAAAABAQgAAIoBACAGgQEBAAAAAYYBAQAAAAGZAQEAAAABmgFAAAAAAZsBQAAAAAGcAQEAAAABAQgAAIwBADABCAAAjAEAMAaBAQEA5wEAIYYBAQDnAQAhmQEBAOcBACGaAUAA6gEAIZsBQADqAQAhnAEBAOkBACECAAAAggEAIAgAAI8BACAGgQEBAOcBACGGAQEA5wEAIZkBAQDnAQAhmgFAAOoBACGbAUAA6gEAIZwBAQDpAQAhAgAAAIUBACAIAACRAQAgAgAAAIUBACAIAACRAQAgAwAAAIIBACAPAACKAQAgEAAAjwEAIAEAAACCAQAgAQAAAIUBACAEFQAA6wEAIBgAAO0BACAZAADsAQAgnAEAAOEBACAJfgAAyAEAMH8AAJgBABCAAQAAyAEAMIEBAQC2AQAhhgEBALYBACGZAQEAtgEAIZoBQAC4AQAhmwFAALgBACGcAQEAtwEAIQMAAACFAQAgAwAAlwEAMBQAAJgBACADAAAAhQEAIAMAAIYBADAEAACCAQAgEH4AAMMBADB_AACeAQAQgAEAAMMBADCBAQIAAAABggEBAAAAAYMBAQDFAQAhhAEBAMUBACGFAQIAxAEAIYYBAQDFAQAhhwEBAMYBACGIAQEAxgEAIYkBAQDGAQAhigEBAMYBACGLAQEAxgEAIYwBQADHAQAhjQFAAMcBACEBAAAAmwEAIAEAAACbAQAgEH4AAMMBADB_AACeAQAQgAEAAMMBADCBAQIAxAEAIYIBAQDFAQAhgwEBAMUBACGEAQEAxQEAIYUBAgDEAQAhhgEBAMUBACGHAQEAxgEAIYgBAQDGAQAhiQEBAMYBACGKAQEAxgEAIYsBAQDGAQAhjAFAAMcBACGNAUAAxwEAIQWHAQAA4QEAIIgBAADhAQAgiQEAAOEBACCKAQAA4QEAIIsBAADhAQAgAwAAAJ4BACADAACfAQAwBAAAmwEAIAMAAACeAQAgAwAAnwEAMAQAAJsBACADAAAAngEAIAMAAJ8BADAEAACbAQAgDYEBAgAAAAGCAQEAAAABgwEBAAAAAYQBAQAAAAGFAQIAAAABhgEBAAAAAYcBAQAAAAGIAQEAAAABiQEBAAAAAYoBAQAAAAGLAQEAAAABjAFAAAAAAY0BQAAAAAEBCAAAowEAIA2BAQIAAAABggEBAAAAAYMBAQAAAAGEAQEAAAABhQECAAAAAYYBAQAAAAGHAQEAAAABiAEBAAAAAYkBAQAAAAGKAQEAAAABiwEBAAAAAYwBQAAAAAGNAUAAAAABAQgAAKUBADABCAAApQEAMA2BAQIA6AEAIYIBAQDnAQAhgwEBAOcBACGEAQEA5wEAIYUBAgDoAQAhhgEBAOcBACGHAQEA6QEAIYgBAQDpAQAhiQEBAOkBACGKAQEA6QEAIYsBAQDpAQAhjAFAAOoBACGNAUAA6gEAIQIAAACbAQAgCAAAqAEAIA2BAQIA6AEAIYIBAQDnAQAhgwEBAOcBACGEAQEA5wEAIYUBAgDoAQAhhgEBAOcBACGHAQEA6QEAIYgBAQDpAQAhiQEBAOkBACGKAQEA6QEAIYsBAQDpAQAhjAFAAOoBACGNAUAA6gEAIQIAAACeAQAgCAAAqgEAIAIAAACeAQAgCAAAqgEAIAMAAACbAQAgDwAAowEAIBAAAKgBACABAAAAmwEAIAEAAACeAQAgChUAAOIBACAWAADjAQAgFwAA5gEAIBgAAOUBACAZAADkAQAghwEAAOEBACCIAQAA4QEAIIkBAADhAQAgigEAAOEBACCLAQAA4QEAIBB-AAC0AQAwfwAAsQEAEIABAAC0AQAwgQECALUBACGCAQEAtgEAIYMBAQC2AQAhhAEBALYBACGFAQIAtQEAIYYBAQC2AQAhhwEBALcBACGIAQEAtwEAIYkBAQC3AQAhigEBALcBACGLAQEAtwEAIYwBQAC4AQAhjQFAALgBACEDAAAAngEAIAMAALABADAUAACxAQAgAwAAAJ4BACADAACfAQAwBAAAmwEAIBB-AAC0AQAwfwAAsQEAEIABAAC0AQAwgQECALUBACGCAQEAtgEAIYMBAQC2AQAhhAEBALYBACGFAQIAtQEAIYYBAQC2AQAhhwEBALcBACGIAQEAtwEAIYkBAQC3AQAhigEBALcBACGLAQEAtwEAIYwBQAC4AQAhjQFAALgBACENFQAAugEAIBYAAMIBACAXAAC6AQAgGAAAugEAIBkAALoBACCOAQIAAAABjwECAAAABJABAgAAAASRAQIAAAABkgECAAAAAZMBAgAAAAGUAQIAAAABlQECAMEBACEOFQAAugEAIBgAAMABACAZAADAAQAgjgEBAAAAAY8BAQAAAASQAQEAAAAEkQEBAAAAAZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQC_AQAhlgEBAAAAAZcBAQAAAAGYAQEAAAABDhUAAL0BACAYAAC-AQAgGQAAvgEAII4BAQAAAAGPAQEAAAAFkAEBAAAABZEBAQAAAAGSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAvAEAIZYBAQAAAAGXAQEAAAABmAEBAAAAAQsVAAC6AQAgGAAAuwEAIBkAALsBACCOAUAAAAABjwFAAAAABJABQAAAAASRAUAAAAABkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAALkBACELFQAAugEAIBgAALsBACAZAAC7AQAgjgFAAAAAAY8BQAAAAASQAUAAAAAEkQFAAAAAAZIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQAC5AQAhCI4BAgAAAAGPAQIAAAAEkAECAAAABJEBAgAAAAGSAQIAAAABkwECAAAAAZQBAgAAAAGVAQIAugEAIQiOAUAAAAABjwFAAAAABJABQAAAAASRAUAAAAABkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAALsBACEOFQAAvQEAIBgAAL4BACAZAAC-AQAgjgEBAAAAAY8BAQAAAAWQAQEAAAAFkQEBAAAAAZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQC8AQAhlgEBAAAAAZcBAQAAAAGYAQEAAAABCI4BAgAAAAGPAQIAAAAFkAECAAAABZEBAgAAAAGSAQIAAAABkwECAAAAAZQBAgAAAAGVAQIAvQEAIQuOAQEAAAABjwEBAAAABZABAQAAAAWRAQEAAAABkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAL4BACGWAQEAAAABlwEBAAAAAZgBAQAAAAEOFQAAugEAIBgAAMABACAZAADAAQAgjgEBAAAAAY8BAQAAAASQAQEAAAAEkQEBAAAAAZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQC_AQAhlgEBAAAAAZcBAQAAAAGYAQEAAAABC44BAQAAAAGPAQEAAAAEkAEBAAAABJEBAQAAAAGSAQEAAAABkwEBAAAAAZQBAQAAAAGVAQEAwAEAIZYBAQAAAAGXAQEAAAABmAEBAAAAAQ0VAAC6AQAgFgAAwgEAIBcAALoBACAYAAC6AQAgGQAAugEAII4BAgAAAAGPAQIAAAAEkAECAAAABJEBAgAAAAGSAQIAAAABkwECAAAAAZQBAgAAAAGVAQIAwQEAIQiOAQgAAAABjwEIAAAABJABCAAAAASRAQgAAAABkgEIAAAAAZMBCAAAAAGUAQgAAAABlQEIAMIBACEQfgAAwwEAMH8AAJ4BABCAAQAAwwEAMIEBAgDEAQAhggEBAMUBACGDAQEAxQEAIYQBAQDFAQAhhQECAMQBACGGAQEAxQEAIYcBAQDGAQAhiAEBAMYBACGJAQEAxgEAIYoBAQDGAQAhiwEBAMYBACGMAUAAxwEAIY0BQADHAQAhCI4BAgAAAAGPAQIAAAAEkAECAAAABJEBAgAAAAGSAQIAAAABkwECAAAAAZQBAgAAAAGVAQIAugEAIQuOAQEAAAABjwEBAAAABJABAQAAAASRAQEAAAABkgEBAAAAAZMBAQAAAAGUAQEAAAABlQEBAMABACGWAQEAAAABlwEBAAAAAZgBAQAAAAELjgEBAAAAAY8BAQAAAAWQAQEAAAAFkQEBAAAAAZIBAQAAAAGTAQEAAAABlAEBAAAAAZUBAQC-AQAhlgEBAAAAAZcBAQAAAAGYAQEAAAABCI4BQAAAAAGPAUAAAAAEkAFAAAAABJEBQAAAAAGSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAAuwEAIQl-AADIAQAwfwAAmAEAEIABAADIAQAwgQEBALYBACGGAQEAtgEAIZkBAQC2AQAhmgFAALgBACGbAUAAuAEAIZwBAQC3AQAhCX4AAMkBADB_AACFAQAQgAEAAMkBADCBAQEAxQEAIYYBAQDFAQAhmQEBAMUBACGaAUAAxwEAIZsBQADHAQAhnAEBAMYBACEHfgAAygEAMH8AAH8AEIABAADKAQAwgQECALUBACGCAQEAtgEAIYwBQAC4AQAhjQFAALgBACEHfgAAywEAMH8AAGkAEIABAADLAQAwgQECALUBACGCAQEAtgEAIYwBQAC4AQAhjQFAALgBACEIPQAAzQEAIH4AAMwBADB_AABSABCAAQAAzAEAMIEBAgDEAQAhggEBAMUBACGMAUAAxwEAIY0BQADHAQAhA50BAABOACCeAQAATgAgnwEAAE4AIAg8AADPAQAgfgAAzgEAMH8AAE4AEIABAADOAQAwgQECAMQBACGCAQEAxQEAIYwBQADHAQAhjQFAAMcBACEDnQEAAFIAIJ4BAABSACCfAQAAUgAgCggAANEBACB-AADQAQAwfwAASQAQgAEAANABADCBAQIAtQEAIYwBQAC4AQAhjQFAALgBACGgAQEAtgEAIaEBAQC2AQAhogFAALgBACEKFQAAugEAIBgAANIBACAZAADSAQAgjgGAAAAAAZUBgAAAAAGjAQEAAAABpAEBAAAAAaUBAQAAAAGmAYAAAAABpwGAAAAAAQeOAYAAAAABlQGAAAAAAaMBAQAAAAGkAQEAAAABpQEBAAAAAaYBgAAAAAGnAYAAAAABCggAANQBACB-AADTAQAwfwAANgAQgAEAANMBADCBAQIAxAEAIYwBQADHAQAhjQFAAMcBACGgAQEAxQEAIaEBAQDFAQAhogFAAMcBACEHjgGAAAAAAZUBgAAAAAGjAQEAAAABpAEBAAAAAaUBAQAAAAGmAYAAAAABpwGAAAAAAQp-AADVAQAwfwAAMAAQgAEAANUBADCBAQIAtQEAIYwBQAC4AQAhjQFAALgBACGoAQEAtgEAIakBAQC2AQAhqgEBALcBACGrAUAAuAEAIQp-AADWAQAwfwAAHQAQgAEAANYBADCBAQIAxAEAIYwBQADHAQAhjQFAAMcBACGoAQEAxQEAIakBAQDFAQAhqgEBAMYBACGrAUAAxwEAIQx-AADXAQAwfwAAFwAQgAEAANcBADCBAQIAtQEAIYIBAQC3AQAhiAEBALcBACGMAUAAuAEAIY0BQAC4AQAhogFAANkBACGsAQEAtgEAIa0BAQC2AQAhrgEgANgBACEFFQAAugEAIBgAAN0BACAZAADdAQAgjgEgAAAAAZUBIADcAQAhCxUAAL0BACAYAADbAQAgGQAA2wEAII4BQAAAAAGPAUAAAAAFkAFAAAAABZEBQAAAAAGSAUAAAAABkwFAAAAAAZQBQAAAAAGVAUAA2gEAIQsVAAC9AQAgGAAA2wEAIBkAANsBACCOAUAAAAABjwFAAAAABZABQAAAAAWRAUAAAAABkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAANoBACEIjgFAAAAAAY8BQAAAAAWQAUAAAAAFkQFAAAAAAZIBQAAAAAGTAUAAAAABlAFAAAAAAZUBQADbAQAhBRUAALoBACAYAADdAQAgGQAA3QEAII4BIAAAAAGVASAA3AEAIQKOASAAAAABlQEgAN0BACEMfgAA3gEAMH8AAAQAEIABAADeAQAwgQECAMQBACGCAQEAxgEAIYgBAQDGAQAhjAFAAMcBACGNAUAAxwEAIaIBQADgAQAhrAEBAMUBACGtAQEAxQEAIa4BIADfAQAhAo4BIAAAAAGVASAA3QEAIQiOAUAAAAABjwFAAAAABZABQAAAAAWRAUAAAAABkgFAAAAAAZMBQAAAAAGUAUAAAAABlQFAANsBACEAAAAAAAABsQEBAAAAAQWxAQIAAAABtwECAAAAAbgBAgAAAAG5AQIAAAABugECAAAAAQGxAQEAAAABAbEBQAAAAAEAAAAAAAAAAAoPAAD0AQAwEAAA-AEAMK8BAAD1AQAwsAEAAPYBADCxAQAA9wEAMLIBAAD3AQAwswEAAPcBADC0AQAA9wEAMLUBAAD5AQAwtgEAAPoBADAEgQECAAAAAYIBAQAAAAGMAUAAAAABjQFAAAAAAQIAAABMACAPAAD-AQAgAwAAAEwAIA8AAP4BACAQAAD9AQAgCD0AAM0BACB-AADMAQAwfwAAUgAQgAEAAMwBADCBAQIAAAABggEBAAAAAYwBQADHAQAhjQFAAMcBACECAAAATAAgCAAA_QEAIAIAAAD7AQAgCAAA_AEAIAd-AAD6AQAwfwAA-wEAEIABAAD6AQAwgQECAMQBACGCAQEAxQEAIYwBQADHAQAhjQFAAMcBACEHfgAA-gEAMH8AAPsBABCAAQAA-gEAMIEBAgDEAQAhggEBAMUBACGMAUAAxwEAIY0BQADHAQAhBIEBAgDoAQAhggEBAOcBACGMAUAA6gEAIY0BQADqAQAhBIEBAgDoAQAhggEBAOcBACGMAUAA6gEAIY0BQADqAQAhBIEBAgAAAAGCAQEAAAABjAFAAAAAAY0BQAAAAAEDDwAA9AEAMK8BAAD1AQAwtAEAAPcBADAAAAAAAAoPAACGAgAwEAAAigIAMK8BAACHAgAwsAEAAIgCADCxAQAAiQIAMLIBAACJAgAwswEAAIkCADC0AQAAiQIAMLUBAACLAgAwtgEAAIwCADAEgQECAAAAAYIBAQAAAAGMAUAAAAABjQFAAAAAAQIAAABQACAPAACQAgAgAwAAAFAAIA8AAJACACAQAACPAgAgCDwAAM8BACB-AADOAQAwfwAATgAQgAEAAM4BADCBAQIAAAABggEBAAAAAYwBQADHAQAhjQFAAMcBACECAAAAUAAgCAAAjwIAIAIAAACNAgAgCAAAjgIAIAd-AACMAgAwfwAAjQIAEIABAACMAgAwgQECAMQBACGCAQEAxQEAIYwBQADHAQAhjQFAAMcBACEHfgAAjAIAMH8AAI0CABCAAQAAjAIAMIEBAgDEAQAhggEBAMUBACGMAUAAxwEAIY0BQADHAQAhBIEBAgDoAQAhggEBAOcBACGMAUAA6gEAIY0BQADqAQAhBIEBAgDoAQAhggEBAOcBACGMAUAA6gEAIY0BQADqAQAhBIEBAgAAAAGCAQEAAAABjAFAAAAAAY0BQAAAAAEDDwAAhgIAMK8BAACHAgAwtAEAAIkCADAAAAAAAAAAAAAAAAAAAAAAAAGxASAAAAABAbEBQAAAAAEAAAAABRUABhYABxcACBgACRkACgAAAAAABRUABhYABxcACBgACRkACgAAAAUVABAWABEXABIYABMZABQAAAAAAAUVABAWABEXABIYABMZABQAAAAFFQAaFgAbFwAcGAAdGQAeAAAAAAAFFQAaFgAbFwAcGAAdGQAeAhUAIz1RIQIVACI8VCABPFUAAT1WAAAABRUAJxYAKBcAKRgAKhkAKwAAAAAABRUAJxYAKBcAKRgAKhkAKwAABRUAMBYAMRcAMhgAMxkANAAAAAAABRUAMBYAMRcAMhgAMxkANAAAAAMVADoYADsZADwAAAADFQA6GAA7GQA8AAAABRUAQhYAQxcARBgARRkARgAAAAAABRUAQhYAQxcARBgARRkARgECAQIDAQUGAQYHAQcIAQkKAQoMAgsNAwwPAQ0RAg4SBBETARIUARMVAhoYBRsZCxwbDB0cDB4fDB8gDCAhDCEjDCIlAiMmDSQoDCUqAiYrDicsDCgtDCkuAioxDysyFSw0Fi01Fi44Fi85FjA6FjE8FjI-AjM_FzRBFjVDAjZEGDdFFjhGFjlHAjpKGTtLHz5NID9XIEBYIEFZIEJaIENcIEReAkVfJEZhIEdjAkhkJUllIEpmIEtnAkxqJk1rLE5sIU9tIVBuIVFvIVJwIVNyIVR0AlV1LVZ3IVd5Alh6Lll7IVp8IVt9AlyAAS9dgQE1XoMBNl-EATZghwE2YYgBNmKJATZjiwE2ZI0BAmWOATdmkAE2Z5IBAmiTAThplAE2apUBNmuWAQJsmQE5bZoBPW6cAT5vnQE-cKABPnGhAT5yogE-c6QBPnSmAQJ1pwE_dqkBPnerAQJ4rAFAea0BPnquAT57rwECfLIBQX2zAUc"
|
|
69
69
|
};
|
|
70
70
|
async function decodeBase64AsWasm(wasmBase64) {
|
|
71
71
|
const { Buffer } = await Promise.resolve().then(() => __importStar(require('node:buffer')));
|