@simonbackx/simple-database 1.25.0 → 1.26.0
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/dist/index.d.ts +9 -9
- package/dist/index.js.map +1 -1
- package/dist/migrations.d.ts +1 -1
- package/dist/migrations.js +6 -4
- package/dist/migrations.js.map +1 -1
- package/dist/src/classes/Column.d.ts +10 -6
- package/dist/src/classes/Column.js +62 -31
- package/dist/src/classes/Column.js.map +1 -1
- package/dist/src/classes/Database.d.ts +3 -2
- package/dist/src/classes/Database.js +26 -27
- package/dist/src/classes/Database.js.map +1 -1
- package/dist/src/classes/Factory.d.ts +1 -1
- package/dist/src/classes/Factory.js +5 -5
- package/dist/src/classes/ManyToManyRelation.d.ts +3 -3
- package/dist/src/classes/ManyToManyRelation.js +51 -51
- package/dist/src/classes/ManyToManyRelation.js.map +1 -1
- package/dist/src/classes/ManyToOneRelation.d.ts +1 -1
- package/dist/src/classes/ManyToOneRelation.js +2 -2
- package/dist/src/classes/ManyToOneRelation.js.map +1 -1
- package/dist/src/classes/Migration.js +19 -19
- package/dist/src/classes/Migration.js.map +1 -1
- package/dist/src/classes/Model.d.ts +41 -10
- package/dist/src/classes/Model.js +132 -80
- package/dist/src/classes/Model.js.map +1 -1
- package/dist/src/classes/Model.test.js +144 -144
- package/dist/src/classes/Model.test.js.map +1 -1
- package/dist/src/classes/OneToManyRelation.d.ts +3 -3
- package/dist/src/classes/OneToManyRelation.js +9 -9
- package/dist/src/classes/OneToManyRelation.js.map +1 -1
- package/dist/src/classes/data/boys.js +1000 -1000
- package/dist/src/classes/data/family-names.js +997 -997
- package/dist/src/classes/data/girls.js +999 -999
- package/dist/src/classes/data/streets.js +291 -291
- package/dist/src/decorators/Column.d.ts +4 -4
- package/dist/src/decorators/Column.js +1 -1
- package/dist/src/decorators/Column.js.map +1 -1
- package/dist/src/models/Migration.d.ts +1 -1
- package/dist/src/models/Migration.js +8 -8
- package/dist/src/models/Migration.js.map +1 -1
- package/dist/tests/jest.global.setup.d.ts +1 -0
- package/dist/tests/jest.global.setup.js +5 -3
- package/dist/tests/jest.global.setup.js.map +1 -1
- package/package.json +5 -8
|
@@ -1,7 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Model = void 0;
|
|
3
|
+
exports.Model = exports.ModelEventBus = void 0;
|
|
4
4
|
const Database_1 = require("./Database");
|
|
5
|
+
/**
|
|
6
|
+
* Controls the fetching and decrypting of members
|
|
7
|
+
*/
|
|
8
|
+
class ModelEventBus {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.listeners = new Map();
|
|
11
|
+
}
|
|
12
|
+
addListener(owner, listener) {
|
|
13
|
+
const existing = this.listeners.get(owner);
|
|
14
|
+
if (existing) {
|
|
15
|
+
existing.push({ listener });
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.listeners.set(owner, [{ listener }]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
removeListener(owner) {
|
|
22
|
+
this.listeners.delete(owner);
|
|
23
|
+
}
|
|
24
|
+
async sendEvent(value) {
|
|
25
|
+
const values = [];
|
|
26
|
+
for (const owner of this.listeners.values()) {
|
|
27
|
+
for (const listener of owner) {
|
|
28
|
+
values.push(listener.listener(value));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return await Promise.all(values);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.ModelEventBus = ModelEventBus;
|
|
5
35
|
class Model /* static implements RowInitiable<Model> */ {
|
|
6
36
|
constructor() {
|
|
7
37
|
this.existsInDatabase = false;
|
|
@@ -25,7 +55,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
25
55
|
eraseProperty(key) {
|
|
26
56
|
const column = this.static.columns.get(key);
|
|
27
57
|
if (!column) {
|
|
28
|
-
throw new Error(
|
|
58
|
+
throw new Error('Unknown property ' + key);
|
|
29
59
|
}
|
|
30
60
|
delete this[key];
|
|
31
61
|
this.savedProperties.delete(key);
|
|
@@ -40,22 +70,22 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
40
70
|
* Mark all properties as changed, so they will get updated on the next save
|
|
41
71
|
*/
|
|
42
72
|
markAllChanged() {
|
|
43
|
-
this.savedProperties
|
|
73
|
+
this.savedProperties.clear();
|
|
44
74
|
}
|
|
45
75
|
/**
|
|
46
76
|
* Returns the default select to select the needed properties of this table
|
|
47
77
|
* @param namespace: optional namespace of this select
|
|
48
78
|
*/
|
|
49
79
|
static getDefaultSelect(namespace = this.table) {
|
|
50
|
-
return
|
|
80
|
+
return '`' + namespace + '`.*';
|
|
51
81
|
}
|
|
52
82
|
static selectColumnsWithout(namespace = this.table, ...exclude) {
|
|
53
|
-
const properties = Array.from(this.columns.keys()).flatMap(
|
|
54
|
-
if (properties.length
|
|
83
|
+
const properties = Array.from(this.columns.keys()).flatMap(name => (exclude.includes(name) ? [] : [name]));
|
|
84
|
+
if (properties.length === 0) {
|
|
55
85
|
// todo: check what to do in this case.
|
|
56
|
-
throw new Error(
|
|
86
|
+
throw new Error('Not implemented yet');
|
|
57
87
|
}
|
|
58
|
-
return
|
|
88
|
+
return '`' + namespace + '`.`' + properties.join('`, `' + namespace + '`.`') + '`';
|
|
59
89
|
}
|
|
60
90
|
/**
|
|
61
91
|
* Set a relation to undefined, marking it as not loaded (so it won't get saved in the next save)
|
|
@@ -78,7 +108,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
78
108
|
setOptionalRelation(relation, value) {
|
|
79
109
|
// Todo: check if relation is nullable?
|
|
80
110
|
if (value !== null && !value.existsInDatabase) {
|
|
81
|
-
throw new Error(
|
|
111
|
+
throw new Error('You cannot set a relation to a model that are not yet saved in the database.');
|
|
82
112
|
}
|
|
83
113
|
const t = this;
|
|
84
114
|
t[relation.modelKey] = value;
|
|
@@ -87,7 +117,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
87
117
|
}
|
|
88
118
|
setRelation(relation, value) {
|
|
89
119
|
if (!value.existsInDatabase) {
|
|
90
|
-
throw new Error(
|
|
120
|
+
throw new Error('You cannot set a relation to a model that are not yet saved in the database.');
|
|
91
121
|
}
|
|
92
122
|
const t = this;
|
|
93
123
|
t[relation.modelKey] = value;
|
|
@@ -100,7 +130,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
100
130
|
setManyRelation(relation, value) {
|
|
101
131
|
value.forEach((v) => {
|
|
102
132
|
if (!v.existsInDatabase) {
|
|
103
|
-
throw new Error(
|
|
133
|
+
throw new Error('You cannot set a relation to models that are not yet saved in the database.');
|
|
104
134
|
}
|
|
105
135
|
});
|
|
106
136
|
const t = this;
|
|
@@ -126,7 +156,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
126
156
|
model[column.name] = undefined;
|
|
127
157
|
}
|
|
128
158
|
}
|
|
129
|
-
model.markSaved();
|
|
159
|
+
model.markSaved(); // note: we don't pass row because that value is unreliable for json values (mysql performs sorting and other opertions on keys)
|
|
130
160
|
return model;
|
|
131
161
|
}
|
|
132
162
|
static fromRows(rows, namespace) {
|
|
@@ -138,14 +168,13 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
138
168
|
return [];
|
|
139
169
|
});
|
|
140
170
|
}
|
|
141
|
-
markSaved() {
|
|
171
|
+
markSaved(fields) {
|
|
142
172
|
this.existsInDatabase = true;
|
|
143
|
-
this.savedProperties.clear();
|
|
144
173
|
this.forceSaveProperties.clear();
|
|
145
174
|
for (const column of this.static.columns.values()) {
|
|
146
|
-
if (this[column.name] !== undefined) {
|
|
175
|
+
if ((fields ? fields[column.name] : this[column.name]) !== undefined) {
|
|
147
176
|
// If undefined: do not update, since we didn't save the value
|
|
148
|
-
this.savedProperties.set(column.name, column.
|
|
177
|
+
this.savedProperties.set(column.name, fields ? fields[column.name] : column.to(this[column.name]));
|
|
149
178
|
}
|
|
150
179
|
}
|
|
151
180
|
/// Save relation foreign keys (so we can check if the id has changed)
|
|
@@ -173,18 +202,19 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
173
202
|
*/
|
|
174
203
|
static async getByID(id) {
|
|
175
204
|
const [rows] = await Database_1.Database.select(`SELECT ${this.getDefaultSelect()} FROM \`${this.table}\` WHERE \`${this.primary.name}\` = ? LIMIT 1`, [id]);
|
|
176
|
-
if (rows.length
|
|
205
|
+
if (rows.length === 0) {
|
|
177
206
|
return undefined;
|
|
178
207
|
}
|
|
179
208
|
// Read member + address from first row
|
|
180
|
-
|
|
209
|
+
const row = rows[0][this.table];
|
|
210
|
+
return this.fromRow(row);
|
|
181
211
|
}
|
|
182
212
|
/**
|
|
183
213
|
* Get multiple models by their ID
|
|
184
214
|
* @param ids primary key of the models you want to fetch
|
|
185
215
|
*/
|
|
186
216
|
static async getByIDs(...ids) {
|
|
187
|
-
if (ids.length
|
|
217
|
+
if (ids.length === 0) {
|
|
188
218
|
return [];
|
|
189
219
|
}
|
|
190
220
|
const [rows] = await Database_1.Database.select(`SELECT ${this.getDefaultSelect()} FROM \`${this.table}\` WHERE \`${this.primary.name}\` IN (?) LIMIT ?`, [
|
|
@@ -198,26 +228,26 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
198
228
|
let whereQuery;
|
|
199
229
|
const params = [];
|
|
200
230
|
switch (value.sign) {
|
|
201
|
-
case
|
|
202
|
-
let suffix =
|
|
231
|
+
case 'MATCH': {
|
|
232
|
+
let suffix = '';
|
|
203
233
|
if (value.mode) {
|
|
204
234
|
switch (value.mode) {
|
|
205
|
-
case
|
|
206
|
-
suffix =
|
|
235
|
+
case 'BOOLEAN':
|
|
236
|
+
suffix = ' IN BOOLEAN MODE';
|
|
207
237
|
break;
|
|
208
238
|
default:
|
|
209
|
-
throw new Error(
|
|
239
|
+
throw new Error('Unknown match mode ' + value.mode);
|
|
210
240
|
}
|
|
211
241
|
}
|
|
212
242
|
whereQuery = (`MATCH(\`${this.table}\`.\`${key}\`) AGAINST(?${suffix})`);
|
|
213
243
|
params.push(value.value);
|
|
214
244
|
break;
|
|
215
245
|
}
|
|
216
|
-
case
|
|
246
|
+
case 'LIKE':
|
|
217
247
|
whereQuery = (`\`${this.table}\`.\`${key}\` LIKE ?`);
|
|
218
248
|
params.push(value.value);
|
|
219
249
|
break;
|
|
220
|
-
case
|
|
250
|
+
case '!=':
|
|
221
251
|
if (value.value === null) {
|
|
222
252
|
whereQuery = (`\`${this.table}\`.\`${key}\` IS NOT NULL`);
|
|
223
253
|
}
|
|
@@ -226,23 +256,23 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
226
256
|
params.push(value.value);
|
|
227
257
|
}
|
|
228
258
|
break;
|
|
229
|
-
case
|
|
259
|
+
case '<':
|
|
230
260
|
whereQuery = (`\`${this.table}\`.\`${key}\` < ?`);
|
|
231
261
|
params.push(value.value);
|
|
232
262
|
break;
|
|
233
|
-
case
|
|
263
|
+
case '>':
|
|
234
264
|
whereQuery = (`\`${this.table}\`.\`${key}\` > ?`);
|
|
235
265
|
params.push(value.value);
|
|
236
266
|
break;
|
|
237
|
-
case
|
|
267
|
+
case '<=':
|
|
238
268
|
whereQuery = (`\`${this.table}\`.\`${key}\` <= ?`);
|
|
239
269
|
params.push(value.value);
|
|
240
270
|
break;
|
|
241
|
-
case
|
|
271
|
+
case '>=':
|
|
242
272
|
whereQuery = (`\`${this.table}\`.\`${key}\` >= ?`);
|
|
243
273
|
params.push(value.value);
|
|
244
274
|
break;
|
|
245
|
-
case
|
|
275
|
+
case '=':
|
|
246
276
|
if (value.value === null) {
|
|
247
277
|
whereQuery = (`\`${this.table}\`.\`${key}\` IS NULL`);
|
|
248
278
|
}
|
|
@@ -251,13 +281,13 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
251
281
|
params.push(value.value);
|
|
252
282
|
}
|
|
253
283
|
break;
|
|
254
|
-
case
|
|
284
|
+
case 'IN':
|
|
255
285
|
if (!Array.isArray(value.value)) {
|
|
256
|
-
throw new Error(
|
|
286
|
+
throw new Error('Expected an array for IN where query');
|
|
257
287
|
}
|
|
258
288
|
if (value.value.includes(null)) {
|
|
259
289
|
const filtered = value.value.filter(v => v !== null);
|
|
260
|
-
if (filtered.length
|
|
290
|
+
if (filtered.length === 0) {
|
|
261
291
|
whereQuery = (`\`${this.table}\`.\`${key}\` IS NULL`);
|
|
262
292
|
}
|
|
263
293
|
else if (filtered.length === 1) {
|
|
@@ -277,7 +307,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
277
307
|
}
|
|
278
308
|
break;
|
|
279
309
|
default:
|
|
280
|
-
throw new Error(
|
|
310
|
+
throw new Error('Sign not supported.');
|
|
281
311
|
}
|
|
282
312
|
return [whereQuery, params];
|
|
283
313
|
}
|
|
@@ -285,7 +315,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
285
315
|
const whereQuery = [];
|
|
286
316
|
const params = [];
|
|
287
317
|
for (const key in where) {
|
|
288
|
-
if (
|
|
318
|
+
if (Object.hasOwnProperty.call(where, key)) {
|
|
289
319
|
const value = where[key];
|
|
290
320
|
if (Array.isArray(value)) {
|
|
291
321
|
for (const v of value) {
|
|
@@ -294,7 +324,7 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
294
324
|
params.push(...p);
|
|
295
325
|
}
|
|
296
326
|
}
|
|
297
|
-
else if (typeof value ===
|
|
327
|
+
else if (typeof value === 'object' && value !== null && !(value instanceof Date)) {
|
|
298
328
|
const [w, p] = this.buildWhereOperator(key, value);
|
|
299
329
|
whereQuery.push(w);
|
|
300
330
|
params.push(...p);
|
|
@@ -310,9 +340,10 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
310
340
|
}
|
|
311
341
|
}
|
|
312
342
|
}
|
|
313
|
-
return [whereQuery.join(
|
|
343
|
+
return [whereQuery.join(' AND '), params];
|
|
314
344
|
}
|
|
315
345
|
/**
|
|
346
|
+
* @deprecated Use the new SQL package instead
|
|
316
347
|
* Get multiple models by a simple where
|
|
317
348
|
*/
|
|
318
349
|
static async where(where, extra) {
|
|
@@ -327,20 +358,20 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
327
358
|
if (extra && extra.sort !== undefined) {
|
|
328
359
|
const sortQuery = [];
|
|
329
360
|
for (const item of extra.sort) {
|
|
330
|
-
if (typeof item
|
|
331
|
-
sortQuery.push(Database_1.Database.escapeId(item) +
|
|
361
|
+
if (typeof item === 'string') {
|
|
362
|
+
sortQuery.push(Database_1.Database.escapeId(item) + ' ASC');
|
|
332
363
|
}
|
|
333
|
-
else if (typeof item.column
|
|
334
|
-
sortQuery.push(Database_1.Database.escapeId(item.column) +
|
|
364
|
+
else if (typeof item.column === 'string') {
|
|
365
|
+
sortQuery.push(Database_1.Database.escapeId(item.column) + ' ' + ((_b = item.direction) !== null && _b !== void 0 ? _b : 'ASC'));
|
|
335
366
|
}
|
|
336
367
|
else {
|
|
337
368
|
// Repeat use of a where query in the sorting (needed when fulltext searching and need to sort on the score, because limit won't work without this for an unknown reason)
|
|
338
369
|
const [w, p] = this.buildWhereQuery(item.column);
|
|
339
|
-
sortQuery.push(
|
|
370
|
+
sortQuery.push('(' + w + ') ' + ((_c = item.direction) !== null && _c !== void 0 ? _c : 'ASC'));
|
|
340
371
|
params.push(...p);
|
|
341
372
|
}
|
|
342
373
|
}
|
|
343
|
-
query += ` ORDER BY ` + sortQuery.join(
|
|
374
|
+
query += ` ORDER BY ` + sortQuery.join(', ');
|
|
344
375
|
}
|
|
345
376
|
if (extra && extra.limit !== undefined) {
|
|
346
377
|
query += ` LIMIT ?`;
|
|
@@ -365,34 +396,29 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
365
396
|
/**
|
|
366
397
|
* Return an object of all the properties that are changed and their database representation
|
|
367
398
|
*/
|
|
368
|
-
|
|
399
|
+
getChangedDatabaseProperties() {
|
|
369
400
|
const set = {};
|
|
370
401
|
let skipUpdate = 0;
|
|
371
402
|
for (const column of this.static.columns.values()) {
|
|
372
403
|
// Run beforeSave
|
|
373
404
|
if (column.beforeSave) {
|
|
374
|
-
|
|
375
|
-
if (val && val.then) {
|
|
376
|
-
this[column.name] = await val;
|
|
377
|
-
}
|
|
378
|
-
else {
|
|
379
|
-
// Skip causing an event-loop jump if not needed
|
|
380
|
-
this[column.name] = val;
|
|
381
|
-
}
|
|
405
|
+
this[column.name] = column.beforeSave.call(this, this[column.name]);
|
|
382
406
|
}
|
|
383
|
-
if (column.primary && column.type
|
|
407
|
+
if (column.primary && column.type === 'integer' && this.static.primary.name === 'id') {
|
|
384
408
|
// Auto increment: not allowed to set
|
|
385
409
|
continue;
|
|
386
410
|
}
|
|
387
411
|
if (!this.existsInDatabase && this[column.name] === undefined) {
|
|
388
412
|
// In the future we might make some columns optional because they have a default value in the database.
|
|
389
413
|
// But that could cause inconsitent state, so it would be better to generate default values in code.
|
|
390
|
-
throw new Error(
|
|
414
|
+
throw new Error('Tried to create model ' + this.constructor.name + ' with undefined property ' + column.name);
|
|
391
415
|
}
|
|
392
416
|
if (this[column.name] !== undefined) {
|
|
393
417
|
const forceSave = this.forceSaveProperties.has(column.name);
|
|
394
|
-
|
|
395
|
-
|
|
418
|
+
const oldSavedValue = forceSave ? undefined : this.savedProperties.get(column.name);
|
|
419
|
+
const saveValue = forceSave ? null : column.to(this[column.name]); // .to is expensive, so avoid calling it when not needed
|
|
420
|
+
if (forceSave || oldSavedValue === undefined || column.isChanged(oldSavedValue, saveValue)) {
|
|
421
|
+
set[column.name] = forceSave ? column.to(this[column.name]) : saveValue;
|
|
396
422
|
if (column.skipUpdate && !forceSave) {
|
|
397
423
|
skipUpdate++;
|
|
398
424
|
}
|
|
@@ -403,10 +429,10 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
403
429
|
}
|
|
404
430
|
async save() {
|
|
405
431
|
if (!this.static.table) {
|
|
406
|
-
throw new Error(
|
|
432
|
+
throw new Error('Table name not set');
|
|
407
433
|
}
|
|
408
434
|
if (!this.static.primary) {
|
|
409
|
-
throw new Error(
|
|
435
|
+
throw new Error('Primary key not set for model ' + this.constructor.name + ' ' + this.static);
|
|
410
436
|
}
|
|
411
437
|
// Check if relation models were modified
|
|
412
438
|
for (const relation of this.static.relations) {
|
|
@@ -416,17 +442,17 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
416
442
|
if (relation.isSet(this)) {
|
|
417
443
|
const model = this[relation.modelKey];
|
|
418
444
|
if (!model.existsInDatabase) {
|
|
419
|
-
throw new Error(
|
|
445
|
+
throw new Error('You cannot set a relation that is not yet saved in the database.');
|
|
420
446
|
}
|
|
421
447
|
if (this[relation.foreignKey] !== model.getPrimaryKey()) {
|
|
422
448
|
// Should always match because setRelation will make it match on setting it.
|
|
423
|
-
throw new Error(
|
|
449
|
+
throw new Error('You cannot modify the value of a foreign key when the relation is loaded. Unload the relation first or modify the relation with setRelation');
|
|
424
450
|
}
|
|
425
451
|
}
|
|
426
452
|
else {
|
|
427
453
|
if (this[relation.foreignKey] !== null) {
|
|
428
454
|
// Should always match because setRelation will make it match on setting it.
|
|
429
|
-
throw new Error(
|
|
455
|
+
throw new Error('You cannot set a foreign key when the relation is loaded. Unload the relation first or modify the relation with setRelation');
|
|
430
456
|
}
|
|
431
457
|
}
|
|
432
458
|
}
|
|
@@ -434,35 +460,36 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
434
460
|
const id = this.getPrimaryKey();
|
|
435
461
|
if (!id) {
|
|
436
462
|
if (this.existsInDatabase) {
|
|
437
|
-
throw new Error(
|
|
463
|
+
throw new Error('Model ' + this.constructor.name + " was loaded from the Database, but didn't select the ID. Saving not possible.");
|
|
438
464
|
}
|
|
439
465
|
}
|
|
440
466
|
else {
|
|
441
|
-
if (!this.existsInDatabase && this.static.primary.type
|
|
467
|
+
if (!this.existsInDatabase && this.static.primary.type === 'integer' && this.static.primary.name === 'id') {
|
|
442
468
|
throw new Error(`PrimaryKey was set programmatically without fetching the model ${this.constructor.name} from the database. This is not allowed for integer primary keys.`);
|
|
443
469
|
}
|
|
444
470
|
}
|
|
445
|
-
const { fields, skipUpdate } =
|
|
446
|
-
if (Object.keys(fields).length
|
|
471
|
+
const { fields, skipUpdate } = this.getChangedDatabaseProperties();
|
|
472
|
+
if (Object.keys(fields).length === 0) {
|
|
447
473
|
if (Model.showWarnings)
|
|
448
|
-
console.warn(
|
|
474
|
+
console.warn('Tried to update model without any properties modified');
|
|
449
475
|
return false;
|
|
450
476
|
}
|
|
451
477
|
if (this.existsInDatabase && skipUpdate === Object.keys(fields).length) {
|
|
452
478
|
if (Model.showWarnings)
|
|
453
|
-
console.warn(
|
|
479
|
+
console.warn('Tried to update model without any properties modified');
|
|
454
480
|
return false;
|
|
455
481
|
}
|
|
456
482
|
if (Model.debug)
|
|
457
|
-
console.log(
|
|
483
|
+
console.log('Saving ' + this.constructor.name + ' to...', fields);
|
|
458
484
|
// todo: save here
|
|
459
485
|
if (!this.existsInDatabase) {
|
|
460
486
|
if (Model.debug)
|
|
461
487
|
console.log(`Creating new ${this.constructor.name}`);
|
|
462
|
-
const [result] = await Database_1.Database.insert(
|
|
463
|
-
if (this.static.primary.type
|
|
488
|
+
const [result] = await Database_1.Database.insert('INSERT INTO `' + this.static.table + '` SET ?', [fields]);
|
|
489
|
+
if (this.static.primary.type === 'integer' && this.static.primary.name === 'id') {
|
|
464
490
|
// Auto increment value
|
|
465
491
|
this[this.static.primary.name] = result.insertId;
|
|
492
|
+
fields[this.static.primary.name] = result.insertId; // Also mark saved
|
|
466
493
|
if (Model.debug)
|
|
467
494
|
console.log(`New id = ${this[this.static.primary.name]}`);
|
|
468
495
|
}
|
|
@@ -470,37 +497,62 @@ class Model /* static implements RowInitiable<Model> */ {
|
|
|
470
497
|
else {
|
|
471
498
|
if (Model.debug)
|
|
472
499
|
console.log(`Updating ${this.constructor.name} where ${this.static.primary.name} = ${id}`);
|
|
473
|
-
const [result] = await Database_1.Database.update(
|
|
474
|
-
if (result.changedRows
|
|
500
|
+
const [result] = await Database_1.Database.update('UPDATE `' + this.static.table + '` SET ? WHERE `' + this.static.primary.name + '` = ?', [fields, id]);
|
|
501
|
+
if (result.changedRows !== 1 && Model.showWarnings) {
|
|
475
502
|
console.warn(`Updated ${this.constructor.name}, but it didn't change a row. Check if ID exists.`);
|
|
476
503
|
}
|
|
477
504
|
}
|
|
478
|
-
//
|
|
479
|
-
this.
|
|
505
|
+
// Emit event
|
|
506
|
+
if (this.existsInDatabase) {
|
|
507
|
+
// Keep reference to old properties before marking saved
|
|
508
|
+
const originalProperties = Object.fromEntries(Array.from(this.savedProperties.entries()));
|
|
509
|
+
// Mark saved before sending the event
|
|
510
|
+
this.markSaved(fields);
|
|
511
|
+
await this.static.modelEventBus.sendEvent({
|
|
512
|
+
type: 'updated',
|
|
513
|
+
model: this,
|
|
514
|
+
changedFields: fields,
|
|
515
|
+
originalFields: originalProperties,
|
|
516
|
+
getOldModel: () => {
|
|
517
|
+
// Build a new model as if it was loaded from the database using the same original properties
|
|
518
|
+
const v = this.static.fromRow(originalProperties);
|
|
519
|
+
if (v === undefined) {
|
|
520
|
+
throw new Error('Failed to create old model: primary key might be missing');
|
|
521
|
+
}
|
|
522
|
+
return v;
|
|
523
|
+
},
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
else {
|
|
527
|
+
this.markSaved(fields);
|
|
528
|
+
await this.static.modelEventBus.sendEvent({ type: 'created', model: this });
|
|
529
|
+
}
|
|
480
530
|
return true;
|
|
481
531
|
}
|
|
482
532
|
async delete() {
|
|
483
533
|
const id = this.getPrimaryKey();
|
|
484
534
|
if (!id && this.existsInDatabase) {
|
|
485
|
-
throw new Error(
|
|
535
|
+
throw new Error('Model ' + this.constructor.name + " was loaded from the Database, but didn't select the ID. Deleting not possible.");
|
|
486
536
|
}
|
|
487
537
|
if (!id || !this.existsInDatabase) {
|
|
488
|
-
throw new Error(
|
|
538
|
+
throw new Error('Model ' + this.constructor.name + " can't be deleted if it doesn't exist in the database already");
|
|
489
539
|
}
|
|
490
540
|
if (Model.debug)
|
|
491
541
|
console.log(`Updating ${this.constructor.name} where ${this.static.primary.name} = ${id}`);
|
|
492
|
-
const [result] = await Database_1.Database.delete(
|
|
493
|
-
if (result.affectedRows
|
|
542
|
+
const [result] = await Database_1.Database.delete('DELETE FROM `' + this.static.table + '` WHERE `' + this.static.primary.name + '` = ?', [id]);
|
|
543
|
+
if (result.affectedRows !== 1 && Model.showWarnings) {
|
|
494
544
|
console.warn(`Deleted ${this.constructor.name}, but it didn't change a row. Check if ID exists.`);
|
|
495
545
|
}
|
|
496
546
|
this.existsInDatabase = false;
|
|
497
|
-
if (this.static.primary.type
|
|
547
|
+
if (this.static.primary.type === 'integer' && this.static.primary.name === 'id') {
|
|
498
548
|
this.eraseProperty(this.static.primary.name);
|
|
499
549
|
}
|
|
500
550
|
this.savedProperties.clear();
|
|
551
|
+
await this.static.modelEventBus.sendEvent({ type: 'deleted', model: this });
|
|
501
552
|
}
|
|
502
553
|
}
|
|
503
554
|
exports.Model = Model;
|
|
555
|
+
Model.modelEventBus = new ModelEventBus();
|
|
504
556
|
Model.debug = false;
|
|
505
557
|
Model.showWarnings = false;
|
|
506
558
|
//# sourceMappingURL=Model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/classes/Model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/classes/Model.ts"],"names":[],"mappings":";;;AAEA,yCAAsC;AAUtC;;GAEG;AACH,MAAa,aAAa;IAA1B;QACc,cAAS,GAA8C,IAAI,GAAG,EAAE,CAAC;IAyB/E,CAAC;IAvBG,WAAW,CAAC,KAAU,EAAE,QAAyB;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,QAAQ,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC/B;aACI;YACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;SAC7C;IACL,CAAC;IAED,cAAc,CAAC,KAAU;QACrB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAY;QACxB,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE;YACzC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;gBAC1B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;aACzC;SACJ;QACD,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;CACJ;AA1BD,sCA0BC;AAsBD,MAAa,KAAK,CAAC,2CAA2C;IAuB1D;QAVA,qBAAgB,GAAG,KAAK,CAAC;QAEjB,oBAAe,GAAG,IAAI,GAAG,EAA+B,CAAC;QAEjE;;;WAGG;QACK,wBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;QAG5C,cAAc;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;SAC9B;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;SACnD;IACL,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAW;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,GAAW;QACzB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,cAAc;QACV,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,YAAoB,IAAI,CAAC,KAAK;QAClD,OAAO,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,YAAoB,IAAI,CAAC,KAAK,EAAE,GAAG,OAAiB;QAC5E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3G,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,uCAAuC;YACvC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SAC1C;QACD,OAAO,GAAG,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;IACvF,CAAC;IAED;;;OAGG;IACH,cAAc,CAEV,QAAqC;QAErC,uCAAuC;QACvC,MAAM,CAAC,GAAG,IAAW,CAAC;QACtB,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,aAAa,CAET,QAAqC;QAErC,uCAAuC;QACvC,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,mBAAmB,CACf,QAAuC,EACvC,KAAmB;QAEnB,uCAAuC;QAEvC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;SACnG;QACD,MAAM,CAAC,GAAG,IAAW,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,OAAO,CAAC,CAAC;IACb,CAAC;IAED,WAAW,CAA8D,QAAuC,EAAE,KAAQ;QACtH,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;SACnG;QACD,MAAM,CAAC,GAAG,IAAW,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7B,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QAC/C,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;OAEG;IACH,eAAe,CACX,QAAuF,EACvF,KAAc;QAEd,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;aAClG;QACL,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,IAAW,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7B,OAAO,CAAC,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,OAAO,CAAkC,GAAwC;QACpF,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE;YAClH,OAAO,SAAS,CAAC;SACpB;QAED,MAAM,KAAK,GAAG,IAAI,IAAI,EAAqB,CAAC;QAC5C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YACxC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC5C,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;aAC9B;iBACI;gBACD,gDAAgD;gBAChD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;aAClC;SACJ;QAED,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,gIAAgI;QACnJ,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAkC,IAA2D,EAAE,SAAiB;QAC3H,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3C,IAAI,KAAK,EAAE;gBACP,OAAO,CAAC,KAAK,CAAC,CAAC;aAClB;YACD,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,SAAS,CAAC,MAA4C;QAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAEjC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YAC/C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,SAAS,EAAE;gBAClE,8DAA8D;gBAC9D,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACtG;SACJ;QAED,sEAAsE;QACtE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBACtC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;iBACrD;qBACI;oBACD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;iBACpC;aACJ;SACJ;IACL,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,WAA2B,CAAC;IAC5C,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAkC,EAAmB;QACrE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAElJ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnB,OAAO,SAAS,CAAC;SACpB;QAED,uCAAuC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAkC,GAAG,GAAwB;QAC9E,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YAClB,OAAO,EAAE,CAAC;SACb;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,OAAO,CAAC,IAAI,mBAAmB,EAAE;YAC3I,GAAG;YACH,GAAG,CAAC,MAAM;SACb,CAAC,CAAC;QAEH,uCAAuC;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAW,EAAE,KAAe;QAClD,IAAI,UAAkB,CAAC;QACvB,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,QAAQ,KAAK,CAAC,IAAI,EAAE;YAChB,KAAK,OAAO,CAAC,CAAC;gBACV,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,KAAK,CAAC,IAAI,EAAE;oBACZ,QAAQ,KAAK,CAAC,IAAI,EAAE;wBAChB,KAAK,SAAS;4BACV,MAAM,GAAG,kBAAkB,CAAC;4BAC5B,MAAM;wBACV;4BACI,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;qBAC3D;iBACJ;gBACD,UAAU,GAAG,CAAC,WAAW,IAAI,CAAC,KAAK,QAAQ,GAAG,gBAAgB,MAAM,GAAG,CAAC,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;aACT;YAED,KAAK,MAAM;gBACP,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,IAAI;gBACL,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;oBACtB,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,gBAAgB,CAAC,CAAC;iBAC7D;qBACI;oBACD,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAC,CAAC;oBACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBACD,MAAM;YAEV,KAAK,GAAG;gBACJ,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,GAAG;gBACJ,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,IAAI;gBACL,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,IAAI;gBACL,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,SAAS,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;YAEV,KAAK,GAAG;gBACJ,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;oBACtB,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,YAAY,CAAC,CAAC;iBACzD;qBACI;oBACD,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC;oBAClD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBACD,MAAM;YAEV,KAAK,IAAI;gBACL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBAC7B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;iBAC3D;gBACD,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC5B,MAAM,QAAQ,GAAI,KAAK,CAAC,KAAoC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBACrF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;wBACvB,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,YAAY,CAAC,CAAC;qBACzD;yBACI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;wBAC5B,gBAAgB;wBAChB,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,QAAQ,GAAG,eAAe,IAAI,CAAC,KAAK,QAAQ,GAAG,aAAa,CAAC,CAAC;wBAC5F,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC5B;yBACI;wBACD,gBAAgB;wBAChB,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,QAAQ,GAAG,kBAAkB,IAAI,CAAC,KAAK,QAAQ,GAAG,aAAa,CAAC,CAAC;wBAC/F,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBACzB;iBACJ;qBACI;oBACD,UAAU,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,CAAC;oBACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBAED,MAAM;YAEV;gBACI,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SAC9C;QAED,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,KAAoB;QACvC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;YACrB,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;gBACxC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;wBACnB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;wBAC/C,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;qBACrB;iBACJ;qBACI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE;oBAC9E,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBACnD,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;iBACrB;qBACI;oBACD,IAAI,KAAK,KAAK,IAAI,EAAE;wBAChB,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,YAAY,CAAC,CAAC;qBAC3D;yBACI;wBACD,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,QAAQ,GAAG,QAAQ,CAAC,CAAC;wBACpD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACtB;iBACJ;aACJ;SACJ;QAED,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAkC,KAAoB,EAAE,KAIzE;;QACG,MAAM,MAAM,GAAU,EAAE,CAAC;QAEzB,IAAI,KAAK,GAAG,UAAU,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,mCAAI,IAAI,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC;QACxF,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACpD,KAAK,IAAI,QAAQ,GAAG,UAAU,CAAC;YAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACrB;QAED,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YACnC,MAAM,SAAS,GAAa,EAAE,CAAC;YAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;gBAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBAC1B,SAAS,CAAC,IAAI,CAAC,mBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;iBACpD;qBACI,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;oBACtC,SAAS,CAAC,IAAI,CAAC,mBAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,MAAA,IAAI,CAAC,SAAS,mCAAI,KAAK,CAAC,CAAC,CAAC;iBACpF;qBACI;oBACD,yKAAyK;oBACzK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAEjD,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAA,IAAI,CAAC,SAAS,mCAAI,KAAK,CAAC,CAAC,CAAC;oBAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;iBACrB;aACJ;YAED,KAAK,IAAI,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAChD;QAED,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;YACpC,KAAK,IAAI,UAAU,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC5B;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,CAAkC,KAAc;QAC5D,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,UAAU,IAAI,CAAC,gBAAgB,EAAE,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC;QAEvE,IAAI,KAAK,EAAE;YACP,KAAK,IAAI,UAAU,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,4BAA4B;QACxB,MAAM,GAAG,GAAwC,EAAE,CAAC;QACpD,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;YAC/C,iBAAiB;YACjB,IAAI,MAAM,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;aACvE;YAED,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;gBAClF,qCAAqC;gBACrC,SAAS;aACZ;YAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBAC3D,uGAAuG;gBACvG,oGAAoG;gBACpG,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,2BAA2B,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;aACjH;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;gBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5D,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACpF,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,wDAAwD;gBAC3H,IAAI,SAAS,IAAI,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE;oBACxF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAExE,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE;wBACjC,UAAU,EAAE,CAAC;qBAChB;iBACJ;aACJ;SACJ;QAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACzC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;SACjG;QAED,yCAAyC;QACzC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YAC1C,mFAAmF;YACnF,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACzB,wDAAwD;gBACxD,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAU,CAAC;oBAE/C,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;wBACzB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;qBACvF;oBAED,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,aAAa,EAAE,EAAE;wBACrD,4EAA4E;wBAC5E,MAAM,IAAI,KAAK,CACX,6IAA6I,CAChJ,CAAC;qBACL;iBACJ;qBACI;oBACD,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;wBACpC,4EAA4E;wBAC5E,MAAM,IAAI,KAAK,CACX,6HAA6H,CAChI,CAAC;qBACL;iBACJ;aACJ;SACJ;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,EAAE,EAAE;YACL,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,+EAA+E,CAAC,CAAC;aACvI;SACJ;aACI;YACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;gBACvG,MAAM,IAAI,KAAK,CACX,kEAAkE,IAAI,CAAC,WAAW,CAAC,IAAI,mEAAmE,CAC7J,CAAC;aACL;SACJ;QAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEnE,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,IAAI,KAAK,CAAC,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;YACpE,IAAI,KAAK,CAAC,YAAY;gBAAE,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAC9F,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEnF,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,IAAI,KAAK,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAEtE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YAElG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC7E,uBAAuB;gBACvB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,kBAAkB;gBACtE,IAAI,KAAK,CAAC,KAAK;oBAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9E;SACJ;aACI;YACD,IAAI,KAAK,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;YAE5G,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9I,IAAI,MAAM,CAAC,WAAW,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE;gBAChD,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,mDAAmD,CAAC,CAAC;aACrG;SACJ;QAED,aAAa;QACb,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,wDAAwD;YACxD,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAwC,CAAC;YAEjI,sCAAsC;YACtC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAEvB,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;gBACtC,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,IAAI;gBACX,aAAa,EAAE,MAAM;gBACrB,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,GAAG,EAAE;oBACd,6FAA6F;oBAC7F,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBAClD,IAAI,CAAC,KAAK,SAAS,EAAE;wBACjB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;qBAC/E;oBACD,OAAO,CAAC,CAAC;gBACb,CAAC;aACJ,CAAC,CAAC;SACN;aACI;YACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvB,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SAC/E;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM;QACR,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEhC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,iFAAiF,CAAC,CAAC;SACzI;QAED,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC/B,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,+DAA+D,CAAC,CAAC;SACvH;QAED,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;QAE5G,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,mBAAQ,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrI,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,EAAE;YACjD,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,mDAAmD,CAAC,CAAC;SACrG;QAED,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;YAC7E,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;;AAznBL,sBA0nBC;AAxnBU,mBAAa,GAAG,IAAI,aAAa,EAAc,CAAC;AAMhD,WAAK,GAAG,KAAK,CAAC;AACd,kBAAY,GAAG,KAAK,CAAC"}
|