qyl-mcp-server 1.1.2 → 1.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,8 @@
1
- export interface McpAppOptions {
2
- bindHost: string;
3
- allowedHosts?: readonly string[];
4
- allowedOrigins?: readonly string[];
5
- }
6
- export declare function createMcpApp({ bindHost, allowedHosts, allowedOrigins }: McpAppOptions): import("express").Express;
1
+ /**
2
+ * DNS-rebinding protection in front of the MCP handler, which validates
3
+ * neither header itself. Without explicit allowlists this is a loopback
4
+ * process, and the SDK's localhost sets are the correct answer — the same
5
+ * default the framework app factories arm.
6
+ */
7
+ export declare function dnsRebindingResponse(request: Request, allowedHosts?: readonly string[], allowedOrigins?: readonly string[]): Response | undefined;
7
8
  export declare function isLoopbackBindHost(host: string): boolean;
@@ -1,13 +1,15 @@
1
- import { createMcpExpressApp } from "@modelcontextprotocol/express";
1
+ import { hostHeaderValidationResponse, localhostAllowedHostnames, localhostAllowedOrigins, originValidationResponse, } from "@modelcontextprotocol/server";
2
2
  function unique(values) {
3
3
  return [...new Set(values)];
4
4
  }
5
- export function createMcpApp({ bindHost, allowedHosts, allowedOrigins }) {
6
- return createMcpExpressApp({
7
- host: bindHost,
8
- allowedHosts: allowedHosts === undefined ? undefined : unique([...allowedHosts]),
9
- allowedOrigins: allowedOrigins === undefined ? undefined : unique([...allowedOrigins]),
10
- });
5
+ /**
6
+ * DNS-rebinding protection in front of the MCP handler, which validates
7
+ * neither header itself. Without explicit allowlists this is a loopback
8
+ * process, and the SDK's localhost sets are the correct answer — the same
9
+ * default the framework app factories arm.
10
+ */
11
+ export function dnsRebindingResponse(request, allowedHosts, allowedOrigins) {
12
+ return hostHeaderValidationResponse(request, unique(allowedHosts ?? localhostAllowedHostnames())) ?? originValidationResponse(request, unique(allowedOrigins ?? localhostAllowedOrigins()));
11
13
  }
12
14
  export function isLoopbackBindHost(host) {
13
15
  return host === "127.0.0.1" || host === "localhost" || host === "::1";
@@ -1 +1 @@
1
- {"version":3,"file":"http-security.js","sourceRoot":"","sources":["../src/http-security.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAQpE,SAAS,MAAM,CAAC,MAAyB;IACvC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAiB;IACpF,OAAO,mBAAmB,CAAC;QACzB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;QAChF,cAAc,EAAE,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;KACvF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"http-security.js","sourceRoot":"","sources":["../src/http-security.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AAEtC,SAAS,MAAM,CAAC,MAAyB;IACvC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,YAAgC,EAChC,cAAkC;IAElC,OAAO,4BAA4B,CACjC,OAAO,EACP,MAAM,CAAC,YAAY,IAAI,yBAAyB,EAAE,CAAC,CACpD,IAAI,wBAAwB,CAC3B,OAAO,EACP,MAAM,CAAC,cAAc,IAAI,uBAAuB,EAAE,CAAC,CACpD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,KAAK,CAAC;AACxE,CAAC"}
package/dist/main.d.ts CHANGED
@@ -1,10 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { type AuthMetadataOptions, type McpServer } from "@modelcontextprotocol/server";
2
+ import { type AuthInfo, type AuthMetadataOptions, type McpHttpHandler, type McpServer } from "@modelcontextprotocol/server";
3
3
  import { type StdioServerHandle } from "@modelcontextprotocol/server/stdio";
4
- import type { Express } from "express";
5
- import type { Server as HttpServer } from "node:http";
6
4
  export declare function sanitizedErrorType(error: unknown): string;
7
- export declare function closeHttpListener(server: HttpServer): Promise<void>;
8
5
  export interface StreamableHTTPServerConfig {
9
6
  port: number;
10
7
  bindHost: string;
@@ -13,7 +10,31 @@ export interface StreamableHTTPServerConfig {
13
10
  allowedOrigins?: string[];
14
11
  }
15
12
  export declare function readStreamableHTTPConfig(environment?: NodeJS.ProcessEnv): StreamableHTTPServerConfig;
16
- export declare function mountProtectedResourceMetadata(app: Express, options: AuthMetadataOptions): string;
17
- export declare function mountLandingPage(app: Express, html: string): void;
18
- export declare function startStreamableHTTPServer(serverFactory: () => McpServer): Promise<void>;
13
+ export interface HostedAuth {
14
+ gate: (request: Request) => Promise<AuthInfo | Response>;
15
+ metadata: AuthMetadataOptions;
16
+ }
17
+ export interface McpFetchOptions {
18
+ handler: McpHttpHandler;
19
+ landingPage: string;
20
+ allowedHosts?: readonly string[] | undefined;
21
+ allowedOrigins?: readonly string[] | undefined;
22
+ auth?: HostedAuth | undefined;
23
+ }
24
+ /**
25
+ * The endpoint as one web-standard function. The order is the contract: the
26
+ * discovery documents answer before the gate, or an unauthenticated client
27
+ * has no way to learn where its token comes from; the rebinding guards answer
28
+ * before any route, because the handler validates no header; the gate resolves
29
+ * to verified `AuthInfo` or to a finished challenge, and only the first of
30
+ * those reaches the handler.
31
+ */
32
+ export declare function createFetch(options: McpFetchOptions): (request: Request) => Promise<Response>;
33
+ export interface ServeOptions {
34
+ port: number;
35
+ hostname: string;
36
+ fetch: (request: Request) => Promise<Response>;
37
+ }
19
38
  export declare function startStdioServer(serverFactory: () => McpServer): StdioServerHandle;
39
+ declare const _default: ServeOptions | undefined;
40
+ export default _default;
package/dist/main.js CHANGED
@@ -1,15 +1,13 @@
1
1
  #!/usr/bin/env node
2
- import { buildOAuthProtectedResourceMetadata, createMcpHandler, getOAuthProtectedResourceMetadataUrl, OAuthError, OAuthErrorCode, } from "@modelcontextprotocol/server";
2
+ import { createMcpHandler, getOAuthProtectedResourceMetadataUrl, oauthMetadataResponse, requireBearerAuth, } from "@modelcontextprotocol/server";
3
3
  import { serveStdio } from "@modelcontextprotocol/server/stdio";
4
- import { toNodeHandler } from "@modelcontextprotocol/node";
5
4
  import { realpathSync } from "node:fs";
6
5
  import { readFile } from "node:fs/promises";
7
6
  import { resolve } from "node:path";
8
7
  import { pathToFileURL } from "node:url";
9
8
  import { createServer } from "./server.js";
10
9
  import { assertCollectorContractRevision } from "./contract-handshake.js";
11
- import { requireBearerAuth } from "@modelcontextprotocol/express";
12
- import { createMcpApp, isLoopbackBindHost } from "./http-security.js";
10
+ import { dnsRebindingResponse, isLoopbackBindHost } from "./http-security.js";
13
11
  import { loadHostedOAuth } from "./oauth.js";
14
12
  import { closeDefaultNativeExecutionRuntime } from "./native-execution.js";
15
13
  export function sanitizedErrorType(error) {
@@ -20,11 +18,6 @@ export function sanitizedErrorType(error) {
20
18
  function reportError(scope, error) {
21
19
  console.error(`${scope} failed (${sanitizedErrorType(error)}); secret details omitted`);
22
20
  }
23
- export function closeHttpListener(server) {
24
- return new Promise((resolveClose, rejectClose) => {
25
- server.close((error) => (error ? rejectClose(error) : resolveClose()));
26
- });
27
- }
28
21
  function commaSeparated(value) {
29
22
  return (value ?? "")
30
23
  .split(",")
@@ -81,102 +74,135 @@ export function readStreamableHTTPConfig(environment = process.env) {
81
74
  function urlHost(host) {
82
75
  return host.includes(":") && !host.startsWith("[") ? `[${host}]` : host;
83
76
  }
84
- export function mountProtectedResourceMetadata(app, options) {
85
- const metadataUrl = getOAuthProtectedResourceMetadataUrl(options.resourceServerUrl);
86
- const metadataPath = new URL(metadataUrl).pathname;
87
- const metadata = buildOAuthProtectedResourceMetadata(options);
88
- app.all(metadataPath, (request, response) => {
89
- response.set("Access-Control-Allow-Origin", "*");
90
- if (request.method === "OPTIONS") {
91
- response.set("Access-Control-Allow-Methods", "GET, HEAD, OPTIONS");
92
- const requestedHeaders = request.get("Access-Control-Request-Headers");
93
- if (requestedHeaders !== undefined) {
94
- response.set("Access-Control-Allow-Headers", requestedHeaders);
95
- response.vary("Access-Control-Request-Headers");
96
- }
97
- response.status(204).end();
98
- return;
99
- }
100
- if (request.method === "GET") {
101
- response.status(200).json(metadata);
102
- return;
103
- }
104
- if (request.method === "HEAD") {
105
- response.status(200).end();
106
- return;
107
- }
108
- const error = new OAuthError(OAuthErrorCode.MethodNotAllowed, `The method ${request.method} is not allowed for this endpoint`);
109
- response
110
- .set("Allow", "GET, HEAD, OPTIONS")
111
- .status(405)
112
- .json(error.toResponseObject());
113
- });
114
- return metadataUrl;
115
- }
116
- export function mountLandingPage(app, html) {
117
- app.get("/", (_request, response) => {
118
- response
119
- .set("Cache-Control", "public, max-age=300")
120
- .status(200)
121
- .type("html")
122
- .send(html);
77
+ function landingResponse(request, html) {
78
+ if (request.method !== "GET" && request.method !== "HEAD")
79
+ return notFound();
80
+ return new Response(request.method === "HEAD" ? null : html, {
81
+ status: 200,
82
+ headers: {
83
+ "content-type": "text/html; charset=utf-8",
84
+ "cache-control": "public, max-age=300",
85
+ },
123
86
  });
124
87
  }
125
- export async function startStreamableHTTPServer(serverFactory) {
126
- const config = readStreamableHTTPConfig();
127
- const handler = createMcpHandler(serverFactory, {
128
- legacy: "reject",
129
- onerror: (error) => reportError("Standalone MCP request", error),
130
- });
131
- const nodeHandler = toNodeHandler(handler, {
132
- onerror: (error) => reportError("Standalone MCP adapter", error),
88
+ function healthResponse(request) {
89
+ if (request.method !== "GET" && request.method !== "HEAD")
90
+ return notFound();
91
+ return Response.json({ status: "ok" });
92
+ }
93
+ function notFound() {
94
+ return new Response("Not Found", {
95
+ status: 404,
96
+ headers: { "content-type": "text/plain; charset=utf-8" },
133
97
  });
134
- const app = createMcpApp({
135
- bindHost: config.bindHost,
136
- allowedHosts: config.allowedHosts,
137
- allowedOrigins: config.allowedOrigins,
98
+ }
99
+ // A browser client reads none of this without CORS — not the challenge that
100
+ // starts its OAuth flow, not the session id, not the negotiated revision. The
101
+ // preflight carries no credentials, so it must be answered before the gate;
102
+ // answering it there is a 401 the browser reports as a network failure.
103
+ const EXPOSED_HEADERS = "WWW-Authenticate, Mcp-Session-Id, MCP-Protocol-Version";
104
+ function corsPreflightResponse(request) {
105
+ const origin = request.headers.get("origin");
106
+ if (request.method !== "OPTIONS" || origin === null)
107
+ return undefined;
108
+ const requestedHeaders = request.headers.get("access-control-request-headers");
109
+ return new Response(null, {
110
+ status: 204,
111
+ headers: {
112
+ "access-control-allow-origin": origin,
113
+ "access-control-allow-methods": "GET, POST, DELETE, OPTIONS",
114
+ ...(requestedHeaders === null ? {} : { "access-control-allow-headers": requestedHeaders }),
115
+ "access-control-expose-headers": EXPOSED_HEADERS,
116
+ "access-control-max-age": "600",
117
+ vary: "Origin, Access-Control-Request-Headers",
118
+ },
138
119
  });
139
- app.get("/healthz", (_request, response) => {
140
- response.status(200).json({ status: "ok" });
120
+ }
121
+ function withCors(request, response) {
122
+ const origin = request.headers.get("origin");
123
+ if (origin === null)
124
+ return response;
125
+ const headers = new Headers(response.headers);
126
+ headers.set("access-control-allow-origin", origin);
127
+ headers.set("access-control-expose-headers", EXPOSED_HEADERS);
128
+ headers.append("vary", "Origin");
129
+ return new Response(response.body, {
130
+ status: response.status,
131
+ statusText: response.statusText,
132
+ headers,
141
133
  });
142
- mountLandingPage(app, await readFile(new URL("./mcp-home.html", import.meta.url), "utf8"));
143
- const handleMcpRequest = async (request, response) => {
144
- await nodeHandler(request, response, request.body);
134
+ }
135
+ /**
136
+ * The endpoint as one web-standard function. The order is the contract: the
137
+ * discovery documents answer before the gate, or an unauthenticated client
138
+ * has no way to learn where its token comes from; the rebinding guards answer
139
+ * before any route, because the handler validates no header; the gate resolves
140
+ * to verified `AuthInfo` or to a finished challenge, and only the first of
141
+ * those reaches the handler.
142
+ */
143
+ export function createFetch(options) {
144
+ return async (request) => {
145
+ const discovery = options.auth === undefined
146
+ ? undefined
147
+ : oauthMetadataResponse(request, options.auth.metadata);
148
+ if (discovery !== undefined)
149
+ return discovery;
150
+ const rejected = dnsRebindingResponse(request, options.allowedHosts, options.allowedOrigins);
151
+ if (rejected !== undefined)
152
+ return rejected;
153
+ const { pathname } = new URL(request.url);
154
+ if (pathname === "/healthz")
155
+ return healthResponse(request);
156
+ if (pathname === "/")
157
+ return landingResponse(request, options.landingPage);
158
+ if (pathname !== "/mcp")
159
+ return notFound();
160
+ const preflight = corsPreflightResponse(request);
161
+ if (preflight !== undefined)
162
+ return preflight;
163
+ if (options.auth === undefined) {
164
+ return withCors(request, await options.handler.fetch(request));
165
+ }
166
+ const authInfo = await options.auth.gate(request);
167
+ if (authInfo instanceof Response)
168
+ return withCors(request, authInfo);
169
+ return withCors(request, await options.handler.fetch(request, { authInfo }));
145
170
  };
146
- if (config.publicUrl !== undefined) {
147
- const resourceServerUrl = new URL("/mcp", config.publicUrl);
148
- const oauth = await loadHostedOAuth(resourceServerUrl);
149
- const resourceMetadataUrl = mountProtectedResourceMetadata(app, {
171
+ }
172
+ async function hostedAuth(publicUrl) {
173
+ const resourceServerUrl = new URL("/mcp", publicUrl);
174
+ const oauth = await loadHostedOAuth(resourceServerUrl);
175
+ return {
176
+ gate: requireBearerAuth({
177
+ verifier: oauth.verifier,
178
+ requiredScopes: oauth.requiredScopes,
179
+ resourceMetadataUrl: getOAuthProtectedResourceMetadataUrl(resourceServerUrl),
180
+ }),
181
+ metadata: {
150
182
  oauthMetadata: oauth.oauthMetadata,
151
183
  resourceServerUrl,
152
184
  scopesSupported: oauth.scopesSupported,
153
- });
154
- const requireAuth = requireBearerAuth({
155
- verifier: oauth.verifier,
156
- requiredScopes: oauth.requiredScopes,
157
- resourceMetadataUrl,
158
- });
159
- app.all("/mcp", requireAuth, handleMcpRequest);
160
- }
161
- else {
162
- app.all("/mcp", handleMcpRequest);
163
- }
164
- const httpServer = app.listen(config.port, config.bindHost);
165
- await new Promise((resolveListening, rejectListening) => {
166
- httpServer.once("listening", resolveListening);
167
- httpServer.once("error", rejectListening);
168
- });
169
- const endpoint = config.publicUrl
170
- ? new URL("/mcp", config.publicUrl).href
171
- : `http://${urlHost(config.bindHost)}:${config.port}/mcp`;
172
- console.log(`MCP server listening on ${endpoint}`);
185
+ },
186
+ };
187
+ }
188
+ async function createHostedRuntime(config) {
189
+ // No `legacy` option: the default stateless posture serves 2026-07-28 and
190
+ // 2025-era clients from this one factory, and most clients shipping today
191
+ // are still 2025-era.
192
+ const handler = createMcpHandler(() => createServer({ transport: "streamable_http" }), { onerror: (error) => reportError("Standalone MCP request", error) });
193
+ const options = {
194
+ handler,
195
+ landingPage: await readFile(new URL("./mcp-home.html", import.meta.url), "utf8"),
196
+ ...(config.allowedHosts === undefined ? {} : { allowedHosts: config.allowedHosts }),
197
+ ...(config.allowedOrigins === undefined ? {} : { allowedOrigins: config.allowedOrigins }),
198
+ ...(config.publicUrl === undefined ? {} : { auth: await hostedAuth(config.publicUrl) }),
199
+ };
173
200
  let shuttingDown = false;
174
201
  const shutdown = () => {
175
202
  if (shuttingDown)
176
203
  return;
177
204
  shuttingDown = true;
178
205
  void handler.close()
179
- .then(() => closeHttpListener(httpServer))
180
206
  .then(closeDefaultNativeExecutionRuntime)
181
207
  .catch((error) => {
182
208
  reportError("Standalone MCP HTTP shutdown cleanup", error);
@@ -185,6 +211,11 @@ export async function startStreamableHTTPServer(serverFactory) {
185
211
  };
186
212
  process.once("SIGINT", shutdown);
187
213
  process.once("SIGTERM", shutdown);
214
+ const endpoint = config.publicUrl
215
+ ? new URL("/mcp", config.publicUrl).href
216
+ : `http://${urlHost(config.bindHost)}:${config.port}/mcp`;
217
+ console.log(`MCP server serving ${endpoint}`);
218
+ return { port: config.port, hostname: config.bindHost, fetch: createFetch(options) };
188
219
  }
189
220
  export function startStdioServer(serverFactory) {
190
221
  const handle = serveStdio(serverFactory, {
@@ -207,17 +238,6 @@ export function startStdioServer(serverFactory) {
207
238
  process.once("SIGTERM", shutdown);
208
239
  return handle;
209
240
  }
210
- async function main() {
211
- // Before either transport accepts a connection: a server that answers tool
212
- // calls against a contract the collector does not serve is worse than one that
213
- // refuses to start.
214
- await assertCollectorContractRevision();
215
- if (process.argv.includes("--stdio")) {
216
- startStdioServer(() => createServer({ transport: "stdio" }));
217
- return;
218
- }
219
- await startStreamableHTTPServer(() => createServer({ transport: "streamable_http" }));
220
- }
221
241
  function toRealEntryHref(entryPoint) {
222
242
  const resolved = resolve(entryPoint);
223
243
  try {
@@ -227,12 +247,35 @@ function toRealEntryHref(entryPoint) {
227
247
  return pathToFileURL(resolved).href;
228
248
  }
229
249
  }
230
- const entryPoint = process.argv[1];
231
- const entryHref = entryPoint === undefined ? undefined : toRealEntryHref(entryPoint);
232
- if (entryHref === import.meta.url) {
233
- void main().catch((error) => {
250
+ function isEntryPoint() {
251
+ const entryPoint = process.argv[1];
252
+ return entryPoint !== undefined && toRealEntryHref(entryPoint) === import.meta.url;
253
+ }
254
+ async function bootstrap() {
255
+ if (!isEntryPoint())
256
+ return undefined;
257
+ try {
258
+ // Before either transport accepts a connection: a server that answers tool
259
+ // calls against a contract the collector does not serve is worse than one
260
+ // that refuses to start.
261
+ await assertCollectorContractRevision();
262
+ if (process.argv.includes("--stdio")) {
263
+ startStdioServer(() => createServer({ transport: "stdio" }));
264
+ return undefined;
265
+ }
266
+ if (typeof globalThis.Bun === "undefined") {
267
+ console.error("The HTTP entry is a web-standard fetch handler served by its default export; " +
268
+ "run it with Bun. Node serves the stdio entry only (--stdio).");
269
+ process.exitCode = 1;
270
+ return undefined;
271
+ }
272
+ return await createHostedRuntime(readStreamableHTTPConfig());
273
+ }
274
+ catch (error) {
234
275
  reportError("Standalone MCP startup", error);
235
276
  process.exitCode = 1;
236
- });
277
+ return undefined;
278
+ }
237
279
  }
280
+ export default await bootstrap();
238
281
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA,OAAO,EACL,gBAAgB,EAChB,oCAAoC,EACpC,qBAAqB,EACrB,iBAAiB,GAKlB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAA0B,MAAM,oCAAoC,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,kCAAkC,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACrD,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AAC1E,CAAC;AAED,SAAS,WAAW,CAAC,KAAa,EAAE,KAAc;IAChD,OAAO,CAAC,KAAK,CACX,GAAG,KAAK,YAAY,kBAAkB,CAAC,KAAK,CAAC,2BAA2B,CACzE,CAAC;AACJ,CAAC;AAUD,SAAS,cAAc,CAAC,KAAyB;IAC/C,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,MAAM,CAAC,MAAyB;IACvC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,mBAAmB,CAAC,WAA8B;IACzD,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAElC,IAAI,SAAc,CAAC;IACnB,IAAI,CAAC;QACH,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,WAAW,GAAsB,OAAO,CAAC,GAAG;IAE5C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC;IAClE,MAAM,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAEnD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACtE,MAAM,iBAAiB,GAAG,cAAc,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IAE/E,MAAM,YAAY,GAChB,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,MAAM,cAAc,GAClB,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE3F,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjD,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AAeD,SAAS,eAAe,CAAC,OAAgB,EAAE,IAAY;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,QAAQ,EAAE,CAAC;IAC7E,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;QAC3D,MAAM,EAAE,GAAG;QACX,OAAO,EAAE;YACP,cAAc,EAAE,0BAA0B;YAC1C,eAAe,EAAE,qBAAqB;SACvC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,OAAgB;IACtC,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,QAAQ,EAAE,CAAC;IAC7E,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,QAAQ;IACf,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE;QAC/B,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,EAAE,cAAc,EAAE,2BAA2B,EAAE;KACzD,CAAC,CAAC;AACL,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,4EAA4E;AAC5E,wEAAwE;AACxE,MAAM,eAAe,GAAG,wDAAwD,CAAC;AAEjF,SAAS,qBAAqB,CAAC,OAAgB;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAEtE,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC/E,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE;YACP,6BAA6B,EAAE,MAAM;YACrC,8BAA8B,EAAE,4BAA4B;YAC5D,GAAG,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,CAAC;YAC1F,+BAA+B,EAAE,eAAe;YAChD,wBAAwB,EAAE,KAAK;YAC/B,IAAI,EAAE,wCAAwC;SAC/C;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,OAAgB,EAAE,QAAkB;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IAErC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,eAAe,CAAC,CAAC;IAC9D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,OAAwB;IAClD,OAAO,KAAK,EAAE,OAAgB,EAAqB,EAAE;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS;YAC1C,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAE9C,MAAM,QAAQ,GAAG,oBAAoB,CACnC,OAAO,EACP,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,cAAc,CACvB,CAAC;QACF,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAE5C,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,UAAU;YAAE,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,QAAQ,KAAK,GAAG;YAAE,OAAO,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3E,IAAI,QAAQ,KAAK,MAAM;YAAE,OAAO,QAAQ,EAAE,CAAC;QAE3C,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAE9C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,QAAQ,YAAY,QAAQ;YAAE,OAAO,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC/E,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,SAAc;IACtC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,iBAAiB,CAAC;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,mBAAmB,EAAE,oCAAoC,CAAC,iBAAiB,CAAC;SAC7E,CAAC;QACF,QAAQ,EAAE;YACR,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,iBAAiB;YACjB,eAAe,EAAE,KAAK,CAAC,eAAe;SACvC;KACF,CAAC;AACJ,CAAC;AAQD,KAAK,UAAU,mBAAmB,CAChC,MAAkC;IAElC,0EAA0E;IAC1E,0EAA0E;IAC1E,sBAAsB;IACtB,MAAM,OAAO,GAAG,gBAAgB,CAC9B,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,EACpD,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,wBAAwB,EAAE,KAAK,CAAC,EAAE,CACrE,CAAC;IAEF,MAAM,OAAO,GAAoB;QAC/B,OAAO;QACP,WAAW,EAAE,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAChF,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;QACnF,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC;QACzF,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;KACxF,CAAC;IAEF,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,KAAK,OAAO,CAAC,KAAK,EAAE;aACjB,IAAI,CAAC,kCAAkC,CAAC;aACxC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,WAAW,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAElC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS;QAC/B,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI;QACxC,CAAC,CAAC,UAAU,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;IAE9C,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,aAA8B;IAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,EAAE;QACvC,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,sBAAsB,EAAE,KAAK,CAAC;KAC/D,CAAC,CAAC;IACH,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,YAAY;YAAE,OAAO;QACzB,YAAY,GAAG,IAAI,CAAC;QACpB,KAAK,MAAM,CAAC,KAAK,EAAE;aAChB,IAAI,CAAC,kCAAkC,CAAC;aACxC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,WAAW,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,UAAkB;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,UAAU,KAAK,SAAS,IAAI,eAAe,CAAC,UAAU,CAAC,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC;AACrF,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC,YAAY,EAAE;QAAE,OAAO,SAAS,CAAC;IAEtC,IAAI,CAAC;QACH,2EAA2E;QAC3E,0EAA0E;QAC1E,yBAAyB;QACzB,MAAM,+BAA+B,EAAE,CAAC;QAExC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,gBAAgB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,OAAQ,UAAgC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YACjE,OAAO,CAAC,KAAK,CACX,+EAA+E;gBAC7E,8DAA8D,CACjE,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,mBAAmB,CAAC,wBAAwB,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,eAAe,MAAM,SAAS,EAAE,CAAC"}