@deck.gl/carto 8.9.32 → 8.9.33

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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@deck.gl/carto",
3
3
  "description": "CARTO official integration with Deck.gl. Build geospatial applications using CARTO and Deck.gl.",
4
4
  "license": "MIT",
5
- "version": "8.9.32",
5
+ "version": "8.9.33",
6
6
  "publishConfig": {
7
7
  "access": "public"
8
8
  },
@@ -65,5 +65,5 @@
65
65
  "@deck.gl/layers": "^8.0.0",
66
66
  "@loaders.gl/core": "^3.4.13"
67
67
  },
68
- "gitHead": "148b3b04a065a70f4d92a079b095e2194b979fda"
68
+ "gitHead": "20c3e14cb5b0b2021125f2cf9056e57466d473eb"
69
69
  }
@@ -94,3 +94,23 @@ export type NamedQueryParameter = Record<string, QueryParameterValue>;
94
94
  export type PositionalQueryParameter = QueryParameterValue[];
95
95
 
96
96
  export type QueryParameters = NamedQueryParameter | PositionalQueryParameter;
97
+
98
+ export interface Filters {
99
+ [column: string]: Filter;
100
+ }
101
+
102
+ interface Filter {
103
+ [FilterTypes.In]: number[];
104
+ [FilterTypes.Between]: number[][];
105
+ [FilterTypes.ClosedOpen]: number[][];
106
+ [FilterTypes.Time]: number[][];
107
+ [FilterTypes.StringSearch]: string[];
108
+ }
109
+
110
+ export enum FilterTypes {
111
+ In = 'in',
112
+ Between = 'between', // [a, b] both are included
113
+ ClosedOpen = 'closed_open', // [a, b) a is included, b is not
114
+ Time = 'time',
115
+ StringSearch = 'stringSearch'
116
+ }
@@ -21,7 +21,8 @@ import {
21
21
  REQUEST_TYPES,
22
22
  SchemaField,
23
23
  TileFormat,
24
- TILE_FORMATS
24
+ TILE_FORMATS,
25
+ Filters
25
26
  } from './maps-api-common';
26
27
 
27
28
  import {APIErrorContext, CartoAPIError} from './carto-api-error';
@@ -134,6 +135,7 @@ type FetchLayerDataParams = {
134
135
  aggregationExp?: string;
135
136
  aggregationResLevel?: number;
136
137
  queryParameters?: QueryParameters;
138
+ filters?: Filters;
137
139
  };
138
140
 
139
141
  type MapsAPIParameters = {
@@ -146,6 +148,7 @@ type MapsAPIParameters = {
146
148
  columns?: string;
147
149
  aggregationExp?: string;
148
150
  aggregationResLevel?: number;
151
+ filters?: Filters;
149
152
  };
150
153
 
151
154
  /**
@@ -159,7 +162,8 @@ function getParameters({
159
162
  clientId,
160
163
  aggregationExp,
161
164
  aggregationResLevel,
162
- queryParameters
165
+ queryParameters,
166
+ filters
163
167
  }: Omit<FetchLayerDataParams, 'connection' | 'credentials'>): MapsAPIParameters {
164
168
  const parameters: MapsAPIParameters = {
165
169
  client: clientId || DEFAULT_CLIENT,
@@ -188,6 +192,9 @@ function getParameters({
188
192
  if (aggregationResLevel) {
189
193
  parameters.aggregationResLevel = aggregationResLevel;
190
194
  }
195
+ if (filters) {
196
+ parameters.filters = filters;
197
+ }
191
198
 
192
199
  return parameters;
193
200
  }
@@ -208,7 +215,8 @@ export async function mapInstantiation({
208
215
  headers,
209
216
  aggregationExp,
210
217
  aggregationResLevel,
211
- queryParameters
218
+ queryParameters,
219
+ filters
212
220
  }: FetchLayerDataParams): Promise<MapInstantiation> {
213
221
  const baseUrl = `${credentials.mapsUrl}/${connection}/${type}`;
214
222
  const parameters = getParameters({
@@ -219,7 +227,8 @@ export async function mapInstantiation({
219
227
  clientId,
220
228
  aggregationResLevel,
221
229
  aggregationExp,
222
- queryParameters
230
+ queryParameters,
231
+ filters
223
232
  });
224
233
  const encodedParameters = Object.entries(parameters).map(([key, value]) => {
225
234
  if (typeof value !== 'string') {
@@ -263,7 +272,8 @@ function checkFetchLayerDataParameters({
263
272
  geoColumn,
264
273
  columns,
265
274
  aggregationExp,
266
- aggregationResLevel
275
+ aggregationResLevel,
276
+ filters
267
277
  }: FetchLayerDataParams) {
268
278
  assert(connection, 'Must define connection');
269
279
  assert(type, 'Must define a type');
@@ -288,6 +298,12 @@ function checkFetchLayerDataParameters({
288
298
  assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');
289
299
  assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');
290
300
  }
301
+ if (filters) {
302
+ assert(
303
+ type === MAP_TYPES.TABLE || type === MAP_TYPES.QUERY,
304
+ 'The filters parameter is only supported by type table and query'
305
+ );
306
+ }
291
307
  }
292
308
 
293
309
  export interface FetchLayerDataResult {
@@ -308,7 +324,8 @@ export async function fetchLayerData({
308
324
  headers,
309
325
  aggregationExp,
310
326
  aggregationResLevel,
311
- queryParameters
327
+ queryParameters,
328
+ filters
312
329
  }: FetchLayerDataParams): Promise<FetchLayerDataResult> {
313
330
  // Internally we split data fetching into two parts to allow us to
314
331
  // conditionally fetch the actual data, depending on the metadata state
@@ -325,7 +342,8 @@ export async function fetchLayerData({
325
342
  headers,
326
343
  aggregationExp,
327
344
  aggregationResLevel,
328
- queryParameters
345
+ queryParameters,
346
+ filters
329
347
  });
330
348
 
331
349
  const errorContext = {requestType: REQUEST_TYPES.DATA, connection, type, source};
@@ -347,7 +365,8 @@ async function _fetchDataUrl({
347
365
  headers,
348
366
  aggregationExp,
349
367
  aggregationResLevel,
350
- queryParameters
368
+ queryParameters,
369
+ filters
351
370
  }: FetchLayerDataParams) {
352
371
  const defaultCredentials = getDefaultCredentials();
353
372
  // Only pick up default credentials if they have been defined for
@@ -364,7 +383,8 @@ async function _fetchDataUrl({
364
383
  geoColumn,
365
384
  columns,
366
385
  aggregationExp,
367
- aggregationResLevel
386
+ aggregationResLevel,
387
+ filters
368
388
  });
369
389
 
370
390
  if (!localCreds.mapsUrl) {
@@ -382,7 +402,8 @@ async function _fetchDataUrl({
382
402
  headers,
383
403
  aggregationExp,
384
404
  aggregationResLevel,
385
- queryParameters
405
+ queryParameters,
406
+ filters
386
407
  });
387
408
  let url: string | null = null;
388
409
  let mapFormat: Format | undefined;
@@ -73,5 +73,22 @@ export declare type QueryParameterValue = string | number | boolean | Array<Quer
73
73
  export declare type NamedQueryParameter = Record<string, QueryParameterValue>;
74
74
  export declare type PositionalQueryParameter = QueryParameterValue[];
75
75
  export declare type QueryParameters = NamedQueryParameter | PositionalQueryParameter;
76
+ export interface Filters {
77
+ [column: string]: Filter;
78
+ }
79
+ interface Filter {
80
+ [FilterTypes.In]: number[];
81
+ [FilterTypes.Between]: number[][];
82
+ [FilterTypes.ClosedOpen]: number[][];
83
+ [FilterTypes.Time]: number[][];
84
+ [FilterTypes.StringSearch]: string[];
85
+ }
86
+ export declare enum FilterTypes {
87
+ In = "in",
88
+ Between = "between",
89
+ ClosedOpen = "closed_open",
90
+ Time = "time",
91
+ StringSearch = "stringSearch"
92
+ }
76
93
  export {};
77
94
  //# sourceMappingURL=maps-api-common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"maps-api-common.d.ts","sourceRoot":"","sources":["../../src/api/maps-api-common.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,WAAW,CAAC;AACtD,eAAO,MAAM,+BAA+B,aAAa,CAAC;AAE1D,oBAAY,QAAQ,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AACX,oBAAY,UAAU,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,uBAAuB;;;CAG1B,CAAC;AAEX,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AACX,oBAAY,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;AACjD,eAAO,MAAM,eAAe,EAAE,OAAO,EAAsB,CAAC;AAC5D,eAAO,MAAM,kBAAkB,EAAE,OAAO,EAAuC,CAAC;AAGhF,eAAO,MAAM,OAAO;;;;;CAKV,CAAC;AACX,oBAAY,MAAM,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AAG9C,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AACX,oBAAY,UAAU,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,oBAAY,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AACD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,aAAK,uBAAuB,GAAG,MAAM,CACnC,MAAM,EACN;IACE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CACF,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AACX,oBAAY,WAAW,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAEtF;AAED,oBAAY,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC;AAElG,oBAAY,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEtE,oBAAY,wBAAwB,GAAG,mBAAmB,EAAE,CAAC;AAE7D,oBAAY,eAAe,GAAG,mBAAmB,GAAG,wBAAwB,CAAC"}
1
+ {"version":3,"file":"maps-api-common.d.ts","sourceRoot":"","sources":["../../src/api/maps-api-common.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,6BAA6B,WAAW,CAAC;AACtD,eAAO,MAAM,+BAA+B,aAAa,CAAC;AAE1D,oBAAY,QAAQ,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAChD,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AACX,oBAAY,UAAU,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,uBAAuB;;;CAG1B,CAAC;AAEX,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AACX,oBAAY,OAAO,GAAG,QAAQ,CAAC,OAAO,SAAS,CAAC,CAAC;AACjD,eAAO,MAAM,eAAe,EAAE,OAAO,EAAsB,CAAC;AAC5D,eAAO,MAAM,kBAAkB,EAAE,OAAO,EAAuC,CAAC;AAGhF,eAAO,MAAM,OAAO;;;;;CAKV,CAAC;AACX,oBAAY,MAAM,GAAG,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC;AAG9C,eAAO,MAAM,YAAY;;;;;CAKf,CAAC;AACX,oBAAY,UAAU,GAAG,QAAQ,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,oBAAY,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AACD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,gBAAiB,SAAQ,uBAAuB;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,aAAK,uBAAuB,GAAG,MAAM,CACnC,MAAM,EACN;IACE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,CACF,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AACX,oBAAY,WAAW,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAEzD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAEtF;AAED,oBAAY,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC;AAElG,oBAAY,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;AAEtE,oBAAY,wBAAwB,GAAG,mBAAmB,EAAE,CAAC;AAE7D,oBAAY,eAAe,GAAG,mBAAmB,GAAG,wBAAwB,CAAC;AAE7E,MAAM,WAAW,OAAO;IACtB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,UAAU,MAAM;IACd,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAClC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACrC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IAC/B,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAED,oBAAY,WAAW;IACrB,EAAE,OAAO;IACT,OAAO,YAAY;IACnB,UAAU,gBAAgB;IAC1B,IAAI,SAAS;IACb,YAAY,iBAAiB;CAC9B"}
@@ -2,7 +2,7 @@
2
2
  * Maps API Client for Carto 3
3
3
  */
4
4
  import { CloudNativeCredentials } from '../config';
5
- import { Format, MapInstantiation, MapType, QueryParameters, SchemaField, TileFormat } from './maps-api-common';
5
+ import { Format, MapInstantiation, MapType, QueryParameters, SchemaField, TileFormat, Filters } from './maps-api-common';
6
6
  export declare type Headers = Record<string, string>;
7
7
  declare type FetchLayerDataParams = {
8
8
  type: MapType;
@@ -18,14 +18,15 @@ declare type FetchLayerDataParams = {
18
18
  aggregationExp?: string;
19
19
  aggregationResLevel?: number;
20
20
  queryParameters?: QueryParameters;
21
+ filters?: Filters;
21
22
  };
22
- export declare function mapInstantiation({ type, source, connection, credentials, geoColumn, columns, clientId, headers, aggregationExp, aggregationResLevel, queryParameters }: FetchLayerDataParams): Promise<MapInstantiation>;
23
+ export declare function mapInstantiation({ type, source, connection, credentials, geoColumn, columns, clientId, headers, aggregationExp, aggregationResLevel, queryParameters, filters }: FetchLayerDataParams): Promise<MapInstantiation>;
23
24
  export interface FetchLayerDataResult {
24
25
  data: any;
25
26
  format?: Format;
26
27
  schema: SchemaField[];
27
28
  }
28
- export declare function fetchLayerData({ type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, headers, aggregationExp, aggregationResLevel, queryParameters }: FetchLayerDataParams): Promise<FetchLayerDataResult>;
29
+ export declare function fetchLayerData({ type, source, connection, credentials, geoColumn, columns, format, formatTiles, clientId, headers, aggregationExp, aggregationResLevel, queryParameters, filters }: FetchLayerDataParams): Promise<FetchLayerDataResult>;
29
30
  export declare function fetchMap({ cartoMapId, clientId, credentials, headers, autoRefresh, onNewData }: {
30
31
  cartoMapId: string;
31
32
  clientId: string;
@@ -35,9 +36,6 @@ export declare function fetchMap({ cartoMapId, clientId, credentials, headers, a
35
36
  onNewData?: (map: any) => void;
36
37
  }): Promise<{
37
38
  stopAutoRefresh: (() => void) | undefined;
38
- /**
39
- * Request against Maps API
40
- */
41
39
  id: any;
42
40
  title: any;
43
41
  description: any;
@@ -1 +1 @@
1
- {"version":3,"file":"maps-v3-client.d.ts","sourceRoot":"","sources":["../../src/api/maps-v3-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAIL,sBAAsB,EACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAIL,MAAM,EAGN,gBAAgB,EAChB,OAAO,EAEP,eAAe,EAEf,WAAW,EACX,UAAU,EAEX,MAAM,mBAAmB,CAAC;AAY3B,oBAAY,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAsF7C,aAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,sBAAsB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AA+DF,wBAAsB,gBAAgB,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,eAAe,EAChB,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkClD;AA+CD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AACD,wBAAsB,cAAc,CAAC,EACnC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,WAAW,EACX,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,eAAe,EAChB,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAuBtD;AAgOD,wBAAsB,QAAQ,CAAC,EAC7B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;4BA+B6B,IAAI;IA7iBlC;;OAEG;;;;;;;;;;GA+lBF"}
1
+ {"version":3,"file":"maps-v3-client.d.ts","sourceRoot":"","sources":["../../src/api/maps-v3-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAIL,sBAAsB,EACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAIL,MAAM,EAGN,gBAAgB,EAChB,OAAO,EAEP,eAAe,EAEf,WAAW,EACX,UAAU,EAEV,OAAO,EACR,MAAM,mBAAmB,CAAC;AAY3B,oBAAY,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAsF7C,aAAK,oBAAoB,GAAG;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,sBAAsB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAoEF,wBAAsB,gBAAgB,CAAC,EACrC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,OAAO,EACR,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmClD;AAsDD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AACD,wBAAsB,cAAc,CAAC,EACnC,IAAI,EACJ,MAAM,EACN,UAAU,EACV,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,WAAW,EACX,QAAQ,EACR,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,OAAO,EACR,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAwBtD;AAmOD,wBAAsB,QAAQ,CAAC,EAC7B,UAAU,EACV,QAAQ,EACR,WAAW,EACX,OAAO,EACP,WAAW,EACX,SAAS,EACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAChC;4BA+B6B,IAAI;;;;;;;;;;GAoDjC"}