@qverisai/mcp 0.8.0 → 0.10.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/CHANGELOG.md +29 -1
- package/README.md +392 -385
- package/dist/api/client.d.ts +2 -2
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +42 -42
- package/dist/api/client.js.map +1 -1
- package/dist/http.d.ts +26 -5
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +115 -23
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +107 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +139 -47
- package/dist/index.js.map +1 -1
- package/dist/output-schemas.d.ts +12 -0
- package/dist/output-schemas.d.ts.map +1 -0
- package/dist/output-schemas.js +61 -0
- package/dist/output-schemas.js.map +1 -0
- package/dist/server-card.d.ts +1 -1
- package/dist/server-card.d.ts.map +1 -1
- package/dist/server-card.js +7 -5
- package/dist/server-card.js.map +1 -1
- package/dist/tools/audit-utils.d.ts.map +1 -1
- package/dist/tools/audit-utils.js +11 -16
- package/dist/tools/audit-utils.js.map +1 -1
- package/dist/tools/credits-ledger.d.ts +1 -2
- package/dist/tools/credits-ledger.d.ts.map +1 -1
- package/dist/tools/credits-ledger.js.map +1 -1
- package/dist/tools/execute.d.ts.map +1 -1
- package/dist/tools/execute.js.map +1 -1
- package/dist/tools/get-by-ids.d.ts.map +1 -1
- package/dist/tools/get-by-ids.js +1 -2
- package/dist/tools/get-by-ids.js.map +1 -1
- package/dist/tools/usage-history.d.ts +1 -2
- package/dist/tools/usage-history.d.ts.map +1 -1
- package/dist/tools/usage-history.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +17 -4
package/dist/api/client.d.ts
CHANGED
|
@@ -77,8 +77,8 @@ export declare class QverisClient {
|
|
|
77
77
|
}
|
|
78
78
|
/**
|
|
79
79
|
* Creates a Qveris client from environment variables.
|
|
80
|
-
* Reads the API key from QVERIS_API_KEY
|
|
81
|
-
*
|
|
80
|
+
* Reads the API key from QVERIS_API_KEY and an optional endpoint override from
|
|
81
|
+
* QVERIS_BASE_URL.
|
|
82
82
|
*/
|
|
83
83
|
export declare function createClientFromEnv(): QverisClient;
|
|
84
84
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAInB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAInB,MAAM,aAAa,CAAC;AAsDrB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,gBAAgB,CAAK;gBAEjB,MAAM,EAAE,kBAAkB;IAYtC;;;OAGG;IACH,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,8DAA8D;YAChD,KAAK;IAKnB;;OAEG;YACW,OAAO;IA2IrB;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAIlE;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IAI3E;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAKpF;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC;IAI3E;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;IAWpH;;OAEG;IACG,gBAAgB,CACpB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,qBAAqB,CAAC;CAUvE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAalD"}
|
package/dist/api/client.js
CHANGED
|
@@ -7,32 +7,42 @@
|
|
|
7
7
|
* @module api/client
|
|
8
8
|
*/
|
|
9
9
|
import { computeRetryDelayMs, DEFAULT_BASE_DELAY_MS, DEFAULT_MAX_DELAY_MS, parseRetryAfterMs, resolveMaxRetries, RETRYABLE_STATUS, } from '../retry.js';
|
|
10
|
-
|
|
11
|
-
const REGION_URLS = {
|
|
12
|
-
global: 'https://qveris.ai/api/v1',
|
|
13
|
-
cn: 'https://qveris.cn/api/v1',
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* Detect region from API key prefix.
|
|
17
|
-
* sk-cn-xxx -> cn, sk-xxx -> global
|
|
18
|
-
*/
|
|
19
|
-
function detectRegionFromKey(apiKey) {
|
|
20
|
-
return apiKey.startsWith('sk-cn-') ? 'cn' : 'global';
|
|
21
|
-
}
|
|
10
|
+
const DEFAULT_BASE_URL = 'https://qveris.ai/api/v1';
|
|
22
11
|
/**
|
|
23
12
|
* Resolve the base URL for the QVeris API.
|
|
24
|
-
* Priority: explicit baseUrl > QVERIS_BASE_URL env >
|
|
13
|
+
* Priority: explicit baseUrl > QVERIS_BASE_URL env > built-in default.
|
|
14
|
+
* API keys and QVERIS_REGION never affect endpoint selection.
|
|
25
15
|
*/
|
|
26
|
-
function resolveBaseUrl(
|
|
27
|
-
if (explicitBaseUrl)
|
|
28
|
-
return explicitBaseUrl
|
|
29
|
-
if (process.env.QVERIS_BASE_URL)
|
|
30
|
-
return process.env.QVERIS_BASE_URL
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
16
|
+
function resolveBaseUrl(explicitBaseUrl) {
|
|
17
|
+
if (explicitBaseUrl !== undefined)
|
|
18
|
+
return normalizeBaseUrl(explicitBaseUrl);
|
|
19
|
+
if (typeof process.env.QVERIS_BASE_URL === 'string') {
|
|
20
|
+
return normalizeBaseUrl(process.env.QVERIS_BASE_URL);
|
|
21
|
+
}
|
|
22
|
+
return DEFAULT_BASE_URL;
|
|
23
|
+
}
|
|
24
|
+
function normalizeBaseUrl(value) {
|
|
25
|
+
const candidate = value.trim();
|
|
26
|
+
if (!candidate)
|
|
27
|
+
throw new Error('Qveris API base URL must not be empty');
|
|
28
|
+
if (!/^https?:\/\/[^/?#\s\\]/i.test(candidate) || /\s/.test(candidate) || candidate.includes('\\')) {
|
|
29
|
+
throw new Error('Qveris API base URL must be a valid HTTP(S) URL');
|
|
30
|
+
}
|
|
31
|
+
let url;
|
|
32
|
+
try {
|
|
33
|
+
url = new URL(candidate);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
throw new Error('Qveris API base URL must be a valid HTTP(S) URL');
|
|
37
|
+
}
|
|
38
|
+
if (!['http:', 'https:'].includes(url.protocol) || !url.hostname) {
|
|
39
|
+
throw new Error('Qveris API base URL must be a valid HTTP(S) URL');
|
|
40
|
+
}
|
|
41
|
+
if (url.username || url.password || candidate.includes('?') || candidate.includes('#')) {
|
|
42
|
+
throw new Error('Qveris API base URL must not contain credentials, a query, or a fragment');
|
|
34
43
|
}
|
|
35
|
-
|
|
44
|
+
url.pathname = url.pathname.replace(/\/+$/, '');
|
|
45
|
+
return url.toString().replace(/\/$/, '');
|
|
36
46
|
}
|
|
37
47
|
/** Default timeout: 30s for search/inspect, 120s for execute */
|
|
38
48
|
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
@@ -69,8 +79,7 @@ export class QverisClient {
|
|
|
69
79
|
throw new Error('Qveris API key is required');
|
|
70
80
|
}
|
|
71
81
|
this.apiKey = config.apiKey;
|
|
72
|
-
|
|
73
|
-
this.baseUrl = resolveBaseUrl(config.apiKey, config.baseUrl);
|
|
82
|
+
this.baseUrl = resolveBaseUrl(config.baseUrl);
|
|
74
83
|
this.defaultTimeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
75
84
|
// Retries for 429/503: explicit config wins, then the env var (the MCP
|
|
76
85
|
// server itself is env-configured), then the default.
|
|
@@ -118,12 +127,13 @@ export class QverisClient {
|
|
|
118
127
|
for (let attempt = 0;; attempt++) {
|
|
119
128
|
const controller = new AbortController();
|
|
120
129
|
const timeout = setTimeout(() => controller.abort(), resolvedTimeoutMs);
|
|
130
|
+
// eslint-disable-next-line no-useless-assignment -- TS definite-assignment needs the init across try/finally
|
|
121
131
|
let retryDelayMs = null;
|
|
122
132
|
try {
|
|
123
133
|
const response = await fetch(url.toString(), {
|
|
124
134
|
method,
|
|
125
135
|
headers: {
|
|
126
|
-
|
|
136
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
127
137
|
'Content-Type': 'application/json',
|
|
128
138
|
},
|
|
129
139
|
body: body ? JSON.stringify(body) : undefined,
|
|
@@ -173,7 +183,7 @@ export class QverisClient {
|
|
|
173
183
|
}
|
|
174
184
|
else {
|
|
175
185
|
try {
|
|
176
|
-
return await response.json();
|
|
186
|
+
return (await response.json());
|
|
177
187
|
}
|
|
178
188
|
catch {
|
|
179
189
|
const error = {
|
|
@@ -259,20 +269,16 @@ export class QverisClient {
|
|
|
259
269
|
}
|
|
260
270
|
/**
|
|
261
271
|
* Creates a Qveris client from environment variables.
|
|
262
|
-
* Reads the API key from QVERIS_API_KEY
|
|
263
|
-
*
|
|
272
|
+
* Reads the API key from QVERIS_API_KEY and an optional endpoint override from
|
|
273
|
+
* QVERIS_BASE_URL.
|
|
264
274
|
*/
|
|
265
275
|
export function createClientFromEnv() {
|
|
266
276
|
const apiKey = process.env.QVERIS_API_KEY;
|
|
267
277
|
if (!apiKey) {
|
|
268
|
-
throw new Error('QVERIS_API_KEY environment variable is required.\n' +
|
|
269
|
-
'Global: https://qveris.ai/account?page=api-keys\n' +
|
|
270
|
-
'China: https://qveris.cn/account?page=api-keys');
|
|
278
|
+
throw new Error('QVERIS_API_KEY environment variable is required.\n' + 'Create one at https://qveris.ai/account?page=api-keys');
|
|
271
279
|
}
|
|
272
280
|
const client = new QverisClient({ apiKey });
|
|
273
|
-
|
|
274
|
-
const effectiveUrl = resolveBaseUrl(apiKey);
|
|
275
|
-
console.error(`Region: ${region} (${effectiveUrl})`);
|
|
281
|
+
console.error(`API endpoint: ${resolveBaseUrl()}`);
|
|
276
282
|
return client;
|
|
277
283
|
}
|
|
278
284
|
function withErrorContext(context, errorType, httpStatus, requestId) {
|
|
@@ -285,16 +291,10 @@ function withErrorContext(context, errorType, httpStatus, requestId) {
|
|
|
285
291
|
}
|
|
286
292
|
function extractRequestId(response) {
|
|
287
293
|
const headers = response.headers;
|
|
288
|
-
return (headers?.get('x-request-id') ??
|
|
289
|
-
headers?.get('x-qveris-request-id') ??
|
|
290
|
-
headers?.get('x-correlation-id') ??
|
|
291
|
-
undefined);
|
|
294
|
+
return (headers?.get('x-request-id') ?? headers?.get('x-qveris-request-id') ?? headers?.get('x-correlation-id') ?? undefined);
|
|
292
295
|
}
|
|
293
296
|
function isApiError(error) {
|
|
294
|
-
return
|
|
295
|
-
error !== null &&
|
|
296
|
-
'status' in error &&
|
|
297
|
-
'message' in error);
|
|
297
|
+
return typeof error === 'object' && error !== null && 'status' in error && 'message' in error;
|
|
298
298
|
}
|
|
299
299
|
function getErrorMessage(error, fallback) {
|
|
300
300
|
if (error instanceof Error && error.message)
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/http.d.ts
CHANGED
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
* {@link StreamableHTTPServerTransport} (and its own Qveris {@link Server}),
|
|
10
10
|
* keyed by the `Mcp-Session-Id` header the SDK assigns on `initialize`.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Embedders may require a bearer per session and receive it only in the
|
|
13
|
+
* asynchronous server factory. The transport binds an irreversible credential
|
|
14
|
+
* fingerprint to the MCP session so later requests cannot switch identities.
|
|
15
|
+
* Validation and client construction remain the embedding service's policy.
|
|
16
16
|
*
|
|
17
17
|
* @module @qverisai/mcp/http
|
|
18
18
|
*/
|
|
@@ -36,6 +36,8 @@ export interface TransportConfig {
|
|
|
36
36
|
enableJsonResponse: boolean;
|
|
37
37
|
/** Shared bearer token required on the MCP endpoint; unset = no inbound auth. */
|
|
38
38
|
authToken?: string;
|
|
39
|
+
/** Require a caller bearer and bind it to each new MCP session. Embedders set this directly. */
|
|
40
|
+
requireSessionBearer?: boolean;
|
|
39
41
|
/** Allow a non-loopback bind without a token (auth delegated externally). */
|
|
40
42
|
allowUnauthenticated: boolean;
|
|
41
43
|
/** Max accepted request body size in bytes (413 beyond it). */
|
|
@@ -45,6 +47,25 @@ export interface TransportConfig {
|
|
|
45
47
|
/** Public origin (e.g. behind a TLS proxy) used in discovery documents. */
|
|
46
48
|
publicUrl?: string;
|
|
47
49
|
}
|
|
50
|
+
/** Credential context supplied only while constructing a new MCP session. */
|
|
51
|
+
export interface HttpSessionAuth {
|
|
52
|
+
/** Present only when requireSessionBearer is enabled. Never logged or persisted by the transport. */
|
|
53
|
+
bearerToken?: string;
|
|
54
|
+
}
|
|
55
|
+
/** The embedding service rejected the credential supplied for a new session. */
|
|
56
|
+
export declare class SessionAuthenticationError extends Error {
|
|
57
|
+
readonly name = "SessionAuthenticationError";
|
|
58
|
+
}
|
|
59
|
+
/** The embedding service could not validate a supplied credential safely. */
|
|
60
|
+
export declare class SessionAuthenticationUnavailableError extends Error {
|
|
61
|
+
readonly name = "SessionAuthenticationUnavailableError";
|
|
62
|
+
}
|
|
63
|
+
/** The embedding service rate-limited creation of a new authenticated session. */
|
|
64
|
+
export declare class SessionRateLimitError extends Error {
|
|
65
|
+
readonly name = "SessionRateLimitError";
|
|
66
|
+
readonly retryAfterSeconds: number;
|
|
67
|
+
constructor(message: string, retryAfterSeconds?: number);
|
|
68
|
+
}
|
|
48
69
|
/**
|
|
49
70
|
* Resolve the transport configuration from environment and CLI flags.
|
|
50
71
|
*
|
|
@@ -74,5 +95,5 @@ export interface RunningHttpServer {
|
|
|
74
95
|
* @throws if binding a non-loopback host without an auth token and without an
|
|
75
96
|
* explicit opt-out (fail-closed).
|
|
76
97
|
*/
|
|
77
|
-
export declare function startHttpServer(config: TransportConfig, makeServer: (sessionId: string) => Server
|
|
98
|
+
export declare function startHttpServer(config: TransportConfig, makeServer: (sessionId: string, auth: HttpSessionAuth) => Server | Promise<Server>, cardInfo?: ServerCardInfo, logger?: (message: string) => void): Promise<RunningHttpServer>;
|
|
78
99
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAsC,KAAK,MAAM,IAAI,UAAU,EAAuB,MAAM,WAAW,CAAC;AAG/G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAIxE,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAE1B,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iFAAiF;IACjF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,yEAAyE;IACzE,4BAA4B,EAAE,OAAO,CAAC;IACtC,oEAAoE;IACpE,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,6EAA6E;IAC7E,oBAAoB,EAAE,OAAO,CAAC;IAC9B,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,gFAAgF;AAChF,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,SAAkB,IAAI,gCAAgC;CACvD;AAED,6EAA6E;AAC7E,qBAAa,qCAAsC,SAAQ,KAAK;IAC9D,SAAkB,IAAI,2CAA2C;CAClE;AAED,kFAAkF;AAClF,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,SAAkB,IAAI,2BAA2B;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,iBAAiB,SAAK;CAKpD;AAmED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,eAAe,CA8CnG;AAuED,uCAAuC;AACvC,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,EAClF,QAAQ,CAAC,EAAE,cAAc,EACzB,MAAM,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAiD,GAC7E,OAAO,CAAC,iBAAiB,CAAC,CA0V5B"}
|
package/dist/http.js
CHANGED
|
@@ -9,18 +9,36 @@
|
|
|
9
9
|
* {@link StreamableHTTPServerTransport} (and its own Qveris {@link Server}),
|
|
10
10
|
* keyed by the `Mcp-Session-Id` header the SDK assigns on `initialize`.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Embedders may require a bearer per session and receive it only in the
|
|
13
|
+
* asynchronous server factory. The transport binds an irreversible credential
|
|
14
|
+
* fingerprint to the MCP session so later requests cannot switch identities.
|
|
15
|
+
* Validation and client construction remain the embedding service's policy.
|
|
16
16
|
*
|
|
17
17
|
* @module @qverisai/mcp/http
|
|
18
18
|
*/
|
|
19
19
|
import { createHash, randomUUID, timingSafeEqual } from 'node:crypto';
|
|
20
|
-
import { createServer
|
|
20
|
+
import { createServer } from 'node:http';
|
|
21
21
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
22
22
|
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
23
23
|
import { buildCatalog, buildServerCard, CATALOG_PATH, SERVER_CARD_MEDIA_TYPE, } from './server-card.js';
|
|
24
|
+
/** The embedding service rejected the credential supplied for a new session. */
|
|
25
|
+
export class SessionAuthenticationError extends Error {
|
|
26
|
+
name = 'SessionAuthenticationError';
|
|
27
|
+
}
|
|
28
|
+
/** The embedding service could not validate a supplied credential safely. */
|
|
29
|
+
export class SessionAuthenticationUnavailableError extends Error {
|
|
30
|
+
name = 'SessionAuthenticationUnavailableError';
|
|
31
|
+
}
|
|
32
|
+
/** The embedding service rate-limited creation of a new authenticated session. */
|
|
33
|
+
export class SessionRateLimitError extends Error {
|
|
34
|
+
name = 'SessionRateLimitError';
|
|
35
|
+
retryAfterSeconds;
|
|
36
|
+
constructor(message, retryAfterSeconds = 60) {
|
|
37
|
+
super(message);
|
|
38
|
+
this.retryAfterSeconds =
|
|
39
|
+
Number.isFinite(retryAfterSeconds) && retryAfterSeconds > 0 ? Math.min(86_400, Math.ceil(retryAfterSeconds)) : 60;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
24
42
|
const DEFAULT_PORT = 3000;
|
|
25
43
|
const DEFAULT_HOST = '127.0.0.1';
|
|
26
44
|
const DEFAULT_PATH = '/mcp';
|
|
@@ -78,7 +96,10 @@ function hasFlag(argv, name) {
|
|
|
78
96
|
// hostname like `127.example.com`.
|
|
79
97
|
const IPV4_LOOPBACK = /^127(?:\.(?:0|[1-9]\d?|1\d\d|2[0-4]\d|25[0-5])){3}$/;
|
|
80
98
|
function isLoopbackHost(host) {
|
|
81
|
-
const h = host
|
|
99
|
+
const h = host
|
|
100
|
+
.trim()
|
|
101
|
+
.toLowerCase()
|
|
102
|
+
.replace(/^\[|\]$/g, ''); // strip IPv6 brackets
|
|
82
103
|
return h === 'localhost' || h === '::1' || IPV4_LOOPBACK.test(h);
|
|
83
104
|
}
|
|
84
105
|
/**
|
|
@@ -121,6 +142,7 @@ export function resolveTransportConfig(env, argv = []) {
|
|
|
121
142
|
enableDnsRebindingProtection: parseBool(env.QVERIS_MCP_DNS_REBINDING_PROTECTION, true),
|
|
122
143
|
enableJsonResponse: parseBool(env.QVERIS_MCP_HTTP_JSON, false),
|
|
123
144
|
authToken: env.QVERIS_MCP_HTTP_AUTH_TOKEN?.trim() || undefined,
|
|
145
|
+
requireSessionBearer: false,
|
|
124
146
|
allowUnauthenticated: parseBool(env.QVERIS_MCP_HTTP_ALLOW_UNAUTHENTICATED, false),
|
|
125
147
|
maxBodyBytes: parsePositiveInt(env.QVERIS_MCP_MAX_BODY_BYTES, DEFAULT_MAX_BODY_BYTES),
|
|
126
148
|
sessionTimeoutMs: parsePositiveInt(env.QVERIS_MCP_SESSION_TIMEOUT_MS, DEFAULT_SESSION_TIMEOUT_MS),
|
|
@@ -171,18 +193,30 @@ function jsonRpcError(id, code, message) {
|
|
|
171
193
|
}
|
|
172
194
|
/** Constant-time bearer check against the configured token. */
|
|
173
195
|
function bearerMatches(authHeader, token) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
const prefix = 'bearer ';
|
|
177
|
-
if (!authHeader.toLowerCase().startsWith(prefix))
|
|
196
|
+
const provided = readBearerToken(authHeader);
|
|
197
|
+
if (!provided)
|
|
178
198
|
return false;
|
|
179
|
-
const provided = authHeader.slice(prefix.length).trim();
|
|
180
199
|
// Compare fixed-length SHA-256 digests so the comparison is constant-time
|
|
181
200
|
// *and* doesn't leak the expected token's length via an early length check.
|
|
182
201
|
const providedHash = createHash('sha256').update(provided).digest();
|
|
183
202
|
const expectedHash = createHash('sha256').update(token).digest();
|
|
184
203
|
return timingSafeEqual(providedHash, expectedHash);
|
|
185
204
|
}
|
|
205
|
+
function readBearerToken(authHeader) {
|
|
206
|
+
if (!authHeader)
|
|
207
|
+
return undefined;
|
|
208
|
+
const match = /^Bearer\s+(.+)$/i.exec(authHeader);
|
|
209
|
+
const token = match?.[1]?.trim();
|
|
210
|
+
return token || undefined;
|
|
211
|
+
}
|
|
212
|
+
function credentialFingerprint(token) {
|
|
213
|
+
return createHash('sha256').update(token).digest();
|
|
214
|
+
}
|
|
215
|
+
function credentialMatches(fingerprint, token) {
|
|
216
|
+
if (!fingerprint || !token)
|
|
217
|
+
return false;
|
|
218
|
+
return timingSafeEqual(fingerprint, credentialFingerprint(token));
|
|
219
|
+
}
|
|
186
220
|
/**
|
|
187
221
|
* Start the Streamable HTTP server.
|
|
188
222
|
*
|
|
@@ -198,12 +232,18 @@ function bearerMatches(authHeader, token) {
|
|
|
198
232
|
*/
|
|
199
233
|
export async function startHttpServer(config, makeServer, cardInfo, logger = (message) => process.stderr.write(message)) {
|
|
200
234
|
const nonLoopback = !isLoopbackHost(config.host);
|
|
201
|
-
if (
|
|
235
|
+
if (config.requireSessionBearer && config.authToken) {
|
|
236
|
+
throw new Error('Shared authToken cannot be combined with per-session bearer authentication.');
|
|
237
|
+
}
|
|
238
|
+
if (config.requireSessionBearer && config.allowUnauthenticated) {
|
|
239
|
+
throw new Error('allowUnauthenticated cannot be enabled with per-session bearer authentication.');
|
|
240
|
+
}
|
|
241
|
+
if (nonLoopback && !config.requireSessionBearer && !config.authToken && !config.allowUnauthenticated) {
|
|
202
242
|
throw new Error(`Refusing to start: HTTP transport is binding a non-loopback host (${config.host}) with no authentication. ` +
|
|
203
243
|
`Set QVERIS_MCP_HTTP_AUTH_TOKEN to require a bearer token, or set ` +
|
|
204
244
|
`QVERIS_MCP_HTTP_ALLOW_UNAUTHENTICATED=true if an external layer (proxy/gateway) authenticates requests.`);
|
|
205
245
|
}
|
|
206
|
-
if (nonLoopback && !config.authToken) {
|
|
246
|
+
if (nonLoopback && !config.requireSessionBearer && !config.authToken) {
|
|
207
247
|
logger('[qveris] WARNING: HTTP transport exposed on a non-loopback host without an auth token. ' +
|
|
208
248
|
'Ensure an external auth layer protects the endpoint.\n');
|
|
209
249
|
}
|
|
@@ -218,6 +258,7 @@ export async function startHttpServer(config, makeServer, cardInfo, logger = (me
|
|
|
218
258
|
`endpoint (${reservedPaths.join(', ')}) and would shadow the MCP transport; choose a different path.`);
|
|
219
259
|
}
|
|
220
260
|
const transports = new Map();
|
|
261
|
+
const sessionCredentialFingerprints = new Map();
|
|
221
262
|
const lastSeen = new Map();
|
|
222
263
|
const inflight = new Map(); // requests currently being handled per session
|
|
223
264
|
let boundPort = config.port;
|
|
@@ -238,20 +279,18 @@ export async function startHttpServer(config, makeServer, cardInfo, logger = (me
|
|
|
238
279
|
// allowedHosts. Build the effective list once the real port is known so DNS
|
|
239
280
|
// rebinding protection works even when config.port is 0 (ephemeral).
|
|
240
281
|
const effectiveAllowedHosts = () => {
|
|
241
|
-
const base = [
|
|
242
|
-
`${config.host}:${boundPort}`,
|
|
243
|
-
`localhost:${boundPort}`,
|
|
244
|
-
`127.0.0.1:${boundPort}`,
|
|
245
|
-
];
|
|
282
|
+
const base = [`${config.host}:${boundPort}`, `localhost:${boundPort}`, `127.0.0.1:${boundPort}`];
|
|
246
283
|
return [...new Set([...base, ...config.allowedHosts])];
|
|
247
284
|
};
|
|
248
285
|
const evict = (sessionId) => {
|
|
249
286
|
lastSeen.delete(sessionId);
|
|
250
287
|
inflight.delete(sessionId);
|
|
288
|
+
sessionCredentialFingerprints.delete(sessionId);
|
|
251
289
|
if (transports.get(sessionId))
|
|
252
290
|
transports.delete(sessionId);
|
|
253
291
|
};
|
|
254
|
-
const createTransport = async () => {
|
|
292
|
+
const createTransport = async (auth) => {
|
|
293
|
+
const fingerprint = auth.bearerToken ? credentialFingerprint(auth.bearerToken) : undefined;
|
|
255
294
|
const transport = new StreamableHTTPServerTransport({
|
|
256
295
|
sessionIdGenerator: () => randomUUID(),
|
|
257
296
|
enableJsonResponse: config.enableJsonResponse,
|
|
@@ -260,6 +299,8 @@ export async function startHttpServer(config, makeServer, cardInfo, logger = (me
|
|
|
260
299
|
allowedOrigins: config.allowedOrigins,
|
|
261
300
|
onsessioninitialized: (sessionId) => {
|
|
262
301
|
transports.set(sessionId, transport);
|
|
302
|
+
if (fingerprint)
|
|
303
|
+
sessionCredentialFingerprints.set(sessionId, fingerprint);
|
|
263
304
|
lastSeen.set(sessionId, Date.now());
|
|
264
305
|
logger(`[qveris] MCP session initialized: ${sessionId}\n`);
|
|
265
306
|
},
|
|
@@ -271,9 +312,18 @@ export async function startHttpServer(config, makeServer, cardInfo, logger = (me
|
|
|
271
312
|
logger(`[qveris] MCP session closed: ${sessionId}\n`);
|
|
272
313
|
}
|
|
273
314
|
};
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
315
|
+
let server;
|
|
316
|
+
try {
|
|
317
|
+
server = await makeServer(randomUUID(), auth);
|
|
318
|
+
await server.connect(transport);
|
|
319
|
+
return transport;
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
await transport.close().catch(() => undefined);
|
|
323
|
+
if (server)
|
|
324
|
+
await server.close().catch(() => undefined);
|
|
325
|
+
throw error;
|
|
326
|
+
}
|
|
277
327
|
};
|
|
278
328
|
const handler = async (req, res) => {
|
|
279
329
|
try {
|
|
@@ -336,8 +386,26 @@ export async function startHttpServer(config, makeServer, cardInfo, logger = (me
|
|
|
336
386
|
});
|
|
337
387
|
return;
|
|
338
388
|
}
|
|
389
|
+
const sessionBearer = config.requireSessionBearer ? readBearerToken(req.headers['authorization']) : undefined;
|
|
390
|
+
if (config.requireSessionBearer && !sessionBearer) {
|
|
391
|
+
req.resume();
|
|
392
|
+
writeJson(res, 401, jsonRpcError(null, -32001, 'Bearer credential required'), {
|
|
393
|
+
'WWW-Authenticate': 'Bearer',
|
|
394
|
+
});
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
339
397
|
const sessionId = req.headers['mcp-session-id'];
|
|
340
398
|
const existing = typeof sessionId === 'string' ? transports.get(sessionId) : undefined;
|
|
399
|
+
if (config.requireSessionBearer &&
|
|
400
|
+
existing &&
|
|
401
|
+
typeof sessionId === 'string' &&
|
|
402
|
+
!credentialMatches(sessionCredentialFingerprints.get(sessionId), sessionBearer)) {
|
|
403
|
+
req.resume();
|
|
404
|
+
writeJson(res, 401, jsonRpcError(null, -32001, 'Session credential mismatch'), {
|
|
405
|
+
'WWW-Authenticate': 'Bearer',
|
|
406
|
+
});
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
341
409
|
if (typeof sessionId === 'string' && existing)
|
|
342
410
|
lastSeen.set(sessionId, Date.now());
|
|
343
411
|
if (req.method === 'POST') {
|
|
@@ -371,7 +439,30 @@ export async function startHttpServer(config, makeServer, cardInfo, logger = (me
|
|
|
371
439
|
writeJson(res, 400, jsonRpcError(null, -32000, 'Missing session ID: first request must be initialize'));
|
|
372
440
|
return;
|
|
373
441
|
}
|
|
374
|
-
|
|
442
|
+
try {
|
|
443
|
+
transport = await createTransport({ bearerToken: sessionBearer });
|
|
444
|
+
}
|
|
445
|
+
catch (error) {
|
|
446
|
+
if (error instanceof SessionAuthenticationError) {
|
|
447
|
+
writeJson(res, 401, jsonRpcError(null, -32001, 'Invalid session credential'), {
|
|
448
|
+
'WWW-Authenticate': 'Bearer',
|
|
449
|
+
});
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
452
|
+
if (error instanceof SessionAuthenticationUnavailableError) {
|
|
453
|
+
writeJson(res, 503, jsonRpcError(null, -32002, 'Credential validation temporarily unavailable'), {
|
|
454
|
+
'Retry-After': '5',
|
|
455
|
+
});
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
if (error instanceof SessionRateLimitError) {
|
|
459
|
+
writeJson(res, 429, jsonRpcError(null, -32003, 'Session creation rate limit exceeded'), {
|
|
460
|
+
'Retry-After': String(error.retryAfterSeconds),
|
|
461
|
+
});
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
throw error;
|
|
465
|
+
}
|
|
375
466
|
}
|
|
376
467
|
// Guard only requests against an existing session (a known id); a fresh
|
|
377
468
|
// initialize gets its id mid-handle and can't be swept in that window.
|
|
@@ -458,6 +549,7 @@ export async function startHttpServer(config, makeServer, cardInfo, logger = (me
|
|
|
458
549
|
await transport.close().catch(() => undefined);
|
|
459
550
|
}
|
|
460
551
|
transports.clear();
|
|
552
|
+
sessionCredentialFingerprints.clear();
|
|
461
553
|
lastSeen.clear();
|
|
462
554
|
inflight.clear();
|
|
463
555
|
await new Promise((resolve) => {
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,YAAY,EAAwE,MAAM,WAAW,CAAC;AAI/G,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAEzE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,sBAAsB,GAEvB,MAAM,kBAAkB,CAAC;AAqC1B,gFAAgF;AAChF,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACjC,IAAI,GAAG,4BAA4B,CAAC;CACvD;AAED,6EAA6E;AAC7E,MAAM,OAAO,qCAAsC,SAAQ,KAAK;IAC5C,IAAI,GAAG,uCAAuC,CAAC;CAClE;AAED,kFAAkF;AAClF,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC5B,IAAI,GAAG,uBAAuB,CAAC;IACxC,iBAAiB,CAAS;IAEnC,YAAY,OAAe,EAAE,iBAAiB,GAAG,EAAE;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,iBAAiB;YACpB,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtH,CAAC;CACF;AAED,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,QAAQ;AACxD,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ;AAC1D,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAClE,MAAM,QAAQ,GAAG,KAAK,CAAC;AAEvB,MAAM,iBAAkB,SAAQ,KAAK;CAAG;AACxC,MAAM,cAAe,SAAQ,KAAK;CAAG;AAErC,SAAS,SAAS,CAAC,KAAyB;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,KAAyB,EAAE,QAAiB;IAC7D,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACnE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB,EAAE,QAAgB;IACnE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc,EAAE,IAAY;IAC5C,8CAA8C;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CAAC,IAAc,EAAE,IAAY;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,gFAAgF;AAChF,4EAA4E;AAC5E,mCAAmC;AACnC,MAAM,aAAa,GAAG,qDAAqD,CAAC;AAE5E,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,CAAC,GAAG,IAAI;SACX,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB;IAClD,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAsB,EAAE,OAAiB,EAAE;IAChF,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE1C,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC;IACzC,MAAM,YAAY,GAAG,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEpE,MAAM,aAAa,GACjB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;QACvB,YAAY,KAAK,MAAM;QACvB,QAAQ,KAAK,SAAS;QACtB,OAAO,KAAK,SAAS;QACrB,QAAQ,KAAK,SAAS;QACtB,OAAO,KAAK,SAAS,CAAC;IAExB,MAAM,IAAI,GAA4B,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAE5G,MAAM,OAAO,GAAG,QAAQ,IAAI,OAAO,CAAC;IACpC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,IAAI,GACR,OAAO,KAAK,SAAS;QACrB,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,oEAAoE;QAC7F,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC;QAC5B,UAAU,IAAI,CAAC;QACf,UAAU,IAAI,QAAQ;QACpB,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,YAAY,CAAC;IAEnB,OAAO;QACL,IAAI;QACJ,IAAI,EAAE,QAAQ,IAAI,OAAO,IAAI,YAAY;QACzC,IAAI;QACJ,IAAI,EAAE,QAAQ,IAAI,GAAG,CAAC,oBAAoB,IAAI,YAAY;QAC1D,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,wBAAwB,CAAC;QACrD,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC;QACzD,4BAA4B,EAAE,SAAS,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,CAAC;QACtF,kBAAkB,EAAE,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,CAAC;QAC9D,SAAS,EAAE,GAAG,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,SAAS;QAC9D,oBAAoB,EAAE,KAAK;QAC3B,oBAAoB,EAAE,SAAS,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,CAAC;QACjF,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,yBAAyB,EAAE,sBAAsB,CAAC;QACrF,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,6BAA6B,EAAE,0BAA0B,CAAC;QACjG,SAAS,EAAE,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,SAAS;KAC9E,CAAC;AACJ,CAAC;AAED;uFACuF;AACvF,SAAS,aAAa,CAAC,GAAoB,EAAE,SAA6B;IACxE,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC;IACrG,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;IAC7C,OAAO,GAAG,KAAK,MAAM,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,+DAA+D;AAC/D,KAAK,UAAU,YAAY,CAAC,GAAoB,EAAE,QAAgB;IAChE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAe,CAAC;QAC5B,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;QACpB,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,iBAAiB,CAAC,wBAAwB,QAAQ,QAAQ,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,cAAc,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IAChF,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,GAAmB,EAAE,MAAc,EAAE,IAAa,EAAE,UAAkC,EAAE;IACzG,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1E,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,EAAW,EAAE,IAAY,EAAE,OAAe;IAC9D,OAAO,EAAE,OAAO,EAAE,KAAc,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC;AAC/E,CAAC;AAED,+DAA+D;AAC/D,SAAS,aAAa,CAAC,UAA8B,EAAE,KAAa;IAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;IACpE,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IACjE,OAAO,eAAe,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,UAA8B;IACrD,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACjC,OAAO,KAAK,IAAI,SAAS,CAAC;AAC5B,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,iBAAiB,CAAC,WAA+B,EAAE,KAAyB;IACnF,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,eAAe,CAAC,WAAW,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC;AAWD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAuB,EACvB,UAAkF,EAClF,QAAyB,EACzB,SAAoC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAE9E,MAAM,WAAW,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACrG,MAAM,IAAI,KAAK,CACb,qEAAqE,MAAM,CAAC,IAAI,4BAA4B;YAC1G,mEAAmE;YACnE,yGAAyG,CAC5G,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACrE,MAAM,CACJ,yFAAyF;YACvF,wDAAwD,CAC3D,CAAC;IACJ,CAAC;IACD,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACzE,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,4CAA4C,MAAM,CAAC,IAAI,6BAA6B;YAClF,aAAa,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,gEAAgE,CACxG,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyC,CAAC;IACpE,MAAM,6BAA6B,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,+CAA+C;IAC3F,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC;IAE5B,2EAA2E;IAC3E,sEAAsE;IACtE,kEAAkE;IAClE,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAQ,EAAE;QACzC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAQ,EAAE;QAC1C,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,SAAS,GAAG,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;;YACjD,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,oEAAoE;IACpE,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,qBAAqB,GAAG,GAAa,EAAE;QAC3C,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,EAAE,aAAa,SAAS,EAAE,EAAE,aAAa,SAAS,EAAE,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAQ,EAAE;QACxC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3B,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3B,6BAA6B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,EAAE,IAAqB,EAA0C,EAAE;QAC9F,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;YAClD,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;YACtC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;YAC7C,4BAA4B,EAAE,MAAM,CAAC,4BAA4B;YACjE,YAAY,EAAE,qBAAqB,EAAE;YACrC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,oBAAoB,EAAE,CAAC,SAAS,EAAE,EAAE;gBAClC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACrC,IAAI,WAAW;oBAAE,6BAA6B,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBAC3E,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,MAAM,CAAC,qCAAqC,SAAS,IAAI,CAAC,CAAC;YAC7D,CAAC;SACF,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;YACvB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;YACtC,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;gBACzD,KAAK,CAAC,SAAS,CAAC,CAAC;gBACjB,MAAM,CAAC,gCAAgC,SAAS,IAAI,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC;QACF,IAAI,MAA0B,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,MAAM;gBAAE,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAiB,EAAE;QACjF,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;YAEjF,gEAAgE;YAChE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACvD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YAED,uEAAuE;YACvE,0EAA0E;YAC1E,0DAA0D;YAC1D,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,cAAc,CAAC;YAC9C,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,GAAG;oBACX,6BAA6B,EAAE,GAAG;oBAClC,8BAA8B,EAAE,cAAc;oBAC9C,8BAA8B,EAAE,QAAQ;iBACzC,CAAC;gBACF,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC7B,GAAG,CAAC,MAAM,EAAE,CAAC;oBACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,CAAC,CAAC;oBACnE,GAAG,CAAC,GAAG,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBACD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;oBACzB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;oBACpD,uEAAuE;oBACvE,sEAAsE;oBACtE,uEAAuE;oBACvE,qDAAqD;oBACrD,MAAM,KAAK,GAA2B,MAAM,CAAC,SAAS;wBACpD,CAAC,CAAC,EAAE,eAAe,EAAE,sBAAsB,EAAE;wBAC7C,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;oBACrE,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;wBAClE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,CAAC,CAAC;oBAC3F,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC;wBAC/D,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;oBACtD,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;gBAC9C,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBACjC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,wDAAwD;gBACtE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC9E,OAAO;YACT,CAAC;YAED,iEAAiE;YACjE,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvF,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,kDAAkD;gBAChE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE;oBAC9D,kBAAkB,EAAE,QAAQ;iBAC7B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9G,IAAI,MAAM,CAAC,oBAAoB,IAAI,CAAC,aAAa,EAAE,CAAC;gBAClD,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,4BAA4B,CAAC,EAAE;oBAC5E,kBAAkB,EAAE,QAAQ;iBAC7B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvF,IACE,MAAM,CAAC,oBAAoB;gBAC3B,QAAQ;gBACR,OAAO,SAAS,KAAK,QAAQ;gBAC7B,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,EAC/E,CAAC;gBACD,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,6BAA6B,CAAC,EAAE;oBAC7E,kBAAkB,EAAE,QAAQ;iBAC7B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,QAAQ;gBAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAEnF,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1B,IAAI,IAAa,CAAC;gBAClB,IAAI,CAAC;oBACH,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBACtD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,iBAAiB,EAAE,CAAC;wBACrC,8DAA8D;wBAC9D,8DAA8D;wBAC9D,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,wBAAwB,CAAC,EAAE;4BACxE,UAAU,EAAE,OAAO;yBACpB,CAAC,CAAC;wBACH,GAAG,CAAC,OAAO,EAAE,CAAC;wBACd,OAAO;oBACT,CAAC;oBACD,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;wBAClC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;wBAC/D,OAAO;oBACT,CAAC;oBACD,MAAM,GAAG,CAAC;gBACZ,CAAC;gBAED,IAAI,SAAS,GAAG,QAAQ,CAAC;gBACzB,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBAC5B,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;wBACrE,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC/B,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,sDAAsD,CAAC,CAAC,CAAC;wBACxG,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC;wBACH,SAAS,GAAG,MAAM,eAAe,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;oBACpE,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,KAAK,YAAY,0BAA0B,EAAE,CAAC;4BAChD,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,4BAA4B,CAAC,EAAE;gCAC5E,kBAAkB,EAAE,QAAQ;6BAC7B,CAAC,CAAC;4BACH,OAAO;wBACT,CAAC;wBACD,IAAI,KAAK,YAAY,qCAAqC,EAAE,CAAC;4BAC3D,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,+CAA+C,CAAC,EAAE;gCAC/F,aAAa,EAAE,GAAG;6BACnB,CAAC,CAAC;4BACH,OAAO;wBACT,CAAC;wBACD,IAAI,KAAK,YAAY,qBAAqB,EAAE,CAAC;4BAC3C,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,sCAAsC,CAAC,EAAE;gCACtF,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC;6BAC/C,CAAC,CAAC;4BACH,OAAO;wBACT,CAAC;wBACD,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;gBAED,wEAAwE;gBACxE,uEAAuE;gBACvE,IAAI,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC9C,MAAM,CAAC,SAAS,CAAC,CAAC;oBAClB,IAAI,CAAC;wBACH,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBAChD,CAAC;4BAAS,CAAC;wBACT,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,yEAAyE;YACzE,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACpD,IAAI,CAAC,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC/C,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC,CAAC;oBACjF,OAAO;gBACT,CAAC;gBACD,wEAAwE;gBACxE,+DAA+D;gBAC/D,MAAM,CAAC,SAAS,CAAC,CAAC;gBAClB,IAAI,CAAC;oBACH,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACzC,CAAC;wBAAS,CAAC;oBACT,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrB,CAAC;gBACD,OAAO;YACT,CAAC;YAED,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACnD,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAC3F,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,KAAK,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACjC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAC/C,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,EAAwB,CAAC;YAC3D,IAAI,OAAO;gBAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YACtC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,+EAA+E;IAC/E,2EAA2E;IAC3E,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;QACpC,MAAM,CAAC,+BAA+B,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,8EAA8E;IAC9E,6EAA6E;IAC7E,6CAA6C;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzC,IAAI,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrE,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5C,KAAK,CAAC,SAAS,CAAC,CAAC;gBACjB,IAAI,SAAS;oBAAE,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC7D,MAAM,CAAC,wCAAwC,SAAS,IAAI,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACtB,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,MAAM,CAAC,kEAAkE,MAAM,CAAC,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAErH,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;QACtC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5C,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,6BAA6B,CAAC,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAClC,uEAAuE;YACvE,wEAAwE;YACxE,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC"}
|