@workflow/web 5.0.0-beta.10 → 5.0.0-beta.12
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/build/client/assets/{encryption-B7z5c3Mu.js → encryption-g14N5vQl.js} +2 -2
- package/build/client/assets/{entry.client-DtOpLtMQ.js → entry.client-DOJDY_4b.js} +1 -1
- package/build/client/assets/{highlighted-body-B3W2YXNL-khW-t_B-.js → highlighted-body-B3W2YXNL-DmlmGvFd.js} +2 -2
- package/build/client/assets/{home-DKDz-tU-.js → home-BQRPxkXT.js} +4 -14
- package/build/client/assets/{index-CIZByfnL.js → index-B6-SzLmT.js} +1 -1
- package/build/client/assets/{index-BsV8i_Jn.js → index-BXZSIDEp.js} +2 -2
- package/build/client/assets/{manifest-a33ce94a.js → manifest-b8838010.js} +1 -1
- package/build/client/assets/{mermaid-3ZIDBTTL-DPZjJwuX.js → mermaid-3ZIDBTTL-CeSti4VQ.js} +246 -115
- package/build/client/assets/{root-DJKbeamD.js → root-8wYQKqnE.js} +2 -2
- package/build/client/assets/root-DvB36HGI.css +1 -0
- package/build/client/assets/{run-detail-ekQSEj_z.js → run-detail-Dn4QeKHW.js} +112 -50
- package/build/client/assets/server-build-B5Dibl7P.css +1 -0
- package/build/client/assets/{workflow-graph-viewer-DjlqbXVx.js → workflow-graph-viewer-CxZS9r2o.js} +3 -3
- package/build/server/assets/{app-Cgrcb-fS.js → app-D-W9Jr82.js} +1 -1
- package/build/server/assets/{highlighted-body-B3W2YXNL-BCA9A7WB.js → highlighted-body-B3W2YXNL-CcRpp5rq.js} +2 -2
- package/build/server/assets/{index-VP-TIWDS.js → index-BUU6Hdm_.js} +3 -3
- package/build/server/assets/{mermaid-3ZIDBTTL-CbLetKvR.js → mermaid-3ZIDBTTL-Nh9-IDfL.js} +2 -2
- package/build/server/assets/{server-build-ClDPbfo3.js → server-build-BshzAvNv.js} +1983 -533
- package/build/server/assets/{token-BxPrGSQ5.js → token-BaJALexf.js} +2 -2
- package/build/server/assets/{token-util-Bmrakd6M.js → token-util-Bc0jltWL.js} +2 -2
- package/build/server/index.js +1 -1
- package/package.json +6 -6
- package/build/client/assets/root-BYtlAgHl.css +0 -1
- package/build/client/assets/server-build-ByHD2s6b.css +0 -1
|
@@ -14,8 +14,8 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
|
|
|
14
14
|
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
15
15
|
var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
|
|
16
16
|
var _a2, _b, _c, _listeners, _onabort, _reader, _root, _hasMagic, _uflag, _parts, _parent, _parentIndex, _negs, _filledNegs, _options, _toString, _emptyExt, _AST_instances, fillNegs_fn, _AST_static, parseAST_fn, canAdoptWithSpace_fn, canAdopt_fn, canAdoptType_fn, adoptWithSpace_fn, adopt_fn, canUsurpType_fn, canUsurp_fn, usurp_fn, flatten_fn, partsToRegExp_fn, parseGlob_fn, _Minimatch_instances, matchGlobstar_fn, matchGlobStarBodySections_fn, matchOne_fn, _worldPromise, _Run_instances, lazyWorldPromise_get, _encryptionKeyPromise, _resilientStart, getEncryptionKey_fn, pollReturnValue_fn;
|
|
17
|
-
import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-
|
|
18
|
-
import require$$0$
|
|
17
|
+
import { a as requireReact, S as ServerRouter, c as createReadableStreamFromReadable, r as reactExports, g as getDefaultExportFromCjs, R as React, b as ReactExports, w as withComponentProps, d as withErrorBoundaryProps, M as Meta, L as Links, e as ScrollRestoration, f as Scripts, O as Outlet, u as useNavigate, h as useSearchParams, i as Link$1, j as useRouteError, k as isRouteErrorResponse, l as useLocation, m as useParams } from "./app-D-W9Jr82.js";
|
|
18
|
+
import require$$0$4, { PassThrough } from "node:stream";
|
|
19
19
|
import require$$0 from "util";
|
|
20
20
|
import require$$1 from "crypto";
|
|
21
21
|
import require$$2 from "async_hooks";
|
|
@@ -23,32 +23,32 @@ import require$$5 from "stream";
|
|
|
23
23
|
import crypto, { createHash, webcrypto } from "node:crypto";
|
|
24
24
|
import minproc from "node:process";
|
|
25
25
|
import path$3, { join as join$1, resolve, dirname, isAbsolute, sep as sep$1 } from "node:path";
|
|
26
|
-
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
26
|
+
import require$$1$2, { fileURLToPath, pathToFileURL } from "node:url";
|
|
27
27
|
import { createRequire } from "module";
|
|
28
28
|
import fs$1, { readdir, readlink, readFile, mkdir, access, constants as constants$6, writeFile, unlink, rm } from "node:fs/promises";
|
|
29
29
|
import require$$3, { types as types$3, promisify, inspect } from "node:util";
|
|
30
|
-
import require$$1$
|
|
30
|
+
import require$$1$3, { AsyncLocalStorage } from "node:async_hooks";
|
|
31
31
|
import { createRequire as createRequire$1 } from "node:module";
|
|
32
32
|
import { promises } from "node:fs";
|
|
33
33
|
import { execFile } from "node:child_process";
|
|
34
34
|
import { setTimeout as setTimeout$1 } from "node:timers/promises";
|
|
35
35
|
import require$$0$1 from "events";
|
|
36
|
-
import require$$0$
|
|
37
|
-
import require$$0$
|
|
36
|
+
import require$$0$3 from "node:assert";
|
|
37
|
+
import require$$0$5 from "node:net";
|
|
38
38
|
import require$$2$1 from "node:http";
|
|
39
39
|
import require$$5$1 from "node:querystring";
|
|
40
|
-
import require$$
|
|
41
|
-
import require$$0$
|
|
40
|
+
import require$$0$2, { EventEmitter } from "node:events";
|
|
41
|
+
import require$$0$6 from "node:diagnostics_channel";
|
|
42
42
|
import require$$4 from "node:tls";
|
|
43
|
-
import require$$0$
|
|
43
|
+
import require$$0$7 from "node:buffer";
|
|
44
44
|
import require$$3$1 from "node:zlib";
|
|
45
45
|
import require$$5$2 from "node:perf_hooks";
|
|
46
46
|
import require$$8 from "node:util/types";
|
|
47
47
|
import require$$1$1 from "node:sqlite";
|
|
48
48
|
import require$$2$2 from "node:worker_threads";
|
|
49
|
-
import require$$1$
|
|
49
|
+
import require$$1$4 from "node:console";
|
|
50
50
|
import require$$2$3 from "node:timers";
|
|
51
|
-
import require$$1$
|
|
51
|
+
import require$$1$5 from "node:dns";
|
|
52
52
|
import * as path$2 from "path";
|
|
53
53
|
import path__default from "path";
|
|
54
54
|
import * as fs from "fs";
|
|
@@ -26078,7 +26078,7 @@ var Anchor$1 = PopperAnchor$1;
|
|
|
26078
26078
|
var Content$4 = PopperContent$1;
|
|
26079
26079
|
var Arrow$3 = PopperArrow$1;
|
|
26080
26080
|
var PORTAL_NAME$9 = "Portal";
|
|
26081
|
-
var Portal$
|
|
26081
|
+
var Portal$7 = reactExports.forwardRef((props, forwardedRef) => {
|
|
26082
26082
|
var _a3;
|
|
26083
26083
|
const { container: containerProp, ...portalProps } = props;
|
|
26084
26084
|
const [mounted, setMounted] = reactExports.useState(false);
|
|
@@ -26086,7 +26086,7 @@ var Portal$6 = reactExports.forwardRef((props, forwardedRef) => {
|
|
|
26086
26086
|
const container = containerProp || mounted && ((_a3 = globalThis == null ? void 0 : globalThis.document) == null ? void 0 : _a3.body);
|
|
26087
26087
|
return container ? ReactDOM.createPortal(/* @__PURE__ */ jsxRuntimeExports.jsx(Primitive$2.div, { ...portalProps, ref: forwardedRef }), container) : null;
|
|
26088
26088
|
});
|
|
26089
|
-
Portal$
|
|
26089
|
+
Portal$7.displayName = PORTAL_NAME$9;
|
|
26090
26090
|
function useStateMachine$1(initialState2, machine) {
|
|
26091
26091
|
return reactExports.useReducer((state, event) => {
|
|
26092
26092
|
const nextState = machine[state][event];
|
|
@@ -26312,7 +26312,7 @@ var PROVIDER_NAME = "TooltipProvider";
|
|
|
26312
26312
|
var DEFAULT_DELAY_DURATION = 700;
|
|
26313
26313
|
var TOOLTIP_OPEN = "tooltip.open";
|
|
26314
26314
|
var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
|
|
26315
|
-
var TooltipProvider = (props) => {
|
|
26315
|
+
var TooltipProvider$1 = (props) => {
|
|
26316
26316
|
const {
|
|
26317
26317
|
__scopeTooltip,
|
|
26318
26318
|
delayDuration = DEFAULT_DELAY_DURATION,
|
|
@@ -26353,10 +26353,10 @@ var TooltipProvider = (props) => {
|
|
|
26353
26353
|
}
|
|
26354
26354
|
);
|
|
26355
26355
|
};
|
|
26356
|
-
TooltipProvider.displayName = PROVIDER_NAME;
|
|
26356
|
+
TooltipProvider$1.displayName = PROVIDER_NAME;
|
|
26357
26357
|
var TOOLTIP_NAME = "Tooltip";
|
|
26358
26358
|
var [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);
|
|
26359
|
-
var Tooltip$
|
|
26359
|
+
var Tooltip$2 = (props) => {
|
|
26360
26360
|
const {
|
|
26361
26361
|
__scopeTooltip,
|
|
26362
26362
|
children: children2,
|
|
@@ -26446,9 +26446,9 @@ var Tooltip$1 = (props) => {
|
|
|
26446
26446
|
}
|
|
26447
26447
|
) });
|
|
26448
26448
|
};
|
|
26449
|
-
Tooltip$
|
|
26449
|
+
Tooltip$2.displayName = TOOLTIP_NAME;
|
|
26450
26450
|
var TRIGGER_NAME$6 = "TooltipTrigger";
|
|
26451
|
-
var TooltipTrigger$
|
|
26451
|
+
var TooltipTrigger$2 = reactExports.forwardRef(
|
|
26452
26452
|
(props, forwardedRef) => {
|
|
26453
26453
|
const { __scopeTooltip, ...triggerProps } = props;
|
|
26454
26454
|
const context = useTooltipContext(TRIGGER_NAME$6, __scopeTooltip);
|
|
@@ -26496,13 +26496,19 @@ var TooltipTrigger$1 = reactExports.forwardRef(
|
|
|
26496
26496
|
) });
|
|
26497
26497
|
}
|
|
26498
26498
|
);
|
|
26499
|
-
TooltipTrigger$
|
|
26499
|
+
TooltipTrigger$2.displayName = TRIGGER_NAME$6;
|
|
26500
26500
|
var PORTAL_NAME$8 = "TooltipPortal";
|
|
26501
26501
|
var [PortalProvider$3, usePortalContext$3] = createTooltipContext(PORTAL_NAME$8, {
|
|
26502
26502
|
forceMount: void 0
|
|
26503
26503
|
});
|
|
26504
|
+
var TooltipPortal$1 = (props) => {
|
|
26505
|
+
const { __scopeTooltip, forceMount, children: children2, container } = props;
|
|
26506
|
+
const context = useTooltipContext(PORTAL_NAME$8, __scopeTooltip);
|
|
26507
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider$3, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Presence$1, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$7, { asChild: true, container, children: children2 }) }) });
|
|
26508
|
+
};
|
|
26509
|
+
TooltipPortal$1.displayName = PORTAL_NAME$8;
|
|
26504
26510
|
var CONTENT_NAME$8 = "TooltipContent";
|
|
26505
|
-
var TooltipContent$
|
|
26511
|
+
var TooltipContent$2 = reactExports.forwardRef(
|
|
26506
26512
|
(props, forwardedRef) => {
|
|
26507
26513
|
const portalContext = usePortalContext$3(CONTENT_NAME$8, props.__scopeTooltip);
|
|
26508
26514
|
const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
|
|
@@ -26637,7 +26643,7 @@ var TooltipContentImpl = reactExports.forwardRef(
|
|
|
26637
26643
|
);
|
|
26638
26644
|
}
|
|
26639
26645
|
);
|
|
26640
|
-
TooltipContent$
|
|
26646
|
+
TooltipContent$2.displayName = CONTENT_NAME$8;
|
|
26641
26647
|
var ARROW_NAME$4 = "TooltipArrow";
|
|
26642
26648
|
var TooltipArrow = reactExports.forwardRef(
|
|
26643
26649
|
(props, forwardedRef) => {
|
|
@@ -26766,9 +26772,12 @@ function getHullPresorted(points) {
|
|
|
26766
26772
|
return upperHull.concat(lowerHull);
|
|
26767
26773
|
}
|
|
26768
26774
|
}
|
|
26769
|
-
var
|
|
26770
|
-
var
|
|
26771
|
-
var
|
|
26775
|
+
var Provider$2 = TooltipProvider$1;
|
|
26776
|
+
var Root3$1 = Tooltip$2;
|
|
26777
|
+
var Trigger$4 = TooltipTrigger$2;
|
|
26778
|
+
var Portal$6 = TooltipPortal$1;
|
|
26779
|
+
var Content2$4 = TooltipContent$2;
|
|
26780
|
+
var Arrow2$1 = TooltipArrow;
|
|
26772
26781
|
var M$2 = (e, i, s2, u4, m2, a2, l, h2) => {
|
|
26773
26782
|
let d2 = document.documentElement, w2 = ["light", "dark"];
|
|
26774
26783
|
function p2(n) {
|
|
@@ -48932,6 +48941,11 @@ const WorkflowInvokePayloadSchema = object$1({
|
|
|
48932
48941
|
runId: string$3(),
|
|
48933
48942
|
traceCarrier: TraceCarrierSchema.optional(),
|
|
48934
48943
|
requestedAt: date$2().optional(),
|
|
48944
|
+
/** Consecutive replay divergences in this recovery chain and latest position. */
|
|
48945
|
+
replayDivergence: object$1({
|
|
48946
|
+
eventId: string$3(),
|
|
48947
|
+
count: number$3().int().positive()
|
|
48948
|
+
}).optional(),
|
|
48935
48949
|
/** Number of times this message has been re-enqueued due to server errors (5xx) */
|
|
48936
48950
|
serverErrorRetryCount: number$3().int().optional(),
|
|
48937
48951
|
/** Step ID for inline step execution in combined handler. If provided, the flow execution
|
|
@@ -49412,7 +49426,8 @@ function getWebRevivers() {
|
|
|
49412
49426
|
// Error family. The reducer side (see
|
|
49413
49427
|
// `packages/core/src/serialization/reducers/common.ts`) emits a tagged
|
|
49414
49428
|
// entry for each built-in Error subclass plus the workflow-specific
|
|
49415
|
-
// `FatalError` / `RetryableError`
|
|
49429
|
+
// `FatalError` / `RetryableError` / `HookConflictError` /
|
|
49430
|
+
// `RuntimeDecryptionError` and `AggregateError`. Without
|
|
49416
49431
|
// matching revivers here, `devalue.unflatten` throws "Unknown type X"
|
|
49417
49432
|
// — which surfaces in the web o11y UI as "Failed to load resource
|
|
49418
49433
|
// details: Unknown type FatalError".
|
|
@@ -49458,6 +49473,18 @@ function getWebRevivers() {
|
|
|
49458
49473
|
error2.stack = value.stack;
|
|
49459
49474
|
return error2;
|
|
49460
49475
|
},
|
|
49476
|
+
HookConflictError: (value) => {
|
|
49477
|
+
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
49478
|
+
const error2 = new Error(value.message, opts);
|
|
49479
|
+
error2.name = "HookConflictError";
|
|
49480
|
+
error2.token = value.token;
|
|
49481
|
+
if (value.conflictingRunId !== void 0) {
|
|
49482
|
+
error2.conflictingRunId = value.conflictingRunId;
|
|
49483
|
+
}
|
|
49484
|
+
if (value.stack !== void 0)
|
|
49485
|
+
error2.stack = value.stack;
|
|
49486
|
+
return error2;
|
|
49487
|
+
},
|
|
49461
49488
|
RetryableError: (value) => {
|
|
49462
49489
|
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
49463
49490
|
const error2 = new Error(value.message, opts);
|
|
@@ -49469,6 +49496,17 @@ function getWebRevivers() {
|
|
|
49469
49496
|
}
|
|
49470
49497
|
return error2;
|
|
49471
49498
|
},
|
|
49499
|
+
RuntimeDecryptionError: (value) => {
|
|
49500
|
+
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
49501
|
+
const error2 = new Error(value.message, opts);
|
|
49502
|
+
error2.name = "RuntimeDecryptionError";
|
|
49503
|
+
if (value.context !== void 0) {
|
|
49504
|
+
error2.context = value.context;
|
|
49505
|
+
}
|
|
49506
|
+
if (value.stack !== void 0)
|
|
49507
|
+
error2.stack = value.stack;
|
|
49508
|
+
return error2;
|
|
49509
|
+
},
|
|
49472
49510
|
DOMException: (value) => {
|
|
49473
49511
|
const G2 = globalThis;
|
|
49474
49512
|
if (typeof G2.DOMException === "function") {
|
|
@@ -80618,7 +80656,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
|
|
|
80618
80656
|
var et = ({ className: e, language: t, style: o, isIncomplete: n, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e), "data-incomplete": n || void 0, "data-language": t, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o }, ...s2 });
|
|
80619
80657
|
var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
|
|
80620
80658
|
var ot = ({ language: e }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e }) });
|
|
80621
|
-
var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-
|
|
80659
|
+
var cn$1 = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-CcRpp5rq.js").then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
|
|
80622
80660
|
let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
|
|
80623
80661
|
`).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
|
|
80624
80662
|
return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e }, children: jsxRuntimeExports.jsxs(et, { isIncomplete: s2, language: t, children: [jsxRuntimeExports.jsx(ot, { language: t }), n ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe, { className: o, language: t, result: c, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o, code: i, language: t, raw: c, ...r2 }) })] }) });
|
|
@@ -80940,7 +80978,7 @@ var Dt = ({ children: e, className: t, onDownload: o, onError: n }) => {
|
|
|
80940
80978
|
}, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i, children: [jsxRuntimeExports.jsx("button", { className: f("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t), disabled: c, onClick: () => r2(!s2), title: "Download table", type: "button", children: e != null ? e : jsxRuntimeExports.jsx(Z, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
|
|
80941
80979
|
};
|
|
80942
80980
|
var Vt = ({ children: e, className: t, showControls: o, ...n }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f("w-full divide-y divide-border", t), "data-streamdown": "table", ...n, children: e }) })] });
|
|
80943
|
-
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-
|
|
80981
|
+
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-Nh9-IDfL.js").then((e) => ({ default: e.Mermaid }))), Kn = /language-([^\s]+)/;
|
|
80944
80982
|
function ke(e, t) {
|
|
80945
80983
|
if (!(e != null && e.position || t != null && t.position)) return true;
|
|
80946
80984
|
if (!(e != null && e.position && (t != null && t.position))) return false;
|
|
@@ -83585,8 +83623,58 @@ const iconButtonVariants = cva([
|
|
|
83585
83623
|
size: "tiny"
|
|
83586
83624
|
}
|
|
83587
83625
|
});
|
|
83588
|
-
|
|
83589
|
-
|
|
83626
|
+
const IconButton = reactExports.forwardRef(({ className, variant, size: size2, type = "button", ...props }, ref) => jsxRuntimeExports.jsx("button", { ref, type, className: cn$4(iconButtonVariants({ variant, size: size2, className })), ...props }));
|
|
83627
|
+
IconButton.displayName = "IconButton";
|
|
83628
|
+
const COL_TEMPLATE = "340px 1px minmax(50px, 1fr)";
|
|
83629
|
+
const ROWS = [
|
|
83630
|
+
{ id: "r0", name: 62, off: 0, bar: 72 },
|
|
83631
|
+
{ id: "r1", name: 78, off: 6, bar: 48 },
|
|
83632
|
+
{ id: "r2", name: 50, off: 10, bar: 55 },
|
|
83633
|
+
{ id: "r3", name: 84, off: 18, bar: 30 },
|
|
83634
|
+
{ id: "r4", name: 45, off: 18, bar: 42 },
|
|
83635
|
+
{ id: "r5", name: 66, off: 34, bar: 38 },
|
|
83636
|
+
{ id: "r6", name: 55, off: 41, bar: 25 },
|
|
83637
|
+
{ id: "r7", name: 40, off: 50, bar: 30 }
|
|
83638
|
+
];
|
|
83639
|
+
const HEADER_MARKERS = ["m0", "m1", "m2", "m3"];
|
|
83640
|
+
const HeaderDivider = () => jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }) });
|
|
83641
|
+
function TraceViewerSkeleton() {
|
|
83642
|
+
return jsxRuntimeExports.jsxs("output", { "aria-busy": "true", "aria-label": "Loading trace", className: "flex flex-col w-full h-full min-h-0 bg-background-100", children: [jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Loading trace…" }), jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: COL_TEMPLATE }, children: [jsxRuntimeExports.jsxs("div", { className: "h-10 min-h-10 flex items-center border-b border-gray-alpha-400 pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Skeleton$2, { className: "w-3.5 h-3.5 shrink-0 rounded-sm" }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3.5 w-40" })] }), jsxRuntimeExports.jsx(HeaderDivider, {}), jsxRuntimeExports.jsx("div", { className: "h-10 min-h-10 flex items-end border-b border-gray-alpha-400 px-4 pb-1 gap-2", children: jsxRuntimeExports.jsx("div", { className: "relative flex-1 flex items-end justify-between", children: HEADER_MARKERS.map((id2) => jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3.5 w-9" }, id2)) }) })] }), jsxRuntimeExports.jsxs("div", { className: "grid flex-1 min-h-0 overflow-hidden", style: { gridTemplateColumns: COL_TEMPLATE }, children: [jsxRuntimeExports.jsx("div", { className: "block overflow-visible", children: jsxRuntimeExports.jsx("ul", { className: "block divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", children: ROWS.map((row) => jsxRuntimeExports.jsxs("li", { className: "h-10 flex items-center pl-4 pr-2", children: [jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [jsxRuntimeExports.jsx(Skeleton$2, { className: "w-4 h-4 shrink-0 rounded-sm" }), jsxRuntimeExports.jsx(Skeleton$2, { className: "h-3.5", style: { width: `${row.name}%` } })] }), jsxRuntimeExports.jsx(Skeleton$2, { className: "ml-2 h-3.5 w-10 shrink-0" })] }, row.id)) }) }), jsxRuntimeExports.jsx("span", { "aria-hidden": true, className: "h-full w-px bg-gray-alpha-400" }), jsxRuntimeExports.jsx("div", { className: "relative min-h-0", children: ROWS.map((row) => jsxRuntimeExports.jsx("div", { className: "relative h-10", children: jsxRuntimeExports.jsx("div", { className: "absolute inset-x-4 inset-y-0", children: jsxRuntimeExports.jsx(Skeleton$2, { className: "absolute top-1/2 -translate-y-1/2 h-6 rounded-[0.25rem]", style: { left: `${row.off}%`, width: `${row.bar}%` } }) }) }, row.id)) })] })] });
|
|
83643
|
+
}
|
|
83644
|
+
function useIntersectionObserver(elementRef, { threshold = 0, rootRef, rootMargin = "0%", freezeOnceVisible = false } = {}) {
|
|
83645
|
+
const [entry2, setEntry] = reactExports.useState();
|
|
83646
|
+
const frozen = (entry2 == null ? void 0 : entry2.isIntersecting) && freezeOnceVisible;
|
|
83647
|
+
reactExports.useEffect(() => {
|
|
83648
|
+
const node2 = elementRef == null ? void 0 : elementRef.current;
|
|
83649
|
+
const hasIOSupport = !!window.IntersectionObserver;
|
|
83650
|
+
if (!hasIOSupport || frozen || !node2)
|
|
83651
|
+
return;
|
|
83652
|
+
const updateEntry = ([entry3]) => {
|
|
83653
|
+
setEntry(entry3);
|
|
83654
|
+
};
|
|
83655
|
+
const observer = new IntersectionObserver(updateEntry, {
|
|
83656
|
+
threshold,
|
|
83657
|
+
root: (rootRef == null ? void 0 : rootRef.current) ?? null,
|
|
83658
|
+
rootMargin
|
|
83659
|
+
});
|
|
83660
|
+
observer.observe(node2);
|
|
83661
|
+
return () => observer.disconnect();
|
|
83662
|
+
}, [elementRef, threshold, rootRef, rootMargin, frozen]);
|
|
83663
|
+
return entry2;
|
|
83664
|
+
}
|
|
83665
|
+
function useLoadMoreOnScroll(loadMore, { hasMore, isLoadingMore, rootRef, rootMargin = "400px" }) {
|
|
83666
|
+
const sentinelRef = reactExports.useRef(null);
|
|
83667
|
+
const entry2 = useIntersectionObserver(sentinelRef, { rootRef, rootMargin });
|
|
83668
|
+
const loadMoreRef = reactExports.useRef(loadMore);
|
|
83669
|
+
reactExports.useEffect(() => {
|
|
83670
|
+
loadMoreRef.current = loadMore;
|
|
83671
|
+
}, [loadMore]);
|
|
83672
|
+
reactExports.useEffect(() => {
|
|
83673
|
+
if ((entry2 == null ? void 0 : entry2.isIntersecting) && hasMore && !isLoadingMore) {
|
|
83674
|
+
loadMoreRef.current();
|
|
83675
|
+
}
|
|
83676
|
+
}, [entry2 == null ? void 0 : entry2.isIntersecting, hasMore, isLoadingMore]);
|
|
83677
|
+
return sentinelRef;
|
|
83590
83678
|
}
|
|
83591
83679
|
const QUERY = "(prefers-reduced-motion: reduce)";
|
|
83592
83680
|
const useReducedMotion = () => {
|
|
@@ -83606,6 +83694,9 @@ const useReducedMotion = () => {
|
|
|
83606
83694
|
}, []);
|
|
83607
83695
|
return reduced;
|
|
83608
83696
|
};
|
|
83697
|
+
function Kbd({ children: children2, className }) {
|
|
83698
|
+
return jsxRuntimeExports.jsx("kbd", { className: cn$4("inline-flex h-5 min-w-5 items-center justify-center rounded bg-background-100/20 px-1 text-center font-sans text-xs leading-none", className), children: children2 });
|
|
83699
|
+
}
|
|
83609
83700
|
const WorkflowIcon = () => {
|
|
83610
83701
|
return jsxRuntimeExports.jsx("svg", { "data-testid": "geist-icon", height: "16", "stroke-linejoin": "round", style: { color: "currentColor" }, viewBox: "0 0 16 16", width: "16", children: jsxRuntimeExports.jsx("path", { d: "M5.75 7L6.4209 7.33594L4.85254 10.4717C5.38789 10.771 5.75 11.3431 5.75 12V14C5.75 14.9665 4.96648 15.75 4 15.75H2C1.03352 15.75 0.25 14.9665 0.25 14V12C0.25 11.0335 1.03352 10.25 2 10.25H3.28711L5.0791 6.66504L5.75 7ZM14 10.25C14.9665 10.25 15.75 11.0335 15.75 12V14C15.75 14.9665 14.9665 15.75 14 15.75H12C11.1185 15.75 10.3909 15.098 10.2695 14.25H7V12.75H10.25V12C10.25 11.0335 11.0335 10.25 12 10.25H14ZM2 11.75C1.86192 11.75 1.75 11.8619 1.75 12V14C1.75 14.1381 1.86192 14.25 2 14.25H4C4.13808 14.25 4.25 14.1381 4.25 14V12C4.25 11.8619 4.13808 11.75 4 11.75H2ZM12 11.75C11.8619 11.75 11.75 11.8619 11.75 12V14C11.75 14.1381 11.8619 14.25 12 14.25H14C14.1381 14.25 14.25 14.1381 14.25 14V12C14.25 11.8619 14.1381 11.75 14 11.75H12ZM9 0.25C9.96649 0.25 10.75 1.03351 10.75 2V4C10.75 4.44642 10.5808 4.85197 10.3057 5.16113L12.2041 8.6416L10.8877 9.36035L8.91895 5.75H7C6.03351 5.75 5.25 4.96649 5.25 4V2C5.25 1.03351 6.03351 0.25 7 0.25H9ZM7 1.75C6.86193 1.75 6.75 1.86193 6.75 2V4C6.75 4.13807 6.86193 4.25 7 4.25H9C9.13807 4.25 9.25 4.13807 9.25 4V2C9.25 1.86193 9.13807 1.75 9 1.75H7Z", fill: "currentColor" }) });
|
|
83611
83702
|
};
|
|
@@ -84063,6 +84154,54 @@ function computeSpanSegments(span) {
|
|
|
84063
84154
|
return [];
|
|
84064
84155
|
}
|
|
84065
84156
|
}
|
|
84157
|
+
const INITIAL_VISIBLE_ROWS = 60;
|
|
84158
|
+
function getScrollParent(el) {
|
|
84159
|
+
let node2 = (el == null ? void 0 : el.parentElement) ?? null;
|
|
84160
|
+
while (node2) {
|
|
84161
|
+
const overflowY = getComputedStyle(node2).overflowY;
|
|
84162
|
+
if (overflowY === "auto" || overflowY === "scroll")
|
|
84163
|
+
return node2;
|
|
84164
|
+
node2 = node2.parentElement;
|
|
84165
|
+
}
|
|
84166
|
+
return null;
|
|
84167
|
+
}
|
|
84168
|
+
function useRowWindow(ref, rowCount, rowHeight, overscan = 12) {
|
|
84169
|
+
const [range2, setRange] = reactExports.useState(() => ({
|
|
84170
|
+
start: 0,
|
|
84171
|
+
end: Math.min(rowCount, INITIAL_VISIBLE_ROWS)
|
|
84172
|
+
}));
|
|
84173
|
+
reactExports.useEffect(() => {
|
|
84174
|
+
const self2 = ref.current;
|
|
84175
|
+
const el = getScrollParent(self2);
|
|
84176
|
+
if (!self2 || !el)
|
|
84177
|
+
return;
|
|
84178
|
+
let raf = 0;
|
|
84179
|
+
const measure = () => {
|
|
84180
|
+
raf = 0;
|
|
84181
|
+
const offset2 = self2.getBoundingClientRect().top - el.getBoundingClientRect().top + el.scrollTop;
|
|
84182
|
+
const top = el.scrollTop - offset2;
|
|
84183
|
+
const start2 = Math.max(0, Math.floor(top / rowHeight) - overscan);
|
|
84184
|
+
const end = Math.min(rowCount, Math.ceil((top + el.clientHeight) / rowHeight) + overscan);
|
|
84185
|
+
setRange((prev) => prev.start === start2 && prev.end === end ? prev : { start: start2, end });
|
|
84186
|
+
};
|
|
84187
|
+
const onScroll = () => {
|
|
84188
|
+
if (!raf)
|
|
84189
|
+
raf = requestAnimationFrame(measure);
|
|
84190
|
+
};
|
|
84191
|
+
measure();
|
|
84192
|
+
el.addEventListener("scroll", onScroll, { passive: true });
|
|
84193
|
+
const ro2 = new ResizeObserver(measure);
|
|
84194
|
+
ro2.observe(el);
|
|
84195
|
+
return () => {
|
|
84196
|
+
el.removeEventListener("scroll", onScroll);
|
|
84197
|
+
ro2.disconnect();
|
|
84198
|
+
if (raf)
|
|
84199
|
+
cancelAnimationFrame(raf);
|
|
84200
|
+
};
|
|
84201
|
+
}, [ref, rowCount, rowHeight, overscan]);
|
|
84202
|
+
return range2;
|
|
84203
|
+
}
|
|
84204
|
+
const ROW_HEIGHT_PX = 40;
|
|
84066
84205
|
const eventStyles = {
|
|
84067
84206
|
run: { icon: WorkflowIcon, className: "text-blue-900" },
|
|
84068
84207
|
step: { icon: StepForwardIcon, className: "text-green-900" },
|
|
@@ -84088,14 +84227,17 @@ const EventRow = ({ span, isSelected, isDimmed, onSelectSpan }) => {
|
|
|
84088
84227
|
return jsxRuntimeExports.jsx("li", { className: cn$4("relative overflow-clip group transition-opacity", ROW_HEIGHT_CLASS, isDimmed && "opacity-35"), role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, onClick: () => onSelectSpan(span.spanId), children: jsxRuntimeExports.jsx("div", { className: "h-full hover:bg-gray-100 group-aria-selected:bg-gray-100 group-aria-selected:hover:bg-gray-200", children: jsxRuntimeExports.jsxs("div", { className: "flex h-full min-w-0 items-center pl-4 pr-2", children: [jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [jsxRuntimeExports.jsx("span", { className: cn$4("shrink-0", tagClassName), children: jsxRuntimeExports.jsx(Icon2, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx("span", { className: "min-w-0 text-label-14", children: jsxRuntimeExports.jsx(MiddleTruncate, { value: span.name }) })] }), jsxRuntimeExports.jsx("div", { className: "ml-2 shrink-0", children: jsxRuntimeExports.jsx("span", { className: "text-label-14 text-gray-900 tabular-nums", children: formatDuration(durationMs) }) })] }) }) });
|
|
84089
84228
|
};
|
|
84090
84229
|
const EventList = ({ spans, activeSpanId, searchResult, onSelectSpan }) => {
|
|
84091
|
-
|
|
84092
|
-
|
|
84093
|
-
|
|
84230
|
+
const listRef = reactExports.useRef(null);
|
|
84231
|
+
const { start: start2, end } = useRowWindow(listRef, spans.length, ROW_HEIGHT_PX);
|
|
84232
|
+
return jsxRuntimeExports.jsx("ul", { ref: listRef, id: "event-list", role: "tree", className: "block min-h-0 overflow-visible divide-y divide-gray-alpha-400 border-b border-gray-alpha-400", style: {
|
|
84233
|
+
paddingTop: start2 * ROW_HEIGHT_PX,
|
|
84234
|
+
paddingBottom: (spans.length - end) * ROW_HEIGHT_PX
|
|
84235
|
+
}, children: spans.slice(start2, end).map((span) => jsxRuntimeExports.jsx(EventRow, { span, isSelected: span.spanId === activeSpanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelectSpan }, span.spanId)) });
|
|
84094
84236
|
};
|
|
84095
84237
|
const GUTTER_PX = 1;
|
|
84096
84238
|
const MIN_PX = 50;
|
|
84097
84239
|
const DEFAULT_START_PX = 340;
|
|
84098
|
-
function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT_START_PX, startHeader, endHeader }) {
|
|
84240
|
+
function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT_START_PX, startHeader, endHeader, scrollContainerRef }) {
|
|
84099
84241
|
const parts = reactExports.Children.toArray(children2);
|
|
84100
84242
|
if (parts.length !== 2) {
|
|
84101
84243
|
throw new Error("SplitPane expects exactly two children");
|
|
@@ -84114,6 +84256,12 @@ function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT
|
|
|
84114
84256
|
cancelAnimationFrame(rafRef.current);
|
|
84115
84257
|
};
|
|
84116
84258
|
}, []);
|
|
84259
|
+
const setContainerRef = reactExports.useCallback((node2) => {
|
|
84260
|
+
containerRef.current = node2;
|
|
84261
|
+
if (scrollContainerRef) {
|
|
84262
|
+
scrollContainerRef.current = node2;
|
|
84263
|
+
}
|
|
84264
|
+
}, [scrollContainerRef]);
|
|
84117
84265
|
const clampPx = reactExports.useCallback((px) => {
|
|
84118
84266
|
const el = containerRef.current;
|
|
84119
84267
|
if (!el)
|
|
@@ -84179,9 +84327,9 @@ function SplitPane({ children: children2, className, defaultStartWidth = DEFAULT
|
|
|
84179
84327
|
const hasHeaders = startHeader != null || endHeader != null;
|
|
84180
84328
|
const gutter = jsxRuntimeExports.jsx("div", { ref: gutterRef, className: "relative z-20 isolate flex shrink-0 cursor-col-resize justify-center", onPointerDown: handlePointerDown, onLostPointerCapture: handleLostPointerCapture, children: jsxRuntimeExports.jsx("span", { className: "pointer-events-none relative z-10 h-full w-px shrink-0 bg-gray-alpha-400", "aria-hidden": true }) });
|
|
84181
84329
|
if (hasHeaders) {
|
|
84182
|
-
return jsxRuntimeExports.jsxs("div", { className: cn$4("flex flex-col h-full min-h-0", className), children: [jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: colTemplate }, children: [jsxRuntimeExports.jsx("div", { children: startHeader }), jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx("span", { className: "h-full w-px bg-gray-alpha-400", "aria-hidden": true }) }), jsxRuntimeExports.jsx("div", { children: endHeader })] }), jsxRuntimeExports.jsxs("div", { ref:
|
|
84330
|
+
return jsxRuntimeExports.jsxs("div", { className: cn$4("flex flex-col h-full min-h-0", className), children: [jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid", style: { gridTemplateColumns: colTemplate }, children: [jsxRuntimeExports.jsx("div", { children: startHeader }), jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx("span", { className: "h-full w-px bg-gray-alpha-400", "aria-hidden": true }) }), jsxRuntimeExports.jsx("div", { children: endHeader })] }), jsxRuntimeExports.jsxs("div", { ref: setContainerRef, className: cn$4("grid flex-1 min-h-0 overflow-x-hidden overflow-y-auto", isDragging && "select-none"), style: { gridTemplateColumns: colTemplate }, children: [start2, gutter, end] })] });
|
|
84183
84331
|
}
|
|
84184
|
-
return jsxRuntimeExports.jsxs("div", { ref:
|
|
84332
|
+
return jsxRuntimeExports.jsxs("div", { ref: setContainerRef, className: cn$4("grid h-full min-h-0 content-start overflow-x-hidden overflow-y-auto", isDragging && "select-none", className), style: { gridTemplateColumns: colTemplate, height: "100%" }, children: [start2, gutter, end] });
|
|
84185
84333
|
}
|
|
84186
84334
|
const TINY_BAR_BOX_SIZE_PX = 24;
|
|
84187
84335
|
const TINY_BAR_WIDTH_PX = 4;
|
|
@@ -84309,11 +84457,10 @@ const TimelineBar = reactExports.memo(function TimelineBar2({ span, viewStart, v
|
|
|
84309
84457
|
}, [onSelect, span.spanId]);
|
|
84310
84458
|
return jsxRuntimeExports.jsx("div", { role: "treeitem", "aria-selected": isSelected, "aria-expanded": isSelected, "aria-level": 1, className: cn$4("group/timeline-row h-10 relative flex items-center hover:bg-gray-100 aria-selected:bg-gray-100 aria-selected:hover:bg-gray-200 transition-opacity", isDimmed && "opacity-35"), onClick: handleClick, children: jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-1/2 h-6 -translate-y-1/2 rounded-[0.25rem]", style: getBarPositionStyle(geometry), children: geometry.mode.kind === "arrow" ? jsxRuntimeExports.jsx(BoundaryArrow, { direction: geometry.mode.direction }) : geometry.mode.kind === "tiny" ? jsxRuntimeExports.jsx("div", { className: "h-6 rounded-[0.25rem] border", style: { background: fallbackBg, borderColor: fallbackBorder } }) : segments.length > 0 ? jsxRuntimeExports.jsx(SegmentBar, { segments }) : jsxRuntimeExports.jsx(PlainBar, { bg: fallbackBg, border: fallbackBorder, label: showTotalLabel ? totalLabel : null }) }) }) });
|
|
84311
84459
|
});
|
|
84312
|
-
const DELTA_ROW_HEIGHT_PX = 40;
|
|
84313
84460
|
const DELTA_CAP_HEIGHT_PX = 8;
|
|
84314
84461
|
const DELTA_ROW_OFFSET_PX = 8;
|
|
84315
84462
|
const DeltaIndicator = reactExports.memo(function DeltaIndicator2({ leftFrac, rightFrac, label, rowIndex }) {
|
|
84316
|
-
const centerY = DELTA_ROW_OFFSET_PX + (rowIndex + 1) *
|
|
84463
|
+
const centerY = DELTA_ROW_OFFSET_PX + (rowIndex + 1) * ROW_HEIGHT_PX;
|
|
84317
84464
|
return jsxRuntimeExports.jsxs("div", { className: "absolute pointer-events-none", style: {
|
|
84318
84465
|
left: `${leftFrac * 100}%`,
|
|
84319
84466
|
width: `${(rightFrac - leftFrac) * 100}%`,
|
|
@@ -84329,6 +84476,7 @@ function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, se
|
|
|
84329
84476
|
const [containerWidth, setContainerWidth] = reactExports.useState(0);
|
|
84330
84477
|
const viewDuration = viewEnd - viewStart;
|
|
84331
84478
|
const timelineWidth = Math.max(0, containerWidth - TIMELINE_PADDING_PX * 2);
|
|
84479
|
+
const { start: start2, end } = useRowWindow(containerRef, spans.length, ROW_HEIGHT_PX);
|
|
84332
84480
|
reactExports.useEffect(() => {
|
|
84333
84481
|
const el = containerRef.current;
|
|
84334
84482
|
if (!el)
|
|
@@ -84340,16 +84488,20 @@ function Timeline({ spans, viewStart, viewEnd, markers: markers2, selectedId, se
|
|
|
84340
84488
|
return () => ro2.disconnect();
|
|
84341
84489
|
}, []);
|
|
84342
84490
|
const gaps = reactExports.useMemo(() => computeSpanGaps(spans, viewStart, viewEnd), [spans, viewStart, viewEnd]);
|
|
84343
|
-
return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", children: [jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers2.map((marker2) => (
|
|
84491
|
+
return jsxRuntimeExports.jsxs("div", { ref: containerRef, className: "relative h-full overflow-hidden", style: { minHeight: spans.length * ROW_HEIGHT_PX }, children: [jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: markers2.map((marker2) => (
|
|
84344
84492
|
// Skip the "0s" origin marker since the left edge already implies it.
|
|
84345
84493
|
Math.abs(marker2.value) > 1e-6 ? jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-300", style: { left: `${marker2.position * 100}%` } }, `${marker2.position}-${marker2.label}`) : null
|
|
84346
|
-
)) }), hoverFraction != null && jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) }), spans.map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect }, span.spanId)), altHeld && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
|
|
84494
|
+
)) }), hoverFraction != null && jsxRuntimeExports.jsx("div", { className: "absolute inset-y-0 pointer-events-none z-10", style: TIMELINE_INSET_STYLE, children: jsxRuntimeExports.jsx("div", { className: "absolute top-0 bottom-0 w-px bg-gray-alpha-500", style: { left: `${hoverFraction * 100}%` } }) }), jsxRuntimeExports.jsx("div", { style: { transform: `translateY(${start2 * ROW_HEIGHT_PX}px)` }, children: spans.slice(start2, end).map((span) => jsxRuntimeExports.jsx(TimelineBar, { span, viewStart, viewDuration, containerWidth: timelineWidth, isSelected: selectedId === span.spanId, isDimmed: isSpanDimmedBySearch(span.spanId, searchResult), onSelect }, span.spanId)) }), altHeld && jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "absolute inset-y-0 pointer-events-none", style: TIMELINE_INSET_STYLE, children: gaps.map((gap) => jsxRuntimeExports.jsx(DeltaIndicator, { leftFrac: gap.leftFrac, rightFrac: gap.rightFrac, label: formatDuration(gap.gapMs, true), rowIndex: gap.rowIndex }, gap.rowIndex)) })] });
|
|
84347
84495
|
}
|
|
84496
|
+
const TooltipProvider = Provider$2;
|
|
84497
|
+
const Tooltip$1 = Root3$1;
|
|
84498
|
+
const TooltipTrigger$1 = Trigger$4;
|
|
84499
|
+
const TooltipContent$1 = reactExports.forwardRef(({ className, sideOffset = 8, showArrow = true, children: children2, ...props }, ref) => jsxRuntimeExports.jsx(Portal$6, { children: jsxRuntimeExports.jsxs(Content2$4, { ref, sideOffset, className: cn$4("z-[99999] flex items-center gap-1 rounded-[10px] bg-gray-1000 px-2 py-1.5 !text-label-13 text-background-100 shadow-md select-none", className), ...props, children: [children2, showArrow ? jsxRuntimeExports.jsx(Arrow2$1, { width: 11, height: 5, className: "fill-gray-1000" }) : null] }) }));
|
|
84500
|
+
TooltipContent$1.displayName = Content2$4.displayName;
|
|
84348
84501
|
const ActiveSpanContext = reactExports.createContext(null);
|
|
84349
84502
|
ActiveSpanContext.displayName = "ActiveSpanContext";
|
|
84350
84503
|
function ActiveSpanProvider({ spans, children: children2 }) {
|
|
84351
|
-
|
|
84352
|
-
const [activeSpanId, setActiveSpanId] = reactExports.useState(((_a3 = spans[0]) == null ? void 0 : _a3.spanId) ?? null);
|
|
84504
|
+
const [activeSpanId, setActiveSpanId] = reactExports.useState(null);
|
|
84353
84505
|
reactExports.useEffect(() => {
|
|
84354
84506
|
setActiveSpanId((currentSpanId) => {
|
|
84355
84507
|
if (!currentSpanId) {
|
|
@@ -84465,10 +84617,10 @@ function useSelectedSpanInfo() {
|
|
|
84465
84617
|
};
|
|
84466
84618
|
}, [activeSpan, sidebar]);
|
|
84467
84619
|
}
|
|
84468
|
-
function NewTraceViewer$1({ trace: trace2 }) {
|
|
84469
|
-
return jsxRuntimeExports.jsx(ActiveSpanProvider, { spans: trace2.spans, children: jsxRuntimeExports.jsx(NewTraceViewerContent, { trace: trace2 }) });
|
|
84620
|
+
function NewTraceViewer$1({ trace: trace2, onLoadMore, hasMore, isLoadingMore }) {
|
|
84621
|
+
return jsxRuntimeExports.jsx(TooltipProvider, { delayDuration: 300, children: jsxRuntimeExports.jsx(ActiveSpanProvider, { spans: trace2.spans, children: jsxRuntimeExports.jsx(NewTraceViewerContent, { trace: trace2, onLoadMore, hasMore, isLoadingMore }) }) });
|
|
84470
84622
|
}
|
|
84471
|
-
function NewTraceViewerContent({ trace: trace2 }) {
|
|
84623
|
+
function NewTraceViewerContent({ trace: trace2, onLoadMore, hasMore, isLoadingMore }) {
|
|
84472
84624
|
const { activeSpan, activeSpanId, setActiveSpan, clearActiveSpan } = useActiveSpan();
|
|
84473
84625
|
const sidebar = useSidebarDataOptional();
|
|
84474
84626
|
const selectedSpan = useSelectedSpanInfo();
|
|
@@ -84476,6 +84628,15 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84476
84628
|
const deferredSearchQuery = reactExports.useDeferredValue(searchQuery);
|
|
84477
84629
|
const searchResult = reactExports.useMemo(() => searchSpans(trace2.spans, deferredSearchQuery), [trace2.spans, deferredSearchQuery]);
|
|
84478
84630
|
const root2 = reactExports.useMemo(() => computeRootBounds(trace2.spans), [trace2.spans]);
|
|
84631
|
+
const scrollContainerRef = reactExports.useRef(null);
|
|
84632
|
+
const loadMore = reactExports.useCallback(() => {
|
|
84633
|
+
void (onLoadMore == null ? void 0 : onLoadMore());
|
|
84634
|
+
}, [onLoadMore]);
|
|
84635
|
+
const loadMoreSentinelRef = useLoadMoreOnScroll(loadMore, {
|
|
84636
|
+
hasMore: Boolean(onLoadMore && hasMore),
|
|
84637
|
+
isLoadingMore: Boolean(isLoadingMore),
|
|
84638
|
+
rootRef: scrollContainerRef
|
|
84639
|
+
});
|
|
84479
84640
|
const { viewport, setViewport, animateTo } = useAnimatedViewport({
|
|
84480
84641
|
start: root2.startTime,
|
|
84481
84642
|
end: root2.startTime + root2.duration
|
|
@@ -84737,15 +84898,15 @@ function NewTraceViewerContent({ trace: trace2 }) {
|
|
|
84737
84898
|
prevSpanIdRef.current = prevSpanId;
|
|
84738
84899
|
nextSpanIdRef.current = nextSpanId;
|
|
84739
84900
|
handleSelectSpanRef.current = handleSelectSpan;
|
|
84740
|
-
return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,
|
|
84901
|
+
return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,360px,100%)]", children: [jsxRuntimeExports.jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [jsxRuntimeExports.jsxs(SplitPane, { scrollContainerRef, startHeader: jsxRuntimeExports.jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center pl-4 pr-2 gap-1.5", children: [jsxRuntimeExports.jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), jsxRuntimeExports.jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), onKeyDown: (e) => {
|
|
84741
84902
|
if (e.key === "Escape" && searchQuery) {
|
|
84742
84903
|
e.preventDefault();
|
|
84743
84904
|
e.stopPropagation();
|
|
84744
84905
|
setSearchQuery("");
|
|
84745
84906
|
}
|
|
84746
|
-
}, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none" }), searchQuery && jsxRuntimeExports.jsx("button", { type: "button", "aria-label": "Clear search", onClick: () => setSearchQuery(""), className: "-mr-2 hidden h-full max-w-full shrink-0 cursor-pointer items-center rounded-r-md border-0 bg-transparent px-2.5 font-inherit text-base text-gray-900 no-underline transition-colors duration-150 ease-in hover:text-gray-1000 focus-visible:-outline-offset-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] min-[961px]:flex", children: jsxRuntimeExports.jsx("kbd", { className: "inline-flex h-5 min-h-5 min-w-5 items-center justify-center rounded border border-gray-alpha-400 bg-background-100 px-1 font-sans text-[13px] font-medium leading-[1.7em] text-gray-900", children: "Esc" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo2 }), children: [jsxRuntimeExports.
|
|
84907
|
+
}, placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none" }), searchQuery && jsxRuntimeExports.jsx("button", { type: "button", "aria-label": "Clear search", onClick: () => setSearchQuery(""), className: "-mr-2 hidden h-full max-w-full shrink-0 cursor-pointer items-center rounded-r-md border-0 bg-transparent px-2.5 font-inherit text-base text-gray-900 no-underline transition-colors duration-150 ease-in hover:text-gray-1000 focus-visible:-outline-offset-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--ds-focus-color)] min-[961px]:flex", children: jsxRuntimeExports.jsx("kbd", { className: "inline-flex h-5 min-h-5 min-w-5 items-center justify-center rounded border border-gray-alpha-400 bg-background-100 px-1 font-sans text-[13px] font-medium leading-[1.7em] text-gray-900", children: "Esc" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo: hoverInfo2 }), children: [jsxRuntimeExports.jsxs("div", { className: "block overflow-visible", children: [jsxRuntimeExports.jsx(EventList, { spans: trace2.spans, activeSpanId, searchResult, onSelectSpan: handleSelectSpan }), jsxRuntimeExports.jsx("div", { ref: loadMoreSentinelRef, className: "flex justify-center", children: isLoadingMore ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center gap-2 py-3 text-sm text-gray-800", children: [jsxRuntimeExports.jsx(Spinner, { size: 14 }), jsxRuntimeExports.jsx("span", { children: "Loading spans…" })] }) : null })] }), jsxRuntimeExports.jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: jsxRuntimeExports.jsx(Timeline, { spans: trace2.spans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, searchResult, onSelect: handleSelectSpan, hoverFraction, altHeld }) })] }), jsxRuntimeExports.jsxs("div", { className: "absolute right-3 bottom-3 z-[5] flex items-center border border-gray-alpha-400 rounded-md bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomOut, "aria-label": "Zoom out", children: jsxRuntimeExports.jsx(ZoomOut, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: resetZoom, "aria-label": "Reset zoom", children: jsxRuntimeExports.jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), jsxRuntimeExports.jsx(IconButton, { variant: "muted", size: "small", onClick: zoomIn, "aria-label": "Zoom in", children: jsxRuntimeExports.jsx(ZoomIn, { className: "w-4 h-4" }) })] })] }), activeSpan && sidebar ? jsxRuntimeExports.jsxs("aside", { className: "flex flex-col h-full max-h-full bg-background-100 border-l border-gray-alpha-400 overflow-auto", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between gap-2 shrink-0 px-4 pt-3 pb-3", children: [jsxRuntimeExports.jsx("span", { className: "text-label-14 font-medium text-gray-1000 truncate block", children: selectedSpanName }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5 shrink-0", children: [jsxRuntimeExports.jsxs(Tooltip$1, { children: [jsxRuntimeExports.jsx(TooltipTrigger$1, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate up", "aria-keyshortcuts": "K", onClick: handleSelectPrevSpan, disabled: !prevSpanId, children: jsxRuntimeExports.jsx(ChevronUp, { className: "w-4 h-4" }) }) }), prevSpanId ? jsxRuntimeExports.jsxs(TooltipContent$1, { children: ["Navigate up", jsxRuntimeExports.jsx(Kbd, { children: "K" })] }) : null] }), jsxRuntimeExports.jsxs(Tooltip$1, { children: [jsxRuntimeExports.jsx(TooltipTrigger$1, { asChild: true, children: jsxRuntimeExports.jsx(IconButton, { "aria-label": "Navigate down", "aria-keyshortcuts": "J", onClick: handleSelectNextSpan, disabled: !nextSpanId, children: jsxRuntimeExports.jsx(ChevronDown, { className: "w-4 h-4" }) }) }), nextSpanId ? jsxRuntimeExports.jsxs(TooltipContent$1, { children: ["Navigate down", jsxRuntimeExports.jsx(Kbd, { children: "J" })] }) : null] }), jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "w-px h-4 bg-gray-alpha-400 mx-1" }), jsxRuntimeExports.jsx(IconButton, { "aria-label": "Close span details", "aria-keyshortcuts": "Escape", onClick: clearActiveSpan, children: jsxRuntimeExports.jsx(X$3, { className: "w-4 h-4" }) })] })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary$1, { children: jsxRuntimeExports.jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, spanDetailData: sidebar.spanDetailData, spanDetailError: sidebar.spanDetailError, spanDetailLoading: sidebar.spanDetailLoading, onSpanSelect: sidebar.onSpanSelect, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan }) }) })] }) : activeSpan ? jsxRuntimeExports.jsx(DetailPanel, { span: activeSpan, rootStart: root2.startTime, onClose: clearActiveSpan }) : null] });
|
|
84747
84908
|
}
|
|
84748
|
-
const NewTraceViewer = ({ run, events: events2, sidebarData }) => {
|
|
84909
|
+
const NewTraceViewer = ({ run, events: events2, sidebarData, onLoadMore, hasMore, isLoadingMore, loading = false }) => {
|
|
84749
84910
|
const traceWithMeta = reactExports.useMemo(() => {
|
|
84750
84911
|
if (!(run == null ? void 0 : run.runId)) {
|
|
84751
84912
|
return void 0;
|
|
@@ -84753,10 +84914,10 @@ const NewTraceViewer = ({ run, events: events2, sidebarData }) => {
|
|
|
84753
84914
|
return buildTrace(run, events2, /* @__PURE__ */ new Date());
|
|
84754
84915
|
}, [run, events2]);
|
|
84755
84916
|
const trace2 = traceWithMeta;
|
|
84756
|
-
if (!trace2) {
|
|
84757
|
-
return jsxRuntimeExports.jsx(
|
|
84917
|
+
if (!trace2 || loading && events2.length === 0) {
|
|
84918
|
+
return jsxRuntimeExports.jsx(TraceViewerSkeleton, {});
|
|
84758
84919
|
}
|
|
84759
|
-
return jsxRuntimeExports.jsx(SidebarDataProvider, { value: sidebarData, children: jsxRuntimeExports.jsx("div", { className: "relative w-full h-full flex", children: jsxRuntimeExports.jsx(NewTraceViewer$1, { trace: trace2 }) }) });
|
|
84920
|
+
return jsxRuntimeExports.jsx(SidebarDataProvider, { value: sidebarData, children: jsxRuntimeExports.jsx("div", { className: "relative w-full h-full flex", children: jsxRuntimeExports.jsx(NewTraceViewer$1, { trace: trace2, onLoadMore, hasMore, isLoadingMore }) }) });
|
|
84760
84921
|
};
|
|
84761
84922
|
function analyzeEvents(events2) {
|
|
84762
84923
|
if (!events2 || events2.length === 0) {
|
|
@@ -88729,7 +88890,7 @@ const encryption = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePr
|
|
|
88729
88890
|
encrypt: encrypt$1,
|
|
88730
88891
|
importKey
|
|
88731
88892
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
88732
|
-
const version$1 = "5.0.0-beta.
|
|
88893
|
+
const version$1 = "5.0.0-beta.12";
|
|
88733
88894
|
const WorldCacheKey = Symbol.for("@workflow/world//cache");
|
|
88734
88895
|
const WorldCachePromiseKey = Symbol.for("@workflow/world//cachePromise");
|
|
88735
88896
|
const GetWorldFnKey$1 = Symbol.for("@workflow/world//getWorldFn");
|
|
@@ -89064,6 +89225,7 @@ const STABLE_ULID = Symbol.for("WORKFLOW_STABLE_ULID");
|
|
|
89064
89225
|
const STREAM_NAME_SYMBOL = Symbol.for("WORKFLOW_STREAM_NAME");
|
|
89065
89226
|
const STREAM_TYPE_SYMBOL = Symbol.for("WORKFLOW_STREAM_TYPE");
|
|
89066
89227
|
const STREAM_SERVER_RUN_ID_SYMBOL = Symbol.for("WORKFLOW_STREAM_SERVER_RUN_ID");
|
|
89228
|
+
const STREAM_SERVER_DEPLOYMENT_ID_SYMBOL = Symbol.for("WORKFLOW_STREAM_SERVER_DEPLOYMENT_ID");
|
|
89067
89229
|
const BODY_INIT_SYMBOL = Symbol.for("BODY_INIT");
|
|
89068
89230
|
const WEBHOOK_RESPONSE_WRITABLE = Symbol.for("WEBHOOK_RESPONSE_WRITABLE");
|
|
89069
89231
|
const WORKFLOW_CLASS_REGISTRY = Symbol.for("workflow-class-registry");
|
|
@@ -91322,7 +91484,15 @@ function getExternalReducers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91322
91484
|
const existingName = value[STREAM_NAME_SYMBOL];
|
|
91323
91485
|
const existingRunId = value[STREAM_SERVER_RUN_ID_SYMBOL];
|
|
91324
91486
|
if (typeof existingName === "string" && typeof existingRunId === "string") {
|
|
91325
|
-
|
|
91487
|
+
const descriptor = {
|
|
91488
|
+
name: existingName,
|
|
91489
|
+
runId: existingRunId
|
|
91490
|
+
};
|
|
91491
|
+
const existingDeploymentId = value[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL];
|
|
91492
|
+
if (typeof existingDeploymentId === "string") {
|
|
91493
|
+
descriptor.deploymentId = existingDeploymentId;
|
|
91494
|
+
}
|
|
91495
|
+
return descriptor;
|
|
91326
91496
|
}
|
|
91327
91497
|
const streamId = (global2[STABLE_ULID] || defaultUlid)();
|
|
91328
91498
|
const name2 = `strm_${streamId}`;
|
|
@@ -91375,6 +91545,10 @@ function getWorkflowReducers(global2 = globalThis) {
|
|
|
91375
91545
|
const foreignRunId = value[STREAM_SERVER_RUN_ID_SYMBOL];
|
|
91376
91546
|
if (typeof foreignRunId === "string")
|
|
91377
91547
|
s2.runId = foreignRunId;
|
|
91548
|
+
const foreignDeploymentId = value[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL];
|
|
91549
|
+
if (typeof foreignDeploymentId === "string") {
|
|
91550
|
+
s2.deploymentId = foreignDeploymentId;
|
|
91551
|
+
}
|
|
91378
91552
|
return s2;
|
|
91379
91553
|
},
|
|
91380
91554
|
// AbortController/AbortSignal in workflow context — just read symbols (handles).
|
|
@@ -91444,6 +91618,10 @@ function getStepReducers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91444
91618
|
const s2 = { name: name2 };
|
|
91445
91619
|
if (typeof foreignRunId === "string")
|
|
91446
91620
|
s2.runId = foreignRunId;
|
|
91621
|
+
const foreignDeploymentId = value[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL];
|
|
91622
|
+
if (typeof foreignDeploymentId === "string") {
|
|
91623
|
+
s2.deploymentId = foreignDeploymentId;
|
|
91624
|
+
}
|
|
91447
91625
|
return s2;
|
|
91448
91626
|
},
|
|
91449
91627
|
AbortController: (value) => {
|
|
@@ -91577,6 +91755,13 @@ function getCommonRevivers(global2 = globalThis) {
|
|
|
91577
91755
|
...getCommonRevivers$1(global2)
|
|
91578
91756
|
};
|
|
91579
91757
|
}
|
|
91758
|
+
async function getForwardedWritableEncryptionKey(runId, deploymentId) {
|
|
91759
|
+
const world = await getWorldLazy();
|
|
91760
|
+
if (!world.getEncryptionKeyForRun)
|
|
91761
|
+
return void 0;
|
|
91762
|
+
const rawKey = deploymentId ? await world.getEncryptionKeyForRun(runId, { deploymentId }) : await world.getEncryptionKeyForRun(await world.runs.get(runId));
|
|
91763
|
+
return rawKey ? await importKey(rawKey, ["encrypt"]) : void 0;
|
|
91764
|
+
}
|
|
91580
91765
|
function getExternalRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
91581
91766
|
return {
|
|
91582
91767
|
...getCommonRevivers(global2),
|
|
@@ -91639,12 +91824,7 @@ function getExternalRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91639
91824
|
},
|
|
91640
91825
|
WritableStream: (value) => {
|
|
91641
91826
|
const targetRunId = typeof value.runId === "string" ? value.runId : runId;
|
|
91642
|
-
const targetKey = targetRunId === runId ? cryptoKey : (
|
|
91643
|
-
var _a3;
|
|
91644
|
-
const world = await getWorldLazy();
|
|
91645
|
-
const rawKey = await ((_a3 = world.getEncryptionKeyForRun) == null ? void 0 : _a3.call(world, targetRunId));
|
|
91646
|
-
return rawKey ? await importKey(rawKey, ["encrypt"]) : void 0;
|
|
91647
|
-
})();
|
|
91827
|
+
const targetKey = targetRunId === runId ? cryptoKey : getForwardedWritableEncryptionKey(targetRunId, value.deploymentId);
|
|
91648
91828
|
const serialize2 = getSerializeStream(getExternalReducers(global2, ops, targetRunId, targetKey), targetKey);
|
|
91649
91829
|
const serverWritable = new WorkflowServerWritableStream(targetRunId, value.name);
|
|
91650
91830
|
const state = createFlushableState();
|
|
@@ -91660,6 +91840,12 @@ function getExternalRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91660
91840
|
value: targetRunId,
|
|
91661
91841
|
writable: false
|
|
91662
91842
|
});
|
|
91843
|
+
if (typeof value.deploymentId === "string") {
|
|
91844
|
+
Object.defineProperty(serialize2.writable, STREAM_SERVER_DEPLOYMENT_ID_SYMBOL, {
|
|
91845
|
+
value: value.deploymentId,
|
|
91846
|
+
writable: false
|
|
91847
|
+
});
|
|
91848
|
+
}
|
|
91663
91849
|
return serialize2.writable;
|
|
91664
91850
|
},
|
|
91665
91851
|
AbortController: (value) => reviveAbortController(value, ops, runId),
|
|
@@ -91730,6 +91916,12 @@ function getWorkflowRevivers(global2 = globalThis) {
|
|
|
91730
91916
|
writable: false
|
|
91731
91917
|
};
|
|
91732
91918
|
}
|
|
91919
|
+
if (typeof value.deploymentId === "string") {
|
|
91920
|
+
descriptor[STREAM_SERVER_DEPLOYMENT_ID_SYMBOL] = {
|
|
91921
|
+
value: value.deploymentId,
|
|
91922
|
+
writable: false
|
|
91923
|
+
};
|
|
91924
|
+
}
|
|
91733
91925
|
return Object.create(global2.WritableStream.prototype, descriptor);
|
|
91734
91926
|
},
|
|
91735
91927
|
// AbortController/AbortSignal revived inside the workflow VM. Use the
|
|
@@ -91759,7 +91951,7 @@ function getWorkflowRevivers(global2 = globalThis) {
|
|
|
91759
91951
|
}
|
|
91760
91952
|
};
|
|
91761
91953
|
}
|
|
91762
|
-
function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
91954
|
+
function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey, deploymentId) {
|
|
91763
91955
|
return {
|
|
91764
91956
|
...getCommonRevivers(global2),
|
|
91765
91957
|
// StepFunction reviver for step context - returns raw step function
|
|
@@ -91875,7 +92067,7 @@ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91875
92067
|
pollReadableLock(userReadable, state);
|
|
91876
92068
|
return userReadable;
|
|
91877
92069
|
} else {
|
|
91878
|
-
const transform2 = getDeserializeStream(getStepRevivers(global2, ops, runId, cryptoKey), cryptoKey);
|
|
92070
|
+
const transform2 = getDeserializeStream(getStepRevivers(global2, ops, runId, cryptoKey, deploymentId), cryptoKey);
|
|
91879
92071
|
const state = createFlushableState();
|
|
91880
92072
|
ops.push(state.promise);
|
|
91881
92073
|
flushablePipe(readable2, transform2.writable, state).catch(() => {
|
|
@@ -91886,12 +92078,8 @@ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91886
92078
|
},
|
|
91887
92079
|
WritableStream: (value) => {
|
|
91888
92080
|
const targetRunId = typeof value.runId === "string" ? value.runId : runId;
|
|
91889
|
-
const
|
|
91890
|
-
|
|
91891
|
-
const world = await getWorldLazy();
|
|
91892
|
-
const rawKey = await ((_a3 = world.getEncryptionKeyForRun) == null ? void 0 : _a3.call(world, targetRunId));
|
|
91893
|
-
return rawKey ? await importKey(rawKey, ["encrypt"]) : void 0;
|
|
91894
|
-
})();
|
|
92081
|
+
const targetDeploymentId = typeof value.deploymentId === "string" ? value.deploymentId : targetRunId === runId ? deploymentId : void 0;
|
|
92082
|
+
const targetKey = targetRunId === runId ? cryptoKey : getForwardedWritableEncryptionKey(targetRunId, targetDeploymentId);
|
|
91895
92083
|
const serialize2 = getSerializeStream(getStepReducers(global2, ops, targetRunId, targetKey), targetKey);
|
|
91896
92084
|
const serverWritable = new WorkflowServerWritableStream(targetRunId, value.name);
|
|
91897
92085
|
const state = createFlushableState();
|
|
@@ -91907,6 +92095,12 @@ function getStepRevivers(global2 = globalThis, ops, runId, cryptoKey) {
|
|
|
91907
92095
|
value: targetRunId,
|
|
91908
92096
|
writable: false
|
|
91909
92097
|
});
|
|
92098
|
+
if (targetDeploymentId) {
|
|
92099
|
+
Object.defineProperty(serialize2.writable, STREAM_SERVER_DEPLOYMENT_ID_SYMBOL, {
|
|
92100
|
+
value: targetDeploymentId,
|
|
92101
|
+
writable: false
|
|
92102
|
+
});
|
|
92103
|
+
}
|
|
91910
92104
|
return serialize2.writable;
|
|
91911
92105
|
},
|
|
91912
92106
|
AbortController: (value) => reviveAbortController(value, ops, runId),
|
|
@@ -91966,11 +92160,11 @@ async function dehydrateStepArguments(value, _runId, key, global2 = globalThis,
|
|
|
91966
92160
|
throw new SerializationError(message2, { hint: hint2, cause });
|
|
91967
92161
|
}
|
|
91968
92162
|
}
|
|
91969
|
-
async function hydrateStepArguments(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}) {
|
|
92163
|
+
async function hydrateStepArguments(value, runId, key, ops = [], global2 = globalThis, extraRevivers = {}, deploymentId) {
|
|
91970
92164
|
return deserialize$1(value, key, {
|
|
91971
92165
|
global: global2,
|
|
91972
92166
|
extraRevivers: {
|
|
91973
|
-
...getStreamAndRequestRevivers(getStepRevivers(global2, ops, runId, key)),
|
|
92167
|
+
...getStreamAndRequestRevivers(getStepRevivers(global2, ops, runId, key, deploymentId)),
|
|
91974
92168
|
...extraRevivers
|
|
91975
92169
|
}
|
|
91976
92170
|
});
|
|
@@ -93086,7 +93280,8 @@ function requireSymbols() {
|
|
|
93086
93280
|
kPingInterval: Symbol("ping interval"),
|
|
93087
93281
|
kNoProxyAgent: Symbol("no proxy agent"),
|
|
93088
93282
|
kHttpProxyAgent: Symbol("http proxy agent"),
|
|
93089
|
-
kHttpsProxyAgent: Symbol("https proxy agent")
|
|
93283
|
+
kHttpsProxyAgent: Symbol("https proxy agent"),
|
|
93284
|
+
kSocks5ProxyAgent: Symbol("socks5 proxy agent")
|
|
93090
93285
|
};
|
|
93091
93286
|
return symbols;
|
|
93092
93287
|
}
|
|
@@ -93678,6 +93873,29 @@ function requireErrors() {
|
|
|
93678
93873
|
return true;
|
|
93679
93874
|
}
|
|
93680
93875
|
}
|
|
93876
|
+
class Socks5ProxyError extends UndiciError {
|
|
93877
|
+
constructor(message2, code2) {
|
|
93878
|
+
super(message2);
|
|
93879
|
+
this.name = "Socks5ProxyError";
|
|
93880
|
+
this.message = message2 || "SOCKS5 proxy error";
|
|
93881
|
+
this.code = code2 || "UND_ERR_SOCKS5";
|
|
93882
|
+
}
|
|
93883
|
+
}
|
|
93884
|
+
const kMessageSizeExceededError = Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");
|
|
93885
|
+
class MessageSizeExceededError extends UndiciError {
|
|
93886
|
+
constructor(message2) {
|
|
93887
|
+
super(message2);
|
|
93888
|
+
this.name = "MessageSizeExceededError";
|
|
93889
|
+
this.message = message2 || "Max decompressed message size exceeded";
|
|
93890
|
+
this.code = "UND_ERR_WS_MESSAGE_SIZE_EXCEEDED";
|
|
93891
|
+
}
|
|
93892
|
+
static [Symbol.hasInstance](instance) {
|
|
93893
|
+
return instance && instance[kMessageSizeExceededError] === true;
|
|
93894
|
+
}
|
|
93895
|
+
get [kMessageSizeExceededError]() {
|
|
93896
|
+
return true;
|
|
93897
|
+
}
|
|
93898
|
+
}
|
|
93681
93899
|
errors = {
|
|
93682
93900
|
AbortError,
|
|
93683
93901
|
HTTPParserError,
|
|
@@ -93701,7 +93919,9 @@ function requireErrors() {
|
|
|
93701
93919
|
RequestRetryError,
|
|
93702
93920
|
ResponseError,
|
|
93703
93921
|
SecureProxyConnectionError,
|
|
93704
|
-
MaxOriginsReachedError
|
|
93922
|
+
MaxOriginsReachedError,
|
|
93923
|
+
Socks5ProxyError,
|
|
93924
|
+
MessageSizeExceededError
|
|
93705
93925
|
};
|
|
93706
93926
|
return errors;
|
|
93707
93927
|
}
|
|
@@ -93983,13 +94203,13 @@ var hasRequiredUtil$5;
|
|
|
93983
94203
|
function requireUtil$5() {
|
|
93984
94204
|
if (hasRequiredUtil$5) return util$5;
|
|
93985
94205
|
hasRequiredUtil$5 = 1;
|
|
93986
|
-
const assert2 = require$$0$
|
|
94206
|
+
const assert2 = require$$0$3;
|
|
93987
94207
|
const { kDestroyed, kBodyUsed, kListeners, kBody } = requireSymbols();
|
|
93988
94208
|
const { IncomingMessage } = require$$2$1;
|
|
93989
|
-
const stream = require$$0$
|
|
93990
|
-
const net2 = require$$0$
|
|
94209
|
+
const stream = require$$0$4;
|
|
94210
|
+
const net2 = require$$0$5;
|
|
93991
94211
|
const { stringify: stringify2 } = require$$5$1;
|
|
93992
|
-
const { EventEmitter: EE } = require$$
|
|
94212
|
+
const { EventEmitter: EE } = require$$0$2;
|
|
93993
94213
|
const timers2 = requireTimers();
|
|
93994
94214
|
const { InvalidArgumentError, ConnectTimeoutError } = requireErrors();
|
|
93995
94215
|
const { headerNameLowerCasedRecord } = requireConstants$5();
|
|
@@ -94150,6 +94370,11 @@ function requireUtil$5() {
|
|
|
94150
94370
|
function isIterable(obj) {
|
|
94151
94371
|
return !!(obj != null && (typeof obj[Symbol.iterator] === "function" || typeof obj[Symbol.asyncIterator] === "function"));
|
|
94152
94372
|
}
|
|
94373
|
+
function hasSafeIterator(obj) {
|
|
94374
|
+
const prototype = Object.getPrototypeOf(obj);
|
|
94375
|
+
const ownIterator = Object.prototype.hasOwnProperty.call(obj, Symbol.iterator);
|
|
94376
|
+
return ownIterator || prototype != null && prototype !== Object.prototype && typeof obj[Symbol.iterator] === "function";
|
|
94377
|
+
}
|
|
94153
94378
|
function bodyLength(body2) {
|
|
94154
94379
|
if (body2 == null) {
|
|
94155
94380
|
return 0;
|
|
@@ -94201,19 +94426,29 @@ function requireUtil$5() {
|
|
|
94201
94426
|
for (let i = 0; i < headers2.length; i += 2) {
|
|
94202
94427
|
const key = headerNameToString(headers2[i]);
|
|
94203
94428
|
let val = obj[key];
|
|
94204
|
-
if (val) {
|
|
94205
|
-
if (
|
|
94206
|
-
|
|
94207
|
-
|
|
94208
|
-
|
|
94209
|
-
|
|
94210
|
-
|
|
94211
|
-
|
|
94212
|
-
|
|
94213
|
-
|
|
94429
|
+
if (val !== void 0) {
|
|
94430
|
+
if (!Object.hasOwn(obj, key)) {
|
|
94431
|
+
const headersValue = typeof headers2[i + 1] === "string" ? headers2[i + 1] : Array.isArray(headers2[i + 1]) ? headers2[i + 1].map((x2) => x2.toString("latin1")) : headers2[i + 1].toString("latin1");
|
|
94432
|
+
if (key === "__proto__") {
|
|
94433
|
+
Object.defineProperty(obj, key, {
|
|
94434
|
+
value: headersValue,
|
|
94435
|
+
enumerable: true,
|
|
94436
|
+
configurable: true,
|
|
94437
|
+
writable: true
|
|
94438
|
+
});
|
|
94439
|
+
} else {
|
|
94440
|
+
obj[key] = headersValue;
|
|
94441
|
+
}
|
|
94214
94442
|
} else {
|
|
94215
|
-
|
|
94443
|
+
if (typeof val === "string") {
|
|
94444
|
+
val = [val];
|
|
94445
|
+
obj[key] = val;
|
|
94446
|
+
}
|
|
94447
|
+
val.push(headers2[i + 1].toString("latin1"));
|
|
94216
94448
|
}
|
|
94449
|
+
} else {
|
|
94450
|
+
const headersValue = typeof headers2[i + 1] === "string" ? headers2[i + 1] : Array.isArray(headers2[i + 1]) ? headers2[i + 1].map((x2) => x2.toString("latin1")) : headers2[i + 1].toString("latin1");
|
|
94451
|
+
obj[key] = headersValue;
|
|
94217
94452
|
}
|
|
94218
94453
|
}
|
|
94219
94454
|
return obj;
|
|
@@ -94746,6 +94981,7 @@ function requireUtil$5() {
|
|
|
94746
94981
|
getServerName,
|
|
94747
94982
|
isStream,
|
|
94748
94983
|
isIterable,
|
|
94984
|
+
hasSafeIterator,
|
|
94749
94985
|
isAsyncIterable,
|
|
94750
94986
|
isDestroyed,
|
|
94751
94987
|
headerNameToString,
|
|
@@ -94824,7 +95060,7 @@ var hasRequiredDiagnostics;
|
|
|
94824
95060
|
function requireDiagnostics() {
|
|
94825
95061
|
if (hasRequiredDiagnostics) return diagnostics;
|
|
94826
95062
|
hasRequiredDiagnostics = 1;
|
|
94827
|
-
const diagnosticsChannel = require$$0$
|
|
95063
|
+
const diagnosticsChannel = require$$0$6;
|
|
94828
95064
|
const util2 = require$$3;
|
|
94829
95065
|
const undiciDebugLog = util2.debuglog("undici");
|
|
94830
95066
|
const fetchDebuglog = util2.debuglog("fetch");
|
|
@@ -94984,10 +95220,12 @@ function requireDiagnostics() {
|
|
|
94984
95220
|
diagnosticsChannel.subscribe(
|
|
94985
95221
|
"undici:websocket:open",
|
|
94986
95222
|
(evt) => {
|
|
94987
|
-
|
|
94988
|
-
|
|
94989
|
-
|
|
94990
|
-
|
|
95223
|
+
if (evt.address != null) {
|
|
95224
|
+
const { address, port } = evt.address;
|
|
95225
|
+
debugLog("connection opened %s%s", address, port ? `:${port}` : "");
|
|
95226
|
+
} else {
|
|
95227
|
+
debugLog("connection opened");
|
|
95228
|
+
}
|
|
94991
95229
|
}
|
|
94992
95230
|
);
|
|
94993
95231
|
diagnosticsChannel.subscribe(
|
|
@@ -95043,7 +95281,7 @@ function requireRequest$1() {
|
|
|
95043
95281
|
InvalidArgumentError,
|
|
95044
95282
|
NotSupportedError
|
|
95045
95283
|
} = requireErrors();
|
|
95046
|
-
const assert2 = require$$0$
|
|
95284
|
+
const assert2 = require$$0$3;
|
|
95047
95285
|
const {
|
|
95048
95286
|
isValidHTTPToken,
|
|
95049
95287
|
isValidHeaderValue,
|
|
@@ -95052,6 +95290,7 @@ function requireRequest$1() {
|
|
|
95052
95290
|
isBuffer,
|
|
95053
95291
|
isFormDataLike,
|
|
95054
95292
|
isIterable,
|
|
95293
|
+
hasSafeIterator,
|
|
95055
95294
|
isBlobLike,
|
|
95056
95295
|
serializePathWithQuery,
|
|
95057
95296
|
assertRequestHandler,
|
|
@@ -95062,6 +95301,18 @@ function requireRequest$1() {
|
|
|
95062
95301
|
const { channels } = requireDiagnostics();
|
|
95063
95302
|
const { headerNameLowerCasedRecord } = requireConstants$5();
|
|
95064
95303
|
const invalidPathRegex = /[^\u0021-\u00ff]/;
|
|
95304
|
+
function isValidContentLengthHeaderValue(val) {
|
|
95305
|
+
if (typeof val !== "string" || val.length === 0) {
|
|
95306
|
+
return false;
|
|
95307
|
+
}
|
|
95308
|
+
for (let i = 0; i < val.length; i++) {
|
|
95309
|
+
const charCode = val.charCodeAt(i);
|
|
95310
|
+
if (charCode < 48 || charCode > 57) {
|
|
95311
|
+
return false;
|
|
95312
|
+
}
|
|
95313
|
+
}
|
|
95314
|
+
return true;
|
|
95315
|
+
}
|
|
95065
95316
|
const kHandler = Symbol("handler");
|
|
95066
95317
|
class Request2 {
|
|
95067
95318
|
constructor(origin, {
|
|
@@ -95079,7 +95330,8 @@ function requireRequest$1() {
|
|
|
95079
95330
|
expectContinue,
|
|
95080
95331
|
servername,
|
|
95081
95332
|
throwOnError,
|
|
95082
|
-
maxRedirections
|
|
95333
|
+
maxRedirections,
|
|
95334
|
+
typeOfService
|
|
95083
95335
|
}, handler) {
|
|
95084
95336
|
if (typeof path2 !== "string") {
|
|
95085
95337
|
throw new InvalidArgumentError("path must be a string");
|
|
@@ -95096,6 +95348,9 @@ function requireRequest$1() {
|
|
|
95096
95348
|
if (upgrade && typeof upgrade !== "string") {
|
|
95097
95349
|
throw new InvalidArgumentError("upgrade must be a string");
|
|
95098
95350
|
}
|
|
95351
|
+
if (upgrade && !isValidHeaderValue(upgrade)) {
|
|
95352
|
+
throw new InvalidArgumentError("invalid upgrade header");
|
|
95353
|
+
}
|
|
95099
95354
|
if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
|
|
95100
95355
|
throw new InvalidArgumentError("invalid headersTimeout");
|
|
95101
95356
|
}
|
|
@@ -95114,9 +95369,13 @@ function requireRequest$1() {
|
|
|
95114
95369
|
if (maxRedirections != null && maxRedirections !== 0) {
|
|
95115
95370
|
throw new InvalidArgumentError("maxRedirections is not supported, use the redirect interceptor");
|
|
95116
95371
|
}
|
|
95372
|
+
if (typeOfService != null && (!Number.isInteger(typeOfService) || typeOfService < 0 || typeOfService > 255)) {
|
|
95373
|
+
throw new InvalidArgumentError("typeOfService must be an integer between 0 and 255");
|
|
95374
|
+
}
|
|
95117
95375
|
this.headersTimeout = headersTimeout;
|
|
95118
95376
|
this.bodyTimeout = bodyTimeout;
|
|
95119
95377
|
this.method = method;
|
|
95378
|
+
this.typeOfService = typeOfService ?? 0;
|
|
95120
95379
|
this.abort = null;
|
|
95121
95380
|
if (body2 == null) {
|
|
95122
95381
|
this.body = null;
|
|
@@ -95172,7 +95431,7 @@ function requireRequest$1() {
|
|
|
95172
95431
|
processHeader(this, headers2[i], headers2[i + 1]);
|
|
95173
95432
|
}
|
|
95174
95433
|
} else if (headers2 && typeof headers2 === "object") {
|
|
95175
|
-
if (headers2
|
|
95434
|
+
if (hasSafeIterator(headers2)) {
|
|
95176
95435
|
for (const header of headers2) {
|
|
95177
95436
|
if (!Array.isArray(header) || header.length !== 2) {
|
|
95178
95437
|
throw new InvalidArgumentError("headers must be in key-value pair format");
|
|
@@ -95342,28 +95601,40 @@ function requireRequest$1() {
|
|
|
95342
95601
|
} else {
|
|
95343
95602
|
val = `${val}`;
|
|
95344
95603
|
}
|
|
95345
|
-
if (
|
|
95604
|
+
if (headerName === "host") {
|
|
95605
|
+
if (request2.host !== null) {
|
|
95606
|
+
throw new InvalidArgumentError("duplicate host header");
|
|
95607
|
+
}
|
|
95346
95608
|
if (typeof val !== "string") {
|
|
95347
95609
|
throw new InvalidArgumentError("invalid host header");
|
|
95348
95610
|
}
|
|
95349
95611
|
request2.host = val;
|
|
95350
|
-
} else if (
|
|
95351
|
-
request2.contentLength
|
|
95352
|
-
|
|
95612
|
+
} else if (headerName === "content-length") {
|
|
95613
|
+
if (request2.contentLength !== null) {
|
|
95614
|
+
throw new InvalidArgumentError("duplicate content-length header");
|
|
95615
|
+
}
|
|
95616
|
+
if (!isValidContentLengthHeaderValue(val)) {
|
|
95353
95617
|
throw new InvalidArgumentError("invalid content-length header");
|
|
95354
95618
|
}
|
|
95619
|
+
request2.contentLength = parseInt(val, 10);
|
|
95355
95620
|
} else if (request2.contentType === null && headerName === "content-type") {
|
|
95356
95621
|
request2.contentType = val;
|
|
95357
95622
|
request2.headers.push(key, val);
|
|
95358
95623
|
} else if (headerName === "transfer-encoding" || headerName === "keep-alive" || headerName === "upgrade") {
|
|
95359
95624
|
throw new InvalidArgumentError(`invalid ${headerName} header`);
|
|
95360
95625
|
} else if (headerName === "connection") {
|
|
95361
|
-
const value = typeof val === "string" ? val
|
|
95362
|
-
if (value
|
|
95626
|
+
const value = typeof val === "string" ? val : null;
|
|
95627
|
+
if (value === null) {
|
|
95363
95628
|
throw new InvalidArgumentError("invalid connection header");
|
|
95364
95629
|
}
|
|
95365
|
-
|
|
95366
|
-
|
|
95630
|
+
for (const token of value.toLowerCase().split(",")) {
|
|
95631
|
+
const trimmed = token.trim();
|
|
95632
|
+
if (!isValidHTTPToken(trimmed)) {
|
|
95633
|
+
throw new InvalidArgumentError("invalid connection header");
|
|
95634
|
+
}
|
|
95635
|
+
if (trimmed === "close") {
|
|
95636
|
+
request2.reset = true;
|
|
95637
|
+
}
|
|
95367
95638
|
}
|
|
95368
95639
|
} else if (headerName === "expect") {
|
|
95369
95640
|
throw new NotSupportedError("expect header not supported");
|
|
@@ -95394,6 +95665,10 @@ function requireWrapHandler() {
|
|
|
95394
95665
|
var _a4, _b2;
|
|
95395
95666
|
return (_b2 = (_a4 = __privateGet(this, _handler)).onConnect) == null ? void 0 : _b2.call(_a4, abort, context);
|
|
95396
95667
|
}
|
|
95668
|
+
onResponseStarted() {
|
|
95669
|
+
var _a4, _b2;
|
|
95670
|
+
return (_b2 = (_a4 = __privateGet(this, _handler)).onResponseStarted) == null ? void 0 : _b2.call(_a4);
|
|
95671
|
+
}
|
|
95397
95672
|
onHeaders(statusCode, rawHeaders, resume, statusMessage) {
|
|
95398
95673
|
var _a4, _b2;
|
|
95399
95674
|
return (_b2 = (_a4 = __privateGet(this, _handler)).onHeaders) == null ? void 0 : _b2.call(_a4, statusCode, rawHeaders, resume, statusMessage);
|
|
@@ -95426,7 +95701,7 @@ function requireWrapHandler() {
|
|
|
95426
95701
|
var _a4, _b2;
|
|
95427
95702
|
const rawHeaders = [];
|
|
95428
95703
|
for (const [key, val] of Object.entries(headers2)) {
|
|
95429
|
-
rawHeaders.push(Buffer.from(key
|
|
95704
|
+
rawHeaders.push(Buffer.from(key, "latin1"), toRawHeaderValue(val));
|
|
95430
95705
|
}
|
|
95431
95706
|
(_b2 = (_a4 = __privateGet(this, _handler)).onUpgrade) == null ? void 0 : _b2.call(_a4, statusCode, rawHeaders, socket);
|
|
95432
95707
|
}
|
|
@@ -95434,7 +95709,7 @@ function requireWrapHandler() {
|
|
|
95434
95709
|
var _a4, _b2;
|
|
95435
95710
|
const rawHeaders = [];
|
|
95436
95711
|
for (const [key, val] of Object.entries(headers2)) {
|
|
95437
|
-
rawHeaders.push(Buffer.from(key
|
|
95712
|
+
rawHeaders.push(Buffer.from(key, "latin1"), toRawHeaderValue(val));
|
|
95438
95713
|
}
|
|
95439
95714
|
if (((_b2 = (_a4 = __privateGet(this, _handler)).onHeaders) == null ? void 0 : _b2.call(_a4, statusCode, rawHeaders, () => controller.resume(), statusMessage)) === false) {
|
|
95440
95715
|
controller.pause();
|
|
@@ -95450,7 +95725,7 @@ function requireWrapHandler() {
|
|
|
95450
95725
|
var _a4, _b2;
|
|
95451
95726
|
const rawTrailers = [];
|
|
95452
95727
|
for (const [key, val] of Object.entries(trailers)) {
|
|
95453
|
-
rawTrailers.push(Buffer.from(key
|
|
95728
|
+
rawTrailers.push(Buffer.from(key, "latin1"), toRawHeaderValue(val));
|
|
95454
95729
|
}
|
|
95455
95730
|
(_b2 = (_a4 = __privateGet(this, _handler)).onComplete) == null ? void 0 : _b2.call(_a4, rawTrailers);
|
|
95456
95731
|
}
|
|
@@ -95462,6 +95737,9 @@ function requireWrapHandler() {
|
|
|
95462
95737
|
(_b2 = (_a4 = __privateGet(this, _handler)).onError) == null ? void 0 : _b2.call(_a4, err);
|
|
95463
95738
|
}
|
|
95464
95739
|
}, _handler = new WeakMap(), _a3);
|
|
95740
|
+
function toRawHeaderValue(value) {
|
|
95741
|
+
return Array.isArray(value) ? value.map((item) => Buffer.from(item, "latin1")) : Buffer.from(value, "latin1");
|
|
95742
|
+
}
|
|
95465
95743
|
return wrapHandler$1;
|
|
95466
95744
|
}
|
|
95467
95745
|
var dispatcher;
|
|
@@ -95469,7 +95747,7 @@ var hasRequiredDispatcher;
|
|
|
95469
95747
|
function requireDispatcher() {
|
|
95470
95748
|
if (hasRequiredDispatcher) return dispatcher;
|
|
95471
95749
|
hasRequiredDispatcher = 1;
|
|
95472
|
-
const EventEmitter2 = require$$
|
|
95750
|
+
const EventEmitter2 = require$$0$2;
|
|
95473
95751
|
const WrapHandler = requireWrapHandler();
|
|
95474
95752
|
const wrapInterceptor = (dispatch2) => (opts, handler) => dispatch2(opts, WrapHandler.wrap(handler));
|
|
95475
95753
|
class Dispatcher extends EventEmitter2 {
|
|
@@ -95570,6 +95848,10 @@ function requireUnwrapHandler() {
|
|
|
95570
95848
|
__privateSet(this, _controller, new UnwrapController(abort));
|
|
95571
95849
|
(_b3 = (_a4 = __privateGet(this, _handler)).onRequestStart) == null ? void 0 : _b3.call(_a4, __privateGet(this, _controller), context);
|
|
95572
95850
|
}
|
|
95851
|
+
onResponseStarted() {
|
|
95852
|
+
var _a4, _b3;
|
|
95853
|
+
return (_b3 = (_a4 = __privateGet(this, _handler)).onResponseStarted) == null ? void 0 : _b3.call(_a4);
|
|
95854
|
+
}
|
|
95573
95855
|
onUpgrade(statusCode, rawHeaders, socket) {
|
|
95574
95856
|
var _a4, _b3;
|
|
95575
95857
|
(_b3 = (_a4 = __privateGet(this, _handler)).onRequestUpgrade) == null ? void 0 : _b3.call(_a4, __privateGet(this, _controller), statusCode, parseHeaders2(rawHeaders), socket);
|
|
@@ -95742,8 +96024,8 @@ var hasRequiredConnect;
|
|
|
95742
96024
|
function requireConnect() {
|
|
95743
96025
|
if (hasRequiredConnect) return connect;
|
|
95744
96026
|
hasRequiredConnect = 1;
|
|
95745
|
-
const net2 = require$$0$
|
|
95746
|
-
const assert2 = require$$0$
|
|
96027
|
+
const net2 = require$$0$5;
|
|
96028
|
+
const assert2 = require$$0$3;
|
|
95747
96029
|
const util2 = requireUtil$5();
|
|
95748
96030
|
const { InvalidArgumentError } = requireErrors();
|
|
95749
96031
|
let tls;
|
|
@@ -95769,6 +96051,20 @@ function requireConnect() {
|
|
|
95769
96051
|
if (this._maxCachedSessions === 0) {
|
|
95770
96052
|
return;
|
|
95771
96053
|
}
|
|
96054
|
+
if (this._sessionCache.has(sessionKey)) {
|
|
96055
|
+
this._sessionCache.delete(sessionKey);
|
|
96056
|
+
} else if (this._sessionCache.size >= this._maxCachedSessions) {
|
|
96057
|
+
for (const [key, ref] of this._sessionCache) {
|
|
96058
|
+
if (ref.deref() === void 0) {
|
|
96059
|
+
this._sessionCache.delete(key);
|
|
96060
|
+
return;
|
|
96061
|
+
}
|
|
96062
|
+
}
|
|
96063
|
+
const oldest = this._sessionCache.keys().next();
|
|
96064
|
+
if (!oldest.done) {
|
|
96065
|
+
this._sessionCache.delete(oldest.value);
|
|
96066
|
+
}
|
|
96067
|
+
}
|
|
95772
96068
|
this._sessionCache.set(sessionKey, new WeakRef(session));
|
|
95773
96069
|
this._sessionRegistry.register(session, sessionKey);
|
|
95774
96070
|
}
|
|
@@ -96497,7 +96793,7 @@ function requireLlhttpWasm() {
|
|
|
96497
96793
|
if (hasRequiredLlhttpWasm) return llhttpWasm.exports;
|
|
96498
96794
|
hasRequiredLlhttpWasm = 1;
|
|
96499
96795
|
(function(module) {
|
|
96500
|
-
const { Buffer: Buffer2 } = require$$0$
|
|
96796
|
+
const { Buffer: Buffer2 } = require$$0$7;
|
|
96501
96797
|
const wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgL5YUCAgd/A34gASACaiEEAkAgACIDKAIMIgANACADKAIEBEAgAyABNgIECyMAQRBrIgkkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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C0HjAQwHC0HXAQwGC0HYAQwFC0HZAQwEC0HaAQwDC0HbAQwCC0HdAQwBC0HcAQshAgNAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJ/AkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAg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ogKiAqICogKiAqICogKiAqICogKiAqICogIAogILIAQgAUEBaiIBRw0AC0HJACECDOwCCyABQQFqIQEgA0Evai0AAEEBcQ2lAiADQQA2AhwgAyABNgIUIANBlxA2AhAgA0EKNgIMQQAhAgzrAgsgASAERwRAA0AgAS0AAEEgRw0VIAQgAUEBaiIBRw0AC0H4ACECDOsCC0H4ACECDOoCCyADQQI6ACgMOAtBACECIANBADYCHCADQb8LNgIQIANBAjYCDCADIAFBAWo2AhQM6AILQQAhAgzOAgtBDSECDM0CC0ETIQIMzAILQRUhAgzLAgtBFiECDMoCC0EYIQIMyQILQRkhAgzIAgtBGiECDMcCC0EbIQIMxgILQRwhAgzFAgtBHSECDMQCC0EeIQIMwwILQR8hAgzCAgtBICECDMECC0EiIQIMwAILQSMhAgy/AgtBJSECDL4CC0HlACECDL0CCyADQT02AhwgAyABNgIUIAMgADYCDEEAIQIM1QILIANBGzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDNQCCyADQSA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzTAgsgA0ETNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0gILIANBCzYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNECCyADQRA2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzQAgsgA0EgNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzwILIANBCzYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM4CCyADQQw2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzNAgtBACECIANBADYCHCADIAE2AhQgA0HdDjYCECADQRI2AgwMzAILAkADQAJAIAEtAABBCmsOBAACAgACCyAEIAFBAWoiAUcNAAtB/QEhAgzMAgsCQAJAIAMtADZBAUcNAEEAIQACQCADKAI4IgJFDQAgAigCYCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUcNASADQfwBNgIcIAMgATYCFCADQdwZNgIQIANBFTYCDEEAIQIMzQILQdwBIQIMswILIANBADYCHCADIAE2AhQgA0H5CzYCECADQR82AgxBACECDMsCCwJAAkAgAy0AKEEBaw4CBAEAC0HbASECDLICC0HUASECDLECCyADQQI6ADFBACEAAkAgAygCOCICRQ0AIAIoAgAiAkUNACADIAIRAAAhAAsgAEUEQEHdASECDLECCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQbQMNgIQIANBEDYCDEEAIQIMygILIANB+wE2AhwgAyABNgIUIANBgRo2AhAgA0EVNgIMQQAhAgzJAgsgASAERgRAQfoBIQIMyQILIAEtAABByABGDQEgA0EBOgAoC0HAASECDK4CC0HaASECDK0CCyABIARHBEAgA0EMNgIIIAMgATYCBEHZASECDK0CC0H5ASECDMUCCyABIARGBEBB+AEhAgzFAgsgAS0AAEHIAEcNBCABQQFqIQFB2AEhAgyrAgsgASAERgRAQfcBIQIMxAILAkACQCABLQAAQcUAaw4QAAUFBQUFBQUFBQUFBQUFAQULIAFBAWohAUHWASECDKsCCyABQQFqIQFB1wEhAgyqAgtB9gEhAiABIARGDcICIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbrVAGotAABHDQMgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMMCCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIARQRAQeMBIQIMqgILIANB9QE2AhwgAyABNgIUIAMgADYCDEEAIQIMwgILQfQBIQIgASAERg3BAiADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEG41QBqLQAARw0CIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzCAgsgA0GBBDsBKCADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQLiIADQMMAgsgA0EANgIAC0EAIQIgA0EANgIcIAMgATYCFCADQeUfNgIQIANBCDYCDAy/AgtB1QEhAgylAgsgA0HzATYCHCADIAE2AhQgAyAANgIMQQAhAgy9AgtBACEAAkAgAygCOCICRQ0AIAIoAkAiAkUNACADIAIRAAAhAAsgAEUNbiAAQRVHBEAgA0EANgIcIAMgATYCFCADQYIPNgIQIANBIDYCDEEAIQIMvQILIANBjwE2AhwgAyABNgIUIANB7Bs2AhAgA0EVNgIMQQAhAgy8AgsgASAERwRAIANBDTYCCCADIAE2AgRB0wEhAgyjAgtB8gEhAgy7AgsgASAERgRAQfEBIQIMuwILAkACQAJAIAEtAABByABrDgsAAQgICAgICAgIAggLIAFBAWohAUHQASECDKMCCyABQQFqIQFB0QEhAgyiAgsgAUEBaiEBQdIBIQIMoQILQfABIQIgASAERg25AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBtdUAai0AAEcNBCAAQQJGDQMgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuQILQe8BIQIgASAERg24AiADKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABBs9UAai0AAEcNAyAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMuAILQe4BIQIgASAERg23AiADKAIAIgAgBCABa2ohBiABIABrQQJqIQUDQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAY2AgAMtwILIAMoAgQhACADQgA3AwAgAyAAIAVBAWoiARArIgBFDQIgA0HsATYCHCADIAE2AhQgAyAANgIMQQAhAgy2AgsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNnAIgA0HtATYCHCADIAE2AhQgAyAANgIMQQAhAgy0AgtBzwEhAgyaAgtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDLQCC0HOASECDJoCCyADQesBNgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMsgILIAEgBEYEQEHrASECDLICCyABLQAAQS9GBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GyODYCECADQQg2AgxBACECDLECC0HNASECDJcCCyABIARHBEAgA0EONgIIIAMgATYCBEHMASECDJcCC0HqASECDK8CCyABIARGBEBB6QEhAgyvAgsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFBywEhAgyWAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZcCIANB6AE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAEgBEYEQEHnASECDK4CCwJAIAEtAABBLkYEQCABQQFqIQEMAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5gE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILQcoBIQIMlAILIAEgBEYEQEHlASECDK0CC0EAIQBBASEFQQEhB0EAIQICQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQCABLQAAQTBrDgoKCQABAgMEBQYICwtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshAkEAIQVBACEHDAILQQkhAkEBIQBBACEFQQAhBwwBC0EAIQVBASECCyADIAI6ACsgAUEBaiEBAkACQCADLQAuQRBxDQACQAJAAkAgAy0AKg4DAQACBAsgB0UNAwwCCyAADQEMAgsgBUUNAQsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDQIgA0HiATYCHCADIAE2AhQgAyAANgIMQQAhAgyvAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZoCIANB4wE2AhwgAyABNgIUIAMgADYCDEEAIQIMrgILIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ2YAiADQeQBNgIcIAMgATYCFCADIAA2AgwMrQILQckBIQIMkwILQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANBpA02AhAgA0EhNgIMQQAhAgytAgtByAEhAgyTAgsgA0HhATYCHCADIAE2AhQgA0HQGjYCECADQRU2AgxBACECDKsCCyABIARGBEBB4QEhAgyrAgsCQCABLQAAQSBGBEAgA0EAOwE0IAFBAWohAQwBCyADQQA2AhwgAyABNgIUIANBmRE2AhAgA0EJNgIMQQAhAgyrAgtBxwEhAgyRAgsgASAERgRAQeABIQIMqgILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyrAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqgILQcYBIQIMkAILIAEgBEYEQEHfASECDKkCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqgILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKkCC0HFASECDI8CCyABIARGBEBB3gEhAgyoAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKkCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyoAgtBxAEhAgyOAgsgASAERgRAQd0BIQIMpwILAkACQAJAAkAgAS0AAEEKaw4XAgMDAAMDAwMDAwMDAwMDAwMDAwMDAwEDCyABQQFqDAULIAFBAWohAUHDASECDI8CCyABQQFqIQEgA0Evai0AAEEBcQ0IIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKcCCyADQQA2AhwgAyABNgIUIANBjQs2AhAgA0ENNgIMQQAhAgymAgsgASAERwRAIANBDzYCCCADIAE2AgRBASECDI0CC0HcASECDKUCCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtB2wEhAgymAgsgAygCBCEAIANBADYCBCADIAAgARAtIgBFBEAgAUEBaiEBDAQLIANB2gE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMpQILIAMoAgQhACADQQA2AgQgAyAAIAEQLSIADQEgAUEBagshAUHBASECDIoCCyADQdkBNgIcIAMgADYCDCADIAFBAWo2AhRBACECDKICC0HCASECDIgCCyADQS9qLQAAQQFxDQEgA0EANgIcIAMgATYCFCADQeQcNgIQIANBGTYCDEEAIQIMoAILIAEgBEYEQEHZASEC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IAFBAWohAUGeASECDOQBCyABQQFqIQFBnwEhAgzjAQtBtwEhAiABIARGDfsBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQezUAGotAABHDSggAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPwBCyADQQA2AgAgBkEBaiEBQQ0MKAtBtgEhAiABIARGDfoBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDScgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPsBCyADQQA2AgAgBkEBaiEBQQwMJwtBtQEhAiABIARGDfkBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQerUAGotAABHDSYgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPoBCyADQQA2AgAgBkEBaiEBQQMMJgtBtAEhAiABIARGDfgBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQejUAGotAABHDSUgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPkBCyADQQA2AgAgBkEBaiEBQSYMJQsgASAERgRAQbMBIQIM+AELAkACQCABLQAAQdQAaw4CAAEnCyABQQFqIQFBmQEhAgzfAQsgAUEBaiEBQZoBIQIM3gELQbIBIQIgASAERg32ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHm1ABqLQAARw0jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz3AQsgA0EANgIAIAZBAWohAUEnDCMLQbEBIQIgASAERg31ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHk1ABqLQAARw0iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz2AQsgA0EANgIAIAZBAWohAUEcDCILQbABIQIgASAERg30ASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHe1ABqLQAARw0hIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz1AQsgA0EANgIAIAZBAWohAUEGDCELQa8BIQIgASAERg3zASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHZ1ABqLQAARw0gIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAz0AQsgA0EANgIAIAZBAWohAUEZDCALIAEgBEYEQEGuASECDPMBCwJAAkACQAJAIAEtAABBLWsOIwAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEkJCQkJAIkJCQDJAsgAUEBaiEBQY4BIQIM3AELIAFBAWohAUGPASECDNsBCyABQQFqIQFBlAEhAgzaAQsgAUEBaiEBQZUBIQIM2QELQa0BIQIgASAERg3xASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHX1ABqLQAARw0eIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzyAQsgA0EANgIAIAZBAWohAUELDB4LIAEgBEYEQEGsASECDPEBCwJAAkAgAS0AAEHBAGsOAwAgASALIAFBAWohAUGQASECDNgBCyABQQFqIQFBkwEhAgzXAQsgASAERgRAQasBIQIM8AELAkACQCABLQAAQcEAaw4PAB8fHx8fHx8fHx8fHx8BHwsgAUEBaiEBQZEBIQIM1wELIAFBAWohAUGSASECDNYBCyABIARGBEBBqgEhAgzvAQsgAS0AAEHMAEcNHCABQQFqIQFBCgwbC0GpASECIAEgBEYN7QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABB0dQAai0AAEcNGiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7gELIANBADYCACAGQQFqIQFBHgwaC0GoASECIAEgBEYN7AEgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCABLQAAIABBytQAai0AAEcNGSAAQQZGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7QELIANBADYCACAGQQFqIQFBFQwZC0GnASECIAEgBEYN6wEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBx9QAai0AAEcNGCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM7AELIANBADYCACAGQQFqIQFBFwwYC0GmASECIAEgBEYN6gEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBwdQAai0AAEcNFyAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6wELIANBADYCACAGQQFqIQFBGAwXCyABIARGBEBBpQEhAgzqAQsCQAJAIAEtAABByQBrDgcAGRkZGRkBGQsgAUEBaiEBQYsBIQIM0QELIAFBAWohAUGMASECDNABC0GkASECIAEgBEYN6AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBptUAai0AAEcNFSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6QELIANBADYCACAGQQFqIQFBCQwVC0GjASECIAEgBEYN5wEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBpNUAai0AAEcNFCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM6AELIANBADYCACAGQQFqIQFBHwwUC0GiASECIAEgBEYN5gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBvtQAai0AAEcNEyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5wELIANBADYCACAGQQFqIQFBAgwTC0GhASECIAEgBEYN5QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGA0AgAS0AACAAQbzUAGotAABHDREgAEEBRg0CIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADOUBCyABIARGBEBBoAEhAgzlAQtBASABLQAAQd8ARw0RGiABQQFqIQFBhwEhAgzLAQsgA0EANgIAIAZBAWohAUGIASECDMoBC0GfASECIAEgBEYN4gEgAygCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABBhNUAai0AAEcNDyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4wELIANBADYCACAGQQFqIQFBKQwPC0GeASECIAEgBEYN4QEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBuNQAai0AAEcNDiAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM4gELIANBADYCACAGQQFqIQFBLQwOCyABIARGBEBBnQEhAgzhAQsgAS0AAEHFAEcNDiABQQFqIQFBhAEhAgzHAQsgASAERgRAQZwBIQIM4AELAkACQCABLQAAQcwAaw4IAA8PDw8PDwEPCyABQQFqIQFBggEhAgzHAQsgAUEBaiEBQYMBIQIMxgELQZsBIQIgASAERg3eASADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEGz1ABqLQAARw0LIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzfAQsgA0EANgIAIAZBAWohAUEjDAsLQZoBIQIgASAERg3dASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGw1ABqLQAARw0KIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzeAQsgA0EANgIAIAZBAWohAUEADAoLIAEgBEYEQEGZASECDN0BCwJAAkAgAS0AAEHIAGsOCAAMDAwMDAwBDAsgAUEBaiEBQf0AIQIMxAELIAFBAWohAUGAASECDMMBCyABIARGBEBBmAEhAgzcAQsCQAJAIAEtAABBzgBrDgMACwELCyABQQFqIQFB/gAhAgzDAQsgAUEBaiEBQf8AIQIMwgELIAEgBEYEQEGXASECDNsBCyABLQAAQdkARw0IIAFBAWohAUEIDAcLQZYBIQIgASAERg3ZASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEGs1ABqLQAARw0GIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzaAQsgA0EANgIAIAZBAWohAUEFDAYLQZUBIQIgASAERg3YASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGm1ABqLQAARw0FIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzZAQsgA0EANgIAIAZBAWohAUEWDAULQZQBIQIgASAERg3XASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0EIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzYAQsgA0EANgIAIAZBAWohAUEQDAQLIAEgBEYEQEGTASECDNcBCwJAAkAgAS0AAEHDAGsODAAGBgYGBgYGBgYGAQYLIAFBAWohAUH5ACECDL4BCyABQQFqIQFB+gAhAgy9AQtBkgEhAiABIARGDdUBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQaDUAGotAABHDQIgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNYBCyADQQA2AgAgBkEBaiEBQSQMAgsgA0EANgIADAILIAEgBEYEQEGRASECDNQBCyABLQAAQcwARw0BIAFBAWohAUETCzoAKSADKAIEIQAgA0EANgIEIAMgACABEC4iAA0CDAELQQAhAiADQQA2AhwgAyABNgIUIANB/h82AhAgA0EGNgIMDNEBC0H4ACECDLcBCyADQZABNgIcIAMgATYCFCADIAA2AgxBACECDM8BC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ0AIABBFUYNASADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgzOAQtB9wAhAgy0AQsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDMwBCyABIARGBEBBjwEhAgzMAQsCQCABLQAAQSBGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GbHzYCECADQQY2AgxBACECDMwBC0ECIQIMsgELA0AgAS0AAEEgRw0CIAQgAUEBaiIBRw0AC0GOASECDMoBCyABIARGBEBBjQEhAgzKAQsCQCABLQAAQQlrDgRKAABKAAtB9QAhAgywAQsgAy0AKUEFRgRAQfYAIQIMsAELQfQAIQIMrwELIAEgBEYEQEGMASECDMgBCyADQRA2AgggAyABNgIEDAoLIAEgBEYEQEGLASECDMcBCwJAIAEtAABBCWsOBEcAAEcAC0HzACECDK0BCyABIARHBEAgA0EQNgIIIAMgATYCBEHxACECDK0BC0GKASECDMUBCwJAIAEgBEcEQANAIAEtAABBoNAAai0AACIAQQNHBEACQCAAQQFrDgJJAAQLQfAAIQIMrwELIAQgAUEBaiIBRw0AC0GIASEC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BCABQQFqIgFHDQALQfsAIQIMpwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMpgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMpQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0DIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMpAELIANBADYCHCADIAE2AhQgA0G8CjYCECADQQc2AgxBACECDKMBC0HPACECDIkBC0HRACECDIgBC0HnACECDIcBCyABIARGBEBB+gAhAgygAQsCQCABLQAAQQlrDgQgAAAgAAsgAUEBaiEBQeYAIQIMhgELIAEgBEYEQEH5ACECDJ8BCwJAIAEtAABBCWsOBB8AAB8AC0EAIQACQCADKAI4IgJFDQAgAigCOCICRQ0AIAMgAhEAACEACyAARQRAQeIBIQIMhgELIABBFUcEQCADQQA2AhwgAyABNgIUIANByQ02AhAgA0EaNgIMQQAhAgyfAQsgA0H4ADYCHCADIAE2AhQgA0HqGjYCECADQRU2AgxBACECDJ4BCyABIARHBEAgA0ENNgIIIAMgATYCBEHkACECDIUBC0H3ACECDJ0BCyABIARGBEBB9gAhAgydAQsCQAJAAkAgAS0AAEHIAGsOCwABCwsLCwsLCwsCCwsgAUEBaiEBQd0AIQIMhQELIAFBAWohAUHgACECDIQBCyABQQFqIQFB4wAhAgyDAQtB9QAhAiABIARGDZsBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbXVAGotAABHDQggAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJwBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIABEAgA0H0ADYCHCADIAE2AhQgAyAANgIMQQAhAgycAQtB4gAhAgyCAQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJwBC0HhACECDIIBCyADQfMANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMmgELIAMtACkiAEEja0ELSQ0JAkAgAEEGSw0AQQEgAHRBygBxRQ0ADAoLQQAhAiADQQA2AhwgAyABNgIUIANB7Qk2AhAgA0EINgIMDJkBC0HyACECIAEgBEYNmAEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBs9UAai0AAEcNBSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMmQELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfEANgIcIAMgATYCFCADIAA2AgxBACECDJkBC0HfACECDH8LQQAhAAJAIAMoAjgiAkUNACACKAI0IgJFDQAgAyACEQAAIQALAkAgAARAIABBFUYNASADQQA2AhwgAyABNgIUIANB6g02AhAgA0EmNgIMQQAhAgyZAQtB3gAhAgx/CyADQfAANgIcIAMgATYCFCADQYAbNgIQIANBFTYCDEEAIQIMlwELIAMtAClBIUYNBiADQQA2AhwgAyABNgIUIANBkQo2AhAgA0EINgIMQQAhAgyWAQtB7wAhAiABIARGDZUBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDVAGotAABHDQIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADJYBCyADKAIEIQAgA0IANwMAIAMgACAGQQFqIgEQKyIARQ0CIANB7QA2AhwgAyABNgIUIAMgADYCDEEAIQIMlQELIANBADYCAAsgAygCBCEAIANBADYCBCADIAAgARArIgBFDYABIANB7gA2AhwgAyABNgIUIAMgADYCDEEAIQIMkwELQdwAIQIMeQtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJMBC0HbACECDHkLIANB7AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyRAQsgAy0AKSIAQSNJDQAgAEEuRg0AIANBADYCHCADIAE2AhQgA0HJCTYCECADQQg2AgxBACECDJABC0HaACECDHYLIAEgBEYEQEHrACECDI8BCwJAIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMjwELQdkAIQIMdQsgASAERwRAIANBDjYCCCADIAE2AgRB2AAhAgx1C0HqACECDI0BCyABIARGBEBB6QAhAgyNAQsgAS0AAEEwayIAQf8BcUEKSQRAIAMgADoAKiABQQFqIQFB1wAhAgx0CyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeiADQegANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyABIARGBEBB5wAhAgyMAQsCQCABLQAAQS5GBEAgAUEBaiEBDAELIAMoAgQhACADQQA2AgQgAyAAIAEQLyIARQ17IANB5gA2AhwgAyABNgIUIAMgADYCDEEAIQIMjAELQdYAIQIMcgsgASAERgRAQeUAIQIMiwELQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIANgIcIAMgATYCFCADIAA2AgxBACECDI0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNfSADQeMANgIcIAMgATYCFCADIAA2AgxBACECDIwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNeyADQeQANgIcIAMgATYCFCADIAA2AgwMiwELQdQAIQIMcQsgAy0AKUEiRg2GAUHTACECDHALQQAhAAJAIAMoAjgiAkUNACACKAJEIgJFDQAgAyACEQAAIQALIABFBEBB1QAhAgxwCyAAQRVHBEAgA0EANgIcIAMgATYCFCADQaQNNgIQIANBITYCDEEAIQIMiQELIANB4QA2AhwgAyABNgIUIANB0Bo2AhAgA0EVNgIMQQAhAgyIAQsgASAERgRAQeAAIQIMiAELAkACQAJAAkACQCABLQAAQQprDgQBBAQABAsgAUEBaiEBDAELIAFBAWohASADQS9qLQAAQQFxRQ0BC0HSACECDHALIANBADYCHCADIAE2AhQgA0G2ETYCECADQQk2AgxBACECDIgBCyADQQA2AhwgAyABNgIUIANBthE2AhAgA0EJNgIMQQAhAgyHAQsgASAERgRAQd8AIQIMhwELIAEtAABBCkYEQCABQQFqIQEMCQsgAy0ALkHAAHENCCADQQA2AhwgAyABNgIUIANBthE2AhAgA0ECNgIMQQAhAgyGAQsgASAERgRAQd0AIQIMhgELIAEtAAAiAkENRgRAIAFBAWohAUHQACECDG0LIAEhACACQQlrDgQFAQEFAQsgBCABIgBGBEBB3AAhAgyFAQsgAC0AAEEKRw0AIABBAWoMAgtBACECIANBADYCHCADIAA2AhQgA0HKLTYCECADQQc2AgwMgwELIAEgBEYEQEHbACECDIMBCwJAIAEtAABBCWsOBAMAAAMACyABQQFqCyEBQc4AIQIMaAsgASAERgRAQdoAIQIMgQELIAEtAABBCWsOBAABAQABC0EAIQIgA0EANgIcIANBmhI2AhAgA0EHNgIMIAMgAUEBajYCFAx/CyADQYASOwEqQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2QA2AhwgAyABNgIUIANB6ho2AhAgA0EVNgIMQQAhAgx+C0HNACECDGQLIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDHwLIAEgBEYEQEHZACECDHwLIAEtAABBIEcNPSABQQFqIQEgAy0ALkEBcQ09IANBADYCHCADIAE2AhQgA0HCHDYCECADQR42AgxBACECDHsLIAEgBEYEQEHYACECDHsLAkACQAJAAkACQCABLQAAIgBBCmsOBAIDAwABCyABQQFqIQFBLCECDGULIABBOkcNASADQQA2AhwgAyABNgIUIANB5xE2AhAgA0EKNgIMQQAhAgx9CyABQQFqIQEgA0Evai0AAEEBcUUNcyADLQAyQYABcUUEQCADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALAkACQCAADhZNTEsBAQEBAQEBAQEBAQEBAQEBAQEAAQsgA0EpNgIcIAMgATYCFCADQawZNgIQIANBFTYCDEEAIQIMfgsgA0EANgIcIAMgATYCFCADQeULNgIQIANBETYCDEEAIQIMfQtBACEAAkAgAygCOCICRQ0AIAIoAlwiAkUNACADIAIRAAAhAAsgAEUNWSAAQRVHDQEgA0EFNgIcIAMgATYCFCADQZsbNgIQIANBFTYCDEEAIQIMfAtBywAhAgxiC0EAIQIgA0EANgIcIAMgATYCFCADQZAONgIQIANBFDYCDAx6CyADIAMvATJBgAFyOwEyDDsLIAEgBEcEQCADQRE2AgggAyABNgIEQcoAIQIMYAtB1wAhAgx4CyABIARGBEBB1gAhAgx4CwJAAkACQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQeMAaw4TAEBAQEBAQEBAQEBAQAFAQEACA0ALIAFBAWohAUHGACECDGELIAFBAWohAUHHACECDGALIAFBAWohAUHIACECDF8LIAFBAWohAUHJACECDF4LQdUAIQIgBCABIgBGDXYgBCABayADKAIAIgFqIQYgACABa0EFaiEHA0AgAUGQyABqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0IQQQgAUEFRg0KGiABQQFqIQEgBCAAQQFqIgBHDQALIAMgBjYCAAx2C0HUACECIAQgASIARg11IAQgAWsgAygCACIBaiEGIAAgAWtBD2ohBwNAIAFBgMgAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNB0EDIAFBD0YNCRogAUEBaiEBIAQgAEEBaiIARw0ACyADIAY2AgAMdQtB0wAhAiAEIAEiAEYNdCAEIAFrIAMoAgAiAWohBiAAIAFrQQ5qIQcDQCABQeLHAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQYgAUEORg0HIAFBAWohASAEIABBAWoiAEcNAAsgAyAGNgIADHQLQdIAIQIgBCABIgBGDXMgBCABayADKAIAIgFqIQUgACABa0EBaiEGA0AgAUHgxwBqLQAAIAAtAAAiB0EgciAHIAdBwQBrQf8BcUEaSRtB/wFxRw0FIAFBAUYNAiABQQFqIQEgBCAAQQFqIgBHDQALIAMgBTYCAAxzCyABIARGBEBB0QAhAgxzCwJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB7gBrDgcAOTk5OTkBOQsgAUEBaiEBQcMAIQIMWgsgAUEBaiEBQcQAIQIMWQsgA0EANgIAIAZBAWohAUHFACECDFgLQdAAIQIgBCABIgBGDXAgBCABayADKAIAIgFqIQYgACABa0EJaiEHA0AgAUHWxwBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0CQQIgAUEJRg0EGiABQQFqIQEgBCAAQQFqIgBHDQALIAMgBjYCAAxwC0HPACECIAQgASIARg1vIAQgAWsgAygCACIBaiEGIAAgAWtBBWohBwNAIAFB0McAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNASABQQVGDQIgAUEBaiEBIAQgAEEBaiIARw0ACyADIAY2AgAMbwsgACEBIANBADYCAAwzC0EBCzoALCADQQA2AgAgB0EBaiEBC0EtIQIMUgsCQANAIAEtAABB0MUAai0AAEEBRw0BIAQgAUEBaiIBRw0AC0HNACECDGsLQcIAIQIMUQsgASAERgRAQcwAIQIMagsgAS0AAEE6RgRAIAMoAgQhACADQQA2AgQgAyAAIAEQMCIARQ0zIANBywA2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMagsgA0EANgIcIAMgATYCFCADQecRNgIQIANBCjYCDEEAIQIMaQsCQAJAIAMtACxBAmsOAgABJwsgA0Ezai0AAEECcUUNJiADLQAuQQJxDSYgA0EANgIcIAMgATYCFCADQaYUNgIQIANBCzYCDEEAIQIMaQsgAy0AMkEgcUUNJSADLQAuQQJxDSUgA0EANgIcIAMgATYCFCADQb0TNgIQIANBDzYCDEEAIQIMaAtBACEAAkAgAygCOCICRQ0AIAIoAkgiAkUNACADIAIRAAAhAAsgAEUEQEHBACECDE8LIABBFUcEQCADQQA2AhwgAyABNgIUIANBpg82AhAgA0EcNgIMQQAhAgxoCyADQcoANgIcIAMgATYCFCADQYUcNgIQIANBFTYCDEEAIQIMZwsgASAERwRAA0AgAS0AAEHAwQBqLQAAQQFHDRcgBCABQQFqIgFHDQALQcQAIQIMZwtBxAAhAgxmCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUE2IQIMUgsgAUEBaiEBQTchAgxRCyABQQFqIQFBOCECDFALDBULIAQgAUEBaiIBRw0AC0E8IQIMZgtBPCECDGULIAEgBEYEQEHIACECDGULIANBEjYCCCADIAE2AgQCQAJAAkACQAJAIAMtACxBAWsOBBQAAQIJCyADLQAyQSBxDQNB4AEhAgxPCwJAIAMvATIiAEEIcUUNACADLQAoQQFHDQAgAy0ALkEIcUUNAgsgAyAAQff7A3FBgARyOwEyDAsLIAMgAy8BMkEQcjsBMgwECyADQQA2AgQgAyABIAEQMSIABEAgA0HBADYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgxmCyABQQFqIQEMWAsgA0EANgIcIAMgATYCFCADQfQTNgIQIANBBDYCDEEAIQIMZAtBxwAhAiABIARGDWMgAygCACIAIAQgAWtqIQUgASAAa0EGaiEGAkADQCAAQcDFAGotAAAgAS0AAEEgckcNASAAQQZGDUogAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMZAsgA0EANgIADAULAkAgASAERwRAA0AgAS0AAEHAwwBqLQAAIgBBAUcEQCAAQQJHDQMgAUEBaiEBDAULIAQgAUEBaiIBRw0AC0HFACECDGQLQcUAIQIMYwsLIANBADoALAwBC0ELIQIMRwtBPyECDEYLAkACQANAIAEtAAAiAEEgRwRAAkAgAEEKaw4EAwUFAwALIABBLEYNAwwECyAEIAFBAWoiAUcNAAtBxgAhAgxgCyADQQg6ACwMDgsgAy0AKEEBRw0CIAMtAC5BCHENAiADKAIEIQAgA0EANgIEIAMgACABEDEiAARAIANBwgA2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMXwsgAUEBaiEBDFALQTshAgxECwJAA0AgAS0AACIAQSBHIABBCUdxDQEgBCABQQFqIgFHDQALQcMAIQIMXQsLQTwhAgxCCwJAAkAgASAERwRAA0AgAS0AACIAQSBHBEAgAEEKaw4EAwQEAwQLIAQgAUEBaiIBRw0AC0E/IQIMXQtBPyECDFwLIAMgAy8BMkEgcjsBMgwKCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNTiADQT42AhwgAyABNgIUIAMgADYCDEEAIQIMWgsCQCABIARHBEADQCABLQAAQcDDAGotAAAiAEEBRwRAIABBAkYNAwwMCyAEIAFBAWoiAUcNAAtBNyECDFsLQTchAgxaCyABQQFqIQEMBAtBOyECIAQgASIARg1YIAQgAWsgAygCACIBaiEGIAAgAWtBBWohBwJAA0AgAUGQyABqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEMPwsgAUEBaiEBIAQgAEEBaiIARw0ACyADIAY2AgAMWQsgA0EANgIAIAAhAQwFC0E6IQIgBCABIgBGDVcgBCABayADKAIAIgFqIQYgACABa0EIaiEHAkADQCABQbTBAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAUEIRgRAQQUhAQw+CyABQQFqIQEgBCAAQQFqIgBHDQALIAMgBjYCAAxYCyADQQA2AgAgACEBDAQLQTkhAiAEIAEiAEYNViAEIAFrIAMoAgAiAWohBiAAIAFrQQNqIQcCQANAIAFBsMEAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNASABQQNGBEBBBiEBDD0LIAFBAWohASAEIABBAWoiAEcNAAsgAyAGNgIADFcLIANBADYCACAAIQEMAwsCQANAIAEtAAAiAEEgRwRAIABBCmsOBAcEBAcCCyAEIAFBAWoiAUcNAAtBOCECDFYLIABBLEcNASABQQFqIQBBASEBAkACQAJAAkACQCADLQAsQQVrDgQDAQIEAAsgACEBDAQLQQIhAQwBC0EEIQELIANBAToALCADIAMvATIgAXI7ATIgACEBDAELIAMgAy8BMkEIcjsBMiAAIQELQT4hAgw7CyADQQA6ACwLQTkhAgw5CyABIARGBEBBNiECDFILAkACQAJAAkACQCABLQAAQQprDgQAAgIBAgsgAygCBCEAIANBADYCBCADIAAgARAxIgBFDQIgA0EzNgIcIAMgATYCFCADIAA2AgxBACECDFULIAMoAgQhACADQQA2AgQgAyAAIAEQMSIARQRAIAFBAWohAQwGCyADQTI2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMVAsgAy0ALkEBcQRAQd8BIQIMOwsgAygCBCEAIANBADYCBCADIAAgARAxIgANAQxJC0E0IQIMOQsgA0E1NgIcIAMgATYCFCADIAA2AgxBACECDFELQTUhAgw3CyADQS9qLQAAQQFxDQAgA0EANgIcIAMgATYCFCADQesWNgIQIANBGTYCDEEAIQIMTwtBMyECDDULIAEgBEYEQEEyIQIMTgsCQCABLQAAQQpGBEAgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GSFzYCECADQQM2AgxBACECDE4LQTIhAgw0CyABIARGBEBBMSECDE0LAkAgAS0AACIAQQlGDQAgAEEgRg0AQQEhAgJAIAMtACxBBWsOBAYEBQANCyADIAMvATJBCHI7ATIMDAsgAy0ALkEBcUUNASADLQAsQQhHDQAgA0EAOgAsC0E9IQIMMgsgA0EANgIcIAMgATYCFCADQcIWNgIQIANBCjYCDEEAIQIMSgtBAiECDAELQQQhAgsgA0EBOgAsIAMgAy8BMiACcjsBMgwGCyABIARGBEBBMCECDEcLIAEtAABBCkYEQCABQQFqIQEMAQsgAy0ALkEBcQ0AIANBADYCHCADIAE2AhQgA0HcKDYCECADQQI2AgxBACECDEYLQTAhAgwsCyABQQFqIQFBMSECDCsLIAEgBEYEQEEvIQIMRAsgAS0AACIAQQlHIABBIEdxRQRAIAFBAWohASADLQAuQQFxDQEgA0EANgIcIAMgATYCFCADQZcQNgIQIANBCjYCDEEAIQIMRAtBASECAkACQAJAAkACQAJAIAMtACxBAmsOBwUEBAMBAgAECyADIAMvATJBCHI7ATIMAwtBAiECDAELQQQhAgsgA0EBOgAsIAMgAy8BMiACcjsBMgtBLyECDCsLIANBADYCHCADIAE2AhQgA0GEEzYCECADQQs2AgxBACECDEMLQeEBIQIMKQsgASAERgRAQS4hAgxCCyADQQA2AgQgA0ESNgIIIAMgASABEDEiAA0BC0EuIQIMJwsgA0EtNgIcIAMgATYCFCADIAA2AgxBACECDD8LQQAhAAJAIAMoAjgiAkUNACACKAJMIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB2AA2AhwgAyABNgIUIANBsxs2AhAgA0EVNgIMQQAhAgw+C0HMACECDCQLIANBADYCHCADIAE2AhQgA0GzDjYCECADQR02AgxBACECDDwLIAEgBEYEQEHOACECDDwLIAEtAAAiAEEgRg0CIABBOkYNAQsgA0EAOgAsQQkhAgwhCyADKAIEIQAgA0EANgIEIAMgACABEDAiAA0BDAILIAMtAC5BAXEEQEHeASECDCALIAMoAgQhACADQQA2AgQgAyAAIAEQMCIARQ0CIANBKjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgw4CyADQcsANgIcIAMgADYCDCADIAFBAWo2AhRBACECDDcLIAFBAWohAUHAACECDB0LIAFBAWohAQwsCyABIARGBEBBKyECDDULAkAgAS0AAEEKRgRAIAFBAWohAQwBCyADLQAuQcAAcUUNBgsgAy0AMkGAAXEEQEEAIQACQCADKAI4IgJFDQAgAigCXCICRQ0AIAMgAhEAACEACyAARQ0SIABBFUYEQCADQQU2AhwgAyABNgIUIANBmxs2AhAgA0EVNgIMQQAhAgw2CyADQQA2AhwgAyABNgIUIANBkA42AhAgA0EUNgIMQQAhAgw1CyADQTJqIQIgAxA1QQAhAAJAIAMoAjgiBkUNACAGKAIoIgZFDQAgAyAGEQAAIQALIAAOFgIBAAQEBAQEBAQEBAQEBAQEBAQEBAMECyADQQE6ADALIAIgAi8BAEHAAHI7AQALQSshAgwYCyADQSk2AhwgAyABNgIUIANBrBk2AhAgA0EVNgIMQQAhAgwwCyADQQA2AhwgAyABNgIUIANB5Qs2AhAgA0ERNgIMQQAhAgwvCyADQQA2AhwgAyABNgIUIANBpQs2AhAgA0ECNgIMQQAhAgwuC0EBIQcgAy8BMiIFQQhxRQRAIAMpAyBCAFIhBwsCQCADLQAwBEBBASEAIAMtAClBBUYNASAFQcAAcUUgB3FFDQELAkAgAy0AKCICQQJGBEBBASEAIAMvATQiBkHlAEYNAkEAIQAgBUHAAHENAiAGQeQARg0CIAZB5gBrQQJJDQIgBkHMAUYNAiAGQbACRg0CDAELQQAhACAFQcAAcQ0BC0ECIQAgBUEIcQ0AIAVBgARxBEACQCACQQFHDQAgAy0ALkEKcQ0AQQUhAAwCC0EEIQAMAQsgBUEgcUUEQCADEDZBAEdBAnQhAAwBC0EAQQMgAykDIFAbIQALIABBAWsOBQIABwEDBAtBESECDBMLIANBAToAMQwpC0EAIQICQCADKAI4IgBFDQAgACgCMCIARQ0AIAMgABEAACECCyACRQ0mIAJBFUYEQCADQQM2AhwgAyABNgIUIANB0hs2AhAgA0EVNgIMQQAhAgwrC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAwqCyADQQA2AhwgAyABNgIUIANB+SA2AhAgA0EPNgIMQQAhAgwpC0EAIQACQCADKAI4IgJFDQAgAigCMCICRQ0AIAMgAhEAACEACyAADQELQQ4hAgwOCyAAQRVGBEAgA0ECNgIcIAMgATYCFCADQdIbNgIQIANBFTYCDEEAIQIMJwsgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDEEAIQIMJgtBKiECDAwLIAEgBEcEQCADQQk2AgggAyABNgIEQSkhAgwMC0EmIQIMJAsgAyADKQMgIgwgBCABa60iCn0iC0IAIAsgDFgbNwMgIAogDFQEQEElIQIMJAsgAygCBCEAIANBADYCBCADIAAgASAMp2oiARAyIgBFDQAgA0EFNgIcIAMgATYCFCADIAA2AgxBACECDCMLQQ8hAgwJC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43FxYAAQIDBAUGBxQUFBQUFBQICQoLDA0UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFA4PEBESExQLQgIhCgwWC0IDIQoMFQtCBCEKDBQLQgUhCgwTC0IGIQoMEgtCByEKDBELQgghCgwQC0IJIQoMDwtCCiEKDA4LQgshCgwNC0IMIQoMDAtCDSEKDAsLQg4hCgwKC0IPIQoMCQtCCiEKDAgLQgshCgwHC0IMIQoMBgtCDSEKDAULQg4hCgwEC0IPIQoMAwsgA0EANgIcIAMgATYCFCADQZ8VNgIQIANBDDYCDEEAIQIMIQsgASAERgRAQSIhAgwhC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsONxUUAAECAwQFBgcWFhYWFhYWCAkKCwwNFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYODxAREhMWC0ICIQoMFAtCAyEKDBMLQgQhCgwSC0IFIQoMEQtCBiEKDBALQgchCgwPC0IIIQoMDgtCCSEKDA0LQgohCgwMC0ILIQoMCwtCDCEKDAoLQg0hCgwJC0IOIQoMCAtCDyEKDAcLQgohCgwGC0ILIQoMBQtCDCEKDAQLQg0hCgwDC0IOIQoMAgtCDyEKDAELQgEhCgsgAUEBaiEBIAMpAyAiC0L//////////w9YBEAgAyALQgSGIAqENwMgDAILIANBADYCHCADIAE2AhQgA0G1CTYCECADQQw2AgxBACECDB4LQSchAgwEC0EoIQIMAwsgAyABOgAsIANBADYCACAHQQFqIQFBDCECDAILIANBADYCACAGQQFqIQFBCiECDAELIAFBAWohAUEIIQIMAAsAC0EAIQIgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDAwXC0EAIQIgA0EANgIcIAMgATYCFCADQYMRNgIQIANBCTYCDAwWC0EAIQIgA0EANgIcIAMgATYCFCADQd8KNgIQIANBCTYCDAwVC0EAIQIgA0EANgIcIAMgATYCFCADQe0QNgIQIANBCTYCDAwUC0EAIQIgA0EANgIcIAMgATYCFCADQdIRNgIQIANBCTYCDAwTC0EAIQIgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDAwSC0EAIQIgA0EANgIcIAMgATYCFCADQYMRNgIQIANBCTYCDAwRC0EAIQIgA0EANgIcIAMgATYCFCADQd8KNgIQIANBCTYCDAwQC0EAIQIgA0EANgIcIAMgATYCFCADQe0QNgIQIANBCTYCDAwPC0EAIQIgA0EANgIcIAMgATYCFCADQdIRNgIQIANBCTYCDAwOC0EAIQIgA0EANgIcIAMgATYCFCADQbkXNgIQIANBDzYCDAwNC0EAIQIgA0EANgIcIAMgATYCFCADQbkXNgIQIANBDzYCDAwMC0EAIQIgA0EANgIcIAMgATYCFCADQZkTNgIQIANBCzYCDAwLC0EAIQIgA0EANgIcIAMgATYCFCADQZ0JNgIQIANBCzYCDAwKC0EAIQIgA0EANgIcIAMgATYCFCADQZcQNgIQIANBCjYCDAwJC0EAIQIgA0EANgIcIAMgATYCFCADQbEQNgIQIANBCjYCDAwIC0EAIQIgA0EANgIcIAMgATYCFCADQbsdNgIQIANBAjYCDAwHC0EAIQIgA0EANgIcIAMgATYCFCADQZYWNgIQIANBAjYCDAwGC0EAIQIgA0EANgIcIAMgATYCFCADQfkYNgIQIANBAjYCDAwFC0EAIQIgA0EANgIcIAMgATYCFCADQcQYNgIQIANBAjYCDAwECyADQQI2AhwgAyABNgIUIANBqR42AhAgA0EWNgIMQQAhAgwDC0HeACECIAEgBEYNAiAJQQhqIQcgAygCACEFAkACQCABIARHBEAgBUGWyABqIQggBCAFaiABayEGIAVBf3NBCmoiBSABaiEAA0AgAS0AACAILQAARwRAQQIhCAwDCyAFRQRAQQAhCCAAIQEMAwsgBUEBayEFIAhBAWohCCAEIAFBAWoiAUcNAAsgBiEFIAQhAQsgB0EBNgIAIAMgBTYCAAwBCyADQQA2AgAgByAINgIACyAHIAE2AgQgCSgCDCEAAkACQCAJKAIIQQFrDgIEAQALIANBADYCHCADQcIeNgIQIANBFzYCDCADIABBAWo2AhRBACECDAMLIANBADYCHCADIAA2AhQgA0HXHjYCECADQQk2AgxBACECDAILIAEgBEYEQEEoIQIMAgsgA0EJNgIIIAMgATYCBEEnIQIMAQsgASAERgRAQQEhAgwBCwNAAkACQAJAIAEtAABBCmsOBAABAQABCyABQQFqIQEMAQsgAUEBaiEBIAMtAC5BIHENAEEAIQIgA0EANgIcIAMgATYCFCADQaEhNgIQIANBBTYCDAwCC0EBIQIgASAERw0ACwsgCUEQaiQAIAJFBEAgAygCDCEADAELIAMgAjYCHEEAIQAgAygCBCIBRQ0AIAMgASAEIAMoAggRAQAiAUUNACADIAQ2AhQgAyABNgIMIAEhAAsgAAu+AgECfyAAQQA6AAAgAEHkAGoiAUEBa0EAOgAAIABBADoAAiAAQQA6AAEgAUEDa0EAOgAAIAFBAmtBADoAACAAQQA6AAMgAUEEa0EAOgAAQQAgAGtBA3EiASAAaiIAQQA2AgBB5AAgAWtBfHEiAiAAaiIBQQRrQQA2AgACQCACQQlJDQAgAEEANgIIIABBADYCBCABQQhrQQA2AgAgAUEMa0EANgIAIAJBGUkNACAAQQA2AhggAEEANgIUIABBADYCECAAQQA2AgwgAUEQa0EANgIAIAFBFGtBADYCACABQRhrQQA2AgAgAUEca0EANgIAIAIgAEEEcUEYciICayIBQSBJDQAgACACaiEAA0AgAEIANwMYIABCADcDECAAQgA3AwggAEIANwMAIABBIGohACABQSBrIgFBH0sNAAsLC1YBAX8CQCAAKAIMDQACQAJAAkACQCAALQAxDgMBAAMCCyAAKAI4IgFFDQAgASgCMCIBRQ0AIAAgAREAACIBDQMLQQAPCwALIABByhk2AhBBDiEBCyABCxoAIAAoAgxFBEAgAEHeHzYCECAAQRU2AgwLCxQAIAAoAgxBFUYEQCAAQQA2AgwLCxQAIAAoAgxBFkYEQCAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsrAAJAIABBJ08NAEL//////wkgAK2IQgGDUA0AIABBAnRB0DhqKAIADwsACxcAIABBL08EQAALIABBAnRB7DlqKAIAC78JAQF/QfQtIQECQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQeQAaw70A2NiAAFhYWFhYWECAwQFYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQYHCAkKCwwNDg9hYWFhYRBhYWFhYWFhYWFhYRFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWESExQVFhcYGRobYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1NmE3ODk6YWFhYWFhYWE7YWFhPGFhYWE9Pj9hYWFhYWFhYUBhYUFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFCQ0RFRkdISUpLTE1OT1BRUlNhYWFhYWFhYVRVVldYWVpbYVxdYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhXmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYV9gYQtB6iwPC0GYJg8LQe0xDwtBoDcPC0HJKQ8LQbQpDwtBli0PC0HrKw8LQaI1DwtB2zQPC0HgKQ8LQeMkDwtB1SQPC0HuJA8LQeYlDwtByjQPC0HQNw8LQao1DwtB9SwPC0H2Jg8LQYIiDwtB8jMPC0G+KA8LQec3DwtBzSEPC0HAIQ8LQbglDwtByyUPC0GWJA8LQY80DwtBzTUPC0HdKg8LQe4zDwtBnDQPC0GeMQ8LQfQ1DwtB5SIPC0GvJQ8LQZkxDwtBsjYPC0H5Ng8LQcQyDwtB3SwPC0GCMQ8LQcExDwtBjTcPC0HJJA8LQew2DwtB5yoPC0HIIw8LQeIhDwtByTcPC0GlIg8LQZQiDwtB2zYPC0HeNQ8LQYYmDwtBvCsPC0GLMg8LQaAjDwtB9jAPC0GALA8LQYkrDwtBpCYPC0HyIw8LQYEoDwtBqzIPC0HrJw8LQcI2DwtBoiQPC0HPKg8LQdwjDwtBhycPC0HkNA8LQbciDwtBrTEPC0HVIg8LQa80DwtB3iYPC0HWMg8LQfQ0DwtBgTgPC0H0Nw8LQZI2DwtBnScPC0GCKQ8LQY0jDwtB1zEPC0G9NQ8LQbQ3DwtB2DAPC0G2Jw8LQZo4DwtBpyoPC0HEJw8LQa4jDwtB9SIPCwALQcomIQELIAELFwAgACAALwEuQf7/A3EgAUEAR3I7AS4LGgAgACAALwEuQf3/A3EgAUEAR0EBdHI7AS4LGgAgACAALwEuQfv/A3EgAUEAR0ECdHI7AS4LGgAgACAALwEuQff/A3EgAUEAR0EDdHI7AS4LGgAgACAALwEuQe//A3EgAUEAR0EEdHI7AS4LGgAgACAALwEuQd//A3EgAUEAR0EFdHI7AS4LGgAgACAALwEuQb//A3EgAUEAR0EGdHI7AS4LGgAgACAALwEuQf/+A3EgAUEAR0EHdHI7AS4LGgAgACAALwEuQf/9A3EgAUEAR0EIdHI7AS4LGgAgACAALwEuQf/7A3EgAUEAR0EJdHI7AS4LPgECfwJAIAAoAjgiA0UNACADKAIEIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEHhEjYCEEEYIQQLIAQLPgECfwJAIAAoAjgiA0UNACADKAIIIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEH8ETYCEEEYIQQLIAQLPgECfwJAIAAoAjgiA0UNACADKAIMIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEHsCjYCEEEYIQQLIAQLPgECfwJAIAAoAjgiA0UNACADKAIQIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEH6HjYCEEEYIQQLIAQLPgECfwJAIAAoAjgiA0UNACADKAIUIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEHLEDYCEEEYIQQLIAQLPgECfwJAIAAoAjgiA0UNACADKAIYIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEG3HzYCEEEYIQQLIAQLPgECfwJAIAAoAjgiA0UNACADKAIcIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEG/FTYCEEEYIQQLIAQLPgECfwJAIAAoAjgiA0UNACADKAIsIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEH+CDYCEEEYIQQLIAQLPgECfwJAIAAoAjgiA0UNACADKAIgIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEGMHTYCEEEYIQQLIAQLPgECfwJAIAAoAjgiA0UNACADKAIkIgNFDQAgACABIAIgAWsgAxEBACIEQX9HDQAgAEHmFTYCEEEYIQQLIAQLOAAgAAJ/IAAvATJBFHFBFEYEQEEBIAAtAChBAUYNARogAC8BNEHlAEYMAQsgAC0AKUEFRgs6ADALWQECfwJAIAAtAChBAUYNACAALwE0IgFB5ABrQeQASQ0AIAFBzAFGDQAgAUGwAkYNACAALwEyIgBBwABxDQBBASECIABBiARxQYAERg0AIABBKHFFIQILIAILjAEBAn8CQAJAAkAgAC0AKkUNACAALQArRQ0AIAAvATIiAUECcUUNAQwCCyAALwEyIgFBAXFFDQELQQEhAiAALQAoQQFGDQAgAC8BNCIAQeQAa0HkAEkNACAAQcwBRg0AIABBsAJGDQAgAUHAAHENAEEAIQIgAUGIBHFBgARGDQAgAUEocUEARyECCyACC1cAIABBGGpCADcDACAAQgA3AwAgAEE4akIANwMAIABBMGpCADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEH9ATYCHAsGACAAEDoLmi0BC38jAEEQayIKJABB3NUAKAIAIglFBEBBnNkAKAIAIgVFBEBBqNkAQn83AgBBoNkAQoCAhICAgMAANwIAQZzZACAKQQhqQXBxQdiq1aoFcyIFNgIAQbDZAEEANgIAQYDZAEEANgIAC0GE2QBBwNkENgIAQdTVAEHA2QQ2AgBB6NUAIAU2AgBB5NUAQX82AgBBiNkAQcCmAzYCAANAIAFBgNYAaiABQfTVAGoiAjYCACACIAFB7NUAaiIDNgIAIAFB+NUAaiADNgIAIAFBiNYAaiABQfzVAGoiAzYCACADIAI2AgAgAUGQ1gBqIAFBhNYAaiICNgIAIAIgAzYCACABQYzWAGogAjYCACABQSBqIgFBgAJHDQALQczZBEGBpgM2AgBB4NUAQazZACgCADYCAEHQ1QBBgKYDNgIAQdzVAEHI2QQ2AgBBzP8HQTg2AgBByNkEIQkLAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHsAU0EQEHE1QAoAgAiBkEQIABBE2pBcHEgAEELSRsiBEEDdiIAdiIBQQNxBEACQCABQQFxIAByQQFzIgJBA3QiAEHs1QBqIgEgAEH01QBqKAIAIgAoAggiA0YEQEHE1QAgBkF+IAJ3cTYCAAwBCyABIAM2AgggAyABNgIMCyAAQQhqIQEgACACQQN0IgJBA3I2AgQgACACaiIAIAAoAgRBAXI2AgQMEQtBzNUAKAIAIgggBE8NASABBEACQEECIAB0IgJBACACa3IgASAAdHFoIgBBA3QiAkHs1QBqIgEgAkH01QBqKAIAIgIoAggiA0YEQEHE1QAgBkF+IAB3cSIGNgIADAELIAEgAzYCCCADIAE2AgwLIAIgBEEDcjYCBCAAQQN0IgAgBGshBSAAIAJqIAU2AgAgAiAEaiIEIAVBAXI2AgQgCARAIAhBeHFB7NUAaiEAQdjVACgCACEDAn9BASAIQQN2dCIBIAZxRQRAQcTVACABIAZyNgIAIAAMAQsgACgCCAsiASADNgIMIAAgAzYCCCADIAA2AgwgAyABNgIICyACQQhqIQFB2NUAIAQ2AgBBzNUAIAU2AgAMEQtByNUAKAIAIgtFDQEgC2hBAnRB9NcAaigCACIAKAIEQXhxIARrIQUgACECA0ACQCACKAIQIgFFBEAgAkEUaigCACIBRQ0BCyABKAIEQXhxIARrIgMgBUkhAiADIAUgAhshBSABIAAgAhshACABIQIMAQsLIAAoAhghCSAAKAIMIgMgAEcEQEHU1QAoAgAaIAMgACgCCCIBNgIIIAEgAzYCDAwQCyAAQRRqIgIoAgAiAUUEQCAAKAIQIgFFDQMgAEEQaiECCwNAIAIhByABIgNBFGoiAigCACIBDQAgA0EQaiECIAMoAhAiAQ0ACyAHQQA2AgAMDwtBfyEEIABBv39LDQAgAEETaiIBQXBxIQRByNUAKAIAIghFDQBBACAEayEFAkACQAJAAn9BACAEQYACSQ0AGkEfIARB////B0sNABogBEEmIAFBCHZnIgBrdkEBcSAAQQF0a0E+agsiBkECdEH01wBqKAIAIgJFBEBBACEBQQAhAwwBC0EAIQEgBEEZIAZBAXZrQQAgBkEfRxt0IQBBACEDA0ACQCACKAIEQXhxIARrIgcgBU8NACACIQMgByIFDQBBACEFIAIhAQwDCyABIAJBFGooAgAiByAHIAIgAEEddkEEcWpBEGooAgAiAkYbIAEgBxshASAAQQF0IQAgAg0ACwsgASADckUEQEEAIQNBAiAGdCIAQQAgAGtyIAhxIgBFDQMgAGhBAnRB9NcAaigCACEBCyABRQ0BCwNAIAEoAgRBeHEgBGsiAiAFSSEAIAIgBSAAGyEFIAEgAyAAGyEDIAEoAhAiAAR/IAAFIAFBFGooAgALIgENAAsLIANFDQAgBUHM1QAoAgAgBGtPDQAgAygCGCEHIAMgAygCDCIARwRAQdTVACgCABogACADKAIIIgE2AgggASAANgIMDA4LIANBFGoiAigCACIBRQRAIAMoAhAiAUUNAyADQRBqIQILA0AgAiEGIAEiAEEUaiICKAIAIgENACAAQRBqIQIgACgCECIBDQALIAZBADYCAAwNC0HM1QAoAgAiAyAETwRAQdjVACgCACEBAkAgAyAEayICQRBPBEAgASAEaiIAIAJBAXI2AgQgASADaiACNgIAIAEgBEEDcjYCBAwBCyABIANBA3I2AgQgASADaiIAIAAoAgRBAXI2AgRBACEAQQAhAgtBzNUAIAI2AgBB2NUAIAA2AgAgAUEIaiEBDA8LQdDVACgCACIDIARLBEAgBCAJaiIAIAMgBGsiAUEBcjYCBEHc1QAgADYCAEHQ1QAgATYCACAJIARBA3I2AgQgCUEIaiEBDA8LQQAhASAEAn9BnNkAKAIABEBBpNkAKAIADAELQajZAEJ/NwIAQaDZAEKAgISAgIDAADcCAEGc2QAgCkEMakFwcUHYqtWqBXM2AgBBsNkAQQA2AgBBgNkAQQA2AgBBgIAECyIAIARBxwBqIgVqIgZBACAAayIHcSICTwRAQbTZAEEwNgIADA8LAkBB/NgAKAIAIgFFDQBB9NgAKAIAIgggAmohACAAIAFNIAAgCEtxDQBBACEBQbTZAEEwNgIADA8LQYDZAC0AAEEEcQ0EAkACQCAJBEBBhNkAIQEDQCABKAIAIgAgCU0EQCAAIAEoAgRqIAlLDQMLIAEoAggiAQ0ACwtBABA7IgBBf0YNBSACIQZBoNkAKAIAIgFBAWsiAyAAcQRAIAIgAGsgACADakEAIAFrcWohBgsgBCAGTw0FIAZB/v///wdLDQVB/NgAKAIAIgMEQEH02AAoAgAiByAGaiEBIAEgB00NBiABIANLDQYLIAYQOyIBIABHDQEMBwsgBiADayAHcSIGQf7///8HSw0EIAYQOyEAIAAgASgCACABKAIEakYNAyAAIQELAkAgBiAEQcgAak8NACABQX9GDQBBpNkAKAIAIgAgBSAGa2pBACAAa3EiAEH+////B0sEQCABIQAMBwsgABA7QX9HBEAgACAGaiEGIAEhAAwHC0EAIAZrEDsaDAQLIAEiAEF/Rw0FDAMLQQAhAwwMC0EAIQAMCgsgAEF/Rw0CC0GA2QBBgNkAKAIAQQRyNgIACyACQf7///8HSw0BIAIQOyEAQQAQOyEBIABBf0YNASABQX9GDQEgACABTw0BIAEgAGsiBiAEQThqTQ0BC0H02ABB9NgAKAIAIAZqIgE2AgBB+NgAKAIAIAFJBEBB+NgAIAE2AgALAkACQAJAQdzVACgCACICBEBBhNkAIQEDQCAAIAEoAgAiAyABKAIEIgVqRg0CIAEoAggiAQ0ACwwCC0HU1QAoAgAiAUEARyAAIAFPcUUEQEHU1QAgADYCAAtBACEBQYjZACAGNgIAQYTZACAANgIAQeTVAEF/NgIAQejVAEGc2QAoAgA2AgBBkNkAQQA2AgADQCABQYDWAGogAUH01QBqIgI2AgAgAiABQezVAGoiAzYCACABQfjVAGogAzYCACABQYjWAGogAUH81QBqIgM2AgAgAyACNgIAIAFBkNYAaiABQYTWAGoiAjYCACACIAM2AgAgAUGM1gBqIAI2AgAgAUEgaiIBQYACRw0AC0F4IABrQQ9xIgEgAGoiAiAGQThrIgMgAWsiAUEBcjYCBEHg1QBBrNkAKAIANgIAQdDVACABNgIAQdzVACACNgIAIAAgA2pBODYCBAwCCyAAIAJNDQAgAiADSQ0AIAEoAgxBCHENAEF4IAJrQQ9xIgAgAmoiA0HQ1QAoAgAgBmoiByAAayIAQQFyNgIEIAEgBSAGajYCBEHg1QBBrNkAKAIANgIAQdDVACAANgIAQdzVACADNgIAIAIgB2pBODYCBAwBCyAAQdTVACgCAEkEQEHU1QAgADYCAAsgACAGaiEDQYTZACEBAkACQAJAA0AgAyABKAIARwRAIAEoAggiAQ0BDAILCyABLQAMQQhxRQ0BC0GE2QAhAQNAIAEoAgAiAyACTQRAIAMgASgCBGoiBSACSw0DCyABKAIIIQEMAAsACyABIAA2AgAgASABKAIEIAZqNgIEIABBeCAAa0EPcWoiCSAEQQNyNgIEIANBeCADa0EPcWoiBiAEIAlqIgRrIQEgAiAGRgRAQdzVACAENgIAQdDVAEHQ1QAoAgAgAWoiADYCACAEIABBAXI2AgQMCAtB2NUAKAIAIAZGBEBB2NUAIAQ2AgBBzNUAQczVACgCACABaiIANgIAIAQgAEEBcjYCBCAAIARqIAA2AgAMCAsgBigCBCIFQQNxQQFHDQYgBUF4cSEIIAVB/wFNBEAgBUEDdiEDIAYoAggiACAGKAIMIgJGBEBBxNUAQcTVACgCAEF+IAN3cTYCAAwHCyACIAA2AgggACACNgIMDAYLIAYoAhghByAGIAYoAgwiAEcEQCAAIAYoAggiAjYCCCACIAA2AgwMBQsgBkEUaiICKAIAIgVFBEAgBigCECIFRQ0EIAZBEGohAgsDQCACIQMgBSIAQRRqIgIoAgAiBQ0AIABBEGohAiAAKAIQIgUNAAsgA0EANgIADAQLQXggAGtBD3EiASAAaiIHIAZBOGsiAyABayIBQQFyNgIEIAAgA2pBODYCBCACIAVBNyAFa0EPcWpBP2siAyADIAJBEGpJGyIDQSM2AgRB4NUAQazZACgCADYCAEHQ1QAgATYCAEHc1QAgBzYCACADQRBqQYzZACkCADcCACADQYTZACkCADcCCEGM2QAgA0EIajYCAEGI2QAgBjYCAEGE2QAgADYCAEGQ2QBBADYCACADQSRqIQEDQCABQQc2AgAgBSABQQRqIgFLDQALIAIgA0YNACADIAMoAgRBfnE2AgQgAyADIAJrIgU2AgAgAiAFQQFyNgIEIAVB/wFNBEAgBUF4cUHs1QBqIQACf0HE1QAoAgAiAUEBIAVBA3Z0IgNxRQRAQcTVACABIANyNgIAIAAMAQsgACgCCAsiASACNgIMIAAgAjYCCCACIAA2AgwgAiABNgIIDAELQR8hASAFQf///wdNBEAgBUEmIAVBCHZnIgBrdkEBcSAAQQF0a0E+aiEBCyACIAE2AhwgAkIANwIQIAFBAnRB9NcAaiEAQcjVACgCACIDQQEgAXQiBnFFBEAgACACNgIAQcjVACADIAZyNgIAIAIgADYCGCACIAI2AgggAiACNgIMDAELIAVBGSABQQF2a0EAIAFBH0cbdCEBIAAoAgAhAwJAA0AgAyIAKAIEQXhxIAVGDQEgAUEddiEDIAFBAXQhASAAIANBBHFqQRBqIgYoAgAiAw0ACyAGIAI2AgAgAiAANgIYIAIgAjYCDCACIAI2AggMAQsgACgCCCIBIAI2AgwgACACNgIIIAJBADYCGCACIAA2AgwgAiABNgIIC0HQ1QAoAgAiASAETQ0AQdzVACgCACIAIARqIgIgASAEayIBQQFyNgIEQdDVACABNgIAQdzVACACNgIAIAAgBEEDcjYCBCAAQQhqIQEMCAtBACEBQbTZAEEwNgIADAcLQQAhAAsgB0UNAAJAIAYoAhwiAkECdEH01wBqIgMoAgAgBkYEQCADIAA2AgAgAA0BQcjVAEHI1QAoAgBBfiACd3E2AgAMAgsgB0EQQRQgBygCECAGRhtqIAA2AgAgAEUNAQsgACAHNgIYIAYoAhAiAgRAIAAgAjYCECACIAA2AhgLIAZBFGooAgAiAkUNACAAQRRqIAI2AgAgAiAANgIYCyABIAhqIQEgBiAIaiIGKAIEIQULIAYgBUF+cTYCBCABIARqIAE2AgAgBCABQQFyNgIEIAFB/wFNBEAgAUF4cUHs1QBqIQACf0HE1QAoAgAiAkEBIAFBA3Z0IgFxRQRAQcTVACABIAJyNgIAIAAMAQsgACgCCAsiASAENgIMIAAgBDYCCCAEIAA2AgwgBCABNgIIDAELQR8hBSABQf///wdNBEAgAUEmIAFBCHZnIgBrdkEBcSAAQQF0a0E+aiEFCyAEIAU2AhwgBEIANwIQIAVBAnRB9NcAaiEAQcjVACgCACICQQEgBXQiA3FFBEAgACAENgIAQcjVACACIANyNgIAIAQgADYCGCAEIAQ2AgggBCAENgIMDAELIAFBGSAFQQF2a0EAIAVBH0cbdCEFIAAoAgAhAAJAA0AgACICKAIEQXhxIAFGDQEgBUEddiEAIAVBAXQhBSACIABBBHFqQRBqIgMoAgAiAA0ACyADIAQ2AgAgBCACNgIYIAQgBDYCDCAEIAQ2AggMAQsgAigCCCIAIAQ2AgwgAiAENgIIIARBADYCGCAEIAI2AgwgBCAANgIICyAJQQhqIQEMAgsCQCAHRQ0AAkAgAygCHCIBQQJ0QfTXAGoiAigCACADRgRAIAIgADYCACAADQFByNUAIAhBfiABd3EiCDYCAAwCCyAHQRBBFCAHKAIQIANGG2ogADYCACAARQ0BCyAAIAc2AhggAygCECIBBEAgACABNgIQIAEgADYCGAsgA0EUaigCACIBRQ0AIABBFGogATYCACABIAA2AhgLAkAgBUEPTQRAIAMgBCAFaiIAQQNyNgIEIAAgA2oiACAAKAIEQQFyNgIEDAELIAMgBGoiAiAFQQFyNgIEIAMgBEEDcjYCBCACIAVqIAU2AgAgBUH/AU0EQCAFQXhxQezVAGohAAJ/QcTVACgCACIBQQEgBUEDdnQiBXFFBEBBxNUAIAEgBXI2AgAgAAwBCyAAKAIICyIBIAI2AgwgACACNgIIIAIgADYCDCACIAE2AggMAQtBHyEBIAVB////B00EQCAFQSYgBUEIdmciAGt2QQFxIABBAXRrQT5qIQELIAIgATYCHCACQgA3AhAgAUECdEH01wBqIQBBASABdCIEIAhxRQRAIAAgAjYCAEHI1QAgBCAIcjYCACACIAA2AhggAiACNgIIIAIgAjYCDAwBCyAFQRkgAUEBdmtBACABQR9HG3QhASAAKAIAIQQCQANAIAQiACgCBEF4cSAFRg0BIAFBHXYhBCABQQF0IQEgACAEQQRxakEQaiIGKAIAIgQNAAsgBiACNgIAIAIgADYCGCACIAI2AgwgAiACNgIIDAELIAAoAggiASACNgIMIAAgAjYCCCACQQA2AhggAiAANgIMIAIgATYCCAsgA0EIaiEBDAELAkAgCUUNAAJAIAAoAhwiAUECdEH01wBqIgIoAgAgAEYEQCACIAM2AgAgAw0BQcjVACALQX4gAXdxNgIADAILIAlBEEEUIAkoAhAgAEYbaiADNgIAIANFDQELIAMgCTYCGCAAKAIQIgEEQCADIAE2AhAgASADNgIYCyAAQRRqKAIAIgFFDQAgA0EUaiABNgIAIAEgAzYCGAsCQCAFQQ9NBEAgACAEIAVqIgFBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQMAQsgACAEaiIHIAVBAXI2AgQgACAEQQNyNgIEIAUgB2ogBTYCACAIBEAgCEF4cUHs1QBqIQFB2NUAKAIAIQMCf0EBIAhBA3Z0IgIgBnFFBEBBxNUAIAIgBnI2AgAgAQwBCyABKAIICyICIAM2AgwgASADNgIIIAMgATYCDCADIAI2AggLQdjVACAHNgIAQczVACAFNgIACyAAQQhqIQELIApBEGokACABC0MAIABFBEA/AEEQdA8LAkAgAEH//wNxDQAgAEEASA0AIABBEHZAACIAQX9GBEBBtNkAQTA2AgBBfw8LIABBEHQPCwALC5lCIgBBgAgLDQEAAAAAAAAAAgAAAAMAQZgICwUEAAAABQBBqAgLCQYAAAAHAAAACABB5AgLwjJJbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
|
|
96502
96798
|
let wasmBuffer;
|
|
96503
96799
|
Object.defineProperty(module, "exports", {
|
|
@@ -96515,7 +96811,7 @@ function requireLlhttp_simdWasm() {
|
|
|
96515
96811
|
if (hasRequiredLlhttp_simdWasm) return llhttp_simdWasm.exports;
|
|
96516
96812
|
hasRequiredLlhttp_simdWasm = 1;
|
|
96517
96813
|
(function(module) {
|
|
96518
|
-
const { Buffer: Buffer2 } = require$$0$
|
|
96814
|
+
const { Buffer: Buffer2 } = require$$0$7;
|
|
96519
96815
|
const wasmBase64 = "AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAn9/AGABfwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAzU0BQYAAAMAAAAAAAADAQMAAwMDAAACAAAAAAICAgICAgICAgIBAQEBAQEBAQEBAwAAAwAAAAQFAXABExMFAwEAAgYIAX8BQcDZBAsHxQcoBm1lbW9yeQIAC19pbml0aWFsaXplAAgZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAC2xsaHR0cF9pbml0AAkYbGxodHRwX3Nob3VsZF9rZWVwX2FsaXZlADcMbGxodHRwX2FsbG9jAAsGbWFsbG9jADkLbGxodHRwX2ZyZWUADARmcmVlAAwPbGxodHRwX2dldF90eXBlAA0VbGxodHRwX2dldF9odHRwX21ham9yAA4VbGxodHRwX2dldF9odHRwX21pbm9yAA8RbGxodHRwX2dldF9tZXRob2QAEBZsbGh0dHBfZ2V0X3N0YXR1c19jb2RlABESbGxodHRwX2dldF91cGdyYWRlABIMbGxodHRwX3Jlc2V0ABMObGxodHRwX2V4ZWN1dGUAFBRsbGh0dHBfc2V0dGluZ3NfaW5pdAAVDWxsaHR0cF9maW5pc2gAFgxsbGh0dHBfcGF1c2UAFw1sbGh0dHBfcmVzdW1lABgbbGxodHRwX3Jlc3VtZV9hZnRlcl91cGdyYWRlABkQbGxodHRwX2dldF9lcnJubwAaF2xsaHR0cF9nZXRfZXJyb3JfcmVhc29uABsXbGxodHRwX3NldF9lcnJvcl9yZWFzb24AHBRsbGh0dHBfZ2V0X2Vycm9yX3BvcwAdEWxsaHR0cF9lcnJub19uYW1lAB4SbGxodHRwX21ldGhvZF9uYW1lAB8SbGxodHRwX3N0YXR1c19uYW1lACAabGxodHRw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AXRrQT5qIQILIAEgAjYCHCABQgA3AhAgAkECdEH01wBqIQACQEHI1QAoAgAiA0EBIAJ0IgdxRQRAIAAgATYCAEHI1QAgAyAHcjYCACABIAA2AhggASABNgIIIAEgATYCDAwBCyAEQRkgAkEBdmtBACACQR9HG3QhAiAAKAIAIQACQANAIAAiAygCBEF4cSAERg0BIAJBHXYhACACQQF0IQIgAyAAQQRxakEQaiIHKAIAIgANAAsgByABNgIAIAEgAzYCGCABIAE2AgwgASABNgIIDAELIAMoAggiACABNgIMIAMgATYCCCABQQA2AhggASADNgIMIAEgADYCCAtB5NUAQeTVACgCAEEBayIAQX8gABs2AgALCwcAIAAtACgLBwAgAC0AKgsHACAALQArCwcAIAAtACkLBwAgAC8BNAsHACAALQAwC0ABBH8gACgCGCEBIAAvAS4hAiAALQAoIQMgACgCOCEEIAAQOCAAIAQ2AjggACADOgAoIAAgAjsBLiAAIAE2AhgLhocCAwd/A34BeyABIAJqIQQCQCAAIgMoAgwiAA0AIAMoAgQEQCADIAE2AgQLIwBBEGsiCSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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DAgLQeMBDAcLQdcBDAYLQdgBDAULQdkBDAQLQdoBDAMLQdsBDAILQd0BDAELQdwBCyECA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAn8CQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAwJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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A0EXNgIcIAMgADYCDCADIAFBAWo2AhQM+AILIABBFUYNI0EAIQIgA0EANgIcIAMgATYCFCADQdYMNgIQIANBIzYCDAz3AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQwdCyADQRk2AhwgAyAANgIMIAMgAUEBajYCFAz2AgsgAygCBCEAQQAhAiADQQA2AgQgAyAAIAEQNCIARQRAIAFBAWohAQzvAgsgA0EaNgIcIAMgADYCDCADIAFBAWo2AhQM9QILIABBFUYNH0EAIQIgA0EANgIcIAMgATYCFCADQdAPNgIQIANBIjYCDAz0AgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDBsLIANBHDYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgzzAgsgAygCBCEAIANBADYCBCADIAAgARAzIgBFBEAgAUEBaiEBDOsCCyADQR02AhwgAyAANgIMIAMgAUEBajYCFEEAIQIM8gILIABBO0cNASABQQFqIQELQSYhAgzXAgtBACECIANBADYCHCADIAE2AhQgA0GfFTYCECADQQw2AgwM7wILIAEgBEcEQANAIAEtAABBIEcNhAIgBCABQQFqIgFHDQALQSwhAgzvAgtBLCECDO4CCyABIARGBEBBNCECDO4CCwJAAkADQAJAIAEtAABBCmsOBAIAAAMACyAEIAFBAWoiAUcNAAtBNCECDO8CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUNnwIgA0EyNgIcIAMgATYCFCADIAA2AgxBACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABEDEiAEUEQCABQQFqIQEMnwILIANBMjYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgztAgsgASAERwRAAkADQCABLQAAQTBrIgBB/wFxQQpPBEBBOiECDNcCCyADKQMgIgtCmbPmzJmz5swZVg0BIAMgC0IKfiIKNwMgIAogAK1C/wGDIgtCf4VWDQEgAyAKIAt8NwMgIAQgAUEBaiIBRw0AC0HAACECDO4CCyADKAIEIQAgA0EANgIEIAMgACABQQFqIgEQMSIADRcM4gILQcAAIQIM7AILIAEgBEYEQEHJACECDOwCCwJAA0ACQCABLQAAQQlrDhgAAqICogKpAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAgCiAgsgBCABQQFqIgFHDQALQckAIQIM7AILIAFBAWohASADQS9qLQAAQQFxDaUCIANBADYCHCADIAE2AhQgA0GXEDYCECADQQo2AgxBACECDOsCCyABIARHBEADQCABLQAAQSBHDRUgBCABQQFqIgFHDQALQfgAIQIM6wILQfgAIQIM6gILIANBAjoAKAw4C0EAIQIgA0EANgIcIANBvws2AhAgA0ECNgIMIAMgAUEBajYCFAzoAgtBACECDM4CC0ENIQIMzQILQRMhAgzMAgtBFSECDMsCC0EWIQIMygILQRghAgzJAgtBGSECDMgCC0EaIQIMxwILQRshAgzGAgtBHCECDMUCC0EdIQIMxAILQR4hAgzDAgtBHyECDMICC0EgIQIMwQILQSIhAgzAAgtBIyECDL8CC0ElIQIMvgILQeUAIQIMvQILIANBPTYCHCADIAE2AhQgAyAANgIMQQAhAgzVAgsgA0EbNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIM1AILIANBIDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNMCCyADQRM2AhwgAyABNgIUIANBmBo2AhAgA0EVNgIMQQAhAgzSAgsgA0ELNgIcIAMgATYCFCADQZgaNgIQIANBFTYCDEEAIQIM0QILIANBEDYCHCADIAE2AhQgA0GYGjYCECADQRU2AgxBACECDNACCyADQSA2AhwgAyABNgIUIANBpBw2AhAgA0EVNgIMQQAhAgzPAgsgA0ELNgIcIAMgATYCFCADQaQcNgIQIANBFTYCDEEAIQIMzgILIANBDDYCHCADIAE2AhQgA0GkHDYCECADQRU2AgxBACECDM0CC0EAIQIgA0EANgIcIAMgATYCFCADQd0ONgIQIANBEjYCDAzMAgsCQANAAkAgAS0AAEEKaw4EAAICAAILIAQgAUEBaiIBRw0AC0H9ASECDMwCCwJAAkAgAy0ANkEBRw0AQQAhAAJAIAMoAjgiAkUNACACKAJgIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRw0BIANB/AE2AhwgAyABNgIUIANB3Bk2AhAgA0EVNgIMQQAhAgzNAgtB3AEhAgyzAgsgA0EANgIcIAMgATYCFCADQfkLNgIQIANBHzYCDEEAIQIMywILAkACQCADLQAoQQFrDgIEAQALQdsBIQIMsgILQdQBIQIMsQILIANBAjoAMUEAIQACQCADKAI4IgJFDQAgAigCACICRQ0AIAMgAhEAACEACyAARQRAQd0BIQIMsQILIABBFUcEQCADQQA2AhwgAyABNgIUIANBtAw2AhAgA0EQNgIMQQAhAgzKAgsgA0H7ATYCHCADIAE2AhQgA0GBGjYCECADQRU2AgxBACECDMkCCyABIARGBEBB+gEhAgzJAgsgAS0AAEHIAEYNASADQQE6ACgLQcABIQIMrgILQdoBIQIMrQILIAEgBEcEQCADQQw2AgggAyABNgIEQdkBIQIMrQILQfkBIQIMxQILIAEgBEYEQEH4ASECDMUCCyABLQAAQcgARw0EIAFBAWohAUHYASECDKsCCyABIARGBEBB9wEhAgzEAgsCQAJAIAEtAABBxQBrDhAABQUFBQUFBQUFBQUFBQUBBQsgAUEBaiEBQdYBIQIMqwILIAFBAWohAUHXASECDKoCC0H2ASECIAEgBEYNwgIgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABButUAai0AAEcNAyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMwwILIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgBFBEBB4wEhAgyqAgsgA0H1ATYCHCADIAE2AhQgAyAANgIMQQAhAgzCAgtB9AEhAiABIARGDcECIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjVAGotAABHDQIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADMICCyADQYEEOwEoIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARAuIgANAwwCCyADQQA2AgALQQAhAiADQQA2AhwgAyABNgIUIANB5R82AhAgA0EINgIMDL8CC0HVASECDKUCCyADQfMBNgIcIAMgATYCFCADIAA2AgxBACECDL0CC0EAIQACQCADKAI4IgJFDQAgAigCQCICRQ0AIAMgAhEAACEACyAARQ1uIABBFUcEQCADQQA2AhwgAyABNgIUIANBgg82AhAgA0EgNgIMQQAhAgy9AgsgA0GPATYCHCADIAE2AhQgA0HsGzYCECADQRU2AgxBACECDLwCCyABIARHBEAgA0ENNgIIIAMgATYCBEHTASECDKMCC0HyASECDLsCCyABIARGBEBB8QEhAgy7AgsCQAJAAkAgAS0AAEHIAGsOCwABCAgICAgICAgCCAsgAUEBaiEBQdABIQIMowILIAFBAWohAUHRASECDKICCyABQQFqIQFB0gEhAgyhAgtB8AEhAiABIARGDbkCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEG11QBqLQAARw0EIABBAkYNAyAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy5AgtB7wEhAiABIARGDbgCIAMoAgAiACAEIAFraiEGIAEgAGtBAWohBQNAIAEtAAAgAEGz1QBqLQAARw0DIABBAUYNAiAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy4AgtB7gEhAiABIARGDbcCIAMoAgAiACAEIAFraiEGIAEgAGtBAmohBQNAIAEtAAAgAEGw1QBqLQAARw0CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBjYCAAy3AgsgAygCBCEAIANCADcDACADIAAgBUEBaiIBECsiAEUNAiADQewBNgIcIAMgATYCFCADIAA2AgxBACECDLYCCyADQQA2AgALIAMoAgQhACADQQA2AgQgAyAAIAEQKyIARQ2cAiADQe0BNgIcIAMgATYCFCADIAA2AgxBACECDLQCC0HPASECDJoCC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMtAILQc4BIQIMmgILIANB6wE2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyyAgsgASAERgRAQesBIQIMsgILIAEtAABBL0YEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQbI4NgIQIANBCDYCDEEAIQIMsQILQc0BIQIMlwILIAEgBEcEQCADQQ42AgggAyABNgIEQcwBIQIMlwILQeoBIQIMrwILIAEgBEYEQEHpASECDK8CCyABLQAAQTBrIgBB/wFxQQpJBEAgAyAAOgAqIAFBAWohAUHLASECDJYCCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNlwIgA0HoATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgASAERgRAQecBIQIMrgILAkAgAS0AAEEuRgRAIAFBAWohAQwBCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmAIgA0HmATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgtBygEhAgyUAgsgASAERgRAQeUBIQIMrQILQQAhAEEBIQVBASEHQQAhAgJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIAEtAABBMGsOCgoJAAECAwQFBggLC0ECDAYLQQMMBQtBBAwEC0EFDAMLQQYMAgtBBwwBC0EICyECQQAhBUEAIQcMAgtBCSECQQEhAEEAIQVBACEHDAELQQAhBUEBIQILIAMgAjoAKyABQQFqIQECQAJAIAMtAC5BEHENAAJAAkACQCADLQAqDgMBAAIECyAHRQ0DDAILIAANAQwCCyAFRQ0BCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNAiADQeIBNgIcIAMgATYCFCADIAA2AgxBACECDK8CCyADKAIEIQAgA0EANgIEIAMgACABEC8iAEUNmgIgA0HjATYCHCADIAE2AhQgAyAANgIMQQAhAgyuAgsgAygCBCEAIANBADYCBCADIAAgARAvIgBFDZgCIANB5AE2AhwgAyABNgIUIAMgADYCDAytAgtByQEhAgyTAgtBACEAAkAgAygCOCICRQ0AIAIoAkQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GkDTYCECADQSE2AgxBACECDK0CC0HIASECDJMCCyADQeEBNgIcIAMgATYCFCADQdAaNgIQIANBFTYCDEEAIQIMqwILIAEgBEYEQEHhASECDKsCCwJAIAEtAABBIEYEQCADQQA7ATQgAUEBaiEBDAELIANBADYCHCADIAE2AhQgA0GZETYCECADQQk2AgxBACECDKsCC0HHASECDJECCyABIARGBEBB4AEhAgyqAgsCQCABLQAAQTBrQf8BcSICQQpJBEAgAUEBaiEBAkAgAy8BNCIAQZkzSw0AIAMgAEEKbCIAOwE0IABB/v8DcSACQf//A3NLDQAgAyAAIAJqOwE0DAILQQAhAiADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMDKsCCyADQQA2AhwgAyABNgIUIANBlR42AhAgA0ENNgIMQQAhAgyqAgtBxgEhAgyQAgsgASAERgRAQd8BIQIMqQILAkAgAS0AAEEwa0H/AXEiAkEKSQRAIAFBAWohAQJAIAMvATQiAEGZM0sNACADIABBCmwiADsBNCAAQf7/A3EgAkH//wNzSw0AIAMgACACajsBNAwCC0EAIQIgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDAyqAgsgA0EANgIcIAMgATYCFCADQZUeNgIQIANBDTYCDEEAIQIMqQILQcUBIQIMjwILIAEgBEYEQEHeASECDKgCCwJAIAEtAABBMGtB/wFxIgJBCkkEQCABQQFqIQECQCADLwE0IgBBmTNLDQAgAyAAQQpsIgA7ATQgAEH+/wNxIAJB//8Dc0sNACADIAAgAmo7ATQMAgtBACECIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgwMqQILIANBADYCHCADIAE2AhQgA0GVHjYCECADQQ02AgxBACECDKgCC0HEASECDI4CCyABIARGBEBB3QEhAgynAgsCQAJAAkACQCABLQAAQQprDhcCAwMAAwMDAwMDAwMDAwMDAwMDAwMDAQMLIAFBAWoMBQsgAUEBaiEBQcMBIQIMjwILIAFBAWohASADQS9qLQAAQQFxDQggA0EANgIcIAMgATYCFCADQY0LNgIQIANBDTYCDEEAIQIMpwILIANBADYCHCADIAE2AhQgA0GNCzYCECADQQ02AgxBACECDKYCCyABIARHBEAgA0EPNgIIIAMgATYCBEEBIQIMjQILQdwBIQIMpQILAkACQANAAkAgAS0AAEEKaw4EAgAAAwALIAQgAUEBaiIBRw0AC0HbASECDKYCCyADKAIEIQAgA0EANgIEIAMgACABEC0iAEUEQCABQQFqIQEMBAsgA0HaATYCHCADIAA2AgwgAyABQQFqNgIUQQAhAgylAgsgAygCBCEAIANBADYCBCADIAAgARAtIgANASABQQFqCyEBQcEBIQIMigILIANB2QE2AhwgAyAANgIMIAMgAUEBajYCFEEAIQIMogILQcIBIQIMiAILIANBL2otAABBAXENASADQQA2AhwgAyABNgIUIANB5Bw2AhAgA0EZNgIMQQAhAgygAgsgASAERgRAQdkB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CyADIAU2AgAMkAILIANBADYCACAGQQFqIQFBGgw8C0HKASECIAEgBEYNjgIgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBjdUAai0AAEcNOyAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMjwILIANBADYCACAGQQFqIQFBIQw7CyABIARGBEBByQEhAgyOAgsCQAJAIAEtAABBwQBrDhQAPT09PT09PT09PT09PT09PT09AT0LIAFBAWohAUGtASECDPUBCyABQQFqIQFBsAEhAgz0AQsgASAERgRAQcgBIQIMjQILAkACQCABLQAAQdUAaw4LADw8PDw8PDw8PAE8CyABQQFqIQFBrgEhAgz0AQsgAUEBaiEBQa8BIQIM8wELQccBIQIgASAERg2LAiADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw04IABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyMAgsgA0EANgIAIAZBAWohAUEqDDgLIAEgBEYEQEHGASECDIsCCyABLQAAQdAARw04IAFBAWohAUElDDcLQcUBIQIgASAERg2JAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGB1QBqLQAARw02IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyKAgsgA0EANgIAIAZBAWohAUEODDYLIAEgBEYEQEHEASECDIkCCyABLQAAQcUARw02IAFBAWohAUGrASECDO8BCyABIARGBEBBwwEhAgyIAgsCQAJAAkACQCABLQAAQcIAaw4PAAECOTk5OTk5OTk5OTkDOQsgAUEBaiEBQacBIQIM8QELIAFBAWohAUGoASECDPABCyABQQFqIQFBqQEhAgzvAQsgAUEBaiEBQaoBIQIM7gELQcIBIQIgASAERg2GAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH+1ABqLQAARw0zIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyHAgsgA0EANgIAIAZBAWohAUEUDDMLQcEBIQIgASAERg2FAiADKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEH51ABqLQAARw0yIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyGAgsgA0EANgIAIAZBAWohAUErDDILQcABIQIgASAERg2EAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEH21ABqLQAARw0xIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyFAgsgA0EANgIAIAZBAWohAUEsDDELQb8BIQIgASAERg2DAiADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGh1QBqLQAARw0wIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyEAgsgA0EANgIAIAZBAWohAUERDDALQb4BIQIgASAERg2CAiADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEHy1ABqLQAARw0vIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyDAgsgA0EANgIAIAZBAWohAUEuDC8LIAEgBEYEQEG9ASECDIICCwJAAkACQAJAAkAgAS0AAEHBAGsOFQA0NDQ0NDQ0NDQ0ATQ0AjQ0AzQ0BDQLIAFBAWohAUGbASECDOwBCyABQQFqIQFBnAEhAgzrAQsgAUEBaiEBQZ0BIQIM6gELIAFBAWohAUGiASECDOkBCyABQQFqIQFBpAEhAgzoAQsgASAERgRAQbwBIQIMgQILAkACQCABLQAAQdIAaw4DADABMAsgAUEBaiEBQaMBIQIM6AELIAFBAWohAUEEDC0LQbsBIQIgASAERg3/ASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHw1ABqLQAARw0sIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyAAgsgA0EANgIAIAZBAWohAUEdDCwLIAEgBEYEQEG6ASECDP8BCwJAAkAgAS0AAEHJAGsOBwEuLi4uLgAuCyABQQFqIQFBoQEhAgzmAQsgAUEBaiEBQSIMKwsgASAERgRAQbkBIQIM/gELIAEtAABB0ABHDSsgAUEBaiEBQaABIQIM5AELIAEgBEYEQEG4ASECDP0BCwJAAkAgAS0AAEHGAGsOCwAsLCwsLCwsLCwBLAsgAUEBaiEBQZ4BIQIM5AELIAFBAWohAUGfASECDOMBC0G3ASECIAEgBEYN+wEgAygCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABB7NQAai0AAEcNKCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM/AELIANBADYCACAGQQFqIQFBDQwoC0G2ASECIAEgBEYN+gEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBodUAai0AAEcNJyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM+wELIANBADYCACAGQQFqIQFBDAwnC0G1ASECIAEgBEYN+QEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB6tQAai0AAEcNJiAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM+gELIANBADYCACAGQQFqIQFBAwwmC0G0ASECIAEgBEYN+AEgAygCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB6NQAai0AAEcNJSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM+QELIANBADYCACAGQQFqIQFBJgwlCyABIARGBEBBswEhAgz4AQsCQAJAIAEtAABB1ABrDgIAAScLIAFBAWohAUGZASECDN8BCyABQQFqIQFBmgEhAgzeAQtBsgEhAiABIARGDfYBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQebUAGotAABHDSMgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPcBCyADQQA2AgAgBkEBaiEBQScMIwtBsQEhAiABIARGDfUBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQeTUAGotAABHDSIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPYBCyADQQA2AgAgBkEBaiEBQRwMIgtBsAEhAiABIARGDfQBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQd7UAGotAABHDSEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPUBCyADQQA2AgAgBkEBaiEBQQYMIQtBrwEhAiABIARGDfMBIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQdnUAGotAABHDSAgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPQBCyADQQA2AgAgBkEBaiEBQRkMIAsgASAERgRAQa4BIQIM8wELAkACQAJAAkAgAS0AAEEtaw4jACQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkASQkJCQkAiQkJAMkCyABQQFqIQFBjgEhAgzcAQsgAUEBaiEBQY8BIQIM2wELIAFBAWohAUGUASECDNoBCyABQQFqIQFBlQEhAgzZAQtBrQEhAiABIARGDfEBIAMoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQdfUAGotAABHDR4gAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADPIBCyADQQA2AgAgBkEBaiEBQQsMHgsgASAERgRAQawBIQIM8QELAkACQCABLQAAQcEAaw4DACABIAsgAUEBaiEBQZABIQIM2AELIAFBAWohAUGTASECDNcBCyABIARGBEBBqwEhAgzwAQsCQAJAIAEtAABBwQBrDg8AHx8fHx8fHx8fHx8fHwEfCyABQQFqIQFBkQEhAgzXAQsgAUEBaiEBQZIBIQIM1gELIAEgBEYEQEGqASECDO8BCyABLQAAQcwARw0cIAFBAWohAUEKDBsLQakBIQIgASAERg3tASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHR1ABqLQAARw0aIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzuAQsgA0EANgIAIAZBAWohAUEeDBoLQagBIQIgASAERg3sASADKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEHK1ABqLQAARw0ZIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAztAQsgA0EANgIAIAZBAWohAUEVDBkLQacBIQIgASAERg3rASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHH1ABqLQAARw0YIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzsAQsgA0EANgIAIAZBAWohAUEXDBgLQaYBIQIgASAERg3qASADKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHB1ABqLQAARw0XIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzrAQsgA0EANgIAIAZBAWohAUEYDBcLIAEgBEYEQEGlASECDOoBCwJAAkAgAS0AAEHJAGsOBwAZGRkZGQEZCyABQQFqIQFBiwEhAgzRAQsgAUEBaiEBQYwBIQIM0AELQaQBIQIgASAERg3oASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGm1QBqLQAARw0VIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzpAQsgA0EANgIAIAZBAWohAUEJDBULQaMBIQIgASAERg3nASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGk1QBqLQAARw0UIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzoAQsgA0EANgIAIAZBAWohAUEfDBQLQaIBIQIgASAERg3mASADKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEG+1ABqLQAARw0TIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAznAQsgA0EANgIAIAZBAWohAUECDBMLQaEBIQIgASAERg3lASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYDQCABLQAAIABBvNQAai0AAEcNESAAQQFGDQIgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM5QELIAEgBEYEQEGgASECDOUBC0EBIAEtAABB3wBHDREaIAFBAWohAUGHASECDMsBCyADQQA2AgAgBkEBaiEBQYgBIQIMygELQZ8BIQIgASAERg3iASADKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEGE1QBqLQAARw0PIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAzjAQsgA0EANgIAIAZBAWohAUEpDA8LQZ4BIQIgASAERg3hASADKAIAIgAgBCABa2ohBSABIABrQQNqIQYCQANAIAEtAAAgAEG41ABqLQAARw0OIABBA0YNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAziAQsgA0EANgIAIAZBAWohAUEtDA4LIAEgBEYEQEGdASECDOEBCyABLQAAQcUARw0OIAFBAWohAUGEASECDMcBCyABIARGBEBBnAEhAgzgAQsCQAJAIAEtAABBzABrDggADw8PDw8PAQ8LIAFBAWohAUGCASECDMcBCyABQQFqIQFBgwEhAgzGAQtBmwEhAiABIARGDd4BIAMoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQbPUAGotAABHDQsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN8BCyADQQA2AgAgBkEBaiEBQSMMCwtBmgEhAiABIARGDd0BIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQbDUAGotAABHDQogAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADN4BCyADQQA2AgAgBkEBaiEBQQAMCgsgASAERgRAQZkBIQIM3QELAkACQCABLQAAQcgAaw4IAAwMDAwMDAEMCyABQQFqIQFB/QAhAgzEAQsgAUEBaiEBQYABIQIMwwELIAEgBEYEQEGYASECDNwBCwJAAkAgAS0AAEHOAGsOAwALAQsLIAFBAWohAUH+ACECDMMBCyABQQFqIQFB/wAhAgzCAQsgASAERgRAQZcBIQIM2wELIAEtAABB2QBHDQggAUEBaiEBQQgMBwtBlgEhAiABIARGDdkBIAMoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQazUAGotAABHDQYgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNoBCyADQQA2AgAgBkEBaiEBQQUMBgtBlQEhAiABIARGDdgBIAMoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQabUAGotAABHDQUgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNkBCyADQQA2AgAgBkEBaiEBQRYMBQtBlAEhAiABIARGDdcBIAMoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQaHVAGotAABHDQQgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAyAFNgIADNgBCyADQQA2AgAgBkEBaiEBQRAMBAsgASAERgRAQZMBIQIM1wELAkACQCABLQAAQcMAaw4MAAYGBgYGBgYGBgYBBgsgAUEBaiEBQfkAIQIMvgELIAFBAWohAUH6ACECDL0BC0GSASECIAEgBEYN1QEgAygCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBoNQAai0AAEcNAiAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAM1gELIANBADYCACAGQQFqIQFBJAwCCyADQQA2AgAMAgsgASAERgRAQZEBIQIM1AELIAEtAABBzABHDQEgAUEBaiEBQRMLOgApIAMoAgQhACADQQA2AgQgAyAAIAEQLiIADQIMAQtBACECIANBADYCHCADIAE2AhQgA0H+HzYCECADQQY2AgwM0QELQfgAIQIMtwELIANBkAE2AhwgAyABNgIUIAMgADYCDEEAIQIMzwELQQAhAAJAIAMoAjgiAkUNACACKAJAIgJFDQAgAyACEQAAIQALIABFDQAgAEEVRg0BIANBADYCHCADIAE2AhQgA0GCDzYCECADQSA2AgxBACECDM4BC0H3ACECDLQBCyADQY8BNgIcIAMgATYCFCADQewbNgIQIANBFTYCDEEAIQIMzAELIAEgBEYEQEGPASECDMwBCwJAIAEtAABBIEYEQCABQQFqIQEMAQsgA0EANgIcIAMgATYCFCADQZsfNgIQIANBBjYCDEEAIQIMzAELQQIhAgyyAQsDQCABLQAAQSBHDQIgBCABQQFqIgFHDQALQY4BIQIMygELIAEgBEYEQEGNASECDMoBCwJAIAEtAABBCWsOBEoAAEoAC0H1ACECDLABCyADLQApQQVGBEBB9gAhAgywAQtB9AAhAgyvAQsgASAERgRAQYwBIQIMyAELIANBEDYCCCADIAE2AgQMCgsgASAERgRAQYsBIQIMxwELAkAgAS0AAEEJaw4ERwAARwALQfMAIQIMrQELIAEgBEcEQCADQRA2AgggAyABNgIEQfEAIQIMrQELQYoBIQIMxQELAkAgASAERwRAA0AgAS0AAEGg0ABqLQAAIgBBA0cEQAJAIABBAWsOAkkABAtB8AAhAgyvAQsgBCABQQFqIgFHDQALQYgBIQIMxgELQYgBIQIMxQELIANBADYCHCADIAE2AhQgA0HbIDYCECADQQc2AgxBACECDMQBCyABIARGBEBBiQEhAgzEAQsCQAJAAkAgAS0AAEGg0gBqLQAAQQFrDgNGAgABC0HyACECDKwBCyADQQA2AhwgAyABNgIUIANBtBI2AhAgA0EHNgIMQQAhAgzEAQtB6gAhAgyqAQsgASAERwRAIAFBAWohAUHvACECDKoBC0GHASECDMIBCyAEIAEiAEYEQEGGASECDMIBCyAALQAAIgFBL0YEQCAAQQFqIQFB7gAhAgypAQsgAUEJayICQRdLDQEgACEBQQEgAnRBm4CABHENQQwBCyAEIAEiAEYEQEGFASECDMEBCyAALQAAQS9HDQAgAEEBaiEBDAMLQQAhAiADQQA2AhwgAyAANgIUIANB2yA2AhAgA0EHNgIMDL8BCwJAAkACQAJAAkADQCABLQAAQaDOAGotAAAiAEEFRwRAAkACQCAAQQFrDghHBQYHCAAEAQgLQesAIQIMrQELIAFBAWohAUHtACECDKwBCyAEIAFBAWoiAUcNAAtBhAEhAgzDAQsgAUEBagwUCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDMEBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDMABCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNHiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDL8BCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy+AQsgASAERgRAQYMBIQIMvgELAkAgAS0AAEGgzgBqLQAAQQFrDgg+BAUGAAgCAwcLIAFBAWohAQtBAyECDKMBCyABQQFqDA0LQQAhAiADQQA2AhwgA0HREjYCECADQQc2AgwgAyABQQFqNgIUDLoBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQdsANgIcIAMgATYCFCADIAA2AgxBACECDLkBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQd0ANgIcIAMgATYCFCADIAA2AgxBACECDLgBCyADKAIEIQAgA0EANgIEIAMgACABECwiAEUNFiADQfoANgIcIAMgATYCFCADIAA2AgxBACECDLcBCyADQQA2AhwgAyABNgIUIANB+Q82AhAgA0EHNgIMQQAhAgy2AQtB7AAhAgycAQsgASAERgRAQYIBIQIMtQELIAFBAWoMAgsgASAERgRAQYEBIQIMtAELIAFBAWoMAQsgASAERg0BIAFBAWoLIQFBBCECDJgBC0GAASECDLABCwNAIAEtAABBoMwAai0AACIAQQJHBEAgAEEBRwRAQekAIQIMmQELDDELIAQgAUEBaiIBRw0AC0H/ACECDK8BCyABIARGBEBB/gAhAgyvAQsCQCABLQAAQQlrDjcvAwYvBAYGBgYGBgYGBgYGBgYGBgYGBgUGBgIGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYABgsgAUEBagshAUEFIQIMlAELIAFBAWoMBgsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgyrAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgyqAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQggA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgypAQsgA0EANgIcIAMgATYCFCADQY0UNgIQIANBBzYCDEEAIQIMqAELAkACQAJAAkADQCABLQAAQaDKAGotAAAiAEEFRwRAAkAgAEEBaw4GLgMEBQYABgtB6AAhAgyUAQsgBCABQQFqIgFHDQALQf0AIQIMqwELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB2wA2AhwgAyABNgIUIAMgADYCDEEAIQIMqgELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB3QA2AhwgAyABNgIUIAMgADYCDEEAIQIMqQELIAMoAgQhACADQQA2AgQgAyAAIAEQLCIARQ0HIANB+gA2AhwgAyABNgIUIAMgADYCDEEAIQIMqAELIANBADYCHCADIAE2AhQgA0HkCDYCECADQQc2AgxBACECDKcBCyABIARGDQEgAUEBagshAUEGIQIMjAELQfwAIQIMpAELAkACQAJAAkADQCABLQAAQaDIAGotAAAiAEEFRwRAIABBAWsOBCkCAwQFCyAEIAFBAWoiAUcNAAtB+wAhAgynAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HbADYCHCADIAE2AhQgAyAANgIMQQAhAgymAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0HdADYCHCADIAE2AhQgAyAANgIMQQAhAgylAQsgAygCBCEAIANBADYCBCADIAAgARAsIgBFDQMgA0H6ADYCHCADIAE2AhQgAyAANgIMQQAhAgykAQsgA0EANgIcIAMgATYCFCADQbwKNgIQIANBBzYCDEEAIQIMowELQc8AIQIMiQELQdEAIQIMiAELQecAIQIMhwELIAEgBEYEQEH6ACECDKABCwJAIAEtAABBCWsOBCAAACAACyABQQFqIQFB5gAhAgyGAQsgASAERgRAQfkAIQIMnwELAkAgAS0AAEEJaw4EHwAAHwALQQAhAAJAIAMoAjgiAkUNACACKAI4IgJFDQAgAyACEQAAIQALIABFBEBB4gEhAgyGAQsgAEEVRwRAIANBADYCHCADIAE2AhQgA0HJDTYCECADQRo2AgxBACECDJ8BCyADQfgANgIcIAMgATYCFCADQeoaNgIQIANBFTYCDEEAIQIMngELIAEgBEcEQCADQQ02AgggAyABNgIEQeQAIQIMhQELQfcAIQIMnQELIAEgBEYEQEH2ACECDJ0BCwJAAkACQCABLQAAQcgAaw4LAAELCwsLCwsLCwILCyABQQFqIQFB3QAhAgyFAQsgAUEBaiEBQeAAIQIMhAELIAFBAWohAUHjACECDIMBC0H1ACECIAEgBEYNmwEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBtdUAai0AAEcNCCAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMnAELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgAEQCADQfQANgIcIAMgATYCFCADIAA2AgxBACECDJwBC0HiACECDIIBC0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMnAELQeEAIQIMggELIANB8wA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyaAQsgAy0AKSIAQSNrQQtJDQkCQCAAQQZLDQBBASAAdEHKAHFFDQAMCgtBACECIANBADYCHCADIAE2AhQgA0HtCTYCECADQQg2AgwMmQELQfIAIQIgASAERg2YASADKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEGz1QBqLQAARw0FIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAMgBTYCAAyZAQsgAygCBCEAIANCADcDACADIAAgBkEBaiIBECsiAARAIANB8QA2AhwgAyABNgIUIAMgADYCDEEAIQIMmQELQd8AIQIMfwtBACEAAkAgAygCOCICRQ0AIAIoAjQiAkUNACADIAIRAAAhAAsCQCAABEAgAEEVRg0BIANBADYCHCADIAE2AhQgA0HqDTYCECADQSY2AgxBACECDJkBC0HeACECDH8LIANB8AA2AhwgAyABNgIUIANBgBs2AhAgA0EVNgIMQQAhAgyXAQsgAy0AKUEhRg0GIANBADYCHCADIAE2AhQgA0GRCjYCECADQQg2AgxBACECDJYBC0HvACECIAEgBEYNlQEgAygCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABBsNUAai0AAEcNAiAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyADIAU2AgAMlgELIAMoAgQhACADQgA3AwAgAyAAIAZBAWoiARArIgBFDQIgA0HtADYCHCADIAE2AhQgAyAANgIMQQAhAgyVAQsgA0EANgIACyADKAIEIQAgA0EANgIEIAMgACABECsiAEUNgAEgA0HuADYCHCADIAE2AhQgAyAANgIMQQAhAgyTAQtB3AAhAgx5C0EAIQACQCADKAI4IgJFDQAgAigCNCICRQ0AIAMgAhEAACEACwJAIAAEQCAAQRVGDQEgA0EANgIcIAMgATYCFCADQeoNNgIQIANBJjYCDEEAIQIMkwELQdsAIQIMeQsgA0HsADYCHCADIAE2AhQgA0GAGzYCECADQRU2AgxBACECDJEBCyADLQApIgBBI0kNACAAQS5GDQAgA0EANgIcIAMgATYCFCADQckJNgIQIANBCDYCDEEAIQIMkAELQdoAIQIMdgsgASAERgRAQesAIQIMjwELAkAgAS0AAEEvRgRAIAFBAWohAQwBCyAD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ciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBFeHBlY3RlZCBMRiBhZnRlciBoZWFkZXJzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3Byb3RvY29sX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fcHJvdG9jb2wARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgAVHJhbnNmZXItRW5jb2RpbmcgY2FuJ3QgYmUgcHJlc2VudCB3aXRoIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgc2l6ZQBFeHBlY3RlZCBMRiBhZnRlciBjaHVuayBzaXplAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBVbmV4cGVjdGVkIHdoaXRlc3BhY2UgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgaGVhZGVyIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciBjaHVuayBleHRlbnNpb24gdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIHF1b3RlZC1wYWlyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fcHJvdG9jb2xfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUATWlzc2luZyBleHBlY3RlZCBDUiBhZnRlciByZXNwb25zZSBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAE1pc3NpbmcgZXhwZWN0ZWQgQ1IgYWZ0ZXIgY2h1bmsgZXh0ZW5zaW9uIG5hbWUASW52YWxpZCBzdGF0dXMgY29kZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABNaXNzaW5nIGV4cGVjdGVkIENSIGFmdGVyIGNodW5rIGRhdGEARXhwZWN0ZWQgTEYgYWZ0ZXIgY2h1bmsgZGF0YQBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AARGF0YSBhZnRlciBgQ29ubmVjdGlvbjogY2xvc2VgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBRVUVSWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAEV4cGVjdGVkIExGIGFmdGVyIENSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX1BST1RPQ09MX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8sIFJUU1AvIG9yIElDRS8A5xUAAK8VAACkEgAAkhoAACYWAACeFAAA2xkAAHkVAAB+EgAA/hQAADYVAAALFgAA2BYAAPMSAABCGAAArBYAABIVAAAUFwAA7xcAAEgUAABxFwAAshoAAGsZAAB+GQAANRQAAIIaAABEFwAA/RYAAB4YAACHFwAAqhkAAJMSAAAHGAAALBcAAMoXAACkFwAA5xUAAOcVAABYFwAAOxgAAKASAAAtHAAAwxEAAEgRAADeEgAAQhMAAKQZAAD9EAAA9xUAAKUVAADvFgAA+BkAAEoWAABWFgAA9RUAAAoaAAAIGgAAARoAAKsVAABCEgAA1xAAAEwRAAAFGQAAVBYAAB4RAADKGQAAyBkAAE4WAAD/GAAAcRQAAPAVAADuFQAAlBkAAPwVAAC/GQAAmxkAAHwUAABDEQAAcBgAAJUUAAAnFAAAGRQAANUSAADUGQAARBYAAPcQAEG5OwsBAQBB0DsL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBuj0LBAEAAAIAQdE9C14DBAMDAwMDAAADAwADAwADAwMDAwMDAwMDAAUAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAwADAEG6PwsEAQAAAgBB0T8LXgMAAwMDAwMAAAMDAAMDAAMDAwMDAwMDAwMABAAFAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwADAAMAQbDBAAsNbG9zZWVlcC1hbGl2ZQBBycEACwEBAEHgwQAL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBycMACwEBAEHgwwAL5wEBAQEBAQEBAQEBAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAWNodW5rZWQAQfHFAAteAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBB0McACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQYDIAAsgcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQpTTQ0KDQoAQanIAAsFAQIAAQMAQcDIAAtfBAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanKAAsFAQIAAQMAQcDKAAtfBAUFBgUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAQanMAAsEAQAAAQBBwcwAC14CAgACAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAEGpzgALBQECAAEDAEHAzgALXwQFAAAFBQUFBQUFBQUFBQYFBQUFBQUFBQUFBQUABQAHCAUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQAFAAUABQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUAAAAFAEGp0AALBQEBAAEBAEHA0AALAQEAQdrQAAtBAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQanSAAsFAQEAAQEAQcDSAAsBAQBBytIACwYCAAAAAAIAQeHSAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBBoNQAC50BTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRVVFUllPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFVFRQQ0VUU1BBRFRQLw==";
|
|
96520
96816
|
let wasmBuffer;
|
|
96521
96817
|
Object.defineProperty(module, "exports", {
|
|
@@ -96812,7 +97108,7 @@ var hasRequiredInfra;
|
|
|
96812
97108
|
function requireInfra() {
|
|
96813
97109
|
if (hasRequiredInfra) return infra;
|
|
96814
97110
|
hasRequiredInfra = 1;
|
|
96815
|
-
const assert2 = require$$0$
|
|
97111
|
+
const assert2 = require$$0$3;
|
|
96816
97112
|
const { utf8DecodeBytes } = requireEncoding();
|
|
96817
97113
|
function collectASequenceOfCodePoints(condition, input, position2) {
|
|
96818
97114
|
let result = "";
|
|
@@ -96925,7 +97221,7 @@ var hasRequiredDataUrl;
|
|
|
96925
97221
|
function requireDataUrl() {
|
|
96926
97222
|
if (hasRequiredDataUrl) return dataUrl;
|
|
96927
97223
|
hasRequiredDataUrl = 1;
|
|
96928
|
-
const assert2 = require$$0$
|
|
97224
|
+
const assert2 = require$$0$3;
|
|
96929
97225
|
const { forgivingBase64, collectASequenceOfCodePoints, collectASequenceOfCodePointsFast, isomorphicDecode, removeASCIIWhitespace, removeChars } = requireInfra();
|
|
96930
97226
|
const encoder2 = new TextEncoder();
|
|
96931
97227
|
const HTTP_TOKEN_CODEPOINTS = /^[-!#$%&'*+.^_|~A-Za-z0-9]+$/u;
|
|
@@ -97312,7 +97608,7 @@ var hasRequiredWebidl;
|
|
|
97312
97608
|
function requireWebidl() {
|
|
97313
97609
|
if (hasRequiredWebidl) return webidl_1;
|
|
97314
97610
|
hasRequiredWebidl = 1;
|
|
97315
|
-
const assert2 = require$$0$
|
|
97611
|
+
const assert2 = require$$0$3;
|
|
97316
97612
|
const { types: types2, inspect: inspect2 } = require$$3;
|
|
97317
97613
|
const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
|
|
97318
97614
|
const UNDEFINED2 = 1;
|
|
@@ -97450,7 +97746,7 @@ function requireWebidl() {
|
|
|
97450
97746
|
lowerBound = 0;
|
|
97451
97747
|
upperBound = Math.pow(2, bitLength) - 1;
|
|
97452
97748
|
} else {
|
|
97453
|
-
lowerBound = Math.pow(
|
|
97749
|
+
lowerBound = -Math.pow(2, bitLength - 1);
|
|
97454
97750
|
upperBound = Math.pow(2, bitLength - 1) - 1;
|
|
97455
97751
|
}
|
|
97456
97752
|
let x2 = Number(V2);
|
|
@@ -97487,7 +97783,7 @@ function requireWebidl() {
|
|
|
97487
97783
|
}
|
|
97488
97784
|
x2 = webidl.util.IntegerPart(x2);
|
|
97489
97785
|
x2 = x2 % Math.pow(2, bitLength);
|
|
97490
|
-
if (signedness === "signed" && x2 >= Math.pow(2, bitLength
|
|
97786
|
+
if (signedness === "signed" && x2 >= Math.pow(2, bitLength - 1)) {
|
|
97491
97787
|
return x2 - Math.pow(2, bitLength);
|
|
97492
97788
|
}
|
|
97493
97789
|
return x2;
|
|
@@ -97600,6 +97896,7 @@ function requireWebidl() {
|
|
|
97600
97896
|
};
|
|
97601
97897
|
};
|
|
97602
97898
|
webidl.dictionaryConverter = function(converters) {
|
|
97899
|
+
converters.sort((a2, b2) => (a2.key > b2.key) - (a2.key < b2.key));
|
|
97603
97900
|
return (dictionary, prefix, argument) => {
|
|
97604
97901
|
const dict = {};
|
|
97605
97902
|
if (dictionary != null && webidl.util.Type(dictionary) !== OBJECT2) {
|
|
@@ -97915,14 +98212,14 @@ function requireUtil$4() {
|
|
|
97915
98212
|
var _zlibOptions;
|
|
97916
98213
|
if (hasRequiredUtil$4) return util$4;
|
|
97917
98214
|
hasRequiredUtil$4 = 1;
|
|
97918
|
-
const { Transform: Transform2 } = require$$0$
|
|
98215
|
+
const { Transform: Transform2 } = require$$0$4;
|
|
97919
98216
|
const zlib = require$$3$1;
|
|
97920
98217
|
const { redirectStatusSet, referrerPolicyTokens, badPortsSet } = requireConstants$3();
|
|
97921
98218
|
const { getGlobalOrigin } = requireGlobal$1();
|
|
97922
98219
|
const { collectAnHTTPQuotedString, parseMIMEType } = requireDataUrl();
|
|
97923
98220
|
const { performance: performance2 } = require$$5$2;
|
|
97924
98221
|
const { ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = requireUtil$5();
|
|
97925
|
-
const assert2 = require$$0$
|
|
98222
|
+
const assert2 = require$$0$3;
|
|
97926
98223
|
const { isUint8Array: isUint8Array2 } = require$$8;
|
|
97927
98224
|
const { webidl } = requireWebidl();
|
|
97928
98225
|
const { isomorphicEncode, collectASequenceOfCodePoints, removeChars } = requireInfra();
|
|
@@ -98617,7 +98914,7 @@ function requireUtil$4() {
|
|
|
98617
98914
|
return !!(url2.username || url2.password);
|
|
98618
98915
|
}
|
|
98619
98916
|
function isTraversableNavigable(navigable) {
|
|
98620
|
-
return
|
|
98917
|
+
return navigable != null && navigable !== "client" && navigable !== "no-traversable";
|
|
98621
98918
|
}
|
|
98622
98919
|
class EnvironmentSettingsObjectBase {
|
|
98623
98920
|
constructor() {
|
|
@@ -98862,11 +99159,11 @@ function requireFormdataParser() {
|
|
|
98862
99159
|
const { HTTP_TOKEN_CODEPOINTS } = requireDataUrl();
|
|
98863
99160
|
const { makeEntry } = requireFormdata();
|
|
98864
99161
|
const { webidl } = requireWebidl();
|
|
98865
|
-
const assert2 = require$$0$
|
|
99162
|
+
const assert2 = require$$0$3;
|
|
98866
99163
|
const { isomorphicDecode } = requireInfra();
|
|
98867
|
-
const { utf8DecodeBytes } = requireEncoding();
|
|
98868
99164
|
const dd = Buffer.from("--");
|
|
98869
99165
|
const decoder2 = new TextDecoder();
|
|
99166
|
+
const decoderIgnoreBOM = new TextDecoder("utf-8", { ignoreBOM: true });
|
|
98870
99167
|
function isAsciiString(chars2) {
|
|
98871
99168
|
for (let i = 0; i < chars2.length; ++i) {
|
|
98872
99169
|
if ((chars2.charCodeAt(i) & -128) !== 0) {
|
|
@@ -98943,7 +99240,7 @@ function requireFormdataParser() {
|
|
|
98943
99240
|
}
|
|
98944
99241
|
value = new File([body2], filename, { type: contentType });
|
|
98945
99242
|
} else {
|
|
98946
|
-
value =
|
|
99243
|
+
value = decoderIgnoreBOM.decode(Buffer.from(body2));
|
|
98947
99244
|
}
|
|
98948
99245
|
assert2(webidl.is.USVString(name2));
|
|
98949
99246
|
assert2(typeof value === "string" && webidl.is.USVString(value) || webidl.is.File(value));
|
|
@@ -99020,7 +99317,7 @@ function requireFormdataParser() {
|
|
|
99020
99317
|
);
|
|
99021
99318
|
value = decoder2.decode(tokenValue);
|
|
99022
99319
|
}
|
|
99023
|
-
return { name: attrNameStr, value };
|
|
99320
|
+
return { name: attrNameStr, value, extended: isExtended };
|
|
99024
99321
|
}
|
|
99025
99322
|
function parseMultipartFormDataHeaders(input, position2) {
|
|
99026
99323
|
let name2 = null;
|
|
@@ -99055,6 +99352,7 @@ function requireFormdataParser() {
|
|
|
99055
99352
|
switch (bufferToLowerCasedHeaderName(headerName)) {
|
|
99056
99353
|
case "content-disposition": {
|
|
99057
99354
|
name2 = filename = null;
|
|
99355
|
+
let filenameIsExtended = false;
|
|
99058
99356
|
const dispositionType = collectASequenceOfBytes(
|
|
99059
99357
|
(char) => isToken(char),
|
|
99060
99358
|
input,
|
|
@@ -99063,7 +99361,7 @@ function requireFormdataParser() {
|
|
|
99063
99361
|
if (dispositionType.toString("ascii").toLowerCase() !== "form-data") {
|
|
99064
99362
|
throw parsingError("expected form-data for content-disposition header");
|
|
99065
99363
|
}
|
|
99066
|
-
while (position2.position < input.length && input[position2.position] !== 13
|
|
99364
|
+
while (position2.position < input.length && (input[position2.position] !== 13 || input[position2.position + 1] !== 10)) {
|
|
99067
99365
|
const attribute = parseContentDispositionAttribute(input, position2);
|
|
99068
99366
|
if (!attribute) {
|
|
99069
99367
|
break;
|
|
@@ -99071,7 +99369,12 @@ function requireFormdataParser() {
|
|
|
99071
99369
|
if (attribute.name === "name") {
|
|
99072
99370
|
name2 = attribute.value;
|
|
99073
99371
|
} else if (attribute.name === "filename") {
|
|
99074
|
-
|
|
99372
|
+
if (attribute.extended) {
|
|
99373
|
+
filename = attribute.value;
|
|
99374
|
+
filenameIsExtended = true;
|
|
99375
|
+
} else if (!filenameIsExtended) {
|
|
99376
|
+
filename = attribute.value;
|
|
99377
|
+
}
|
|
99075
99378
|
}
|
|
99076
99379
|
}
|
|
99077
99380
|
if (name2 === null) {
|
|
@@ -99107,7 +99410,7 @@ function requireFormdataParser() {
|
|
|
99107
99410
|
);
|
|
99108
99411
|
}
|
|
99109
99412
|
}
|
|
99110
|
-
if (input[position2.position] !== 13
|
|
99413
|
+
if (input[position2.position] !== 13 || input[position2.position + 1] !== 10) {
|
|
99111
99414
|
throw parsingError("expected CRLF");
|
|
99112
99415
|
} else {
|
|
99113
99416
|
position2.position += 2;
|
|
@@ -99210,8 +99513,8 @@ function requireBody() {
|
|
|
99210
99513
|
} = requireUtil$4();
|
|
99211
99514
|
const { FormData, setFormDataState } = requireFormdata();
|
|
99212
99515
|
const { webidl } = requireWebidl();
|
|
99213
|
-
const assert2 = require$$0$
|
|
99214
|
-
const { isErrored, isDisturbed } = require$$0$
|
|
99516
|
+
const assert2 = require$$0$3;
|
|
99517
|
+
const { isErrored, isDisturbed } = require$$0$4;
|
|
99215
99518
|
const { isUint8Array: isUint8Array2 } = require$$8;
|
|
99216
99519
|
const { serializeAMimeType } = requireDataUrl();
|
|
99217
99520
|
const { multipartFormDataParser } = requireFormdataParser();
|
|
@@ -99485,7 +99788,7 @@ var hasRequiredClientH1;
|
|
|
99485
99788
|
function requireClientH1() {
|
|
99486
99789
|
if (hasRequiredClientH1) return clientH1;
|
|
99487
99790
|
hasRequiredClientH1 = 1;
|
|
99488
|
-
const assert2 = require$$0$
|
|
99791
|
+
const assert2 = require$$0$3;
|
|
99489
99792
|
const util2 = requireUtil$5();
|
|
99490
99793
|
const { channels } = requireDiagnostics();
|
|
99491
99794
|
const timers2 = requireTimers();
|
|
@@ -99545,9 +99848,9 @@ function requireClientH1() {
|
|
|
99545
99848
|
let mod;
|
|
99546
99849
|
let useWasmSIMD = process.arch !== "ppc64";
|
|
99547
99850
|
if (process.env.UNDICI_NO_WASM_SIMD === "1") {
|
|
99548
|
-
useWasmSIMD = true;
|
|
99549
|
-
} else if (process.env.UNDICI_NO_WASM_SIMD === "0") {
|
|
99550
99851
|
useWasmSIMD = false;
|
|
99852
|
+
} else if (process.env.UNDICI_NO_WASM_SIMD === "0") {
|
|
99853
|
+
useWasmSIMD = true;
|
|
99551
99854
|
}
|
|
99552
99855
|
if (useWasmSIMD) {
|
|
99553
99856
|
try {
|
|
@@ -99665,6 +99968,7 @@ function requireClientH1() {
|
|
|
99665
99968
|
this.client = client2;
|
|
99666
99969
|
this.socket = socket;
|
|
99667
99970
|
this.timeout = null;
|
|
99971
|
+
this.timeoutWeakRef = new WeakRef(this);
|
|
99668
99972
|
this.timeoutValue = null;
|
|
99669
99973
|
this.timeoutType = null;
|
|
99670
99974
|
this.statusCode = 0;
|
|
@@ -99691,9 +99995,9 @@ function requireClientH1() {
|
|
|
99691
99995
|
}
|
|
99692
99996
|
if (delay) {
|
|
99693
99997
|
if (type & USE_FAST_TIMER) {
|
|
99694
|
-
this.timeout = timers2.setFastTimeout(onParserTimeout, delay,
|
|
99998
|
+
this.timeout = timers2.setFastTimeout(onParserTimeout, delay, this.timeoutWeakRef);
|
|
99695
99999
|
} else {
|
|
99696
|
-
this.timeout = setTimeout(onParserTimeout, delay,
|
|
100000
|
+
this.timeout = setTimeout(onParserTimeout, delay, this.timeoutWeakRef);
|
|
99697
100001
|
(_a3 = this.timeout) == null ? void 0 : _a3.unref();
|
|
99698
100002
|
}
|
|
99699
100003
|
}
|
|
@@ -99765,19 +100069,47 @@ function requireClientH1() {
|
|
|
99765
100069
|
this.paused = true;
|
|
99766
100070
|
socket.unshift(data);
|
|
99767
100071
|
} else {
|
|
99768
|
-
|
|
99769
|
-
let message2 = "";
|
|
99770
|
-
if (ptr) {
|
|
99771
|
-
const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
|
|
99772
|
-
message2 = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
|
|
99773
|
-
}
|
|
99774
|
-
throw new HTTPParserError(message2, constants2.ERROR[ret], data);
|
|
100072
|
+
throw this.createError(ret, data);
|
|
99775
100073
|
}
|
|
99776
100074
|
}
|
|
99777
100075
|
} catch (err) {
|
|
99778
100076
|
util2.destroy(socket, err);
|
|
99779
100077
|
}
|
|
99780
100078
|
}
|
|
100079
|
+
finish() {
|
|
100080
|
+
assert2(currentParser === null);
|
|
100081
|
+
assert2(this.ptr != null);
|
|
100082
|
+
assert2(!this.paused);
|
|
100083
|
+
const { llhttp } = this;
|
|
100084
|
+
let ret;
|
|
100085
|
+
try {
|
|
100086
|
+
currentParser = this;
|
|
100087
|
+
ret = llhttp.llhttp_finish(this.ptr);
|
|
100088
|
+
} finally {
|
|
100089
|
+
currentParser = null;
|
|
100090
|
+
}
|
|
100091
|
+
if (ret === constants2.ERROR.OK) {
|
|
100092
|
+
return null;
|
|
100093
|
+
}
|
|
100094
|
+
if (ret === constants2.ERROR.PAUSED || ret === constants2.ERROR.PAUSED_UPGRADE) {
|
|
100095
|
+
this.paused = true;
|
|
100096
|
+
return null;
|
|
100097
|
+
}
|
|
100098
|
+
return this.createError(ret, EMPTY_BUF);
|
|
100099
|
+
}
|
|
100100
|
+
createError(ret, data) {
|
|
100101
|
+
const { llhttp, contentLength, bytesRead } = this;
|
|
100102
|
+
if (contentLength && bytesRead !== parseInt(contentLength, 10)) {
|
|
100103
|
+
return new ResponseContentLengthMismatchError();
|
|
100104
|
+
}
|
|
100105
|
+
const ptr = llhttp.llhttp_get_error_reason(this.ptr);
|
|
100106
|
+
let message2 = "";
|
|
100107
|
+
if (ptr) {
|
|
100108
|
+
const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
|
|
100109
|
+
message2 = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
|
|
100110
|
+
}
|
|
100111
|
+
return new HTTPParserError(message2, constants2.ERROR[ret], data);
|
|
100112
|
+
}
|
|
99781
100113
|
destroy() {
|
|
99782
100114
|
assert2(currentParser === null);
|
|
99783
100115
|
assert2(this.ptr != null);
|
|
@@ -100154,7 +100486,11 @@ function requireClientH1() {
|
|
|
100154
100486
|
assert2(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
|
|
100155
100487
|
const parser = this[kParser];
|
|
100156
100488
|
if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) {
|
|
100157
|
-
parser.
|
|
100489
|
+
const parserErr = parser.finish();
|
|
100490
|
+
if (parserErr) {
|
|
100491
|
+
this[kError] = parserErr;
|
|
100492
|
+
this[kClient][kOnError](parserErr);
|
|
100493
|
+
}
|
|
100158
100494
|
return;
|
|
100159
100495
|
}
|
|
100160
100496
|
this[kError] = err;
|
|
@@ -100167,7 +100503,10 @@ function requireClientH1() {
|
|
|
100167
100503
|
function onHttpSocketEnd() {
|
|
100168
100504
|
const parser = this[kParser];
|
|
100169
100505
|
if (parser.statusCode && !parser.shouldKeepAlive) {
|
|
100170
|
-
parser.
|
|
100506
|
+
const parserErr = parser.finish();
|
|
100507
|
+
if (parserErr) {
|
|
100508
|
+
util2.destroy(this, parserErr);
|
|
100509
|
+
}
|
|
100171
100510
|
return;
|
|
100172
100511
|
}
|
|
100173
100512
|
util2.destroy(this, new SocketError("other side closed", util2.getSocketInfo(this)));
|
|
@@ -100176,7 +100515,7 @@ function requireClientH1() {
|
|
|
100176
100515
|
const parser = this[kParser];
|
|
100177
100516
|
if (parser) {
|
|
100178
100517
|
if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {
|
|
100179
|
-
parser.
|
|
100518
|
+
this[kError] = parser.finish() || this[kError];
|
|
100180
100519
|
}
|
|
100181
100520
|
this[kParser].destroy();
|
|
100182
100521
|
this[kParser] = null;
|
|
@@ -100300,6 +100639,9 @@ function requireClientH1() {
|
|
|
100300
100639
|
if (blocking) {
|
|
100301
100640
|
socket[kBlocking] = true;
|
|
100302
100641
|
}
|
|
100642
|
+
if (socket.setTypeOfService) {
|
|
100643
|
+
socket.setTypeOfService(request2.typeOfService);
|
|
100644
|
+
}
|
|
100303
100645
|
let header = `${method} ${path2} HTTP/1.1\r
|
|
100304
100646
|
`;
|
|
100305
100647
|
if (typeof host === "string") {
|
|
@@ -100650,8 +100992,8 @@ var hasRequiredClientH2;
|
|
|
100650
100992
|
function requireClientH2() {
|
|
100651
100993
|
if (hasRequiredClientH2) return clientH2;
|
|
100652
100994
|
hasRequiredClientH2 = 1;
|
|
100653
|
-
const assert2 = require$$0$
|
|
100654
|
-
const { pipeline } = require$$0$
|
|
100995
|
+
const assert2 = require$$0$3;
|
|
100996
|
+
const { pipeline } = require$$0$4;
|
|
100655
100997
|
const util2 = requireUtil$5();
|
|
100656
100998
|
const {
|
|
100657
100999
|
RequestContentLengthMismatchError,
|
|
@@ -101130,11 +101472,14 @@ function requireClientH2() {
|
|
|
101130
101472
|
if (request2.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), "") === false) {
|
|
101131
101473
|
stream.pause();
|
|
101132
101474
|
}
|
|
101133
|
-
|
|
101134
|
-
|
|
101135
|
-
|
|
101136
|
-
|
|
101137
|
-
|
|
101475
|
+
stream.on("data", (chunk) => {
|
|
101476
|
+
if (request2.aborted || request2.completed) {
|
|
101477
|
+
return;
|
|
101478
|
+
}
|
|
101479
|
+
if (request2.onData(chunk) === false) {
|
|
101480
|
+
stream.pause();
|
|
101481
|
+
}
|
|
101482
|
+
});
|
|
101138
101483
|
});
|
|
101139
101484
|
stream.once("end", () => {
|
|
101140
101485
|
stream.removeAllListeners("data");
|
|
@@ -101182,6 +101527,7 @@ function requireClientH2() {
|
|
|
101182
101527
|
if (request2.aborted || request2.completed) {
|
|
101183
101528
|
return;
|
|
101184
101529
|
}
|
|
101530
|
+
stream.removeAllListeners("data");
|
|
101185
101531
|
request2.onComplete(trailers);
|
|
101186
101532
|
});
|
|
101187
101533
|
return true;
|
|
@@ -101373,8 +101719,8 @@ var hasRequiredClient;
|
|
|
101373
101719
|
function requireClient() {
|
|
101374
101720
|
if (hasRequiredClient) return client;
|
|
101375
101721
|
hasRequiredClient = 1;
|
|
101376
|
-
const assert2 = require$$0$
|
|
101377
|
-
const net2 = require$$0$
|
|
101722
|
+
const assert2 = require$$0$3;
|
|
101723
|
+
const net2 = require$$0$5;
|
|
101378
101724
|
const http = require$$2$1;
|
|
101379
101725
|
const util2 = requireUtil$5();
|
|
101380
101726
|
const { ClientStats } = requireStats();
|
|
@@ -101568,6 +101914,13 @@ function requireClient() {
|
|
|
101568
101914
|
...typeof autoSelectFamily === "boolean" ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : void 0,
|
|
101569
101915
|
...connect3
|
|
101570
101916
|
});
|
|
101917
|
+
} else {
|
|
101918
|
+
const customConnect = connect3;
|
|
101919
|
+
connect3 = (opts, callback) => customConnect({
|
|
101920
|
+
...opts,
|
|
101921
|
+
...socketPath != null ? { socketPath } : null,
|
|
101922
|
+
...allowH2 != null ? { allowH2 } : null
|
|
101923
|
+
}, callback);
|
|
101571
101924
|
}
|
|
101572
101925
|
this[kUrl] = util2.parseOrigin(url2);
|
|
101573
101926
|
this[kConnector] = connect3;
|
|
@@ -101718,57 +102071,62 @@ function requireClient() {
|
|
|
101718
102071
|
connector: client2[kConnector]
|
|
101719
102072
|
});
|
|
101720
102073
|
}
|
|
101721
|
-
|
|
101722
|
-
|
|
101723
|
-
|
|
101724
|
-
|
|
101725
|
-
|
|
101726
|
-
|
|
101727
|
-
|
|
101728
|
-
|
|
101729
|
-
|
|
101730
|
-
|
|
101731
|
-
|
|
101732
|
-
|
|
101733
|
-
|
|
101734
|
-
|
|
101735
|
-
|
|
101736
|
-
|
|
101737
|
-
|
|
101738
|
-
|
|
101739
|
-
|
|
101740
|
-
|
|
101741
|
-
|
|
101742
|
-
|
|
101743
|
-
|
|
101744
|
-
|
|
101745
|
-
|
|
102074
|
+
try {
|
|
102075
|
+
client2[kConnector]({
|
|
102076
|
+
host,
|
|
102077
|
+
hostname: hostname2,
|
|
102078
|
+
protocol,
|
|
102079
|
+
port,
|
|
102080
|
+
servername: client2[kServerName],
|
|
102081
|
+
localAddress: client2[kLocalAddress]
|
|
102082
|
+
}, (err, socket) => {
|
|
102083
|
+
var _a4;
|
|
102084
|
+
if (err) {
|
|
102085
|
+
handleConnectError(client2, err, { host, hostname: hostname2, protocol, port });
|
|
102086
|
+
client2[kResume]();
|
|
102087
|
+
return;
|
|
102088
|
+
}
|
|
102089
|
+
if (client2.destroyed) {
|
|
102090
|
+
util2.destroy(socket.on("error", noop3), new ClientDestroyedError());
|
|
102091
|
+
client2[kResume]();
|
|
102092
|
+
return;
|
|
102093
|
+
}
|
|
102094
|
+
assert2(socket);
|
|
102095
|
+
try {
|
|
102096
|
+
client2[kHTTPContext] = socket.alpnProtocol === "h2" ? connectH2(client2, socket) : connectH1(client2, socket);
|
|
102097
|
+
} catch (err2) {
|
|
102098
|
+
socket.destroy().on("error", noop3);
|
|
102099
|
+
handleConnectError(client2, err2, { host, hostname: hostname2, protocol, port });
|
|
102100
|
+
client2[kResume]();
|
|
102101
|
+
return;
|
|
102102
|
+
}
|
|
102103
|
+
client2[kConnecting] = false;
|
|
102104
|
+
socket[kCounter] = 0;
|
|
102105
|
+
socket[kMaxRequests] = client2[kMaxRequests];
|
|
102106
|
+
socket[kClient] = client2;
|
|
102107
|
+
socket[kError] = null;
|
|
102108
|
+
if (channels.connected.hasSubscribers) {
|
|
102109
|
+
channels.connected.publish({
|
|
102110
|
+
connectParams: {
|
|
102111
|
+
host,
|
|
102112
|
+
hostname: hostname2,
|
|
102113
|
+
protocol,
|
|
102114
|
+
port,
|
|
102115
|
+
version: (_a4 = client2[kHTTPContext]) == null ? void 0 : _a4.version,
|
|
102116
|
+
servername: client2[kServerName],
|
|
102117
|
+
localAddress: client2[kLocalAddress]
|
|
102118
|
+
},
|
|
102119
|
+
connector: client2[kConnector],
|
|
102120
|
+
socket
|
|
102121
|
+
});
|
|
102122
|
+
}
|
|
102123
|
+
client2.emit("connect", client2[kUrl], [client2]);
|
|
101746
102124
|
client2[kResume]();
|
|
101747
|
-
|
|
101748
|
-
|
|
101749
|
-
client2
|
|
101750
|
-
socket[kCounter] = 0;
|
|
101751
|
-
socket[kMaxRequests] = client2[kMaxRequests];
|
|
101752
|
-
socket[kClient] = client2;
|
|
101753
|
-
socket[kError] = null;
|
|
101754
|
-
if (channels.connected.hasSubscribers) {
|
|
101755
|
-
channels.connected.publish({
|
|
101756
|
-
connectParams: {
|
|
101757
|
-
host,
|
|
101758
|
-
hostname: hostname2,
|
|
101759
|
-
protocol,
|
|
101760
|
-
port,
|
|
101761
|
-
version: (_a4 = client2[kHTTPContext]) == null ? void 0 : _a4.version,
|
|
101762
|
-
servername: client2[kServerName],
|
|
101763
|
-
localAddress: client2[kLocalAddress]
|
|
101764
|
-
},
|
|
101765
|
-
connector: client2[kConnector],
|
|
101766
|
-
socket
|
|
101767
|
-
});
|
|
101768
|
-
}
|
|
101769
|
-
client2.emit("connect", client2[kUrl], [client2]);
|
|
102125
|
+
});
|
|
102126
|
+
} catch (err) {
|
|
102127
|
+
handleConnectError(client2, err, { host, hostname: hostname2, protocol, port });
|
|
101770
102128
|
client2[kResume]();
|
|
101771
|
-
}
|
|
102129
|
+
}
|
|
101772
102130
|
}
|
|
101773
102131
|
function handleConnectError(client2, err, { host, hostname: hostname2, protocol, port }) {
|
|
101774
102132
|
var _a3;
|
|
@@ -101852,6 +102210,9 @@ function requireClient() {
|
|
|
101852
102210
|
return;
|
|
101853
102211
|
}
|
|
101854
102212
|
const request2 = client2[kQueue][client2[kPendingIdx]];
|
|
102213
|
+
if (request2 === null) {
|
|
102214
|
+
return;
|
|
102215
|
+
}
|
|
101855
102216
|
if (client2[kUrl].protocol === "https:" && client2[kServerName] !== request2.servername) {
|
|
101856
102217
|
if (client2[kRunning] > 0) {
|
|
101857
102218
|
return;
|
|
@@ -102202,7 +102563,7 @@ function requirePool() {
|
|
|
102202
102563
|
super();
|
|
102203
102564
|
this[kConnections] = connections || null;
|
|
102204
102565
|
this[kUrl] = util2.parseOrigin(origin);
|
|
102205
|
-
this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl };
|
|
102566
|
+
this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl, socketPath };
|
|
102206
102567
|
this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
|
|
102207
102568
|
this[kFactory] = factory;
|
|
102208
102569
|
this.on("connect", (origin2, targets) => {
|
|
@@ -102259,7 +102620,7 @@ function requireBalancedPool() {
|
|
|
102259
102620
|
} = requirePoolBase();
|
|
102260
102621
|
const Pool = requirePool();
|
|
102261
102622
|
const { kUrl } = requireSymbols();
|
|
102262
|
-
const
|
|
102623
|
+
const util2 = requireUtil$5();
|
|
102263
102624
|
const kFactory = Symbol("factory");
|
|
102264
102625
|
const kOptions = Symbol("options");
|
|
102265
102626
|
const kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor");
|
|
@@ -102286,7 +102647,8 @@ function requireBalancedPool() {
|
|
|
102286
102647
|
throw new InvalidArgumentError("factory must be a function.");
|
|
102287
102648
|
}
|
|
102288
102649
|
super();
|
|
102289
|
-
this[kOptions] = opts;
|
|
102650
|
+
this[kOptions] = { ...util2.deepClone(opts) };
|
|
102651
|
+
this[kOptions].interceptors = opts.interceptors ? { ...opts.interceptors } : void 0;
|
|
102290
102652
|
this[kIndex] = -1;
|
|
102291
102653
|
this[kCurrentWeight] = 0;
|
|
102292
102654
|
this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100;
|
|
@@ -102301,11 +102663,11 @@ function requireBalancedPool() {
|
|
|
102301
102663
|
this._updateBalancedPoolStats();
|
|
102302
102664
|
}
|
|
102303
102665
|
addUpstream(upstream) {
|
|
102304
|
-
const upstreamOrigin = parseOrigin(upstream).origin;
|
|
102666
|
+
const upstreamOrigin = util2.parseOrigin(upstream).origin;
|
|
102305
102667
|
if (this[kClients].find((pool3) => pool3[kUrl].origin === upstreamOrigin && pool3.closed !== true && pool3.destroyed !== true)) {
|
|
102306
102668
|
return this;
|
|
102307
102669
|
}
|
|
102308
|
-
const pool2 = this[kFactory](upstreamOrigin,
|
|
102670
|
+
const pool2 = this[kFactory](upstreamOrigin, this[kOptions]);
|
|
102309
102671
|
this[kAddClient](pool2);
|
|
102310
102672
|
pool2.on("connect", () => {
|
|
102311
102673
|
pool2[kWeight] = Math.min(this[kMaxWeightPerServer], pool2[kWeight] + this[kErrorPenalty]);
|
|
@@ -102335,7 +102697,7 @@ function requireBalancedPool() {
|
|
|
102335
102697
|
this[kGreatestCommonDivisor] = result;
|
|
102336
102698
|
}
|
|
102337
102699
|
removeUpstream(upstream) {
|
|
102338
|
-
const upstreamOrigin = parseOrigin(upstream).origin;
|
|
102700
|
+
const upstreamOrigin = util2.parseOrigin(upstream).origin;
|
|
102339
102701
|
const pool2 = this[kClients].find((pool3) => pool3[kUrl].origin === upstreamOrigin && pool3.closed !== true && pool3.destroyed !== true);
|
|
102340
102702
|
if (pool2) {
|
|
102341
102703
|
this[kRemoveClient](pool2);
|
|
@@ -102343,7 +102705,7 @@ function requireBalancedPool() {
|
|
|
102343
102705
|
return this;
|
|
102344
102706
|
}
|
|
102345
102707
|
getUpstream(upstream) {
|
|
102346
|
-
const upstreamOrigin = parseOrigin(upstream).origin;
|
|
102708
|
+
const upstreamOrigin = util2.parseOrigin(upstream).origin;
|
|
102347
102709
|
return this[kClients].find((pool2) => pool2[kUrl].origin === upstreamOrigin && pool2.closed !== true && pool2.destroyed !== true);
|
|
102348
102710
|
}
|
|
102349
102711
|
get upstreams() {
|
|
@@ -102452,7 +102814,7 @@ function requireRoundRobinPool() {
|
|
|
102452
102814
|
super();
|
|
102453
102815
|
this[kConnections] = connections || null;
|
|
102454
102816
|
this[kUrl] = util2.parseOrigin(origin);
|
|
102455
|
-
this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl };
|
|
102817
|
+
this[kOptions] = { ...util2.deepClone(options), connect: connect2, allowH2, clientTtl, socketPath };
|
|
102456
102818
|
this[kOptions].interceptors = options.interceptors ? { ...options.interceptors } : void 0;
|
|
102457
102819
|
this[kFactory] = factory;
|
|
102458
102820
|
this[kIndex] = -1;
|
|
@@ -102637,6 +102999,671 @@ function requireAgent() {
|
|
|
102637
102999
|
agent = Agent;
|
|
102638
103000
|
return agent;
|
|
102639
103001
|
}
|
|
103002
|
+
var socks5Utils;
|
|
103003
|
+
var hasRequiredSocks5Utils;
|
|
103004
|
+
function requireSocks5Utils() {
|
|
103005
|
+
if (hasRequiredSocks5Utils) return socks5Utils;
|
|
103006
|
+
hasRequiredSocks5Utils = 1;
|
|
103007
|
+
const { Buffer: Buffer2 } = require$$0$7;
|
|
103008
|
+
const net2 = require$$0$5;
|
|
103009
|
+
const { InvalidArgumentError } = requireErrors();
|
|
103010
|
+
function parseAddress(address) {
|
|
103011
|
+
if (net2.isIPv4(address)) {
|
|
103012
|
+
const parts = address.split(".").map(Number);
|
|
103013
|
+
return {
|
|
103014
|
+
type: 1,
|
|
103015
|
+
// IPv4
|
|
103016
|
+
buffer: Buffer2.from(parts)
|
|
103017
|
+
};
|
|
103018
|
+
}
|
|
103019
|
+
if (net2.isIPv6(address)) {
|
|
103020
|
+
return {
|
|
103021
|
+
type: 4,
|
|
103022
|
+
// IPv6
|
|
103023
|
+
buffer: parseIPv6(address)
|
|
103024
|
+
};
|
|
103025
|
+
}
|
|
103026
|
+
const domainBuffer = Buffer2.from(address, "utf8");
|
|
103027
|
+
if (domainBuffer.length > 255) {
|
|
103028
|
+
throw new InvalidArgumentError("Domain name too long (max 255 bytes)");
|
|
103029
|
+
}
|
|
103030
|
+
return {
|
|
103031
|
+
type: 3,
|
|
103032
|
+
// Domain
|
|
103033
|
+
buffer: Buffer2.concat([Buffer2.from([domainBuffer.length]), domainBuffer])
|
|
103034
|
+
};
|
|
103035
|
+
}
|
|
103036
|
+
function parseIPv6(address) {
|
|
103037
|
+
const buffer = Buffer2.alloc(16);
|
|
103038
|
+
const doubleColonIndex = address.indexOf("::");
|
|
103039
|
+
if (doubleColonIndex !== -1) {
|
|
103040
|
+
const before = address.slice(0, doubleColonIndex);
|
|
103041
|
+
const after = address.slice(doubleColonIndex + 2);
|
|
103042
|
+
const beforeParts = before === "" ? [] : before.split(":");
|
|
103043
|
+
const afterParts = after === "" ? [] : after.split(":");
|
|
103044
|
+
let bufferIndex = 0;
|
|
103045
|
+
for (const part of beforeParts) {
|
|
103046
|
+
buffer.writeUInt16BE(parseInt(part, 16), bufferIndex);
|
|
103047
|
+
bufferIndex += 2;
|
|
103048
|
+
}
|
|
103049
|
+
bufferIndex = 16 - afterParts.length * 2;
|
|
103050
|
+
for (const part of afterParts) {
|
|
103051
|
+
buffer.writeUInt16BE(parseInt(part, 16), bufferIndex);
|
|
103052
|
+
bufferIndex += 2;
|
|
103053
|
+
}
|
|
103054
|
+
} else {
|
|
103055
|
+
const parts = address.split(":");
|
|
103056
|
+
for (let i = 0; i < parts.length; i++) {
|
|
103057
|
+
buffer.writeUInt16BE(parseInt(parts[i], 16), i * 2);
|
|
103058
|
+
}
|
|
103059
|
+
}
|
|
103060
|
+
return buffer;
|
|
103061
|
+
}
|
|
103062
|
+
function buildAddressBuffer(type, addressBuffer, port) {
|
|
103063
|
+
const portBuffer = Buffer2.allocUnsafe(2);
|
|
103064
|
+
portBuffer.writeUInt16BE(port, 0);
|
|
103065
|
+
return Buffer2.concat([
|
|
103066
|
+
Buffer2.from([type]),
|
|
103067
|
+
addressBuffer,
|
|
103068
|
+
portBuffer
|
|
103069
|
+
]);
|
|
103070
|
+
}
|
|
103071
|
+
function parseResponseAddress(buffer, offset2 = 0) {
|
|
103072
|
+
if (buffer.length < offset2 + 1) {
|
|
103073
|
+
throw new InvalidArgumentError("Buffer too small to contain address type");
|
|
103074
|
+
}
|
|
103075
|
+
const addressType = buffer[offset2];
|
|
103076
|
+
let address;
|
|
103077
|
+
let currentOffset = offset2 + 1;
|
|
103078
|
+
switch (addressType) {
|
|
103079
|
+
case 1: {
|
|
103080
|
+
if (buffer.length < currentOffset + 6) {
|
|
103081
|
+
throw new InvalidArgumentError("Buffer too small for IPv4 address");
|
|
103082
|
+
}
|
|
103083
|
+
address = Array.from(buffer.subarray(currentOffset, currentOffset + 4)).join(".");
|
|
103084
|
+
currentOffset += 4;
|
|
103085
|
+
break;
|
|
103086
|
+
}
|
|
103087
|
+
case 3: {
|
|
103088
|
+
if (buffer.length < currentOffset + 1) {
|
|
103089
|
+
throw new InvalidArgumentError("Buffer too small for domain length");
|
|
103090
|
+
}
|
|
103091
|
+
const domainLength = buffer[currentOffset];
|
|
103092
|
+
currentOffset += 1;
|
|
103093
|
+
if (buffer.length < currentOffset + domainLength + 2) {
|
|
103094
|
+
throw new InvalidArgumentError("Buffer too small for domain address");
|
|
103095
|
+
}
|
|
103096
|
+
address = buffer.subarray(currentOffset, currentOffset + domainLength).toString("utf8");
|
|
103097
|
+
currentOffset += domainLength;
|
|
103098
|
+
break;
|
|
103099
|
+
}
|
|
103100
|
+
case 4: {
|
|
103101
|
+
if (buffer.length < currentOffset + 18) {
|
|
103102
|
+
throw new InvalidArgumentError("Buffer too small for IPv6 address");
|
|
103103
|
+
}
|
|
103104
|
+
const parts = [];
|
|
103105
|
+
for (let i = 0; i < 8; i++) {
|
|
103106
|
+
const value = buffer.readUInt16BE(currentOffset + i * 2);
|
|
103107
|
+
parts.push(value.toString(16));
|
|
103108
|
+
}
|
|
103109
|
+
address = parts.join(":");
|
|
103110
|
+
currentOffset += 16;
|
|
103111
|
+
break;
|
|
103112
|
+
}
|
|
103113
|
+
default:
|
|
103114
|
+
throw new InvalidArgumentError(`Invalid address type: ${addressType}`);
|
|
103115
|
+
}
|
|
103116
|
+
if (buffer.length < currentOffset + 2) {
|
|
103117
|
+
throw new InvalidArgumentError("Buffer too small for port");
|
|
103118
|
+
}
|
|
103119
|
+
const port = buffer.readUInt16BE(currentOffset);
|
|
103120
|
+
currentOffset += 2;
|
|
103121
|
+
return {
|
|
103122
|
+
address,
|
|
103123
|
+
port,
|
|
103124
|
+
bytesRead: currentOffset - offset2
|
|
103125
|
+
};
|
|
103126
|
+
}
|
|
103127
|
+
function createReplyError(replyCode) {
|
|
103128
|
+
const messages = {
|
|
103129
|
+
1: "General SOCKS server failure",
|
|
103130
|
+
2: "Connection not allowed by ruleset",
|
|
103131
|
+
3: "Network unreachable",
|
|
103132
|
+
4: "Host unreachable",
|
|
103133
|
+
5: "Connection refused",
|
|
103134
|
+
6: "TTL expired",
|
|
103135
|
+
7: "Command not supported",
|
|
103136
|
+
8: "Address type not supported"
|
|
103137
|
+
};
|
|
103138
|
+
const message2 = messages[replyCode] || `Unknown SOCKS5 error code: ${replyCode}`;
|
|
103139
|
+
const error2 = new Error(message2);
|
|
103140
|
+
error2.code = `SOCKS5_${replyCode}`;
|
|
103141
|
+
return error2;
|
|
103142
|
+
}
|
|
103143
|
+
socks5Utils = {
|
|
103144
|
+
parseAddress,
|
|
103145
|
+
parseIPv6,
|
|
103146
|
+
buildAddressBuffer,
|
|
103147
|
+
parseResponseAddress,
|
|
103148
|
+
createReplyError
|
|
103149
|
+
};
|
|
103150
|
+
return socks5Utils;
|
|
103151
|
+
}
|
|
103152
|
+
var socks5Client;
|
|
103153
|
+
var hasRequiredSocks5Client;
|
|
103154
|
+
function requireSocks5Client() {
|
|
103155
|
+
if (hasRequiredSocks5Client) return socks5Client;
|
|
103156
|
+
hasRequiredSocks5Client = 1;
|
|
103157
|
+
const { EventEmitter: EventEmitter2 } = require$$0$2;
|
|
103158
|
+
const { Buffer: Buffer2 } = require$$0$7;
|
|
103159
|
+
const { InvalidArgumentError, Socks5ProxyError } = requireErrors();
|
|
103160
|
+
const { debuglog } = require$$3;
|
|
103161
|
+
const { parseAddress } = requireSocks5Utils();
|
|
103162
|
+
const debug = debuglog("undici:socks5");
|
|
103163
|
+
const EMPTY_BUFFER = Buffer2.alloc(0);
|
|
103164
|
+
const SOCKS_VERSION = 5;
|
|
103165
|
+
const AUTH_METHODS = {
|
|
103166
|
+
NO_AUTH: 0,
|
|
103167
|
+
GSSAPI: 1,
|
|
103168
|
+
USERNAME_PASSWORD: 2,
|
|
103169
|
+
NO_ACCEPTABLE: 255
|
|
103170
|
+
};
|
|
103171
|
+
const COMMANDS = {
|
|
103172
|
+
CONNECT: 1,
|
|
103173
|
+
BIND: 2,
|
|
103174
|
+
UDP_ASSOCIATE: 3
|
|
103175
|
+
};
|
|
103176
|
+
const ADDRESS_TYPES = {
|
|
103177
|
+
IPV4: 1,
|
|
103178
|
+
DOMAIN: 3,
|
|
103179
|
+
IPV6: 4
|
|
103180
|
+
};
|
|
103181
|
+
const REPLY_CODES = {
|
|
103182
|
+
SUCCEEDED: 0,
|
|
103183
|
+
GENERAL_FAILURE: 1,
|
|
103184
|
+
CONNECTION_NOT_ALLOWED: 2,
|
|
103185
|
+
NETWORK_UNREACHABLE: 3,
|
|
103186
|
+
HOST_UNREACHABLE: 4,
|
|
103187
|
+
CONNECTION_REFUSED: 5,
|
|
103188
|
+
TTL_EXPIRED: 6,
|
|
103189
|
+
COMMAND_NOT_SUPPORTED: 7,
|
|
103190
|
+
ADDRESS_TYPE_NOT_SUPPORTED: 8
|
|
103191
|
+
};
|
|
103192
|
+
const STATES = {
|
|
103193
|
+
INITIAL: "initial",
|
|
103194
|
+
HANDSHAKING: "handshaking",
|
|
103195
|
+
AUTHENTICATING: "authenticating",
|
|
103196
|
+
CONNECTING: "connecting",
|
|
103197
|
+
CONNECTED: "connected",
|
|
103198
|
+
ERROR: "error",
|
|
103199
|
+
CLOSED: "closed"
|
|
103200
|
+
};
|
|
103201
|
+
class Socks5Client extends EventEmitter2 {
|
|
103202
|
+
constructor(socket, options = {}) {
|
|
103203
|
+
super();
|
|
103204
|
+
if (!socket) {
|
|
103205
|
+
throw new InvalidArgumentError("socket is required");
|
|
103206
|
+
}
|
|
103207
|
+
this.socket = socket;
|
|
103208
|
+
this.options = options;
|
|
103209
|
+
this.state = STATES.INITIAL;
|
|
103210
|
+
this.buffer = EMPTY_BUFFER;
|
|
103211
|
+
this.onSocketData = this.onData.bind(this);
|
|
103212
|
+
this.onSocketError = this.onError.bind(this);
|
|
103213
|
+
this.onSocketClose = this.onClose.bind(this);
|
|
103214
|
+
this.authMethods = [];
|
|
103215
|
+
if (options.username && options.password) {
|
|
103216
|
+
this.authMethods.push(AUTH_METHODS.USERNAME_PASSWORD);
|
|
103217
|
+
}
|
|
103218
|
+
this.authMethods.push(AUTH_METHODS.NO_AUTH);
|
|
103219
|
+
this.socket.on("data", this.onSocketData);
|
|
103220
|
+
this.socket.on("error", this.onSocketError);
|
|
103221
|
+
this.socket.on("close", this.onSocketClose);
|
|
103222
|
+
}
|
|
103223
|
+
/**
|
|
103224
|
+
* Handle incoming data from the socket
|
|
103225
|
+
*/
|
|
103226
|
+
onData(data) {
|
|
103227
|
+
debug("received data", data.length, "bytes in state", this.state);
|
|
103228
|
+
this.buffer = Buffer2.concat([this.buffer, data]);
|
|
103229
|
+
try {
|
|
103230
|
+
switch (this.state) {
|
|
103231
|
+
case STATES.HANDSHAKING:
|
|
103232
|
+
this.handleHandshakeResponse();
|
|
103233
|
+
break;
|
|
103234
|
+
case STATES.AUTHENTICATING:
|
|
103235
|
+
this.handleAuthResponse();
|
|
103236
|
+
break;
|
|
103237
|
+
case STATES.CONNECTING:
|
|
103238
|
+
this.handleConnectResponse();
|
|
103239
|
+
break;
|
|
103240
|
+
}
|
|
103241
|
+
} catch (err) {
|
|
103242
|
+
this.onError(err);
|
|
103243
|
+
}
|
|
103244
|
+
}
|
|
103245
|
+
/**
|
|
103246
|
+
* Handle socket errors
|
|
103247
|
+
*/
|
|
103248
|
+
onError(err) {
|
|
103249
|
+
debug("socket error", err);
|
|
103250
|
+
this.state = STATES.ERROR;
|
|
103251
|
+
this.emit("error", err);
|
|
103252
|
+
this.destroy();
|
|
103253
|
+
}
|
|
103254
|
+
/**
|
|
103255
|
+
* Handle socket close
|
|
103256
|
+
*/
|
|
103257
|
+
onClose() {
|
|
103258
|
+
debug("socket closed");
|
|
103259
|
+
this.state = STATES.CLOSED;
|
|
103260
|
+
this.emit("close");
|
|
103261
|
+
}
|
|
103262
|
+
/**
|
|
103263
|
+
* Destroy the client and underlying socket
|
|
103264
|
+
*/
|
|
103265
|
+
destroy() {
|
|
103266
|
+
if (this.socket && !this.socket.destroyed) {
|
|
103267
|
+
this.socket.destroy();
|
|
103268
|
+
}
|
|
103269
|
+
}
|
|
103270
|
+
/**
|
|
103271
|
+
* Start the SOCKS5 handshake
|
|
103272
|
+
*/
|
|
103273
|
+
handshake() {
|
|
103274
|
+
if (this.state !== STATES.INITIAL) {
|
|
103275
|
+
throw new InvalidArgumentError("Handshake already started");
|
|
103276
|
+
}
|
|
103277
|
+
debug("starting handshake with", this.authMethods.length, "auth methods");
|
|
103278
|
+
this.state = STATES.HANDSHAKING;
|
|
103279
|
+
const request2 = Buffer2.alloc(2 + this.authMethods.length);
|
|
103280
|
+
request2[0] = SOCKS_VERSION;
|
|
103281
|
+
request2[1] = this.authMethods.length;
|
|
103282
|
+
this.authMethods.forEach((method, i) => {
|
|
103283
|
+
request2[2 + i] = method;
|
|
103284
|
+
});
|
|
103285
|
+
this.socket.write(request2);
|
|
103286
|
+
}
|
|
103287
|
+
/**
|
|
103288
|
+
* Handle handshake response from server
|
|
103289
|
+
*/
|
|
103290
|
+
handleHandshakeResponse() {
|
|
103291
|
+
if (this.buffer.length < 2) {
|
|
103292
|
+
return;
|
|
103293
|
+
}
|
|
103294
|
+
const version2 = this.buffer[0];
|
|
103295
|
+
const method = this.buffer[1];
|
|
103296
|
+
if (version2 !== SOCKS_VERSION) {
|
|
103297
|
+
throw new Socks5ProxyError(`Invalid SOCKS version: ${version2}`, "UND_ERR_SOCKS5_VERSION");
|
|
103298
|
+
}
|
|
103299
|
+
if (method === AUTH_METHODS.NO_ACCEPTABLE) {
|
|
103300
|
+
throw new Socks5ProxyError("No acceptable authentication method", "UND_ERR_SOCKS5_AUTH_REJECTED");
|
|
103301
|
+
}
|
|
103302
|
+
this.buffer = this.buffer.subarray(2);
|
|
103303
|
+
debug("server selected auth method", method);
|
|
103304
|
+
if (method === AUTH_METHODS.NO_AUTH) {
|
|
103305
|
+
this.emit("authenticated");
|
|
103306
|
+
} else if (method === AUTH_METHODS.USERNAME_PASSWORD) {
|
|
103307
|
+
this.state = STATES.AUTHENTICATING;
|
|
103308
|
+
this.sendAuthRequest();
|
|
103309
|
+
} else {
|
|
103310
|
+
throw new Socks5ProxyError(`Unsupported authentication method: ${method}`, "UND_ERR_SOCKS5_AUTH_METHOD");
|
|
103311
|
+
}
|
|
103312
|
+
}
|
|
103313
|
+
/**
|
|
103314
|
+
* Send username/password authentication request
|
|
103315
|
+
*/
|
|
103316
|
+
sendAuthRequest() {
|
|
103317
|
+
const { username, password } = this.options;
|
|
103318
|
+
if (!username || !password) {
|
|
103319
|
+
throw new InvalidArgumentError("Username and password required for authentication");
|
|
103320
|
+
}
|
|
103321
|
+
debug("sending username/password auth");
|
|
103322
|
+
const usernameBuffer = Buffer2.from(username);
|
|
103323
|
+
const passwordBuffer = Buffer2.from(password);
|
|
103324
|
+
if (usernameBuffer.length > 255 || passwordBuffer.length > 255) {
|
|
103325
|
+
throw new InvalidArgumentError("Username or password too long");
|
|
103326
|
+
}
|
|
103327
|
+
const request2 = Buffer2.alloc(3 + usernameBuffer.length + passwordBuffer.length);
|
|
103328
|
+
request2[0] = 1;
|
|
103329
|
+
request2[1] = usernameBuffer.length;
|
|
103330
|
+
usernameBuffer.copy(request2, 2);
|
|
103331
|
+
request2[2 + usernameBuffer.length] = passwordBuffer.length;
|
|
103332
|
+
passwordBuffer.copy(request2, 3 + usernameBuffer.length);
|
|
103333
|
+
this.socket.write(request2);
|
|
103334
|
+
}
|
|
103335
|
+
/**
|
|
103336
|
+
* Handle authentication response
|
|
103337
|
+
*/
|
|
103338
|
+
handleAuthResponse() {
|
|
103339
|
+
if (this.buffer.length < 2) {
|
|
103340
|
+
return;
|
|
103341
|
+
}
|
|
103342
|
+
const version2 = this.buffer[0];
|
|
103343
|
+
const status = this.buffer[1];
|
|
103344
|
+
if (version2 !== 1) {
|
|
103345
|
+
throw new Socks5ProxyError(`Invalid auth sub-negotiation version: ${version2}`, "UND_ERR_SOCKS5_AUTH_VERSION");
|
|
103346
|
+
}
|
|
103347
|
+
if (status !== 0) {
|
|
103348
|
+
throw new Socks5ProxyError("Authentication failed", "UND_ERR_SOCKS5_AUTH_FAILED");
|
|
103349
|
+
}
|
|
103350
|
+
this.buffer = this.buffer.subarray(2);
|
|
103351
|
+
debug("authentication successful");
|
|
103352
|
+
this.emit("authenticated");
|
|
103353
|
+
}
|
|
103354
|
+
/**
|
|
103355
|
+
* Send CONNECT command
|
|
103356
|
+
* @param {string} address - Target address (IP or domain)
|
|
103357
|
+
* @param {number} port - Target port
|
|
103358
|
+
*/
|
|
103359
|
+
connect(address, port) {
|
|
103360
|
+
if (this.state === STATES.CONNECTED) {
|
|
103361
|
+
throw new InvalidArgumentError("Already connected");
|
|
103362
|
+
}
|
|
103363
|
+
debug("connecting to", address, port);
|
|
103364
|
+
this.state = STATES.CONNECTING;
|
|
103365
|
+
const request2 = this.buildConnectRequest(COMMANDS.CONNECT, address, port);
|
|
103366
|
+
this.socket.write(request2);
|
|
103367
|
+
}
|
|
103368
|
+
/**
|
|
103369
|
+
* Build a SOCKS5 request
|
|
103370
|
+
*/
|
|
103371
|
+
buildConnectRequest(command, address, port) {
|
|
103372
|
+
const { type: addressType, buffer: addressBuffer } = parseAddress(address);
|
|
103373
|
+
const request2 = Buffer2.alloc(4 + addressBuffer.length + 2);
|
|
103374
|
+
request2[0] = SOCKS_VERSION;
|
|
103375
|
+
request2[1] = command;
|
|
103376
|
+
request2[2] = 0;
|
|
103377
|
+
request2[3] = addressType;
|
|
103378
|
+
addressBuffer.copy(request2, 4);
|
|
103379
|
+
request2.writeUInt16BE(port, 4 + addressBuffer.length);
|
|
103380
|
+
return request2;
|
|
103381
|
+
}
|
|
103382
|
+
/**
|
|
103383
|
+
* Handle CONNECT response
|
|
103384
|
+
*/
|
|
103385
|
+
handleConnectResponse() {
|
|
103386
|
+
if (this.buffer.length < 4) {
|
|
103387
|
+
return;
|
|
103388
|
+
}
|
|
103389
|
+
const version2 = this.buffer[0];
|
|
103390
|
+
const reply = this.buffer[1];
|
|
103391
|
+
const addressType = this.buffer[3];
|
|
103392
|
+
if (version2 !== SOCKS_VERSION) {
|
|
103393
|
+
throw new Socks5ProxyError(`Invalid SOCKS version in reply: ${version2}`, "UND_ERR_SOCKS5_REPLY_VERSION");
|
|
103394
|
+
}
|
|
103395
|
+
let responseLength = 4;
|
|
103396
|
+
if (addressType === ADDRESS_TYPES.IPV4) {
|
|
103397
|
+
responseLength += 4 + 2;
|
|
103398
|
+
} else if (addressType === ADDRESS_TYPES.DOMAIN) {
|
|
103399
|
+
if (this.buffer.length < 5) {
|
|
103400
|
+
return;
|
|
103401
|
+
}
|
|
103402
|
+
responseLength += 1 + this.buffer[4] + 2;
|
|
103403
|
+
} else if (addressType === ADDRESS_TYPES.IPV6) {
|
|
103404
|
+
responseLength += 16 + 2;
|
|
103405
|
+
} else {
|
|
103406
|
+
throw new Socks5ProxyError(`Invalid address type in reply: ${addressType}`, "UND_ERR_SOCKS5_ADDR_TYPE");
|
|
103407
|
+
}
|
|
103408
|
+
if (this.buffer.length < responseLength) {
|
|
103409
|
+
return;
|
|
103410
|
+
}
|
|
103411
|
+
if (reply !== REPLY_CODES.SUCCEEDED) {
|
|
103412
|
+
const errorMessage = this.getReplyErrorMessage(reply);
|
|
103413
|
+
throw new Socks5ProxyError(`SOCKS5 connection failed: ${errorMessage}`, `UND_ERR_SOCKS5_REPLY_${reply}`);
|
|
103414
|
+
}
|
|
103415
|
+
let boundAddress;
|
|
103416
|
+
let offset2 = 4;
|
|
103417
|
+
if (addressType === ADDRESS_TYPES.IPV4) {
|
|
103418
|
+
boundAddress = Array.from(this.buffer.subarray(offset2, offset2 + 4)).join(".");
|
|
103419
|
+
offset2 += 4;
|
|
103420
|
+
} else if (addressType === ADDRESS_TYPES.DOMAIN) {
|
|
103421
|
+
const domainLength = this.buffer[offset2];
|
|
103422
|
+
offset2 += 1;
|
|
103423
|
+
boundAddress = this.buffer.subarray(offset2, offset2 + domainLength).toString();
|
|
103424
|
+
offset2 += domainLength;
|
|
103425
|
+
} else if (addressType === ADDRESS_TYPES.IPV6) {
|
|
103426
|
+
const parts = [];
|
|
103427
|
+
for (let i = 0; i < 8; i++) {
|
|
103428
|
+
const value = this.buffer.readUInt16BE(offset2 + i * 2);
|
|
103429
|
+
parts.push(value.toString(16));
|
|
103430
|
+
}
|
|
103431
|
+
boundAddress = parts.join(":");
|
|
103432
|
+
offset2 += 16;
|
|
103433
|
+
}
|
|
103434
|
+
const boundPort = this.buffer.readUInt16BE(offset2);
|
|
103435
|
+
this.buffer = EMPTY_BUFFER;
|
|
103436
|
+
this.state = STATES.CONNECTED;
|
|
103437
|
+
this.socket.removeListener("data", this.onSocketData);
|
|
103438
|
+
debug("connected, bound address:", boundAddress, "port:", boundPort);
|
|
103439
|
+
this.emit("connected", { address: boundAddress, port: boundPort });
|
|
103440
|
+
}
|
|
103441
|
+
/**
|
|
103442
|
+
* Get human-readable error message for reply code
|
|
103443
|
+
*/
|
|
103444
|
+
getReplyErrorMessage(reply) {
|
|
103445
|
+
switch (reply) {
|
|
103446
|
+
case REPLY_CODES.GENERAL_FAILURE:
|
|
103447
|
+
return "General SOCKS server failure";
|
|
103448
|
+
case REPLY_CODES.CONNECTION_NOT_ALLOWED:
|
|
103449
|
+
return "Connection not allowed by ruleset";
|
|
103450
|
+
case REPLY_CODES.NETWORK_UNREACHABLE:
|
|
103451
|
+
return "Network unreachable";
|
|
103452
|
+
case REPLY_CODES.HOST_UNREACHABLE:
|
|
103453
|
+
return "Host unreachable";
|
|
103454
|
+
case REPLY_CODES.CONNECTION_REFUSED:
|
|
103455
|
+
return "Connection refused";
|
|
103456
|
+
case REPLY_CODES.TTL_EXPIRED:
|
|
103457
|
+
return "TTL expired";
|
|
103458
|
+
case REPLY_CODES.COMMAND_NOT_SUPPORTED:
|
|
103459
|
+
return "Command not supported";
|
|
103460
|
+
case REPLY_CODES.ADDRESS_TYPE_NOT_SUPPORTED:
|
|
103461
|
+
return "Address type not supported";
|
|
103462
|
+
default:
|
|
103463
|
+
return `Unknown error code: ${reply}`;
|
|
103464
|
+
}
|
|
103465
|
+
}
|
|
103466
|
+
}
|
|
103467
|
+
socks5Client = {
|
|
103468
|
+
Socks5Client,
|
|
103469
|
+
AUTH_METHODS,
|
|
103470
|
+
COMMANDS,
|
|
103471
|
+
ADDRESS_TYPES,
|
|
103472
|
+
REPLY_CODES,
|
|
103473
|
+
STATES
|
|
103474
|
+
};
|
|
103475
|
+
return socks5Client;
|
|
103476
|
+
}
|
|
103477
|
+
var socks5ProxyAgent;
|
|
103478
|
+
var hasRequiredSocks5ProxyAgent;
|
|
103479
|
+
function requireSocks5ProxyAgent() {
|
|
103480
|
+
if (hasRequiredSocks5ProxyAgent) return socks5ProxyAgent;
|
|
103481
|
+
hasRequiredSocks5ProxyAgent = 1;
|
|
103482
|
+
const net2 = require$$0$5;
|
|
103483
|
+
const { URL: URL2 } = require$$1$2;
|
|
103484
|
+
let tls;
|
|
103485
|
+
const DispatcherBase = requireDispatcherBase();
|
|
103486
|
+
const { InvalidArgumentError } = requireErrors();
|
|
103487
|
+
const { Socks5Client } = requireSocks5Client();
|
|
103488
|
+
const { kDispatch, kClose, kDestroy } = requireSymbols();
|
|
103489
|
+
const Pool = requirePool();
|
|
103490
|
+
const buildConnector = requireConnect();
|
|
103491
|
+
const { debuglog } = require$$3;
|
|
103492
|
+
const debug = debuglog("undici:socks5-proxy");
|
|
103493
|
+
const kProxyUrl = Symbol("proxy url");
|
|
103494
|
+
const kProxyHeaders = Symbol("proxy headers");
|
|
103495
|
+
const kProxyAuth = Symbol("proxy auth");
|
|
103496
|
+
const kPool = Symbol("pool");
|
|
103497
|
+
const kConnector = Symbol("connector");
|
|
103498
|
+
let experimentalWarningEmitted = false;
|
|
103499
|
+
class Socks5ProxyAgent extends DispatcherBase {
|
|
103500
|
+
constructor(proxyUrl, options = {}) {
|
|
103501
|
+
var _a3;
|
|
103502
|
+
super();
|
|
103503
|
+
if (!experimentalWarningEmitted) {
|
|
103504
|
+
process.emitWarning(
|
|
103505
|
+
"SOCKS5 proxy support is experimental and subject to change",
|
|
103506
|
+
"ExperimentalWarning"
|
|
103507
|
+
);
|
|
103508
|
+
experimentalWarningEmitted = true;
|
|
103509
|
+
}
|
|
103510
|
+
if (!proxyUrl) {
|
|
103511
|
+
throw new InvalidArgumentError("Proxy URL is mandatory");
|
|
103512
|
+
}
|
|
103513
|
+
const url2 = typeof proxyUrl === "string" ? new URL2(proxyUrl) : proxyUrl;
|
|
103514
|
+
if (url2.protocol !== "socks5:" && url2.protocol !== "socks:") {
|
|
103515
|
+
throw new InvalidArgumentError("Proxy URL must use socks5:// or socks:// protocol");
|
|
103516
|
+
}
|
|
103517
|
+
this[kProxyUrl] = url2;
|
|
103518
|
+
this[kProxyHeaders] = options.headers || {};
|
|
103519
|
+
this[kProxyAuth] = {
|
|
103520
|
+
username: options.username || (url2.username ? decodeURIComponent(url2.username) : null),
|
|
103521
|
+
password: options.password || (url2.password ? decodeURIComponent(url2.password) : null)
|
|
103522
|
+
};
|
|
103523
|
+
this[kConnector] = options.connect || buildConnector({
|
|
103524
|
+
...options.proxyTls,
|
|
103525
|
+
servername: ((_a3 = options.proxyTls) == null ? void 0 : _a3.servername) || url2.hostname
|
|
103526
|
+
});
|
|
103527
|
+
this[kPool] = null;
|
|
103528
|
+
}
|
|
103529
|
+
/**
|
|
103530
|
+
* Create a SOCKS5 connection to the proxy
|
|
103531
|
+
*/
|
|
103532
|
+
async createSocks5Connection(targetHost, targetPort) {
|
|
103533
|
+
const proxyHost = this[kProxyUrl].hostname;
|
|
103534
|
+
const proxyPort = parseInt(this[kProxyUrl].port) || 1080;
|
|
103535
|
+
debug("creating SOCKS5 connection to", proxyHost, proxyPort);
|
|
103536
|
+
const socket = await new Promise((resolve2, reject) => {
|
|
103537
|
+
const onConnect = () => {
|
|
103538
|
+
socket2.removeListener("error", onError);
|
|
103539
|
+
resolve2(socket2);
|
|
103540
|
+
};
|
|
103541
|
+
const onError = (err) => {
|
|
103542
|
+
socket2.removeListener("connect", onConnect);
|
|
103543
|
+
reject(err);
|
|
103544
|
+
};
|
|
103545
|
+
const socket2 = net2.connect({
|
|
103546
|
+
host: proxyHost,
|
|
103547
|
+
port: proxyPort
|
|
103548
|
+
});
|
|
103549
|
+
socket2.once("connect", onConnect);
|
|
103550
|
+
socket2.once("error", onError);
|
|
103551
|
+
});
|
|
103552
|
+
const socks5Client2 = new Socks5Client(socket, this[kProxyAuth]);
|
|
103553
|
+
socks5Client2.on("error", (err) => {
|
|
103554
|
+
debug("SOCKS5 error:", err);
|
|
103555
|
+
socket.destroy();
|
|
103556
|
+
});
|
|
103557
|
+
await socks5Client2.handshake();
|
|
103558
|
+
await new Promise((resolve2, reject) => {
|
|
103559
|
+
const timeout2 = setTimeout(() => {
|
|
103560
|
+
reject(new Error("SOCKS5 authentication timeout"));
|
|
103561
|
+
}, 5e3);
|
|
103562
|
+
const onAuthenticated = () => {
|
|
103563
|
+
clearTimeout(timeout2);
|
|
103564
|
+
socks5Client2.removeListener("error", onError);
|
|
103565
|
+
resolve2();
|
|
103566
|
+
};
|
|
103567
|
+
const onError = (err) => {
|
|
103568
|
+
clearTimeout(timeout2);
|
|
103569
|
+
socks5Client2.removeListener("authenticated", onAuthenticated);
|
|
103570
|
+
reject(err);
|
|
103571
|
+
};
|
|
103572
|
+
if (socks5Client2.state === "authenticated") {
|
|
103573
|
+
clearTimeout(timeout2);
|
|
103574
|
+
resolve2();
|
|
103575
|
+
} else {
|
|
103576
|
+
socks5Client2.once("authenticated", onAuthenticated);
|
|
103577
|
+
socks5Client2.once("error", onError);
|
|
103578
|
+
}
|
|
103579
|
+
});
|
|
103580
|
+
await socks5Client2.connect(targetHost, targetPort);
|
|
103581
|
+
await new Promise((resolve2, reject) => {
|
|
103582
|
+
const timeout2 = setTimeout(() => {
|
|
103583
|
+
reject(new Error("SOCKS5 connection timeout"));
|
|
103584
|
+
}, 5e3);
|
|
103585
|
+
const onConnected = (info) => {
|
|
103586
|
+
debug("SOCKS5 tunnel established to", targetHost, targetPort, "via", info);
|
|
103587
|
+
clearTimeout(timeout2);
|
|
103588
|
+
socks5Client2.removeListener("error", onError);
|
|
103589
|
+
resolve2();
|
|
103590
|
+
};
|
|
103591
|
+
const onError = (err) => {
|
|
103592
|
+
clearTimeout(timeout2);
|
|
103593
|
+
socks5Client2.removeListener("connected", onConnected);
|
|
103594
|
+
reject(err);
|
|
103595
|
+
};
|
|
103596
|
+
socks5Client2.once("connected", onConnected);
|
|
103597
|
+
socks5Client2.once("error", onError);
|
|
103598
|
+
});
|
|
103599
|
+
return socket;
|
|
103600
|
+
}
|
|
103601
|
+
/**
|
|
103602
|
+
* Dispatch a request through the SOCKS5 proxy
|
|
103603
|
+
*/
|
|
103604
|
+
async [kDispatch](opts, handler) {
|
|
103605
|
+
const { origin } = opts;
|
|
103606
|
+
debug("dispatching request to", origin, "via SOCKS5");
|
|
103607
|
+
try {
|
|
103608
|
+
if (!this[kPool] || this[kPool].destroyed || this[kPool].closed) {
|
|
103609
|
+
this[kPool] = new Pool(origin, {
|
|
103610
|
+
pipelining: opts.pipelining,
|
|
103611
|
+
connections: opts.connections,
|
|
103612
|
+
connect: async (connectOpts, callback) => {
|
|
103613
|
+
try {
|
|
103614
|
+
const url2 = new URL2(origin);
|
|
103615
|
+
const targetHost = url2.hostname;
|
|
103616
|
+
const targetPort = parseInt(url2.port) || (url2.protocol === "https:" ? 443 : 80);
|
|
103617
|
+
debug("establishing SOCKS5 connection to", targetHost, targetPort);
|
|
103618
|
+
const socket = await this.createSocks5Connection(targetHost, targetPort);
|
|
103619
|
+
let finalSocket = socket;
|
|
103620
|
+
if (url2.protocol === "https:") {
|
|
103621
|
+
if (!tls) {
|
|
103622
|
+
tls = require("node:tls");
|
|
103623
|
+
}
|
|
103624
|
+
debug("upgrading to TLS");
|
|
103625
|
+
finalSocket = tls.connect({
|
|
103626
|
+
socket,
|
|
103627
|
+
servername: targetHost,
|
|
103628
|
+
...connectOpts.tls || {}
|
|
103629
|
+
});
|
|
103630
|
+
await new Promise((resolve2, reject) => {
|
|
103631
|
+
finalSocket.once("secureConnect", resolve2);
|
|
103632
|
+
finalSocket.once("error", reject);
|
|
103633
|
+
});
|
|
103634
|
+
}
|
|
103635
|
+
callback(null, finalSocket);
|
|
103636
|
+
} catch (err) {
|
|
103637
|
+
debug("SOCKS5 connection error:", err);
|
|
103638
|
+
callback(err);
|
|
103639
|
+
}
|
|
103640
|
+
}
|
|
103641
|
+
});
|
|
103642
|
+
}
|
|
103643
|
+
return this[kPool][kDispatch](opts, handler);
|
|
103644
|
+
} catch (err) {
|
|
103645
|
+
debug("dispatch error:", err);
|
|
103646
|
+
if (typeof handler.onError === "function") {
|
|
103647
|
+
handler.onError(err);
|
|
103648
|
+
} else {
|
|
103649
|
+
throw err;
|
|
103650
|
+
}
|
|
103651
|
+
}
|
|
103652
|
+
}
|
|
103653
|
+
async [kClose]() {
|
|
103654
|
+
if (this[kPool]) {
|
|
103655
|
+
await this[kPool].close();
|
|
103656
|
+
}
|
|
103657
|
+
}
|
|
103658
|
+
async [kDestroy](err) {
|
|
103659
|
+
if (this[kPool]) {
|
|
103660
|
+
await this[kPool].destroy(err);
|
|
103661
|
+
}
|
|
103662
|
+
}
|
|
103663
|
+
}
|
|
103664
|
+
socks5ProxyAgent = Socks5ProxyAgent;
|
|
103665
|
+
return socks5ProxyAgent;
|
|
103666
|
+
}
|
|
102640
103667
|
var proxyAgent;
|
|
102641
103668
|
var hasRequiredProxyAgent;
|
|
102642
103669
|
function requireProxyAgent() {
|
|
@@ -102651,6 +103678,7 @@ function requireProxyAgent() {
|
|
|
102651
103678
|
const buildConnector = requireConnect();
|
|
102652
103679
|
const Client = requireClient();
|
|
102653
103680
|
const { channels } = requireDiagnostics();
|
|
103681
|
+
const Socks5ProxyAgent = requireSocks5ProxyAgent();
|
|
102654
103682
|
const kAgent = Symbol("proxy agent");
|
|
102655
103683
|
const kClient = Symbol("proxy client");
|
|
102656
103684
|
const kProxyHeaders = Symbol("proxy headers");
|
|
@@ -102751,6 +103779,16 @@ function requireProxyAgent() {
|
|
|
102751
103779
|
const agentFactory = opts.factory || defaultAgentFactory;
|
|
102752
103780
|
const factory = (origin2, options) => {
|
|
102753
103781
|
const { protocol: protocol2 } = new URL(origin2);
|
|
103782
|
+
if (this[kProxy].protocol === "socks5:" || this[kProxy].protocol === "socks:") {
|
|
103783
|
+
return new Socks5ProxyAgent(this[kProxy].uri, {
|
|
103784
|
+
headers: this[kProxyHeaders],
|
|
103785
|
+
connect: connect2,
|
|
103786
|
+
factory: agentFactory,
|
|
103787
|
+
username: opts.username || username,
|
|
103788
|
+
password: opts.password || password,
|
|
103789
|
+
proxyTls: opts.proxyTls
|
|
103790
|
+
});
|
|
103791
|
+
}
|
|
102754
103792
|
if (!this[kTunnelProxy] && protocol2 === "http:" && this[kProxy].protocol === "http:") {
|
|
102755
103793
|
return new Http1ProxyWrapper(this[kProxy].uri, {
|
|
102756
103794
|
headers: this[kProxyHeaders],
|
|
@@ -102760,12 +103798,20 @@ function requireProxyAgent() {
|
|
|
102760
103798
|
}
|
|
102761
103799
|
return agentFactory(origin2, options);
|
|
102762
103800
|
};
|
|
102763
|
-
|
|
103801
|
+
if (protocol === "socks5:" || protocol === "socks:") {
|
|
103802
|
+
this[kClient] = null;
|
|
103803
|
+
} else {
|
|
103804
|
+
this[kClient] = clientFactory(url2, { connect: connect2 });
|
|
103805
|
+
}
|
|
102764
103806
|
this[kAgent] = new Agent({
|
|
102765
103807
|
...opts,
|
|
102766
103808
|
factory,
|
|
102767
103809
|
connect: async (opts2, callback) => {
|
|
102768
103810
|
var _a3;
|
|
103811
|
+
if (!this[kClient]) {
|
|
103812
|
+
callback(new InvalidArgumentError("Cannot establish tunnel connection without a proxy client"));
|
|
103813
|
+
return;
|
|
103814
|
+
}
|
|
102769
103815
|
let requestedPath = opts2.host;
|
|
102770
103816
|
if (!opts2.port) {
|
|
102771
103817
|
requestedPath += `:${defaultProtocolPort(opts2.protocol)}`;
|
|
@@ -102832,16 +103878,18 @@ function requireProxyAgent() {
|
|
|
102832
103878
|
);
|
|
102833
103879
|
}
|
|
102834
103880
|
[kClose]() {
|
|
102835
|
-
|
|
102836
|
-
|
|
102837
|
-
this[kClient].close()
|
|
102838
|
-
|
|
103881
|
+
const promises2 = [this[kAgent].close()];
|
|
103882
|
+
if (this[kClient]) {
|
|
103883
|
+
promises2.push(this[kClient].close());
|
|
103884
|
+
}
|
|
103885
|
+
return Promise.all(promises2);
|
|
102839
103886
|
}
|
|
102840
103887
|
[kDestroy]() {
|
|
102841
|
-
|
|
102842
|
-
|
|
102843
|
-
this[kClient].destroy()
|
|
102844
|
-
|
|
103888
|
+
const promises2 = [this[kAgent].destroy()];
|
|
103889
|
+
if (this[kClient]) {
|
|
103890
|
+
promises2.push(this[kClient].destroy());
|
|
103891
|
+
}
|
|
103892
|
+
return Promise.all(promises2);
|
|
102845
103893
|
}
|
|
102846
103894
|
}
|
|
102847
103895
|
_ProxyAgent_instances = new WeakSet();
|
|
@@ -103011,7 +104059,7 @@ var hasRequiredRetryHandler;
|
|
|
103011
104059
|
function requireRetryHandler() {
|
|
103012
104060
|
if (hasRequiredRetryHandler) return retryHandler;
|
|
103013
104061
|
hasRequiredRetryHandler = 1;
|
|
103014
|
-
const assert2 = require$$0$
|
|
104062
|
+
const assert2 = require$$0$3;
|
|
103015
104063
|
const { kRetryHandlerDefaultRetry } = requireSymbols();
|
|
103016
104064
|
const { RequestRetryError } = requireErrors();
|
|
103017
104065
|
const WrapHandler = requireWrapHandler();
|
|
@@ -103382,7 +104430,7 @@ function requireH2cClient() {
|
|
|
103382
104430
|
"h2c-client: Only h2c protocol is supported"
|
|
103383
104431
|
);
|
|
103384
104432
|
}
|
|
103385
|
-
const {
|
|
104433
|
+
const { maxConcurrentStreams, pipelining, ...opts } = clientOpts ?? {};
|
|
103386
104434
|
let defaultMaxConcurrentStreams = 100;
|
|
103387
104435
|
let defaultPipelining = 100;
|
|
103388
104436
|
if (maxConcurrentStreams != null && Number.isInteger(maxConcurrentStreams) && maxConcurrentStreams > 0) {
|
|
@@ -103415,8 +104463,8 @@ var hasRequiredReadable;
|
|
|
103415
104463
|
function requireReadable() {
|
|
103416
104464
|
if (hasRequiredReadable) return readable;
|
|
103417
104465
|
hasRequiredReadable = 1;
|
|
103418
|
-
const assert2 = require$$0$
|
|
103419
|
-
const { Readable } = require$$0$
|
|
104466
|
+
const assert2 = require$$0$3;
|
|
104467
|
+
const { Readable } = require$$0$4;
|
|
103420
104468
|
const { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = requireErrors();
|
|
103421
104469
|
const util2 = requireUtil$5();
|
|
103422
104470
|
const { ReadableStreamFrom } = requireUtil$5();
|
|
@@ -103817,8 +104865,8 @@ var hasRequiredApiRequest;
|
|
|
103817
104865
|
function requireApiRequest() {
|
|
103818
104866
|
if (hasRequiredApiRequest) return apiRequest.exports;
|
|
103819
104867
|
hasRequiredApiRequest = 1;
|
|
103820
|
-
const assert2 = require$$0$
|
|
103821
|
-
const { AsyncResource } = require$$1$
|
|
104868
|
+
const assert2 = require$$0$3;
|
|
104869
|
+
const { AsyncResource } = require$$1$3;
|
|
103822
104870
|
const { Readable } = requireReadable();
|
|
103823
104871
|
const { InvalidArgumentError, RequestAbortedError } = requireErrors();
|
|
103824
104872
|
const util2 = requireUtil$5();
|
|
@@ -103834,7 +104882,7 @@ function requireApiRequest() {
|
|
|
103834
104882
|
if (typeof callback !== "function") {
|
|
103835
104883
|
throw new InvalidArgumentError("invalid callback");
|
|
103836
104884
|
}
|
|
103837
|
-
if (highWaterMark && (
|
|
104885
|
+
if (highWaterMark != null && (!Number.isFinite(highWaterMark) || highWaterMark < 0)) {
|
|
103838
104886
|
throw new InvalidArgumentError("invalid highWaterMark");
|
|
103839
104887
|
}
|
|
103840
104888
|
if (signal && typeof signal.on !== "function" && typeof signal.addEventListener !== "function") {
|
|
@@ -104048,9 +105096,9 @@ var hasRequiredApiStream;
|
|
|
104048
105096
|
function requireApiStream() {
|
|
104049
105097
|
if (hasRequiredApiStream) return apiStream;
|
|
104050
105098
|
hasRequiredApiStream = 1;
|
|
104051
|
-
const assert2 = require$$0$
|
|
104052
|
-
const { finished } = require$$0$
|
|
104053
|
-
const { AsyncResource } = require$$1$
|
|
105099
|
+
const assert2 = require$$0$3;
|
|
105100
|
+
const { finished } = require$$0$4;
|
|
105101
|
+
const { AsyncResource } = require$$1$3;
|
|
104054
105102
|
const { InvalidArgumentError, InvalidReturnValueError } = requireErrors();
|
|
104055
105103
|
const util2 = requireUtil$5();
|
|
104056
105104
|
const { addSignal, removeSignal } = requireAbortSignal();
|
|
@@ -104214,9 +105262,9 @@ function requireApiPipeline() {
|
|
|
104214
105262
|
Readable,
|
|
104215
105263
|
Duplex,
|
|
104216
105264
|
PassThrough: PassThrough2
|
|
104217
|
-
} = require$$0$
|
|
104218
|
-
const assert2 = require$$0$
|
|
104219
|
-
const { AsyncResource } = require$$1$
|
|
105265
|
+
} = require$$0$4;
|
|
105266
|
+
const assert2 = require$$0$3;
|
|
105267
|
+
const { AsyncResource } = require$$1$3;
|
|
104220
105268
|
const {
|
|
104221
105269
|
InvalidArgumentError,
|
|
104222
105270
|
InvalidReturnValueError,
|
|
@@ -104412,8 +105460,8 @@ function requireApiUpgrade() {
|
|
|
104412
105460
|
if (hasRequiredApiUpgrade) return apiUpgrade;
|
|
104413
105461
|
hasRequiredApiUpgrade = 1;
|
|
104414
105462
|
const { InvalidArgumentError, SocketError } = requireErrors();
|
|
104415
|
-
const { AsyncResource } = require$$1$
|
|
104416
|
-
const assert2 = require$$0$
|
|
105463
|
+
const { AsyncResource } = require$$1$3;
|
|
105464
|
+
const assert2 = require$$0$3;
|
|
104417
105465
|
const util2 = requireUtil$5();
|
|
104418
105466
|
const { kHTTP2Stream } = requireSymbols();
|
|
104419
105467
|
const { addSignal, removeSignal } = requireAbortSignal();
|
|
@@ -104505,8 +105553,8 @@ var hasRequiredApiConnect;
|
|
|
104505
105553
|
function requireApiConnect() {
|
|
104506
105554
|
if (hasRequiredApiConnect) return apiConnect;
|
|
104507
105555
|
hasRequiredApiConnect = 1;
|
|
104508
|
-
const assert2 = require$$0$
|
|
104509
|
-
const { AsyncResource } = require$$1$
|
|
105556
|
+
const assert2 = require$$0$3;
|
|
105557
|
+
const { AsyncResource } = require$$1$3;
|
|
104510
105558
|
const { InvalidArgumentError, SocketError } = requireErrors();
|
|
104511
105559
|
const util2 = requireUtil$5();
|
|
104512
105560
|
const { addSignal, removeSignal } = requireAbortSignal();
|
|
@@ -104660,7 +105708,8 @@ function requireMockSymbols() {
|
|
|
104660
105708
|
kMockAgentAddCallHistoryLog: Symbol("mock agent add call history log"),
|
|
104661
105709
|
kMockAgentIsCallHistoryEnabled: Symbol("mock agent is call history enabled"),
|
|
104662
105710
|
kMockAgentAcceptsNonStandardSearchParameters: Symbol("mock agent accepts non standard search parameters"),
|
|
104663
|
-
kMockCallHistoryAddLog: Symbol("mock call history add log")
|
|
105711
|
+
kMockCallHistoryAddLog: Symbol("mock call history add log"),
|
|
105712
|
+
kTotalDispatchCount: Symbol("total dispatch count")
|
|
104664
105713
|
};
|
|
104665
105714
|
return mockSymbols;
|
|
104666
105715
|
}
|
|
@@ -104675,7 +105724,8 @@ function requireMockUtils() {
|
|
|
104675
105724
|
kMockAgent,
|
|
104676
105725
|
kOriginalDispatch,
|
|
104677
105726
|
kOrigin,
|
|
104678
|
-
kGetNetConnect
|
|
105727
|
+
kGetNetConnect,
|
|
105728
|
+
kTotalDispatchCount
|
|
104679
105729
|
} = requireMockSymbols();
|
|
104680
105730
|
const { serializePathWithQuery } = requireUtil$5();
|
|
104681
105731
|
const { STATUS_CODES } = require$$2$1;
|
|
@@ -104835,6 +105885,7 @@ function requireMockUtils() {
|
|
|
104835
105885
|
const replyData = typeof data === "function" ? { callback: data } : { ...data };
|
|
104836
105886
|
const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } };
|
|
104837
105887
|
mockDispatches.push(newMockDispatch);
|
|
105888
|
+
mockDispatches[kTotalDispatchCount] = (mockDispatches[kTotalDispatchCount] || 0) + 1;
|
|
104838
105889
|
return newMockDispatch;
|
|
104839
105890
|
}
|
|
104840
105891
|
function deleteMockDispatch(mockDispatches, key) {
|
|
@@ -104969,13 +106020,16 @@ function requireMockUtils() {
|
|
|
104969
106020
|
} catch (error2) {
|
|
104970
106021
|
if (error2.code === "UND_MOCK_ERR_MOCK_NOT_MATCHED") {
|
|
104971
106022
|
const netConnect = agent2[kGetNetConnect]();
|
|
106023
|
+
const totalInterceptsCount = this[kDispatches][kTotalDispatchCount] || this[kDispatches].length;
|
|
106024
|
+
const pendingInterceptsCount = this[kDispatches].filter(({ consumed }) => !consumed).length;
|
|
106025
|
+
const interceptsMessage = `, ${pendingInterceptsCount} interceptor(s) remaining out of ${totalInterceptsCount} defined`;
|
|
104972
106026
|
if (netConnect === false) {
|
|
104973
|
-
throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`);
|
|
106027
|
+
throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)${interceptsMessage}`);
|
|
104974
106028
|
}
|
|
104975
106029
|
if (checkNetConnect(netConnect, origin)) {
|
|
104976
106030
|
originalDispatch.call(this, opts, handler);
|
|
104977
106031
|
} else {
|
|
104978
|
-
throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`);
|
|
106032
|
+
throw new MockNotMatchedError(`${error2.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)${interceptsMessage}`);
|
|
104979
106033
|
}
|
|
104980
106034
|
} else {
|
|
104981
106035
|
throw error2;
|
|
@@ -105270,13 +106324,13 @@ function requireMockCallHistory() {
|
|
|
105270
106324
|
hasRequiredMockCallHistory = 1;
|
|
105271
106325
|
const { kMockCallHistoryAddLog } = requireMockSymbols();
|
|
105272
106326
|
const { InvalidArgumentError } = requireErrors();
|
|
105273
|
-
function handleFilterCallsWithOptions(criteria, options, handler, store) {
|
|
106327
|
+
function handleFilterCallsWithOptions(criteria, options, handler, store, allLogs) {
|
|
105274
106328
|
switch (options.operator) {
|
|
105275
106329
|
case "OR":
|
|
105276
|
-
store.push(...handler(criteria));
|
|
106330
|
+
store.push(...handler(criteria, allLogs));
|
|
105277
106331
|
return store;
|
|
105278
106332
|
case "AND":
|
|
105279
|
-
return handler
|
|
106333
|
+
return handler(criteria, store);
|
|
105280
106334
|
default:
|
|
105281
106335
|
throw new InvalidArgumentError("options.operator must to be a case insensitive string equal to 'OR' or 'AND'");
|
|
105282
106336
|
}
|
|
@@ -105295,14 +106349,14 @@ function requireMockCallHistory() {
|
|
|
105295
106349
|
return finalOptions;
|
|
105296
106350
|
}
|
|
105297
106351
|
function makeFilterCalls(parameterName) {
|
|
105298
|
-
return (parameterValue) => {
|
|
106352
|
+
return (parameterValue, logs) => {
|
|
105299
106353
|
if (typeof parameterValue === "string" || parameterValue == null) {
|
|
105300
|
-
return
|
|
106354
|
+
return logs.filter((log) => {
|
|
105301
106355
|
return log[parameterName] === parameterValue;
|
|
105302
106356
|
});
|
|
105303
106357
|
}
|
|
105304
106358
|
if (parameterValue instanceof RegExp) {
|
|
105305
|
-
return
|
|
106359
|
+
return logs.filter((log) => {
|
|
105306
106360
|
return parameterValue.test(log[parameterName]);
|
|
105307
106361
|
});
|
|
105308
106362
|
}
|
|
@@ -105417,30 +106471,30 @@ function requireMockCallHistory() {
|
|
|
105417
106471
|
return this.logs;
|
|
105418
106472
|
}
|
|
105419
106473
|
const finalOptions = { operator: "OR", ...buildAndValidateFilterCallsOptions(options) };
|
|
105420
|
-
let maybeDuplicatedLogsFiltered = [];
|
|
106474
|
+
let maybeDuplicatedLogsFiltered = finalOptions.operator === "AND" ? this.logs : [];
|
|
105421
106475
|
if ("protocol" in criteria) {
|
|
105422
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.protocol, finalOptions, this.filterCallsByProtocol, maybeDuplicatedLogsFiltered);
|
|
106476
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.protocol, finalOptions, this.filterCallsByProtocol, maybeDuplicatedLogsFiltered, this.logs);
|
|
105423
106477
|
}
|
|
105424
106478
|
if ("host" in criteria) {
|
|
105425
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.host, finalOptions, this.filterCallsByHost, maybeDuplicatedLogsFiltered);
|
|
106479
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.host, finalOptions, this.filterCallsByHost, maybeDuplicatedLogsFiltered, this.logs);
|
|
105426
106480
|
}
|
|
105427
106481
|
if ("port" in criteria) {
|
|
105428
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.port, finalOptions, this.filterCallsByPort, maybeDuplicatedLogsFiltered);
|
|
106482
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.port, finalOptions, this.filterCallsByPort, maybeDuplicatedLogsFiltered, this.logs);
|
|
105429
106483
|
}
|
|
105430
106484
|
if ("origin" in criteria) {
|
|
105431
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.origin, finalOptions, this.filterCallsByOrigin, maybeDuplicatedLogsFiltered);
|
|
106485
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.origin, finalOptions, this.filterCallsByOrigin, maybeDuplicatedLogsFiltered, this.logs);
|
|
105432
106486
|
}
|
|
105433
106487
|
if ("path" in criteria) {
|
|
105434
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.path, finalOptions, this.filterCallsByPath, maybeDuplicatedLogsFiltered);
|
|
106488
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.path, finalOptions, this.filterCallsByPath, maybeDuplicatedLogsFiltered, this.logs);
|
|
105435
106489
|
}
|
|
105436
106490
|
if ("hash" in criteria) {
|
|
105437
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.hash, finalOptions, this.filterCallsByHash, maybeDuplicatedLogsFiltered);
|
|
106491
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.hash, finalOptions, this.filterCallsByHash, maybeDuplicatedLogsFiltered, this.logs);
|
|
105438
106492
|
}
|
|
105439
106493
|
if ("fullUrl" in criteria) {
|
|
105440
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.fullUrl, finalOptions, this.filterCallsByFullUrl, maybeDuplicatedLogsFiltered);
|
|
106494
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.fullUrl, finalOptions, this.filterCallsByFullUrl, maybeDuplicatedLogsFiltered, this.logs);
|
|
105441
106495
|
}
|
|
105442
106496
|
if ("method" in criteria) {
|
|
105443
|
-
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.method, finalOptions, this.filterCallsByMethod, maybeDuplicatedLogsFiltered);
|
|
106497
|
+
maybeDuplicatedLogsFiltered = handleFilterCallsWithOptions(criteria.method, finalOptions, this.filterCallsByMethod, maybeDuplicatedLogsFiltered, this.logs);
|
|
105444
106498
|
}
|
|
105445
106499
|
const uniqLogsFiltered = [...new Set(maybeDuplicatedLogsFiltered)];
|
|
105446
106500
|
return uniqLogsFiltered;
|
|
@@ -105531,8 +106585,8 @@ var hasRequiredPendingInterceptorsFormatter;
|
|
|
105531
106585
|
function requirePendingInterceptorsFormatter() {
|
|
105532
106586
|
if (hasRequiredPendingInterceptorsFormatter) return pendingInterceptorsFormatter;
|
|
105533
106587
|
hasRequiredPendingInterceptorsFormatter = 1;
|
|
105534
|
-
const { Transform: Transform2 } = require$$0$
|
|
105535
|
-
const { Console } = require$$1$
|
|
106588
|
+
const { Transform: Transform2 } = require$$0$4;
|
|
106589
|
+
const { Console } = require$$1$4;
|
|
105536
106590
|
const PERSISTENT = process.versions.icu ? "✅" : "Y ";
|
|
105537
106591
|
const NOT_PERSISTENT = process.versions.icu ? "❌" : "N ";
|
|
105538
106592
|
pendingInterceptorsFormatter = class PendingInterceptorsFormatter {
|
|
@@ -106566,7 +107620,7 @@ function requireDecoratorHandler() {
|
|
|
106566
107620
|
var _handler, _onCompleteCalled, _onErrorCalled, _onResponseStartCalled, _a3;
|
|
106567
107621
|
if (hasRequiredDecoratorHandler) return decoratorHandler;
|
|
106568
107622
|
hasRequiredDecoratorHandler = 1;
|
|
106569
|
-
const assert2 = require$$0$
|
|
107623
|
+
const assert2 = require$$0$3;
|
|
106570
107624
|
const WrapHandler = requireWrapHandler();
|
|
106571
107625
|
decoratorHandler = (_a3 = class {
|
|
106572
107626
|
constructor(handler) {
|
|
@@ -106630,9 +107684,9 @@ function requireRedirectHandler() {
|
|
|
106630
107684
|
hasRequiredRedirectHandler = 1;
|
|
106631
107685
|
const util2 = requireUtil$5();
|
|
106632
107686
|
const { kBodyUsed } = requireSymbols();
|
|
106633
|
-
const assert2 = require$$0$
|
|
107687
|
+
const assert2 = require$$0$3;
|
|
106634
107688
|
const { InvalidArgumentError } = requireErrors();
|
|
106635
|
-
const EE = require$$
|
|
107689
|
+
const EE = require$$0$2;
|
|
106636
107690
|
const redirectableStatusCodes = [300, 301, 302, 303, 307, 308];
|
|
106637
107691
|
const kBody = Symbol("body");
|
|
106638
107692
|
const noop3 = () => {
|
|
@@ -106774,7 +107828,7 @@ function requireRedirectHandler() {
|
|
|
106774
107828
|
}
|
|
106775
107829
|
}
|
|
106776
107830
|
} else if (headers2 && typeof headers2 === "object") {
|
|
106777
|
-
const entries =
|
|
107831
|
+
const entries = util2.hasSafeIterator(headers2) ? headers2 : Object.entries(headers2);
|
|
106778
107832
|
for (const [key, value] of entries) {
|
|
106779
107833
|
if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {
|
|
106780
107834
|
ret.push(key, value);
|
|
@@ -107026,11 +108080,90 @@ function requireDns() {
|
|
|
107026
108080
|
var _maxItems, _records, _maxTTL, _maxItems2, _DNSInstance_instances, defaultLookup_fn, defaultPick_fn, _state, _opts, _dispatch, _origin, _controller, _newOrigin, _firstTry;
|
|
107027
108081
|
if (hasRequiredDns) return dns;
|
|
107028
108082
|
hasRequiredDns = 1;
|
|
107029
|
-
const { isIP } = require$$0$
|
|
107030
|
-
const { lookup } = require$$1$
|
|
108083
|
+
const { isIP } = require$$0$5;
|
|
108084
|
+
const { lookup } = require$$1$5;
|
|
107031
108085
|
const DecoratorHandler = requireDecoratorHandler();
|
|
107032
108086
|
const { InvalidArgumentError, InformationalError } = requireErrors();
|
|
107033
108087
|
const maxInt = Math.pow(2, 31) - 1;
|
|
108088
|
+
function hasSafeIterator(headers2) {
|
|
108089
|
+
const prototype = Object.getPrototypeOf(headers2);
|
|
108090
|
+
const ownIterator = Object.prototype.hasOwnProperty.call(headers2, Symbol.iterator);
|
|
108091
|
+
return ownIterator || prototype != null && prototype !== Object.prototype && typeof headers2[Symbol.iterator] === "function";
|
|
108092
|
+
}
|
|
108093
|
+
function isHostHeader(key) {
|
|
108094
|
+
return typeof key === "string" && key.toLowerCase() === "host";
|
|
108095
|
+
}
|
|
108096
|
+
function normalizeHeaders(headers2) {
|
|
108097
|
+
if (headers2 == null) {
|
|
108098
|
+
return null;
|
|
108099
|
+
}
|
|
108100
|
+
if (Array.isArray(headers2)) {
|
|
108101
|
+
if (headers2.length === 0 || !Array.isArray(headers2[0])) {
|
|
108102
|
+
return headers2;
|
|
108103
|
+
}
|
|
108104
|
+
const normalized = [];
|
|
108105
|
+
for (const header of headers2) {
|
|
108106
|
+
if (Array.isArray(header) && header.length === 2) {
|
|
108107
|
+
normalized.push(header[0], header[1]);
|
|
108108
|
+
} else {
|
|
108109
|
+
normalized.push(header);
|
|
108110
|
+
}
|
|
108111
|
+
}
|
|
108112
|
+
return normalized;
|
|
108113
|
+
}
|
|
108114
|
+
if (typeof headers2 === "object" && hasSafeIterator(headers2)) {
|
|
108115
|
+
const normalized = [];
|
|
108116
|
+
for (const header of headers2) {
|
|
108117
|
+
if (Array.isArray(header) && header.length === 2) {
|
|
108118
|
+
normalized.push(header[0], header[1]);
|
|
108119
|
+
} else {
|
|
108120
|
+
normalized.push(header);
|
|
108121
|
+
}
|
|
108122
|
+
}
|
|
108123
|
+
return normalized;
|
|
108124
|
+
}
|
|
108125
|
+
return headers2;
|
|
108126
|
+
}
|
|
108127
|
+
function hasHostHeader(headers2) {
|
|
108128
|
+
if (headers2 == null) {
|
|
108129
|
+
return false;
|
|
108130
|
+
}
|
|
108131
|
+
if (Array.isArray(headers2)) {
|
|
108132
|
+
if (headers2.length === 0) {
|
|
108133
|
+
return false;
|
|
108134
|
+
}
|
|
108135
|
+
for (let i = 0; i < headers2.length; i += 2) {
|
|
108136
|
+
if (isHostHeader(headers2[i])) {
|
|
108137
|
+
return true;
|
|
108138
|
+
}
|
|
108139
|
+
}
|
|
108140
|
+
return false;
|
|
108141
|
+
}
|
|
108142
|
+
if (typeof headers2 === "object") {
|
|
108143
|
+
for (const key in headers2) {
|
|
108144
|
+
if (isHostHeader(key)) {
|
|
108145
|
+
return true;
|
|
108146
|
+
}
|
|
108147
|
+
}
|
|
108148
|
+
}
|
|
108149
|
+
return false;
|
|
108150
|
+
}
|
|
108151
|
+
function withHostHeader(host, headers2) {
|
|
108152
|
+
const normalizedHeaders = normalizeHeaders(headers2);
|
|
108153
|
+
if (hasHostHeader(normalizedHeaders)) {
|
|
108154
|
+
return normalizedHeaders;
|
|
108155
|
+
}
|
|
108156
|
+
if (Array.isArray(normalizedHeaders)) {
|
|
108157
|
+
return ["host", host, ...normalizedHeaders];
|
|
108158
|
+
}
|
|
108159
|
+
if (normalizedHeaders && typeof normalizedHeaders === "object") {
|
|
108160
|
+
return {
|
|
108161
|
+
host,
|
|
108162
|
+
...normalizedHeaders
|
|
108163
|
+
};
|
|
108164
|
+
}
|
|
108165
|
+
return { host };
|
|
108166
|
+
}
|
|
107034
108167
|
class DNSStorage {
|
|
107035
108168
|
constructor(opts) {
|
|
107036
108169
|
__privateAdd(this, _maxItems, 0);
|
|
@@ -107296,7 +108429,8 @@ function requireDns() {
|
|
|
107296
108429
|
}
|
|
107297
108430
|
const dispatchOpts = {
|
|
107298
108431
|
...__privateGet(this, _opts),
|
|
107299
|
-
origin: `${__privateGet(this, _origin).protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}
|
|
108432
|
+
origin: `${__privateGet(this, _origin).protocol}//${ip.family === 6 ? `[${ip.address}]` : ip.address}${port}`,
|
|
108433
|
+
headers: withHostHeader(__privateGet(this, _origin).host, __privateGet(this, _opts).headers)
|
|
107300
108434
|
};
|
|
107301
108435
|
__privateGet(this, _dispatch).call(this, dispatchOpts, this);
|
|
107302
108436
|
return;
|
|
@@ -107379,10 +108513,7 @@ function requireDns() {
|
|
|
107379
108513
|
servername: origin.hostname,
|
|
107380
108514
|
// For SNI on TLS
|
|
107381
108515
|
origin: newOrigin.origin,
|
|
107382
|
-
headers:
|
|
107383
|
-
host: origin.host,
|
|
107384
|
-
...origDispatchOpts.headers
|
|
107385
|
-
}
|
|
108516
|
+
headers: withHostHeader(origin.host, origDispatchOpts.headers)
|
|
107386
108517
|
};
|
|
107387
108518
|
dispatch2(
|
|
107388
108519
|
dispatchOpts,
|
|
@@ -107405,7 +108536,8 @@ function requireCache$2() {
|
|
|
107405
108536
|
hasRequiredCache$2 = 1;
|
|
107406
108537
|
const {
|
|
107407
108538
|
safeHTTPMethods,
|
|
107408
|
-
pathHasQueryOrFragment
|
|
108539
|
+
pathHasQueryOrFragment,
|
|
108540
|
+
hasSafeIterator
|
|
107409
108541
|
} = requireUtil$5();
|
|
107410
108542
|
const { serializePathWithQuery } = requireUtil$5();
|
|
107411
108543
|
function makeCacheKey(opts) {
|
|
@@ -107413,7 +108545,7 @@ function requireCache$2() {
|
|
|
107413
108545
|
throw new Error("opts.origin is undefined");
|
|
107414
108546
|
}
|
|
107415
108547
|
let fullPath = opts.path || "/";
|
|
107416
|
-
if (opts.query && !pathHasQueryOrFragment(
|
|
108548
|
+
if (opts.query && !pathHasQueryOrFragment(fullPath)) {
|
|
107417
108549
|
fullPath = serializePathWithQuery(fullPath, opts.query);
|
|
107418
108550
|
}
|
|
107419
108551
|
return {
|
|
@@ -107427,22 +108559,23 @@ function requireCache$2() {
|
|
|
107427
108559
|
let headers2;
|
|
107428
108560
|
if (opts.headers == null) {
|
|
107429
108561
|
headers2 = {};
|
|
107430
|
-
} else if (typeof opts.headers
|
|
108562
|
+
} else if (typeof opts.headers === "object") {
|
|
107431
108563
|
headers2 = {};
|
|
107432
|
-
|
|
107433
|
-
|
|
107434
|
-
|
|
108564
|
+
if (hasSafeIterator(opts.headers)) {
|
|
108565
|
+
for (const x2 of opts.headers) {
|
|
108566
|
+
if (!Array.isArray(x2)) {
|
|
108567
|
+
throw new Error("opts.headers is not a valid header map");
|
|
108568
|
+
}
|
|
108569
|
+
const [key, val] = x2;
|
|
108570
|
+
if (typeof key !== "string" || typeof val !== "string") {
|
|
108571
|
+
throw new Error("opts.headers is not a valid header map");
|
|
108572
|
+
}
|
|
108573
|
+
headers2[key.toLowerCase()] = val;
|
|
107435
108574
|
}
|
|
107436
|
-
|
|
107437
|
-
|
|
107438
|
-
|
|
108575
|
+
} else {
|
|
108576
|
+
for (const key of Object.keys(opts.headers)) {
|
|
108577
|
+
headers2[key.toLowerCase()] = opts.headers[key];
|
|
107439
108578
|
}
|
|
107440
|
-
headers2[key.toLowerCase()] = val;
|
|
107441
|
-
}
|
|
107442
|
-
} else if (typeof opts.headers === "object") {
|
|
107443
|
-
headers2 = {};
|
|
107444
|
-
for (const key of Object.keys(opts.headers)) {
|
|
107445
|
-
headers2[key.toLowerCase()] = opts.headers[key];
|
|
107446
108579
|
}
|
|
107447
108580
|
} else {
|
|
107448
108581
|
throw new Error("opts.headers is not an object");
|
|
@@ -107639,18 +108772,17 @@ function requireCache$2() {
|
|
|
107639
108772
|
}
|
|
107640
108773
|
}
|
|
107641
108774
|
function makeDeduplicationKey(cacheKey, excludeHeaders) {
|
|
107642
|
-
|
|
108775
|
+
const headers2 = {};
|
|
107643
108776
|
if (cacheKey.headers) {
|
|
107644
108777
|
const sortedHeaders = Object.keys(cacheKey.headers).sort();
|
|
107645
108778
|
for (const header of sortedHeaders) {
|
|
107646
108779
|
if (excludeHeaders == null ? void 0 : excludeHeaders.has(header.toLowerCase())) {
|
|
107647
108780
|
continue;
|
|
107648
108781
|
}
|
|
107649
|
-
|
|
107650
|
-
key += `:${header}=${Array.isArray(value) ? value.join(",") : value}`;
|
|
108782
|
+
headers2[header] = cacheKey.headers[header];
|
|
107651
108783
|
}
|
|
107652
108784
|
}
|
|
107653
|
-
return
|
|
108785
|
+
return JSON.stringify([cacheKey.origin, cacheKey.method, cacheKey.path, headers2]);
|
|
107654
108786
|
}
|
|
107655
108787
|
cache$2 = {
|
|
107656
108788
|
makeCacheKey,
|
|
@@ -108274,7 +109406,7 @@ function requireCacheHandler() {
|
|
|
108274
109406
|
return downstreamOnHeaders();
|
|
108275
109407
|
}
|
|
108276
109408
|
const cacheControlDirectives = cacheControlHeader ? parseCacheControlHeader(cacheControlHeader) : {};
|
|
108277
|
-
if (!canCacheResponse(__privateGet(this, _cacheType), statusCode, resHeaders, cacheControlDirectives)) {
|
|
109409
|
+
if (!canCacheResponse(__privateGet(this, _cacheType), statusCode, resHeaders, cacheControlDirectives, __privateGet(this, _cacheKey).headers)) {
|
|
108278
109410
|
return downstreamOnHeaders();
|
|
108279
109411
|
}
|
|
108280
109412
|
const now2 = Date.now();
|
|
@@ -108420,7 +109552,7 @@ function requireCacheHandler() {
|
|
|
108420
109552
|
_store = new WeakMap();
|
|
108421
109553
|
_handler = new WeakMap();
|
|
108422
109554
|
_writeStream = new WeakMap();
|
|
108423
|
-
function canCacheResponse(cacheType, statusCode, resHeaders, cacheControlDirectives) {
|
|
109555
|
+
function canCacheResponse(cacheType, statusCode, resHeaders, cacheControlDirectives, reqHeaders) {
|
|
108424
109556
|
var _a3;
|
|
108425
109557
|
if (statusCode < 200 || NOT_UNDERSTOOD_STATUS_CODES.includes(statusCode)) {
|
|
108426
109558
|
return false;
|
|
@@ -108438,8 +109570,11 @@ function requireCacheHandler() {
|
|
|
108438
109570
|
if ((_a3 = resHeaders.vary) == null ? void 0 : _a3.includes("*")) {
|
|
108439
109571
|
return false;
|
|
108440
109572
|
}
|
|
108441
|
-
if (
|
|
108442
|
-
if (!cacheControlDirectives.public
|
|
109573
|
+
if (reqHeaders == null ? void 0 : reqHeaders.authorization) {
|
|
109574
|
+
if (!cacheControlDirectives.public && !cacheControlDirectives["s-maxage"] && !cacheControlDirectives["must-revalidate"]) {
|
|
109575
|
+
return false;
|
|
109576
|
+
}
|
|
109577
|
+
if (typeof reqHeaders.authorization !== "string") {
|
|
108443
109578
|
return false;
|
|
108444
109579
|
}
|
|
108445
109580
|
if (Array.isArray(cacheControlDirectives["no-cache"]) && cacheControlDirectives["no-cache"].includes("authorization")) {
|
|
@@ -108508,9 +109643,13 @@ function requireCacheHandler() {
|
|
|
108508
109643
|
if (cacheControlDirectives["stale-if-error"]) {
|
|
108509
109644
|
staleIfError = staleAt + cacheControlDirectives["stale-if-error"] * 1e3;
|
|
108510
109645
|
}
|
|
108511
|
-
if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity) {
|
|
109646
|
+
if (cacheControlDirectives.immutable && staleWhileRevalidate === -Infinity && staleIfError === -Infinity) {
|
|
108512
109647
|
immutable = now2 + 31536e6;
|
|
108513
109648
|
}
|
|
109649
|
+
if (staleWhileRevalidate === -Infinity && staleIfError === -Infinity && immutable === -Infinity) {
|
|
109650
|
+
const freshnessLifetime = staleAt - now2;
|
|
109651
|
+
return staleAt + freshnessLifetime;
|
|
109652
|
+
}
|
|
108514
109653
|
return Math.max(staleAt, staleWhileRevalidate, staleIfError, immutable);
|
|
108515
109654
|
}
|
|
108516
109655
|
function stripNecessaryHeaders(resHeaders, cacheControlDirectives) {
|
|
@@ -108560,8 +109699,8 @@ function requireMemoryCacheStore() {
|
|
|
108560
109699
|
var _maxCount, _maxSize2, _maxEntrySize, _size2, _count, _entries, _hasEmittedMaxSizeEvent;
|
|
108561
109700
|
if (hasRequiredMemoryCacheStore) return memoryCacheStore;
|
|
108562
109701
|
hasRequiredMemoryCacheStore = 1;
|
|
108563
|
-
const { Writable } = require$$0$
|
|
108564
|
-
const { EventEmitter: EventEmitter2 } = require$$
|
|
109702
|
+
const { Writable } = require$$0$4;
|
|
109703
|
+
const { EventEmitter: EventEmitter2 } = require$$0$2;
|
|
108565
109704
|
const { assertCacheKey, assertCacheValue } = requireCache$2();
|
|
108566
109705
|
class MemoryCacheStore extends EventEmitter2 {
|
|
108567
109706
|
/**
|
|
@@ -108745,7 +109884,7 @@ function requireCacheRevalidationHandler() {
|
|
|
108745
109884
|
var _successful, _callback, _handler, _context, _allowErrorStatusCodes;
|
|
108746
109885
|
if (hasRequiredCacheRevalidationHandler) return cacheRevalidationHandler;
|
|
108747
109886
|
hasRequiredCacheRevalidationHandler = 1;
|
|
108748
|
-
const assert2 = require$$0$
|
|
109887
|
+
const assert2 = require$$0$3;
|
|
108749
109888
|
class CacheRevalidationHandler {
|
|
108750
109889
|
/**
|
|
108751
109890
|
* @param {(boolean) => void} callback Function to call if the cached value is valid
|
|
@@ -108842,8 +109981,8 @@ var hasRequiredCache$1;
|
|
|
108842
109981
|
function requireCache$1() {
|
|
108843
109982
|
if (hasRequiredCache$1) return cache$1;
|
|
108844
109983
|
hasRequiredCache$1 = 1;
|
|
108845
|
-
const assert2 = require$$0$
|
|
108846
|
-
const { Readable } = require$$0$
|
|
109984
|
+
const assert2 = require$$0$3;
|
|
109985
|
+
const { Readable } = require$$0$4;
|
|
108847
109986
|
const util2 = requireUtil$5();
|
|
108848
109987
|
const CacheHandler = requireCacheHandler();
|
|
108849
109988
|
const MemoryCacheStore = requireMemoryCacheStore();
|
|
@@ -109186,7 +110325,7 @@ function requireDecompress() {
|
|
|
109186
110325
|
if (hasRequiredDecompress) return decompress;
|
|
109187
110326
|
hasRequiredDecompress = 1;
|
|
109188
110327
|
const { createInflate, createGunzip, createBrotliDecompress, createZstdDecompress } = require$$3$1;
|
|
109189
|
-
const { pipeline } = require$$0$
|
|
110328
|
+
const { pipeline } = require$$0$4;
|
|
109190
110329
|
const DecoratorHandler = requireDecoratorHandler();
|
|
109191
110330
|
const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
|
|
109192
110331
|
const supportedEncodings = {
|
|
@@ -109403,28 +110542,31 @@ function requireDecompress() {
|
|
|
109403
110542
|
var deduplicationHandler;
|
|
109404
110543
|
var hasRequiredDeduplicationHandler;
|
|
109405
110544
|
function requireDeduplicationHandler() {
|
|
109406
|
-
var _primaryHandler, _waitingHandlers,
|
|
110545
|
+
var _primaryHandler, _waitingHandlers, _maxBufferSize, _statusCode, _headers, _statusMessage, _aborted, _responseStarted, _responseDataStarted, _completed, _controller, _onComplete, _DeduplicationHandler_instances, createWaitingHandler_fn, bufferWaitingChunk_fn, flushWaitingHandler_fn, errorWaitingHandler_fn, pruneDoneWaitingHandlers_fn;
|
|
109407
110546
|
if (hasRequiredDeduplicationHandler) return deduplicationHandler;
|
|
109408
110547
|
hasRequiredDeduplicationHandler = 1;
|
|
110548
|
+
const { RequestAbortedError } = requireErrors();
|
|
110549
|
+
const DEFAULT_MAX_BUFFER_SIZE = 5 * 1024 * 1024;
|
|
109409
110550
|
class DeduplicationHandler {
|
|
109410
110551
|
/**
|
|
109411
110552
|
* @param {DispatchHandler} primaryHandler The primary handler
|
|
109412
110553
|
* @param {() => void} onComplete Callback when request completes
|
|
110554
|
+
* @param {number} [maxBufferSize] Maximum paused buffer size per waiting handler
|
|
109413
110555
|
*/
|
|
109414
|
-
constructor(primaryHandler, onComplete) {
|
|
110556
|
+
constructor(primaryHandler, onComplete, maxBufferSize = DEFAULT_MAX_BUFFER_SIZE) {
|
|
109415
110557
|
__privateAdd(this, _DeduplicationHandler_instances);
|
|
109416
110558
|
/**
|
|
109417
110559
|
* @type {DispatchHandler}
|
|
109418
110560
|
*/
|
|
109419
110561
|
__privateAdd(this, _primaryHandler);
|
|
109420
110562
|
/**
|
|
109421
|
-
* @type {
|
|
110563
|
+
* @type {WaitingHandler[]}
|
|
109422
110564
|
*/
|
|
109423
110565
|
__privateAdd(this, _waitingHandlers, []);
|
|
109424
110566
|
/**
|
|
109425
|
-
* @type {
|
|
110567
|
+
* @type {number}
|
|
109426
110568
|
*/
|
|
109427
|
-
__privateAdd(this,
|
|
110569
|
+
__privateAdd(this, _maxBufferSize, DEFAULT_MAX_BUFFER_SIZE);
|
|
109428
110570
|
/**
|
|
109429
110571
|
* @type {number}
|
|
109430
110572
|
*/
|
|
@@ -109441,6 +110583,18 @@ function requireDeduplicationHandler() {
|
|
|
109441
110583
|
* @type {boolean}
|
|
109442
110584
|
*/
|
|
109443
110585
|
__privateAdd(this, _aborted, false);
|
|
110586
|
+
/**
|
|
110587
|
+
* @type {boolean}
|
|
110588
|
+
*/
|
|
110589
|
+
__privateAdd(this, _responseStarted, false);
|
|
110590
|
+
/**
|
|
110591
|
+
* @type {boolean}
|
|
110592
|
+
*/
|
|
110593
|
+
__privateAdd(this, _responseDataStarted, false);
|
|
110594
|
+
/**
|
|
110595
|
+
* @type {boolean}
|
|
110596
|
+
*/
|
|
110597
|
+
__privateAdd(this, _completed, false);
|
|
109444
110598
|
/**
|
|
109445
110599
|
* @type {import('../../types/dispatcher.d.ts').default.DispatchController | null}
|
|
109446
110600
|
*/
|
|
@@ -109451,16 +110605,48 @@ function requireDeduplicationHandler() {
|
|
|
109451
110605
|
__privateAdd(this, _onComplete, null);
|
|
109452
110606
|
__privateSet(this, _primaryHandler, primaryHandler);
|
|
109453
110607
|
__privateSet(this, _onComplete, onComplete);
|
|
110608
|
+
__privateSet(this, _maxBufferSize, maxBufferSize);
|
|
109454
110609
|
}
|
|
109455
110610
|
/**
|
|
109456
|
-
* Add a waiting handler that will receive
|
|
110611
|
+
* Add a waiting handler that will receive response events.
|
|
110612
|
+
* Returns false if deduplication can no longer safely attach this handler.
|
|
110613
|
+
*
|
|
109457
110614
|
* @param {DispatchHandler} handler
|
|
110615
|
+
* @returns {boolean}
|
|
109458
110616
|
*/
|
|
109459
110617
|
addWaitingHandler(handler) {
|
|
109460
|
-
|
|
110618
|
+
var _a3, _b2;
|
|
110619
|
+
if (__privateGet(this, _completed) || __privateGet(this, _responseDataStarted)) {
|
|
110620
|
+
return false;
|
|
110621
|
+
}
|
|
110622
|
+
const waitingHandler = __privateMethod(this, _DeduplicationHandler_instances, createWaitingHandler_fn).call(this, handler);
|
|
110623
|
+
const waitingController = waitingHandler.controller;
|
|
110624
|
+
try {
|
|
110625
|
+
(_a3 = handler.onRequestStart) == null ? void 0 : _a3.call(handler, waitingController, null);
|
|
110626
|
+
if (waitingController.aborted) {
|
|
110627
|
+
waitingHandler.done = true;
|
|
110628
|
+
return true;
|
|
110629
|
+
}
|
|
110630
|
+
if (__privateGet(this, _responseStarted)) {
|
|
110631
|
+
(_b2 = handler.onResponseStart) == null ? void 0 : _b2.call(
|
|
110632
|
+
handler,
|
|
110633
|
+
waitingController,
|
|
110634
|
+
__privateGet(this, _statusCode),
|
|
110635
|
+
__privateGet(this, _headers),
|
|
110636
|
+
__privateGet(this, _statusMessage)
|
|
110637
|
+
);
|
|
110638
|
+
}
|
|
110639
|
+
} catch {
|
|
110640
|
+
waitingHandler.done = true;
|
|
110641
|
+
return true;
|
|
110642
|
+
}
|
|
110643
|
+
if (!waitingController.aborted) {
|
|
110644
|
+
__privateGet(this, _waitingHandlers).push(waitingHandler);
|
|
110645
|
+
}
|
|
110646
|
+
return true;
|
|
109461
110647
|
}
|
|
109462
110648
|
/**
|
|
109463
|
-
* @param {()
|
|
110649
|
+
* @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
|
|
109464
110650
|
* @param {any} context
|
|
109465
110651
|
*/
|
|
109466
110652
|
onRequestStart(controller, context) {
|
|
@@ -109485,30 +110671,100 @@ function requireDeduplicationHandler() {
|
|
|
109485
110671
|
* @param {string} statusMessage
|
|
109486
110672
|
*/
|
|
109487
110673
|
onResponseStart(controller, statusCode, headers2, statusMessage) {
|
|
109488
|
-
var _a3, _b2;
|
|
110674
|
+
var _a3, _b2, _c2;
|
|
110675
|
+
__privateSet(this, _responseStarted, true);
|
|
109489
110676
|
__privateSet(this, _statusCode, statusCode);
|
|
109490
110677
|
__privateSet(this, _headers, headers2);
|
|
109491
110678
|
__privateSet(this, _statusMessage, statusMessage);
|
|
109492
110679
|
(_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseStart) == null ? void 0 : _b2.call(_a3, controller, statusCode, headers2, statusMessage);
|
|
110680
|
+
for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
|
|
110681
|
+
const { handler, controller: waitingController } = waitingHandler;
|
|
110682
|
+
if (waitingHandler.done || waitingController.aborted) {
|
|
110683
|
+
waitingHandler.done = true;
|
|
110684
|
+
continue;
|
|
110685
|
+
}
|
|
110686
|
+
try {
|
|
110687
|
+
(_c2 = handler.onResponseStart) == null ? void 0 : _c2.call(
|
|
110688
|
+
handler,
|
|
110689
|
+
waitingController,
|
|
110690
|
+
statusCode,
|
|
110691
|
+
headers2,
|
|
110692
|
+
statusMessage
|
|
110693
|
+
);
|
|
110694
|
+
} catch {
|
|
110695
|
+
}
|
|
110696
|
+
if (waitingController.aborted) {
|
|
110697
|
+
waitingHandler.done = true;
|
|
110698
|
+
}
|
|
110699
|
+
}
|
|
110700
|
+
__privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
|
|
109493
110701
|
}
|
|
109494
110702
|
/**
|
|
109495
110703
|
* @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
|
|
109496
110704
|
* @param {Buffer} chunk
|
|
109497
110705
|
*/
|
|
109498
110706
|
onResponseData(controller, chunk) {
|
|
109499
|
-
var _a3, _b2;
|
|
109500
|
-
__privateGet(this,
|
|
110707
|
+
var _a3, _b2, _c2;
|
|
110708
|
+
if (__privateGet(this, _aborted) || __privateGet(this, _completed)) {
|
|
110709
|
+
return;
|
|
110710
|
+
}
|
|
110711
|
+
__privateSet(this, _responseDataStarted, true);
|
|
109501
110712
|
(_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseData) == null ? void 0 : _b2.call(_a3, controller, chunk);
|
|
110713
|
+
for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
|
|
110714
|
+
const { handler, controller: waitingController } = waitingHandler;
|
|
110715
|
+
if (waitingHandler.done || waitingController.aborted) {
|
|
110716
|
+
waitingHandler.done = true;
|
|
110717
|
+
continue;
|
|
110718
|
+
}
|
|
110719
|
+
if (waitingController.paused) {
|
|
110720
|
+
__privateMethod(this, _DeduplicationHandler_instances, bufferWaitingChunk_fn).call(this, waitingHandler, chunk);
|
|
110721
|
+
continue;
|
|
110722
|
+
}
|
|
110723
|
+
try {
|
|
110724
|
+
(_c2 = handler.onResponseData) == null ? void 0 : _c2.call(handler, waitingController, chunk);
|
|
110725
|
+
} catch {
|
|
110726
|
+
}
|
|
110727
|
+
if (waitingController.aborted) {
|
|
110728
|
+
waitingHandler.done = true;
|
|
110729
|
+
waitingHandler.bufferedChunks = [];
|
|
110730
|
+
waitingHandler.bufferedBytes = 0;
|
|
110731
|
+
}
|
|
110732
|
+
}
|
|
110733
|
+
__privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
|
|
109502
110734
|
}
|
|
109503
110735
|
/**
|
|
109504
110736
|
* @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
|
|
109505
110737
|
* @param {object} trailers
|
|
109506
110738
|
*/
|
|
109507
110739
|
onResponseEnd(controller, trailers) {
|
|
109508
|
-
var _a3, _b2, _c2;
|
|
110740
|
+
var _a3, _b2, _c2, _d, _e2;
|
|
110741
|
+
if (__privateGet(this, _aborted) || __privateGet(this, _completed)) {
|
|
110742
|
+
return;
|
|
110743
|
+
}
|
|
110744
|
+
__privateSet(this, _completed, true);
|
|
109509
110745
|
(_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseEnd) == null ? void 0 : _b2.call(_a3, controller, trailers);
|
|
109510
|
-
|
|
109511
|
-
|
|
110746
|
+
for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
|
|
110747
|
+
if (waitingHandler.done || waitingHandler.controller.aborted) {
|
|
110748
|
+
waitingHandler.done = true;
|
|
110749
|
+
continue;
|
|
110750
|
+
}
|
|
110751
|
+
__privateMethod(this, _DeduplicationHandler_instances, flushWaitingHandler_fn).call(this, waitingHandler);
|
|
110752
|
+
if (waitingHandler.done || waitingHandler.controller.aborted) {
|
|
110753
|
+
waitingHandler.done = true;
|
|
110754
|
+
continue;
|
|
110755
|
+
}
|
|
110756
|
+
if (waitingHandler.controller.paused && waitingHandler.bufferedChunks.length > 0) {
|
|
110757
|
+
waitingHandler.pendingTrailers = trailers;
|
|
110758
|
+
continue;
|
|
110759
|
+
}
|
|
110760
|
+
try {
|
|
110761
|
+
(_d = (_c2 = waitingHandler.handler).onResponseEnd) == null ? void 0 : _d.call(_c2, waitingHandler.controller, trailers);
|
|
110762
|
+
} catch {
|
|
110763
|
+
}
|
|
110764
|
+
waitingHandler.done = true;
|
|
110765
|
+
}
|
|
110766
|
+
__privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
|
|
110767
|
+
(_e2 = __privateGet(this, _onComplete)) == null ? void 0 : _e2.call(this);
|
|
109512
110768
|
}
|
|
109513
110769
|
/**
|
|
109514
110770
|
* @param {import('../../types/dispatcher.d.ts').default.DispatchController} controller
|
|
@@ -109516,103 +110772,155 @@ function requireDeduplicationHandler() {
|
|
|
109516
110772
|
*/
|
|
109517
110773
|
onResponseError(controller, err) {
|
|
109518
110774
|
var _a3, _b2, _c2;
|
|
110775
|
+
if (__privateGet(this, _completed)) {
|
|
110776
|
+
return;
|
|
110777
|
+
}
|
|
109519
110778
|
__privateSet(this, _aborted, true);
|
|
110779
|
+
__privateSet(this, _completed, true);
|
|
109520
110780
|
(_b2 = (_a3 = __privateGet(this, _primaryHandler)).onResponseError) == null ? void 0 : _b2.call(_a3, controller, err);
|
|
109521
|
-
|
|
110781
|
+
for (const waitingHandler of __privateGet(this, _waitingHandlers)) {
|
|
110782
|
+
__privateMethod(this, _DeduplicationHandler_instances, errorWaitingHandler_fn).call(this, waitingHandler, err);
|
|
110783
|
+
}
|
|
110784
|
+
__privateSet(this, _waitingHandlers, []);
|
|
109522
110785
|
(_c2 = __privateGet(this, _onComplete)) == null ? void 0 : _c2.call(this);
|
|
109523
110786
|
}
|
|
109524
110787
|
}
|
|
109525
110788
|
_primaryHandler = new WeakMap();
|
|
109526
110789
|
_waitingHandlers = new WeakMap();
|
|
109527
|
-
|
|
110790
|
+
_maxBufferSize = new WeakMap();
|
|
109528
110791
|
_statusCode = new WeakMap();
|
|
109529
110792
|
_headers = new WeakMap();
|
|
109530
110793
|
_statusMessage = new WeakMap();
|
|
109531
110794
|
_aborted = new WeakMap();
|
|
110795
|
+
_responseStarted = new WeakMap();
|
|
110796
|
+
_responseDataStarted = new WeakMap();
|
|
110797
|
+
_completed = new WeakMap();
|
|
109532
110798
|
_controller = new WeakMap();
|
|
109533
110799
|
_onComplete = new WeakMap();
|
|
109534
110800
|
_DeduplicationHandler_instances = new WeakSet();
|
|
109535
110801
|
/**
|
|
109536
|
-
*
|
|
110802
|
+
* @param {DispatchHandler} handler
|
|
110803
|
+
* @returns {WaitingHandler}
|
|
109537
110804
|
*/
|
|
109538
|
-
|
|
109539
|
-
|
|
109540
|
-
|
|
109541
|
-
|
|
109542
|
-
|
|
109543
|
-
|
|
109544
|
-
|
|
109545
|
-
|
|
109546
|
-
|
|
109547
|
-
|
|
109548
|
-
|
|
109549
|
-
|
|
109550
|
-
|
|
109551
|
-
|
|
109552
|
-
|
|
109553
|
-
|
|
109554
|
-
|
|
109555
|
-
|
|
109556
|
-
|
|
109557
|
-
}
|
|
109558
|
-
};
|
|
109559
|
-
try {
|
|
109560
|
-
(_a3 = handler.onRequestStart) == null ? void 0 : _a3.call(handler, waitingController, null);
|
|
109561
|
-
if (waitingController.aborted) {
|
|
109562
|
-
continue;
|
|
110805
|
+
createWaitingHandler_fn = function(handler) {
|
|
110806
|
+
const waitingHandler = {
|
|
110807
|
+
handler,
|
|
110808
|
+
controller: null,
|
|
110809
|
+
bufferedChunks: [],
|
|
110810
|
+
bufferedBytes: 0,
|
|
110811
|
+
pendingTrailers: null,
|
|
110812
|
+
done: false
|
|
110813
|
+
};
|
|
110814
|
+
const state = {
|
|
110815
|
+
aborted: false,
|
|
110816
|
+
paused: false,
|
|
110817
|
+
reason: null
|
|
110818
|
+
};
|
|
110819
|
+
waitingHandler.controller = {
|
|
110820
|
+
resume: () => {
|
|
110821
|
+
var _a3, _b2;
|
|
110822
|
+
if (state.aborted) {
|
|
110823
|
+
return;
|
|
109563
110824
|
}
|
|
109564
|
-
|
|
109565
|
-
|
|
109566
|
-
|
|
109567
|
-
|
|
109568
|
-
|
|
109569
|
-
|
|
109570
|
-
|
|
109571
|
-
|
|
109572
|
-
|
|
110825
|
+
state.paused = false;
|
|
110826
|
+
__privateMethod(this, _DeduplicationHandler_instances, flushWaitingHandler_fn).call(this, waitingHandler);
|
|
110827
|
+
if (__privateGet(this, _completed) && waitingHandler.pendingTrailers && waitingHandler.bufferedChunks.length === 0 && !state.paused && !state.aborted) {
|
|
110828
|
+
try {
|
|
110829
|
+
(_b2 = (_a3 = waitingHandler.handler).onResponseEnd) == null ? void 0 : _b2.call(_a3, waitingHandler.controller, waitingHandler.pendingTrailers);
|
|
110830
|
+
} catch {
|
|
110831
|
+
}
|
|
110832
|
+
waitingHandler.pendingTrailers = null;
|
|
110833
|
+
waitingHandler.done = true;
|
|
109573
110834
|
}
|
|
109574
|
-
|
|
109575
|
-
|
|
110835
|
+
__privateMethod(this, _DeduplicationHandler_instances, pruneDoneWaitingHandlers_fn).call(this);
|
|
110836
|
+
},
|
|
110837
|
+
pause: () => {
|
|
110838
|
+
if (!state.aborted) {
|
|
110839
|
+
state.paused = true;
|
|
109576
110840
|
}
|
|
109577
|
-
|
|
109578
|
-
|
|
110841
|
+
},
|
|
110842
|
+
get paused() {
|
|
110843
|
+
return state.paused;
|
|
110844
|
+
},
|
|
110845
|
+
get aborted() {
|
|
110846
|
+
return state.aborted;
|
|
110847
|
+
},
|
|
110848
|
+
get reason() {
|
|
110849
|
+
return state.reason;
|
|
110850
|
+
},
|
|
110851
|
+
abort: (reason) => {
|
|
110852
|
+
state.aborted = true;
|
|
110853
|
+
state.reason = reason ?? null;
|
|
110854
|
+
waitingHandler.done = true;
|
|
110855
|
+
waitingHandler.pendingTrailers = null;
|
|
110856
|
+
waitingHandler.bufferedChunks = [];
|
|
110857
|
+
waitingHandler.bufferedBytes = 0;
|
|
109579
110858
|
}
|
|
110859
|
+
};
|
|
110860
|
+
return waitingHandler;
|
|
110861
|
+
};
|
|
110862
|
+
/**
|
|
110863
|
+
* @param {WaitingHandler} waitingHandler
|
|
110864
|
+
* @param {Buffer} chunk
|
|
110865
|
+
*/
|
|
110866
|
+
bufferWaitingChunk_fn = function(waitingHandler, chunk) {
|
|
110867
|
+
if (waitingHandler.done || waitingHandler.controller.aborted) {
|
|
110868
|
+
waitingHandler.done = true;
|
|
110869
|
+
waitingHandler.bufferedChunks = [];
|
|
110870
|
+
waitingHandler.bufferedBytes = 0;
|
|
110871
|
+
return;
|
|
110872
|
+
}
|
|
110873
|
+
const bufferedChunk = Buffer.from(chunk);
|
|
110874
|
+
waitingHandler.bufferedChunks.push(bufferedChunk);
|
|
110875
|
+
waitingHandler.bufferedBytes += bufferedChunk.length;
|
|
110876
|
+
if (waitingHandler.bufferedBytes > __privateGet(this, _maxBufferSize)) {
|
|
110877
|
+
const err = new RequestAbortedError(`Deduplicated waiting handler exceeded maxBufferSize (${__privateGet(this, _maxBufferSize)} bytes) while paused`);
|
|
110878
|
+
__privateMethod(this, _DeduplicationHandler_instances, errorWaitingHandler_fn).call(this, waitingHandler, err);
|
|
109580
110879
|
}
|
|
109581
|
-
__privateSet(this, _waitingHandlers, []);
|
|
109582
|
-
__privateSet(this, _chunks, []);
|
|
109583
110880
|
};
|
|
109584
110881
|
/**
|
|
109585
|
-
*
|
|
109586
|
-
* @param {Error} err
|
|
110882
|
+
* @param {WaitingHandler} waitingHandler
|
|
109587
110883
|
*/
|
|
109588
|
-
|
|
109589
|
-
var _a3
|
|
109590
|
-
|
|
109591
|
-
|
|
109592
|
-
|
|
109593
|
-
|
|
109594
|
-
pause() {
|
|
109595
|
-
},
|
|
109596
|
-
get paused() {
|
|
109597
|
-
return false;
|
|
109598
|
-
},
|
|
109599
|
-
get aborted() {
|
|
109600
|
-
return true;
|
|
109601
|
-
},
|
|
109602
|
-
get reason() {
|
|
109603
|
-
return err;
|
|
109604
|
-
},
|
|
109605
|
-
abort() {
|
|
109606
|
-
}
|
|
109607
|
-
};
|
|
110884
|
+
flushWaitingHandler_fn = function(waitingHandler) {
|
|
110885
|
+
var _a3;
|
|
110886
|
+
const { handler, controller } = waitingHandler;
|
|
110887
|
+
while (!waitingHandler.done && !controller.aborted && !controller.paused && waitingHandler.bufferedChunks.length > 0) {
|
|
110888
|
+
const bufferedChunk = waitingHandler.bufferedChunks.shift();
|
|
110889
|
+
waitingHandler.bufferedBytes -= bufferedChunk.length;
|
|
109608
110890
|
try {
|
|
109609
|
-
(_a3 = handler.
|
|
109610
|
-
(_b2 = handler.onResponseError) == null ? void 0 : _b2.call(handler, waitingController, err);
|
|
110891
|
+
(_a3 = handler.onResponseData) == null ? void 0 : _a3.call(handler, controller, bufferedChunk);
|
|
109611
110892
|
} catch {
|
|
109612
110893
|
}
|
|
110894
|
+
if (controller.aborted) {
|
|
110895
|
+
waitingHandler.done = true;
|
|
110896
|
+
waitingHandler.pendingTrailers = null;
|
|
110897
|
+
waitingHandler.bufferedChunks = [];
|
|
110898
|
+
waitingHandler.bufferedBytes = 0;
|
|
110899
|
+
break;
|
|
110900
|
+
}
|
|
109613
110901
|
}
|
|
109614
|
-
|
|
109615
|
-
|
|
110902
|
+
};
|
|
110903
|
+
/**
|
|
110904
|
+
* @param {WaitingHandler} waitingHandler
|
|
110905
|
+
* @param {Error} err
|
|
110906
|
+
*/
|
|
110907
|
+
errorWaitingHandler_fn = function(waitingHandler, err) {
|
|
110908
|
+
var _a3, _b2;
|
|
110909
|
+
if (waitingHandler.done) {
|
|
110910
|
+
return;
|
|
110911
|
+
}
|
|
110912
|
+
waitingHandler.done = true;
|
|
110913
|
+
waitingHandler.pendingTrailers = null;
|
|
110914
|
+
waitingHandler.bufferedChunks = [];
|
|
110915
|
+
waitingHandler.bufferedBytes = 0;
|
|
110916
|
+
try {
|
|
110917
|
+
waitingHandler.controller.abort(err);
|
|
110918
|
+
(_b2 = (_a3 = waitingHandler.handler).onResponseError) == null ? void 0 : _b2.call(_a3, waitingHandler.controller, err);
|
|
110919
|
+
} catch {
|
|
110920
|
+
}
|
|
110921
|
+
};
|
|
110922
|
+
pruneDoneWaitingHandlers_fn = function() {
|
|
110923
|
+
__privateSet(this, _waitingHandlers, __privateGet(this, _waitingHandlers).filter((waitingHandler) => waitingHandler.done === false));
|
|
109616
110924
|
};
|
|
109617
110925
|
deduplicationHandler = DeduplicationHandler;
|
|
109618
110926
|
return deduplicationHandler;
|
|
@@ -109622,7 +110930,7 @@ var hasRequiredDeduplicate;
|
|
|
109622
110930
|
function requireDeduplicate() {
|
|
109623
110931
|
if (hasRequiredDeduplicate) return deduplicate;
|
|
109624
110932
|
hasRequiredDeduplicate = 1;
|
|
109625
|
-
const diagnosticsChannel = require$$0$
|
|
110933
|
+
const diagnosticsChannel = require$$0$6;
|
|
109626
110934
|
const util2 = requireUtil$5();
|
|
109627
110935
|
const DeduplicationHandler = requireDeduplicationHandler();
|
|
109628
110936
|
const { normalizeHeaders, makeCacheKey, makeDeduplicationKey } = requireCache$2();
|
|
@@ -109631,7 +110939,8 @@ function requireDeduplicate() {
|
|
|
109631
110939
|
const {
|
|
109632
110940
|
methods = ["GET"],
|
|
109633
110941
|
skipHeaderNames = [],
|
|
109634
|
-
excludeHeaderNames = []
|
|
110942
|
+
excludeHeaderNames = [],
|
|
110943
|
+
maxBufferSize = 5 * 1024 * 1024
|
|
109635
110944
|
} = opts;
|
|
109636
110945
|
if (typeof opts !== "object" || opts === null) {
|
|
109637
110946
|
throw new TypeError(`expected type of opts to be an Object, got ${opts === null ? "null" : typeof opts}`);
|
|
@@ -109650,6 +110959,9 @@ function requireDeduplicate() {
|
|
|
109650
110959
|
if (!Array.isArray(excludeHeaderNames)) {
|
|
109651
110960
|
throw new TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof excludeHeaderNames}`);
|
|
109652
110961
|
}
|
|
110962
|
+
if (!Number.isFinite(maxBufferSize) || maxBufferSize <= 0) {
|
|
110963
|
+
throw new TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${maxBufferSize}`);
|
|
110964
|
+
}
|
|
109653
110965
|
const skipHeaderNamesSet = new Set(skipHeaderNames.map((name2) => name2.toLowerCase()));
|
|
109654
110966
|
const excludeHeaderNamesSet = new Set(excludeHeaderNames.map((name2) => name2.toLowerCase()));
|
|
109655
110967
|
const pendingRequests = /* @__PURE__ */ new Map();
|
|
@@ -109673,8 +110985,10 @@ function requireDeduplicate() {
|
|
|
109673
110985
|
const dedupeKey = makeDeduplicationKey(cacheKey, excludeHeaderNamesSet);
|
|
109674
110986
|
const pendingHandler = pendingRequests.get(dedupeKey);
|
|
109675
110987
|
if (pendingHandler) {
|
|
109676
|
-
pendingHandler.addWaitingHandler(handler)
|
|
109677
|
-
|
|
110988
|
+
if (pendingHandler.addWaitingHandler(handler)) {
|
|
110989
|
+
return true;
|
|
110990
|
+
}
|
|
110991
|
+
return dispatch2(opts2, handler);
|
|
109678
110992
|
}
|
|
109679
110993
|
const deduplicationHandler2 = new DeduplicationHandler(
|
|
109680
110994
|
handler,
|
|
@@ -109683,7 +110997,8 @@ function requireDeduplicate() {
|
|
|
109683
110997
|
if (pendingRequestsChannel.hasSubscribers) {
|
|
109684
110998
|
pendingRequestsChannel.publish({ size: pendingRequests.size, key: dedupeKey, type: "removed" });
|
|
109685
110999
|
}
|
|
109686
|
-
}
|
|
111000
|
+
},
|
|
111001
|
+
maxBufferSize
|
|
109687
111002
|
);
|
|
109688
111003
|
pendingRequests.set(dedupeKey, deduplicationHandler2);
|
|
109689
111004
|
if (pendingRequestsChannel.hasSubscribers) {
|
|
@@ -109701,7 +111016,7 @@ function requireSqliteCacheStore() {
|
|
|
109701
111016
|
var _maxEntrySize, _maxCount, _db, _getValuesQuery, _updateValueQuery, _insertValueQuery, _deleteExpiredValuesQuery, _deleteByUrlQuery, _countEntriesQuery, _deleteOldValuesQuery, _SqliteCacheStore_instances, prune_fn, makeValueUrl_fn, findValue_fn, _a3;
|
|
109702
111017
|
if (hasRequiredSqliteCacheStore) return sqliteCacheStore;
|
|
109703
111018
|
hasRequiredSqliteCacheStore = 1;
|
|
109704
|
-
const { Writable } = require$$0$
|
|
111019
|
+
const { Writable } = require$$0$4;
|
|
109705
111020
|
const { assertCacheKey, assertCacheValue } = requireCache$2();
|
|
109706
111021
|
let DatabaseSync;
|
|
109707
111022
|
const VERSION = 3;
|
|
@@ -109863,7 +111178,7 @@ function requireSqliteCacheStore() {
|
|
|
109863
111178
|
SELECT
|
|
109864
111179
|
id
|
|
109865
111180
|
FROM cacheInterceptorV${VERSION}
|
|
109866
|
-
ORDER BY cachedAt
|
|
111181
|
+
ORDER BY cachedAt ASC
|
|
109867
111182
|
LIMIT ?
|
|
109868
111183
|
)
|
|
109869
111184
|
`));
|
|
@@ -109918,7 +111233,6 @@ function requireSqliteCacheStore() {
|
|
|
109918
111233
|
existingValue.id
|
|
109919
111234
|
);
|
|
109920
111235
|
} else {
|
|
109921
|
-
__privateMethod(this, _SqliteCacheStore_instances, prune_fn).call(this);
|
|
109922
111236
|
__privateGet(this, _insertValueQuery).run(
|
|
109923
111237
|
url2,
|
|
109924
111238
|
key.method,
|
|
@@ -109933,6 +111247,7 @@ function requireSqliteCacheStore() {
|
|
|
109933
111247
|
value.cachedAt,
|
|
109934
111248
|
value.staleAt
|
|
109935
111249
|
);
|
|
111250
|
+
__privateMethod(this, _SqliteCacheStore_instances, prune_fn).call(this);
|
|
109936
111251
|
}
|
|
109937
111252
|
}
|
|
109938
111253
|
/**
|
|
@@ -110019,7 +111334,7 @@ function requireSqliteCacheStore() {
|
|
|
110019
111334
|
const now2 = Date.now();
|
|
110020
111335
|
for (const value of values) {
|
|
110021
111336
|
if (now2 >= value.deleteAt && !canBeExpired) {
|
|
110022
|
-
|
|
111337
|
+
continue;
|
|
110023
111338
|
}
|
|
110024
111339
|
let matches = true;
|
|
110025
111340
|
if (value.vary) {
|
|
@@ -110068,7 +111383,7 @@ function requireHeaders() {
|
|
|
110068
111383
|
isValidHeaderValue
|
|
110069
111384
|
} = requireUtil$4();
|
|
110070
111385
|
const { webidl } = requireWebidl();
|
|
110071
|
-
const assert2 = require$$0$
|
|
111386
|
+
const assert2 = require$$0$3;
|
|
110072
111387
|
const util2 = require$$3;
|
|
110073
111388
|
function isHTTPWhiteSpaceCharCode(code2) {
|
|
110074
111389
|
return code2 === 10 || code2 === 13 || code2 === 9 || code2 === 32;
|
|
@@ -110545,7 +111860,7 @@ function requireResponse() {
|
|
|
110545
111860
|
const { webidl } = requireWebidl();
|
|
110546
111861
|
const { URLSerializer } = requireDataUrl();
|
|
110547
111862
|
const { kConstruct } = requireSymbols();
|
|
110548
|
-
const assert2 = require$$0$
|
|
111863
|
+
const assert2 = require$$0$3;
|
|
110549
111864
|
const { isomorphicEncode, serializeJavascriptValueToJSONString } = requireInfra();
|
|
110550
111865
|
const textEncoder2 = new TextEncoder("utf-8");
|
|
110551
111866
|
const _Response = class _Response {
|
|
@@ -110977,8 +112292,8 @@ function requireRequest() {
|
|
|
110977
112292
|
const { webidl } = requireWebidl();
|
|
110978
112293
|
const { URLSerializer } = requireDataUrl();
|
|
110979
112294
|
const { kConstruct } = requireSymbols();
|
|
110980
|
-
const assert2 = require$$0$
|
|
110981
|
-
const { getMaxListeners, setMaxListeners, defaultMaxListeners } = require$$
|
|
112295
|
+
const assert2 = require$$0$3;
|
|
112296
|
+
const { getMaxListeners, setMaxListeners, defaultMaxListeners } = require$$0$2;
|
|
110982
112297
|
const kAbortController = Symbol("abortController");
|
|
110983
112298
|
const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
|
|
110984
112299
|
signal.removeEventListener("abort", abort);
|
|
@@ -111716,7 +113031,7 @@ var hasRequiredSubresourceIntegrity;
|
|
|
111716
113031
|
function requireSubresourceIntegrity() {
|
|
111717
113032
|
if (hasRequiredSubresourceIntegrity) return subresourceIntegrity;
|
|
111718
113033
|
hasRequiredSubresourceIntegrity = 1;
|
|
111719
|
-
const assert2 = require$$0$
|
|
113034
|
+
const assert2 = require$$0$3;
|
|
111720
113035
|
const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
|
|
111721
113036
|
const validSRIHashAlgorithmTokenSet = /* @__PURE__ */ new Map([["sha256", 0], ["sha384", 1], ["sha512", 2]]);
|
|
111722
113037
|
let crypto$1;
|
|
@@ -111900,7 +113215,7 @@ function requireFetch() {
|
|
|
111900
113215
|
includesCredentials,
|
|
111901
113216
|
isTraversableNavigable
|
|
111902
113217
|
} = requireUtil$4();
|
|
111903
|
-
const assert2 = require$$0$
|
|
113218
|
+
const assert2 = require$$0$3;
|
|
111904
113219
|
const { safelyExtractBody, extractBody } = requireBody();
|
|
111905
113220
|
const {
|
|
111906
113221
|
redirectStatusSet,
|
|
@@ -111909,8 +113224,8 @@ function requireFetch() {
|
|
|
111909
113224
|
requestBodyHeader,
|
|
111910
113225
|
subresourceSet
|
|
111911
113226
|
} = requireConstants$3();
|
|
111912
|
-
const EE = require$$
|
|
111913
|
-
const { Readable, pipeline, finished, isErrored, isReadable } = require$$0$
|
|
113227
|
+
const EE = require$$0$2;
|
|
113228
|
+
const { Readable, pipeline, finished, isErrored, isReadable } = require$$0$4;
|
|
111914
113229
|
const { addAbortListener, bufferToLowerCasedHeaderName } = requireUtil$5();
|
|
111915
113230
|
const { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = requireDataUrl();
|
|
111916
113231
|
const { getGlobalDispatcher } = requireGlobal();
|
|
@@ -112012,8 +113327,11 @@ function requireFetch() {
|
|
|
112012
113327
|
request: request2,
|
|
112013
113328
|
processResponseEndOfBody: handleFetchDone,
|
|
112014
113329
|
processResponse,
|
|
112015
|
-
dispatcher: getRequestDispatcher(requestObject)
|
|
113330
|
+
dispatcher: getRequestDispatcher(requestObject),
|
|
112016
113331
|
// undici
|
|
113332
|
+
// Keep requestObject alive to prevent its AbortController from being GC'd
|
|
113333
|
+
// See https://github.com/nodejs/undici/issues/4627
|
|
113334
|
+
requestObject
|
|
112017
113335
|
});
|
|
112018
113336
|
return p2.promise;
|
|
112019
113337
|
}
|
|
@@ -112083,8 +113401,10 @@ function requireFetch() {
|
|
|
112083
113401
|
processResponseEndOfBody,
|
|
112084
113402
|
processResponseConsumeBody,
|
|
112085
113403
|
useParallelQueue = false,
|
|
112086
|
-
dispatcher: dispatcher2 = getGlobalDispatcher()
|
|
113404
|
+
dispatcher: dispatcher2 = getGlobalDispatcher(),
|
|
112087
113405
|
// undici
|
|
113406
|
+
requestObject = null
|
|
113407
|
+
// Keep alive to prevent AbortController GC, see #4627
|
|
112088
113408
|
}) {
|
|
112089
113409
|
var _a3, _b2, _c2;
|
|
112090
113410
|
assert2(dispatcher2);
|
|
@@ -112108,7 +113428,9 @@ function requireFetch() {
|
|
|
112108
113428
|
processResponseConsumeBody,
|
|
112109
113429
|
processResponseEndOfBody,
|
|
112110
113430
|
taskDestination,
|
|
112111
|
-
crossOriginIsolatedCapability
|
|
113431
|
+
crossOriginIsolatedCapability,
|
|
113432
|
+
// Keep requestObject alive to prevent its AbortController from being GC'd
|
|
113433
|
+
requestObject
|
|
112112
113434
|
};
|
|
112113
113435
|
assert2(!request2.body || request2.body.stream);
|
|
112114
113436
|
if (request2.window === "client") {
|
|
@@ -112248,7 +113570,7 @@ function requireFetch() {
|
|
|
112248
113570
|
}
|
|
112249
113571
|
case "blob:": {
|
|
112250
113572
|
if (!resolveObjectURL) {
|
|
112251
|
-
resolveObjectURL = require$$0$
|
|
113573
|
+
resolveObjectURL = require$$0$7.resolveObjectURL;
|
|
112252
113574
|
}
|
|
112253
113575
|
const blobURLEntry = requestCurrentURL(request2);
|
|
112254
113576
|
if (blobURLEntry.search.length !== 0) {
|
|
@@ -112352,7 +113674,7 @@ function requireFetch() {
|
|
|
112352
113674
|
cacheState = "";
|
|
112353
113675
|
}
|
|
112354
113676
|
let responseStatus = 0;
|
|
112355
|
-
if (fetchParams.request.mode !== "
|
|
113677
|
+
if (fetchParams.request.mode !== "navigate" || !response2.hasCrossOriginRedirects) {
|
|
112356
113678
|
responseStatus = response2.status;
|
|
112357
113679
|
const mimeType = extractMimeType(response2.headersList);
|
|
112358
113680
|
if (mimeType !== "failure") {
|
|
@@ -112513,7 +113835,7 @@ function requireFetch() {
|
|
|
112513
113835
|
if (contentLength != null) {
|
|
112514
113836
|
contentLengthHeaderValue = isomorphicEncode(`${contentLength}`);
|
|
112515
113837
|
}
|
|
112516
|
-
if (contentLengthHeaderValue != null) {
|
|
113838
|
+
if (contentLengthHeaderValue != null && !httpRequest.headersList.contains("content-length", true)) {
|
|
112517
113839
|
httpRequest.headersList.append("content-length", contentLengthHeaderValue, true);
|
|
112518
113840
|
}
|
|
112519
113841
|
if (contentLength != null && httpRequest.keepalive) ;
|
|
@@ -112586,10 +113908,10 @@ function requireFetch() {
|
|
|
112586
113908
|
response2.rangeRequested = true;
|
|
112587
113909
|
}
|
|
112588
113910
|
response2.requestIncludesCredentials = includeCredentials;
|
|
112589
|
-
if (response2.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && isTraversableNavigable(request2.traversableForUserPrompts)) {
|
|
113911
|
+
if (response2.status === 401 && httpRequest.responseTainting !== "cors" && includeCredentials && (request2.useURLCredentials !== void 0 || isTraversableNavigable(request2.traversableForUserPrompts))) {
|
|
112590
113912
|
if (request2.body != null) {
|
|
112591
113913
|
if (request2.body.source == null) {
|
|
112592
|
-
return
|
|
113914
|
+
return response2;
|
|
112593
113915
|
}
|
|
112594
113916
|
request2.body = safelyExtractBody(request2.body.source)[0];
|
|
112595
113917
|
}
|
|
@@ -112792,9 +114114,11 @@ function requireFetch() {
|
|
|
112792
114114
|
function dispatch2({ body: body2 }) {
|
|
112793
114115
|
const url2 = requestCurrentURL(request2);
|
|
112794
114116
|
const agent2 = fetchParams.controller.dispatcher;
|
|
114117
|
+
const path2 = url2.pathname + url2.search;
|
|
114118
|
+
const hasTrailingQuestionMark = url2.search.length === 0 && url2.href[url2.href.length - url2.hash.length - 1] === "?";
|
|
112795
114119
|
return new Promise((resolve2, reject) => agent2.dispatch(
|
|
112796
114120
|
{
|
|
112797
|
-
path:
|
|
114121
|
+
path: hasTrailingQuestionMark ? `${path2}?` : path2,
|
|
112798
114122
|
origin: url2.origin,
|
|
112799
114123
|
method: request2.method,
|
|
112800
114124
|
body: agent2.isMockActive ? request2.body && (request2.body.source || request2.body.stream) : body2,
|
|
@@ -112825,7 +114149,15 @@ function requireFetch() {
|
|
|
112825
114149
|
}
|
|
112826
114150
|
const headersList = new HeadersList();
|
|
112827
114151
|
for (let i = 0; i < rawHeaders.length; i += 2) {
|
|
112828
|
-
|
|
114152
|
+
const nameStr = bufferToLowerCasedHeaderName(rawHeaders[i]);
|
|
114153
|
+
const value = rawHeaders[i + 1];
|
|
114154
|
+
if (Array.isArray(value) && !Buffer.isBuffer(rawHeaders[i + 1])) {
|
|
114155
|
+
for (const val of value) {
|
|
114156
|
+
headersList.append(nameStr, val.toString("latin1"), true);
|
|
114157
|
+
}
|
|
114158
|
+
} else {
|
|
114159
|
+
headersList.append(nameStr, value.toString("latin1"), true);
|
|
114160
|
+
}
|
|
112829
114161
|
}
|
|
112830
114162
|
const location2 = headersList.get("location", true);
|
|
112831
114163
|
this.body = new Readable({ read: resume });
|
|
@@ -112940,7 +114272,15 @@ function requireFetch() {
|
|
|
112940
114272
|
}
|
|
112941
114273
|
const headersList = new HeadersList();
|
|
112942
114274
|
for (let i = 0; i < rawHeaders.length; i += 2) {
|
|
112943
|
-
|
|
114275
|
+
const nameStr = bufferToLowerCasedHeaderName(rawHeaders[i]);
|
|
114276
|
+
const value = rawHeaders[i + 1];
|
|
114277
|
+
if (Array.isArray(value) && !Buffer.isBuffer(rawHeaders[i + 1])) {
|
|
114278
|
+
for (const val of value) {
|
|
114279
|
+
headersList.append(nameStr, val.toString("latin1"), true);
|
|
114280
|
+
}
|
|
114281
|
+
} else {
|
|
114282
|
+
headersList.append(nameStr, value.toString("latin1"), true);
|
|
114283
|
+
}
|
|
112944
114284
|
}
|
|
112945
114285
|
resolve2({
|
|
112946
114286
|
status,
|
|
@@ -112967,7 +114307,7 @@ var hasRequiredUtil$3;
|
|
|
112967
114307
|
function requireUtil$3() {
|
|
112968
114308
|
if (hasRequiredUtil$3) return util$3;
|
|
112969
114309
|
hasRequiredUtil$3 = 1;
|
|
112970
|
-
const assert2 = require$$0$
|
|
114310
|
+
const assert2 = require$$0$3;
|
|
112971
114311
|
const { URLSerializer } = requireDataUrl();
|
|
112972
114312
|
const { isValidHeaderName } = requireUtil$4();
|
|
112973
114313
|
function urlEquals(A2, B2, excludeFragment = false) {
|
|
@@ -112998,7 +114338,7 @@ function requireCache() {
|
|
|
112998
114338
|
var _relevantRequestResponseList, _Cache_instances, batchCacheOperations_fn, queryCache_fn, requestMatchesCachedItem_fn, internalMatchAll_fn;
|
|
112999
114339
|
if (hasRequiredCache) return cache;
|
|
113000
114340
|
hasRequiredCache = 1;
|
|
113001
|
-
const assert2 = require$$0$
|
|
114341
|
+
const assert2 = require$$0$3;
|
|
113002
114342
|
const { kConstruct } = requireSymbols();
|
|
113003
114343
|
const { urlEquals, getFieldValues } = requireUtil$3();
|
|
113004
114344
|
const { kEnumerableProperty, isDisturbed } = requireUtil$5();
|
|
@@ -113850,7 +115190,7 @@ function requireParse$1() {
|
|
|
113850
115190
|
const { collectASequenceOfCodePointsFast } = requireInfra();
|
|
113851
115191
|
const { maxNameValuePairSize, maxAttributeValueSize } = requireConstants$2();
|
|
113852
115192
|
const { isCTLExcludingHtab } = requireUtil$2();
|
|
113853
|
-
const assert2 = require$$0$
|
|
115193
|
+
const assert2 = require$$0$3;
|
|
113854
115194
|
const { unescape: qsUnescape } = require$$5$1;
|
|
113855
115195
|
function parseSetCookie(header) {
|
|
113856
115196
|
if (isCTLExcludingHtab(header)) {
|
|
@@ -114460,7 +115800,7 @@ function requireUtil$1() {
|
|
|
114460
115800
|
if (hasRequiredUtil$1) return util$1;
|
|
114461
115801
|
hasRequiredUtil$1 = 1;
|
|
114462
115802
|
const { states, opcodes } = requireConstants$1();
|
|
114463
|
-
const { isUtf8 } = require$$0$
|
|
115803
|
+
const { isUtf8 } = require$$0$7;
|
|
114464
115804
|
const { removeHTTPWhitespace } = requireDataUrl();
|
|
114465
115805
|
const { collectASequenceOfCodePointsFast } = requireInfra();
|
|
114466
115806
|
function isConnecting(readyState) {
|
|
@@ -114552,13 +115892,17 @@ function requireUtil$1() {
|
|
|
114552
115892
|
return extensionList;
|
|
114553
115893
|
}
|
|
114554
115894
|
function isValidClientWindowBits(value) {
|
|
115895
|
+
if (value.length === 0) {
|
|
115896
|
+
return false;
|
|
115897
|
+
}
|
|
114555
115898
|
for (let i = 0; i < value.length; i++) {
|
|
114556
115899
|
const byte = value.charCodeAt(i);
|
|
114557
115900
|
if (byte < 48 || byte > 57) {
|
|
114558
115901
|
return false;
|
|
114559
115902
|
}
|
|
114560
115903
|
}
|
|
114561
|
-
|
|
115904
|
+
const num = Number.parseInt(value, 10);
|
|
115905
|
+
return num >= 8 && num <= 15;
|
|
114562
115906
|
}
|
|
114563
115907
|
function getURLRecord(url2, baseURL) {
|
|
114564
115908
|
let urlRecord;
|
|
@@ -114745,7 +116089,7 @@ function requireConnection() {
|
|
|
114745
116089
|
const { Headers: Headers2, getHeadersList } = requireHeaders();
|
|
114746
116090
|
const { getDecodeSplit } = requireUtil$4();
|
|
114747
116091
|
const { WebsocketFrameSend } = requireFrame();
|
|
114748
|
-
const assert2 = require$$0$
|
|
116092
|
+
const assert2 = require$$0$3;
|
|
114749
116093
|
const { runtimeFeatures: runtimeFeatures2 } = requireRuntimeFeatures();
|
|
114750
116094
|
const crypto$1 = runtimeFeatures2.has("crypto") ? crypto : null;
|
|
114751
116095
|
let warningEmitted = false;
|
|
@@ -114894,23 +116238,36 @@ function requireConnection() {
|
|
|
114894
116238
|
var permessageDeflate;
|
|
114895
116239
|
var hasRequiredPermessageDeflate;
|
|
114896
116240
|
function requirePermessageDeflate() {
|
|
114897
|
-
var _inflate, _options2;
|
|
116241
|
+
var _inflate, _options2, _aborted, _currentCallback;
|
|
114898
116242
|
if (hasRequiredPermessageDeflate) return permessageDeflate;
|
|
114899
116243
|
hasRequiredPermessageDeflate = 1;
|
|
114900
116244
|
const { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require$$3$1;
|
|
114901
116245
|
const { isValidClientWindowBits } = requireUtil$1();
|
|
116246
|
+
const { MessageSizeExceededError } = requireErrors();
|
|
114902
116247
|
const tail = Buffer.from([0, 0, 255, 255]);
|
|
114903
116248
|
const kBuffer = Symbol("kBuffer");
|
|
114904
116249
|
const kLength = Symbol("kLength");
|
|
116250
|
+
const kDefaultMaxDecompressedSize = 4 * 1024 * 1024;
|
|
114905
116251
|
class PerMessageDeflate {
|
|
116252
|
+
/**
|
|
116253
|
+
* @param {Map<string, string>} extensions
|
|
116254
|
+
*/
|
|
114906
116255
|
constructor(extensions2) {
|
|
114907
116256
|
/** @type {import('node:zlib').InflateRaw} */
|
|
114908
116257
|
__privateAdd(this, _inflate);
|
|
114909
116258
|
__privateAdd(this, _options2, {});
|
|
116259
|
+
/** @type {boolean} */
|
|
116260
|
+
__privateAdd(this, _aborted, false);
|
|
116261
|
+
/** @type {Function|null} */
|
|
116262
|
+
__privateAdd(this, _currentCallback, null);
|
|
114910
116263
|
__privateGet(this, _options2).serverNoContextTakeover = extensions2.has("server_no_context_takeover");
|
|
114911
116264
|
__privateGet(this, _options2).serverMaxWindowBits = extensions2.get("server_max_window_bits");
|
|
114912
116265
|
}
|
|
114913
116266
|
decompress(chunk, fin, callback) {
|
|
116267
|
+
if (__privateGet(this, _aborted)) {
|
|
116268
|
+
callback(new MessageSizeExceededError());
|
|
116269
|
+
return;
|
|
116270
|
+
}
|
|
114914
116271
|
if (!__privateGet(this, _inflate)) {
|
|
114915
116272
|
let windowBits = Z_DEFAULT_WINDOWBITS;
|
|
114916
116273
|
if (__privateGet(this, _options2).serverMaxWindowBits) {
|
|
@@ -114920,32 +116277,59 @@ function requirePermessageDeflate() {
|
|
|
114920
116277
|
}
|
|
114921
116278
|
windowBits = Number.parseInt(__privateGet(this, _options2).serverMaxWindowBits);
|
|
114922
116279
|
}
|
|
114923
|
-
|
|
116280
|
+
try {
|
|
116281
|
+
__privateSet(this, _inflate, createInflateRaw({ windowBits }));
|
|
116282
|
+
} catch (err) {
|
|
116283
|
+
callback(err);
|
|
116284
|
+
return;
|
|
116285
|
+
}
|
|
114924
116286
|
__privateGet(this, _inflate)[kBuffer] = [];
|
|
114925
116287
|
__privateGet(this, _inflate)[kLength] = 0;
|
|
114926
116288
|
__privateGet(this, _inflate).on("data", (data) => {
|
|
114927
|
-
__privateGet(this,
|
|
116289
|
+
if (__privateGet(this, _aborted)) {
|
|
116290
|
+
return;
|
|
116291
|
+
}
|
|
114928
116292
|
__privateGet(this, _inflate)[kLength] += data.length;
|
|
116293
|
+
if (__privateGet(this, _inflate)[kLength] > kDefaultMaxDecompressedSize) {
|
|
116294
|
+
__privateSet(this, _aborted, true);
|
|
116295
|
+
__privateGet(this, _inflate).removeAllListeners();
|
|
116296
|
+
__privateGet(this, _inflate).destroy();
|
|
116297
|
+
__privateSet(this, _inflate, null);
|
|
116298
|
+
if (__privateGet(this, _currentCallback)) {
|
|
116299
|
+
const cb = __privateGet(this, _currentCallback);
|
|
116300
|
+
__privateSet(this, _currentCallback, null);
|
|
116301
|
+
cb(new MessageSizeExceededError());
|
|
116302
|
+
}
|
|
116303
|
+
return;
|
|
116304
|
+
}
|
|
116305
|
+
__privateGet(this, _inflate)[kBuffer].push(data);
|
|
114929
116306
|
});
|
|
114930
116307
|
__privateGet(this, _inflate).on("error", (err) => {
|
|
114931
116308
|
__privateSet(this, _inflate, null);
|
|
114932
116309
|
callback(err);
|
|
114933
116310
|
});
|
|
114934
116311
|
}
|
|
116312
|
+
__privateSet(this, _currentCallback, callback);
|
|
114935
116313
|
__privateGet(this, _inflate).write(chunk);
|
|
114936
116314
|
if (fin) {
|
|
114937
116315
|
__privateGet(this, _inflate).write(tail);
|
|
114938
116316
|
}
|
|
114939
116317
|
__privateGet(this, _inflate).flush(() => {
|
|
116318
|
+
if (__privateGet(this, _aborted) || !__privateGet(this, _inflate)) {
|
|
116319
|
+
return;
|
|
116320
|
+
}
|
|
114940
116321
|
const full = Buffer.concat(__privateGet(this, _inflate)[kBuffer], __privateGet(this, _inflate)[kLength]);
|
|
114941
116322
|
__privateGet(this, _inflate)[kBuffer].length = 0;
|
|
114942
116323
|
__privateGet(this, _inflate)[kLength] = 0;
|
|
116324
|
+
__privateSet(this, _currentCallback, null);
|
|
114943
116325
|
callback(null, full);
|
|
114944
116326
|
});
|
|
114945
116327
|
}
|
|
114946
116328
|
}
|
|
114947
116329
|
_inflate = new WeakMap();
|
|
114948
116330
|
_options2 = new WeakMap();
|
|
116331
|
+
_aborted = new WeakMap();
|
|
116332
|
+
_currentCallback = new WeakMap();
|
|
114949
116333
|
permessageDeflate = { PerMessageDeflate };
|
|
114950
116334
|
return permessageDeflate;
|
|
114951
116335
|
}
|
|
@@ -114955,8 +116339,8 @@ function requireReceiver() {
|
|
|
114955
116339
|
var _buffers, _fragmentsBytes, _byteOffset, _loop, _state, _info, _fragments, _extensions, _handler;
|
|
114956
116340
|
if (hasRequiredReceiver) return receiver;
|
|
114957
116341
|
hasRequiredReceiver = 1;
|
|
114958
|
-
const { Writable } = require$$0$
|
|
114959
|
-
const assert2 = require$$0$
|
|
116342
|
+
const { Writable } = require$$0$4;
|
|
116343
|
+
const assert2 = require$$0$3;
|
|
114960
116344
|
const { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = requireConstants$1();
|
|
114961
116345
|
const {
|
|
114962
116346
|
isValidStatusCode,
|
|
@@ -114970,7 +116354,12 @@ function requireReceiver() {
|
|
|
114970
116354
|
const { failWebsocketConnection } = requireConnection();
|
|
114971
116355
|
const { WebsocketFrameSend } = requireFrame();
|
|
114972
116356
|
const { PerMessageDeflate } = requirePermessageDeflate();
|
|
116357
|
+
const { MessageSizeExceededError } = requireErrors();
|
|
114973
116358
|
class ByteParser extends Writable {
|
|
116359
|
+
/**
|
|
116360
|
+
* @param {import('./websocket').Handler} handler
|
|
116361
|
+
* @param {Map<string, string>|null} extensions
|
|
116362
|
+
*/
|
|
114974
116363
|
constructor(handler, extensions2) {
|
|
114975
116364
|
super();
|
|
114976
116365
|
__privateAdd(this, _buffers, []);
|
|
@@ -115085,12 +116474,12 @@ function requireReceiver() {
|
|
|
115085
116474
|
}
|
|
115086
116475
|
const buffer = this.consume(8);
|
|
115087
116476
|
const upper = buffer.readUInt32BE(0);
|
|
115088
|
-
|
|
116477
|
+
const lower2 = buffer.readUInt32BE(4);
|
|
116478
|
+
if (upper !== 0 || lower2 > 2 ** 31 - 1) {
|
|
115089
116479
|
failWebsocketConnection(__privateGet(this, _handler), 1009, "Received payload length > 2^31 bytes.");
|
|
115090
116480
|
return;
|
|
115091
116481
|
}
|
|
115092
|
-
|
|
115093
|
-
__privateGet(this, _info).payloadLength = (upper << 8) + lower2;
|
|
116482
|
+
__privateGet(this, _info).payloadLength = lower2;
|
|
115094
116483
|
__privateSet(this, _state, parserStates.READ_DATA);
|
|
115095
116484
|
} else if (__privateGet(this, _state) === parserStates.READ_DATA) {
|
|
115096
116485
|
if (__privateGet(this, _byteOffset) < __privateGet(this, _info).payloadLength) {
|
|
@@ -115110,7 +116499,8 @@ function requireReceiver() {
|
|
|
115110
116499
|
} else {
|
|
115111
116500
|
__privateGet(this, _extensions).get("permessage-deflate").decompress(body2, __privateGet(this, _info).fin, (error2, data) => {
|
|
115112
116501
|
if (error2) {
|
|
115113
|
-
|
|
116502
|
+
const code2 = error2 instanceof MessageSizeExceededError ? 1009 : 1007;
|
|
116503
|
+
failWebsocketConnection(__privateGet(this, _handler), code2, error2.message);
|
|
115114
116504
|
return;
|
|
115115
116505
|
}
|
|
115116
116506
|
this.writeFragments(data);
|
|
@@ -115394,6 +116784,16 @@ function requireWebsocket() {
|
|
|
115394
116784
|
const { SendQueue } = requireSender();
|
|
115395
116785
|
const { WebsocketFrameSend } = requireFrame();
|
|
115396
116786
|
const { channels } = requireDiagnostics();
|
|
116787
|
+
function getSocketAddress(socket) {
|
|
116788
|
+
var _a3, _b2;
|
|
116789
|
+
if (typeof (socket == null ? void 0 : socket.address) === "function") {
|
|
116790
|
+
return socket.address();
|
|
116791
|
+
}
|
|
116792
|
+
if (typeof ((_b2 = (_a3 = socket == null ? void 0 : socket.session) == null ? void 0 : _a3.socket) == null ? void 0 : _b2.address) === "function") {
|
|
116793
|
+
return socket.session.socket.address();
|
|
116794
|
+
}
|
|
116795
|
+
return null;
|
|
116796
|
+
}
|
|
115397
116797
|
const _WebSocket = class _WebSocket extends EventTarget {
|
|
115398
116798
|
/**
|
|
115399
116799
|
* @param {string} url
|
|
@@ -115695,7 +117095,7 @@ function requireWebsocket() {
|
|
|
115695
117095
|
if (channels.open.hasSubscribers) {
|
|
115696
117096
|
const headers2 = response2.headersList.entries;
|
|
115697
117097
|
channels.open.publish({
|
|
115698
|
-
address: response2.socket
|
|
117098
|
+
address: getSocketAddress(response2.socket),
|
|
115699
117099
|
protocol: __privateGet(this, _protocol),
|
|
115700
117100
|
extensions: __privateGet(this, _extensions),
|
|
115701
117101
|
websocket: this,
|
|
@@ -116132,12 +117532,6 @@ function requireWebsocketstream() {
|
|
|
116132
117532
|
start: (controller) => {
|
|
116133
117533
|
__privateSet(this, _readableStreamController, controller);
|
|
116134
117534
|
},
|
|
116135
|
-
pull(controller) {
|
|
116136
|
-
let chunk;
|
|
116137
|
-
while (controller.desiredSize > 0 && (chunk = response2.socket.read()) !== null) {
|
|
116138
|
-
controller.enqueue(chunk);
|
|
116139
|
-
}
|
|
116140
|
-
},
|
|
116141
117535
|
cancel: (reason) => __privateMethod(this, _WebSocketStream_instances, cancel_fn).call(this, reason)
|
|
116142
117536
|
});
|
|
116143
117537
|
const writable = new WritableStream({
|
|
@@ -116164,7 +117558,7 @@ function requireWebsocketstream() {
|
|
|
116164
117558
|
try {
|
|
116165
117559
|
chunk = utf8Decode(data);
|
|
116166
117560
|
} catch {
|
|
116167
|
-
failWebsocketConnection(__privateGet(this, _handler), "Received invalid UTF-8 in text frame.");
|
|
117561
|
+
failWebsocketConnection(__privateGet(this, _handler), 1007, "Received invalid UTF-8 in text frame.");
|
|
116168
117562
|
return;
|
|
116169
117563
|
}
|
|
116170
117564
|
} else if (type === opcodes.BINARY) {
|
|
@@ -116288,7 +117682,7 @@ var hasRequiredEventsourceStream;
|
|
|
116288
117682
|
function requireEventsourceStream() {
|
|
116289
117683
|
if (hasRequiredEventsourceStream) return eventsourceStream;
|
|
116290
117684
|
hasRequiredEventsourceStream = 1;
|
|
116291
|
-
const { Transform: Transform2 } = require$$0$
|
|
117685
|
+
const { Transform: Transform2 } = require$$0$4;
|
|
116292
117686
|
const { isASCIINumber, isValidLastEventId } = requireUtil();
|
|
116293
117687
|
const BOM = [239, 187, 191];
|
|
116294
117688
|
const LF = 10;
|
|
@@ -116520,7 +117914,7 @@ function requireEventsource() {
|
|
|
116520
117914
|
var _events, _url2, _withCredentials, _readyState, _request, _controller, _dispatcher2, _state, _EventSource_instances, connect_fn, reconnect_fn;
|
|
116521
117915
|
if (hasRequiredEventsource) return eventsource;
|
|
116522
117916
|
hasRequiredEventsource = 1;
|
|
116523
|
-
const { pipeline } = require$$0$
|
|
117917
|
+
const { pipeline } = require$$0$4;
|
|
116524
117918
|
const { fetching } = requireFetch();
|
|
116525
117919
|
const { makeRequest: makeRequest2 } = requireRequest();
|
|
116526
117920
|
const { webidl } = requireWebidl();
|
|
@@ -116857,6 +118251,7 @@ function requireUndici() {
|
|
|
116857
118251
|
const RoundRobinPool = requireRoundRobinPool();
|
|
116858
118252
|
const Agent = requireAgent();
|
|
116859
118253
|
const ProxyAgent = requireProxyAgent();
|
|
118254
|
+
const Socks5ProxyAgent = requireSocks5ProxyAgent();
|
|
116860
118255
|
const EnvHttpProxyAgent = requireEnvHttpProxyAgent();
|
|
116861
118256
|
const RetryAgent = requireRetryAgent();
|
|
116862
118257
|
const H2CClient = requireH2cClient();
|
|
@@ -116883,6 +118278,7 @@ function requireUndici() {
|
|
|
116883
118278
|
module.exports.RoundRobinPool = RoundRobinPool;
|
|
116884
118279
|
module.exports.Agent = Agent;
|
|
116885
118280
|
module.exports.ProxyAgent = ProxyAgent;
|
|
118281
|
+
module.exports.Socks5ProxyAgent = Socks5ProxyAgent;
|
|
116886
118282
|
module.exports.EnvHttpProxyAgent = EnvHttpProxyAgent;
|
|
116887
118283
|
module.exports.RetryAgent = RetryAgent;
|
|
116888
118284
|
module.exports.H2CClient = H2CClient;
|
|
@@ -118649,7 +120045,7 @@ function createLocalWorld(args) {
|
|
|
118649
120045
|
const basedir = mergedConfig.dataDir;
|
|
118650
120046
|
const hooksDir = path$3.join(basedir, "hooks");
|
|
118651
120047
|
const taggedHookFiles = await listTaggedFiles(hooksDir, tag);
|
|
118652
|
-
const { HookSchema: HookSchema2 } = await import("./index-
|
|
120048
|
+
const { HookSchema: HookSchema2 } = await import("./index-BUU6Hdm_.js");
|
|
118653
120049
|
await Promise.all(taggedHookFiles.map(async (hookFile) => {
|
|
118654
120050
|
const hook = await readJSON(path$3.join(hooksDir, hookFile), HookSchema2);
|
|
118655
120051
|
if (hook == null ? void 0 : hook.token) {
|
|
@@ -118801,8 +120197,8 @@ function requireGetVercelOidcToken() {
|
|
|
118801
120197
|
}
|
|
118802
120198
|
try {
|
|
118803
120199
|
const [{ getTokenPayload, isExpired }, { refreshToken }] = await Promise.all([
|
|
118804
|
-
await import("./token-util-
|
|
118805
|
-
await import("./token-
|
|
120200
|
+
await import("./token-util-Bc0jltWL.js").then((n) => n.t),
|
|
120201
|
+
await import("./token-BaJALexf.js").then((n) => n.t)
|
|
118806
120202
|
]);
|
|
118807
120203
|
if (!token || isExpired(getTokenPayload(token), options == null ? void 0 : options.expirationBufferMs)) {
|
|
118808
120204
|
await refreshToken(options);
|
|
@@ -119366,7 +120762,10 @@ function requireDist() {
|
|
|
119366
120762
|
}
|
|
119367
120763
|
var distExports = requireDist();
|
|
119368
120764
|
let _dispatcher;
|
|
119369
|
-
function getDispatcher() {
|
|
120765
|
+
function getDispatcher(config2) {
|
|
120766
|
+
return (config2 == null ? void 0 : config2.dispatcher) ?? getDefaultDispatcher();
|
|
120767
|
+
}
|
|
120768
|
+
function getDefaultDispatcher() {
|
|
119370
120769
|
if (!_dispatcher) {
|
|
119371
120770
|
_dispatcher = new undiciExports.RetryAgent(new undiciExports.Agent({
|
|
119372
120771
|
connections: 8,
|
|
@@ -119427,7 +120826,7 @@ async function fetchRunKey(deploymentId, projectId, runId, options) {
|
|
|
119427
120826
|
Authorization: `Bearer ${token}`
|
|
119428
120827
|
},
|
|
119429
120828
|
// @ts-expect-error -- undici dispatcher is accepted by Node.js fetch but not in @types/node's RequestInit
|
|
119430
|
-
dispatcher: getDispatcher()
|
|
120829
|
+
dispatcher: getDispatcher({ dispatcher: options == null ? void 0 : options.dispatcher })
|
|
119431
120830
|
});
|
|
119432
120831
|
if (!response2.ok) {
|
|
119433
120832
|
let body2;
|
|
@@ -119448,7 +120847,7 @@ async function fetchRunKey(deploymentId, projectId, runId, options) {
|
|
|
119448
120847
|
}
|
|
119449
120848
|
return Buffer.from(result.data.key, "base64");
|
|
119450
120849
|
}
|
|
119451
|
-
function createGetEncryptionKeyForRun(projectId, teamId, token) {
|
|
120850
|
+
function createGetEncryptionKeyForRun(projectId, teamId, token, dispatcher2) {
|
|
119452
120851
|
if (!projectId)
|
|
119453
120852
|
return void 0;
|
|
119454
120853
|
const isServerlessRuntime = process.env.VERCEL === "1";
|
|
@@ -119475,7 +120874,11 @@ function createGetEncryptionKeyForRun(projectId, teamId, token) {
|
|
|
119475
120874
|
}
|
|
119476
120875
|
if (!deploymentId)
|
|
119477
120876
|
return void 0;
|
|
119478
|
-
return fetchRunKey(deploymentId, projectId, runId, {
|
|
120877
|
+
return fetchRunKey(deploymentId, projectId, runId, {
|
|
120878
|
+
token,
|
|
120879
|
+
teamId,
|
|
120880
|
+
dispatcher: dispatcher2
|
|
120881
|
+
});
|
|
119479
120882
|
};
|
|
119480
120883
|
}
|
|
119481
120884
|
let otelApiPromise = null;
|
|
@@ -122451,7 +123854,13 @@ function parseBinaryHeaders(headers2) {
|
|
|
122451
123854
|
`Missing required CloudEvent headers: ${missingFields.join(", ")}`
|
|
122452
123855
|
);
|
|
122453
123856
|
}
|
|
122454
|
-
const
|
|
123857
|
+
const rawRegion = getHeader(headers2, "ce-vqsregion") ?? void 0;
|
|
123858
|
+
if (rawRegion !== void 0 && !/^[a-z]{2,5}[0-9]{1,2}$/.test(rawRegion)) {
|
|
123859
|
+
throw new Error(
|
|
123860
|
+
`Invalid ce-vqsregion header: ${JSON.stringify(rawRegion)}. Region must match /^[a-z]{2,5}[0-9]{1,2}$/ (e.g. "iad1", "lhr1").`
|
|
123861
|
+
);
|
|
123862
|
+
}
|
|
123863
|
+
const region = rawRegion;
|
|
122455
123864
|
const base = {
|
|
122456
123865
|
queueName,
|
|
122457
123866
|
consumerGroup,
|
|
@@ -123300,6 +124709,14 @@ function parseQueueHeaders(headers2) {
|
|
|
123300
124709
|
receiptHandle
|
|
123301
124710
|
};
|
|
123302
124711
|
}
|
|
124712
|
+
var REGION_PATTERN = /^[a-z]{2,5}[0-9]{1,2}$/;
|
|
124713
|
+
function validateRegion(region) {
|
|
124714
|
+
if (!REGION_PATTERN.test(region)) {
|
|
124715
|
+
throw new Error(
|
|
124716
|
+
`Invalid region code: ${JSON.stringify(region)}. Region must match the pattern /^[a-z]{2,5}[0-9]{1,2}$/ (e.g. "iad1", "lhr1").`
|
|
124717
|
+
);
|
|
124718
|
+
}
|
|
124719
|
+
}
|
|
123303
124720
|
var DEFAULT_BASE_URL_RESOLVER = (region) => new URL(`https://${region}.vercel-queue.com`);
|
|
123304
124721
|
function resolveBaseUrl(region, resolver2) {
|
|
123305
124722
|
return (resolver2 ?? DEFAULT_BASE_URL_RESOLVER)(region);
|
|
@@ -123317,6 +124734,7 @@ var ApiClient = class _ApiClient {
|
|
|
123317
124734
|
__publicField(this, "region");
|
|
123318
124735
|
__publicField(this, "baseUrlResolver");
|
|
123319
124736
|
__publicField(this, "dispatcher");
|
|
124737
|
+
validateRegion(options.region);
|
|
123320
124738
|
this.region = options.region;
|
|
123321
124739
|
this.baseUrlResolver = options.resolveBaseUrl;
|
|
123322
124740
|
this.baseUrl = resolveBaseUrl(this.region, this.baseUrlResolver);
|
|
@@ -123431,7 +124849,7 @@ Cause: ${cause}`
|
|
|
123431
124849
|
}
|
|
123432
124850
|
console.debug("[VQS Debug] Request:", JSON.stringify(logData, null, 2));
|
|
123433
124851
|
}
|
|
123434
|
-
init2.headers.set("User-Agent", `@vercel/queue/${"0.1
|
|
124852
|
+
init2.headers.set("User-Agent", `@vercel/queue/${"0.2.1"}`);
|
|
123435
124853
|
init2.headers.set("Vqs-Client-Ts", (/* @__PURE__ */ new Date()).toISOString());
|
|
123436
124854
|
const fetchInit = this.dispatcher ? { ...init2, dispatcher: this.dispatcher } : init2;
|
|
123437
124855
|
const response2 = await fetch(url2, fetchInit);
|
|
@@ -123973,7 +125391,7 @@ var QueueClient = class {
|
|
|
123973
125391
|
setApi(this, new ApiClient({ ...options, region }));
|
|
123974
125392
|
}
|
|
123975
125393
|
};
|
|
123976
|
-
const version = "5.0.0-beta.
|
|
125394
|
+
const version = "5.0.0-beta.11";
|
|
123977
125395
|
const HTTP_DEBUG_ENABLED = typeof process !== "undefined" && typeof process.env.DEBUG === "string" && (process.env.DEBUG.includes("workflow:") || process.env.DEBUG === "*");
|
|
123978
125396
|
function httpLog(method, endpoint, status, ms2) {
|
|
123979
125397
|
if (HTTP_DEBUG_ENABLED) {
|
|
@@ -123981,6 +125399,9 @@ function httpLog(method, endpoint, status, ms2) {
|
|
|
123981
125399
|
}
|
|
123982
125400
|
}
|
|
123983
125401
|
const REQUEST_TIMEOUT_MS = 6e4;
|
|
125402
|
+
const IDEMPOTENT_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
|
|
125403
|
+
const MAX_BODY_PARSE_RETRIES = 2;
|
|
125404
|
+
const BODY_PARSE_RETRY_BASE_MS = 100;
|
|
123984
125405
|
const getWorkflowServerUrlOverride = () => process.env.VERCEL_WORKFLOW_SERVER_URL || "";
|
|
123985
125406
|
const DEFAULT_RESOLVE_DATA_OPTION = "all";
|
|
123986
125407
|
function deserializeError(obj) {
|
|
@@ -124070,101 +125491,116 @@ async function makeRequest({ endpoint, options = {}, config: config2 = {}, schem
|
|
|
124070
125491
|
...RpcService("workflow-server")
|
|
124071
125492
|
});
|
|
124072
125493
|
headers2.set("Accept", "application/cbor");
|
|
124073
|
-
headers2.set("X-Request-Time", Date.now().toString());
|
|
124074
125494
|
let body2;
|
|
124075
125495
|
if (data !== void 0) {
|
|
124076
125496
|
headers2.set("Content-Type", "application/cbor");
|
|
124077
125497
|
body2 = encode(data);
|
|
124078
125498
|
}
|
|
124079
|
-
const
|
|
124080
|
-
|
|
124081
|
-
|
|
124082
|
-
|
|
124083
|
-
|
|
124084
|
-
|
|
124085
|
-
|
|
124086
|
-
|
|
124087
|
-
|
|
124088
|
-
|
|
124089
|
-
|
|
124090
|
-
response2 = await fetch(request2, {
|
|
124091
|
-
dispatcher: getDispatcher()
|
|
125499
|
+
const canRetryBody = IDEMPOTENT_METHODS.has(method.toUpperCase());
|
|
125500
|
+
let parseResult;
|
|
125501
|
+
for (let attempt = 0; ; attempt++) {
|
|
125502
|
+
headers2.set("X-Request-Time", Date.now().toString());
|
|
125503
|
+
const timeoutSignal = AbortSignal.timeout(REQUEST_TIMEOUT_MS);
|
|
125504
|
+
const signal = options.signal ? AbortSignal.any([options.signal, timeoutSignal]) : timeoutSignal;
|
|
125505
|
+
const request2 = new Request(url2, {
|
|
125506
|
+
...options,
|
|
125507
|
+
body: body2,
|
|
125508
|
+
headers: headers2,
|
|
125509
|
+
signal
|
|
124092
125510
|
});
|
|
124093
|
-
|
|
124094
|
-
|
|
124095
|
-
|
|
124096
|
-
|
|
124097
|
-
|
|
124098
|
-
(_a3 = span == null ? void 0 : span.recordException) == null ? void 0 : _a3.call(span, timeoutError);
|
|
124099
|
-
throw timeoutError;
|
|
124100
|
-
}
|
|
124101
|
-
throw error2;
|
|
124102
|
-
}
|
|
124103
|
-
const fetchMs = Date.now() - fetchStart;
|
|
124104
|
-
httpLog(method, endpoint, response2.status, fetchMs);
|
|
124105
|
-
span == null ? void 0 : span.setAttributes({
|
|
124106
|
-
...HttpResponseStatusCode(response2.status)
|
|
124107
|
-
});
|
|
124108
|
-
if (!response2.ok) {
|
|
124109
|
-
const errorData = await parseResponseBody(response2).then((r2) => r2.data).catch(() => ({}));
|
|
124110
|
-
if (process.env.DEBUG) {
|
|
124111
|
-
const stringifiedHeaders = Array.from(headers2.entries()).filter(([key]) => key.toLowerCase() !== "authorization").map(([key, value]) => `-H "${key}: ${value}"`).join(" ");
|
|
124112
|
-
console.error(`Failed to fetch, reproduce with:
|
|
124113
|
-
curl -X ${request2.method} ${stringifiedHeaders} "${url2}"`);
|
|
124114
|
-
}
|
|
124115
|
-
let retryAfter;
|
|
124116
|
-
const retryAfterHeader = response2.headers.get("Retry-After");
|
|
124117
|
-
if (retryAfterHeader) {
|
|
124118
|
-
const parsed = parseInt(retryAfterHeader, 10);
|
|
124119
|
-
if (!Number.isNaN(parsed)) {
|
|
124120
|
-
retryAfter = parsed;
|
|
124121
|
-
}
|
|
124122
|
-
}
|
|
124123
|
-
const defaultMessage = errorData.message || `${request2.method} ${endpoint} -> HTTP ${response2.status}: ${response2.statusText}`;
|
|
124124
|
-
const throwWithTrace = (error2) => {
|
|
124125
|
-
var _a4;
|
|
124126
|
-
span == null ? void 0 : span.setAttributes({
|
|
124127
|
-
...ErrorType(errorData.code || `HTTP ${response2.status}`)
|
|
125511
|
+
const fetchStart = Date.now();
|
|
125512
|
+
let response2;
|
|
125513
|
+
try {
|
|
125514
|
+
response2 = await fetch(request2, {
|
|
125515
|
+
dispatcher: getDispatcher(config2)
|
|
124128
125516
|
});
|
|
124129
|
-
|
|
125517
|
+
} catch (error2) {
|
|
125518
|
+
const elapsed = Date.now() - fetchStart;
|
|
125519
|
+
if (error2 instanceof Error && (error2.name === "TimeoutError" || error2.name === "AbortError")) {
|
|
125520
|
+
const timeoutError = new WorkflowWorldError(`${method} ${endpoint} timed out after ${elapsed}ms`, { url: url2, cause: error2 });
|
|
125521
|
+
span == null ? void 0 : span.setAttributes({ ...ErrorType("TIMEOUT") });
|
|
125522
|
+
(_a3 = span == null ? void 0 : span.recordException) == null ? void 0 : _a3.call(span, timeoutError);
|
|
125523
|
+
throw timeoutError;
|
|
125524
|
+
}
|
|
124130
125525
|
throw error2;
|
|
124131
|
-
};
|
|
124132
|
-
if (response2.status === 409) {
|
|
124133
|
-
throwWithTrace(new EntityConflictError(defaultMessage));
|
|
124134
|
-
}
|
|
124135
|
-
if (response2.status === 410) {
|
|
124136
|
-
throwWithTrace(new RunExpiredError(defaultMessage));
|
|
124137
|
-
}
|
|
124138
|
-
if (response2.status === 425) {
|
|
124139
|
-
throwWithTrace(new TooEarlyError(defaultMessage, { retryAfter }));
|
|
124140
125526
|
}
|
|
124141
|
-
|
|
124142
|
-
|
|
125527
|
+
const fetchMs = Date.now() - fetchStart;
|
|
125528
|
+
httpLog(method, endpoint, response2.status, fetchMs);
|
|
125529
|
+
span == null ? void 0 : span.setAttributes({
|
|
125530
|
+
...HttpResponseStatusCode(response2.status)
|
|
125531
|
+
});
|
|
125532
|
+
if (!response2.ok) {
|
|
125533
|
+
const errorData = await parseResponseBody(response2).then((r2) => r2.data).catch(() => ({}));
|
|
125534
|
+
if (process.env.DEBUG) {
|
|
125535
|
+
const stringifiedHeaders = Array.from(headers2.entries()).filter(([key]) => key.toLowerCase() !== "authorization").map(([key, value]) => `-H "${key}: ${value}"`).join(" ");
|
|
125536
|
+
console.error(`Failed to fetch, reproduce with:
|
|
125537
|
+
curl -X ${request2.method} ${stringifiedHeaders} "${url2}"`);
|
|
125538
|
+
}
|
|
125539
|
+
let retryAfter;
|
|
125540
|
+
const retryAfterHeader = response2.headers.get("Retry-After");
|
|
125541
|
+
if (retryAfterHeader) {
|
|
125542
|
+
const parsed = parseInt(retryAfterHeader, 10);
|
|
125543
|
+
if (!Number.isNaN(parsed)) {
|
|
125544
|
+
retryAfter = parsed;
|
|
125545
|
+
}
|
|
125546
|
+
}
|
|
125547
|
+
const defaultMessage = errorData.message || `${request2.method} ${endpoint} -> HTTP ${response2.status}: ${response2.statusText}`;
|
|
125548
|
+
const throwWithTrace = (error2) => {
|
|
125549
|
+
var _a4;
|
|
125550
|
+
span == null ? void 0 : span.setAttributes({
|
|
125551
|
+
...ErrorType(errorData.code || `HTTP ${response2.status}`)
|
|
125552
|
+
});
|
|
125553
|
+
(_a4 = span == null ? void 0 : span.recordException) == null ? void 0 : _a4.call(span, error2);
|
|
125554
|
+
throw error2;
|
|
125555
|
+
};
|
|
125556
|
+
if (response2.status === 409) {
|
|
125557
|
+
throwWithTrace(new EntityConflictError(defaultMessage));
|
|
125558
|
+
}
|
|
125559
|
+
if (response2.status === 410) {
|
|
125560
|
+
throwWithTrace(new RunExpiredError(defaultMessage));
|
|
125561
|
+
}
|
|
125562
|
+
if (response2.status === 425) {
|
|
125563
|
+
throwWithTrace(new TooEarlyError(defaultMessage, { retryAfter }));
|
|
125564
|
+
}
|
|
125565
|
+
if (response2.status === 429) {
|
|
125566
|
+
throwWithTrace(new ThrottleError(defaultMessage, { retryAfter }));
|
|
125567
|
+
}
|
|
125568
|
+
throwWithTrace(new WorkflowWorldError(defaultMessage, {
|
|
125569
|
+
url: url2,
|
|
125570
|
+
status: response2.status,
|
|
125571
|
+
code: errorData.code,
|
|
125572
|
+
retryAfter
|
|
125573
|
+
}));
|
|
124143
125574
|
}
|
|
124144
|
-
|
|
124145
|
-
|
|
124146
|
-
|
|
124147
|
-
|
|
124148
|
-
|
|
124149
|
-
|
|
124150
|
-
|
|
124151
|
-
|
|
124152
|
-
|
|
124153
|
-
|
|
124154
|
-
parseResult = await trace("world.parse", async (parseSpan) => {
|
|
124155
|
-
const result2 = await parseResponseBody(response2);
|
|
124156
|
-
const contentType = response2.headers.get("Content-Type") || "";
|
|
124157
|
-
const isCbor = contentType.includes("application/cbor");
|
|
124158
|
-
parseSpan == null ? void 0 : parseSpan.setAttributes({
|
|
124159
|
-
...WorldParseFormat(isCbor ? "cbor" : "json")
|
|
125575
|
+
onResponse == null ? void 0 : onResponse(response2);
|
|
125576
|
+
try {
|
|
125577
|
+
parseResult = await trace("world.parse", async (parseSpan) => {
|
|
125578
|
+
const result2 = await parseResponseBody(response2);
|
|
125579
|
+
const contentType = response2.headers.get("Content-Type") || "";
|
|
125580
|
+
const isCbor = contentType.includes("application/cbor");
|
|
125581
|
+
parseSpan == null ? void 0 : parseSpan.setAttributes({
|
|
125582
|
+
...WorldParseFormat(isCbor ? "cbor" : "json")
|
|
125583
|
+
});
|
|
125584
|
+
return result2;
|
|
124160
125585
|
});
|
|
124161
|
-
|
|
124162
|
-
})
|
|
124163
|
-
|
|
124164
|
-
|
|
124165
|
-
|
|
125586
|
+
break;
|
|
125587
|
+
} catch (error2) {
|
|
125588
|
+
if (canRetryBody && attempt < MAX_BODY_PARSE_RETRIES) {
|
|
125589
|
+
const backoffMs = BODY_PARSE_RETRY_BASE_MS * 2 ** attempt;
|
|
125590
|
+
span == null ? void 0 : span.setAttributes({
|
|
125591
|
+
...ErrorType("PARSE_ERROR_RETRYING")
|
|
125592
|
+
});
|
|
125593
|
+
if (HTTP_DEBUG_ENABLED) {
|
|
125594
|
+
console.debug(`[workflow:world-vercel:http] ${method} ${endpoint} body parse failed (attempt ${attempt + 1}/${MAX_BODY_PARSE_RETRIES + 1}); retrying in ${backoffMs}ms: ${error2}`);
|
|
125595
|
+
}
|
|
125596
|
+
await new Promise((resolve2) => setTimeout(resolve2, backoffMs));
|
|
125597
|
+
continue;
|
|
125598
|
+
}
|
|
125599
|
+
const contentType = response2.headers.get("Content-Type") || "unknown";
|
|
125600
|
+
throw new WorkflowWorldError(`Failed to parse response body for ${method} ${endpoint} (Content-Type: ${contentType}):
|
|
124166
125601
|
|
|
124167
125602
|
${error2}`, { url: url2, code: "PARSE_ERROR", cause: error2 });
|
|
125603
|
+
}
|
|
124168
125604
|
}
|
|
124169
125605
|
const result = await trace("world.validate", async () => {
|
|
124170
125606
|
const validationResult = schema.safeParse(parseResult.data);
|
|
@@ -124312,7 +125748,7 @@ function createQueue$1(config2) {
|
|
|
124312
125748
|
const dualTransport = new DualTransport();
|
|
124313
125749
|
const clientOptions = {
|
|
124314
125750
|
region,
|
|
124315
|
-
dispatcher: getDispatcher(),
|
|
125751
|
+
dispatcher: getDispatcher(config2),
|
|
124316
125752
|
transport: dualTransport,
|
|
124317
125753
|
...usingProxy && {
|
|
124318
125754
|
// final path will be /queues-proxy/api/v3/topic/...
|
|
@@ -124428,7 +125864,7 @@ function createResolveLatestDeploymentId(config2) {
|
|
|
124428
125864
|
Authorization: `Bearer ${token}`
|
|
124429
125865
|
},
|
|
124430
125866
|
// @ts-expect-error -- undici dispatcher is accepted by Node.js fetch but not in @types/node's RequestInit
|
|
124431
|
-
dispatcher: getDispatcher()
|
|
125867
|
+
dispatcher: getDispatcher(config2)
|
|
124432
125868
|
});
|
|
124433
125869
|
if (!response2.ok) {
|
|
124434
125870
|
let body2;
|
|
@@ -124479,7 +125915,7 @@ async function resolveRefDescriptor(descriptor, runId, config2) {
|
|
|
124479
125915
|
const response2 = await fetch(url2, {
|
|
124480
125916
|
method: "GET",
|
|
124481
125917
|
headers: headers2,
|
|
124482
|
-
dispatcher: getDispatcher()
|
|
125918
|
+
dispatcher: getDispatcher(config2)
|
|
124483
125919
|
});
|
|
124484
125920
|
span == null ? void 0 : span.setAttributes({
|
|
124485
125921
|
...HttpResponseStatusCode(response2.status)
|
|
@@ -125295,7 +126731,7 @@ function createVercelWorld(config2) {
|
|
|
125295
126731
|
...createQueue$1(config2),
|
|
125296
126732
|
...createStorage(config2),
|
|
125297
126733
|
...instrumentObject("world.streams", createStreamer(config2)),
|
|
125298
|
-
getEncryptionKeyForRun: createGetEncryptionKeyForRun(projectId, (_b2 = config2 == null ? void 0 : config2.projectConfig) == null ? void 0 : _b2.teamId, config2 == null ? void 0 : config2.token),
|
|
126734
|
+
getEncryptionKeyForRun: createGetEncryptionKeyForRun(projectId, (_b2 = config2 == null ? void 0 : config2.projectConfig) == null ? void 0 : _b2.teamId, config2 == null ? void 0 : config2.token, config2 == null ? void 0 : config2.dispatcher),
|
|
125299
126735
|
resolveLatestDeploymentId: createResolveLatestDeploymentId(config2)
|
|
125300
126736
|
};
|
|
125301
126737
|
}
|
|
@@ -129538,7 +130974,7 @@ function LayoutContent({
|
|
|
129538
130974
|
}, [resource, id2, runId, stepId, hookId, navigate]);
|
|
129539
130975
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", {
|
|
129540
130976
|
className: "min-h-screen flex flex-col",
|
|
129541
|
-
children: [/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipProvider, {
|
|
130977
|
+
children: [/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipProvider$1, {
|
|
129542
130978
|
delayDuration: 0,
|
|
129543
130979
|
children: [/* @__PURE__ */ jsxRuntimeExports.jsx("div", {
|
|
129544
130980
|
className: "sticky top-0 z-50 bg-background border-b px-6 py-4",
|
|
@@ -135351,6 +136787,7 @@ const LIVE_POLL_LIMIT = 100;
|
|
|
135351
136787
|
const INITIAL_PAGE_SIZE$1 = 500;
|
|
135352
136788
|
const LOAD_MORE_PAGE_SIZE$1 = 100;
|
|
135353
136789
|
const LIVE_UPDATE_INTERVAL_MS = 5e3;
|
|
136790
|
+
const AUTO_LOAD_MAX_EVENTS = 500;
|
|
135354
136791
|
function useWorkflowTraceViewerData(env2, runId, options = {}) {
|
|
135355
136792
|
const { live = false } = options;
|
|
135356
136793
|
const [run, setRun] = reactExports.useState(null);
|
|
@@ -135459,6 +136896,12 @@ function useWorkflowTraceViewerData(env2, runId, options = {}) {
|
|
|
135459
136896
|
eventsHasMore,
|
|
135460
136897
|
eventsCursor
|
|
135461
136898
|
]);
|
|
136899
|
+
reactExports.useEffect(() => {
|
|
136900
|
+
if (events2.length >= AUTO_LOAD_MAX_EVENTS) {
|
|
136901
|
+
return;
|
|
136902
|
+
}
|
|
136903
|
+
loadMoreTraceData();
|
|
136904
|
+
}, [events2.length, loadMoreTraceData]);
|
|
135462
136905
|
const pollRun = reactExports.useCallback(async () => {
|
|
135463
136906
|
if (run == null ? void 0 : run.completedAt) {
|
|
135464
136907
|
return false;
|
|
@@ -136416,7 +137859,7 @@ var SelectIcon = reactExports.forwardRef(
|
|
|
136416
137859
|
SelectIcon.displayName = ICON_NAME;
|
|
136417
137860
|
var PORTAL_NAME$4 = "SelectPortal";
|
|
136418
137861
|
var SelectPortal = (props) => {
|
|
136419
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$
|
|
137862
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$7, { asChild: true, ...props });
|
|
136420
137863
|
};
|
|
136421
137864
|
SelectPortal.displayName = PORTAL_NAME$4;
|
|
136422
137865
|
var CONTENT_NAME$4 = "SelectContent";
|
|
@@ -148959,7 +150402,7 @@ var [PortalProvider$1, usePortalContext$1] = createDialogContext$1(PORTAL_NAME$3
|
|
|
148959
150402
|
var DialogPortal$1 = (props) => {
|
|
148960
150403
|
const { __scopeDialog, forceMount, children: children2, container } = props;
|
|
148961
150404
|
const context = useDialogContext$1(PORTAL_NAME$3, __scopeDialog);
|
|
148962
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider$1, { scope: __scopeDialog, forceMount, children: reactExports.Children.map(children2, (child) => /* @__PURE__ */ jsxRuntimeExports.jsx(Presence$1, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$
|
|
150405
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(PortalProvider$1, { scope: __scopeDialog, forceMount, children: reactExports.Children.map(children2, (child) => /* @__PURE__ */ jsxRuntimeExports.jsx(Presence$1, { present: forceMount || context.open, children: /* @__PURE__ */ jsxRuntimeExports.jsx(Portal$7, { asChild: true, container, children: child }) })) });
|
|
148963
150406
|
};
|
|
148964
150407
|
DialogPortal$1.displayName = PORTAL_NAME$3;
|
|
148965
150408
|
var OVERLAY_NAME$2 = "DialogOverlay";
|
|
@@ -151326,7 +152769,10 @@ function RunDetailView({
|
|
|
151326
152769
|
loading,
|
|
151327
152770
|
error: error2,
|
|
151328
152771
|
update,
|
|
151329
|
-
hasEncryptedData
|
|
152772
|
+
hasEncryptedData,
|
|
152773
|
+
loadMoreTraceData,
|
|
152774
|
+
hasMoreTraceData,
|
|
152775
|
+
isLoadingMoreTraceData
|
|
151330
152776
|
} = useWorkflowTraceViewerData(env2, runId, { live: true });
|
|
151331
152777
|
const run = runData ?? {};
|
|
151332
152778
|
const [encryptionKey, setEncryptionKey] = reactExports.useState(null);
|
|
@@ -151621,7 +153067,11 @@ function RunDetailView({
|
|
|
151621
153067
|
{
|
|
151622
153068
|
run,
|
|
151623
153069
|
events: allEvents ?? [],
|
|
151624
|
-
|
|
153070
|
+
loading,
|
|
153071
|
+
sidebarData,
|
|
153072
|
+
onLoadMore: loadMoreTraceData,
|
|
153073
|
+
hasMore: hasMoreTraceData,
|
|
153074
|
+
isLoadingMore: isLoadingMoreTraceData
|
|
151625
153075
|
}
|
|
151626
153076
|
) }) }) }),
|
|
151627
153077
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "events", className: "mt-0 flex-1 min-h-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorBoundary$1, { title: "Failed to load events list", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-full", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -151935,7 +153385,7 @@ const route4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
|
|
|
151935
153385
|
__proto__: null,
|
|
151936
153386
|
loader
|
|
151937
153387
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
151938
|
-
const serverManifest = { "entry": { "module": "/assets/entry.client-
|
|
153388
|
+
const serverManifest = { "entry": { "module": "/assets/entry.client-DOJDY_4b.js", "imports": ["/assets/index-BXZSIDEp.js"], "css": [] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": true, "module": "/assets/root-8wYQKqnE.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/mermaid-3ZIDBTTL-CeSti4VQ.js"], "css": ["/assets/root-DvB36HGI.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/home": { "id": "routes/home", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/home-BQRPxkXT.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/workflow-graph-viewer-CxZS9r2o.js", "/assets/mermaid-3ZIDBTTL-CeSti4VQ.js", "/assets/index-B6-SzLmT.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/run-detail": { "id": "routes/run-detail", "parentId": "root", "path": "run/:runId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": false, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": true, "hasErrorBoundary": false, "module": "/assets/run-detail-Dn4QeKHW.js", "imports": ["/assets/index-BXZSIDEp.js", "/assets/workflow-graph-viewer-CxZS9r2o.js", "/assets/mermaid-3ZIDBTTL-CeSti4VQ.js", "/assets/encryption-g14N5vQl.js", "/assets/index-B6-SzLmT.js"], "css": ["/assets/workflow-graph-viewer-DnlNuQQH.css", "/assets/mermaid-3ZIDBTTL-DKxHcEOp.css"], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.rpc": { "id": "routes/api.rpc", "parentId": "root", "path": "api/rpc", "index": void 0, "caseSensitive": void 0, "hasAction": true, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.rpc-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 }, "routes/api.stream.$streamId": { "id": "routes/api.stream.$streamId", "parentId": "root", "path": "api/stream/:streamId", "index": void 0, "caseSensitive": void 0, "hasAction": false, "hasLoader": true, "hasClientAction": false, "hasClientLoader": false, "hasClientMiddleware": false, "hasDefaultExport": false, "hasErrorBoundary": false, "module": "/assets/api.stream._streamId-l0sNRNKZ.js", "imports": [], "css": [], "clientActionModule": void 0, "clientLoaderModule": void 0, "clientMiddlewareModule": void 0, "hydrateFallbackModule": void 0 } }, "url": "/assets/manifest-b8838010.js", "version": "b8838010", "sri": void 0 };
|
|
151939
153389
|
const assetsBuildDirectory = "build/client";
|
|
151940
153390
|
const basename = "/";
|
|
151941
153391
|
const future = { "unstable_optimizeDeps": false, "unstable_subResourceIntegrity": false, "unstable_trailingSlashAwareDataRequests": false, "unstable_previewServerPrerendering": false, "v8_middleware": false, "v8_splitRouteModules": false, "v8_viteEnvironmentApi": false };
|