@ryanrfox/sdk 0.0.2 → 2.0.3
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 +145 -29
- package/package.json +84 -8
- package/src/_esm/actions/index.d.ts +8 -0
- package/src/_esm/actions/index.d.ts.map +1 -0
- package/src/_esm/actions/index.js +8 -0
- package/src/_esm/actions/index.js.map +1 -0
- package/src/_esm/actions/sendTransactionBatch.d.ts +77 -0
- package/src/_esm/actions/sendTransactionBatch.d.ts.map +1 -0
- package/src/_esm/actions/sendTransactionBatch.js +245 -0
- package/src/_esm/actions/sendTransactionBatch.js.map +1 -0
- package/src/_esm/chains/chainConfig.d.ts +30 -0
- package/src/_esm/chains/chainConfig.d.ts.map +1 -0
- package/src/_esm/chains/chainConfig.js +30 -0
- package/src/_esm/chains/chainConfig.js.map +1 -0
- package/src/_esm/chains/index.d.ts +4 -0
- package/src/_esm/chains/index.d.ts.map +1 -0
- package/src/_esm/chains/index.js +4 -0
- package/src/_esm/chains/index.js.map +1 -0
- package/src/_esm/chains/radius.d.ts +64 -0
- package/src/_esm/chains/radius.d.ts.map +1 -0
- package/src/_esm/chains/radius.js +39 -0
- package/src/_esm/chains/radius.js.map +1 -0
- package/src/_esm/chains/radiusTestnet.d.ts +61 -0
- package/src/_esm/chains/radiusTestnet.d.ts.map +1 -0
- package/src/_esm/chains/radiusTestnet.js +45 -0
- package/src/_esm/chains/radiusTestnet.js.map +1 -0
- package/src/_esm/decorators/index.d.ts +8 -0
- package/src/_esm/decorators/index.d.ts.map +1 -0
- package/src/_esm/decorators/index.js +8 -0
- package/src/_esm/decorators/index.js.map +1 -0
- package/src/_esm/decorators/radius.d.ts +66 -0
- package/src/_esm/decorators/radius.d.ts.map +1 -0
- package/src/_esm/decorators/radius.js +36 -0
- package/src/_esm/decorators/radius.js.map +1 -0
- package/src/_esm/errors/account.d.ts +78 -0
- package/src/_esm/errors/account.d.ts.map +1 -0
- package/src/_esm/errors/account.js +97 -0
- package/src/_esm/errors/account.js.map +1 -0
- package/src/_esm/errors/base.d.ts +56 -0
- package/src/_esm/errors/base.d.ts.map +1 -0
- package/src/_esm/errors/base.js +51 -0
- package/src/_esm/errors/base.js.map +1 -0
- package/src/_esm/errors/contract.d.ts +51 -0
- package/src/_esm/errors/contract.d.ts.map +1 -0
- package/src/_esm/errors/contract.js +65 -0
- package/src/_esm/errors/contract.js.map +1 -0
- package/src/_esm/errors/index.d.ts +63 -0
- package/src/_esm/errors/index.d.ts.map +1 -0
- package/src/_esm/errors/index.js +40 -0
- package/src/_esm/errors/index.js.map +1 -0
- package/src/_esm/errors/transaction.d.ts +132 -0
- package/src/_esm/errors/transaction.d.ts.map +1 -0
- package/src/_esm/errors/transaction.js +143 -0
- package/src/_esm/errors/transaction.js.map +1 -0
- package/src/_esm/events/decodeEventLogs.d.ts +136 -0
- package/src/_esm/events/decodeEventLogs.d.ts.map +1 -0
- package/src/_esm/events/decodeEventLogs.js +93 -0
- package/src/_esm/events/decodeEventLogs.js.map +1 -0
- package/src/_esm/events/getLogs.d.ts +137 -0
- package/src/_esm/events/getLogs.d.ts.map +1 -0
- package/src/_esm/events/getLogs.js +171 -0
- package/src/_esm/events/getLogs.js.map +1 -0
- package/src/_esm/events/index.d.ts +17 -0
- package/src/_esm/events/index.d.ts.map +1 -0
- package/src/_esm/events/index.js +24 -0
- package/src/_esm/events/index.js.map +1 -0
- package/src/_esm/events/watchApproval.d.ts +184 -0
- package/src/_esm/events/watchApproval.d.ts.map +1 -0
- package/src/_esm/events/watchApproval.js +254 -0
- package/src/_esm/events/watchApproval.js.map +1 -0
- package/src/_esm/events/watchBlock.d.ts +192 -0
- package/src/_esm/events/watchBlock.d.ts.map +1 -0
- package/src/_esm/events/watchBlock.js +162 -0
- package/src/_esm/events/watchBlock.js.map +1 -0
- package/src/_esm/events/watchLogs.d.ts +128 -0
- package/src/_esm/events/watchLogs.d.ts.map +1 -0
- package/src/_esm/events/watchLogs.js +100 -0
- package/src/_esm/events/watchLogs.js.map +1 -0
- package/src/_esm/events/watchTransfer.d.ts +164 -0
- package/src/_esm/events/watchTransfer.d.ts.map +1 -0
- package/src/_esm/events/watchTransfer.js +234 -0
- package/src/_esm/events/watchTransfer.js.map +1 -0
- package/src/_esm/index.d.ts +16 -0
- package/src/_esm/index.d.ts.map +1 -0
- package/src/_esm/index.js +22 -0
- package/src/_esm/index.js.map +1 -0
- package/src/_esm/package.json +1 -0
- package/src/_esm/transport/index.d.ts +9 -0
- package/src/_esm/transport/index.d.ts.map +1 -0
- package/src/_esm/transport/index.js +9 -0
- package/src/_esm/transport/index.js.map +1 -0
- package/src/_esm/transport/interceptor.d.ts +48 -0
- package/src/_esm/transport/interceptor.d.ts.map +1 -0
- package/src/_esm/transport/interceptor.js +209 -0
- package/src/_esm/transport/interceptor.js.map +1 -0
- package/src/_esm/transport/types.d.ts +29 -0
- package/src/_esm/transport/types.d.ts.map +1 -0
- package/src/_esm/transport/types.js +2 -0
- package/src/_esm/transport/types.js.map +1 -0
- package/src/_esm/transport/websocket.d.ts +51 -0
- package/src/_esm/transport/websocket.d.ts.map +1 -0
- package/src/_esm/transport/websocket.js +70 -0
- package/src/_esm/transport/websocket.js.map +1 -0
- package/src/_types/actions/index.d.ts +8 -0
- package/src/_types/actions/index.d.ts.map +1 -0
- package/src/_types/actions/sendTransactionBatch.d.ts +77 -0
- package/src/_types/actions/sendTransactionBatch.d.ts.map +1 -0
- package/src/_types/chains/chainConfig.d.ts +30 -0
- package/src/_types/chains/chainConfig.d.ts.map +1 -0
- package/src/_types/chains/index.d.ts +4 -0
- package/src/_types/chains/index.d.ts.map +1 -0
- package/src/_types/chains/radius.d.ts +64 -0
- package/src/_types/chains/radius.d.ts.map +1 -0
- package/src/_types/chains/radiusTestnet.d.ts +61 -0
- package/src/_types/chains/radiusTestnet.d.ts.map +1 -0
- package/src/_types/decorators/index.d.ts +8 -0
- package/src/_types/decorators/index.d.ts.map +1 -0
- package/src/_types/decorators/radius.d.ts +66 -0
- package/src/_types/decorators/radius.d.ts.map +1 -0
- package/src/_types/errors/account.d.ts +78 -0
- package/src/_types/errors/account.d.ts.map +1 -0
- package/src/_types/errors/base.d.ts +56 -0
- package/src/_types/errors/base.d.ts.map +1 -0
- package/src/_types/errors/contract.d.ts +51 -0
- package/src/_types/errors/contract.d.ts.map +1 -0
- package/src/_types/errors/index.d.ts +63 -0
- package/src/_types/errors/index.d.ts.map +1 -0
- package/src/_types/errors/transaction.d.ts +132 -0
- package/src/_types/errors/transaction.d.ts.map +1 -0
- package/src/_types/events/decodeEventLogs.d.ts +136 -0
- package/src/_types/events/decodeEventLogs.d.ts.map +1 -0
- package/src/_types/events/getLogs.d.ts +137 -0
- package/src/_types/events/getLogs.d.ts.map +1 -0
- package/src/_types/events/index.d.ts +17 -0
- package/src/_types/events/index.d.ts.map +1 -0
- package/src/_types/events/watchApproval.d.ts +184 -0
- package/src/_types/events/watchApproval.d.ts.map +1 -0
- package/src/_types/events/watchBlock.d.ts +192 -0
- package/src/_types/events/watchBlock.d.ts.map +1 -0
- package/src/_types/events/watchLogs.d.ts +128 -0
- package/src/_types/events/watchLogs.d.ts.map +1 -0
- package/src/_types/events/watchTransfer.d.ts +164 -0
- package/src/_types/events/watchTransfer.d.ts.map +1 -0
- package/src/_types/index.d.ts +16 -0
- package/src/_types/index.d.ts.map +1 -0
- package/src/_types/transport/index.d.ts +9 -0
- package/src/_types/transport/index.d.ts.map +1 -0
- package/src/_types/transport/interceptor.d.ts +48 -0
- package/src/_types/transport/interceptor.d.ts.map +1 -0
- package/src/_types/transport/types.d.ts +29 -0
- package/src/_types/transport/types.d.ts.map +1 -0
- package/src/_types/transport/websocket.d.ts +51 -0
- package/src/_types/transport/websocket.d.ts.map +1 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Radius TypeScript SDK v2
|
|
3
|
+
*
|
|
4
|
+
* A viem-based SDK for interacting with the Radius platform.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export type { Abi, Address, Chain, Hash, Hex, LocalAccount, TransactionReceipt, Transport, } from 'viem';
|
|
9
|
+
export { createPublicClient, createWalletClient, http } from 'viem';
|
|
10
|
+
export { privateKeyToAccount } from 'viem/accounts';
|
|
11
|
+
export { type SendTransactionBatchParameters, type SendTransactionBatchReturnType, sendTransactionBatch, } from './actions/index.js';
|
|
12
|
+
export { MAX_GAS, radius, radiusTestnet } from './chains/index.js';
|
|
13
|
+
export { type RadiusWalletActions, radiusWalletActions } from './decorators/index.js';
|
|
14
|
+
export * from './errors/index.js';
|
|
15
|
+
export * from './transport/index.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACX,GAAG,EACH,OAAO,EACP,KAAK,EACL,IAAI,EACJ,GAAG,EACH,YAAY,EACZ,kBAAkB,EAClB,SAAS,GACT,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EACN,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACnC,oBAAoB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,KAAK,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGtF,cAAc,mBAAmB,CAAC;AAGlC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transport module for the Radius SDK.
|
|
3
|
+
* Provides HTTP request/response interceptors and middleware for
|
|
4
|
+
* JSON-RPC communication with Radius.
|
|
5
|
+
*/
|
|
6
|
+
export * from './interceptor.js';
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export * from './websocket.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../transport/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type Transport } from 'viem';
|
|
2
|
+
import type { Interceptor, Logger, RequestHandler } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* A RequestHandler implementation that intercepts HTTP requests and responses.
|
|
5
|
+
* Provides request logging and response modification capabilities.
|
|
6
|
+
*/
|
|
7
|
+
export declare class InterceptingRequestHandler implements RequestHandler {
|
|
8
|
+
private readonly interceptor?;
|
|
9
|
+
private readonly logger?;
|
|
10
|
+
private readonly proxied;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new InterceptingRequestHandler.
|
|
13
|
+
* @param interceptor Optional function to intercept and modify responses
|
|
14
|
+
* @param logger Optional logging function to record requests and responses
|
|
15
|
+
* @param proxied Underlying RequestHandler implementation (defaults to fetch-based implementation)
|
|
16
|
+
*/
|
|
17
|
+
constructor(interceptor?: Interceptor | undefined, logger?: Logger | undefined, proxied?: RequestHandler);
|
|
18
|
+
/**
|
|
19
|
+
* Sends a request and handles interception and logging of the response.
|
|
20
|
+
* @param request The HTTP request to send
|
|
21
|
+
* @returns The HTTP response, potentially modified by the interceptor
|
|
22
|
+
*/
|
|
23
|
+
handle(request: Request): Promise<Response>;
|
|
24
|
+
/**
|
|
25
|
+
* Parse the body of a request, cloning the request to avoid modifying the original.
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
28
|
+
private parseRequestBody;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Options for creating an intercepting transport.
|
|
32
|
+
*/
|
|
33
|
+
export interface InterceptingTransportOptions {
|
|
34
|
+
/** The RPC URL to connect to */
|
|
35
|
+
url: string;
|
|
36
|
+
/** Optional function to intercept and modify responses */
|
|
37
|
+
interceptor?: Interceptor;
|
|
38
|
+
/** Optional logging function */
|
|
39
|
+
logger?: Logger;
|
|
40
|
+
/** Request timeout in milliseconds. Default: 10000 (10 seconds) */
|
|
41
|
+
timeout?: number;
|
|
42
|
+
/** Number of retry attempts. Default: 3 */
|
|
43
|
+
retryCount?: number;
|
|
44
|
+
/** Base delay between retries in milliseconds. Default: 150 */
|
|
45
|
+
retryDelay?: number;
|
|
46
|
+
}
|
|
47
|
+
export declare function createInterceptingTransport(options: InterceptingTransportOptions): Transport;
|
|
48
|
+
//# sourceMappingURL=interceptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../transport/interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,MAAM,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEnE;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,cAAc;IAQ/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IATzB;;;;;OAKG;gBAEe,WAAW,CAAC,EAAE,WAAW,YAAA,EACzB,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,OAAO,GAAE,cAA4C;IAGvE;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4CjD;;;OAGG;YACW,gBAAgB;CAY9B;AAsBD;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC5C,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AA4CD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,4BAA4B,GAAG,SAAS,CAyE5F"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A logger function interface that matches the console.log function signature
|
|
3
|
+
* Used for logging JSON-RPC requests and responses
|
|
4
|
+
* @param message The log message to display
|
|
5
|
+
* @param data Optional structured data to include in the log
|
|
6
|
+
*/
|
|
7
|
+
export type Logger = (message: string, data?: Record<string, unknown>) => void;
|
|
8
|
+
/**
|
|
9
|
+
* An interceptor function for modifying JSON-RPC HTTP requests and responses
|
|
10
|
+
* This allows for custom handling, validation, or manipulation of RPC calls
|
|
11
|
+
* @param reqBody The stringified JSON-RPC request body
|
|
12
|
+
* @param response The HTTP response from the JSON-RPC server
|
|
13
|
+
* @returns A potentially modified response or the original response
|
|
14
|
+
*/
|
|
15
|
+
export type Interceptor = (reqBody: string, response: Response) => Promise<Response>;
|
|
16
|
+
/**
|
|
17
|
+
* An interface for making HTTP requests and receiving responses
|
|
18
|
+
* Handles the actual HTTP round-trip for JSON-RPC requests
|
|
19
|
+
*/
|
|
20
|
+
export interface RequestHandler {
|
|
21
|
+
/**
|
|
22
|
+
* Sends an HTTP request and returns the response
|
|
23
|
+
* @param request The HTTP request to send
|
|
24
|
+
* @returns A Promise that resolves to the HTTP response
|
|
25
|
+
* @throws Error if the request fails
|
|
26
|
+
*/
|
|
27
|
+
handle(request: Request): Promise<Response>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../transport/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAE/E;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAErF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC5C"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebSocket transport for Radius SDK.
|
|
3
|
+
* Provides a wrapper around viem's WebSocket transport with Radius-specific configuration.
|
|
4
|
+
*/
|
|
5
|
+
import { type Chain, type Transport } from 'viem';
|
|
6
|
+
/**
|
|
7
|
+
* Configuration for creating a WebSocket transport.
|
|
8
|
+
*/
|
|
9
|
+
export interface WebSocketTransportConfig {
|
|
10
|
+
/** The WebSocket URL (defaults to chain's WebSocket RPC URL) */
|
|
11
|
+
url?: string;
|
|
12
|
+
/** Maximum number of reconnection attempts (defaults to 3) */
|
|
13
|
+
reconnectAttempts?: number;
|
|
14
|
+
/** Reconnection delay in milliseconds (defaults to 1000) */
|
|
15
|
+
reconnectDelay?: number;
|
|
16
|
+
/** Keep-alive interval in milliseconds (optional) */
|
|
17
|
+
keepAlive?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Creates a WebSocket transport for use with Radius clients.
|
|
21
|
+
* Uses viem's webSocket transport under the hood with Radius-specific defaults.
|
|
22
|
+
*
|
|
23
|
+
* @param chain - The chain configuration (used to determine default WebSocket URL)
|
|
24
|
+
* @param config - Optional configuration for the WebSocket transport
|
|
25
|
+
* @returns A viem Transport configured for WebSocket connections
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import { createPublicClient } from 'viem';
|
|
30
|
+
* import { createWebSocketTransport } from '@radiustechsystems/sdk/transport';
|
|
31
|
+
* import { radiusTestnet } from '@radiustechsystems/sdk/chains';
|
|
32
|
+
*
|
|
33
|
+
* const transport = createWebSocketTransport(radiusTestnet, {
|
|
34
|
+
* reconnectAttempts: 5,
|
|
35
|
+
* reconnectDelay: 2000,
|
|
36
|
+
* });
|
|
37
|
+
*
|
|
38
|
+
* const client = createPublicClient({
|
|
39
|
+
* chain: radiusTestnet,
|
|
40
|
+
* transport,
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @remarks
|
|
45
|
+
* - The default WebSocket URL is derived from the chain configuration
|
|
46
|
+
* - For Radius Testnet, the default is: wss://rpc.testnet.radiustech.xyz
|
|
47
|
+
* - WebSocket connections are automatically managed by viem
|
|
48
|
+
* - Subscriptions are cleaned up automatically on disconnect
|
|
49
|
+
*/
|
|
50
|
+
export declare function createWebSocketTransport(chain: Chain, config?: WebSocketTransportConfig): Transport;
|
|
51
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../transport/websocket.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,SAAS,EAAa,MAAM,MAAM,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACxC,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,wBAAwB,GAC/B,SAAS,CAiCX"}
|