const __vite_ssr_import_0__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/vite-plus@1.3.0_@astrojs+compiler-rs@0.5.1_@tsc-rs+typescript@0.8.0_@types+node@24.12.4_7b48bcdbb35e6a86ee2230a6112d7cbc/node_modules/vite-plus/dist/test/index.js", {"importedNames":["describe","expect","it"]});
const __vite_ssr_import_1__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/unified@11.0.5/node_modules/unified/index.js", {"importedNames":["unified"]});
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/remark-parse@11.0.0_supports-color@8.1.1/node_modules/remark-parse/index.js", {"importedNames":["default"]});
const __vite_ssr_import_3__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/remark-gfm@4.0.1_supports-color@8.1.1/node_modules/remark-gfm/index.js", {"importedNames":["default"]});
const __vite_ssr_import_4__ = await __vite_ssr_import__("/src/lib/enrichedLinkPresentation.ts", {"importedNames":["ENRICHED_INLINE_FILE_LINK_REGEX"]});
const __vite_ssr_import_5__ = await __vite_ssr_import__("/src/lib/markdownDocument.ts", {"importedNames":["markdownForNativeRendering","markdownWithInlineFileLinks","parseMarkdownDocument","markdownWithHtml"]});






const rewrite = (markdown) => (0,__vite_ssr_import_5__.markdownWithInlineFileLinks)(markdown, (0,__vite_ssr_import_4__.ENRICHED_INLINE_FILE_LINK_REGEX));
(0,__vite_ssr_import_0__.describe)("inline code that names a file", () => {
	__vite_ssr_import_0__.it.each([
		["file links", "See `src/math.ts:2`, `C:\\repo\\a.ts`, `./src/a&copy;.ts`, and [`./README.md`](readme)."],
		["tables", "Intro `src/math.ts:2`\n| `./README.md` | Fit |\n|---|---|\n| `./a.ts` | A |\n\nMore\n| a |\n|---|\n| b |"],
		["escaped pipe in file header", "Intro text\n| `./a\\|b.ts` | c |\n|---|---|\n| a | b |"],
		["escaped pipe in file body", "Intro text\n| a | c |\n|---|---|\n| `./a\\|b.ts` | b |"],
		["escaped pipe after a normal file span", "Intro `./normal.ts`\n| `./a\\|b.ts` | c |\n|---|---|\n| a | b |"],
		["unmatched delimiter before escaped pipe in header", "Intro `./normal.ts`\n| `x``./a\\|b.ts`` | c |\n|---|---|\n|a|b|"],
		["unmatched delimiter before escaped pipe in body", "Intro `./normal.ts`\n| a | c |\n|---|---|\n| `x``./a\\|b.ts`` | b |"],
		["tabbed quote header", ">	Intro `./a.ts`\n>	| `./b.ts` | c |\n>	|---|---|\n>	| a | b |"],
		["lazy quote header", "> Intro\n`./README.md` | file\n> | - | - |\n> | ok | yes |"],
		["lazy list header", "- Intro\n`./README.md` | file\n  | - | - |\n  | ok | yes |"],
		["HTML", "<details>\n<summary>Files</summary>\n\nSee `src/math.ts:2`\n| `./README.md` |\n|---|\n| ok |\n<img alt=\"A &amp; B\" src=\"https://example.com/a.png?a=1&amp;b=2\">\n</details>"],
		["nested fences", "> - Example\n>   ````md\n>   ```ts\n>   `src/math.ts:2`\n>   <img src=\"literal.png\">\n>   | a |\n>   |---|\n>   ```\n>   ````\n\nSee `./README.md`."],
		["HTML fences", "<details>\n<summary>Example</summary>\n\n````md\n```html\n<img src=\"literal.png\">\n```\n`src/math.ts`\n````\n\nSee `./README.md`\n</details>"]
	])("preserves the two-pass output for every streamed prefix: %s", (_name, fixture) => {
		for (const ending of [
			"\n",
			"\r\n",
			"\r"
		]) {
			const document = fixture.replaceAll("\n", ending);
			for (let length = 0; length <= document.length; length++) {
				const prefix = document.slice(0, length);
				const expected = previousTableBreaks(previousFileLinks((0,__vite_ssr_import_5__.markdownWithHtml)(prefix), (0,__vite_ssr_import_4__.ENRICHED_INLINE_FILE_LINK_REGEX)));
				(0,__vite_ssr_import_0__.expect)((0,__vite_ssr_import_5__.markdownForNativeRendering)(prefix, (0,__vite_ssr_import_4__.ENRICHED_INLINE_FILE_LINK_REGEX)), JSON.stringify(prefix)).toBe(expected);
			}
		}
	});
	(0,__vite_ssr_import_0__.it)("becomes a link to the same path", () => {
		(0,__vite_ssr_import_0__.expect)(rewrite("See `src/math.ts:2` and `./README.md`.")).toBe("See [src/math.ts:2](<src/math.ts:2>) and [./README.md](<./README.md>).");
	});
	(0,__vite_ssr_import_0__.it)("keeps commands, identifiers and URLs as code", () => {
		const markdown = "Run `vp test run`, call `useMemo`, open `https://example.com/a.ts`.";
		(0,__vite_ssr_import_0__.expect)(rewrite(markdown)).toBe(markdown);
	});
	(0,__vite_ssr_import_0__.it)("leaves fenced code blocks and code already inside a link alone", () => {
		const markdown = "```\nsrc/math.ts:2\n```\n\n[`src/math.ts`](src/math.ts)";
		(0,__vite_ssr_import_0__.expect)(rewrite(markdown)).toBe(markdown);
	});
	(0,__vite_ssr_import_0__.it)("links to the exact path when it holds backslashes or ampersands", () => {
		for (const path of [
			"C:\\repo\\_private\\file.ts",
			"./src/a&copy;.ts",
			"./src/[id].ts"
		]) {
			const paragraph = (0,__vite_ssr_import_5__.parseMarkdownDocument)(rewrite(`\`${path}\``)).children[0];
			const link = paragraph?.type === "paragraph" ? paragraph.children[0] : undefined;
			(0,__vite_ssr_import_0__.expect)(link?.type === "link" && link.url).toBe(path);
			(0,__vite_ssr_import_0__.expect)(link?.type === "link" && link.children[0]?.type === "text" && link.children[0].value).toBe(path);
		}
	});
});
// Freeze the pre-optimization passes so shared transform regressions cannot change the oracle.
const parser = (0,__vite_ssr_import_1__.unified)().use((0,__vite_ssr_import_2__.default)).use((0,__vite_ssr_import_3__.default));
const INLINE_CODE_SPAN = /`+([^`\r\n]+)`+/g;
function previousFileLinks(markdown, fileLink) {
	if (![...markdown.matchAll(INLINE_CODE_SPAN)].some(([, code]) => fileLink.test(code.trim()))) return markdown;
	const edits = [];
	const visit = (node) => {
		if (node.type === "inlineCode") {
			const start = node.position?.start.offset;
			const end = node.position?.end.offset;
			const escaped = node.value.replace(/[\\[\]&]/g, "\\$&");
			if (start !== undefined && end !== undefined && fileLink.test(node.value) && !/[<>]/.test(node.value)) edits.push({
				start,
				end,
				content: `[${escaped}](<${escaped}>)`
			});
		} else if (node.type !== "link" && node.type !== "linkReference" && "children" in node) node.children.forEach(visit);
	};
	visit(parser.parse(markdown));
	for (const edit of edits.toReversed()) markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
	return markdown;
}
// A delimiter row such as `|---|:--:|`, possibly inside a blockquote or list item.
function isTableDelimiterRow(line) {
	if (!line.includes("-")) return false;
	const row = line.replace(/^[ \t>]+/, "").trim();
	return row.replace(/^\||\|$/g, "").split("|").every((cell) => /^:?-+:?$/.test(cell.trim()));
}
// Cheap pre-check for a delimiter row two lines below text, so most messages skip the parse.
function mayHaveTableUnderText(markdown) {
	if (!markdown.includes("|")) return false;
	const lines = markdown.split(/\r\n|\r|\n/);
	for (let index = 2; index < lines.length; index += 1) {
		if (isTableDelimiterRow(lines[index]) && /[^\s>]/.test(lines[index - 2])) return true;
	};
	return false;
}
/**
* GFM lets a table interrupt a paragraph, but the native parser (md4c) only starts a table
* on a paragraph's first line, so a table right under a line of text renders as one
* run-on paragraph. Insert the blank line md4c needs before each such table.
*/
function previousTableBreaks(markdown) {
	if (!mayHaveTableUnderText(markdown)) return markdown;
	const lineStarts = [];
	const visit = (node) => {
		if (!("children" in node)) return;
		node.children.forEach((child, index) => {
			const previous = node.children[index - 1];
			const start = child.position?.start;
			if (child.type === "table" && previous?.type === "paragraph" && start?.offset !== undefined && previous.position?.end.line === start.line - 1) lineStarts.push(Math.max(markdown.lastIndexOf("\n", start.offset - 1), markdown.lastIndexOf("\r", start.offset - 1)) + 1);
			visit(child);
		});
	};
	visit(parser.parse(markdown));
	for (const lineStart of lineStarts.toReversed()) {
		// The header row may be a lazy line without its container markers (`>` or list indent),
		// so copy the delimiter row's markers onto the blank line and the header row.
		const [, header = "", cells = "", ending = "\n", markers = ""] = /^([ \t>]*)([^\r\n]*)(\r\n|\r|\n)([ \t>]*)/.exec(markdown.slice(lineStart)) ?? [];
		markdown = markdown.slice(0, lineStart) + `${markers.trimEnd()}${ending}${markers}${cells}` + markdown.slice(lineStart + header.length + cells.length);
	};
	return markdown;
}
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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QUFRLEdBQUcsT0FBTztDQUM3QyxNQUFNLGFBQXVCLENBQUM7Q0FDOUIsTUFBTSxTQUFTLFNBQXVCO0VBQ3BDLElBQUksRUFBRSxjQUFjLE9BQU87RUFDM0IsS0FBSyxTQUFTLFNBQVMsT0FBTyxVQUFVO0dBQ3RDLE1BQU0sV0FBVyxLQUFLLFNBQVMsUUFBUTtHQUN2QyxNQUFNLFFBQVEsTUFBTSxVQUFVO0dBQzlCLElBQ0UsTUFBTSxTQUFTLFdBQ2YsVUFBVSxTQUFTLGVBQ25CLE9BQU8sV0FBVyxhQUNsQixTQUFTLFVBQVUsSUFBSSxTQUFTLE1BQU0sT0FBTyxHQUU3QyxXQUFXLEtBQ1QsS0FBSyxJQUNILFNBQVMsWUFBWSxNQUFNLE1BQU0sU0FBUyxDQUFDLEdBQzNDLFNBQVMsWUFBWSxNQUFNLE1BQU0sU0FBUyxDQUFDLENBQzdDLElBQUksQ0FDTjtHQUNGLE1BQU0sS0FBSztFQUNiLENBQUM7Q0FDSDtDQUNBLE1BQU0sT0FBTyxNQUFNLFFBQVEsQ0FBQztDQUM1QixLQUFLLE1BQU0sYUFBYSxXQUFXLFdBQVcsR0FBRzs7O0VBRy9DLE1BQU0sR0FBRyxTQUFTLElBQUksUUFBUSxJQUFJLFNBQVMsTUFBTSxVQUFVLE1BQ3pELDRDQUE0QyxLQUFLLFNBQVMsTUFBTSxTQUFTLENBQUMsS0FBSyxDQUFDO0VBQ2xGLFdBQ0UsU0FBUyxNQUFNLEdBQUcsU0FBUyxJQUMzQixHQUFHLFFBQVEsUUFBUSxJQUFJLFNBQVMsVUFBVSxVQUMxQyxTQUFTLE1BQU0sWUFBWSxPQUFPLFNBQVMsTUFBTSxNQUFNO0NBQzNEO0NBQ0EsT0FBTztBQUNUIiwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJtYXJrZG93bklubGluZUZpbGVMaW5rcy50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGUtcGx1cy90ZXN0XCI7XG5pbXBvcnQgeyB1bmlmaWVkIH0gZnJvbSBcInVuaWZpZWRcIjtcbmltcG9ydCByZW1hcmtQYXJzZSBmcm9tIFwicmVtYXJrLXBhcnNlXCI7XG5pbXBvcnQgcmVtYXJrR2ZtIGZyb20gXCJyZW1hcmstZ2ZtXCI7XG5pbXBvcnQgdHlwZSB7IFJvb3QsIFJvb3RDb250ZW50IH0gZnJvbSBcIm1kYXN0XCI7XG5pbXBvcnQgeyBFTlJJQ0hFRF9JTkxJTkVfRklMRV9MSU5LX1JFR0VYIH0gZnJvbSBcIi4vZW5yaWNoZWRMaW5rUHJlc2VudGF0aW9uXCI7XG5pbXBvcnQge1xuICBtYXJrZG93bkZvck5hdGl2ZVJlbmRlcmluZyxcbiAgbWFya2Rvd25XaXRoSW5saW5lRmlsZUxpbmtzLFxuICBwYXJzZU1hcmtkb3duRG9jdW1lbnQsXG4gIG1hcmtkb3duV2l0aEh0bWwsXG59IGZyb20gXCIuL21hcmtkb3duRG9jdW1lbnRcIjtcblxuY29uc3QgcmV3cml0ZSA9IChtYXJrZG93bjogc3RyaW5nKSA9PlxuICBtYXJrZG93bldpdGhJbmxpbmVGaWxlTGlua3MobWFya2Rvd24sIEVOUklDSEVEX0lOTElORV9GSUxFX0xJTktfUkVHRVgpO1xuXG5kZXNjcmliZShcImlubGluZSBjb2RlIHRoYXQgbmFtZXMgYSBmaWxlXCIsICgpID0+IHtcbiAgaXQuZWFjaChbXG4gICAgW1xuICAgICAgXCJmaWxlIGxpbmtzXCIsXG4gICAgICBcIlNlZSBgc3JjL21hdGgudHM6MmAsIGBDOlxcXFxyZXBvXFxcXGEudHNgLCBgLi9zcmMvYSZjb3B5Oy50c2AsIGFuZCBbYC4vUkVBRE1FLm1kYF0ocmVhZG1lKS5cIixcbiAgICBdLFxuICAgIFtcbiAgICAgIFwidGFibGVzXCIsXG4gICAgICBcIkludHJvIGBzcmMvbWF0aC50czoyYFxcbnwgYC4vUkVBRE1FLm1kYCB8IEZpdCB8XFxufC0tLXwtLS18XFxufCBgLi9hLnRzYCB8IEEgfFxcblxcbk1vcmVcXG58IGEgfFxcbnwtLS18XFxufCBiIHxcIixcbiAgICBdLFxuICAgIFtcImVzY2FwZWQgcGlwZSBpbiBmaWxlIGhlYWRlclwiLCBcIkludHJvIHRleHRcXG58IGAuL2FcXFxcfGIudHNgIHwgYyB8XFxufC0tLXwtLS18XFxufCBhIHwgYiB8XCJdLFxuICAgIFtcImVzY2FwZWQgcGlwZSBpbiBmaWxlIGJvZHlcIiwgXCJJbnRybyB0ZXh0XFxufCBhIHwgYyB8XFxufC0tLXwtLS18XFxufCBgLi9hXFxcXHxiLnRzYCB8IGIgfFwiXSxcbiAgICBbXG4gICAgICBcImVzY2FwZWQgcGlwZSBhZnRlciBhIG5vcm1hbCBmaWxlIHNwYW5cIixcbiAgICAgIFwiSW50cm8gYC4vbm9ybWFsLnRzYFxcbnwgYC4vYVxcXFx8Yi50c2AgfCBjIHxcXG58LS0tfC0tLXxcXG58IGEgfCBiIHxcIixcbiAgICBdLFxuICAgIFtcbiAgICAgIFwidW5tYXRjaGVkIGRlbGltaXRlciBiZWZvcmUgZXNjYXBlZCBwaXBlIGluIGhlYWRlclwiLFxuICAgICAgXCJJbnRybyBgLi9ub3JtYWwudHNgXFxufCBgeGBgLi9hXFxcXHxiLnRzYGAgfCBjIHxcXG58LS0tfC0tLXxcXG58YXxifFwiLFxuICAgIF0sXG4gICAgW1xuICAgICAgXCJ1bm1hdGNoZWQgZGVsaW1pdGVyIGJlZm9yZSBlc2NhcGVkIHBpcGUgaW4gYm9keVwiLFxuICAgICAgXCJJbnRybyBgLi9ub3JtYWwudHNgXFxufCBhIHwgYyB8XFxufC0tLXwtLS18XFxufCBgeGBgLi9hXFxcXHxiLnRzYGAgfCBiIHxcIixcbiAgICBdLFxuICAgIFtcInRhYmJlZCBxdW90ZSBoZWFkZXJcIiwgXCI+XFx0SW50cm8gYC4vYS50c2BcXG4+XFx0fCBgLi9iLnRzYCB8IGMgfFxcbj5cXHR8LS0tfC0tLXxcXG4+XFx0fCBhIHwgYiB8XCJdLFxuICAgIFtcImxhenkgcXVvdGUgaGVhZGVyXCIsIFwiPiBJbnRyb1xcbmAuL1JFQURNRS5tZGAgfCBmaWxlXFxuPiB8IC0gfCAtIHxcXG4+IHwgb2sgfCB5ZXMgfFwiXSxcbiAgICBbXCJsYXp5IGxpc3QgaGVhZGVyXCIsIFwiLSBJbnRyb1xcbmAuL1JFQURNRS5tZGAgfCBmaWxlXFxuICB8IC0gfCAtIHxcXG4gIHwgb2sgfCB5ZXMgfFwiXSxcbiAgICBbXG4gICAgICBcIkhUTUxcIixcbiAgICAgICc8ZGV0YWlscz5cXG48c3VtbWFyeT5GaWxlczwvc3VtbWFyeT5cXG5cXG5TZWUgYHNyYy9tYXRoLnRzOjJgXFxufCBgLi9SRUFETUUubWRgIHxcXG58LS0tfFxcbnwgb2sgfFxcbjxpbWcgYWx0PVwiQSAmYW1wOyBCXCIgc3JjPVwiaHR0cHM6Ly9leGFtcGxlLmNvbS9hLnBuZz9hPTEmYW1wO2I9MlwiPlxcbjwvZGV0YWlscz4nLFxuICAgIF0sXG4gICAgW1xuICAgICAgXCJuZXN0ZWQgZmVuY2VzXCIsXG4gICAgICAnPiAtIEV4YW1wbGVcXG4+ICAgYGBgYG1kXFxuPiAgIGBgYHRzXFxuPiAgIGBzcmMvbWF0aC50czoyYFxcbj4gICA8aW1nIHNyYz1cImxpdGVyYWwucG5nXCI+XFxuPiAgIHwgYSB8XFxuPiAgIHwtLS18XFxuPiAgIGBgYFxcbj4gICBgYGBgXFxuXFxuU2VlIGAuL1JFQURNRS5tZGAuJyxcbiAgICBdLFxuICAgIFtcbiAgICAgIFwiSFRNTCBmZW5jZXNcIixcbiAgICAgICc8ZGV0YWlscz5cXG48c3VtbWFyeT5FeGFtcGxlPC9zdW1tYXJ5PlxcblxcbmBgYGBtZFxcbmBgYGh0bWxcXG48aW1nIHNyYz1cImxpdGVyYWwucG5nXCI+XFxuYGBgXFxuYHNyYy9tYXRoLnRzYFxcbmBgYGBcXG5cXG5TZWUgYC4vUkVBRE1FLm1kYFxcbjwvZGV0YWlscz4nLFxuICAgIF0sXG4gIF0pKFwicHJlc2VydmVzIHRoZSB0d28tcGFzcyBvdXRwdXQgZm9yIGV2ZXJ5IHN0cmVhbWVkIHByZWZpeDogJXNcIiwgKF9uYW1lLCBmaXh0dXJlKSA9PiB7XG4gICAgZm9yIChjb25zdCBlbmRpbmcgb2YgW1wiXFxuXCIsIFwiXFxyXFxuXCIsIFwiXFxyXCJdKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGZpeHR1cmUucmVwbGFjZUFsbChcIlxcblwiLCBlbmRpbmcpO1xuICAgICAgZm9yIChsZXQgbGVuZ3RoID0gMDsgbGVuZ3RoIDw9IGRvY3VtZW50Lmxlbmd0aDsgbGVuZ3RoKyspIHtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gZG9jdW1lbnQuc2xpY2UoMCwgbGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWQgPSBwcmV2aW91c1RhYmxlQnJlYWtzKFxuICAgICAgICAgIHByZXZpb3VzRmlsZUxpbmtzKG1hcmtkb3duV2l0aEh0bWwocHJlZml4KSwgRU5SSUNIRURfSU5MSU5FX0ZJTEVfTElOS19SRUdFWCksXG4gICAgICAgICk7XG4gICAgICAgIGV4cGVjdChcbiAgICAgICAgICBtYXJrZG93bkZvck5hdGl2ZVJlbmRlcmluZyhwcmVmaXgsIEVOUklDSEVEX0lOTElORV9GSUxFX0xJTktfUkVHRVgpLFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHByZWZpeCksXG4gICAgICAgICkudG9CZShleHBlY3RlZCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBpdChcImJlY29tZXMgYSBsaW5rIHRvIHRoZSBzYW1lIHBhdGhcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChyZXdyaXRlKFwiU2VlIGBzcmMvbWF0aC50czoyYCBhbmQgYC4vUkVBRE1FLm1kYC5cIikpLnRvQmUoXG4gICAgICBcIlNlZSBbc3JjL21hdGgudHM6Ml0oPHNyYy9tYXRoLnRzOjI+KSBhbmQgWy4vUkVBRE1FLm1kXSg8Li9SRUFETUUubWQ+KS5cIixcbiAgICApO1xuICB9KTtcblxuICBpdChcImtlZXBzIGNvbW1hbmRzLCBpZGVudGlmaWVycyBhbmQgVVJMcyBhcyBjb2RlXCIsICgpID0+IHtcbiAgICBjb25zdCBtYXJrZG93biA9IFwiUnVuIGB2cCB0ZXN0IHJ1bmAsIGNhbGwgYHVzZU1lbW9gLCBvcGVuIGBodHRwczovL2V4YW1wbGUuY29tL2EudHNgLlwiO1xuICAgIGV4cGVjdChyZXdyaXRlKG1hcmtkb3duKSkudG9CZShtYXJrZG93bik7XG4gIH0pO1xuXG4gIGl0KFwibGVhdmVzIGZlbmNlZCBjb2RlIGJsb2NrcyBhbmQgY29kZSBhbHJlYWR5IGluc2lkZSBhIGxpbmsgYWxvbmVcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG1hcmtkb3duID0gXCJgYGBcXG5zcmMvbWF0aC50czoyXFxuYGBgXFxuXFxuW2BzcmMvbWF0aC50c2BdKHNyYy9tYXRoLnRzKVwiO1xuICAgIGV4cGVjdChyZXdyaXRlKG1hcmtkb3duKSkudG9CZShtYXJrZG93bik7XG4gIH0pO1xuXG4gIGl0KFwibGlua3MgdG8gdGhlIGV4YWN0IHBhdGggd2hlbiBpdCBob2xkcyBiYWNrc2xhc2hlcyBvciBhbXBlcnNhbmRzXCIsICgpID0+IHtcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgW1wiQzpcXFxccmVwb1xcXFxfcHJpdmF0ZVxcXFxmaWxlLnRzXCIsIFwiLi9zcmMvYSZjb3B5Oy50c1wiLCBcIi4vc3JjL1tpZF0udHNcIl0pIHtcbiAgICAgIGNvbnN0IHBhcmFncmFwaCA9IHBhcnNlTWFya2Rvd25Eb2N1bWVudChyZXdyaXRlKGBcXGAke3BhdGh9XFxgYCkpLmNoaWxkcmVuWzBdO1xuICAgICAgY29uc3QgbGluayA9IHBhcmFncmFwaD8udHlwZSA9PT0gXCJwYXJhZ3JhcGhcIiA/IHBhcmFncmFwaC5jaGlsZHJlblswXSA6IHVuZGVmaW5lZDtcbiAgICAgIGV4cGVjdChsaW5rPy50eXBlID09PSBcImxpbmtcIiAmJiBsaW5rLnVybCkudG9CZShwYXRoKTtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgbGluaz8udHlwZSA9PT0gXCJsaW5rXCIgJiYgbGluay5jaGlsZHJlblswXT8udHlwZSA9PT0gXCJ0ZXh0XCIgJiYgbGluay5jaGlsZHJlblswXS52YWx1ZSxcbiAgICAgICkudG9CZShwYXRoKTtcbiAgICB9XG4gIH0pO1xufSk7XG5cbi8vIEZyZWV6ZSB0aGUgcHJlLW9wdGltaXphdGlvbiBwYXNzZXMgc28gc2hhcmVkIHRyYW5zZm9ybSByZWdyZXNzaW9ucyBjYW5ub3QgY2hhbmdlIHRoZSBvcmFjbGUuXG5jb25zdCBwYXJzZXIgPSB1bmlmaWVkKCkudXNlKHJlbWFya1BhcnNlKS51c2UocmVtYXJrR2ZtKTtcbnR5cGUgTWFya2Rvd25Ob2RlID0gUm9vdCB8IFJvb3RDb250ZW50O1xuY29uc3QgSU5MSU5FX0NPREVfU1BBTiA9IC9gKyhbXmBcXHJcXG5dKylgKy9nO1xuXG5mdW5jdGlvbiBwcmV2aW91c0ZpbGVMaW5rcyhtYXJrZG93bjogc3RyaW5nLCBmaWxlTGluazogUmVnRXhwKTogc3RyaW5nIHtcbiAgaWYgKCFbLi4ubWFya2Rvd24ubWF0Y2hBbGwoSU5MSU5FX0NPREVfU1BBTildLnNvbWUoKFssIGNvZGVdKSA9PiBmaWxlTGluay50ZXN0KGNvZGUhLnRyaW0oKSkpKVxuICAgIHJldHVybiBtYXJrZG93bjtcbiAgY29uc3QgZWRpdHM6IEFycmF5PHsgc3RhcnQ6IG51bWJlcjsgZW5kOiBudW1iZXI7IGNvbnRlbnQ6IHN0cmluZyB9PiA9IFtdO1xuICBjb25zdCB2aXNpdCA9IChub2RlOiBNYXJrZG93bk5vZGUpID0+IHtcbiAgICBpZiAobm9kZS50eXBlID09PSBcImlubGluZUNvZGVcIikge1xuICAgICAgY29uc3Qgc3RhcnQgPSBub2RlLnBvc2l0aW9uPy5zdGFydC5vZmZzZXQ7XG4gICAgICBjb25zdCBlbmQgPSBub2RlLnBvc2l0aW9uPy5lbmQub2Zmc2V0O1xuICAgICAgY29uc3QgZXNjYXBlZCA9IG5vZGUudmFsdWUucmVwbGFjZSgvW1xcXFxbXFxdJl0vZywgXCJcXFxcJCZcIik7XG4gICAgICBpZiAoXG4gICAgICAgIHN0YXJ0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgZW5kICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgZmlsZUxpbmsudGVzdChub2RlLnZhbHVlKSAmJlxuICAgICAgICAhL1s8Pl0vLnRlc3Qobm9kZS52YWx1ZSlcbiAgICAgIClcbiAgICAgICAgZWRpdHMucHVzaCh7XG4gICAgICAgICAgc3RhcnQsXG4gICAgICAgICAgZW5kLFxuICAgICAgICAgIGNvbnRlbnQ6IGBbJHtlc2NhcGVkfV0oPCR7ZXNjYXBlZH0+KWAsXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAobm9kZS50eXBlICE9PSBcImxpbmtcIiAmJiBub2RlLnR5cGUgIT09IFwibGlua1JlZmVyZW5jZVwiICYmIFwiY2hpbGRyZW5cIiBpbiBub2RlKVxuICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKHZpc2l0KTtcbiAgfTtcbiAgdmlzaXQocGFyc2VyLnBhcnNlKG1hcmtkb3duKSk7XG4gIGZvciAoY29uc3QgZWRpdCBvZiBlZGl0cy50b1JldmVyc2VkKCkpXG4gICAgbWFya2Rvd24gPSBtYXJrZG93bi5zbGljZSgwLCBlZGl0LnN0YXJ0KSArIGVkaXQuY29udGVudCArIG1hcmtkb3duLnNsaWNlKGVkaXQuZW5kKTtcbiAgcmV0dXJuIG1hcmtkb3duO1xufVxuXG4vLyBBIGRlbGltaXRlciByb3cgc3VjaCBhcyBgfC0tLXw6LS06fGAsIHBvc3NpYmx5IGluc2lkZSBhIGJsb2NrcXVvdGUgb3IgbGlzdCBpdGVtLlxuZnVuY3Rpb24gaXNUYWJsZURlbGltaXRlclJvdyhsaW5lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKCFsaW5lLmluY2x1ZGVzKFwiLVwiKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCByb3cgPSBsaW5lLnJlcGxhY2UoL15bIFxcdD5dKy8sIFwiXCIpLnRyaW0oKTtcbiAgcmV0dXJuIHJvd1xuICAgIC5yZXBsYWNlKC9eXFx8fFxcfCQvZywgXCJcIilcbiAgICAuc3BsaXQoXCJ8XCIpXG4gICAgLmV2ZXJ5KChjZWxsKSA9PiAvXjo/LSs6PyQvLnRlc3QoY2VsbC50cmltKCkpKTtcbn1cblxuLy8gQ2hlYXAgcHJlLWNoZWNrIGZvciBhIGRlbGltaXRlciByb3cgdHdvIGxpbmVzIGJlbG93IHRleHQsIHNvIG1vc3QgbWVzc2FnZXMgc2tpcCB0aGUgcGFyc2UuXG5mdW5jdGlvbiBtYXlIYXZlVGFibGVVbmRlclRleHQobWFya2Rvd246IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoIW1hcmtkb3duLmluY2x1ZGVzKFwifFwiKSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBsaW5lcyA9IG1hcmtkb3duLnNwbGl0KC9cXHJcXG58XFxyfFxcbi8pO1xuICBmb3IgKGxldCBpbmRleCA9IDI7IGluZGV4IDwgbGluZXMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgaWYgKGlzVGFibGVEZWxpbWl0ZXJSb3cobGluZXNbaW5kZXhdISkgJiYgL1teXFxzPl0vLnRlc3QobGluZXNbaW5kZXggLSAyXSEpKSByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogR0ZNIGxldHMgYSB0YWJsZSBpbnRlcnJ1cHQgYSBwYXJhZ3JhcGgsIGJ1dCB0aGUgbmF0aXZlIHBhcnNlciAobWQ0Yykgb25seSBzdGFydHMgYSB0YWJsZVxuICogb24gYSBwYXJhZ3JhcGgncyBmaXJzdCBsaW5lLCBzbyBhIHRhYmxlIHJpZ2h0IHVuZGVyIGEgbGluZSBvZiB0ZXh0IHJlbmRlcnMgYXMgb25lXG4gKiBydW4tb24gcGFyYWdyYXBoLiBJbnNlcnQgdGhlIGJsYW5rIGxpbmUgbWQ0YyBuZWVkcyBiZWZvcmUgZWFjaCBzdWNoIHRhYmxlLlxuICovXG5mdW5jdGlvbiBwcmV2aW91c1RhYmxlQnJlYWtzKG1hcmtkb3duOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIW1heUhhdmVUYWJsZVVuZGVyVGV4dChtYXJrZG93bikpIHJldHVybiBtYXJrZG93bjtcbiAgY29uc3QgbGluZVN0YXJ0czogbnVtYmVyW10gPSBbXTtcbiAgY29uc3QgdmlzaXQgPSAobm9kZTogTWFya2Rvd25Ob2RlKSA9PiB7XG4gICAgaWYgKCEoXCJjaGlsZHJlblwiIGluIG5vZGUpKSByZXR1cm47XG4gICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHByZXZpb3VzID0gbm9kZS5jaGlsZHJlbltpbmRleCAtIDFdO1xuICAgICAgY29uc3Qgc3RhcnQgPSBjaGlsZC5wb3NpdGlvbj8uc3RhcnQ7XG4gICAgICBpZiAoXG4gICAgICAgIGNoaWxkLnR5cGUgPT09IFwidGFibGVcIiAmJlxuICAgICAgICBwcmV2aW91cz8udHlwZSA9PT0gXCJwYXJhZ3JhcGhcIiAmJlxuICAgICAgICBzdGFydD8ub2Zmc2V0ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgcHJldmlvdXMucG9zaXRpb24/LmVuZC5saW5lID09PSBzdGFydC5saW5lIC0gMVxuICAgICAgKVxuICAgICAgICBsaW5lU3RhcnRzLnB1c2goXG4gICAgICAgICAgTWF0aC5tYXgoXG4gICAgICAgICAgICBtYXJrZG93bi5sYXN0SW5kZXhPZihcIlxcblwiLCBzdGFydC5vZmZzZXQgLSAxKSxcbiAgICAgICAgICAgIG1hcmtkb3duLmxhc3RJbmRleE9mKFwiXFxyXCIsIHN0YXJ0Lm9mZnNldCAtIDEpLFxuICAgICAgICAgICkgKyAxLFxuICAgICAgICApO1xuICAgICAgdmlzaXQoY2hpbGQpO1xuICAgIH0pO1xuICB9O1xuICB2aXNpdChwYXJzZXIucGFyc2UobWFya2Rvd24pKTtcbiAgZm9yIChjb25zdCBsaW5lU3RhcnQgb2YgbGluZVN0YXJ0cy50b1JldmVyc2VkKCkpIHtcbiAgICAvLyBUaGUgaGVhZGVyIHJvdyBtYXkgYmUgYSBsYXp5IGxpbmUgd2l0aG91dCBpdHMgY29udGFpbmVyIG1hcmtlcnMgKGA+YCBvciBsaXN0IGluZGVudCksXG4gICAgLy8gc28gY29weSB0aGUgZGVsaW1pdGVyIHJvdydzIG1hcmtlcnMgb250byB0aGUgYmxhbmsgbGluZSBhbmQgdGhlIGhlYWRlciByb3cuXG4gICAgY29uc3QgWywgaGVhZGVyID0gXCJcIiwgY2VsbHMgPSBcIlwiLCBlbmRpbmcgPSBcIlxcblwiLCBtYXJrZXJzID0gXCJcIl0gPVxuICAgICAgL14oWyBcXHQ+XSopKFteXFxyXFxuXSopKFxcclxcbnxcXHJ8XFxuKShbIFxcdD5dKikvLmV4ZWMobWFya2Rvd24uc2xpY2UobGluZVN0YXJ0KSkgPz8gW107XG4gICAgbWFya2Rvd24gPVxuICAgICAgbWFya2Rvd24uc2xpY2UoMCwgbGluZVN0YXJ0KSArXG4gICAgICBgJHttYXJrZXJzLnRyaW1FbmQoKX0ke2VuZGluZ30ke21hcmtlcnN9JHtjZWxsc31gICtcbiAgICAgIG1hcmtkb3duLnNsaWNlKGxpbmVTdGFydCArIGhlYWRlci5sZW5ndGggKyBjZWxscy5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBtYXJrZG93bjtcbn1cbiJdLCJmaWxlIjoiL3NyYy9saWIvbWFya2Rvd25JbmxpbmVGaWxlTGlua3MudGVzdC50cyJ9

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvYXBwcy9tb2JpbGUvc3JjL2xpYi9tYXJrZG93bklubGluZUZpbGVMaW5rcy50ZXN0LnRzIiwiL3NyYy9saWIvbWFya2Rvd25JbmxpbmVGaWxlTGlua3MudGVzdC50cyIseyJ1cmxzIjoiNiIsImlkcyI6IjcifSxbIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiXSxbXSxbIjgiLCI5IiwiMTAiLCIxMSIsIjEyIiwiMTMiXSx7fSwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9ub2RlX21vZHVsZXMvLnBucG0vdml0ZS1wbHVzQDEuMy4wX0Bhc3Ryb2pzK2NvbXBpbGVyLXJzQDAuNS4xX0B0c2MtcnMrdHlwZXNjcmlwdEAwLjguMF9AdHlwZXMrbm9kZUAyNC4xMi40XzdiNDhiY2RiYjM1ZTZhODZlZTIyMzBhNjExMmQ3Y2JjL25vZGVfbW9kdWxlcy92aXRlLXBsdXMvZGlzdC90ZXN0L2luZGV4LmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9ub2RlX21vZHVsZXMvLnBucG0vdW5pZmllZEAxMS4wLjUvbm9kZV9tb2R1bGVzL3VuaWZpZWQvaW5kZXguanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL25vZGVfbW9kdWxlcy8ucG5wbS9yZW1hcmstcGFyc2VAMTEuMC4wX3N1cHBvcnRzLWNvbG9yQDguMS4xL25vZGVfbW9kdWxlcy9yZW1hcmstcGFyc2UvaW5kZXguanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL25vZGVfbW9kdWxlcy8ucG5wbS9yZW1hcmstZ2ZtQDQuMC4xX3N1cHBvcnRzLWNvbG9yQDguMS4xL25vZGVfbW9kdWxlcy9yZW1hcmstZ2ZtL2luZGV4LmpzIiwiL3NyYy9saWIvZW5yaWNoZWRMaW5rUHJlc2VudGF0aW9uLnRzIiwiL3NyYy9saWIvbWFya2Rvd25Eb2N1bWVudC50cyJd