@nestm/storage 0.1.0-alpha.1 → 0.1.0-alpha.11
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/CHANGELOG.md +271 -0
- package/README.md +877 -25
- package/SECURITY.md +128 -0
- package/dist/ai-sdk/ai-sdk-file-workflow-tools.d.ts +37 -0
- package/dist/ai-sdk/ai-sdk-file-workflow-tools.d.ts.map +1 -0
- package/dist/ai-sdk/ai-sdk-file-workflow-tools.js +258 -0
- package/dist/ai-sdk/ai-sdk-file-workflow-tools.js.map +1 -0
- package/dist/ai-sdk/ai-sdk-workspace-tools.d.ts +91 -0
- package/dist/ai-sdk/ai-sdk-workspace-tools.d.ts.map +1 -0
- package/dist/ai-sdk/ai-sdk-workspace-tools.js +491 -0
- package/dist/ai-sdk/ai-sdk-workspace-tools.js.map +1 -0
- package/dist/ai-sdk/index.d.ts +3 -0
- package/dist/ai-sdk/index.d.ts.map +1 -0
- package/dist/ai-sdk/index.js +3 -0
- package/dist/ai-sdk/index.js.map +1 -0
- package/dist/bytes/index.d.ts +30 -0
- package/dist/bytes/index.d.ts.map +1 -0
- package/dist/bytes/index.js +96 -0
- package/dist/bytes/index.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/storage-staged-content.d.ts +37 -0
- package/dist/core/storage-staged-content.d.ts.map +1 -0
- package/dist/core/storage-staged-content.js +94 -0
- package/dist/core/storage-staged-content.js.map +1 -0
- package/dist/core/storage-streams.d.ts +19 -0
- package/dist/core/storage-streams.d.ts.map +1 -0
- package/dist/core/storage-streams.js +95 -0
- package/dist/core/storage-streams.js.map +1 -0
- package/dist/core/storage-text.d.ts +33 -0
- package/dist/core/storage-text.d.ts.map +1 -0
- package/dist/core/storage-text.js +98 -0
- package/dist/core/storage-text.js.map +1 -0
- package/dist/files-sdk/files-sdk.driver.d.ts +85 -3
- package/dist/files-sdk/files-sdk.driver.d.ts.map +1 -1
- package/dist/files-sdk/files-sdk.driver.js +1437 -37
- package/dist/files-sdk/files-sdk.driver.js.map +1 -1
- package/dist/files-sdk/fs/index.d.ts +42 -0
- package/dist/files-sdk/fs/index.d.ts.map +1 -0
- package/dist/files-sdk/fs/index.js +1117 -0
- package/dist/files-sdk/fs/index.js.map +1 -0
- package/dist/files-sdk/index.d.ts +1 -1
- package/dist/files-sdk/index.d.ts.map +1 -1
- package/dist/files-sdk/index.js.map +1 -1
- package/dist/files-sdk/memory.d.ts +7 -0
- package/dist/files-sdk/memory.d.ts.map +1 -0
- package/dist/files-sdk/memory.js +72 -0
- package/dist/files-sdk/memory.js.map +1 -0
- package/dist/files-sdk/provider/index.d.ts +58 -0
- package/dist/files-sdk/provider/index.d.ts.map +1 -0
- package/dist/files-sdk/provider/index.js +151 -0
- package/dist/files-sdk/provider/index.js.map +1 -0
- package/dist/files-sdk/s3/construction-metadata.d.ts +9 -0
- package/dist/files-sdk/s3/construction-metadata.d.ts.map +1 -0
- package/dist/files-sdk/s3/construction-metadata.js +24 -0
- package/dist/files-sdk/s3/construction-metadata.js.map +1 -0
- package/dist/files-sdk/s3/index.d.ts +54 -0
- package/dist/files-sdk/s3/index.d.ts.map +1 -0
- package/dist/files-sdk/s3/index.js +1505 -0
- package/dist/files-sdk/s3/index.js.map +1 -0
- package/dist/gateway/index.d.ts +1 -1
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/storage-gateway-fastify-parser.d.ts.map +1 -1
- package/dist/gateway/storage-gateway-fastify-parser.js.map +1 -1
- package/dist/gateway/storage-gateway.controller.d.ts +12 -11
- package/dist/gateway/storage-gateway.controller.d.ts.map +1 -1
- package/dist/gateway/storage-gateway.controller.js +240 -70
- package/dist/gateway/storage-gateway.controller.js.map +1 -1
- package/dist/gateway/storage-gateway.guard.d.ts.map +1 -1
- package/dist/gateway/storage-gateway.guard.js.map +1 -1
- package/dist/gateway/storage-gateway.module.d.ts.map +1 -1
- package/dist/gateway/storage-gateway.module.js +60 -1
- package/dist/gateway/storage-gateway.module.js.map +1 -1
- package/dist/gateway/storage-gateway.tokens.d.ts +1 -0
- package/dist/gateway/storage-gateway.tokens.d.ts.map +1 -1
- package/dist/gateway/storage-gateway.tokens.js +1 -0
- package/dist/gateway/storage-gateway.tokens.js.map +1 -1
- package/dist/gateway/storage-gateway.types.d.ts +53 -10
- package/dist/gateway/storage-gateway.types.d.ts.map +1 -1
- package/dist/gateway/storage-gateway.types.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/inject-storage.decorator.js.map +1 -1
- package/dist/storage-etag.d.ts +13 -0
- package/dist/storage-etag.d.ts.map +1 -0
- package/dist/storage-etag.js +31 -0
- package/dist/storage-etag.js.map +1 -0
- package/dist/storage-upload-control.d.ts.map +1 -1
- package/dist/storage.client.d.ts +15 -3
- package/dist/storage.client.d.ts.map +1 -1
- package/dist/storage.client.js +204 -2
- package/dist/storage.client.js.map +1 -1
- package/dist/storage.driver.d.ts +28 -1
- package/dist/storage.driver.d.ts.map +1 -1
- package/dist/storage.driver.js.map +1 -1
- package/dist/storage.error.d.ts +17 -10
- package/dist/storage.error.d.ts.map +1 -1
- package/dist/storage.error.js +47 -1
- package/dist/storage.error.js.map +1 -1
- package/dist/storage.module.d.ts.map +1 -1
- package/dist/storage.module.js.map +1 -1
- package/dist/storage.service.d.ts.map +1 -1
- package/dist/storage.service.js +28 -3
- package/dist/storage.service.js.map +1 -1
- package/dist/storage.tokens.js.map +1 -1
- package/dist/storage.types.d.ts +150 -1
- package/dist/storage.types.d.ts.map +1 -1
- package/dist/storage.types.js.map +1 -1
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/provider-conformance.d.ts +65 -0
- package/dist/testing/provider-conformance.d.ts.map +1 -0
- package/dist/testing/provider-conformance.js +869 -0
- package/dist/testing/provider-conformance.js.map +1 -0
- package/dist/workspace/index.d.ts +10 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +8 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/storage-file-catalog.types.d.ts +65 -0
- package/dist/workspace/storage-file-catalog.types.d.ts.map +1 -0
- package/dist/workspace/storage-file-catalog.types.js +2 -0
- package/dist/workspace/storage-file-catalog.types.js.map +1 -0
- package/dist/workspace/storage-file-workflow.d.ts +7 -0
- package/dist/workspace/storage-file-workflow.d.ts.map +1 -0
- package/dist/workspace/storage-file-workflow.js +440 -0
- package/dist/workspace/storage-file-workflow.js.map +1 -0
- package/dist/workspace/storage-file-workflow.protection.d.ts +31 -0
- package/dist/workspace/storage-file-workflow.protection.d.ts.map +1 -0
- package/dist/workspace/storage-file-workflow.protection.js +258 -0
- package/dist/workspace/storage-file-workflow.protection.js.map +1 -0
- package/dist/workspace/storage-file-workflow.types.d.ts +128 -0
- package/dist/workspace/storage-file-workflow.types.d.ts.map +1 -0
- package/dist/workspace/storage-file-workflow.types.js +8 -0
- package/dist/workspace/storage-file-workflow.types.js.map +1 -0
- package/dist/workspace/storage-workspace.cursor.d.ts +71 -0
- package/dist/workspace/storage-workspace.cursor.d.ts.map +1 -0
- package/dist/workspace/storage-workspace.cursor.js +408 -0
- package/dist/workspace/storage-workspace.cursor.js.map +1 -0
- package/dist/workspace/storage-workspace.d.ts +6 -0
- package/dist/workspace/storage-workspace.d.ts.map +1 -0
- package/dist/workspace/storage-workspace.error.d.ts +32 -0
- package/dist/workspace/storage-workspace.error.d.ts.map +1 -0
- package/dist/workspace/storage-workspace.error.js +75 -0
- package/dist/workspace/storage-workspace.error.js.map +1 -0
- package/dist/workspace/storage-workspace.js +849 -0
- package/dist/workspace/storage-workspace.js.map +1 -0
- package/dist/workspace/storage-workspace.path.d.ts +9 -0
- package/dist/workspace/storage-workspace.path.d.ts.map +1 -0
- package/dist/workspace/storage-workspace.path.js +68 -0
- package/dist/workspace/storage-workspace.path.js.map +1 -0
- package/dist/workspace/storage-workspace.types.d.ts +123 -0
- package/dist/workspace/storage-workspace.types.d.ts.map +1 -0
- package/dist/workspace/storage-workspace.types.js +22 -0
- package/dist/workspace/storage-workspace.types.js.map +1 -0
- package/package.json +94 -20
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const constructionMetadata = new WeakMap();
|
|
2
|
+
const conditionalRequestPermission = new WeakMap();
|
|
3
|
+
export function recordS3ConditionalRequestPermission(raw, enabled) {
|
|
4
|
+
const existing = conditionalRequestPermission.get(raw);
|
|
5
|
+
if (existing !== undefined && existing !== enabled) {
|
|
6
|
+
throw new TypeError('S3 conditional-request construction permission cannot be changed.');
|
|
7
|
+
}
|
|
8
|
+
conditionalRequestPermission.set(raw, enabled);
|
|
9
|
+
}
|
|
10
|
+
export function getS3ConditionalRequestPermission(raw) {
|
|
11
|
+
return conditionalRequestPermission.get(raw);
|
|
12
|
+
}
|
|
13
|
+
export function recordS3ConstructionMetadata(raw, metadata) {
|
|
14
|
+
const existing = constructionMetadata.get(raw);
|
|
15
|
+
if (existing !== undefined &&
|
|
16
|
+
existing.publicBaseUrlConfigured !== metadata.publicBaseUrlConfigured) {
|
|
17
|
+
throw new TypeError('S3 adapter construction metadata cannot be changed.');
|
|
18
|
+
}
|
|
19
|
+
constructionMetadata.set(raw, Object.freeze({ ...metadata }));
|
|
20
|
+
}
|
|
21
|
+
export function getS3ConstructionMetadata(raw) {
|
|
22
|
+
return constructionMetadata.get(raw);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=construction-metadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construction-metadata.js","sourceRoot":"","sources":["../../../src/files-sdk/s3/construction-metadata.ts"],"names":[],"mappings":"AAKA,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAGrC,CAAC;AACJ,MAAM,4BAA4B,GAAG,IAAI,OAAO,EAAmB,CAAC;AAEpE,MAAM,UAAU,oCAAoC,CAClD,GAAW,EACX,OAAgB;IAEhB,MAAM,QAAQ,GAAG,4BAA4B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACnD,MAAM,IAAI,SAAS,CACjB,mEAAmE,CACpE,CAAC;IACJ,CAAC;IACD,4BAA4B,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,GAAW;IAEX,OAAO,4BAA4B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,GAAW,EACX,QAAgC;IAEhC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/C,IACE,QAAQ,KAAK,SAAS;QACtB,QAAQ,CAAC,uBAAuB,KAAK,QAAQ,CAAC,uBAAuB,EACrE,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;IAC7E,CAAC;IACD,oBAAoB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,GAAW;IAEX,OAAO,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC","sourcesContent":["export interface S3ConstructionMetadata {\n /** Whether URL generation bypasses signing through a configured public origin. */\n readonly publicBaseUrlConfigured: boolean;\n}\n\nconst constructionMetadata = new WeakMap<\n object,\n Readonly<S3ConstructionMetadata>\n>();\nconst conditionalRequestPermission = new WeakMap<object, boolean>();\n\nexport function recordS3ConditionalRequestPermission(\n raw: object,\n enabled: boolean,\n): void {\n const existing = conditionalRequestPermission.get(raw);\n if (existing !== undefined && existing !== enabled) {\n throw new TypeError(\n 'S3 conditional-request construction permission cannot be changed.',\n );\n }\n conditionalRequestPermission.set(raw, enabled);\n}\n\nexport function getS3ConditionalRequestPermission(\n raw: object,\n): boolean | undefined {\n return conditionalRequestPermission.get(raw);\n}\n\nexport function recordS3ConstructionMetadata(\n raw: object,\n metadata: S3ConstructionMetadata,\n): void {\n const existing = constructionMetadata.get(raw);\n if (\n existing !== undefined &&\n existing.publicBaseUrlConfigured !== metadata.publicBaseUrlConfigured\n ) {\n throw new TypeError('S3 adapter construction metadata cannot be changed.');\n }\n constructionMetadata.set(raw, Object.freeze({ ...metadata }));\n}\n\nexport function getS3ConstructionMetadata(\n raw: object,\n): Readonly<S3ConstructionMetadata> | undefined {\n return constructionMetadata.get(raw);\n}\n"]}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { mapS3Error, type S3Adapter, type S3AdapterOptions } from 'files-sdk/s3';
|
|
2
|
+
import type { StorageCapabilities } from '../../storage.types.js';
|
|
3
|
+
import { type FilesSdkConditionalCopyAdapter, type FilesSdkConditionalDeleteAdapter, type FilesSdkConditionalReadAdapter, type FilesSdkConditionalUploadAdapter, type FilesSdkDriverOptions, type FilesSdkPhysicalKeyAdapter, type FilesSdkSignedUploadPolicyAdapter, type FilesSdkSignedDownloadPolicyAdapter, type FilesSdkStorageDriver } from '../files-sdk.driver.js';
|
|
4
|
+
export interface S3StorageDriverOptions extends Omit<FilesSdkDriverOptions<S3Adapter>, 'adapter'> {
|
|
5
|
+
adapter: S3AdapterOptions;
|
|
6
|
+
/**
|
|
7
|
+
* Exact, conformance-verified provider behavior. Native AWS S3 uses the
|
|
8
|
+
* built-in AWS profile when no endpoint override is present; an explicit
|
|
9
|
+
* native profile may only narrow that immutable ceiling. Endpoint overrides
|
|
10
|
+
* without an explicit profile force the whole driver read-only.
|
|
11
|
+
*/
|
|
12
|
+
providerProfile?: S3ProviderProfile;
|
|
13
|
+
}
|
|
14
|
+
type S3ProfileCapabilities = Pick<StorageCapabilities, 'conditionalCreate' | 'conditionalReplace' | 'conditionalDelete' | 'conditionalRead' | 'conditionalCopySource' | 'conditionalCopyDestination' | 'conditionalMultipartCompletion' | 'physicalKey' | 'signedUploadPolicy'>;
|
|
15
|
+
declare const verifiedS3ProviderProfile: unique symbol;
|
|
16
|
+
export interface S3ProviderProfileInput extends S3ProfileCapabilities {
|
|
17
|
+
/** Stable profile identity for configuration, diagnostics, and audit. */
|
|
18
|
+
readonly name: string;
|
|
19
|
+
/** Every S3-compatible profile must declare its complete-key byte budget. */
|
|
20
|
+
readonly physicalKey: NonNullable<S3ProfileCapabilities['physicalKey']>;
|
|
21
|
+
/** Constraints the provider proves; omission defaults both claims to false. */
|
|
22
|
+
readonly signedUploadPolicy?: NonNullable<S3ProfileCapabilities['signedUploadPolicy']>;
|
|
23
|
+
}
|
|
24
|
+
/** A validated profile created by {@link defineS3ProviderProfile}. */
|
|
25
|
+
export type S3ProviderProfile = Readonly<Omit<S3ProviderProfileInput, 'signedUploadPolicy'> & {
|
|
26
|
+
readonly signedUploadPolicy: NonNullable<S3ProfileCapabilities['signedUploadPolicy']>;
|
|
27
|
+
}> & {
|
|
28
|
+
readonly [verifiedS3ProviderProfile]: true;
|
|
29
|
+
};
|
|
30
|
+
/** Validates and deeply freezes an explicitly verified S3-compatible profile. */
|
|
31
|
+
export declare function defineS3ProviderProfile(profile: S3ProviderProfileInput): S3ProviderProfile;
|
|
32
|
+
export declare const AWS_S3_PROVIDER_PROFILE: S3ProviderProfile;
|
|
33
|
+
export declare const CLOUDFLARE_R2_PROVIDER_PROFILE: S3ProviderProfile;
|
|
34
|
+
type S3StorageAdapterBase = S3Adapter & FilesSdkPhysicalKeyAdapter & FilesSdkSignedDownloadPolicyAdapter & FilesSdkSignedUploadPolicyAdapter;
|
|
35
|
+
export type S3StorageAdapter = S3StorageAdapterBase & Partial<FilesSdkConditionalCopyAdapter & FilesSdkConditionalDeleteAdapter & FilesSdkConditionalReadAdapter & FilesSdkConditionalUploadAdapter>;
|
|
36
|
+
/** Constructs the upstream S3 adapter while retaining security-relevant metadata. */
|
|
37
|
+
export declare function s3(options: S3AdapterOptions): S3Adapter;
|
|
38
|
+
/**
|
|
39
|
+
* Adds only the exact operations declared by one verified provider profile.
|
|
40
|
+
* Each raw adapter may be decorated once so capability state cannot depend on
|
|
41
|
+
* profile application order. A native AWS SDK endpoint also bounds every
|
|
42
|
+
* explicit profile by the built-in AWS capability ceiling.
|
|
43
|
+
*/
|
|
44
|
+
export declare function withS3Capabilities(base: S3Adapter, options?: Pick<S3AdapterOptions, 'endpoint' | 'publicBaseUrl'> & {
|
|
45
|
+
providerProfile?: S3ProviderProfile;
|
|
46
|
+
}): S3StorageAdapter;
|
|
47
|
+
/**
|
|
48
|
+
* Creates the files-sdk S3 driver from the storage package's own dependency
|
|
49
|
+
* context and exposes only the operations in its verified provider profile.
|
|
50
|
+
*/
|
|
51
|
+
export declare function createS3StorageDriver(options: S3StorageDriverOptions): FilesSdkStorageDriver<S3StorageAdapter>;
|
|
52
|
+
export { mapS3Error };
|
|
53
|
+
export type { S3Adapter, S3AdapterOptions, S3Sdk } from 'files-sdk/s3';
|
|
54
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/files-sdk/s3/index.ts"],"names":[],"mappings":"AAwBA,OAAO,EACL,UAAU,EAEV,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAEV,mBAAmB,EAQpB,MAAM,wBAAwB,CAAC;AAUhC,OAAO,EAKL,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EACnC,KAAK,gCAAgC,EACrC,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,iCAAiC,EACtC,KAAK,mCAAmC,EACxC,KAAK,qBAAqB,EAG3B,MAAM,wBAAwB,CAAC;AAQhC,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAClD,qBAAqB,CAAC,SAAS,CAAC,EAChC,SAAS,CACV;IACC,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACrC;AAED,KAAK,qBAAqB,GAAG,IAAI,CAC/B,mBAAmB,EACjB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,iBAAiB,GACjB,uBAAuB,GACvB,4BAA4B,GAC5B,gCAAgC,GAChC,aAAa,GACb,oBAAoB,CACvB,CAAC;AAEF,QAAA,MAAM,yBAAyB,eAAsC,CAAC;AAGtE,MAAM,WAAW,sBAAuB,SAAQ,qBAAqB;IACnE,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC;IACxE,+EAA+E;IAC/E,QAAQ,CAAC,kBAAkB,CAAC,EAAE,WAAW,CACvC,qBAAqB,CAAC,oBAAoB,CAAC,CAC5C,CAAC;CACH;AAED,sEAAsE;AACtE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CACtC,IAAI,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,GAAG;IACnD,QAAQ,CAAC,kBAAkB,EAAE,WAAW,CACtC,qBAAqB,CAAC,oBAAoB,CAAC,CAC5C,CAAC;CACH,CACF,GAAG;IACF,QAAQ,CAAC,CAAC,yBAAyB,CAAC,EAAE,IAAI,CAAC;CAC5C,CAAC;AAWF,iFAAiF;AACjF,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,sBAAsB,GAC9B,iBAAiB,CAsLnB;AAiKD,eAAO,MAAM,uBAAuB,mBAelC,CAAC;AAEH,eAAO,MAAM,8BAA8B,mBAQzC,CAAC;AAQH,KAAK,oBAAoB,GAAG,SAAS,GACnC,0BAA0B,GAC1B,mCAAmC,GACnC,iCAAiC,CAAC;AAEpC,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GACjD,OAAO,CACL,8BAA8B,GAC5B,gCAAgC,GAChC,8BAA8B,GAC9B,gCAAgC,CACnC,CAAC;AA2oCJ,qFAAqF;AACrF,wBAAgB,EAAE,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA8BvD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,EACf,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,eAAe,CAAC,GAAG;IAC9D,eAAe,CAAC,EAAE,iBAAiB,CAAC;CAChC,GACL,gBAAgB,CAkblB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAAC,gBAAgB,CAAC,CAazC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC"}
|