@schemavaults/app-definitions 0.6.18 → 0.6.20
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/dist/get-hardcoded-api-server-domain.d.ts +5 -0
- package/dist/get-hardcoded-api-server-domain.js +17 -0
- package/dist/get-hardcoded-api-server-domain.js.map +1 -0
- package/dist/hardcoded-app-to-api-permissions.d.ts +6 -0
- package/dist/hardcoded-app-to-api-permissions.js +38 -0
- package/dist/hardcoded-app-to-api-permissions.js.map +1 -0
- package/dist/index.cjs +63 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SchemaVaultsApiServerDomainRef } from "./api-server-definition";
|
|
2
|
+
import type { ApiServerId } from "./api-server-id";
|
|
3
|
+
import type { SchemaVaultsAppEnvironment } from "./app-environments";
|
|
4
|
+
export declare function getHardcodedApiServerDomain(api_server_id: ApiServerId, environment: SchemaVaultsAppEnvironment): SchemaVaultsApiServerDomainRef;
|
|
5
|
+
export default getHardcodedApiServerDomain;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HARDCODED_CORE_SCHEMAVAULTS_API_SERVER_DOMAINS } from "./hardcoded-core-schemavaults-api-server-domains";
|
|
2
|
+
import { getHardcodedApiServer } from "./hardcoded-core-schemavaults-api-servers";
|
|
3
|
+
export function getHardcodedApiServerDomain(api_server_id, environment) {
|
|
4
|
+
const hardcodedApi = getHardcodedApiServer(api_server_id);
|
|
5
|
+
if (!hardcodedApi) {
|
|
6
|
+
throw new Error(`Failed to load hardcoded API server with ID '${api_server_id}'`);
|
|
7
|
+
}
|
|
8
|
+
const hardcodedDomain = HARDCODED_CORE_SCHEMAVAULTS_API_SERVER_DOMAINS.find((domain) => domain.api_server_id === api_server_id &&
|
|
9
|
+
domain.environment === environment &&
|
|
10
|
+
domain.hardcoded);
|
|
11
|
+
if (!hardcodedDomain) {
|
|
12
|
+
throw new Error(`Failed to find domain for hardcoded API server with ID '${api_server_id}' in environment '${environment}'`);
|
|
13
|
+
}
|
|
14
|
+
return hardcodedDomain;
|
|
15
|
+
}
|
|
16
|
+
export default getHardcodedApiServerDomain;
|
|
17
|
+
//# sourceMappingURL=get-hardcoded-api-server-domain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-hardcoded-api-server-domain.js","sourceRoot":"","sources":["../src/get-hardcoded-api-server-domain.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,8CAA8C,EAAE,MAAM,kDAAkD,CAAC;AAClH,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAElF,MAAM,UAAU,2BAA2B,CACzC,aAA0B,EAC1B,WAAuC;IAEvC,MAAM,YAAY,GAChB,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,gDAAgD,aAAa,GAAG,CACjE,CAAC;IACJ,CAAC;IACD,MAAM,eAAe,GAAG,8CAA8C,CAAC,IAAI,CACzE,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,aAAa,KAAK,aAAa;QACtC,MAAM,CAAC,WAAW,KAAK,WAAW;QAClC,MAAM,CAAC,SAAS,CACnB,CAAC;IACF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,2DAA2D,aAAa,qBAAqB,WAAW,GAAG,CAC5G,CAAC;IACJ,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,eAAe,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { HardcodedAppId } from "./hardcoded-core-schemavaults-apps";
|
|
2
|
+
import type { HardcodedApiServerId } from "./hardcoded-core-schemavaults-api-servers";
|
|
3
|
+
/** Check if a hardcoded app has permission to access a specific API server */
|
|
4
|
+
export declare function hasHardcodedAppToApiPermission(client_app_id: HardcodedAppId, api_server_id: HardcodedApiServerId): boolean;
|
|
5
|
+
/** Get all hardcoded API server IDs that a hardcoded app has permission to access */
|
|
6
|
+
export declare function getHardcodedApiServerIdsForHardcodedApp(client_app_id: HardcodedAppId): HardcodedApiServerId[];
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { SCHEMAVAULTS_AUTH_APP_DEFINITION, SCHEMAVAULTS_WEB, } from "./hardcoded-core-schemavaults-apps";
|
|
2
|
+
import { SCHEMAVAULTS_CLI } from "./hardcoded-core-schemavaults-apps";
|
|
3
|
+
import { SCHEMAVAULTS_MAIL_APP_DEFINITION } from "./hardcoded-core-schemavaults-apps";
|
|
4
|
+
import { SCHEMAVAULTS_REGISTRY_SERVER, SCHEMAVAULTS_MAIL_SERVER, isHardcodedApiServerId, } from "./hardcoded-core-schemavaults-api-servers";
|
|
5
|
+
import { isHardcodedAppId } from "./hardcoded-core-schemavaults-apps";
|
|
6
|
+
// Map of hardcoded app IDs to their permitted hardcoded API server IDs
|
|
7
|
+
const HARDCODED_APP_TO_API_PERMISSIONS = {
|
|
8
|
+
[SCHEMAVAULTS_WEB.app_id]: [
|
|
9
|
+
SCHEMAVAULTS_REGISTRY_SERVER.api_server_id,
|
|
10
|
+
SCHEMAVAULTS_MAIL_SERVER.api_server_id,
|
|
11
|
+
],
|
|
12
|
+
[SCHEMAVAULTS_CLI.app_id]: [
|
|
13
|
+
SCHEMAVAULTS_REGISTRY_SERVER.api_server_id,
|
|
14
|
+
SCHEMAVAULTS_MAIL_SERVER.api_server_id,
|
|
15
|
+
],
|
|
16
|
+
[SCHEMAVAULTS_MAIL_APP_DEFINITION.app_id]: [
|
|
17
|
+
SCHEMAVAULTS_MAIL_SERVER.api_server_id,
|
|
18
|
+
],
|
|
19
|
+
[SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id]: [],
|
|
20
|
+
};
|
|
21
|
+
/** Check if a hardcoded app has permission to access a specific API server */
|
|
22
|
+
export function hasHardcodedAppToApiPermission(client_app_id, api_server_id) {
|
|
23
|
+
if (!isHardcodedAppId(client_app_id)) {
|
|
24
|
+
throw new TypeError("hasHardcodedAppToApiPermission received non-hardcoded client app ID!");
|
|
25
|
+
}
|
|
26
|
+
else if (!isHardcodedApiServerId(api_server_id)) {
|
|
27
|
+
throw new TypeError("hasHardcodedAppToApiPermission received non-hardcoded API server ID!");
|
|
28
|
+
}
|
|
29
|
+
return (HARDCODED_APP_TO_API_PERMISSIONS[client_app_id].includes(api_server_id) ?? false);
|
|
30
|
+
}
|
|
31
|
+
/** Get all hardcoded API server IDs that a hardcoded app has permission to access */
|
|
32
|
+
export function getHardcodedApiServerIdsForHardcodedApp(client_app_id) {
|
|
33
|
+
if (!isHardcodedAppId(client_app_id)) {
|
|
34
|
+
throw new TypeError("hasHardcodedAppToApiPermission received non-hardcoded client app ID!");
|
|
35
|
+
}
|
|
36
|
+
return HARDCODED_APP_TO_API_PERMISSIONS[client_app_id] ?? [];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=hardcoded-app-to-api-permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hardcoded-app-to-api-permissions.js","sourceRoot":"","sources":["../src/hardcoded-app-to-api-permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gCAAgC,EAChC,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAGtE,uEAAuE;AACvE,MAAM,gCAAgC,GAGlC;IACF,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;QACzB,4BAA4B,CAAC,aAAa;QAC1C,wBAAwB,CAAC,aAAa;KACvC;IACD,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;QACzB,4BAA4B,CAAC,aAAa;QAC1C,wBAAwB,CAAC,aAAa;KACvC;IACD,CAAC,gCAAgC,CAAC,MAAM,CAAC,EAAE;QACzC,wBAAwB,CAAC,aAAa;KACvC;IACD,CAAC,gCAAgC,CAAC,MAAM,CAAC,EAAE,EAAE;CAC9C,CAAC;AAEF,8EAA8E;AAC9E,MAAM,UAAU,8BAA8B,CAC5C,aAA6B,EAC7B,aAAmC;IAEnC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,SAAS,CACjB,sEAAsE,CACvE,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,SAAS,CACjB,sEAAsE,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,CACL,gCAAgC,CAAC,aAAa,CAAC,CAAC,QAAQ,CACtD,aAAqC,CACtC,IAAI,KAAK,CACX,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,uCAAuC,CACrD,aAA6B;IAE7B,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,SAAS,CACjB,sEAAsE,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,gCAAgC,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -68,10 +68,13 @@ __export(src_exports, {
|
|
|
68
68
|
getAppEnvironment: () => getAppEnvironment,
|
|
69
69
|
getAuthServerUri: () => getAuthServerUri,
|
|
70
70
|
getHardcodedApiServer: () => getHardcodedApiServer,
|
|
71
|
+
getHardcodedApiServerDomain: () => getHardcodedApiServerDomain,
|
|
72
|
+
getHardcodedApiServerIdsForHardcodedApp: () => getHardcodedApiServerIdsForHardcodedApp,
|
|
71
73
|
getHardcodedApp: () => getHardcodedApp,
|
|
72
74
|
getHardcodedClientWebAppDomain: () => getHardcodedClientWebAppDomain,
|
|
73
75
|
hardcodedApiServerIdSchema: () => hardcodedApiServerIdSchema,
|
|
74
76
|
hardcodedAppIdSchema: () => hardcodedAppIdSchema,
|
|
77
|
+
hasHardcodedAppToApiPermission: () => hasHardcodedAppToApiPermission,
|
|
75
78
|
isHardcodedApiServerId: () => isHardcodedApiServerId,
|
|
76
79
|
isHardcodedAppId: () => isHardcodedAppId,
|
|
77
80
|
listApiServersQueryTypeSchema: () => listApiServersQueryTypeSchema,
|
|
@@ -4709,6 +4712,25 @@ var HARDCODED_CORE_SCHEMAVAULTS_API_SERVER_DOMAINS = [
|
|
|
4709
4712
|
...HARDCODED_SCHEMAVAULTS_AUTH_SERVER_DOMAINS
|
|
4710
4713
|
];
|
|
4711
4714
|
|
|
4715
|
+
// src/get-hardcoded-api-server-domain.ts
|
|
4716
|
+
function getHardcodedApiServerDomain(api_server_id, environment) {
|
|
4717
|
+
const hardcodedApi = getHardcodedApiServer(api_server_id);
|
|
4718
|
+
if (!hardcodedApi) {
|
|
4719
|
+
throw new Error(
|
|
4720
|
+
`Failed to load hardcoded API server with ID '${api_server_id}'`
|
|
4721
|
+
);
|
|
4722
|
+
}
|
|
4723
|
+
const hardcodedDomain = HARDCODED_CORE_SCHEMAVAULTS_API_SERVER_DOMAINS.find(
|
|
4724
|
+
(domain) => domain.api_server_id === api_server_id && domain.environment === environment && domain.hardcoded
|
|
4725
|
+
);
|
|
4726
|
+
if (!hardcodedDomain) {
|
|
4727
|
+
throw new Error(
|
|
4728
|
+
`Failed to find domain for hardcoded API server with ID '${api_server_id}' in environment '${environment}'`
|
|
4729
|
+
);
|
|
4730
|
+
}
|
|
4731
|
+
return hardcodedDomain;
|
|
4732
|
+
}
|
|
4733
|
+
|
|
4712
4734
|
// src/production-auth-server-url.ts
|
|
4713
4735
|
var PRODUCTION_AUTH_SERVER_URL = getHardcodedClientWebAppDomain(
|
|
4714
4736
|
SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id,
|
|
@@ -4847,6 +4869,44 @@ function getAuthServerUri(environment = getAppEnvironment()) {
|
|
|
4847
4869
|
|
|
4848
4870
|
// src/SCHEMAVAULTS_AUTH_APP_ID.ts
|
|
4849
4871
|
var SCHEMAVAULTS_AUTH_APP_ID = SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id;
|
|
4872
|
+
|
|
4873
|
+
// src/hardcoded-app-to-api-permissions.ts
|
|
4874
|
+
var HARDCODED_APP_TO_API_PERMISSIONS = {
|
|
4875
|
+
[SCHEMAVAULTS_WEB.app_id]: [
|
|
4876
|
+
SCHEMAVAULTS_REGISTRY_SERVER.api_server_id,
|
|
4877
|
+
SCHEMAVAULTS_MAIL_SERVER.api_server_id
|
|
4878
|
+
],
|
|
4879
|
+
[SCHEMAVAULTS_CLI.app_id]: [
|
|
4880
|
+
SCHEMAVAULTS_REGISTRY_SERVER.api_server_id,
|
|
4881
|
+
SCHEMAVAULTS_MAIL_SERVER.api_server_id
|
|
4882
|
+
],
|
|
4883
|
+
[SCHEMAVAULTS_MAIL_APP_DEFINITION.app_id]: [
|
|
4884
|
+
SCHEMAVAULTS_MAIL_SERVER.api_server_id
|
|
4885
|
+
],
|
|
4886
|
+
[SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id]: []
|
|
4887
|
+
};
|
|
4888
|
+
function hasHardcodedAppToApiPermission(client_app_id, api_server_id) {
|
|
4889
|
+
if (!isHardcodedAppId(client_app_id)) {
|
|
4890
|
+
throw new TypeError(
|
|
4891
|
+
"hasHardcodedAppToApiPermission received non-hardcoded client app ID!"
|
|
4892
|
+
);
|
|
4893
|
+
} else if (!isHardcodedApiServerId(api_server_id)) {
|
|
4894
|
+
throw new TypeError(
|
|
4895
|
+
"hasHardcodedAppToApiPermission received non-hardcoded API server ID!"
|
|
4896
|
+
);
|
|
4897
|
+
}
|
|
4898
|
+
return HARDCODED_APP_TO_API_PERMISSIONS[client_app_id].includes(
|
|
4899
|
+
api_server_id
|
|
4900
|
+
) ?? false;
|
|
4901
|
+
}
|
|
4902
|
+
function getHardcodedApiServerIdsForHardcodedApp(client_app_id) {
|
|
4903
|
+
if (!isHardcodedAppId(client_app_id)) {
|
|
4904
|
+
throw new TypeError(
|
|
4905
|
+
"hasHardcodedAppToApiPermission received non-hardcoded client app ID!"
|
|
4906
|
+
);
|
|
4907
|
+
}
|
|
4908
|
+
return HARDCODED_APP_TO_API_PERMISSIONS[client_app_id] ?? [];
|
|
4909
|
+
}
|
|
4850
4910
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4851
4911
|
0 && (module.exports = {
|
|
4852
4912
|
HARDCODED_CORE_SCHEMAVAULTS_API_SERVERS,
|
|
@@ -4897,10 +4957,13 @@ var SCHEMAVAULTS_AUTH_APP_ID = SCHEMAVAULTS_AUTH_APP_DEFINITION.app_id;
|
|
|
4897
4957
|
getAppEnvironment,
|
|
4898
4958
|
getAuthServerUri,
|
|
4899
4959
|
getHardcodedApiServer,
|
|
4960
|
+
getHardcodedApiServerDomain,
|
|
4961
|
+
getHardcodedApiServerIdsForHardcodedApp,
|
|
4900
4962
|
getHardcodedApp,
|
|
4901
4963
|
getHardcodedClientWebAppDomain,
|
|
4902
4964
|
hardcodedApiServerIdSchema,
|
|
4903
4965
|
hardcodedAppIdSchema,
|
|
4966
|
+
hasHardcodedAppToApiPermission,
|
|
4904
4967
|
isHardcodedApiServerId,
|
|
4905
4968
|
isHardcodedAppId,
|
|
4906
4969
|
listApiServersQueryTypeSchema,
|
package/dist/index.d.ts
CHANGED
|
@@ -21,9 +21,11 @@ export * from "./hardcoded-core-schemavaults-api-servers";
|
|
|
21
21
|
export type * from "./hardcoded-core-schemavaults-api-servers";
|
|
22
22
|
export * from "./hardcoded-core-schemavaults-api-server-domains";
|
|
23
23
|
export type * from "./hardcoded-core-schemavaults-api-server-domains";
|
|
24
|
+
export { getHardcodedApiServerDomain } from "./get-hardcoded-api-server-domain";
|
|
24
25
|
export { PRODUCTION_AUTH_SERVER_URL } from "./production-auth-server-url";
|
|
25
26
|
export { schemaVaultsAppEnvironments, schemaVaultsAppEnvironmentSchema, } from "./app-environments";
|
|
26
27
|
export type { SchemaVaultsAppEnvironment } from "./app-environments";
|
|
27
28
|
export { getAppEnvironment } from "./get-app-environment";
|
|
28
29
|
export { getAuthServerUri } from "./get-auth-server-uri";
|
|
29
30
|
export { SCHEMAVAULTS_AUTH_APP_ID } from "./SCHEMAVAULTS_AUTH_APP_ID";
|
|
31
|
+
export { hasHardcodedAppToApiPermission, getHardcodedApiServerIdsForHardcodedApp, } from "./hardcoded-app-to-api-permissions";
|
package/dist/index.js
CHANGED
|
@@ -10,9 +10,11 @@ export * from "./hardcoded-core-schemavaults-app-domains";
|
|
|
10
10
|
export { getHardcodedClientWebAppDomain } from "./get-hardcoded-client-web-app-domain";
|
|
11
11
|
export * from "./hardcoded-core-schemavaults-api-servers";
|
|
12
12
|
export * from "./hardcoded-core-schemavaults-api-server-domains";
|
|
13
|
+
export { getHardcodedApiServerDomain } from "./get-hardcoded-api-server-domain";
|
|
13
14
|
export { PRODUCTION_AUTH_SERVER_URL } from "./production-auth-server-url";
|
|
14
15
|
export { schemaVaultsAppEnvironments, schemaVaultsAppEnvironmentSchema, } from "./app-environments";
|
|
15
16
|
export { getAppEnvironment } from "./get-app-environment";
|
|
16
17
|
export { getAuthServerUri } from "./get-auth-server-uri";
|
|
17
18
|
export { SCHEMAVAULTS_AUTH_APP_ID } from "./SCHEMAVAULTS_AUTH_APP_ID";
|
|
19
|
+
export { hasHardcodedAppToApiPermission, getHardcodedApiServerIdsForHardcodedApp, } from "./hardcoded-app-to-api-permissions";
|
|
18
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AAGjC,cAAc,mCAAmC,CAAC;AAGlD,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EACL,qCAAqC,EACrC,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AAGjC,cAAc,0CAA0C,CAAC;AAGzD,cAAc,6BAA6B,CAAC;AAG5C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AAEvF,cAAc,2CAA2C,CAAC;AAE1D,cAAc,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AAGzB,OAAO,EACL,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AAGjC,cAAc,mCAAmC,CAAC;AAGlD,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EACL,qCAAqC,EACrC,oCAAoC,GACrC,MAAM,yBAAyB,CAAC;AAGjC,cAAc,0CAA0C,CAAC;AAGzD,cAAc,6BAA6B,CAAC;AAG5C,cAAc,oCAAoC,CAAC;AAEnD,cAAc,2CAA2C,CAAC;AAE1D,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AAEvF,cAAc,2CAA2C,CAAC;AAE1D,cAAc,kDAAkD,CAAC;AAEjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAEhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EACL,8BAA8B,EAC9B,uCAAuC,GACxC,MAAM,oCAAoC,CAAC"}
|