@atxp/server 0.2.5
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 +148 -0
- package/dist/atxpContext.d.ts +6 -0
- package/dist/atxpContext.d.ts.map +1 -0
- package/dist/atxpContext.js +41 -0
- package/dist/atxpContext.js.map +1 -0
- package/dist/atxpServer.d.ts +12 -0
- package/dist/atxpServer.d.ts.map +1 -0
- package/dist/atxpServer.js +101 -0
- package/dist/atxpServer.js.map +1 -0
- package/dist/getResource.d.ts +4 -0
- package/dist/getResource.d.ts.map +1 -0
- package/dist/getResource.js +17 -0
- package/dist/getResource.js.map +1 -0
- package/dist/http.d.ts +7 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +51 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/oAuthChallenge.d.ts +4 -0
- package/dist/oAuthChallenge.d.ts.map +1 -0
- package/dist/oAuthChallenge.js +39 -0
- package/dist/oAuthChallenge.js.map +1 -0
- package/dist/oAuthMetadata.d.ts +6 -0
- package/dist/oAuthMetadata.d.ts.map +1 -0
- package/dist/oAuthMetadata.js +41 -0
- package/dist/oAuthMetadata.js.map +1 -0
- package/dist/paymentServer.d.ts +68 -0
- package/dist/paymentServer.d.ts.map +1 -0
- package/dist/paymentServer.js +97 -0
- package/dist/paymentServer.js.map +1 -0
- package/dist/protectedResourceMetadata.d.ts +5 -0
- package/dist/protectedResourceMetadata.d.ts.map +1 -0
- package/dist/protectedResourceMetadata.js +40 -0
- package/dist/protectedResourceMetadata.js.map +1 -0
- package/dist/requirePayment.d.ts +3 -0
- package/dist/requirePayment.d.ts.map +1 -0
- package/dist/requirePayment.js +35 -0
- package/dist/requirePayment.js.map +1 -0
- package/dist/serverTestHelpers.d.ts +55 -0
- package/dist/serverTestHelpers.d.ts.map +1 -0
- package/dist/serverTestHelpers.js +88 -0
- package/dist/serverTestHelpers.js.map +1 -0
- package/dist/src/atxpContext.d.ts +6 -0
- package/dist/src/atxpContext.d.ts.map +1 -0
- package/dist/src/atxpContext.js +41 -0
- package/dist/src/atxpContext.js.map +1 -0
- package/dist/src/atxpServer.d.ts +12 -0
- package/dist/src/atxpServer.d.ts.map +1 -0
- package/dist/src/atxpServer.js +95 -0
- package/dist/src/atxpServer.js.map +1 -0
- package/dist/src/getResource.d.ts +4 -0
- package/dist/src/getResource.d.ts.map +1 -0
- package/dist/src/getResource.js +17 -0
- package/dist/src/getResource.js.map +1 -0
- package/dist/src/http.d.ts +7 -0
- package/dist/src/http.d.ts.map +1 -0
- package/dist/src/http.js +51 -0
- package/dist/src/http.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +5 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/oAuthChallenge.d.ts +4 -0
- package/dist/src/oAuthChallenge.d.ts.map +1 -0
- package/dist/src/oAuthChallenge.js +39 -0
- package/dist/src/oAuthChallenge.js.map +1 -0
- package/dist/src/oAuthMetadata.d.ts +6 -0
- package/dist/src/oAuthMetadata.d.ts.map +1 -0
- package/dist/src/oAuthMetadata.js +41 -0
- package/dist/src/oAuthMetadata.js.map +1 -0
- package/dist/src/paymentServer.d.ts +68 -0
- package/dist/src/paymentServer.d.ts.map +1 -0
- package/dist/src/paymentServer.js +97 -0
- package/dist/src/paymentServer.js.map +1 -0
- package/dist/src/protectedResourceMetadata.d.ts +5 -0
- package/dist/src/protectedResourceMetadata.d.ts.map +1 -0
- package/dist/src/protectedResourceMetadata.js +40 -0
- package/dist/src/protectedResourceMetadata.js.map +1 -0
- package/dist/src/requirePayment.d.ts +3 -0
- package/dist/src/requirePayment.d.ts.map +1 -0
- package/dist/src/requirePayment.js +35 -0
- package/dist/src/requirePayment.js.map +1 -0
- package/dist/src/serverTestHelpers.d.ts +55 -0
- package/dist/src/serverTestHelpers.d.ts.map +1 -0
- package/dist/src/serverTestHelpers.js +88 -0
- package/dist/src/serverTestHelpers.js.map +1 -0
- package/dist/src/token.d.ts +4 -0
- package/dist/src/token.d.ts.map +1 -0
- package/dist/src/token.js +36 -0
- package/dist/src/token.js.map +1 -0
- package/dist/src/types.d.ts +60 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +10 -0
- package/dist/src/types.js.map +1 -0
- package/dist/token.d.ts +4 -0
- package/dist/token.d.ts.map +1 -0
- package/dist/token.js +36 -0
- package/dist/token.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +60 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +10 -0
- package/dist/types.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverTestHelpers.js","sourceRoot":"","sources":["../../src/serverTestHelpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAElE,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAsChH"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { TokenProblem } from "./types.js";
|
|
2
|
+
export async function checkToken(config, resourceURL, req) {
|
|
3
|
+
const protocol = resourceURL.protocol;
|
|
4
|
+
const host = resourceURL.host;
|
|
5
|
+
const pathname = resourceURL.pathname;
|
|
6
|
+
const protectedResourceMetadataUrl = `${protocol}//${host}/.well-known/oauth-protected-resource${pathname}`;
|
|
7
|
+
const failure = {
|
|
8
|
+
passes: false,
|
|
9
|
+
resourceMetadataUrl: protectedResourceMetadataUrl,
|
|
10
|
+
};
|
|
11
|
+
// Extract the Bearer token from the Authorization header
|
|
12
|
+
const authHeader = req.headers.authorization;
|
|
13
|
+
if (!authHeader) {
|
|
14
|
+
return { ...failure, problem: TokenProblem.NO_TOKEN, data: null, token: null };
|
|
15
|
+
}
|
|
16
|
+
if (!authHeader.startsWith('Bearer ')) {
|
|
17
|
+
return { ...failure, problem: TokenProblem.NON_BEARER_AUTH_HEADER, data: null, token: null };
|
|
18
|
+
}
|
|
19
|
+
const token = authHeader.substring(7);
|
|
20
|
+
try {
|
|
21
|
+
const introspectionResult = await config.oAuthClient.introspectToken(config.server, token);
|
|
22
|
+
if (!introspectionResult.active) {
|
|
23
|
+
return { ...failure, problem: TokenProblem.INVALID_TOKEN, data: null, token };
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
passes: true,
|
|
27
|
+
data: introspectionResult,
|
|
28
|
+
token,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
config.logger.error(`Error during token introspection: ${error}`);
|
|
33
|
+
return { ...failure, problem: TokenProblem.INTROSPECT_ERROR, data: null, token };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/token.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,YAAY,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAkB,EAAE,WAAgB,EAAE,GAAoB;IACzF,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC9B,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,4BAA4B,GAAG,GAAG,QAAQ,KAAK,IAAI,wCAAwC,QAAQ,EAAE,CAAC;IAE5G,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,KAAc;QACtB,mBAAmB,EAAE,4BAA4B;KAClD,CAAC;IAEF,yDAAyD;IACzD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAA;IAC9E,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAA;IAC5F,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE3F,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,CAAA;QAC7E,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,mBAAmB;YACzB,KAAK;SACN,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QAClE,OAAO,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC;IACjF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { AuthorizationServerUrl, Currency, Logger, PaymentRequestData, Network, UrlString, OAuthDb, TokenData, OAuthResourceClient } from "@longrun/atxp-common";
|
|
2
|
+
export type McpMethod = 'notifications/cancelled' | 'initialize' | 'ping' | 'notifications/progress' | 'resources/list' | 'resources/templates/list' | 'resources/read' | 'notifications/resources/list_changed' | 'resources/subscribe' | 'resources/unsubscribe' | 'notifications/resources/updated' | 'prompts/list' | 'prompts/get' | 'notifications/prompts/list_changed' | 'tools/list' | 'tools/call' | 'notifications/tools/list_changed' | 'logging/setLevel' | 'notifications/message' | 'sampling/createMessage' | 'elicitation/create' | 'completion/complete' | 'roots/list' | 'notifications/roots/list_changed';
|
|
3
|
+
export type McpName = string;
|
|
4
|
+
export type McpNamePattern = McpName | '*';
|
|
5
|
+
export type McpOperation = `${McpMethod}` | `${McpMethod}:${McpName}`;
|
|
6
|
+
export type McpOperationPattern = McpOperation | '*' | `${McpMethod}:*`;
|
|
7
|
+
export type RefundErrors = boolean | 'nonMcpOnly';
|
|
8
|
+
export type Charge = Omit<PaymentRequestData, 'resource' | 'resourceName' | 'iss'>;
|
|
9
|
+
export type ChargeResponse = {
|
|
10
|
+
success: boolean;
|
|
11
|
+
requiredPayment: PaymentRequestData | null;
|
|
12
|
+
};
|
|
13
|
+
export type PaymentServer = {
|
|
14
|
+
charge: (args: Charge) => Promise<ChargeResponse>;
|
|
15
|
+
createPaymentRequest: (args: Charge) => Promise<string>;
|
|
16
|
+
};
|
|
17
|
+
export type ATXPConfig = {
|
|
18
|
+
destination: string;
|
|
19
|
+
mountPath: string;
|
|
20
|
+
currency: Currency;
|
|
21
|
+
network: Network;
|
|
22
|
+
server: AuthorizationServerUrl;
|
|
23
|
+
payeeName: string;
|
|
24
|
+
resource: UrlString | null;
|
|
25
|
+
allowHttp: boolean;
|
|
26
|
+
logger: Logger;
|
|
27
|
+
oAuthDb: OAuthDb;
|
|
28
|
+
oAuthClient: OAuthResourceClient;
|
|
29
|
+
paymentServer: PaymentServer;
|
|
30
|
+
atxpAuthClientToken: string | undefined;
|
|
31
|
+
};
|
|
32
|
+
export declare enum TokenProblem {
|
|
33
|
+
NO_TOKEN = "NO-TOKEN",
|
|
34
|
+
NON_BEARER_AUTH_HEADER = "NON-BEARER-AUTH-HEADER",
|
|
35
|
+
INVALID_TOKEN = "INVALID-TOKEN",
|
|
36
|
+
INVALID_AUDIENCE = "INVALID-AUDIENCE",
|
|
37
|
+
NON_SUFFICIENT_FUNDS = "NON-SUFFICIENT-FUNDS",
|
|
38
|
+
INTROSPECT_ERROR = "INTROSPECT-ERROR"
|
|
39
|
+
}
|
|
40
|
+
export type TokenCheckPass = {
|
|
41
|
+
passes: true;
|
|
42
|
+
token: string;
|
|
43
|
+
data: TokenData;
|
|
44
|
+
};
|
|
45
|
+
export type TokenCheckFail = {
|
|
46
|
+
passes: false;
|
|
47
|
+
problem: TokenProblem;
|
|
48
|
+
token: string | null;
|
|
49
|
+
data: TokenData | null;
|
|
50
|
+
resourceMetadataUrl: string | null;
|
|
51
|
+
};
|
|
52
|
+
export type TokenCheck = TokenCheckPass | TokenCheckFail;
|
|
53
|
+
export type ProtectedResourceMetadata = {
|
|
54
|
+
resource: URL;
|
|
55
|
+
resource_name: string;
|
|
56
|
+
authorization_servers: string[];
|
|
57
|
+
bearer_methods_supported: string[];
|
|
58
|
+
scopes_supported: string[];
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export var TokenProblem;
|
|
2
|
+
(function (TokenProblem) {
|
|
3
|
+
TokenProblem["NO_TOKEN"] = "NO-TOKEN";
|
|
4
|
+
TokenProblem["NON_BEARER_AUTH_HEADER"] = "NON-BEARER-AUTH-HEADER";
|
|
5
|
+
TokenProblem["INVALID_TOKEN"] = "INVALID-TOKEN";
|
|
6
|
+
TokenProblem["INVALID_AUDIENCE"] = "INVALID-AUDIENCE";
|
|
7
|
+
TokenProblem["NON_SUFFICIENT_FUNDS"] = "NON-SUFFICIENT-FUNDS";
|
|
8
|
+
TokenProblem["INTROSPECT_ERROR"] = "INTROSPECT-ERROR";
|
|
9
|
+
})(TokenProblem || (TokenProblem = {}));
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAoDA,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,qCAAqB,CAAA;IACrB,iEAAiD,CAAA;IACjD,+CAA+B,CAAA;IAC/B,qDAAqC,CAAA;IACrC,6DAA6C,CAAA;IAC7C,qDAAqC,CAAA;AACvC,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB"}
|
package/dist/token.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAElE,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAsChH"}
|
package/dist/token.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { TokenProblem } from "./types.js";
|
|
2
|
+
export async function checkToken(config, resourceURL, req) {
|
|
3
|
+
const protocol = resourceURL.protocol;
|
|
4
|
+
const host = resourceURL.host;
|
|
5
|
+
const pathname = resourceURL.pathname;
|
|
6
|
+
const protectedResourceMetadataUrl = `${protocol}//${host}/.well-known/oauth-protected-resource${pathname}`;
|
|
7
|
+
const failure = {
|
|
8
|
+
passes: false,
|
|
9
|
+
resourceMetadataUrl: protectedResourceMetadataUrl,
|
|
10
|
+
};
|
|
11
|
+
// Extract the Bearer token from the Authorization header
|
|
12
|
+
const authHeader = req.headers.authorization;
|
|
13
|
+
if (!authHeader) {
|
|
14
|
+
return { ...failure, problem: TokenProblem.NO_TOKEN, data: null, token: null };
|
|
15
|
+
}
|
|
16
|
+
if (!authHeader.startsWith('Bearer ')) {
|
|
17
|
+
return { ...failure, problem: TokenProblem.NON_BEARER_AUTH_HEADER, data: null, token: null };
|
|
18
|
+
}
|
|
19
|
+
const token = authHeader.substring(7);
|
|
20
|
+
try {
|
|
21
|
+
const introspectionResult = await config.oAuthClient.introspectToken(config.server, token);
|
|
22
|
+
if (!introspectionResult.active) {
|
|
23
|
+
return { ...failure, problem: TokenProblem.INVALID_TOKEN, data: null, token };
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
passes: true,
|
|
27
|
+
data: introspectionResult,
|
|
28
|
+
token,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
config.logger.error(`Error during token introspection: ${error}`);
|
|
33
|
+
return { ...failure, problem: TokenProblem.INTROSPECT_ERROR, data: null, token };
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,YAAY,EAAE,MAAM,YAAY,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAkB,EAAE,WAAgB,EAAE,GAAoB;IACzF,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAC9B,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,4BAA4B,GAAG,GAAG,QAAQ,KAAK,IAAI,wCAAwC,QAAQ,EAAE,CAAC;IAE5G,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,KAAc;QACtB,mBAAmB,EAAE,4BAA4B;KAClD,CAAC;IAEF,yDAAyD;IACzD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAA;IAC9E,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,sBAAsB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAA;IAC5F,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,mBAAmB,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE3F,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,CAAA;QAC7E,CAAC;QAED,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,mBAAmB;YACzB,KAAK;SACN,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;QAClE,OAAO,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC;IACjF,CAAC;AACH,CAAC"}
|