velocious 1.0.417 → 1.0.419
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -3
- package/build/src/database/pool/async-tracked-multi-connection.d.ts +139 -0
- package/build/src/database/pool/async-tracked-multi-connection.d.ts.map +1 -1
- package/build/src/database/pool/async-tracked-multi-connection.js +232 -92
- package/build/src/database/pool/base.d.ts +4 -0
- package/build/src/database/pool/base.d.ts.map +1 -1
- package/build/src/database/pool/base.js +2 -1
- package/build/src/database/pool/single-multi-use.d.ts.map +1 -1
- package/build/src/database/pool/single-multi-use.js +6 -5
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +113 -35
- package/build/src/database/query/where-combinator.d.ts +18 -0
- package/build/src/database/query/where-combinator.d.ts.map +1 -0
- package/build/src/database/query/where-combinator.js +25 -0
- package/build/src/frontend-model-controller.d.ts +2 -0
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +21 -1
- package/build/src/frontend-models/query.d.ts +6 -0
- package/build/src/frontend-models/query.d.ts.map +1 -1
- package/build/src/frontend-models/query.js +29 -43
- package/build/src/mailer/backends/smtp.d.ts.map +1 -1
- package/build/src/mailer/backends/smtp.js +11 -2
- package/build/src/mailer/base.d.ts +2 -2
- package/build/src/mailer/base.d.ts.map +1 -1
- package/build/src/mailer/base.js +34 -5
- package/build/src/utils/ransack.d.ts +32 -2
- package/build/src/utils/ransack.d.ts.map +1 -1
- package/build/src/utils/ransack.js +306 -75
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -219,11 +219,13 @@ class TasksMailer extends VelociousMailer {
|
|
|
219
219
|
this.task = task
|
|
220
220
|
this.user = user
|
|
221
221
|
this.assignView({task, user})
|
|
222
|
-
return this.mail({to: user.email(), subject: "New task"
|
|
222
|
+
return this.mail({to: user.email(), subject: "New task"})
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
225
|
```
|
|
226
226
|
|
|
227
|
+
Velocious infers the action name from the mailer action method when `this.mail(...)` is called from that method. Pass `actionName` explicitly when rendering a different action template or when a shared helper should override the inferred action.
|
|
228
|
+
|
|
227
229
|
```ejs
|
|
228
230
|
<b>Hello <%= mailer.user.name() %></b>
|
|
229
231
|
<p>
|
|
@@ -251,7 +253,6 @@ resetPassword(user) {
|
|
|
251
253
|
return this.mail({
|
|
252
254
|
to: user.email(),
|
|
253
255
|
subject: "Reset your password",
|
|
254
|
-
actionName: "resetPassword",
|
|
255
256
|
actionPromise: (async () => {
|
|
256
257
|
this.token = await user.resetToken()
|
|
257
258
|
this.assignView({user, token: this.token})
|
|
@@ -1245,6 +1246,40 @@ const frontendTasks = await FrontendTask
|
|
|
1245
1246
|
.toArray()
|
|
1246
1247
|
```
|
|
1247
1248
|
|
|
1249
|
+
Simple OR predicates use Ransack's `_or_` shortcut:
|
|
1250
|
+
|
|
1251
|
+
```js
|
|
1252
|
+
const matchingUsers = await User
|
|
1253
|
+
.ransack({email_or_reference_cont: "john"})
|
|
1254
|
+
.toArray()
|
|
1255
|
+
```
|
|
1256
|
+
|
|
1257
|
+
Grouped Ransack hashes support `m` (`"and"` / `"or"`), `c` condition arrays, and nested `g` groups:
|
|
1258
|
+
|
|
1259
|
+
```js
|
|
1260
|
+
const matchingUsers = await User
|
|
1261
|
+
.ransack({
|
|
1262
|
+
c: [
|
|
1263
|
+
{a: ["email"], p: "cont", v: ["jane"]}
|
|
1264
|
+
],
|
|
1265
|
+
g: [
|
|
1266
|
+
{
|
|
1267
|
+
c: [
|
|
1268
|
+
{a: "reference", p: "cont", v: ["user-2"]},
|
|
1269
|
+
{a: "email", p: "cont", v: ["john"]}
|
|
1270
|
+
],
|
|
1271
|
+
m: "and"
|
|
1272
|
+
}
|
|
1273
|
+
],
|
|
1274
|
+
m: "or"
|
|
1275
|
+
})
|
|
1276
|
+
.limit(20)
|
|
1277
|
+
.offset(0)
|
|
1278
|
+
.toArray()
|
|
1279
|
+
```
|
|
1280
|
+
|
|
1281
|
+
Frontend-model `.ransack(...)` filters run on the backend, so `count()`, `limit(...)`, `offset(...)`, and `toArray()` all share the same query scope instead of loading records into memory first.
|
|
1282
|
+
|
|
1248
1283
|
### Raw where clauses
|
|
1249
1284
|
|
|
1250
1285
|
```js
|
|
@@ -1407,7 +1442,7 @@ database: {
|
|
|
1407
1442
|
}
|
|
1408
1443
|
```
|
|
1409
1444
|
|
|
1410
|
-
`pool.max` caps live async-tracked connections for that pool. When the cap is reached, new checkouts wait until a matching checked-in connection can be handed over or capacity is freed.
|
|
1445
|
+
`pool.max` caps live async-tracked connections for that pool. When the cap is reached, new checkouts wait until a matching checked-in connection can be handed over or capacity is freed. The built-in debug endpoint reports each in-use connection's `checkedOutForMs`, each idle connection's `idleForMs`, and queued `pendingCheckouts[].waitingForMs` so production diagnostics can distinguish long-held checkouts from pool-capacity waits.
|
|
1411
1446
|
|
|
1412
1447
|
# Websockets
|
|
1413
1448
|
|
|
@@ -2,6 +2,7 @@ export const CLOSED_CONNECTION: unique symbol;
|
|
|
2
2
|
/**
|
|
3
3
|
* @typedef {object} PendingCheckout
|
|
4
4
|
* @property {import("../../configuration-types.js").DatabaseConfigurationType} databaseConfig - Resolved database configuration needed by the checkout.
|
|
5
|
+
* @property {number} enqueuedAt - Timestamp when the checkout started waiting.
|
|
5
6
|
* @property {import("./base.js").ConnectionCheckoutOptions} options - Checkout options.
|
|
6
7
|
* @property {string} reuseKey - Database configuration reuse key needed by the checkout.
|
|
7
8
|
* @property {(connection: import("../drivers/base.js").default) => void} resolve - Resolves with an activated connection.
|
|
@@ -68,6 +69,14 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
68
69
|
* @returns {Promise<void>} - Resolves when the connection is checked in or closed.
|
|
69
70
|
*/
|
|
70
71
|
checkin(connection: import("../drivers/base.js").default): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* @param {import("../drivers/base.js").default} connection - Connection being checked in.
|
|
74
|
+
* @param {number | undefined} id - Connection checkout id.
|
|
75
|
+
* @returns {void}
|
|
76
|
+
*/
|
|
77
|
+
untrackConnectionInUse(connection: import("../drivers/base.js").default, id: number | undefined): void;
|
|
78
|
+
/** @returns {Promise<void>} - Resolves once idle reaping has been scheduled or run. */
|
|
79
|
+
handleCheckedInIdleConnection(): Promise<void>;
|
|
71
80
|
/**
|
|
72
81
|
* @param {string} reuseKey - Database configuration reuse key.
|
|
73
82
|
* @param {object} [args] - Options.
|
|
@@ -91,6 +100,11 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
91
100
|
activateConnection(connection: import("../drivers/base.js").default, options?: import("./base.js").ConnectionCheckoutOptions): Promise<import("../drivers/base.js").default>;
|
|
92
101
|
/** @returns {number | undefined} - Configured max live connections. */
|
|
93
102
|
maxConnections(): number | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* @param {unknown} value - Candidate max connection count.
|
|
105
|
+
* @returns {value is number} - Whether the value is a valid max connection count.
|
|
106
|
+
*/
|
|
107
|
+
validMaxConnections(value: unknown): value is number;
|
|
94
108
|
/** @returns {number} - Number of live and in-progress connections. */
|
|
95
109
|
liveConnectionCount(): number;
|
|
96
110
|
/** @returns {boolean} - Whether a new connection can be spawned. */
|
|
@@ -112,6 +126,21 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
112
126
|
drainPendingCheckouts(): Promise<void>;
|
|
113
127
|
/** @returns {Promise<void>} - Resolves when pending checkouts have been drained as far as possible. */
|
|
114
128
|
drainPendingCheckoutsActual(): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* @param {PendingCheckout} checkout - Checkout waiting for a connection.
|
|
131
|
+
* @returns {Promise<boolean>} - Whether an idle connection was closed to free capacity.
|
|
132
|
+
*/
|
|
133
|
+
closeIdleConnectionForPendingCheckoutCapacity(checkout: PendingCheckout): Promise<boolean>;
|
|
134
|
+
/**
|
|
135
|
+
* @param {string} reuseKey - Database configuration reuse key.
|
|
136
|
+
* @returns {import("../drivers/base.js").default | undefined} - Matching idle connection, if present.
|
|
137
|
+
*/
|
|
138
|
+
findIdleConnectionForReuseKey(reuseKey: string): import("../drivers/base.js").default | undefined;
|
|
139
|
+
/**
|
|
140
|
+
* @param {PendingCheckout} checkout - Checkout waiting for a connection.
|
|
141
|
+
* @returns {Promise<import("../drivers/base.js").default | undefined>} - Matching idle connection, if one can be reused.
|
|
142
|
+
*/
|
|
143
|
+
idleConnectionForPendingCheckout(checkout: PendingCheckout): Promise<import("../drivers/base.js").default | undefined>;
|
|
115
144
|
/**
|
|
116
145
|
* @param {PendingCheckout} checkout - Checkout request to resolve.
|
|
117
146
|
* @returns {Promise<void>} - Resolves when the checkout has been handled.
|
|
@@ -125,6 +154,13 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
125
154
|
resolvePendingCheckout(checkout: PendingCheckout, connection: import("../drivers/base.js").default): Promise<void>;
|
|
126
155
|
/** @returns {Promise<boolean>} - Whether an idle connection was closed to free capacity. */
|
|
127
156
|
closeOneIdleConnectionForCapacity(): Promise<boolean>;
|
|
157
|
+
/** @returns {import("../drivers/base.js").default} - Fallback connection, if present. */
|
|
158
|
+
currentFallbackConnectionOrFail(): import("../drivers/base.js").default;
|
|
159
|
+
/**
|
|
160
|
+
* @param {number} id - Checked-out connection id.
|
|
161
|
+
* @returns {void}
|
|
162
|
+
*/
|
|
163
|
+
ensureConnectionIsInUse(id: number): void;
|
|
128
164
|
/**
|
|
129
165
|
* Registers a fallback connection for this pool identifier that will be used when no async context is available.
|
|
130
166
|
* @param {import("../drivers/base.js").default} connection - Connection.
|
|
@@ -140,6 +176,55 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
140
176
|
setTestSharedConnection(connection: import("../drivers/base.js").default): void;
|
|
141
177
|
/** @returns {void} */
|
|
142
178
|
clearTestSharedConnection(): void;
|
|
179
|
+
/**
|
|
180
|
+
* @param {number} now - Current timestamp.
|
|
181
|
+
* @returns {{connections: Array<Record<string, unknown>>, seenConnections: Set<import("../drivers/base.js").default>}} - Connection snapshots and seen set.
|
|
182
|
+
*/
|
|
183
|
+
debugConnectionSnapshots(now: number): {
|
|
184
|
+
connections: Array<Record<string, unknown>>;
|
|
185
|
+
seenConnections: Set<import("../drivers/base.js").default>;
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* @param {{connections: Array<Record<string, unknown>>, now: number, seenConnections: Set<import("../drivers/base.js").default>}} args - Snapshot collection state.
|
|
189
|
+
* @returns {void}
|
|
190
|
+
*/
|
|
191
|
+
addInUseDebugConnectionSnapshots({ connections, now, seenConnections }: {
|
|
192
|
+
connections: Array<Record<string, unknown>>;
|
|
193
|
+
now: number;
|
|
194
|
+
seenConnections: Set<import("../drivers/base.js").default>;
|
|
195
|
+
}): void;
|
|
196
|
+
/**
|
|
197
|
+
* @param {{connections: Array<Record<string, unknown>>, now: number, seenConnections: Set<import("../drivers/base.js").default>}} args - Snapshot collection state.
|
|
198
|
+
* @returns {void}
|
|
199
|
+
*/
|
|
200
|
+
addIdleDebugConnectionSnapshots({ connections, now, seenConnections }: {
|
|
201
|
+
connections: Array<Record<string, unknown>>;
|
|
202
|
+
now: number;
|
|
203
|
+
seenConnections: Set<import("../drivers/base.js").default>;
|
|
204
|
+
}): void;
|
|
205
|
+
/**
|
|
206
|
+
* @param {{connections: Array<Record<string, unknown>>, seenConnections: Set<import("../drivers/base.js").default>}} args - Snapshot collection state.
|
|
207
|
+
* @returns {void}
|
|
208
|
+
*/
|
|
209
|
+
addFallbackDebugConnectionSnapshots({ connections, seenConnections }: {
|
|
210
|
+
connections: Array<Record<string, unknown>>;
|
|
211
|
+
seenConnections: Set<import("../drivers/base.js").default>;
|
|
212
|
+
}): void;
|
|
213
|
+
/**
|
|
214
|
+
* @param {{connection: import("../drivers/base.js").default | undefined, connections: Array<Record<string, unknown>>, seenConnections: Set<import("../drivers/base.js").default>, state: string}} args - Snapshot collection state.
|
|
215
|
+
* @returns {void}
|
|
216
|
+
*/
|
|
217
|
+
addDebugConnectionSnapshotIfUnseen({ connection, connections, seenConnections, state }: {
|
|
218
|
+
connection: import("../drivers/base.js").default | undefined;
|
|
219
|
+
connections: Array<Record<string, unknown>>;
|
|
220
|
+
seenConnections: Set<import("../drivers/base.js").default>;
|
|
221
|
+
state: string;
|
|
222
|
+
}): void;
|
|
223
|
+
/**
|
|
224
|
+
* @param {number} now - Current timestamp.
|
|
225
|
+
* @returns {Array<Record<string, unknown>>} - Pending checkout snapshots.
|
|
226
|
+
*/
|
|
227
|
+
pendingCheckoutDebugSnapshots(now: number): Array<Record<string, unknown>>;
|
|
143
228
|
/**
|
|
144
229
|
* @returns {import("../drivers/base.js").default | undefined} - The global connection.
|
|
145
230
|
*/
|
|
@@ -152,8 +237,15 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
152
237
|
clearGlobalConnectionForIdentifier(): void;
|
|
153
238
|
/** @returns {number | null} - Idle timeout in milliseconds, or null when disabled. */
|
|
154
239
|
idleTimeoutMillis(): number | null;
|
|
240
|
+
/**
|
|
241
|
+
* @param {unknown} value - Candidate idle timeout value.
|
|
242
|
+
* @returns {value is number} - Whether the value is a valid idle timeout.
|
|
243
|
+
*/
|
|
244
|
+
validIdleTimeoutMillis(value: unknown): value is number;
|
|
155
245
|
/** @returns {void} */
|
|
156
246
|
scheduleIdleConnectionReaper(): void;
|
|
247
|
+
/** @returns {boolean} - Whether an idle reaper timer should be scheduled. */
|
|
248
|
+
hasIdleConnectionsToReap(): boolean;
|
|
157
249
|
/**
|
|
158
250
|
* @param {number} idleTimeoutMillis - Idle timeout in milliseconds.
|
|
159
251
|
* @returns {number} - Delay before the next reap.
|
|
@@ -164,6 +256,49 @@ export default class VelociousDatabasePoolAsyncTrackedMultiConnection extends Ba
|
|
|
164
256
|
* @returns {Promise<void>} - Resolves when complete.
|
|
165
257
|
*/
|
|
166
258
|
reapIdleConnections(): Promise<void>;
|
|
259
|
+
/**
|
|
260
|
+
* @param {import("../drivers/base.js").default[]} expiredConnections - Connections to close.
|
|
261
|
+
* @returns {Promise<void>} - Resolves when closed.
|
|
262
|
+
*/
|
|
263
|
+
closeExpiredIdleConnections(expiredConnections: import("../drivers/base.js").default[]): Promise<void>;
|
|
264
|
+
/** @returns {Promise<void>} - Resolves once in-flight connection closes settle. */
|
|
265
|
+
awaitInflightConnectionCloses(): Promise<void>;
|
|
266
|
+
/**
|
|
267
|
+
* @param {{idleTimeoutMillis: number, now: number}} args - Reaper classification inputs.
|
|
268
|
+
* @returns {{expiredConnections: import("../drivers/base.js").default[], keptConnections: import("../drivers/base.js").default[]}} - Classified idle connections.
|
|
269
|
+
*/
|
|
270
|
+
classifyIdleConnectionsForReaping({ idleTimeoutMillis, now }: {
|
|
271
|
+
idleTimeoutMillis: number;
|
|
272
|
+
now: number;
|
|
273
|
+
}): {
|
|
274
|
+
expiredConnections: import("../drivers/base.js").default[];
|
|
275
|
+
keptConnections: import("../drivers/base.js").default[];
|
|
276
|
+
};
|
|
277
|
+
/**
|
|
278
|
+
* @param {{connection: import("../drivers/base.js").default, expiredConnections: import("../drivers/base.js").default[], idleTimeoutMillis: number, keptConnections: import("../drivers/base.js").default[], now: number}} args - Classification state.
|
|
279
|
+
* @returns {void}
|
|
280
|
+
*/
|
|
281
|
+
classifyIdleConnectionForReaping({ connection, expiredConnections, idleTimeoutMillis, keptConnections, now }: {
|
|
282
|
+
connection: import("../drivers/base.js").default;
|
|
283
|
+
expiredConnections: import("../drivers/base.js").default[];
|
|
284
|
+
idleTimeoutMillis: number;
|
|
285
|
+
keptConnections: import("../drivers/base.js").default[];
|
|
286
|
+
now: number;
|
|
287
|
+
}): void;
|
|
288
|
+
/**
|
|
289
|
+
* @param {import("../drivers/base.js").default} connection - Connection to inspect.
|
|
290
|
+
* @returns {boolean} - Whether the connection is marked closed.
|
|
291
|
+
*/
|
|
292
|
+
connectionIsClosed(connection: import("../drivers/base.js").default): boolean;
|
|
293
|
+
/**
|
|
294
|
+
* @param {{connection: import("../drivers/base.js").default, idleTimeoutMillis: number, now: number}} args - Expiry inputs.
|
|
295
|
+
* @returns {boolean} - Whether the idle connection expired.
|
|
296
|
+
*/
|
|
297
|
+
idleConnectionExpired({ connection, idleTimeoutMillis, now }: {
|
|
298
|
+
connection: import("../drivers/base.js").default;
|
|
299
|
+
idleTimeoutMillis: number;
|
|
300
|
+
now: number;
|
|
301
|
+
}): boolean;
|
|
167
302
|
/**
|
|
168
303
|
* @param {import("../drivers/base.js").default} connection - Connection to inspect.
|
|
169
304
|
* @returns {boolean} - Whether the connection has an open transaction.
|
|
@@ -197,6 +332,10 @@ export type PendingCheckout = {
|
|
|
197
332
|
* - Resolved database configuration needed by the checkout.
|
|
198
333
|
*/
|
|
199
334
|
databaseConfig: import("../../configuration-types.js").DatabaseConfigurationType;
|
|
335
|
+
/**
|
|
336
|
+
* - Timestamp when the checkout started waiting.
|
|
337
|
+
*/
|
|
338
|
+
enqueuedAt: number;
|
|
200
339
|
/**
|
|
201
340
|
* - Checkout options.
|
|
202
341
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async-tracked-multi-connection.d.ts","sourceRoot":"","sources":["../../../../src/database/pool/async-tracked-multi-connection.js"],"names":[],"mappings":"AAKA,8CAAoE;
|
|
1
|
+
{"version":3,"file":"async-tracked-multi-connection.d.ts","sourceRoot":"","sources":["../../../../src/database/pool/async-tracked-multi-connection.js"],"names":[],"mappings":"AAKA,8CAAoE;AAKpE;;;;;;;;GAQG;AAEH;IACE;;;OAGG;IACH,0BAFU,OAAO,CAAC,OAAO,wBAAwB,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAEzE;IAo6BxC;;;;;OAKG;IACH,0CAJW,MAAM,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,OAAO,CAAC,kBACpD,OAAO,wBAAwB,EAAE,OAAO,GACtC,IAAI,CAShB;IAED;;;;OAIG;IACH,8CAHW,OAAO,wBAAwB,EAAE,OAAO,GACtC,IAAI,CAShB;IA77BD,0CAA2C;IAE3C;;;;;OAKG;IACH,uBAFU,OAAO,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAEzB;IAEjC,qDAAqD;IACrD,aADW,OAAO,oBAAoB,EAAE,OAAO,EAAE,CACjC;IAEhB,mEAAmE;IACnE,kBADW,MAAM,CAAC,MAAM,EAAE,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAC1C;IAErB,gCAAgC;IAChC,kBADW,eAAe,EAAE,CACP;IAErB,qBAAqB;IACrB,yBADW,MAAM,CACU;IAE3B,wCAAwC;IACxC,6BADW,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CACG;IAEvC,wDAAwD;IACxD,2BADW,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS,CACf;IAErC;;;;;;;;OAQG;IACH,0BAFU,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAEQ;IAEpC;;;;OAIG;IACH,yBAFU,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAED;IAEvC,cAAS;IAWT;;;OAGG;IACH,oBAHW,OAAO,oBAAoB,EAAE,OAAO,GAClC,OAAO,CAAC,IAAI,CAAC,CA0BzB;IAED;;;;OAIG;IACH,mCAJW,OAAO,oBAAoB,EAAE,OAAO,MACpC,MAAM,GAAG,SAAS,GAChB,IAAI,CAShB;IAED,uFAAuF;IACvF,iCADc,OAAO,CAAC,IAAI,CAAC,CAO1B;IAgCD;;;;;OAKG;IACH,wCALW,MAAM,gCAEd;QAAuB,uBAAuB;KAC9C,GAAU,OAAO,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAW5D;IAED;;;;OAIG;IACH,sCAJW,OAAO,oBAAoB,EAAE,OAAO,YACpC,MAAM,GACJ,OAAO,CAMnB;IAED;;;;OAIG;IACH,+BAJW,OAAO,oBAAoB,EAAE,OAAO,YACpC,OAAO,WAAW,EAAE,yBAAyB,GAC3C,OAAO,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAyBzD;IAED,uEAAuE;IACvE,kBADc,MAAM,GAAG,SAAS,CAO/B;IAED;;;OAGG;IACH,2BAHW,OAAO,GACL,KAAK,IAAI,MAAM,CAI3B;IAED,sEAAsE;IACtE,uBADc,MAAM,CASnB;IAED,oEAAoE;IACpE,sBADc,OAAO,CAKpB;IAED;;;;OAIG;IACH,2CAJW,OAAO,8BAA8B,EAAE,yBAAyB,YAChE,MAAM,GACJ,OAAO,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAmBzD;IAED;;;;;OAKG;IACH,gCALW,OAAO,8BAA8B,EAAE,yBAAyB,YAChE,MAAM,YACN,OAAO,WAAW,EAAE,yBAAyB,GAC3C,OAAO,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAWzD;IAED,uGAAuG;IACvG,yBADc,OAAO,CAAC,IAAI,CAAC,CAc1B;IAED,uGAAuG;IACvG,+BADc,OAAO,CAAC,IAAI,CAAC,CAmB1B;IAED;;;OAGG;IACH,wDAHW,eAAe,GACb,OAAO,CAAC,OAAO,CAAC,CAY5B;IAED;;;OAGG;IACH,wCAHW,MAAM,GACJ,OAAO,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAI5D;IAED;;;OAGG;IACH,2CAHW,eAAe,GACb,OAAO,CAAC,OAAO,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAC,CAWrE;IAED;;;OAGG;IACH,yCAHW,eAAe,GACb,OAAO,CAAC,IAAI,CAAC,CAazB;IAED;;;;OAIG;IACH,iCAJW,eAAe,cACf,OAAO,oBAAoB,EAAE,OAAO,GAClC,OAAO,CAAC,IAAI,CAAC,CAQzB;IAED,4FAA4F;IAC5F,qCADc,OAAO,CAAC,OAAO,CAAC,CAU7B;IA2CD,yFAAyF;IACzF,mCADc,OAAO,oBAAoB,EAAE,OAAO,CAOjD;IAED;;;OAGG;IACH,4BAHW,MAAM,GACJ,IAAI,CAMhB;IAED;;;;OAIG;IACH,gCAHW,OAAO,oBAAoB,EAAE,OAAO,GAClC,IAAI,CAYhB;IAoBD;;;;;OAKG;IACH,oCAHW,OAAO,oBAAoB,EAAE,OAAO,GAClC,IAAI,CAIhB;IAED,sBAAsB;IACtB,6BADc,IAAI,CAGjB;IAgCD;;;OAGG;IACH,8BAHW,MAAM,GACJ;QAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,eAAe,EAAE,GAAG,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAA;KAAC,CAYrH;IAED;;;OAGG;IACH,wEAHW;QAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,GAAG,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAA;KAAC,GACpH,IAAI,CAWhB;IAED;;;OAGG;IACH,uEAHW;QAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,GAAG,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAA;KAAC,GACpH,IAAI,CAchB;IAED;;;OAGG;IACH,sEAHW;QAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,eAAe,EAAE,GAAG,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAA;KAAC,GACvG,IAAI,CAKhB;IAED;;;OAGG;IACH,wFAHW;QAAC,UAAU,EAAE,OAAO,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAAC,eAAe,EAAE,GAAG,CAAC,OAAO,oBAAoB,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,GACpL,IAAI,CAOhB;IAED;;;OAGG;IACH,mCAHW,MAAM,GACJ,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAU1C;IAED;;OAEG;IACH,uBAFa,OAAO,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAS5D;IAED;;OAEG;IACH,oCAFa,OAAO,oBAAoB,EAAE,OAAO,GAAG,SAAS,CAO5D;IAED,yCAAyC;IACzC,sCADc,IAAI,CAQjB;IAmBD,sFAAsF;IACtF,qBADc,MAAM,GAAG,IAAI,CAQ1B;IAED;;;OAGG;IACH,8BAHW,OAAO,GACL,KAAK,IAAI,MAAM,CAI3B;IAED,sBAAsB;IACtB,gCADc,IAAI,CAiBjB;IAED,6EAA6E;IAC7E,4BADc,OAAO,CAGpB;IAED;;;OAGG;IACH,+CAHW,MAAM,GACJ,MAAM,CAkBlB;IAED;;;OAGG;IACH,uBAFa,OAAO,CAAC,IAAI,CAAC,CAezB;IAED;;;OAGG;IACH,gDAHW,OAAO,oBAAoB,EAAE,OAAO,EAAE,GACpC,OAAO,CAAC,IAAI,CAAC,CAMzB;IAED,mFAAmF;IACnF,iCADc,OAAO,CAAC,IAAI,CAAC,CAK1B;IAED;;;OAGG;IACH,8DAHW;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,GACtC;QAAC,kBAAkB,EAAE,OAAO,oBAAoB,EAAE,OAAO,EAAE,CAAC;QAAC,eAAe,EAAE,OAAO,oBAAoB,EAAE,OAAO,EAAE,CAAA;KAAC,CAajI;IAED;;;OAGG;IACH,8GAHW;QAAC,UAAU,EAAE,OAAO,oBAAoB,EAAE,OAAO,CAAC;QAAC,kBAAkB,EAAE,OAAO,oBAAoB,EAAE,OAAO,EAAE,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,OAAO,oBAAoB,EAAE,OAAO,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,GAC7M,IAAI,CAYhB;IAED;;;OAGG;IACH,+BAHW,OAAO,oBAAoB,EAAE,OAAO,GAClC,OAAO,CAMnB;IAED;;;OAGG;IACH,8DAHW;QAAC,UAAU,EAAE,OAAO,oBAAoB,EAAE,OAAO,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,GACxF,OAAO,CAOnB;IAED;;;OAGG;IACH,yCAHW,OAAO,oBAAoB,EAAE,OAAO,GAClC,OAAO,CAInB;IAED;;;;;;;;OAQG;IACH,wCAHW,OAAO,oBAAoB,EAAE,OAAO,GAClC,OAAO,CAAC,IAAI,CAAC,CAUzB;IAED;;;OAGG;IACH,4BAHW,OAAO,oBAAoB,EAAE,OAAO,GAClC,OAAO,CAAC,IAAI,CAAC,CA+BzB;IAED,sBAAsB;IACtB,kCADc,IAAI,CAMjB;IA8BD;;;OAGG;IACH,8BAHW,KAAK,GACH,IAAI,CAUhB;CA8BF;;;;;oBA78Ba,OAAO,8BAA8B,EAAE,yBAAyB;;;;gBAChE,MAAM;;;;aACN,OAAO,WAAW,EAAE,yBAAyB;;;;cAC7C,MAAM;;;;aACN,CAAC,UAAU,EAAE,OAAO,oBAAoB,EAAE,OAAO,KAAK,IAAI;;;;YAC1D,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI;;qBAdW,WAAW;kCAD1B,aAAa"}
|