@spinajs/orm 2.0.182 → 2.0.184

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.
@@ -1,10 +1,43 @@
1
- /* eslint-disable prettier/prettier */
2
- import { InsertBehaviour } from './interfaces.js';
3
1
  import { DI, isConstructor } from '@spinajs/di';
4
2
  import { SelectQueryBuilder } from './builders.js';
5
- import { createQuery, extractModelDescriptor, ModelBase } from './model.js';
3
+ import { createQuery, extractModelDescriptor } from './model.js';
6
4
  import { Orm } from './orm.js';
7
5
  import _ from 'lodash';
6
+ export class Dataset {
7
+ /**
8
+ *
9
+ * Calculates difference between data in this relation and provides set. Result is saved to db.
10
+ *
11
+ * @param dataset - data to compare
12
+ * @param callback - function to compare objects, if none provideded - primary key value is used
13
+ */
14
+ static diff(dataset, callback) {
15
+ return (datasetB, pKey) => {
16
+ // TODO: maybe refactor for speedup, this is not optimal
17
+ // two calls to _.difference is not optimal, but it is easy to implement
18
+ // calculate difference between this data in relation and dataset ( objects from this relation)
19
+ const result = callback ? _.differenceWith(dataset, [...datasetB], callback) : _.differenceBy(dataset, [...datasetB], pKey);
20
+ // calculate difference between dataset and data in this relation ( objects from dataset )
21
+ const result2 = callback ? _.differenceWith([...datasetB], dataset, callback) : _.differenceBy([...datasetB], dataset, pKey);
22
+ // combine difference from two sets
23
+ const finalDiff = [...result, ...result2];
24
+ return finalDiff;
25
+ };
26
+ }
27
+ /**
28
+ *
29
+ * Calculates intersection between data in this relation and provided dataset
30
+ * It saves result to db
31
+ *
32
+ * @param dataset - dataset to compare
33
+ * @param callback - function to compare models, if not set it is compared by primary key value
34
+ */
35
+ static intersection(dataset, callback) {
36
+ return (datasetB, pKey) => {
37
+ return callback ? _.intersectionWith(dataset, [...datasetB], callback) : _.intersectionBy(dataset, [...datasetB], pKey);
38
+ };
39
+ }
40
+ }
8
41
  /**
9
42
  * Iterable list of populated relation entities
10
43
  *
@@ -28,28 +61,16 @@ export class Relation extends Array {
28
61
  this.IsModelAForwardRef = !isConstructor(this.Model);
29
62
  }
30
63
  /**
31
- * Delete all objects from relation
64
+ * Delete all objects from relation ( alias for empty )
32
65
  */
33
66
  async clear() {
34
- await this.remove(this);
35
- }
36
- empty() {
37
- this.length = 0;
67
+ this.empty();
38
68
  }
39
69
  /**
40
- * Populates this relation ( loads all data related to owner of this relation)
70
+ * Clears relation data
41
71
  */
42
- async populate(callback) {
43
- const query = this.Relation.TargetModel.where(this.Relation.ForeignKey, this.owner.PrimaryKeyValue);
44
- if (callback) {
45
- callback.apply(query);
46
- }
47
- const result = await query;
48
- if (result) {
49
- this.length = 0;
50
- this.push(...result);
51
- }
52
- this.Populated = true;
72
+ empty() {
73
+ this.length = 0;
53
74
  }
54
75
  }
55
76
  export class SingleRelation {
@@ -110,103 +131,112 @@ export class ManyToManyRelationList extends Relation {
110
131
  set(_obj, _callback) {
111
132
  throw new Error('Method not implemented.');
112
133
  }
113
- async remove(obj) {
134
+ remove(_obj) {
135
+ throw new Error('Method not implemented.');
136
+ }
137
+ async sync() {
138
+ throw new Error('Method not implemented.');
139
+ }
140
+ async populate() {
141
+ throw new Error('Method not implemented.');
142
+ }
143
+ }
144
+ export class OneToManyRelationList extends Relation {
145
+ /**
146
+ * Deletes from db data that are not in relation
147
+ *
148
+ * @param data relation data
149
+ * @returns
150
+ */
151
+ async _dbDiff(data) {
152
+ const query = this.Driver.del().from(this.TargetModelDescriptor.TableName).where(this.Relation.ForeignKey, this.owner.PrimaryKeyValue);
114
153
  const self = this;
115
- const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
116
- const jmodelDescriptor = extractModelDescriptor(this.Relation.JunctionModel);
117
- const query = this.Driver.del()
118
- .from(jmodelDescriptor.TableName)
119
- .where(function () {
120
- this.whereIn(self.Relation.JunctionModelTargetModelFKey_Name, data);
121
- this.andWhere(self.Relation.JunctionModelSourceModelFKey_Name, self.owner.PrimaryKeyValue);
122
- });
123
154
  if (this.Driver.Options.Database) {
124
155
  query.database(this.Driver.Options.Database);
125
156
  }
126
- await query;
127
- _.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
128
- }
129
- async add(obj, mode) {
130
- const data = Array.isArray(obj) ? obj : [obj];
131
- const relEntities = data.map((d) => {
132
- const relEntity = new this.Relation.JunctionModel();
133
- relEntity[this.Relation.JunctionModelSourceModelFKey_Name] = this.owner.PrimaryKeyValue;
134
- relEntity[this.Relation.JunctionModelTargetModelFKey_Name] = d.PrimaryKeyValue;
135
- return relEntity;
136
- });
137
- for (const m of relEntities) {
138
- await m.insert(mode);
157
+ // if we have data in relation, we need to exclude them from delete query
158
+ const toDelete = data.filter((x) => x.PrimaryKeyValue).map((x) => x.PrimaryKeyValue);
159
+ if (toDelete.length !== 0) {
160
+ query.whereNotIn(self.Relation.PrimaryKey, toDelete);
139
161
  }
140
- this.push(...data);
162
+ await query;
141
163
  }
142
- }
143
- export class OneToManyRelationList extends Relation {
144
- async deleteRelationData(data) {
145
- if (data.length === 0) {
146
- return;
164
+ /**
165
+ * Populates this relation ( loads all data related to owner of this relation)
166
+ */
167
+ async populate(callback) {
168
+ const query = this.Relation.TargetModel.where(this.Relation.ForeignKey, this.owner.PrimaryKeyValue);
169
+ if (callback) {
170
+ callback.apply(query);
147
171
  }
148
- const self = this;
149
- const query = this.Driver.del()
150
- .from(this.TargetModelDescriptor.TableName)
151
- .andWhere(function () {
152
- this.whereNotIn(self.Relation.PrimaryKey, data.filter((x) => x.PrimaryKeyValue).map((x) => x.PrimaryKeyValue));
153
- this.where(self.Relation.ForeignKey, self.owner.PrimaryKeyValue);
172
+ const result = await query;
173
+ if (result) {
174
+ this.length = 0;
175
+ this.push(...result);
176
+ }
177
+ this.Populated = true;
178
+ }
179
+ /**
180
+ * Synchronizes relation data to db
181
+ * Deletes from db entries that are not in relation and adds entries that are not in db
182
+ * Sets foreign key to relational data
183
+ *
184
+ * Inserts or updates models that are dirty only.
185
+ */
186
+ async sync() {
187
+ const dirty = this.filter((x) => x.IsDirty || x.PrimaryKeyValue === null);
188
+ this.forEach((d) => {
189
+ d[this.Relation.ForeignKey] = this.owner.PrimaryKeyValue;
154
190
  });
155
- if (this.Driver.Options.Database) {
156
- query.database(this.Driver.Options.Database);
191
+ for (const f of dirty) {
192
+ await f.insertOrUpdate();
157
193
  }
158
- await query;
159
- this.empty();
194
+ await this._dbDiff(this);
160
195
  }
161
- async diff(dataset, callback) {
162
- // calculate difference between this data in relation and dataset ( objects from this relation)
163
- const result = callback ? _.differenceWith(dataset, [...this], callback) : _.differenceBy(dataset, [...this], this.TargetModelDescriptor.PrimaryKey);
164
- // calculate difference between dataset and data in this relation ( objects from dataset )
165
- const result2 = callback ? _.differenceWith([...this], dataset, callback) : _.differenceBy([...this], dataset, this.TargetModelDescriptor.PrimaryKey);
166
- // combine difference from two sets
167
- const finalDiff = [...result, ...result2];
168
- await this.deleteRelationData(finalDiff);
169
- await this.add(finalDiff, InsertBehaviour.InsertOrUpdate);
196
+ /**
197
+ * Calculates difference between this relation and dataset ( items from this relation that are not in dataset and items from dataset that are not in this relation)
198
+ *
199
+ * @param dataset
200
+ * @param callback
201
+ * @returns Difference between this relation and dataset
202
+ */
203
+ diff(dataset, callback) {
204
+ return Dataset.diff(dataset, callback)([...this], this.TargetModelDescriptor.PrimaryKey);
170
205
  }
171
- async set(obj) {
172
- await this.deleteRelationData(obj);
173
- await this.add(obj, InsertBehaviour.InsertOrUpdate);
206
+ /**
207
+ * Sets data in relation ( clear data and replace with new dataset )
208
+ *
209
+ * @param obj
210
+ */
211
+ set(obj) {
212
+ const toPush = _.isFunction(obj) ? obj([...this], this.TargetModelDescriptor.PrimaryKey) : obj;
213
+ this.empty();
214
+ this.push(...toPush);
174
215
  }
175
- async intersection(obj, callback) {
176
- const result = callback ? _.intersectionWith(obj, [...this], callback) : _.intersectionBy(obj, [...this], this.TargetModelDescriptor.PrimaryKey);
177
- await this.deleteRelationData(result);
178
- await this.add(result, InsertBehaviour.InsertOrUpdate);
216
+ /**
217
+ * Calculates intersection between data in this relation and provided dataset
218
+ *
219
+ * @param obj
220
+ * @param callback compare function, if not set - primary key value is used
221
+ * @returns Data that are in both sets
222
+ */
223
+ intersection(obj, callback) {
224
+ return Dataset.intersection(obj, callback)([...this], this.TargetModelDescriptor.PrimaryKey);
179
225
  }
180
- async union(obj, mode) {
181
- await this.add(obj, mode ?? InsertBehaviour.InsertOrIgnore);
226
+ /**
227
+ * Combines data with this relation and saves to db
228
+ * Shorthand for push
229
+ * @param obj
230
+ */
231
+ union(obj) {
232
+ this.push(...obj);
182
233
  }
183
- async remove(obj) {
184
- const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
185
- const query = this.Driver.del().whereIn(this.Relation.ForeignKey, data).setTable(this.TargetModelDescriptor.TableName);
186
- if (this.Driver.Options.Database) {
187
- query.database(this.Driver.Options.Database);
188
- }
189
- await query;
190
- _.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
191
- }
192
- async add(obj, mode) {
193
- const data = Array.isArray(obj) ? obj : [obj];
194
- const tInsert = data.map((x) => {
195
- if (x instanceof ModelBase) {
196
- return x;
197
- }
198
- if (this.IsModelAForwardRef) {
199
- new (this.Model())(x);
200
- }
201
- return new this.Model(x);
202
- });
203
- data.forEach((d) => {
204
- d[this.Relation.ForeignKey] = this.owner.PrimaryKeyValue;
205
- });
206
- for (const m of tInsert) {
207
- await m.insertOrUpdate(mode);
234
+ remove(obj) {
235
+ if (_.isFunction(obj)) {
236
+ return _.remove(this, obj);
208
237
  }
209
- this.push(...tInsert);
238
+ const data = (Array.isArray(obj) ? obj : [obj]).map((d) => d.PrimaryKeyValue);
239
+ return _.remove(this, (o) => data.indexOf(o.PrimaryKeyValue) !== -1);
210
240
  }
211
241
  }
212
242
  //# sourceMappingURL=relation-objects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relation-objects.js","sourceRoot":"","sources":["../../src/relation-objects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relation-objects.js","sourceRoot":"","sources":["../../src/relation-objects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAe,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAa,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,CAAC,MAAM,QAAQ,CAAC;AAGvB,MAAM,OAAO,OAAO;IAClB;;;;;;OAMG;IACI,MAAM,CAAC,IAAI,CAAI,OAAY,EAAE,QAAkC;QACpE,OAAO,CAAC,QAAa,EAAE,IAAY,EAAE,EAAE;YACrC,wDAAwD;YACxD,wEAAwE;YAExE,+FAA+F;YAC/F,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YAE5H,0FAA0F;YAC1F,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAE7H,mCAAmC;YACnC,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;YAE1C,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,YAAY,CAAI,OAAY,EAAE,QAAkC;QAC5E,OAAO,CAAC,QAAa,EAAE,IAAY,EAAE,EAAE;YACrC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1H,CAAC,CAAC;IACJ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAgB,QAAyD,SAAQ,KAAQ;IAW7F,YAAsB,KAAQ,EAAY,KAA0C,EAAY,QAA6B,EAAE,OAAa;QAC1I,KAAK,EAAE,CAAC;QADY,UAAK,GAAL,KAAK,CAAG;QAAY,UAAK,GAAL,KAAK,CAAqC;QAAY,aAAQ,GAAR,QAAQ,CAAqB;QANtH,cAAS,GAAY,KAAK,CAAC;QAShC,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;SACvB;QAED,IAAI,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;SAC/E;QAED,IAAI,CAAC,kBAAkB,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAuBD;;OAEG;IACI,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;CAkDF;AAED,MAAM,OAAO,cAAc;IASzB,YAAsB,MAAiB,EAAY,KAA0C,EAAY,QAA6B,EAAE,MAAU;QAA5H,WAAM,GAAN,MAAM,CAAW;QAAY,UAAK,GAAL,KAAK,CAAqC;QAAY,aAAQ,GAAR,QAAQ,CAAqB;QAF/H,cAAS,GAAY,KAAK,CAAC;QAGhC,IAAI,CAAC,qBAAqB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,GAAM;QACrB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACjB,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,GAAM;QAClB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,MAAM;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAAmD;QACvE;;;;;WAKG;QAEH,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA,kBAA6B,CAAA,CAAC,CAAC,KAAK,CAAC;QAC1F,MAAM,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC/D,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAG,IAAI,CAAC,MAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEnF,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACvB;QAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;QAEzC,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;SACrB;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;CACF;AAED,MAAM,OAAO,sBAAiE,SAAQ,QAAc;IAC3F,YAAY,CAAC,IAAS,EAAE,SAAmC;QAChE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,IAAS,EAAE,KAAuB;QAC7C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,IAAI,CAAC,IAAS,EAAE,SAAmC;QACxD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,GAAG,CAAC,IAAS,EAAE,SAAmC;QACvD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM,CAAC,IAAmC;QAC/C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CAkBF;AAED,MAAM,OAAO,qBAAgE,SAAQ,QAAc;IACjG;;;;;OAKG;IACO,KAAK,CAAC,OAAO,CAAC,IAAS;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAEvI,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;YAChC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC9C;QAED,yEAAyE;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACrF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;SACtD;QAED,MAAM,KAAK,CAAC;IACd,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,QAAoD;QACxE,MAAM,KAAK,GAAI,IAAI,CAAC,QAAQ,CAAC,WAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC7G,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACvB;QACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QAE3B,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;SACtB;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,IAAI;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC;QAE1E,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChB,CAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;SAC1B;QAED,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACI,IAAI,CAAC,OAAY,EAAE,QAAkC;QAC1D,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC3F,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,GAA6C;QACtD,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/F,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACI,YAAY,CAAC,GAAQ,EAAE,QAAkC;QAC9D,OAAO,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IAC/F,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,GAAQ;QACnB,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;IACpB,CAAC;IAeM,MAAM,CAAC,GAAkC;QAC9C,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACrB,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC5B;QAED,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAe,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;CACF"}