stream-chat 4.4.3 → 4.5.0-beta.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/README.md +4 -13
- package/dist/browser.es.js +1571 -1071
- package/dist/browser.es.js.map +1 -1
- package/dist/browser.full-bundle.min.js +1 -1
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/browser.js +1571 -1071
- package/dist/browser.js.map +1 -1
- package/dist/index.es.js +1571 -1071
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +1571 -1071
- package/dist/index.js.map +1 -1
- package/dist/types/base64.d.ts.map +1 -1
- package/dist/types/channel.d.ts +19 -15
- package/dist/types/channel.d.ts.map +1 -1
- package/dist/types/channel_state.d.ts +2 -2
- package/dist/types/channel_state.d.ts.map +1 -1
- package/dist/types/client.d.ts +18 -39
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client_state.d.ts +2 -2
- package/dist/types/client_state.d.ts.map +1 -1
- package/dist/types/connection.d.ts +14 -49
- package/dist/types/connection.d.ts.map +1 -1
- package/dist/types/connection_fallback.d.ts +42 -0
- package/dist/types/connection_fallback.d.ts.map +1 -0
- package/dist/types/errors.d.ts +14 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/insights.d.ts +6 -6
- package/dist/types/insights.d.ts.map +1 -1
- package/dist/types/permissions.d.ts.map +1 -1
- package/dist/types/signing.d.ts +3 -3
- package/dist/types/signing.d.ts.map +1 -1
- package/dist/types/token_manager.d.ts +2 -2
- package/dist/types/token_manager.d.ts.map +1 -1
- package/dist/types/types.d.ts +94 -80
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils.d.ts +12 -2
- package/dist/types/utils.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/base64.ts +1 -4
- package/src/channel.ts +133 -461
- package/src/channel_state.ts +31 -158
- package/src/client.ts +277 -674
- package/src/client_state.ts +2 -2
- package/src/connection.ts +143 -394
- package/src/connection_fallback.ts +205 -0
- package/src/errors.ts +58 -0
- package/src/insights.ts +15 -23
- package/src/permissions.ts +3 -24
- package/src/signing.ts +6 -17
- package/src/token_manager.ts +6 -18
- package/src/types.ts +268 -504
- package/src/utils.ts +39 -19
- package/CHANGELOG.md +0 -844
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { AxiosRequestConfig, CancelTokenSource } from 'axios';
|
|
2
|
+
import { StreamChat } from './client';
|
|
3
|
+
import { ConnectionOpen, UnknownType, UR, LiteralStringForUnion, LogLevel } from './types';
|
|
4
|
+
declare enum ConnectionState {
|
|
5
|
+
Closed = "CLOSED",
|
|
6
|
+
Connected = "CONNECTED",
|
|
7
|
+
Connecting = "CONNECTING",
|
|
8
|
+
Disconnected = "DISCONNECTED",
|
|
9
|
+
Init = "INIT"
|
|
10
|
+
}
|
|
11
|
+
export declare class WSConnectionFallback<AttachmentType extends UR = UR, ChannelType extends UR = UR, CommandType extends string = LiteralStringForUnion, EventType extends UR = UR, MessageType extends UR = UR, ReactionType extends UR = UR, UserType extends UR = UR> {
|
|
12
|
+
client: StreamChat<AttachmentType, ChannelType, CommandType, EventType, MessageType, ReactionType, UserType>;
|
|
13
|
+
state: ConnectionState;
|
|
14
|
+
consecutiveFailures: number;
|
|
15
|
+
connectionID?: string;
|
|
16
|
+
cancelToken?: CancelTokenSource;
|
|
17
|
+
constructor({ client, }: {
|
|
18
|
+
client: StreamChat<AttachmentType, ChannelType, CommandType, EventType, MessageType, ReactionType, UserType>;
|
|
19
|
+
});
|
|
20
|
+
_log(msg: string, extra?: UR, level?: LogLevel): void;
|
|
21
|
+
_setState(state: ConnectionState): void;
|
|
22
|
+
/** @private */
|
|
23
|
+
_onlineStatusChanged: (event: {
|
|
24
|
+
type: string;
|
|
25
|
+
}) => void;
|
|
26
|
+
/** @private */
|
|
27
|
+
_req: <T = UR>(params: UnknownType, config: AxiosRequestConfig, retry: boolean) => Promise<T>;
|
|
28
|
+
/** @private */
|
|
29
|
+
_poll: () => Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* connect try to open a longpoll request
|
|
32
|
+
* @param reconnect should be false for first call and true for subsequent calls to keep the connection alive and call recoverState
|
|
33
|
+
*/
|
|
34
|
+
connect: (reconnect?: boolean) => Promise<ConnectionOpen<ChannelType, CommandType, UserType>>;
|
|
35
|
+
/**
|
|
36
|
+
* isHealthy checks if there is a connectionID and connection is in Connected state
|
|
37
|
+
*/
|
|
38
|
+
isHealthy: () => boolean | "" | undefined;
|
|
39
|
+
disconnect: (timeout?: number) => Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=connection_fallback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection_fallback.d.ts","sourceRoot":"","sources":["../../src/connection_fallback.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,cAAc,EAAS,WAAW,EAAE,EAAE,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAElG,aAAK,eAAe;IAClB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,IAAI,SAAS;CACd;AAED,qBAAa,oBAAoB,CAC/B,cAAc,SAAS,EAAE,GAAG,EAAE,EAC9B,WAAW,SAAS,EAAE,GAAG,EAAE,EAC3B,WAAW,SAAS,MAAM,GAAG,qBAAqB,EAClD,SAAS,SAAS,EAAE,GAAG,EAAE,EACzB,WAAW,SAAS,EAAE,GAAG,EAAE,EAC3B,YAAY,SAAS,EAAE,GAAG,EAAE,EAC5B,QAAQ,SAAS,EAAE,GAAG,EAAE;IAExB,MAAM,EAAE,UAAU,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC7G,KAAK,EAAE,eAAe,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,iBAAiB,CAAC;gBAEpB,EACV,MAAM,GACP,EAAE;QACD,MAAM,EAAE,UAAU,CAAC,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;KAC9G;IAQD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,EAAO,EAAE,KAAK,GAAE,QAAiB;IAI1D,SAAS,CAAC,KAAK,EAAE,eAAe;IAiBhC,eAAe;IACf,oBAAoB,UAAW;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,UAa7C;IAEF,eAAe;IACf,IAAI,mBAA0B,WAAW,UAAU,kBAAkB,SAAS,OAAO,gBA6BnF;IAEF,eAAe;IACf,KAAK,sBAmCH;IAEF;;;OAGG;IACH,OAAO,uFA4BL;IAEF;;OAEG;IACH,SAAS,iCAEP;IAEF,UAAU,sCAcR;CACH"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const APIErrorCodes: Record<string, {
|
|
2
|
+
name: string;
|
|
3
|
+
retryable: boolean;
|
|
4
|
+
}>;
|
|
5
|
+
declare type APIError = Error & {
|
|
6
|
+
code?: number;
|
|
7
|
+
isWSFailure?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function isAPIError(error: Error): error is APIError;
|
|
10
|
+
export declare function isErrorRetryable(error: APIError): boolean;
|
|
11
|
+
export declare function isConnectionIDError(error: APIError): boolean;
|
|
12
|
+
export declare function isWSFailure(err: APIError): boolean;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CA4B9E,CAAC;AAEF,aAAK,QAAQ,GAAG,KAAK,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjE,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,IAAI,QAAQ,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,WAK/C;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,WAElD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAUlD"}
|
package/dist/types/insights.d.ts
CHANGED
|
@@ -22,10 +22,10 @@ export declare function buildWsFatalInsight(connection: StableWSConnection, even
|
|
|
22
22
|
api_key: string;
|
|
23
23
|
start_ts: number | null;
|
|
24
24
|
end_ts: number;
|
|
25
|
-
auth_type:
|
|
25
|
+
auth_type: string;
|
|
26
26
|
token: string | undefined;
|
|
27
|
-
user_id: string;
|
|
28
|
-
user_details: import("./types").UserResponse<import("./types").
|
|
27
|
+
user_id: string | undefined;
|
|
28
|
+
user_details: import("./types").OwnUserResponse<import("./types").UR, import("./types").LiteralStringForUnion, import("./types").UR> | import("./types").UserResponse<import("./types").UR> | undefined;
|
|
29
29
|
device: import("./types").BaseDeviceFields | undefined;
|
|
30
30
|
client_id: string | undefined;
|
|
31
31
|
ws_details: import("ws") | undefined;
|
|
@@ -42,10 +42,10 @@ export declare function buildWsSuccessAfterFailureInsight(connection: StableWSCo
|
|
|
42
42
|
api_key: string;
|
|
43
43
|
start_ts: number | null;
|
|
44
44
|
end_ts: number;
|
|
45
|
-
auth_type:
|
|
45
|
+
auth_type: string;
|
|
46
46
|
token: string | undefined;
|
|
47
|
-
user_id: string;
|
|
48
|
-
user_details: import("./types").UserResponse<import("./types").
|
|
47
|
+
user_id: string | undefined;
|
|
48
|
+
user_details: import("./types").OwnUserResponse<import("./types").UR, import("./types").LiteralStringForUnion, import("./types").UR> | import("./types").UserResponse<import("./types").UR> | undefined;
|
|
49
49
|
device: import("./types").BaseDeviceFields | undefined;
|
|
50
50
|
client_id: string | undefined;
|
|
51
51
|
ws_details: import("ws") | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../src/insights.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,oBAAY,YAAY,GAAG,UAAU,GAAG,0BAA0B,GAAG,gBAAgB,CAAC;AACtF,qBAAa,cAAc;IACzB,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;;CAQ1B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../src/insights.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,oBAAY,YAAY,GAAG,UAAU,GAAG,0BAA0B,GAAG,gBAAgB,CAAC;AACtF,qBAAa,cAAc;IACzB,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;;CAQ1B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,gBAAuB,YAAY,YAAY,OAAO,MAAM,EAAE,OAAO,CAAC,kBAW9F,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;EAKjG;AA0BD,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,kBAAkB;;;;;;;;;;;;;;;;;;;EAE/E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,aAAK,wBAAwB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAE3D,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,WAAW,UAAQ,CAAC;AACjC,eAAO,MAAM,OAAO,UAAQ,CAAC;AAC7B,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC;AAK7B,qBAAa,UAAU;IACrB,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC3C,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC/C,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACjD,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;gBAEvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,WAAc,EACvB,KAAK,WAAU,EACf,KAAK,UAAQ,EACb,MAAM,GAAE,wBAAwB,CAAC,QAAQ,CAAS;CASrD;AAGD,eAAO,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,aAAK,wBAAwB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AAE3D,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,WAAW,UAAQ,CAAC;AACjC,eAAO,MAAM,OAAO,UAAQ,CAAC;AAC7B,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,eAAO,MAAM,WAAW,IAAI,CAAC;AAK7B,qBAAa,UAAU;IACrB,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC3C,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAC/C,SAAS,EAAE,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACjD,KAAK,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;gBAEvC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,SAAS,WAAc,EACvB,KAAK,WAAU,EACf,KAAK,UAAQ,EACb,MAAM,GAAE,wBAAwB,CAAC,QAAQ,CAAS;CASrD;AAGD,eAAO,MAAM,QAAQ,YAA+E,CAAC;AAGrG,eAAO,MAAM,OAAO,YAA6E,CAAC;AAElG,oBAAY,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,MAAM,CAAC;AAE9G,eAAO,MAAM,YAAY;;;;;;;CAOxB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;CAyB9B,CAAC"}
|
package/dist/types/signing.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Secret, SignOptions } from 'jsonwebtoken';
|
|
2
|
-
import {
|
|
2
|
+
import { UR } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Creates the JWT token that can be used for a UserSession
|
|
5
5
|
* @method JWTUserToken
|
|
@@ -7,11 +7,11 @@ import { UnknownType } from './types';
|
|
|
7
7
|
* @private
|
|
8
8
|
* @param {Secret} apiSecret - API Secret key
|
|
9
9
|
* @param {string} userId - The user_id key in the JWT payload
|
|
10
|
-
* @param {
|
|
10
|
+
* @param {UR} [extraData] - Extra that should be part of the JWT token
|
|
11
11
|
* @param {SignOptions} [jwtOptions] - Options that can be past to jwt.sign
|
|
12
12
|
* @return {string} JWT Token
|
|
13
13
|
*/
|
|
14
|
-
export declare function JWTUserToken(apiSecret: Secret, userId: string, extraData?:
|
|
14
|
+
export declare function JWTUserToken(apiSecret: Secret, userId: string, extraData?: UR, jwtOptions?: SignOptions): string;
|
|
15
15
|
export declare function JWTServerToken(apiSecret: Secret, jwtOptions?: SignOptions): string;
|
|
16
16
|
export declare function UserFromToken(token: string): string;
|
|
17
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../src/signing.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../src/signing.ts"],"names":[],"mappings":"AAAA,OAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,EAAO,EAAE,UAAU,GAAE,WAAgB,UAuB/G;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,WAAgB,UAO7E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,UAS1C;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,UAMtC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,WAI7E"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Secret } from 'jsonwebtoken';
|
|
2
|
-
import { TokenOrProvider,
|
|
2
|
+
import { TokenOrProvider, UR, UserResponse } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* TokenManager
|
|
5
5
|
*
|
|
6
6
|
* Handles all the operations around user token.
|
|
7
7
|
*/
|
|
8
|
-
export declare class TokenManager<UserType extends
|
|
8
|
+
export declare class TokenManager<UserType extends UR = UR> {
|
|
9
9
|
loadTokenPromise: Promise<string> | null;
|
|
10
10
|
type: 'static' | 'provider';
|
|
11
11
|
secret?: Secret;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token_manager.d.ts","sourceRoot":"","sources":["../../src/token_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"token_manager.d.ts","sourceRoot":"","sources":["../../src/token_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5D;;;;GAIG;AACH,qBAAa,YAAY,CAAC,QAAQ,SAAS,EAAE,GAAG,EAAE;IAChD,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IACzC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,IAAI,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9B;;;;OAIG;gBACS,MAAM,CAAC,EAAE,MAAM;IAa3B;;;;;;OAMG;IACH,kBAAkB,oBAA2B,eAAe,QAAQ,aAAa,QAAQ,CAAC,mBAoBxF;IAEF;;;OAGG;IACH,KAAK,aAIH;IAGF,aAAa,oBAAqB,eAAe,QAAQ,aAAa,QAAQ,CAAC,UAsB7E;IAIF,UAAU,+BAA+B;IAIzC,SAAS,wBAcP;IAGF,QAAQ,2BAgBN;IAEF,QAAQ,gBAAgC;CACzC"}
|