UNPKG

111 kBSource Map (JSON)View Raw
1{"version":3,"file":"single-spa.dev.js","sources":["../../node_modules/custom-event/index.js","../../src/applications/app-errors.js","../../src/applications/app.helpers.js","../../src/utils/assign.js","../../src/utils/find.js","../../src/lifecycles/lifecycle.helpers.js","../../src/lifecycles/bootstrap.js","../../src/lifecycles/unmount.js","../../src/lifecycles/mount.js","../../src/lifecycles/update.js","../../src/parcels/mount-parcel.js","../../src/lifecycles/prop.helpers.js","../../src/applications/timeouts.js","../../src/lifecycles/load.js","../../src/utils/runtime-environment.js","../../src/navigation/navigation-events.js","../../src/jquery-support.js","../../src/lifecycles/unload.js","../../src/applications/apps.js","../../src/navigation/reroute.js","../../src/start.js","../../src/devtools/devtools.js","../../src/single-spa.js"],"sourcesContent":["\nvar NativeCustomEvent = global.CustomEvent;\n\nfunction useNative () {\n try {\n var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n return 'cat' === p.type && 'bar' === p.detail.foo;\n } catch (e) {\n }\n return false;\n}\n\n/**\n * Cross-browser `CustomEvent` constructor.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n *\n * @public\n */\n\nmodule.exports = useNative() ? NativeCustomEvent :\n\n// IE >= 9\n'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n var e = document.createEvent('CustomEvent');\n if (params) {\n e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n } else {\n e.initCustomEvent(type, false, false, void 0);\n }\n return e;\n} :\n\n// IE <= 8\nfunction CustomEvent (type, params) {\n var e = document.createEventObject();\n e.type = type;\n if (params) {\n e.bubbles = Boolean(params.bubbles);\n e.cancelable = Boolean(params.cancelable);\n e.detail = params.detail;\n } else {\n e.bubbles = false;\n e.cancelable = false;\n e.detail = void 0;\n }\n return e;\n}\n","import { objectType, toName } from \"./app.helpers\";\n\nlet errorHandlers = [];\n\nexport function handleAppError(err, app, newStatus) {\n const transformedErr = transformErr(err, app, newStatus);\n\n if (errorHandlers.length) {\n errorHandlers.forEach((handler) => handler(transformedErr));\n } else {\n setTimeout(() => {\n throw transformedErr;\n });\n }\n}\n\nexport function addErrorHandler(handler) {\n if (typeof handler !== \"function\") {\n throw Error(\n formatErrorMessage(\n 28,\n __DEV__ && \"a single-spa error handler must be a function\"\n )\n );\n }\n\n errorHandlers.push(handler);\n}\n\nexport function removeErrorHandler(handler) {\n if (typeof handler !== \"function\") {\n throw Error(\n formatErrorMessage(\n 29,\n __DEV__ && \"a single-spa error handler must be a function\"\n )\n );\n }\n\n let removedSomething = false;\n errorHandlers = errorHandlers.filter((h) => {\n const isHandler = h === handler;\n removedSomething = removedSomething || isHandler;\n return !isHandler;\n });\n\n return removedSomething;\n}\n\nexport function formatErrorMessage(code, msg, ...args) {\n return `single-spa minified message #${code}: ${\n msg ? msg + \" \" : \"\"\n }See https://single-spa.js.org/error/?code=${code}${\n args.length ? `&arg=${args.join(\"&arg=\")}` : \"\"\n }`;\n}\n\nexport function transformErr(ogErr, appOrParcel, newStatus) {\n const errPrefix = `${objectType(appOrParcel)} '${toName(\n appOrParcel\n )}' died in status ${appOrParcel.status}: `;\n\n let result;\n\n if (ogErr instanceof Error) {\n try {\n ogErr.message = errPrefix + ogErr.message;\n } catch (err) {\n /* Some errors have read-only message properties, in which case there is nothing\n * that we can do.\n */\n }\n result = ogErr;\n } else {\n console.warn(\n formatErrorMessage(\n 30,\n __DEV__ &&\n `While ${appOrParcel.status}, '${toName(\n appOrParcel\n )}' rejected its lifecycle function promise with a non-Error. This will cause stack traces to not be accurate.`,\n appOrParcel.status,\n toName(appOrParcel)\n )\n );\n try {\n result = Error(errPrefix + JSON.stringify(ogErr));\n } catch (err) {\n // If it's not an Error and you can't stringify it, then what else can you even do to it?\n result = ogErr;\n }\n }\n\n result.appOrParcelName = toName(appOrParcel);\n\n // We set the status after transforming the error so that the error message\n // references the state the application was in before the status change.\n appOrParcel.status = newStatus;\n\n return result;\n}\n","import { handleAppError } from \"./app-errors.js\";\n\n// App statuses\nexport const NOT_LOADED = \"NOT_LOADED\";\nexport const LOADING_SOURCE_CODE = \"LOADING_SOURCE_CODE\";\nexport const NOT_BOOTSTRAPPED = \"NOT_BOOTSTRAPPED\";\nexport const BOOTSTRAPPING = \"BOOTSTRAPPING\";\nexport const NOT_MOUNTED = \"NOT_MOUNTED\";\nexport const MOUNTING = \"MOUNTING\";\nexport const MOUNTED = \"MOUNTED\";\nexport const UPDATING = \"UPDATING\";\nexport const UNMOUNTING = \"UNMOUNTING\";\nexport const UNLOADING = \"UNLOADING\";\nexport const LOAD_ERROR = \"LOAD_ERROR\";\nexport const SKIP_BECAUSE_BROKEN = \"SKIP_BECAUSE_BROKEN\";\n\nexport function isActive(app) {\n return app.status === MOUNTED;\n}\n\nexport function isntActive(app) {\n return !isActive(app);\n}\n\nexport function isLoaded(app) {\n return (\n app.status !== NOT_LOADED &&\n app.status !== LOADING_SOURCE_CODE &&\n app.status !== LOAD_ERROR\n );\n}\n\nexport function isntLoaded(app) {\n return !isLoaded(app);\n}\n\nexport function shouldBeActive(app) {\n try {\n return app.activeWhen(window.location);\n } catch (err) {\n handleAppError(err, app, SKIP_BECAUSE_BROKEN);\n }\n}\n\nexport function shouldntBeActive(app) {\n try {\n return !shouldBeActive(app);\n } catch (err) {\n handleAppError(err, app, SKIP_BECAUSE_BROKEN);\n }\n}\n\nexport function notSkipped(item) {\n return (\n item !== SKIP_BECAUSE_BROKEN &&\n (!item || item.status !== SKIP_BECAUSE_BROKEN)\n );\n}\n\nexport function withoutLoadErrors(app) {\n return app.status === LOAD_ERROR\n ? new Date().getTime() - app.loadErrorTime >= 200\n : true;\n}\n\nexport function toName(app) {\n return app.name;\n}\n\nexport function isParcel(appOrParcel) {\n return Boolean(appOrParcel.unmountThisParcel);\n}\n\nexport function objectType(appOrParcel) {\n return isParcel(appOrParcel) ? \"parcel\" : \"application\";\n}\n","// Object.assign() is not available in IE11. And the babel compiled output for object spread\n// syntax checks a bunch of Symbol stuff and is almost a kb. So this function is the smaller replacement.\nexport function assign() {\n for (let i = arguments.length - 1; i > 0; i--) {\n for (let key in arguments[i]) {\n if (key === \"__proto__\") {\n continue;\n }\n arguments[i - 1][key] = arguments[i][key];\n }\n }\n\n return arguments[0];\n}\n","/* the array.prototype.find polyfill on npmjs.com is ~20kb (not worth it)\n * and lodash is ~200kb (not worth it)\n */\n\nexport function find(arr, func) {\n for (let i = 0; i < arr.length; i++) {\n if (func(arr[i])) {\n return arr[i];\n }\n }\n\n return null;\n}\n","import { find } from \"../utils/find.js\";\nimport { objectType, toName } from \"../applications/app.helpers.js\";\nimport { formatErrorMessage } from \"../applications/app-errors.js\";\n\nexport function validLifecycleFn(fn) {\n return fn && (typeof fn === \"function\" || isArrayOfFns(fn));\n\n function isArrayOfFns(arr) {\n return (\n Array.isArray(arr) && !find(arr, (item) => typeof item !== \"function\")\n );\n }\n}\n\nexport function flattenFnArray(appOrParcel, lifecycle) {\n let fns = appOrParcel[lifecycle] || [];\n fns = Array.isArray(fns) ? fns : [fns];\n if (fns.length === 0) {\n fns = [() => Promise.resolve()];\n }\n\n const type = objectType(appOrParcel);\n const name = toName(appOrParcel);\n\n return function (props) {\n return fns.reduce((resultPromise, fn, index) => {\n return resultPromise.then(() => {\n const thisPromise = fn(props);\n return smellsLikeAPromise(thisPromise)\n ? thisPromise\n : Promise.reject(\n formatErrorMessage(\n 15,\n __DEV__ &&\n `Within ${type} ${name}, the lifecycle function ${lifecycle} at array index ${index} did not return a promise`,\n type,\n name,\n lifecycle,\n index\n )\n );\n });\n }, Promise.resolve());\n };\n}\n\nexport function smellsLikeAPromise(promise) {\n return (\n promise &&\n typeof promise.then === \"function\" &&\n typeof promise.catch === \"function\"\n );\n}\n","import {\n NOT_BOOTSTRAPPED,\n BOOTSTRAPPING,\n NOT_MOUNTED,\n SKIP_BECAUSE_BROKEN,\n} from \"../applications/app.helpers.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\nimport { handleAppError, transformErr } from \"../applications/app-errors.js\";\n\nexport function toBootstrapPromise(appOrParcel, hardFail) {\n return Promise.resolve().then(() => {\n if (appOrParcel.status !== NOT_BOOTSTRAPPED) {\n return appOrParcel;\n }\n\n appOrParcel.status = BOOTSTRAPPING;\n\n return reasonableTime(appOrParcel, \"bootstrap\")\n .then(() => {\n appOrParcel.status = NOT_MOUNTED;\n return appOrParcel;\n })\n .catch((err) => {\n if (hardFail) {\n throw transformErr(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n } else {\n handleAppError(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n return appOrParcel;\n }\n });\n });\n}\n","import {\n UNMOUNTING,\n NOT_MOUNTED,\n MOUNTED,\n SKIP_BECAUSE_BROKEN,\n} from \"../applications/app.helpers.js\";\nimport { handleAppError, transformErr } from \"../applications/app-errors.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\n\nexport function toUnmountPromise(appOrParcel, hardFail) {\n return Promise.resolve().then(() => {\n if (appOrParcel.status !== MOUNTED) {\n return appOrParcel;\n }\n appOrParcel.status = UNMOUNTING;\n\n const unmountChildrenParcels = Object.keys(\n appOrParcel.parcels\n ).map((parcelId) => appOrParcel.parcels[parcelId].unmountThisParcel());\n\n let parcelError;\n\n return Promise.all(unmountChildrenParcels)\n .then(unmountAppOrParcel, (parcelError) => {\n // There is a parcel unmount error\n return unmountAppOrParcel().then(() => {\n // Unmounting the app/parcel succeeded, but unmounting its children parcels did not\n const parentError = Error(parcelError.message);\n if (hardFail) {\n throw transformErr(parentError, appOrParcel, SKIP_BECAUSE_BROKEN);\n } else {\n handleAppError(parentError, appOrParcel, SKIP_BECAUSE_BROKEN);\n }\n });\n })\n .then(() => appOrParcel);\n\n function unmountAppOrParcel() {\n // We always try to unmount the appOrParcel, even if the children parcels failed to unmount.\n return reasonableTime(appOrParcel, \"unmount\")\n .then(() => {\n // The appOrParcel needs to stay in a broken status if its children parcels fail to unmount\n if (!parcelError) {\n appOrParcel.status = NOT_MOUNTED;\n }\n })\n .catch((err) => {\n if (hardFail) {\n throw transformErr(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n } else {\n handleAppError(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n }\n });\n }\n });\n}\n","import {\n NOT_MOUNTED,\n MOUNTED,\n SKIP_BECAUSE_BROKEN,\n} from \"../applications/app.helpers.js\";\nimport { handleAppError, transformErr } from \"../applications/app-errors.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\nimport CustomEvent from \"custom-event\";\nimport { toUnmountPromise } from \"./unmount.js\";\n\nlet beforeFirstMountFired = false;\nlet firstMountFired = false;\n\nexport function toMountPromise(appOrParcel, hardFail) {\n return Promise.resolve().then(() => {\n if (appOrParcel.status !== NOT_MOUNTED) {\n return appOrParcel;\n }\n\n if (!beforeFirstMountFired) {\n window.dispatchEvent(new CustomEvent(\"single-spa:before-first-mount\"));\n beforeFirstMountFired = true;\n }\n\n return reasonableTime(appOrParcel, \"mount\")\n .then(() => {\n appOrParcel.status = MOUNTED;\n\n if (!firstMountFired) {\n window.dispatchEvent(new CustomEvent(\"single-spa:first-mount\"));\n firstMountFired = true;\n }\n\n return appOrParcel;\n })\n .catch((err) => {\n // If we fail to mount the appOrParcel, we should attempt to unmount it before putting in SKIP_BECAUSE_BROKEN\n // We temporarily put the appOrParcel into MOUNTED status so that toUnmountPromise actually attempts to unmount it\n // instead of just doing a no-op.\n appOrParcel.status = MOUNTED;\n return toUnmountPromise(appOrParcel, true).then(\n setSkipBecauseBroken,\n setSkipBecauseBroken\n );\n\n function setSkipBecauseBroken() {\n if (!hardFail) {\n handleAppError(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n return appOrParcel;\n } else {\n throw transformErr(err, appOrParcel, SKIP_BECAUSE_BROKEN);\n }\n }\n });\n });\n}\n","import {\n UPDATING,\n MOUNTED,\n SKIP_BECAUSE_BROKEN,\n toName,\n} from \"../applications/app.helpers.js\";\nimport {\n transformErr,\n formatErrorMessage,\n} from \"../applications/app-errors.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\n\nexport function toUpdatePromise(parcel) {\n return Promise.resolve().then(() => {\n if (parcel.status !== MOUNTED) {\n throw Error(\n formatErrorMessage(\n 32,\n __DEV__ &&\n `Cannot update parcel '${toName(\n parcel\n )}' because it is not mounted`,\n toName(parcel)\n )\n );\n }\n\n parcel.status = UPDATING;\n\n return reasonableTime(parcel, \"update\")\n .then(() => {\n parcel.status = MOUNTED;\n return parcel;\n })\n .catch((err) => {\n throw transformErr(err, parcel, SKIP_BECAUSE_BROKEN);\n });\n });\n}\n","import {\n validLifecycleFn,\n flattenFnArray,\n} from \"../lifecycles/lifecycle.helpers.js\";\nimport {\n NOT_BOOTSTRAPPED,\n NOT_MOUNTED,\n MOUNTED,\n LOADING_SOURCE_CODE,\n SKIP_BECAUSE_BROKEN,\n toName,\n} from \"../applications/app.helpers.js\";\nimport { toBootstrapPromise } from \"../lifecycles/bootstrap.js\";\nimport { toMountPromise } from \"../lifecycles/mount.js\";\nimport { toUpdatePromise } from \"../lifecycles/update.js\";\nimport { toUnmountPromise } from \"../lifecycles/unmount.js\";\nimport { ensureValidAppTimeouts } from \"../applications/timeouts.js\";\nimport { formatErrorMessage } from \"../applications/app-errors.js\";\n\nlet parcelCount = 0;\nconst rootParcels = { parcels: {} };\n\n// This is a public api, exported to users of single-spa\nexport function mountRootParcel() {\n return mountParcel.apply(rootParcels, arguments);\n}\n\nexport function mountParcel(config, customProps) {\n const owningAppOrParcel = this;\n\n // Validate inputs\n if (!config || (typeof config !== \"object\" && typeof config !== \"function\")) {\n throw Error(\n formatErrorMessage(\n 2,\n __DEV__ &&\n \"Cannot mount parcel without a config object or config loading function\"\n )\n );\n }\n\n if (config.name && typeof config.name !== \"string\") {\n throw Error(\n formatErrorMessage(\n 3,\n __DEV__ &&\n `Parcel name must be a string, if provided. Was given ${typeof config.name}`,\n typeof config.name\n )\n );\n }\n\n if (typeof customProps !== \"object\") {\n throw Error(\n formatErrorMessage(\n 4,\n __DEV__ &&\n `Parcel ${name} has invalid customProps -- must be an object but was given ${typeof customProps}`,\n name,\n typeof customProps\n )\n );\n }\n\n if (!customProps.domElement) {\n throw Error(\n formatErrorMessage(\n 5,\n __DEV__ &&\n `Parcel ${name} cannot be mounted without a domElement provided as a prop`,\n name\n )\n );\n }\n\n const id = parcelCount++;\n\n const passedConfigLoadingFunction = typeof config === \"function\";\n const configLoadingFunction = passedConfigLoadingFunction\n ? config\n : () => Promise.resolve(config);\n\n // Internal representation\n const parcel = {\n id,\n parcels: {},\n status: passedConfigLoadingFunction\n ? LOADING_SOURCE_CODE\n : NOT_BOOTSTRAPPED,\n customProps,\n parentName: toName(owningAppOrParcel),\n unmountThisParcel() {\n if (parcel.status !== MOUNTED) {\n throw Error(\n formatErrorMessage(\n 6,\n __DEV__ &&\n `Cannot unmount parcel '${name}' -- it is in a ${parcel.status} status`,\n name,\n parcel.status\n )\n );\n }\n\n return toUnmountPromise(parcel, true)\n .then((value) => {\n if (parcel.parentName) {\n delete owningAppOrParcel.parcels[parcel.id];\n }\n\n return value;\n })\n .then((value) => {\n resolveUnmount(value);\n return value;\n })\n .catch((err) => {\n parcel.status = SKIP_BECAUSE_BROKEN;\n rejectUnmount(err);\n throw err;\n });\n },\n };\n\n // We return an external representation\n let externalRepresentation;\n\n // Add to owning app or parcel\n owningAppOrParcel.parcels[id] = parcel;\n\n let loadPromise = configLoadingFunction();\n\n if (!loadPromise || typeof loadPromise.then !== \"function\") {\n throw Error(\n formatErrorMessage(\n 7,\n __DEV__ &&\n `When mounting a parcel, the config loading function must return a promise that resolves with the parcel config`\n )\n );\n }\n\n loadPromise = loadPromise.then((config) => {\n if (!config) {\n throw Error(\n formatErrorMessage(\n 8,\n __DEV__ &&\n `When mounting a parcel, the config loading function returned a promise that did not resolve with a parcel config`\n )\n );\n }\n\n const name = config.name || `parcel-${id}`;\n\n if (!validLifecycleFn(config.bootstrap)) {\n throw Error(\n formatErrorMessage(\n 9,\n __DEV__ && `Parcel ${name} must have a valid bootstrap function`,\n name\n )\n );\n }\n\n if (!validLifecycleFn(config.mount)) {\n throw Error(\n formatErrorMessage(\n 10,\n __DEV__ && `Parcel ${name} must have a valid mount function`,\n name\n )\n );\n }\n\n if (!validLifecycleFn(config.unmount)) {\n throw Error(\n formatErrorMessage(\n 11,\n __DEV__ && `Parcel ${name} must have a valid unmount function`,\n name\n )\n );\n }\n\n if (config.update && !validLifecycleFn(config.update)) {\n throw Error(\n formatErrorMessage(\n 12,\n __DEV__ && `Parcel ${name} provided an invalid update function`,\n name\n )\n );\n }\n\n const bootstrap = flattenFnArray(config, \"bootstrap\");\n const mount = flattenFnArray(config, \"mount\");\n const unmount = flattenFnArray(config, \"unmount\");\n\n parcel.status = NOT_BOOTSTRAPPED;\n parcel.name = name;\n parcel.bootstrap = bootstrap;\n parcel.mount = mount;\n parcel.unmount = unmount;\n parcel.timeouts = ensureValidAppTimeouts(config.timeouts);\n\n if (config.update) {\n parcel.update = flattenFnArray(config, \"update\");\n externalRepresentation.update = function (customProps) {\n parcel.customProps = customProps;\n\n return promiseWithoutReturnValue(toUpdatePromise(parcel));\n };\n }\n });\n\n // Start bootstrapping and mounting\n // The .then() causes the work to be put on the event loop instead of happening immediately\n const bootstrapPromise = loadPromise.then(() =>\n toBootstrapPromise(parcel, true)\n );\n const mountPromise = bootstrapPromise.then(() =>\n toMountPromise(parcel, true)\n );\n\n let resolveUnmount, rejectUnmount;\n\n const unmountPromise = new Promise((resolve, reject) => {\n resolveUnmount = resolve;\n rejectUnmount = reject;\n });\n\n externalRepresentation = {\n mount() {\n return promiseWithoutReturnValue(\n Promise.resolve().then(() => {\n if (parcel.status !== NOT_MOUNTED) {\n throw Error(\n formatErrorMessage(\n 13,\n __DEV__ &&\n `Cannot mount parcel '${name}' -- it is in a ${parcel.status} status`,\n name,\n parcel.status\n )\n );\n }\n\n // Add to owning app or parcel\n owningAppOrParcel.parcels[id] = parcel;\n\n return toMountPromise(parcel);\n })\n );\n },\n unmount() {\n return promiseWithoutReturnValue(parcel.unmountThisParcel());\n },\n getStatus() {\n return parcel.status;\n },\n loadPromise: promiseWithoutReturnValue(loadPromise),\n bootstrapPromise: promiseWithoutReturnValue(bootstrapPromise),\n mountPromise: promiseWithoutReturnValue(mountPromise),\n unmountPromise: promiseWithoutReturnValue(unmountPromise),\n };\n\n return externalRepresentation;\n}\n\nfunction promiseWithoutReturnValue(promise) {\n return promise.then(() => null);\n}\n","import * as singleSpa from \"../single-spa.js\";\nimport { mountParcel } from \"../parcels/mount-parcel.js\";\nimport { assign } from \"../utils/assign.js\";\nimport { isParcel, toName } from \"../applications/app.helpers.js\";\n\nexport function getProps(appOrParcel) {\n const result = assign({}, appOrParcel.customProps, {\n name: toName(appOrParcel),\n mountParcel: mountParcel.bind(appOrParcel),\n singleSpa,\n });\n\n if (isParcel(appOrParcel)) {\n result.unmountSelf = appOrParcel.unmountThisParcel;\n }\n\n return result;\n}\n","import { assign } from \"../utils/assign\";\nimport { getProps } from \"../lifecycles/prop.helpers\";\nimport { objectType, toName } from \"./app.helpers\";\nimport { formatErrorMessage } from \"./app-errors\";\n\nconst defaultWarningMillis = 1000;\n\nconst globalTimeoutConfig = {\n bootstrap: {\n millis: 4000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n mount: {\n millis: 3000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n unmount: {\n millis: 3000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n unload: {\n millis: 3000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n update: {\n millis: 3000,\n dieOnTimeout: false,\n warningMillis: defaultWarningMillis,\n },\n};\n\nexport function setBootstrapMaxTime(time, dieOnTimeout, warningMillis) {\n if (typeof time !== \"number\" || time <= 0) {\n throw Error(\n formatErrorMessage(\n 16,\n __DEV__ &&\n `bootstrap max time must be a positive integer number of milliseconds`\n )\n );\n }\n\n globalTimeoutConfig.bootstrap = {\n millis: time,\n dieOnTimeout,\n warningMillis: warningMillis || defaultWarningMillis,\n };\n}\n\nexport function setMountMaxTime(time, dieOnTimeout, warningMillis) {\n if (typeof time !== \"number\" || time <= 0) {\n throw Error(\n formatErrorMessage(\n 17,\n __DEV__ &&\n `mount max time must be a positive integer number of milliseconds`\n )\n );\n }\n\n globalTimeoutConfig.mount = {\n millis: time,\n dieOnTimeout,\n warningMillis: warningMillis || defaultWarningMillis,\n };\n}\n\nexport function setUnmountMaxTime(time, dieOnTimeout, warningMillis) {\n if (typeof time !== \"number\" || time <= 0) {\n throw Error(\n formatErrorMessage(\n 18,\n __DEV__ &&\n `unmount max time must be a positive integer number of milliseconds`\n )\n );\n }\n\n globalTimeoutConfig.unmount = {\n millis: time,\n dieOnTimeout,\n warningMillis: warningMillis || defaultWarningMillis,\n };\n}\n\nexport function setUnloadMaxTime(time, dieOnTimeout, warningMillis) {\n if (typeof time !== \"number\" || time <= 0) {\n throw Error(\n formatErrorMessage(\n 19,\n __DEV__ &&\n `unload max time must be a positive integer number of milliseconds`\n )\n );\n }\n\n globalTimeoutConfig.unload = {\n millis: time,\n dieOnTimeout,\n warningMillis: warningMillis || defaultWarningMillis,\n };\n}\n\nexport function reasonableTime(appOrParcel, lifecycle) {\n const timeoutConfig = appOrParcel.timeouts[lifecycle];\n const warningPeriod = timeoutConfig.warningMillis;\n const type = objectType(appOrParcel);\n\n return new Promise((resolve, reject) => {\n let finished = false;\n let errored = false;\n\n appOrParcel[lifecycle](getProps(appOrParcel))\n .then((val) => {\n finished = true;\n resolve(val);\n })\n .catch((val) => {\n finished = true;\n reject(val);\n });\n\n setTimeout(() => maybeTimingOut(1), warningPeriod);\n setTimeout(() => maybeTimingOut(true), timeoutConfig.millis);\n\n const errMsg = formatErrorMessage(\n 31,\n __DEV__ &&\n `Lifecycle function ${lifecycle} for ${type} ${toName(\n appOrParcel\n )} lifecycle did not resolve or reject for ${timeoutConfig.millis} ms.`,\n lifecycle,\n type,\n toName(appOrParcel),\n timeoutConfig.millis\n );\n\n function maybeTimingOut(shouldError) {\n if (!finished) {\n if (shouldError === true) {\n errored = true;\n if (timeoutConfig.dieOnTimeout) {\n reject(Error(errMsg));\n } else {\n console.error(errMsg);\n //don't resolve or reject, we're waiting this one out\n }\n } else if (!errored) {\n const numWarnings = shouldError;\n const numMillis = numWarnings * warningPeriod;\n console.warn(errMsg);\n if (numMillis + warningPeriod < timeoutConfig.millis) {\n setTimeout(() => maybeTimingOut(numWarnings + 1), warningPeriod);\n }\n }\n }\n }\n });\n}\n\nexport function ensureValidAppTimeouts(timeouts) {\n const result = {};\n\n for (let key in globalTimeoutConfig) {\n result[key] = assign(\n {},\n globalTimeoutConfig[key],\n (timeouts && timeouts[key]) || {}\n );\n }\n\n return result;\n}\n","import {\n LOAD_ERROR,\n NOT_BOOTSTRAPPED,\n LOADING_SOURCE_CODE,\n SKIP_BECAUSE_BROKEN,\n NOT_LOADED,\n objectType,\n toName,\n} from \"../applications/app.helpers.js\";\nimport { ensureValidAppTimeouts } from \"../applications/timeouts.js\";\nimport {\n handleAppError,\n formatErrorMessage,\n} from \"../applications/app-errors.js\";\nimport {\n flattenFnArray,\n smellsLikeAPromise,\n validLifecycleFn,\n} from \"./lifecycle.helpers.js\";\nimport { getProps } from \"./prop.helpers.js\";\nimport { assign } from \"../utils/assign.js\";\n\nexport function toLoadPromise(app) {\n return Promise.resolve().then(() => {\n if (app.loadPromise) {\n return app.loadPromise;\n }\n\n if (app.status !== NOT_LOADED && app.status !== LOAD_ERROR) {\n return app;\n }\n\n app.status = LOADING_SOURCE_CODE;\n\n let appOpts, isUserErr;\n\n return (app.loadPromise = Promise.resolve()\n .then(() => {\n const loadPromise = app.loadApp(getProps(app));\n if (!smellsLikeAPromise(loadPromise)) {\n // The name of the app will be prepended to this error message inside of the handleAppError function\n isUserErr = true;\n throw Error(\n formatErrorMessage(\n 33,\n __DEV__ &&\n `single-spa loading function did not return a promise. Check the second argument to registerApplication('${toName(\n app\n )}', loadingFunction, activityFunction)`,\n toName(app)\n )\n );\n }\n return loadPromise.then((val) => {\n app.loadErrorTime = null;\n\n appOpts = val;\n\n let validationErrMessage, validationErrCode;\n\n if (typeof appOpts !== \"object\") {\n validationErrCode = 34;\n if (__DEV__) {\n validationErrMessage = `does not export anything`;\n }\n }\n\n if (!validLifecycleFn(appOpts.bootstrap)) {\n validationErrCode = 35;\n if (__DEV__) {\n validationErrMessage = `does not export a bootstrap function or array of functions`;\n }\n }\n\n if (!validLifecycleFn(appOpts.mount)) {\n validationErrCode = 36;\n if (__DEV__) {\n validationErrMessage = `does not export a bootstrap function or array of functions`;\n }\n }\n\n if (!validLifecycleFn(appOpts.unmount)) {\n validationErrCode = 37;\n if (__DEV__) {\n validationErrMessage = `does not export a bootstrap function or array of functions`;\n }\n }\n\n const type = objectType(appOpts);\n\n if (validationErrCode) {\n let appOptsStr;\n try {\n appOptsStr = JSON.stringify(appOpts);\n } catch {}\n console.error(\n formatErrorMessage(\n validationErrCode,\n __DEV__ &&\n `The loading function for single-spa ${type} '${toName(\n app\n )}' resolved with the following, which does not have bootstrap, mount, and unmount functions`,\n type,\n toName(app),\n appOptsStr\n ),\n appOpts\n );\n handleAppError(validationErrMessage, app, SKIP_BECAUSE_BROKEN);\n return app;\n }\n\n if (appOpts.devtools && appOpts.devtools.overlays) {\n app.devtools.overlays = assign(\n {},\n app.devtools.overlays,\n appOpts.devtools.overlays\n );\n }\n\n app.status = NOT_BOOTSTRAPPED;\n app.bootstrap = flattenFnArray(appOpts, \"bootstrap\");\n app.mount = flattenFnArray(appOpts, \"mount\");\n app.unmount = flattenFnArray(appOpts, \"unmount\");\n app.unload = flattenFnArray(appOpts, \"unload\");\n app.timeouts = ensureValidAppTimeouts(appOpts.timeouts);\n\n delete app.loadPromise;\n\n return app;\n });\n })\n .catch((err) => {\n delete app.loadPromise;\n\n let newStatus;\n if (isUserErr) {\n newStatus = SKIP_BECAUSE_BROKEN;\n } else {\n newStatus = LOAD_ERROR;\n app.loadErrorTime = new Date().getTime();\n }\n handleAppError(err, app, newStatus);\n\n return app;\n }));\n });\n}\n","export const isInBrowser = typeof window !== \"undefined\";\n","import { reroute } from \"./reroute.js\";\nimport { find } from \"../utils/find.js\";\nimport { formatErrorMessage } from \"../applications/app-errors.js\";\nimport { isInBrowser } from \"../utils/runtime-environment.js\";\n\n/* We capture navigation event listeners so that we can make sure\n * that application navigation listeners are not called until\n * single-spa has ensured that the correct applications are\n * unmounted and mounted.\n */\nconst capturedEventListeners = {\n hashchange: [],\n popstate: [],\n};\n\nexport const routingEventsListeningTo = [\"hashchange\", \"popstate\"];\n\nexport function navigateToUrl(obj) {\n let url;\n if (typeof obj === \"string\") {\n url = obj;\n } else if (this && this.href) {\n url = this.href;\n } else if (\n obj &&\n obj.currentTarget &&\n obj.currentTarget.href &&\n obj.preventDefault\n ) {\n url = obj.currentTarget.href;\n obj.preventDefault();\n } else {\n throw Error(\n formatErrorMessage(\n 14,\n __DEV__ &&\n `singleSpaNavigate/navigateToUrl must be either called with a string url, with an <a> tag as its context, or with an event whose currentTarget is an <a> tag`\n )\n );\n }\n\n const current = parseUri(window.location.href);\n const destination = parseUri(url);\n\n if (url.indexOf(\"#\") === 0) {\n window.location.hash = destination.hash;\n } else if (current.host !== destination.host && destination.host) {\n if (process.env.BABEL_ENV === \"test\") {\n return { wouldHaveReloadedThePage: true };\n } else {\n window.location.href = url;\n }\n } else if (\n destination.pathname === current.pathname &&\n destination.search === current.pathname\n ) {\n window.location.hash = destination.hash;\n } else {\n // different path, host, or query params\n window.history.pushState(null, null, url);\n }\n}\n\nexport function callCapturedEventListeners(eventArguments) {\n if (eventArguments) {\n const eventType = eventArguments[0].type;\n if (routingEventsListeningTo.indexOf(eventType) >= 0) {\n capturedEventListeners[eventType].forEach((listener) => {\n try {\n // The error thrown by application event listener should not break single-spa down.\n // Just like https://github.com/single-spa/single-spa/blob/85f5042dff960e40936f3a5069d56fc9477fac04/src/navigation/reroute.js#L140-L146 did\n listener.apply(this, eventArguments);\n } catch (e) {\n setTimeout(() => {\n throw e;\n });\n }\n });\n }\n }\n}\n\nlet urlRerouteOnly;\n\nexport function setUrlRerouteOnly(val) {\n urlRerouteOnly = val;\n}\n\nfunction urlReroute() {\n reroute([], arguments);\n}\n\nif (isInBrowser) {\n // We will trigger an app change for any routing events.\n window.addEventListener(\"hashchange\", urlReroute);\n window.addEventListener(\"popstate\", urlReroute);\n\n // Monkeypatch addEventListener so that we can ensure correct timing\n const originalAddEventListener = window.addEventListener;\n const originalRemoveEventListener = window.removeEventListener;\n window.addEventListener = function (eventName, fn) {\n if (typeof fn === \"function\") {\n if (\n routingEventsListeningTo.indexOf(eventName) >= 0 &&\n !find(capturedEventListeners[eventName], (listener) => listener === fn)\n ) {\n capturedEventListeners[eventName].push(fn);\n return;\n }\n }\n\n return originalAddEventListener.apply(this, arguments);\n };\n\n window.removeEventListener = function (eventName, listenerFn) {\n if (typeof listenerFn === \"function\") {\n if (routingEventsListeningTo.indexOf(eventName) >= 0) {\n capturedEventListeners[eventName] = capturedEventListeners[\n eventName\n ].filter((fn) => fn !== listenerFn);\n return;\n }\n }\n\n return originalRemoveEventListener.apply(this, arguments);\n };\n\n window.history.pushState = patchedUpdateState(window.history.pushState);\n window.history.replaceState = patchedUpdateState(window.history.replaceState);\n\n function patchedUpdateState(updateState) {\n return function () {\n const urlBefore = window.location.href;\n const result = updateState.apply(this, arguments);\n const urlAfter = window.location.href;\n\n if (!urlRerouteOnly || urlBefore !== urlAfter) {\n urlReroute(createPopStateEvent(window.history.state));\n }\n\n return result;\n };\n }\n\n function createPopStateEvent(state) {\n // https://github.com/single-spa/single-spa/issues/224 and https://github.com/single-spa/single-spa-angular/issues/49\n // We need a popstate event even though the browser doesn't do one by default when you call replaceState, so that\n // all the applications can reroute.\n try {\n return new PopStateEvent(\"popstate\", { state });\n } catch (err) {\n // IE 11 compatibility https://github.com/single-spa/single-spa/issues/299\n // https://docs.microsoft.com/en-us/openspecs/ie_standards/ms-html5e/bd560f47-b349-4d2c-baa8-f1560fb489dd\n const evt = document.createEvent(\"PopStateEvent\");\n evt.initPopStateEvent(\"popstate\", false, false, state);\n return evt;\n }\n }\n\n /* For convenience in `onclick` attributes, we expose a global function for navigating to\n * whatever an <a> tag's href is.\n */\n window.singleSpaNavigate = navigateToUrl;\n}\n\nfunction parseUri(str) {\n const anchor = document.createElement(\"a\");\n anchor.href = str;\n return anchor;\n}\n","import { routingEventsListeningTo } from \"./navigation/navigation-events.js\";\n\nlet hasInitialized = false;\n\nexport function ensureJQuerySupport(jQuery = window.jQuery) {\n if (!jQuery) {\n if (window.$ && window.$.fn && window.$.fn.jquery) {\n jQuery = window.$;\n }\n }\n\n if (jQuery && !hasInitialized) {\n const originalJQueryOn = jQuery.fn.on;\n const originalJQueryOff = jQuery.fn.off;\n\n jQuery.fn.on = function (eventString, fn) {\n return captureRoutingEvents.call(\n this,\n originalJQueryOn,\n window.addEventListener,\n eventString,\n fn,\n arguments\n );\n };\n\n jQuery.fn.off = function (eventString, fn) {\n return captureRoutingEvents.call(\n this,\n originalJQueryOff,\n window.removeEventListener,\n eventString,\n fn,\n arguments\n );\n };\n\n hasInitialized = true;\n }\n}\n\nfunction captureRoutingEvents(\n originalJQueryFunction,\n nativeFunctionToCall,\n eventString,\n fn,\n originalArgs\n) {\n if (typeof eventString !== \"string\") {\n return originalJQueryFunction.apply(this, originalArgs);\n }\n\n const eventNames = eventString.split(/\\s+/);\n eventNames.forEach((eventName) => {\n if (routingEventsListeningTo.indexOf(eventName) >= 0) {\n nativeFunctionToCall(eventName, fn);\n eventString = eventString.replace(eventName, \"\");\n }\n });\n\n if (eventString.trim() === \"\") {\n return this;\n } else {\n return originalJQueryFunction.apply(this, originalArgs);\n }\n}\n","import {\n NOT_MOUNTED,\n UNLOADING,\n NOT_LOADED,\n SKIP_BECAUSE_BROKEN,\n isntActive,\n toName,\n} from \"../applications/app.helpers.js\";\nimport { handleAppError } from \"../applications/app-errors.js\";\nimport { reasonableTime } from \"../applications/timeouts.js\";\n\nconst appsToUnload = {};\n\nexport function toUnloadPromise(app) {\n return Promise.resolve().then(() => {\n const unloadInfo = appsToUnload[toName(app)];\n\n if (!unloadInfo) {\n /* No one has called unloadApplication for this app,\n */\n return app;\n }\n\n if (app.status === NOT_LOADED) {\n /* This app is already unloaded. We just need to clean up\n * anything that still thinks we need to unload the app.\n */\n finishUnloadingApp(app, unloadInfo);\n return app;\n }\n\n if (app.status === UNLOADING) {\n /* Both unloadApplication and reroute want to unload this app.\n * It only needs to be done once, though.\n */\n return unloadInfo.promise.then(() => app);\n }\n\n if (app.status !== NOT_MOUNTED) {\n /* The app cannot be unloaded until it is unmounted.\n */\n return app;\n }\n\n app.status = UNLOADING;\n return reasonableTime(app, \"unload\")\n .then(() => {\n finishUnloadingApp(app, unloadInfo);\n return app;\n })\n .catch((err) => {\n errorUnloadingApp(app, unloadInfo, err);\n return app;\n });\n });\n}\n\nfunction finishUnloadingApp(app, unloadInfo) {\n delete appsToUnload[toName(app)];\n\n // Unloaded apps don't have lifecycles\n delete app.bootstrap;\n delete app.mount;\n delete app.unmount;\n delete app.unload;\n\n app.status = NOT_LOADED;\n\n /* resolve the promise of whoever called unloadApplication.\n * This should be done after all other cleanup/bookkeeping\n */\n unloadInfo.resolve();\n}\n\nfunction errorUnloadingApp(app, unloadInfo, err) {\n delete appsToUnload[toName(app)];\n\n // Unloaded apps don't have lifecycles\n delete app.bootstrap;\n delete app.mount;\n delete app.unmount;\n delete app.unload;\n\n handleAppError(err, app, SKIP_BECAUSE_BROKEN);\n unloadInfo.reject(err);\n}\n\nexport function addAppToUnload(app, promiseGetter, resolve, reject) {\n appsToUnload[toName(app)] = { app, resolve, reject };\n Object.defineProperty(appsToUnload[toName(app)], \"promise\", {\n get: promiseGetter,\n });\n}\n\nexport function getAppUnloadInfo(appName) {\n return appsToUnload[appName];\n}\n\nexport function getAppsToUnload() {\n return Object.keys(appsToUnload)\n .map((appName) => appsToUnload[appName].app)\n .filter(isntActive);\n}\n","import { ensureJQuerySupport } from \"../jquery-support.js\";\nimport {\n isActive,\n isLoaded,\n isntLoaded,\n toName,\n NOT_LOADED,\n shouldBeActive,\n shouldntBeActive,\n isntActive,\n notSkipped,\n withoutLoadErrors,\n} from \"./app.helpers.js\";\nimport { reroute } from \"../navigation/reroute.js\";\nimport { find } from \"../utils/find.js\";\nimport { toUnmountPromise } from \"../lifecycles/unmount.js\";\nimport {\n toUnloadPromise,\n getAppUnloadInfo,\n addAppToUnload,\n} from \"../lifecycles/unload.js\";\nimport { formatErrorMessage } from \"./app-errors.js\";\nimport { isInBrowser } from \"../utils/runtime-environment.js\";\nimport { assign } from \"../utils/assign\";\n\nconst apps = [];\n\nexport function getMountedApps() {\n return apps.filter(isActive).map(toName);\n}\n\nexport function getAppNames() {\n return apps.map(toName);\n}\n\n// used in devtools, not (currently) exposed as a single-spa API\nexport function getRawAppData() {\n return [...apps];\n}\n\nexport function getAppStatus(appName) {\n const app = find(apps, (app) => toName(app) === appName);\n return app ? app.status : null;\n}\n\nexport function registerApplication(\n appNameOrConfig,\n appOrLoadApp,\n activeWhen,\n customProps\n) {\n const registration = sanitizeArguments(\n appNameOrConfig,\n appOrLoadApp,\n activeWhen,\n customProps\n );\n\n if (getAppNames().indexOf(registration.name) !== -1)\n throw Error(\n formatErrorMessage(\n 21,\n __DEV__ &&\n `There is already an app registered with name ${registration.name}`,\n registration.name\n )\n );\n\n apps.push(\n assign(\n {\n loadErrorTime: null,\n status: NOT_LOADED,\n parcels: {},\n devtools: {\n overlays: {\n options: {},\n selectors: [],\n },\n },\n },\n registration\n )\n );\n\n if (isInBrowser) {\n ensureJQuerySupport();\n reroute();\n }\n}\n\nexport function checkActivityFunctions(location) {\n return apps.filter((app) => app.activeWhen(location)).map(toName);\n}\n\nexport function getAppsToLoad() {\n return apps\n .filter(notSkipped)\n .filter(withoutLoadErrors)\n .filter(isntLoaded)\n .filter(shouldBeActive);\n}\n\nexport function getAppsToUnmount() {\n return apps.filter(notSkipped).filter(isActive).filter(shouldntBeActive);\n}\n\nexport function getAppsToMount() {\n return apps\n .filter(notSkipped)\n .filter(isntActive)\n .filter(isLoaded)\n .filter(shouldBeActive);\n}\n\nexport function unregisterApplication(appName) {\n if (!apps.find((app) => toName(app) === appName)) {\n throw Error(\n formatErrorMessage(\n 25,\n __DEV__ &&\n `Cannot unregister application '${appName}' because no such application has been registered`,\n appName\n )\n );\n }\n\n return unloadApplication(appName).then(() => {\n const appIndex = apps.findIndex((app) => toName(app) === appName);\n apps.splice(appIndex, 1);\n });\n}\n\nexport function unloadApplication(appName, opts = { waitForUnmount: false }) {\n if (typeof appName !== \"string\") {\n throw Error(\n formatErrorMessage(\n 26,\n __DEV__ && `unloadApplication requires a string 'appName'`\n )\n );\n }\n const app = find(apps, (App) => toName(App) === appName);\n if (!app) {\n throw Error(\n formatErrorMessage(\n 27,\n __DEV__ &&\n `Could not unload application '${appName}' because no such application has been registered`,\n appName\n )\n );\n }\n\n const appUnloadInfo = getAppUnloadInfo(toName(app));\n if (opts && opts.waitForUnmount) {\n // We need to wait for unmount before unloading the app\n\n if (appUnloadInfo) {\n // Someone else is already waiting for this, too\n return appUnloadInfo.promise;\n } else {\n // We're the first ones wanting the app to be resolved.\n const promise = new Promise((resolve, reject) => {\n addAppToUnload(app, () => promise, resolve, reject);\n });\n return promise;\n }\n } else {\n /* We should unmount the app, unload it, and remount it immediately.\n */\n\n let resultPromise;\n\n if (appUnloadInfo) {\n // Someone else is already waiting for this app to unload\n resultPromise = appUnloadInfo.promise;\n immediatelyUnloadApp(app, appUnloadInfo.resolve, appUnloadInfo.reject);\n } else {\n // We're the first ones wanting the app to be resolved.\n resultPromise = new Promise((resolve, reject) => {\n addAppToUnload(app, () => resultPromise, resolve, reject);\n immediatelyUnloadApp(app, resolve, reject);\n });\n }\n\n return resultPromise;\n }\n}\n\nfunction immediatelyUnloadApp(app, resolve, reject) {\n toUnmountPromise(app)\n .then(toUnloadPromise)\n .then(() => {\n resolve();\n setTimeout(() => {\n // reroute, but the unload promise is done\n reroute();\n });\n })\n .catch(reject);\n}\n\nfunction validateRegisterWithArguments(\n name,\n appOrLoadApp,\n activeWhen,\n customProps\n) {\n if (typeof name !== \"string\" || name.length === 0)\n throw Error(\n formatErrorMessage(\n 20,\n __DEV__ &&\n `The 1st argument to registerApplication must be a non-empty string 'appName'`\n )\n );\n\n if (!appOrLoadApp)\n throw Error(\n formatErrorMessage(\n 23,\n __DEV__ &&\n \"The 2nd argument to registerApplication must be an application or loading application function\"\n )\n );\n\n if (typeof activeWhen !== \"function\")\n throw Error(\n formatErrorMessage(\n 24,\n __DEV__ &&\n \"The 3rd argument to registerApplication must be an activeWhen function\"\n )\n );\n\n if (\n !!customProps &&\n (typeof customProps !== \"object\" || Array.isArray(customProps))\n )\n throw Error(\n formatErrorMessage(\n 22,\n __DEV__ &&\n \"The optional 4th argument is a customProps and must be an object\"\n )\n );\n}\n\nexport function validateRegisterWithConfig(config) {\n if (Array.isArray(config) || config === null)\n throw Error(\n formatErrorMessage(\n 31,\n __DEV__ && \"Configuration object can't be an Array or null!\"\n )\n );\n const validKeys = [\"name\", \"app\", \"activeWhen\", \"customProps\"];\n const invalidKeys = Object.keys(config).reduce(\n (invalidKeys, prop) =>\n validKeys.includes(prop) ? invalidKeys : invalidKeys.concat(prop),\n []\n );\n if (invalidKeys.length !== 0)\n throw Error(\n formatErrorMessage(\n 30,\n __DEV__ &&\n `The configuration object accepts only: ${validKeys.join(\n \", \"\n )}. Invalid keys: ${invalidKeys.join(\", \")}.`\n )\n );\n if (typeof config.name !== \"string\" || config.name.length === 0)\n throw Error(\n formatErrorMessage(\n 20,\n __DEV__ &&\n \"The config.name on registerApplication must be a non-empty string\"\n )\n );\n if (typeof config.app !== \"object\" && typeof config.app !== \"function\")\n throw Error(\n formatErrorMessage(\n 20,\n __DEV__ &&\n \"The config.app on registerApplication must be an application or a loading function\"\n )\n );\n const allowsStringAndFunction = (activeWhen) =>\n typeof activeWhen === \"string\" || typeof activeWhen === \"function\";\n if (\n !allowsStringAndFunction(config.activeWhen) &&\n !(\n Array.isArray(config.activeWhen) &&\n config.activeWhen.every(allowsStringAndFunction)\n )\n )\n throw Error(\n formatErrorMessage(\n 24,\n __DEV__ &&\n \"The config.activeWhen on registerApplication must be a string, function or an array with both\"\n )\n );\n if (\n !(\n !config.customProps ||\n (typeof config.customProps === \"object\" &&\n !Array.isArray(config.customProps))\n )\n )\n throw Error(\n formatErrorMessage(\n 22,\n __DEV__ && \"The optional config.customProps must be an object\"\n )\n );\n}\n\nfunction sanitizeArguments(\n appNameOrConfig,\n appOrLoadApp,\n activeWhen,\n customProps\n) {\n const usingObjectAPI = typeof appNameOrConfig === \"object\";\n\n const registration = {\n name: null,\n loadApp: null,\n activeWhen: null,\n customProps: null,\n };\n\n if (usingObjectAPI) {\n validateRegisterWithConfig(appNameOrConfig);\n registration.name = appNameOrConfig.name;\n registration.loadApp = appNameOrConfig.app;\n registration.activeWhen = appNameOrConfig.activeWhen;\n registration.customProps = appNameOrConfig.customProps;\n } else {\n validateRegisterWithArguments(\n appNameOrConfig,\n appOrLoadApp,\n activeWhen,\n customProps\n );\n registration.name = appNameOrConfig;\n registration.loadApp = appOrLoadApp;\n registration.activeWhen = activeWhen;\n registration.customProps = customProps;\n }\n\n registration.loadApp = sanitizeLoadApp(registration.loadApp);\n registration.customProps = sanitizeCustomProps(registration.customProps);\n registration.activeWhen = sanitizeActiveWhen(registration.activeWhen);\n\n return registration;\n}\n\nfunction sanitizeLoadApp(loadApp) {\n if (typeof loadApp !== \"function\") {\n return () => Promise.resolve(loadApp);\n }\n\n return loadApp;\n}\n\nfunction sanitizeCustomProps(customProps) {\n return customProps ? customProps : {};\n}\n\nfunction sanitizeActiveWhen(activeWhen) {\n let activeWhenArray = Array.isArray(activeWhen) ? activeWhen : [activeWhen];\n activeWhenArray = activeWhenArray.map((activeWhenOrPath) =>\n typeof activeWhenOrPath === \"function\"\n ? activeWhenOrPath\n : pathToActiveWhen(activeWhenOrPath)\n );\n\n return (location) =>\n activeWhenArray.some((activeWhen) => activeWhen(location));\n}\n\nfunction pathToActiveWhen(path) {\n const regex = toDynamicPathValidatorRegex(path);\n\n return (location) => {\n const route = location.href.replace(location.origin, \"\");\n return regex.test(route);\n };\n}\n\nexport function toDynamicPathValidatorRegex(path) {\n let lastIndex = 0,\n inDynamic = false,\n regexStr = \"^\";\n\n for (let charIndex = 0; charIndex < path.length; charIndex++) {\n const char = path[charIndex];\n const startOfDynamic = !inDynamic && char === \":\";\n const endOfDynamic = inDynamic && char === \"/\";\n if (startOfDynamic || endOfDynamic) {\n appendToRegex(charIndex);\n }\n }\n\n appendToRegex(path.length);\n\n return new RegExp(regexStr, \"i\");\n\n function appendToRegex(index) {\n const anyCharMaybeTrailingSlashRegex = \"[^/]+/?\";\n const commonStringSubPath = escapeStrRegex(path.slice(lastIndex, index));\n\n regexStr += inDynamic\n ? anyCharMaybeTrailingSlashRegex\n : commonStringSubPath;\n inDynamic = !inDynamic;\n lastIndex = index;\n }\n\n function escapeStrRegex(str) {\n // borrowed from https://github.com/sindresorhus/escape-string-regexp/blob/master/index.js\n return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\");\n }\n}\n","import CustomEvent from \"custom-event\";\nimport { isStarted } from \"../start.js\";\nimport { toLoadPromise } from \"../lifecycles/load.js\";\nimport { toBootstrapPromise } from \"../lifecycles/bootstrap.js\";\nimport { toMountPromise } from \"../lifecycles/mount.js\";\nimport { toUnmountPromise } from \"../lifecycles/unmount.js\";\nimport {\n getMountedApps,\n getAppsToLoad,\n getAppsToUnmount,\n getAppsToMount,\n} from \"../applications/apps.js\";\nimport { callCapturedEventListeners } from \"./navigation-events.js\";\nimport { getAppsToUnload, toUnloadPromise } from \"../lifecycles/unload.js\";\n\nlet appChangeUnderway = false,\n peopleWaitingOnAppChange = [];\n\nexport function triggerAppChange() {\n // Call reroute with no arguments, intentionally\n return reroute();\n}\n\nexport function reroute(pendingPromises = [], eventArguments) {\n if (appChangeUnderway) {\n return new Promise((resolve, reject) => {\n peopleWaitingOnAppChange.push({\n resolve,\n reject,\n eventArguments,\n });\n });\n }\n\n let wasNoOp = true;\n\n if (isStarted()) {\n appChangeUnderway = true;\n return performAppChanges();\n } else {\n return loadApps();\n }\n\n function loadApps() {\n return Promise.resolve().then(() => {\n const loadPromises = getAppsToLoad().map(toLoadPromise);\n\n if (loadPromises.length > 0) {\n wasNoOp = false;\n }\n\n return (\n Promise.all(loadPromises)\n .then(callAllEventListeners)\n // there are no mounted apps, before start() is called, so we always return []\n .then(() => [])\n .catch((err) => {\n callAllEventListeners();\n throw err;\n })\n );\n });\n }\n\n function performAppChanges() {\n return Promise.resolve().then(() => {\n window.dispatchEvent(\n new CustomEvent(\n \"single-spa:before-routing-event\",\n getCustomEventDetail()\n )\n );\n const unloadPromises = getAppsToUnload().map(toUnloadPromise);\n\n const unmountUnloadPromises = getAppsToUnmount()\n .map(toUnmountPromise)\n .map((unmountPromise) => unmountPromise.then(toUnloadPromise));\n\n const allUnmountPromises = unmountUnloadPromises.concat(unloadPromises);\n if (allUnmountPromises.length > 0) {\n wasNoOp = false;\n }\n\n const unmountAllPromise = Promise.all(allUnmountPromises);\n\n const appsToLoad = getAppsToLoad();\n\n /* We load and bootstrap apps while other apps are unmounting, but we\n * wait to mount the app until all apps are finishing unmounting\n */\n const loadThenMountPromises = appsToLoad.map((app) => {\n return toLoadPromise(app)\n .then(toBootstrapPromise)\n .then((app) => {\n return unmountAllPromise.then(() => toMountPromise(app));\n });\n });\n if (loadThenMountPromises.length > 0) {\n wasNoOp = false;\n }\n\n /* These are the apps that are already bootstrapped and just need\n * to be mounted. They each wait for all unmounting apps to finish up\n * before they mount.\n */\n const mountPromises = getAppsToMount()\n .filter((appToMount) => appsToLoad.indexOf(appToMount) < 0)\n .map((appToMount) => {\n return toBootstrapPromise(appToMount)\n .then(() => unmountAllPromise)\n .then(() => toMountPromise(appToMount));\n });\n if (mountPromises.length > 0) {\n wasNoOp = false;\n }\n return unmountAllPromise\n .catch((err) => {\n callAllEventListeners();\n throw err;\n })\n .then(() => {\n /* Now that the apps that needed to be unmounted are unmounted, their DOM navigation\n * events (like hashchange or popstate) should have been cleaned up. So it's safe\n * to let the remaining captured event listeners to handle about the DOM event.\n */\n callAllEventListeners();\n\n return Promise.all(loadThenMountPromises.concat(mountPromises))\n .catch((err) => {\n pendingPromises.forEach((promise) => promise.reject(err));\n throw err;\n })\n .then(finishUpAndReturn);\n });\n });\n }\n\n function finishUpAndReturn() {\n const returnValue = getMountedApps();\n pendingPromises.forEach((promise) => promise.resolve(returnValue));\n\n try {\n const appChangeEventName = wasNoOp\n ? \"single-spa:no-app-change\"\n : \"single-spa:app-change\";\n window.dispatchEvent(\n new CustomEvent(appChangeEventName, getCustomEventDetail())\n );\n window.dispatchEvent(\n new CustomEvent(\"single-spa:routing-event\", getCustomEventDetail())\n );\n } catch (err) {\n /* We use a setTimeout because if someone else's event handler throws an error, single-spa\n * needs to carry on. If a listener to the event throws an error, it's their own fault, not\n * single-spa's.\n */\n setTimeout(() => {\n throw err;\n });\n }\n\n /* Setting this allows for subsequent calls to reroute() to actually perform\n * a reroute instead of just getting queued behind the current reroute call.\n * We want to do this after the mounting/unmounting is done but before we\n * resolve the promise for the `reroute` function.\n */\n appChangeUnderway = false;\n\n if (peopleWaitingOnAppChange.length > 0) {\n /* While we were rerouting, someone else triggered another reroute that got queued.\n * So we need reroute again.\n */\n const nextPendingPromises = peopleWaitingOnAppChange;\n peopleWaitingOnAppChange = [];\n reroute(nextPendingPromises);\n }\n\n return returnValue;\n }\n\n /* We need to call all event listeners that have been delayed because they were\n * waiting on single-spa. This includes haschange and popstate events for both\n * the current run of performAppChanges(), but also all of the queued event listeners.\n * We want to call the listeners in the same order as if they had not been delayed by\n * single-spa, which means queued ones first and then the most recent one.\n */\n function callAllEventListeners() {\n pendingPromises.forEach((pendingPromise) => {\n callCapturedEventListeners(pendingPromise.eventArguments);\n });\n\n callCapturedEventListeners(eventArguments);\n }\n\n function getCustomEventDetail() {\n const result = { detail: {} };\n\n if (eventArguments && eventArguments[0]) {\n result.detail.originalEvent = eventArguments[0];\n }\n\n return result;\n }\n}\n","import { reroute } from \"./navigation/reroute.js\";\nimport { formatErrorMessage } from \"./applications/app-errors.js\";\nimport { setUrlRerouteOnly } from \"./navigation/navigation-events.js\";\nimport { isInBrowser } from \"./utils/runtime-environment.js\";\n\nlet started = false;\n\nexport function start(opts) {\n started = true;\n if (opts && opts.urlRerouteOnly) {\n setUrlRerouteOnly(opts.urlRerouteOnly);\n }\n if (isInBrowser) {\n reroute();\n }\n}\n\nexport function isStarted() {\n return started;\n}\n\nif (isInBrowser) {\n setTimeout(() => {\n if (!started) {\n console.warn(\n formatErrorMessage(\n 1,\n __DEV__ &&\n `singleSpa.start() has not been called, 5000ms after single-spa was loaded. Before start() is called, apps can be declared and loaded, but not bootstrapped or mounted.`\n )\n );\n }\n }, 5000);\n}\n","import { getRawAppData, unregisterApplication } from \"../applications/apps\";\nimport { reroute } from \"../navigation/reroute\";\nimport { NOT_LOADED } from \"../applications/app.helpers\";\nimport { toLoadPromise } from \"../lifecycles/load\";\nimport { toBootstrapPromise } from \"../lifecycles/bootstrap\";\n\nexport default {\n getRawAppData,\n reroute,\n NOT_LOADED,\n toLoadPromise,\n toBootstrapPromise,\n unregisterApplication,\n};\n","export { start } from \"./start.js\";\nexport { ensureJQuerySupport } from \"./jquery-support.js\";\nexport {\n setBootstrapMaxTime,\n setMountMaxTime,\n setUnmountMaxTime,\n setUnloadMaxTime,\n} from \"./applications/timeouts.js\";\nexport {\n registerApplication,\n getMountedApps,\n getAppStatus,\n unloadApplication,\n checkActivityFunctions,\n getAppNames,\n} from \"./applications/apps.js\";\nexport { navigateToUrl } from \"./navigation/navigation-events.js\";\nexport { triggerAppChange } from \"./navigation/reroute.js\";\nexport {\n addErrorHandler,\n removeErrorHandler,\n} from \"./applications/app-errors.js\";\nexport { mountRootParcel } from \"./parcels/mount-parcel.js\";\n\nexport {\n NOT_LOADED,\n LOADING_SOURCE_CODE,\n NOT_BOOTSTRAPPED,\n BOOTSTRAPPING,\n NOT_MOUNTED,\n MOUNTING,\n UPDATING,\n LOAD_ERROR,\n MOUNTED,\n UNMOUNTING,\n SKIP_BECAUSE_BROKEN,\n} from \"./applications/app.helpers.js\";\n\nimport devtools from \"./devtools/devtools\";\nimport { isInBrowser } from \"./utils/runtime-environment.js\";\n\nif (isInBrowser && window.__SINGLE_SPA_DEVTOOLS__) {\n window.__SINGLE_SPA_DEVTOOLS__.exposedMethods = devtools;\n}\n"],"names":["global","errorHandlers","handleAppError","err","app","newStatus","transformedErr","transformErr","length","forEach","handler","setTimeout","addErrorHandler","Error","formatErrorMessage","push","removeErrorHandler","removedSomething","filter","h","isHandler","code","msg","args","join","ogErr","appOrParcel","errPrefix","objectType","toName","status","result","message","console","warn","JSON","stringify","appOrParcelName","NOT_LOADED","LOADING_SOURCE_CODE","NOT_BOOTSTRAPPED","BOOTSTRAPPING","NOT_MOUNTED","MOUNTING","MOUNTED","UPDATING","UNMOUNTING","UNLOADING","LOAD_ERROR","SKIP_BECAUSE_BROKEN","isActive","isntActive","isLoaded","isntLoaded","shouldBeActive","activeWhen","window","location","shouldntBeActive","notSkipped","item","withoutLoadErrors","Date","getTime","loadErrorTime","name","isParcel","Boolean","unmountThisParcel","assign","i","arguments","key","find","arr","func","validLifecycleFn","fn","isArrayOfFns","Array","isArray","flattenFnArray","lifecycle","fns","Promise","resolve","type","props","reduce","resultPromise","index","then","thisPromise","smellsLikeAPromise","reject","promise","catch","toBootstrapPromise","hardFail","reasonableTime","toUnmountPromise","unmountChildrenParcels","Object","keys","parcels","map","parcelId","all","unmountAppOrParcel","parcelError","parentError","beforeFirstMountFired","firstMountFired","toMountPromise","dispatchEvent","CustomEvent","setSkipBecauseBroken","toUpdatePromise","parcel","parcelCount","rootParcels","mountRootParcel","mountParcel","apply","config","customProps","owningAppOrParcel","domElement","id","passedConfigLoadingFunction","configLoadingFunction","parentName","value","resolveUnmount","rejectUnmount","externalRepresentation","loadPromise","bootstrap","mount","unmount","update","timeouts","ensureValidAppTimeouts","promiseWithoutReturnValue","bootstrapPromise","mountPromise","unmountPromise","getStatus","getProps","bind","singleSpa","unmountSelf","defaultWarningMillis","globalTimeoutConfig","millis","dieOnTimeout","warningMillis","unload","setBootstrapMaxTime","time","setMountMaxTime","setUnmountMaxTime","setUnloadMaxTime","timeoutConfig","warningPeriod","finished","errored","val","maybeTimingOut","errMsg","shouldError","error","numWarnings","numMillis","toLoadPromise","appOpts","isUserErr","loadApp","validationErrMessage","validationErrCode","appOptsStr","devtools","overlays","isInBrowser","capturedEventListeners","hashchange","popstate","routingEventsListeningTo","navigateToUrl","obj","url","href","currentTarget","preventDefault","current","parseUri","destination","indexOf","hash","host","pathname","search","history","pushState","callCapturedEventListeners","eventArguments","eventType","listener","e","urlRerouteOnly","setUrlRerouteOnly","urlReroute","reroute","addEventListener","originalAddEventListener","originalRemoveEventListener","removeEventListener","eventName","listenerFn","patchedUpdateState","replaceState","updateState","urlBefore","urlAfter","createPopStateEvent","state","PopStateEvent","evt","document","createEvent","initPopStateEvent","singleSpaNavigate","str","anchor","createElement","hasInitialized","ensureJQuerySupport","jQuery","$","jquery","originalJQueryOn","on","originalJQueryOff","off","eventString","captureRoutingEvents","call","originalJQueryFunction","nativeFunctionToCall","originalArgs","eventNames","split","replace","trim","appsToUnload","toUnloadPromise","unloadInfo","finishUnloadingApp","errorUnloadingApp","addAppToUnload","promiseGetter","defineProperty","get","getAppUnloadInfo","appName","getAppsToUnload","apps","getMountedApps","getAppNames","getRawAppData","getAppStatus","registerApplication","appNameOrConfig","appOrLoadApp","registration","sanitizeArguments","options","selectors","checkActivityFunctions","getAppsToLoad","getAppsToUnmount","getAppsToMount","unregisterApplication","unloadApplication","appIndex","findIndex","splice","opts","waitForUnmount","App","appUnloadInfo","immediatelyUnloadApp","validateRegisterWithArguments","validateRegisterWithConfig","validKeys","invalidKeys","prop","includes","concat","allowsStringAndFunction","every","usingObjectAPI","sanitizeLoadApp","sanitizeCustomProps","sanitizeActiveWhen","activeWhenArray","activeWhenOrPath","pathToActiveWhen","some","path","regex","toDynamicPathValidatorRegex","route","origin","test","lastIndex","inDynamic","regexStr","charIndex","char","startOfDynamic","endOfDynamic","appendToRegex","RegExp","anyCharMaybeTrailingSlashRegex","commonStringSubPath","escapeStrRegex","slice","appChangeUnderway","peopleWaitingOnAppChange","triggerAppChange","pendingPromises","wasNoOp","isStarted","performAppChanges","loadApps","loadPromises","callAllEventListeners","getCustomEventDetail","unloadPromises","unmountUnloadPromises","allUnmountPromises","unmountAllPromise","appsToLoad","loadThenMountPromises","mountPromises","appToMount","finishUpAndReturn","returnValue","appChangeEventName","nextPendingPromises","pendingPromise","detail","originalEvent","started","start","__SINGLE_SPA_DEVTOOLS__","exposedMethods"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,IAAI,iBAAiB,GAAGA,cAAM,CAAC,WAAW,CAAC;;AAE3C,SAAS,SAAS,IAAI;EACpB,IAAI;IACF,IAAI,CAAC,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACjE,QAAQ,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;GACpD,CAAC,OAAO,CAAC,EAAE;GACX;EACD,OAAO,KAAK,CAAC;CACd;;;;;;;;;;AAUD,eAAc,GAAG,SAAS,EAAE,GAAG,iBAAiB;;;AAGhD,WAAW,KAAK,OAAO,QAAQ,IAAI,UAAU,KAAK,OAAO,QAAQ,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;EAClH,IAAI,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;EAC5C,IAAI,MAAM,EAAE;IACV,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;GAC3E,MAAM;IACL,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;GAC/C;EACD,OAAO,CAAC,CAAC;CACV;;;AAGD,SAAS,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE;EAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;EACrC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;EACd,IAAI,MAAM,EAAE;IACV,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;GAC1B,MAAM;IACL,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;IACrB,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;GACnB;EACD,OAAO,CAAC,CAAC;;;AC5CX,IAAIC,aAAa,GAAG,EAApB;AAEO,SAASC,cAAT,CAAwBC,GAAxB,EAA6BC,GAA7B,EAAkCC,SAAlC,EAA6C;AAClD,QAAMC,cAAc,GAAGC,YAAY,CAACJ,GAAD,EAAMC,GAAN,EAAWC,SAAX,CAAnC;;AAEA,MAAIJ,aAAa,CAACO,MAAlB,EAA0B;AACxBP,IAAAA,aAAa,CAACQ,OAAd,CAAuBC,OAAD,IAAaA,OAAO,CAACJ,cAAD,CAA1C;AACD,GAFD,MAEO;AACLK,IAAAA,UAAU,CAAC,MAAM;AACf,YAAML,cAAN;AACD,KAFS,CAAV;AAGD;AACF;AAEM,SAASM,eAAT,CAAyBF,OAAzB,EAAkC;AACvC,MAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;AACjC,UAAMG,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEL,+CAFK,CADT,CAAX;AAMD;;AAEDb,EAAAA,aAAa,CAACc,IAAd,CAAmBL,OAAnB;AACD;AAEM,SAASM,kBAAT,CAA4BN,OAA5B,EAAqC;AAC1C,MAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;AACjC,UAAMG,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEL,+CAFK,CADT,CAAX;AAMD;;AAED,MAAIG,gBAAgB,GAAG,KAAvB;AACAhB,EAAAA,aAAa,GAAGA,aAAa,CAACiB,MAAd,CAAsBC,CAAD,IAAO;AAC1C,UAAMC,SAAS,GAAGD,CAAC,KAAKT,OAAxB;AACAO,IAAAA,gBAAgB,GAAGA,gBAAgB,IAAIG,SAAvC;AACA,WAAO,CAACA,SAAR;AACD,GAJe,CAAhB;AAMA,SAAOH,gBAAP;AACD;AAEM,SAASH,kBAAT,CAA4BO,IAA5B,EAAkCC,GAAlC,EAAuC,GAAGC,IAA1C,EAAgD;AACrD,SAAQ,gCAA+BF,IAAK,KAC1CC,GAAG,GAAGA,GAAG,GAAG,GAAT,GAAe,EACnB,6CAA4CD,IAAK,GAChDE,IAAI,CAACf,MAAL,GAAe,QAAOe,IAAI,CAACC,IAAL,CAAU,OAAV,CAAmB,EAAzC,GAA6C,EAC9C,EAJD;AAKD;AAEM,SAASjB,YAAT,CAAsBkB,KAAtB,EAA6BC,WAA7B,EAA0CrB,SAA1C,EAAqD;AAC1D,QAAMsB,SAAS,GAAI,GAAEC,UAAU,CAACF,WAAD,CAAc,KAAIG,MAAM,CACrDH,WADqD,CAErD,oBAAmBA,WAAW,CAACI,MAAO,IAFxC;AAIA,MAAIC,MAAJ;;AAEA,MAAIN,KAAK,YAAYZ,KAArB,EAA4B;AAC1B,QAAI;AACFY,MAAAA,KAAK,CAACO,OAAN,GAAgBL,SAAS,GAAGF,KAAK,CAACO,OAAlC;AACD,KAFD,CAEE,OAAO7B,GAAP,EAAY;AACZ;;;AAGD;;AACD4B,IAAAA,MAAM,GAAGN,KAAT;AACD,GATD,MASO;AACLQ,IAAAA,OAAO,CAACC,IAAR,CACEpB,kBAAkB,CAChB,EADgB,GAGb,SAAQY,WAAW,CAACI,MAAO,MAAKD,MAAM,CACrCH,WADqC,CAErC,8GALY,EAMhBA,WAAW,CAACI,MANI,EAOhBD,MAAM,CAACH,WAAD,CAPU,CADpB;;AAWA,QAAI;AACFK,MAAAA,MAAM,GAAGlB,KAAK,CAACc,SAAS,GAAGQ,IAAI,CAACC,SAAL,CAAeX,KAAf,CAAb,CAAd;AACD,KAFD,CAEE,OAAOtB,GAAP,EAAY;AACZ;AACA4B,MAAAA,MAAM,GAAGN,KAAT;AACD;AACF;;AAEDM,EAAAA,MAAM,CAACM,eAAP,GAAyBR,MAAM,CAACH,WAAD,CAA/B,CApC0D;AAuC1D;;AACAA,EAAAA,WAAW,CAACI,MAAZ,GAAqBzB,SAArB;AAEA,SAAO0B,MAAP;AACD;;MCjGYO,UAAU,GAAG;MACbC,mBAAmB,GAAG;MACtBC,gBAAgB,GAAG;MACnBC,aAAa,GAAG;MAChBC,WAAW,GAAG;MACdC,QAAQ,GAAG;MACXC,OAAO,GAAG;MACVC,QAAQ,GAAG;MACXC,UAAU,GAAG;AACnB,MAAMC,SAAS,GAAG,WAAlB;MACMC,UAAU,GAAG;MACbC,mBAAmB,GAAG;AAE5B,SAASC,QAAT,CAAkB9C,GAAlB,EAAuB;AAC5B,SAAOA,GAAG,CAAC0B,MAAJ,KAAec,OAAtB;AACD;AAEM,SAASO,UAAT,CAAoB/C,GAApB,EAAyB;AAC9B,SAAO,CAAC8C,QAAQ,CAAC9C,GAAD,CAAhB;AACD;AAEM,SAASgD,QAAT,CAAkBhD,GAAlB,EAAuB;AAC5B,SACEA,GAAG,CAAC0B,MAAJ,KAAeQ,UAAf,IACAlC,GAAG,CAAC0B,MAAJ,KAAeS,mBADf,IAEAnC,GAAG,CAAC0B,MAAJ,KAAekB,UAHjB;AAKD;AAEM,SAASK,UAAT,CAAoBjD,GAApB,EAAyB;AAC9B,SAAO,CAACgD,QAAQ,CAAChD,GAAD,CAAhB;AACD;AAEM,SAASkD,cAAT,CAAwBlD,GAAxB,EAA6B;AAClC,MAAI;AACF,WAAOA,GAAG,CAACmD,UAAJ,CAAeC,MAAM,CAACC,QAAtB,CAAP;AACD,GAFD,CAEE,OAAOtD,GAAP,EAAY;AACZD,IAAAA,cAAc,CAACC,GAAD,EAAMC,GAAN,EAAW6C,mBAAX,CAAd;AACD;AACF;AAEM,SAASS,gBAAT,CAA0BtD,GAA1B,EAA+B;AACpC,MAAI;AACF,WAAO,CAACkD,cAAc,CAAClD,GAAD,CAAtB;AACD,GAFD,CAEE,OAAOD,GAAP,EAAY;AACZD,IAAAA,cAAc,CAACC,GAAD,EAAMC,GAAN,EAAW6C,mBAAX,CAAd;AACD;AACF;AAEM,SAASU,UAAT,CAAoBC,IAApB,EAA0B;AAC/B,SACEA,IAAI,KAAKX,mBAAT,KACC,CAACW,IAAD,IAASA,IAAI,CAAC9B,MAAL,KAAgBmB,mBAD1B,CADF;AAID;AAEM,SAASY,iBAAT,CAA2BzD,GAA3B,EAAgC;AACrC,SAAOA,GAAG,CAAC0B,MAAJ,KAAekB,UAAf,GACH,IAAIc,IAAJ,GAAWC,OAAX,KAAuB3D,GAAG,CAAC4D,aAA3B,IAA4C,GADzC,GAEH,IAFJ;AAGD;AAEM,SAASnC,MAAT,CAAgBzB,GAAhB,EAAqB;AAC1B,SAAOA,GAAG,CAAC6D,IAAX;AACD;AAEM,SAASC,QAAT,CAAkBxC,WAAlB,EAA+B;AACpC,SAAOyC,OAAO,CAACzC,WAAW,CAAC0C,iBAAb,CAAd;AACD;AAEM,SAASxC,UAAT,CAAoBF,WAApB,EAAiC;AACtC,SAAOwC,QAAQ,CAACxC,WAAD,CAAR,GAAwB,QAAxB,GAAmC,aAA1C;AACD;;AC3ED;AACA;AACO,SAAS2C,MAAT,GAAkB;AACvB,OAAK,IAAIC,CAAC,GAAGC,SAAS,CAAC/D,MAAV,GAAmB,CAAhC,EAAmC8D,CAAC,GAAG,CAAvC,EAA0CA,CAAC,EAA3C,EAA+C;AAC7C,SAAK,IAAIE,GAAT,IAAgBD,SAAS,CAACD,CAAD,CAAzB,EAA8B;AAC5B,UAAIE,GAAG,KAAK,WAAZ,EAAyB;AACvB;AACD;;AACDD,MAAAA,SAAS,CAACD,CAAC,GAAG,CAAL,CAAT,CAAiBE,GAAjB,IAAwBD,SAAS,CAACD,CAAD,CAAT,CAAaE,GAAb,CAAxB;AACD;AACF;;AAED,SAAOD,SAAS,CAAC,CAAD,CAAhB;AACD;;ACbD;;;AAIO,SAASE,IAAT,CAAcC,GAAd,EAAmBC,IAAnB,EAAyB;AAC9B,OAAK,IAAIL,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGI,GAAG,CAAClE,MAAxB,EAAgC8D,CAAC,EAAjC,EAAqC;AACnC,QAAIK,IAAI,CAACD,GAAG,CAACJ,CAAD,CAAJ,CAAR,EAAkB;AAChB,aAAOI,GAAG,CAACJ,CAAD,CAAV;AACD;AACF;;AAED,SAAO,IAAP;AACD;;ACRM,SAASM,gBAAT,CAA0BC,EAA1B,EAA8B;AACnC,SAAOA,EAAE,KAAK,OAAOA,EAAP,KAAc,UAAd,IAA4BC,YAAY,CAACD,EAAD,CAA7C,CAAT;;AAEA,WAASC,YAAT,CAAsBJ,GAAtB,EAA2B;AACzB,WACEK,KAAK,CAACC,OAAN,CAAcN,GAAd,KAAsB,CAACD,IAAI,CAACC,GAAD,EAAOd,IAAD,IAAU,OAAOA,IAAP,KAAgB,UAAhC,CAD7B;AAGD;AACF;AAEM,SAASqB,cAAT,CAAwBvD,WAAxB,EAAqCwD,SAArC,EAAgD;AACrD,MAAIC,GAAG,GAAGzD,WAAW,CAACwD,SAAD,CAAX,IAA0B,EAApC;AACAC,EAAAA,GAAG,GAAGJ,KAAK,CAACC,OAAN,CAAcG,GAAd,IAAqBA,GAArB,GAA2B,CAACA,GAAD,CAAjC;;AACA,MAAIA,GAAG,CAAC3E,MAAJ,KAAe,CAAnB,EAAsB;AACpB2E,IAAAA,GAAG,GAAG,CAAC,MAAMC,OAAO,CAACC,OAAR,EAAP,CAAN;AACD;;AAED,QAAMC,IAAI,GAAG1D,UAAU,CAACF,WAAD,CAAvB;AACA,QAAMuC,IAAI,GAAGpC,MAAM,CAACH,WAAD,CAAnB;AAEA,SAAO,UAAU6D,KAAV,EAAiB;AACtB,WAAOJ,GAAG,CAACK,MAAJ,CAAW,CAACC,aAAD,EAAgBZ,EAAhB,EAAoBa,KAApB,KAA8B;AAC9C,aAAOD,aAAa,CAACE,IAAd,CAAmB,MAAM;AAC9B,cAAMC,WAAW,GAAGf,EAAE,CAACU,KAAD,CAAtB;AACA,eAAOM,kBAAkB,CAACD,WAAD,CAAlB,GACHA,WADG,GAEHR,OAAO,CAACU,MAAR,CACEhF,kBAAkB,CAChB,EADgB,GAGb,UAASwE,IAAK,IAAGrB,IAAK,4BAA2BiB,SAAU,mBAAkBQ,KAAM,2BAHtE,EAIhBJ,IAJgB,EAKhBrB,IALgB,EAMhBiB,SANgB,EAOhBQ,KAPgB,CADpB,CAFJ;AAaD,OAfM,CAAP;AAgBD,KAjBM,EAiBJN,OAAO,CAACC,OAAR,EAjBI,CAAP;AAkBD,GAnBD;AAoBD;AAEM,SAASQ,kBAAT,CAA4BE,OAA5B,EAAqC;AAC1C,SACEA,OAAO,IACP,OAAOA,OAAO,CAACJ,IAAf,KAAwB,UADxB,IAEA,OAAOI,OAAO,CAACC,KAAf,KAAyB,UAH3B;AAKD;;AC3CM,SAASC,kBAAT,CAA4BvE,WAA5B,EAAyCwE,QAAzC,EAAmD;AACxD,SAAOd,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,MAAM;AAClC,QAAIjE,WAAW,CAACI,MAAZ,KAAuBU,gBAA3B,EAA6C;AAC3C,aAAOd,WAAP;AACD;;AAEDA,IAAAA,WAAW,CAACI,MAAZ,GAAqBW,aAArB;AAEA,WAAO0D,cAAc,CAACzE,WAAD,EAAc,WAAd,CAAd,CACJiE,IADI,CACC,MAAM;AACVjE,MAAAA,WAAW,CAACI,MAAZ,GAAqBY,WAArB;AACA,aAAOhB,WAAP;AACD,KAJI,EAKJsE,KALI,CAKG7F,GAAD,IAAS;AACd,UAAI+F,QAAJ,EAAc;AACZ,cAAM3F,YAAY,CAACJ,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAlB;AACD,OAFD,MAEO;AACL/C,QAAAA,cAAc,CAACC,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAd;AACA,eAAOvB,WAAP;AACD;AACF,KAZI,CAAP;AAaD,GApBM,CAAP;AAqBD;;ACtBM,SAAS0E,gBAAT,CAA0B1E,WAA1B,EAAuCwE,QAAvC,EAAiD;AACtD,SAAOd,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,MAAM;AAClC,QAAIjE,WAAW,CAACI,MAAZ,KAAuBc,OAA3B,EAAoC;AAClC,aAAOlB,WAAP;AACD;;AACDA,IAAAA,WAAW,CAACI,MAAZ,GAAqBgB,UAArB;AAEA,UAAMuD,sBAAsB,GAAGC,MAAM,CAACC,IAAP,CAC7B7E,WAAW,CAAC8E,OADiB,EAE7BC,GAF6B,CAExBC,QAAD,IAAchF,WAAW,CAAC8E,OAAZ,CAAoBE,QAApB,EAA8BtC,iBAA9B,EAFW,CAA/B;AAMA,WAAOgB,OAAO,CAACuB,GAAR,CAAYN,sBAAZ,EACJV,IADI,CACCiB,kBADD,EACsBC,WAAD,IAAiB;AACzC;AACA,aAAOD,kBAAkB,GAAGjB,IAArB,CAA0B,MAAM;AACrC;AACA,cAAMmB,WAAW,GAAGjG,KAAK,CAACgG,WAAW,CAAC7E,OAAb,CAAzB;;AACA,YAAIkE,QAAJ,EAAc;AACZ,gBAAM3F,YAAY,CAACuG,WAAD,EAAcpF,WAAd,EAA2BuB,mBAA3B,CAAlB;AACD,SAFD,MAEO;AACL/C,UAAAA,cAAc,CAAC4G,WAAD,EAAcpF,WAAd,EAA2BuB,mBAA3B,CAAd;AACD;AACF,OARM,CAAP;AASD,KAZI,EAaJ0C,IAbI,CAaC,MAAMjE,WAbP,CAAP;;AAeA,aAASkF,kBAAT,GAA8B;AAC5B;AACA,aAAOT,cAAc,CAACzE,WAAD,EAAc,SAAd,CAAd,CACJiE,IADI,CACC,MAAM;AACV;AACA,QAAkB;AAChBjE,UAAAA,WAAW,CAACI,MAAZ,GAAqBY,WAArB;AACD;AACF,OANI,EAOJsD,KAPI,CAOG7F,GAAD,IAAS;AACd,YAAI+F,QAAJ,EAAc;AACZ,gBAAM3F,YAAY,CAACJ,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAlB;AACD,SAFD,MAEO;AACL/C,UAAAA,cAAc,CAACC,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAd;AACD;AACF,OAbI,CAAP;AAcD;AACF,GA5CM,CAAP;AA6CD;;AC7CD,IAAI8D,qBAAqB,GAAG,KAA5B;AACA,IAAIC,eAAe,GAAG,KAAtB;AAEO,SAASC,cAAT,CAAwBvF,WAAxB,EAAqCwE,QAArC,EAA+C;AACpD,SAAOd,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,MAAM;AAClC,QAAIjE,WAAW,CAACI,MAAZ,KAAuBY,WAA3B,EAAwC;AACtC,aAAOhB,WAAP;AACD;;AAED,QAAI,CAACqF,qBAAL,EAA4B;AAC1BvD,MAAAA,MAAM,CAAC0D,aAAP,CAAqB,IAAIC,WAAJ,CAAgB,+BAAhB,CAArB;AACAJ,MAAAA,qBAAqB,GAAG,IAAxB;AACD;;AAED,WAAOZ,cAAc,CAACzE,WAAD,EAAc,OAAd,CAAd,CACJiE,IADI,CACC,MAAM;AACVjE,MAAAA,WAAW,CAACI,MAAZ,GAAqBc,OAArB;;AAEA,UAAI,CAACoE,eAAL,EAAsB;AACpBxD,QAAAA,MAAM,CAAC0D,aAAP,CAAqB,IAAIC,WAAJ,CAAgB,wBAAhB,CAArB;AACAH,QAAAA,eAAe,GAAG,IAAlB;AACD;;AAED,aAAOtF,WAAP;AACD,KAVI,EAWJsE,KAXI,CAWG7F,GAAD,IAAS;AACd;AACA;AACA;AACAuB,MAAAA,WAAW,CAACI,MAAZ,GAAqBc,OAArB;AACA,aAAOwD,gBAAgB,CAAC1E,WAAD,EAAc,IAAd,CAAhB,CAAoCiE,IAApC,CACLyB,oBADK,EAELA,oBAFK,CAAP;;AAKA,eAASA,oBAAT,GAAgC;AAC9B,YAAI,CAAClB,QAAL,EAAe;AACbhG,UAAAA,cAAc,CAACC,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAd;AACA,iBAAOvB,WAAP;AACD,SAHD,MAGO;AACL,gBAAMnB,YAAY,CAACJ,GAAD,EAAMuB,WAAN,EAAmBuB,mBAAnB,CAAlB;AACD;AACF;AACF,KA7BI,CAAP;AA8BD,GAxCM,CAAP;AAyCD;;AC3CM,SAASoE,eAAT,CAAyBC,MAAzB,EAAiC;AACtC,SAAOlC,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,MAAM;AAClC,QAAI2B,MAAM,CAACxF,MAAP,KAAkBc,OAAtB,EAA+B;AAC7B,YAAM/B,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,yBAAwBe,MAAM,CAC7ByF,MAD6B,CAE7B,6BALY,EAMhBzF,MAAM,CAACyF,MAAD,CANU,CADT,CAAX;AAUD;;AAEDA,IAAAA,MAAM,CAACxF,MAAP,GAAgBe,QAAhB;AAEA,WAAOsD,cAAc,CAACmB,MAAD,EAAS,QAAT,CAAd,CACJ3B,IADI,CACC,MAAM;AACV2B,MAAAA,MAAM,CAACxF,MAAP,GAAgBc,OAAhB;AACA,aAAO0E,MAAP;AACD,KAJI,EAKJtB,KALI,CAKG7F,GAAD,IAAS;AACd,YAAMI,YAAY,CAACJ,GAAD,EAAMmH,MAAN,EAAcrE,mBAAd,CAAlB;AACD,KAPI,CAAP;AAQD,GAxBM,CAAP;AAyBD;;ACnBD,IAAIsE,WAAW,GAAG,CAAlB;AACA,MAAMC,WAAW,GAAG;AAAEhB,EAAAA,OAAO,EAAE;AAAX,CAApB;;AAGO,SAASiB,eAAT,GAA2B;AAChC,SAAOC,WAAW,CAACC,KAAZ,CAAkBH,WAAlB,EAA+BjD,SAA/B,CAAP;AACD;AAEM,SAASmD,WAAT,CAAqBE,MAArB,EAA6BC,WAA7B,EAA0C;AAC/C,QAAMC,iBAAiB,GAAG,IAA1B,CAD+C;;AAI/C,MAAI,CAACF,MAAD,IAAY,OAAOA,MAAP,KAAkB,QAAlB,IAA8B,OAAOA,MAAP,KAAkB,UAAhE,EAA6E;AAC3E,UAAM/G,KAAK,CACTC,kBAAkB,CAChB,CADgB,GAGd,wEAHc,CADT,CAAX;AAOD;;AAED,MAAI8G,MAAM,CAAC3D,IAAP,IAAe,OAAO2D,MAAM,CAAC3D,IAAd,KAAuB,QAA1C,EAAoD;AAClD,UAAMpD,KAAK,CACTC,kBAAkB,CAChB,CADgB,GAGb,wDAAuD,OAAO8G,MAAM,CAAC3D,IAAK,EAH7D,EAIhB,OAAO2D,MAAM,CAAC3D,IAJE,CADT,CAAX;AAQD;;AAED,MAAI,OAAO4D,WAAP,KAAuB,QAA3B,EAAqC;AACnC,UAAMhH,KAAK,CACTC,kBAAkB,CAChB,CADgB,GAGb,UAASmD,IAAK,+DAA8D,OAAO4D,WAAY,EAHlF,EAIhB5D,IAJgB,EAKhB,OAAO4D,WALS,CADT,CAAX;AASD;;AAED,MAAI,CAACA,WAAW,CAACE,UAAjB,EAA6B;AAC3B,UAAMlH,KAAK,CACTC,kBAAkB,CAChB,CADgB,GAGb,UAASmD,IAAK,4DAHD,EAIhBA,IAJgB,CADT,CAAX;AAQD;;AAED,QAAM+D,EAAE,GAAGT,WAAW,EAAtB;AAEA,QAAMU,2BAA2B,GAAG,OAAOL,MAAP,KAAkB,UAAtD;AACA,QAAMM,qBAAqB,GAAGD,2BAA2B,GACrDL,MADqD,GAErD,MAAMxC,OAAO,CAACC,OAAR,CAAgBuC,MAAhB,CAFV,CAnD+C;;AAwD/C,QAAMN,MAAM,GAAG;AACbU,IAAAA,EADa;AAEbxB,IAAAA,OAAO,EAAE,EAFI;AAGb1E,IAAAA,MAAM,EAAEmG,2BAA2B,GAC/B1F,mBAD+B,GAE/BC,gBALS;AAMbqF,IAAAA,WANa;AAObM,IAAAA,UAAU,EAAEtG,MAAM,CAACiG,iBAAD,CAPL;;AAQb1D,IAAAA,iBAAiB,GAAG;AAClB,UAAIkD,MAAM,CAACxF,MAAP,KAAkBc,OAAtB,EAA+B;AAC7B,cAAM/B,KAAK,CACTC,kBAAkB,CAChB,CADgB,GAGb,0BAAyBmD,IAAK,mBAAkBqD,MAAM,CAACxF,MAAO,SAHjD,EAIhBmC,IAJgB,EAKhBqD,MAAM,CAACxF,MALS,CADT,CAAX;AASD;;AAED,aAAOsE,gBAAgB,CAACkB,MAAD,EAAS,IAAT,CAAhB,CACJ3B,IADI,CACEyC,KAAD,IAAW;AACf,YAAId,MAAM,CAACa,UAAX,EAAuB;AACrB,iBAAOL,iBAAiB,CAACtB,OAAlB,CAA0Bc,MAAM,CAACU,EAAjC,CAAP;AACD;;AAED,eAAOI,KAAP;AACD,OAPI,EAQJzC,IARI,CAQEyC,KAAD,IAAW;AACfC,QAAAA,cAAc,CAACD,KAAD,CAAd;AACA,eAAOA,KAAP;AACD,OAXI,EAYJpC,KAZI,CAYG7F,GAAD,IAAS;AACdmH,QAAAA,MAAM,CAACxF,MAAP,GAAgBmB,mBAAhB;AACAqF,QAAAA,aAAa,CAACnI,GAAD,CAAb;AACA,cAAMA,GAAN;AACD,OAhBI,CAAP;AAiBD;;AAtCY,GAAf,CAxD+C;;AAkG/C,MAAIoI,sBAAJ,CAlG+C;;AAqG/CT,EAAAA,iBAAiB,CAACtB,OAAlB,CAA0BwB,EAA1B,IAAgCV,MAAhC;AAEA,MAAIkB,WAAW,GAAGN,qBAAqB,EAAvC;;AAEA,MAAI,CAACM,WAAD,IAAgB,OAAOA,WAAW,CAAC7C,IAAnB,KAA4B,UAAhD,EAA4D;AAC1D,UAAM9E,KAAK,CACTC,kBAAkB,CAChB,CADgB,GAGb,gHAHa,CADT,CAAX;AAOD;;AAED0H,EAAAA,WAAW,GAAGA,WAAW,CAAC7C,IAAZ,CAAkBiC,MAAD,IAAY;AACzC,QAAI,CAACA,MAAL,EAAa;AACX,YAAM/G,KAAK,CACTC,kBAAkB,CAChB,CADgB,GAGb,kHAHa,CADT,CAAX;AAOD;;AAED,UAAMmD,IAAI,GAAG2D,MAAM,CAAC3D,IAAP,IAAgB,UAAS+D,EAAG,EAAzC;;AAEA,QAAI,CAACpD,gBAAgB,CAACgD,MAAM,CAACa,SAAR,CAArB,EAAyC;AACvC,YAAM5H,KAAK,CACTC,kBAAkB,CAChB,CADgB,GAEJ,UAASmD,IAAK,uCAFV,EAGhBA,IAHgB,CADT,CAAX;AAOD;;AAED,QAAI,CAACW,gBAAgB,CAACgD,MAAM,CAACc,KAAR,CAArB,EAAqC;AACnC,YAAM7H,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEJ,UAASmD,IAAK,mCAFV,EAGhBA,IAHgB,CADT,CAAX;AAOD;;AAED,QAAI,CAACW,gBAAgB,CAACgD,MAAM,CAACe,OAAR,CAArB,EAAuC;AACrC,YAAM9H,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEJ,UAASmD,IAAK,qCAFV,EAGhBA,IAHgB,CADT,CAAX;AAOD;;AAED,QAAI2D,MAAM,CAACgB,MAAP,IAAiB,CAAChE,gBAAgB,CAACgD,MAAM,CAACgB,MAAR,CAAtC,EAAuD;AACrD,YAAM/H,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEJ,UAASmD,IAAK,sCAFV,EAGhBA,IAHgB,CADT,CAAX;AAOD;;AAED,UAAMwE,SAAS,GAAGxD,cAAc,CAAC2C,MAAD,EAAS,WAAT,CAAhC;AACA,UAAMc,KAAK,GAAGzD,cAAc,CAAC2C,MAAD,EAAS,OAAT,CAA5B;AACA,UAAMe,OAAO,GAAG1D,cAAc,CAAC2C,MAAD,EAAS,SAAT,CAA9B;AAEAN,IAAAA,MAAM,CAACxF,MAAP,GAAgBU,gBAAhB;AACA8E,IAAAA,MAAM,CAACrD,IAAP,GAAcA,IAAd;AACAqD,IAAAA,MAAM,CAACmB,SAAP,GAAmBA,SAAnB;AACAnB,IAAAA,MAAM,CAACoB,KAAP,GAAeA,KAAf;AACApB,IAAAA,MAAM,CAACqB,OAAP,GAAiBA,OAAjB;AACArB,IAAAA,MAAM,CAACuB,QAAP,GAAkBC,sBAAsB,CAAClB,MAAM,CAACiB,QAAR,CAAxC;;AAEA,QAAIjB,MAAM,CAACgB,MAAX,EAAmB;AACjBtB,MAAAA,MAAM,CAACsB,MAAP,GAAgB3D,cAAc,CAAC2C,MAAD,EAAS,QAAT,CAA9B;;AACAW,MAAAA,sBAAsB,CAACK,MAAvB,GAAgC,UAAUf,WAAV,EAAuB;AACrDP,QAAAA,MAAM,CAACO,WAAP,GAAqBA,WAArB;AAEA,eAAOkB,yBAAyB,CAAC1B,eAAe,CAACC,MAAD,CAAhB,CAAhC;AACD,OAJD;AAKD;AACF,GAxEa,CAAd,CAnH+C;AA8L/C;;AACA,QAAM0B,gBAAgB,GAAGR,WAAW,CAAC7C,IAAZ,CAAiB,MACxCM,kBAAkB,CAACqB,MAAD,EAAS,IAAT,CADK,CAAzB;AAGA,QAAM2B,YAAY,GAAGD,gBAAgB,CAACrD,IAAjB,CAAsB,MACzCsB,cAAc,CAACK,MAAD,EAAS,IAAT,CADK,CAArB;AAIA,MAAIe,cAAJ,EAAoBC,aAApB;AAEA,QAAMY,cAAc,GAAG,IAAI9D,OAAJ,CAAY,CAACC,OAAD,EAAUS,MAAV,KAAqB;AACtDuC,IAAAA,cAAc,GAAGhD,OAAjB;AACAiD,IAAAA,aAAa,GAAGxC,MAAhB;AACD,GAHsB,CAAvB;AAKAyC,EAAAA,sBAAsB,GAAG;AACvBG,IAAAA,KAAK,GAAG;AACN,aAAOK,yBAAyB,CAC9B3D,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,MAAM;AAC3B,YAAI2B,MAAM,CAACxF,MAAP,KAAkBY,WAAtB,EAAmC;AACjC,gBAAM7B,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,wBAAuBmD,IAAK,mBAAkBqD,MAAM,CAACxF,MAAO,SAH/C,EAIhBmC,IAJgB,EAKhBqD,MAAM,CAACxF,MALS,CADT,CAAX;AASD,SAX0B;;;AAc3BgG,QAAAA,iBAAiB,CAACtB,OAAlB,CAA0BwB,EAA1B,IAAgCV,MAAhC;AAEA,eAAOL,cAAc,CAACK,MAAD,CAArB;AACD,OAjBD,CAD8B,CAAhC;AAoBD,KAtBsB;;AAuBvBqB,IAAAA,OAAO,GAAG;AACR,aAAOI,yBAAyB,CAACzB,MAAM,CAAClD,iBAAP,EAAD,CAAhC;AACD,KAzBsB;;AA0BvB+E,IAAAA,SAAS,GAAG;AACV,aAAO7B,MAAM,CAACxF,MAAd;AACD,KA5BsB;;AA6BvB0G,IAAAA,WAAW,EAAEO,yBAAyB,CAACP,WAAD,CA7Bf;AA8BvBQ,IAAAA,gBAAgB,EAAED,yBAAyB,CAACC,gBAAD,CA9BpB;AA+BvBC,IAAAA,YAAY,EAAEF,yBAAyB,CAACE,YAAD,CA/BhB;AAgCvBC,IAAAA,cAAc,EAAEH,yBAAyB,CAACG,cAAD;AAhClB,GAAzB;AAmCA,SAAOX,sBAAP;AACD;;AAED,SAASQ,yBAAT,CAAmChD,OAAnC,EAA4C;AAC1C,SAAOA,OAAO,CAACJ,IAAR,CAAa,MAAM,IAAnB,CAAP;AACD;;AC3QM,SAASyD,QAAT,CAAkB1H,WAAlB,EAA+B;AACpC,QAAMK,MAAM,GAAGsC,MAAM,CAAC,EAAD,EAAK3C,WAAW,CAACmG,WAAjB,EAA8B;AACjD5D,IAAAA,IAAI,EAAEpC,MAAM,CAACH,WAAD,CADqC;AAEjDgG,IAAAA,WAAW,EAAEA,WAAW,CAAC2B,IAAZ,CAAiB3H,WAAjB,CAFoC;AAGjD4H,IAAAA;AAHiD,GAA9B,CAArB;;AAMA,MAAIpF,QAAQ,CAACxC,WAAD,CAAZ,EAA2B;AACzBK,IAAAA,MAAM,CAACwH,WAAP,GAAqB7H,WAAW,CAAC0C,iBAAjC;AACD;;AAED,SAAOrC,MAAP;AACD;;ACZD,MAAMyH,oBAAoB,GAAG,IAA7B;AAEA,MAAMC,mBAAmB,GAAG;AAC1BhB,EAAAA,SAAS,EAAE;AACTiB,IAAAA,MAAM,EAAE,IADC;AAETC,IAAAA,YAAY,EAAE,KAFL;AAGTC,IAAAA,aAAa,EAAEJ;AAHN,GADe;AAM1Bd,EAAAA,KAAK,EAAE;AACLgB,IAAAA,MAAM,EAAE,IADH;AAELC,IAAAA,YAAY,EAAE,KAFT;AAGLC,IAAAA,aAAa,EAAEJ;AAHV,GANmB;AAW1Bb,EAAAA,OAAO,EAAE;AACPe,IAAAA,MAAM,EAAE,IADD;AAEPC,IAAAA,YAAY,EAAE,KAFP;AAGPC,IAAAA,aAAa,EAAEJ;AAHR,GAXiB;AAgB1BK,EAAAA,MAAM,EAAE;AACNH,IAAAA,MAAM,EAAE,IADF;AAENC,IAAAA,YAAY,EAAE,KAFR;AAGNC,IAAAA,aAAa,EAAEJ;AAHT,GAhBkB;AAqB1BZ,EAAAA,MAAM,EAAE;AACNc,IAAAA,MAAM,EAAE,IADF;AAENC,IAAAA,YAAY,EAAE,KAFR;AAGNC,IAAAA,aAAa,EAAEJ;AAHT;AArBkB,CAA5B;AA4BO,SAASM,mBAAT,CAA6BC,IAA7B,EAAmCJ,YAAnC,EAAiDC,aAAjD,EAAgE;AACrE,MAAI,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,IAAI,CAAxC,EAA2C;AACzC,UAAMlJ,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,sEAHa,CADT,CAAX;AAOD;;AAED2I,EAAAA,mBAAmB,CAAChB,SAApB,GAAgC;AAC9BiB,IAAAA,MAAM,EAAEK,IADsB;AAE9BJ,IAAAA,YAF8B;AAG9BC,IAAAA,aAAa,EAAEA,aAAa,IAAIJ;AAHF,GAAhC;AAKD;AAEM,SAASQ,eAAT,CAAyBD,IAAzB,EAA+BJ,YAA/B,EAA6CC,aAA7C,EAA4D;AACjE,MAAI,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,IAAI,CAAxC,EAA2C;AACzC,UAAMlJ,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,kEAHa,CADT,CAAX;AAOD;;AAED2I,EAAAA,mBAAmB,CAACf,KAApB,GAA4B;AAC1BgB,IAAAA,MAAM,EAAEK,IADkB;AAE1BJ,IAAAA,YAF0B;AAG1BC,IAAAA,aAAa,EAAEA,aAAa,IAAIJ;AAHN,GAA5B;AAKD;AAEM,SAASS,iBAAT,CAA2BF,IAA3B,EAAiCJ,YAAjC,EAA+CC,aAA/C,EAA8D;AACnE,MAAI,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,IAAI,CAAxC,EAA2C;AACzC,UAAMlJ,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,oEAHa,CADT,CAAX;AAOD;;AAED2I,EAAAA,mBAAmB,CAACd,OAApB,GAA8B;AAC5Be,IAAAA,MAAM,EAAEK,IADoB;AAE5BJ,IAAAA,YAF4B;AAG5BC,IAAAA,aAAa,EAAEA,aAAa,IAAIJ;AAHJ,GAA9B;AAKD;AAEM,SAASU,gBAAT,CAA0BH,IAA1B,EAAgCJ,YAAhC,EAA8CC,aAA9C,EAA6D;AAClE,MAAI,OAAOG,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,IAAI,CAAxC,EAA2C;AACzC,UAAMlJ,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,mEAHa,CADT,CAAX;AAOD;;AAED2I,EAAAA,mBAAmB,CAACI,MAApB,GAA6B;AAC3BH,IAAAA,MAAM,EAAEK,IADmB;AAE3BJ,IAAAA,YAF2B;AAG3BC,IAAAA,aAAa,EAAEA,aAAa,IAAIJ;AAHL,GAA7B;AAKD;AAEM,SAASrD,cAAT,CAAwBzE,WAAxB,EAAqCwD,SAArC,EAAgD;AACrD,QAAMiF,aAAa,GAAGzI,WAAW,CAACmH,QAAZ,CAAqB3D,SAArB,CAAtB;AACA,QAAMkF,aAAa,GAAGD,aAAa,CAACP,aAApC;AACA,QAAMtE,IAAI,GAAG1D,UAAU,CAACF,WAAD,CAAvB;AAEA,SAAO,IAAI0D,OAAJ,CAAY,CAACC,OAAD,EAAUS,MAAV,KAAqB;AACtC,QAAIuE,QAAQ,GAAG,KAAf;AACA,QAAIC,OAAO,GAAG,KAAd;AAEA5I,IAAAA,WAAW,CAACwD,SAAD,CAAX,CAAuBkE,QAAQ,CAAC1H,WAAD,CAA/B,EACGiE,IADH,CACS4E,GAAD,IAAS;AACbF,MAAAA,QAAQ,GAAG,IAAX;AACAhF,MAAAA,OAAO,CAACkF,GAAD,CAAP;AACD,KAJH,EAKGvE,KALH,CAKUuE,GAAD,IAAS;AACdF,MAAAA,QAAQ,GAAG,IAAX;AACAvE,MAAAA,MAAM,CAACyE,GAAD,CAAN;AACD,KARH;AAUA5J,IAAAA,UAAU,CAAC,MAAM6J,cAAc,CAAC,CAAD,CAArB,EAA0BJ,aAA1B,CAAV;AACAzJ,IAAAA,UAAU,CAAC,MAAM6J,cAAc,CAAC,IAAD,CAArB,EAA6BL,aAAa,CAACT,MAA3C,CAAV;AAEA,UAAMe,MAAM,GAAG3J,kBAAkB,CAC/B,EAD+B,GAG5B,sBAAqBoE,SAAU,QAAOI,IAAK,IAAGzD,MAAM,CACnDH,WADmD,CAEnD,4CAA2CyI,aAAa,CAACT,MAAO,MALrC,EAM/BxE,SAN+B,EAO/BI,IAP+B,EAQ/BzD,MAAM,CAACH,WAAD,CARyB,EAS/ByI,aAAa,CAACT,MATiB,CAAjC;;AAYA,aAASc,cAAT,CAAwBE,WAAxB,EAAqC;AACnC,UAAI,CAACL,QAAL,EAAe;AACb,YAAIK,WAAW,KAAK,IAApB,EAA0B;AACxBJ,UAAAA,OAAO,GAAG,IAAV;;AACA,cAAIH,aAAa,CAACR,YAAlB,EAAgC;AAC9B7D,YAAAA,MAAM,CAACjF,KAAK,CAAC4J,MAAD,CAAN,CAAN;AACD,WAFD,MAEO;AACLxI,YAAAA,OAAO,CAAC0I,KAAR,CAAcF,MAAd,EADK;AAGN;AACF,SARD,MAQO,IAAI,CAACH,OAAL,EAAc;AACnB,gBAAMM,WAAW,GAAGF,WAApB;AACA,gBAAMG,SAAS,GAAGD,WAAW,GAAGR,aAAhC;AACAnI,UAAAA,OAAO,CAACC,IAAR,CAAauI,MAAb;;AACA,cAAII,SAAS,GAAGT,aAAZ,GAA4BD,aAAa,CAACT,MAA9C,EAAsD;AACpD/I,YAAAA,UAAU,CAAC,MAAM6J,cAAc,CAACI,WAAW,GAAG,CAAf,CAArB,EAAwCR,aAAxC,CAAV;AACD;AACF;AACF;AACF;AACF,GAjDM,CAAP;AAkDD;AAEM,SAAStB,sBAAT,CAAgCD,QAAhC,EAA0C;AAC/C,QAAM9G,MAAM,GAAG,EAAf;;AAEA,OAAK,IAAIyC,GAAT,IAAgBiF,mBAAhB,EAAqC;AACnC1H,IAAAA,MAAM,CAACyC,GAAD,CAAN,GAAcH,MAAM,CAClB,EADkB,EAElBoF,mBAAmB,CAACjF,GAAD,CAFD,EAGjBqE,QAAQ,IAAIA,QAAQ,CAACrE,GAAD,CAArB,IAA+B,EAHb,CAApB;AAKD;;AAED,SAAOzC,MAAP;AACD;;AC1JM,SAAS+I,aAAT,CAAuB1K,GAAvB,EAA4B;AACjC,SAAOgF,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,MAAM;AAClC,QAAIvF,GAAG,CAACoI,WAAR,EAAqB;AACnB,aAAOpI,GAAG,CAACoI,WAAX;AACD;;AAED,QAAIpI,GAAG,CAAC0B,MAAJ,KAAeQ,UAAf,IAA6BlC,GAAG,CAAC0B,MAAJ,KAAekB,UAAhD,EAA4D;AAC1D,aAAO5C,GAAP;AACD;;AAEDA,IAAAA,GAAG,CAAC0B,MAAJ,GAAaS,mBAAb;AAEA,QAAIwI,OAAJ,EAAaC,SAAb;AAEA,WAAQ5K,GAAG,CAACoI,WAAJ,GAAkBpD,OAAO,CAACC,OAAR,GACvBM,IADuB,CAClB,MAAM;AACV,YAAM6C,WAAW,GAAGpI,GAAG,CAAC6K,OAAJ,CAAY7B,QAAQ,CAAChJ,GAAD,CAApB,CAApB;;AACA,UAAI,CAACyF,kBAAkB,CAAC2C,WAAD,CAAvB,EAAsC;AACpC;AACAwC,QAAAA,SAAS,GAAG,IAAZ;AACA,cAAMnK,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,2GAA0Ge,MAAM,CAC/GzB,GAD+G,CAE/G,uCALY,EAMhByB,MAAM,CAACzB,GAAD,CANU,CADT,CAAX;AAUD;;AACD,aAAOoI,WAAW,CAAC7C,IAAZ,CAAkB4E,GAAD,IAAS;AAC/BnK,QAAAA,GAAG,CAAC4D,aAAJ,GAAoB,IAApB;AAEA+G,QAAAA,OAAO,GAAGR,GAAV;AAEA,YAAIW,oBAAJ,EAA0BC,iBAA1B;;AAEA,YAAI,OAAOJ,OAAP,KAAmB,QAAvB,EAAiC;AAC/BI,UAAAA,iBAAiB,GAAG,EAApB;;AACA,UAAa;AACXD,YAAAA,oBAAoB,GAAI,0BAAxB;AACD;AACF;;AAED,YAAI,CAACtG,gBAAgB,CAACmG,OAAO,CAACtC,SAAT,CAArB,EAA0C;AACxC0C,UAAAA,iBAAiB,GAAG,EAApB;;AACA,UAAa;AACXD,YAAAA,oBAAoB,GAAI,4DAAxB;AACD;AACF;;AAED,YAAI,CAACtG,gBAAgB,CAACmG,OAAO,CAACrC,KAAT,CAArB,EAAsC;AACpCyC,UAAAA,iBAAiB,GAAG,EAApB;;AACA,UAAa;AACXD,YAAAA,oBAAoB,GAAI,4DAAxB;AACD;AACF;;AAED,YAAI,CAACtG,gBAAgB,CAACmG,OAAO,CAACpC,OAAT,CAArB,EAAwC;AACtCwC,UAAAA,iBAAiB,GAAG,EAApB;;AACA,UAAa;AACXD,YAAAA,oBAAoB,GAAI,4DAAxB;AACD;AACF;;AAED,cAAM5F,IAAI,GAAG1D,UAAU,CAACmJ,OAAD,CAAvB;;AAEA,YAAII,iBAAJ,EAAuB;AACrB,cAAIC,UAAJ;;AACA,cAAI;AACFA,YAAAA,UAAU,GAAGjJ,IAAI,CAACC,SAAL,CAAe2I,OAAf,CAAb;AACD,WAFD,CAEE,gBAAM;;AACR9I,UAAAA,OAAO,CAAC0I,KAAR,CACE7J,kBAAkB,CAChBqK,iBADgB,GAGb,uCAAsC7F,IAAK,KAAIzD,MAAM,CACpDzB,GADoD,CAEpD,4FALY,EAMhBkF,IANgB,EAOhBzD,MAAM,CAACzB,GAAD,CAPU,EAQhBgL,UARgB,CADpB,EAWEL,OAXF;AAaA7K,UAAAA,cAAc,CAACgL,oBAAD,EAAuB9K,GAAvB,EAA4B6C,mBAA5B,CAAd;AACA,iBAAO7C,GAAP;AACD;;AAED,YAAI2K,OAAO,CAACM,QAAR,IAAoBN,OAAO,CAACM,QAAR,CAAiBC,QAAzC,EAAmD;AACjDlL,UAAAA,GAAG,CAACiL,QAAJ,CAAaC,QAAb,GAAwBjH,MAAM,CAC5B,EAD4B,EAE5BjE,GAAG,CAACiL,QAAJ,CAAaC,QAFe,EAG5BP,OAAO,CAACM,QAAR,CAAiBC,QAHW,CAA9B;AAKD;;AAEDlL,QAAAA,GAAG,CAAC0B,MAAJ,GAAaU,gBAAb;AACApC,QAAAA,GAAG,CAACqI,SAAJ,GAAgBxD,cAAc,CAAC8F,OAAD,EAAU,WAAV,CAA9B;AACA3K,QAAAA,GAAG,CAACsI,KAAJ,GAAYzD,cAAc,CAAC8F,OAAD,EAAU,OAAV,CAA1B;AACA3K,QAAAA,GAAG,CAACuI,OAAJ,GAAc1D,cAAc,CAAC8F,OAAD,EAAU,SAAV,CAA5B;AACA3K,QAAAA,GAAG,CAACyJ,MAAJ,GAAa5E,cAAc,CAAC8F,OAAD,EAAU,QAAV,CAA3B;AACA3K,QAAAA,GAAG,CAACyI,QAAJ,GAAeC,sBAAsB,CAACiC,OAAO,CAAClC,QAAT,CAArC;AAEA,eAAOzI,GAAG,CAACoI,WAAX;AAEA,eAAOpI,GAAP;AACD,OA7EM,CAAP;AA8ED,KA/FuB,EAgGvB4F,KAhGuB,CAgGhB7F,GAAD,IAAS;AACd,aAAOC,GAAG,CAACoI,WAAX;AAEA,UAAInI,SAAJ;;AACA,UAAI2K,SAAJ,EAAe;AACb3K,QAAAA,SAAS,GAAG4C,mBAAZ;AACD,OAFD,MAEO;AACL5C,QAAAA,SAAS,GAAG2C,UAAZ;AACA5C,QAAAA,GAAG,CAAC4D,aAAJ,GAAoB,IAAIF,IAAJ,GAAWC,OAAX,EAApB;AACD;;AACD7D,MAAAA,cAAc,CAACC,GAAD,EAAMC,GAAN,EAAWC,SAAX,CAAd;AAEA,aAAOD,GAAP;AACD,KA7GuB,CAA1B;AA8GD,GA3HM,CAAP;AA4HD;;ACnJM,MAAMmL,WAAW,GAAG,OAAO/H,MAAP,KAAkB,WAAtC;;ACKP;;;;;;AAKA,MAAMgI,sBAAsB,GAAG;AAC7BC,EAAAA,UAAU,EAAE,EADiB;AAE7BC,EAAAA,QAAQ,EAAE;AAFmB,CAA/B;AAKO,MAAMC,wBAAwB,GAAG,CAAC,YAAD,EAAe,UAAf,CAAjC;AAEA,SAASC,aAAT,CAAuBC,GAAvB,EAA4B;AACjC,MAAIC,GAAJ;;AACA,MAAI,OAAOD,GAAP,KAAe,QAAnB,EAA6B;AAC3BC,IAAAA,GAAG,GAAGD,GAAN;AACD,GAFD,MAEO,IAAI,QAAQ,KAAKE,IAAjB,EAAuB;AAC5BD,IAAAA,GAAG,GAAG,KAAKC,IAAX;AACD,GAFM,MAEA,IACLF,GAAG,IACHA,GAAG,CAACG,aADJ,IAEAH,GAAG,CAACG,aAAJ,CAAkBD,IAFlB,IAGAF,GAAG,CAACI,cAJC,EAKL;AACAH,IAAAA,GAAG,GAAGD,GAAG,CAACG,aAAJ,CAAkBD,IAAxB;AACAF,IAAAA,GAAG,CAACI,cAAJ;AACD,GARM,MAQA;AACL,UAAMpL,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,6JAHa,CADT,CAAX;AAOD;;AAED,QAAMoL,OAAO,GAAGC,QAAQ,CAAC3I,MAAM,CAACC,QAAP,CAAgBsI,IAAjB,CAAxB;AACA,QAAMK,WAAW,GAAGD,QAAQ,CAACL,GAAD,CAA5B;;AAEA,MAAIA,GAAG,CAACO,OAAJ,CAAY,GAAZ,MAAqB,CAAzB,EAA4B;AAC1B7I,IAAAA,MAAM,CAACC,QAAP,CAAgB6I,IAAhB,GAAuBF,WAAW,CAACE,IAAnC;AACD,GAFD,MAEO,IAAIJ,OAAO,CAACK,IAAR,KAAiBH,WAAW,CAACG,IAA7B,IAAqCH,WAAW,CAACG,IAArD,EAA2D;AAChE,IAEO;AACL/I,MAAAA,MAAM,CAACC,QAAP,CAAgBsI,IAAhB,GAAuBD,GAAvB;AACD;AACF,GANM,MAMA,IACLM,WAAW,CAACI,QAAZ,KAAyBN,OAAO,CAACM,QAAjC,IACAJ,WAAW,CAACK,MAAZ,KAAuBP,OAAO,CAACM,QAF1B,EAGL;AACAhJ,IAAAA,MAAM,CAACC,QAAP,CAAgB6I,IAAhB,GAAuBF,WAAW,CAACE,IAAnC;AACD,GALM,MAKA;AACL;AACA9I,IAAAA,MAAM,CAACkJ,OAAP,CAAeC,SAAf,CAAyB,IAAzB,EAA+B,IAA/B,EAAqCb,GAArC;AACD;AACF;AAEM,SAASc,0BAAT,CAAoCC,cAApC,EAAoD;AACzD,MAAIA,cAAJ,EAAoB;AAClB,UAAMC,SAAS,GAAGD,cAAc,CAAC,CAAD,CAAd,CAAkBvH,IAApC;;AACA,QAAIqG,wBAAwB,CAACU,OAAzB,CAAiCS,SAAjC,KAA+C,CAAnD,EAAsD;AACpDtB,MAAAA,sBAAsB,CAACsB,SAAD,CAAtB,CAAkCrM,OAAlC,CAA2CsM,QAAD,IAAc;AACtD,YAAI;AACF;AACA;AACAA,UAAAA,QAAQ,CAACpF,KAAT,CAAe,IAAf,EAAqBkF,cAArB;AACD,SAJD,CAIE,OAAOG,CAAP,EAAU;AACVrM,UAAAA,UAAU,CAAC,MAAM;AACf,kBAAMqM,CAAN;AACD,WAFS,CAAV;AAGD;AACF,OAVD;AAWD;AACF;AACF;AAED,IAAIC,cAAJ;AAEO,SAASC,iBAAT,CAA2B3C,GAA3B,EAAgC;AACrC0C,EAAAA,cAAc,GAAG1C,GAAjB;AACD;;AAED,SAAS4C,UAAT,GAAsB;AACpBC,EAAAA,OAAO,CAAC,EAAD,EAAK7I,SAAL,CAAP;AACD;;AAED,IAAIgH,WAAJ,EAAiB;AACf;AACA/H,EAAAA,MAAM,CAAC6J,gBAAP,CAAwB,YAAxB,EAAsCF,UAAtC;AACA3J,EAAAA,MAAM,CAAC6J,gBAAP,CAAwB,UAAxB,EAAoCF,UAApC,EAHe;;AAMf,QAAMG,wBAAwB,GAAG9J,MAAM,CAAC6J,gBAAxC;AACA,QAAME,2BAA2B,GAAG/J,MAAM,CAACgK,mBAA3C;;AACAhK,EAAAA,MAAM,CAAC6J,gBAAP,GAA0B,UAAUI,SAAV,EAAqB5I,EAArB,EAAyB;AACjD,QAAI,OAAOA,EAAP,KAAc,UAAlB,EAA8B;AAC5B,UACE8G,wBAAwB,CAACU,OAAzB,CAAiCoB,SAAjC,KAA+C,CAA/C,IACA,CAAChJ,IAAI,CAAC+G,sBAAsB,CAACiC,SAAD,CAAvB,EAAqCV,QAAD,IAAcA,QAAQ,KAAKlI,EAA/D,CAFP,EAGE;AACA2G,QAAAA,sBAAsB,CAACiC,SAAD,CAAtB,CAAkC1M,IAAlC,CAAuC8D,EAAvC;AACA;AACD;AACF;;AAED,WAAOyI,wBAAwB,CAAC3F,KAAzB,CAA+B,IAA/B,EAAqCpD,SAArC,CAAP;AACD,GAZD;;AAcAf,EAAAA,MAAM,CAACgK,mBAAP,GAA6B,UAAUC,SAAV,EAAqBC,UAArB,EAAiC;AAC5D,QAAI,OAAOA,UAAP,KAAsB,UAA1B,EAAsC;AACpC,UAAI/B,wBAAwB,CAACU,OAAzB,CAAiCoB,SAAjC,KAA+C,CAAnD,EAAsD;AACpDjC,QAAAA,sBAAsB,CAACiC,SAAD,CAAtB,GAAoCjC,sBAAsB,CACxDiC,SADwD,CAAtB,CAElCvM,MAFkC,CAE1B2D,EAAD,IAAQA,EAAE,KAAK6I,UAFY,CAApC;AAGA;AACD;AACF;;AAED,WAAOH,2BAA2B,CAAC5F,KAA5B,CAAkC,IAAlC,EAAwCpD,SAAxC,CAAP;AACD,GAXD;;AAaAf,EAAAA,MAAM,CAACkJ,OAAP,CAAeC,SAAf,GAA2BgB,kBAAkB,CAACnK,MAAM,CAACkJ,OAAP,CAAeC,SAAhB,CAA7C;AACAnJ,EAAAA,MAAM,CAACkJ,OAAP,CAAekB,YAAf,GAA8BD,kBAAkB,CAACnK,MAAM,CAACkJ,OAAP,CAAekB,YAAhB,CAAhD;;AAEA,WAASD,kBAAT,CAA4BE,WAA5B,EAAyC;AACvC,WAAO,YAAY;AACjB,YAAMC,SAAS,GAAGtK,MAAM,CAACC,QAAP,CAAgBsI,IAAlC;AACA,YAAMhK,MAAM,GAAG8L,WAAW,CAAClG,KAAZ,CAAkB,IAAlB,EAAwBpD,SAAxB,CAAf;AACA,YAAMwJ,QAAQ,GAAGvK,MAAM,CAACC,QAAP,CAAgBsI,IAAjC;;AAEA,UAAI,CAACkB,cAAD,IAAmBa,SAAS,KAAKC,QAArC,EAA+C;AAC7CZ,QAAAA,UAAU,CAACa,mBAAmB,CAACxK,MAAM,CAACkJ,OAAP,CAAeuB,KAAhB,CAApB,CAAV;AACD;;AAED,aAAOlM,MAAP;AACD,KAVD;AAWD;;AAED,WAASiM,mBAAT,CAA6BC,KAA7B,EAAoC;AAClC;AACA;AACA;AACA,QAAI;AACF,aAAO,IAAIC,aAAJ,CAAkB,UAAlB,EAA8B;AAAED,QAAAA;AAAF,OAA9B,CAAP;AACD,KAFD,CAEE,OAAO9N,GAAP,EAAY;AACZ;AACA;AACA,YAAMgO,GAAG,GAAGC,QAAQ,CAACC,WAAT,CAAqB,eAArB,CAAZ;AACAF,MAAAA,GAAG,CAACG,iBAAJ,CAAsB,UAAtB,EAAkC,KAAlC,EAAyC,KAAzC,EAAgDL,KAAhD;AACA,aAAOE,GAAP;AACD;AACF;AAED;;;;;AAGA3K,EAAAA,MAAM,CAAC+K,iBAAP,GAA2B3C,aAA3B;AACD;;AAED,SAASO,QAAT,CAAkBqC,GAAlB,EAAuB;AACrB,QAAMC,MAAM,GAAGL,QAAQ,CAACM,aAAT,CAAuB,GAAvB,CAAf;AACAD,EAAAA,MAAM,CAAC1C,IAAP,GAAcyC,GAAd;AACA,SAAOC,MAAP;AACD;;ACvKD,IAAIE,cAAc,GAAG,KAArB;AAEO,SAASC,mBAAT,CAA6BC,MAAM,GAAGrL,MAAM,CAACqL,MAA7C,EAAqD;AAC1D,MAAI,CAACA,MAAL,EAAa;AACX,QAAIrL,MAAM,CAACsL,CAAP,IAAYtL,MAAM,CAACsL,CAAP,CAASjK,EAArB,IAA2BrB,MAAM,CAACsL,CAAP,CAASjK,EAAT,CAAYkK,MAA3C,EAAmD;AACjDF,MAAAA,MAAM,GAAGrL,MAAM,CAACsL,CAAhB;AACD;AACF;;AAED,MAAID,MAAM,IAAI,CAACF,cAAf,EAA+B;AAC7B,UAAMK,gBAAgB,GAAGH,MAAM,CAAChK,EAAP,CAAUoK,EAAnC;AACA,UAAMC,iBAAiB,GAAGL,MAAM,CAAChK,EAAP,CAAUsK,GAApC;;AAEAN,IAAAA,MAAM,CAAChK,EAAP,CAAUoK,EAAV,GAAe,UAAUG,WAAV,EAAuBvK,EAAvB,EAA2B;AACxC,aAAOwK,oBAAoB,CAACC,IAArB,CACL,IADK,EAELN,gBAFK,EAGLxL,MAAM,CAAC6J,gBAHF,EAIL+B,WAJK,EAKLvK,EALK,EAMLN,SANK,CAAP;AAQD,KATD;;AAWAsK,IAAAA,MAAM,CAAChK,EAAP,CAAUsK,GAAV,GAAgB,UAAUC,WAAV,EAAuBvK,EAAvB,EAA2B;AACzC,aAAOwK,oBAAoB,CAACC,IAArB,CACL,IADK,EAELJ,iBAFK,EAGL1L,MAAM,CAACgK,mBAHF,EAIL4B,WAJK,EAKLvK,EALK,EAMLN,SANK,CAAP;AAQD,KATD;;AAWAoK,IAAAA,cAAc,GAAG,IAAjB;AACD;AACF;;AAED,SAASU,oBAAT,CACEE,sBADF,EAEEC,oBAFF,EAGEJ,WAHF,EAIEvK,EAJF,EAKE4K,YALF,EAME;AACA,MAAI,OAAOL,WAAP,KAAuB,QAA3B,EAAqC;AACnC,WAAOG,sBAAsB,CAAC5H,KAAvB,CAA6B,IAA7B,EAAmC8H,YAAnC,CAAP;AACD;;AAED,QAAMC,UAAU,GAAGN,WAAW,CAACO,KAAZ,CAAkB,KAAlB,CAAnB;AACAD,EAAAA,UAAU,CAACjP,OAAX,CAAoBgN,SAAD,IAAe;AAChC,QAAI9B,wBAAwB,CAACU,OAAzB,CAAiCoB,SAAjC,KAA+C,CAAnD,EAAsD;AACpD+B,MAAAA,oBAAoB,CAAC/B,SAAD,EAAY5I,EAAZ,CAApB;AACAuK,MAAAA,WAAW,GAAGA,WAAW,CAACQ,OAAZ,CAAoBnC,SAApB,EAA+B,EAA/B,CAAd;AACD;AACF,GALD;;AAOA,MAAI2B,WAAW,CAACS,IAAZ,OAAuB,EAA3B,EAA+B;AAC7B,WAAO,IAAP;AACD,GAFD,MAEO;AACL,WAAON,sBAAsB,CAAC5H,KAAvB,CAA6B,IAA7B,EAAmC8H,YAAnC,CAAP;AACD;AACF;;ACtDD,MAAMK,YAAY,GAAG,EAArB;AAEO,SAASC,eAAT,CAAyB3P,GAAzB,EAA8B;AACnC,SAAOgF,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,MAAM;AAClC,UAAMqK,UAAU,GAAGF,YAAY,CAACjO,MAAM,CAACzB,GAAD,CAAP,CAA/B;;AAEA,QAAI,CAAC4P,UAAL,EAAiB;AACf;;AAEA,aAAO5P,GAAP;AACD;;AAED,QAAIA,GAAG,CAAC0B,MAAJ,KAAeQ,UAAnB,EAA+B;AAC7B;;;AAGA2N,MAAAA,kBAAkB,CAAC7P,GAAD,EAAM4P,UAAN,CAAlB;AACA,aAAO5P,GAAP;AACD;;AAED,QAAIA,GAAG,CAAC0B,MAAJ,KAAeiB,SAAnB,EAA8B;AAC5B;;;AAGA,aAAOiN,UAAU,CAACjK,OAAX,CAAmBJ,IAAnB,CAAwB,MAAMvF,GAA9B,CAAP;AACD;;AAED,QAAIA,GAAG,CAAC0B,MAAJ,KAAeY,WAAnB,EAAgC;AAC9B;;AAEA,aAAOtC,GAAP;AACD;;AAEDA,IAAAA,GAAG,CAAC0B,MAAJ,GAAaiB,SAAb;AACA,WAAOoD,cAAc,CAAC/F,GAAD,EAAM,QAAN,CAAd,CACJuF,IADI,CACC,MAAM;AACVsK,MAAAA,kBAAkB,CAAC7P,GAAD,EAAM4P,UAAN,CAAlB;AACA,aAAO5P,GAAP;AACD,KAJI,EAKJ4F,KALI,CAKG7F,GAAD,IAAS;AACd+P,MAAAA,iBAAiB,CAAC9P,GAAD,EAAM4P,UAAN,EAAkB7P,GAAlB,CAAjB;AACA,aAAOC,GAAP;AACD,KARI,CAAP;AASD,GAxCM,CAAP;AAyCD;;AAED,SAAS6P,kBAAT,CAA4B7P,GAA5B,EAAiC4P,UAAjC,EAA6C;AAC3C,SAAOF,YAAY,CAACjO,MAAM,CAACzB,GAAD,CAAP,CAAnB,CAD2C;;AAI3C,SAAOA,GAAG,CAACqI,SAAX;AACA,SAAOrI,GAAG,CAACsI,KAAX;AACA,SAAOtI,GAAG,CAACuI,OAAX;AACA,SAAOvI,GAAG,CAACyJ,MAAX;AAEAzJ,EAAAA,GAAG,CAAC0B,MAAJ,GAAaQ,UAAb;AAEA;;;;AAGA0N,EAAAA,UAAU,CAAC3K,OAAX;AACD;;AAED,SAAS6K,iBAAT,CAA2B9P,GAA3B,EAAgC4P,UAAhC,EAA4C7P,GAA5C,EAAiD;AAC/C,SAAO2P,YAAY,CAACjO,MAAM,CAACzB,GAAD,CAAP,CAAnB,CAD+C;;AAI/C,SAAOA,GAAG,CAACqI,SAAX;AACA,SAAOrI,GAAG,CAACsI,KAAX;AACA,SAAOtI,GAAG,CAACuI,OAAX;AACA,SAAOvI,GAAG,CAACyJ,MAAX;AAEA3J,EAAAA,cAAc,CAACC,GAAD,EAAMC,GAAN,EAAW6C,mBAAX,CAAd;AACA+M,EAAAA,UAAU,CAAClK,MAAX,CAAkB3F,GAAlB;AACD;;AAEM,SAASgQ,cAAT,CAAwB/P,GAAxB,EAA6BgQ,aAA7B,EAA4C/K,OAA5C,EAAqDS,MAArD,EAA6D;AAClEgK,EAAAA,YAAY,CAACjO,MAAM,CAACzB,GAAD,CAAP,CAAZ,GAA4B;AAAEA,IAAAA,GAAF;AAAOiF,IAAAA,OAAP;AAAgBS,IAAAA;AAAhB,GAA5B;AACAQ,EAAAA,MAAM,CAAC+J,cAAP,CAAsBP,YAAY,CAACjO,MAAM,CAACzB,GAAD,CAAP,CAAlC,EAAiD,SAAjD,EAA4D;AAC1DkQ,IAAAA,GAAG,EAAEF;AADqD,GAA5D;AAGD;AAEM,SAASG,gBAAT,CAA0BC,OAA1B,EAAmC;AACxC,SAAOV,YAAY,CAACU,OAAD,CAAnB;AACD;AAEM,SAASC,eAAT,GAA2B;AAChC,SAAOnK,MAAM,CAACC,IAAP,CAAYuJ,YAAZ,EACJrJ,GADI,CACC+J,OAAD,IAAaV,YAAY,CAACU,OAAD,CAAZ,CAAsBpQ,GADnC,EAEJc,MAFI,CAEGiC,UAFH,CAAP;AAGD;;AC7ED,MAAMuN,IAAI,GAAG,EAAb;AAEO,SAASC,cAAT,GAA0B;AAC/B,SAAOD,IAAI,CAACxP,MAAL,CAAYgC,QAAZ,EAAsBuD,GAAtB,CAA0B5E,MAA1B,CAAP;AACD;AAEM,SAAS+O,WAAT,GAAuB;AAC5B,SAAOF,IAAI,CAACjK,GAAL,CAAS5E,MAAT,CAAP;AACD;;AAGM,SAASgP,aAAT,GAAyB;AAC9B,SAAO,CAAC,GAAGH,IAAJ,CAAP;AACD;AAEM,SAASI,YAAT,CAAsBN,OAAtB,EAA+B;AACpC,QAAMpQ,GAAG,GAAGqE,IAAI,CAACiM,IAAD,EAAQtQ,GAAD,IAASyB,MAAM,CAACzB,GAAD,CAAN,KAAgBoQ,OAAhC,CAAhB;AACA,SAAOpQ,GAAG,GAAGA,GAAG,CAAC0B,MAAP,GAAgB,IAA1B;AACD;AAEM,SAASiP,mBAAT,CACLC,eADK,EAELC,YAFK,EAGL1N,UAHK,EAILsE,WAJK,EAKL;AACA,QAAMqJ,YAAY,GAAGC,iBAAiB,CACpCH,eADoC,EAEpCC,YAFoC,EAGpC1N,UAHoC,EAIpCsE,WAJoC,CAAtC;AAOA,MAAI+I,WAAW,GAAGvE,OAAd,CAAsB6E,YAAY,CAACjN,IAAnC,MAA6C,CAAC,CAAlD,EACE,MAAMpD,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,gDAA+CoQ,YAAY,CAACjN,IAAK,EAHpD,EAIhBiN,YAAY,CAACjN,IAJG,CADT,CAAX;AASFyM,EAAAA,IAAI,CAAC3P,IAAL,CACEsD,MAAM,CACJ;AACEL,IAAAA,aAAa,EAAE,IADjB;AAEElC,IAAAA,MAAM,EAAEQ,UAFV;AAGEkE,IAAAA,OAAO,EAAE,EAHX;AAIE6E,IAAAA,QAAQ,EAAE;AACRC,MAAAA,QAAQ,EAAE;AACR8F,QAAAA,OAAO,EAAE,EADD;AAERC,QAAAA,SAAS,EAAE;AAFH;AADF;AAJZ,GADI,EAYJH,YAZI,CADR;;AAiBA,MAAI3F,WAAJ,EAAiB;AACfqD,IAAAA,mBAAmB;AACnBxB,IAAAA,OAAO;AACR;AACF;AAEM,SAASkE,sBAAT,CAAgC7N,QAAhC,EAA0C;AAC/C,SAAOiN,IAAI,CAACxP,MAAL,CAAad,GAAD,IAASA,GAAG,CAACmD,UAAJ,CAAeE,QAAf,CAArB,EAA+CgD,GAA/C,CAAmD5E,MAAnD,CAAP;AACD;AAEM,SAAS0P,aAAT,GAAyB;AAC9B,SAAOb,IAAI,CACRxP,MADI,CACGyC,UADH,EAEJzC,MAFI,CAEG2C,iBAFH,EAGJ3C,MAHI,CAGGmC,UAHH,EAIJnC,MAJI,CAIGoC,cAJH,CAAP;AAKD;AAEM,SAASkO,gBAAT,GAA4B;AACjC,SAAOd,IAAI,CAACxP,MAAL,CAAYyC,UAAZ,EAAwBzC,MAAxB,CAA+BgC,QAA/B,EAAyChC,MAAzC,CAAgDwC,gBAAhD,CAAP;AACD;AAEM,SAAS+N,cAAT,GAA0B;AAC/B,SAAOf,IAAI,CACRxP,MADI,CACGyC,UADH,EAEJzC,MAFI,CAEGiC,UAFH,EAGJjC,MAHI,CAGGkC,QAHH,EAIJlC,MAJI,CAIGoC,cAJH,CAAP;AAKD;AAEM,SAASoO,qBAAT,CAA+BlB,OAA/B,EAAwC;AAC7C,MAAI,CAACE,IAAI,CAACjM,IAAL,CAAWrE,GAAD,IAASyB,MAAM,CAACzB,GAAD,CAAN,KAAgBoQ,OAAnC,CAAL,EAAkD;AAChD,UAAM3P,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,kCAAiC0P,OAAQ,mDAH5B,EAIhBA,OAJgB,CADT,CAAX;AAQD;;AAED,SAAOmB,iBAAiB,CAACnB,OAAD,CAAjB,CAA2B7K,IAA3B,CAAgC,MAAM;AAC3C,UAAMiM,QAAQ,GAAGlB,IAAI,CAACmB,SAAL,CAAgBzR,GAAD,IAASyB,MAAM,CAACzB,GAAD,CAAN,KAAgBoQ,OAAxC,CAAjB;AACAE,IAAAA,IAAI,CAACoB,MAAL,CAAYF,QAAZ,EAAsB,CAAtB;AACD,GAHM,CAAP;AAID;AAEM,SAASD,iBAAT,CAA2BnB,OAA3B,EAAoCuB,IAAI,GAAG;AAAEC,EAAAA,cAAc,EAAE;AAAlB,CAA3C,EAAsE;AAC3E,MAAI,OAAOxB,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,UAAM3P,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEJ,+CAFI,CADT,CAAX;AAMD;;AACD,QAAMV,GAAG,GAAGqE,IAAI,CAACiM,IAAD,EAAQuB,GAAD,IAASpQ,MAAM,CAACoQ,GAAD,CAAN,KAAgBzB,OAAhC,CAAhB;;AACA,MAAI,CAACpQ,GAAL,EAAU;AACR,UAAMS,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,iCAAgC0P,OAAQ,mDAH3B,EAIhBA,OAJgB,CADT,CAAX;AAQD;;AAED,QAAM0B,aAAa,GAAG3B,gBAAgB,CAAC1O,MAAM,CAACzB,GAAD,CAAP,CAAtC;;AACA,MAAI2R,IAAI,IAAIA,IAAI,CAACC,cAAjB,EAAiC;AAC/B;AAEA,QAAIE,aAAJ,EAAmB;AACjB;AACA,aAAOA,aAAa,CAACnM,OAArB;AACD,KAHD,MAGO;AACL;AACA,YAAMA,OAAO,GAAG,IAAIX,OAAJ,CAAY,CAACC,OAAD,EAAUS,MAAV,KAAqB;AAC/CqK,QAAAA,cAAc,CAAC/P,GAAD,EAAM,MAAM2F,OAAZ,EAAqBV,OAArB,EAA8BS,MAA9B,CAAd;AACD,OAFe,CAAhB;AAGA,aAAOC,OAAP;AACD;AACF,GAbD,MAaO;AACL;;AAGA,QAAIN,aAAJ;;AAEA,QAAIyM,aAAJ,EAAmB;AACjB;AACAzM,MAAAA,aAAa,GAAGyM,aAAa,CAACnM,OAA9B;AACAoM,MAAAA,oBAAoB,CAAC/R,GAAD,EAAM8R,aAAa,CAAC7M,OAApB,EAA6B6M,aAAa,CAACpM,MAA3C,CAApB;AACD,KAJD,MAIO;AACL;AACAL,MAAAA,aAAa,GAAG,IAAIL,OAAJ,CAAY,CAACC,OAAD,EAAUS,MAAV,KAAqB;AAC/CqK,QAAAA,cAAc,CAAC/P,GAAD,EAAM,MAAMqF,aAAZ,EAA2BJ,OAA3B,EAAoCS,MAApC,CAAd;AACAqM,QAAAA,oBAAoB,CAAC/R,GAAD,EAAMiF,OAAN,EAAeS,MAAf,CAApB;AACD,OAHe,CAAhB;AAID;;AAED,WAAOL,aAAP;AACD;AACF;;AAED,SAAS0M,oBAAT,CAA8B/R,GAA9B,EAAmCiF,OAAnC,EAA4CS,MAA5C,EAAoD;AAClDM,EAAAA,gBAAgB,CAAChG,GAAD,CAAhB,CACGuF,IADH,CACQoK,eADR,EAEGpK,IAFH,CAEQ,MAAM;AACVN,IAAAA,OAAO;AACP1E,IAAAA,UAAU,CAAC,MAAM;AACf;AACAyM,MAAAA,OAAO;AACR,KAHS,CAAV;AAID,GARH,EASGpH,KATH,CASSF,MATT;AAUD;;AAED,SAASsM,6BAAT,CACEnO,IADF,EAEEgN,YAFF,EAGE1N,UAHF,EAIEsE,WAJF,EAKE;AACA,MAAI,OAAO5D,IAAP,KAAgB,QAAhB,IAA4BA,IAAI,CAACzD,MAAL,KAAgB,CAAhD,EACE,MAAMK,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,8EAHa,CADT,CAAX;AAQF,MAAI,CAACmQ,YAAL,EACE,MAAMpQ,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,gGAHc,CADT,CAAX;AAQF,MAAI,OAAOyC,UAAP,KAAsB,UAA1B,EACE,MAAM1C,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,wEAHc,CADT,CAAX;AAQF,MACE,CAAC,CAAC+G,WAAF,KACC,OAAOA,WAAP,KAAuB,QAAvB,IAAmC9C,KAAK,CAACC,OAAN,CAAc6C,WAAd,CADpC,CADF,EAIE,MAAMhH,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,kEAHc,CADT,CAAX;AAOH;;AAEM,SAASuR,0BAAT,CAAoCzK,MAApC,EAA4C;AACjD,MAAI7C,KAAK,CAACC,OAAN,CAAc4C,MAAd,KAAyBA,MAAM,KAAK,IAAxC,EACE,MAAM/G,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEL,iDAFK,CADT,CAAX;AAMF,QAAMwR,SAAS,GAAG,CAAC,MAAD,EAAS,KAAT,EAAgB,YAAhB,EAA8B,aAA9B,CAAlB;AACA,QAAMC,WAAW,GAAGjM,MAAM,CAACC,IAAP,CAAYqB,MAAZ,EAAoBpC,MAApB,CAClB,CAAC+M,WAAD,EAAcC,IAAd,KACEF,SAAS,CAACG,QAAV,CAAmBD,IAAnB,IAA2BD,WAA3B,GAAyCA,WAAW,CAACG,MAAZ,CAAmBF,IAAnB,CAFzB,EAGlB,EAHkB,CAApB;AAKA,MAAID,WAAW,CAAC/R,MAAZ,KAAuB,CAA3B,EACE,MAAMK,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGb,0CAAyCwR,SAAS,CAAC9Q,IAAV,CACxC,IADwC,CAExC,mBAAkB+Q,WAAW,CAAC/Q,IAAZ,CAAiB,IAAjB,CAAuB,GAL7B,CADT,CAAX;AASF,MAAI,OAAOoG,MAAM,CAAC3D,IAAd,KAAuB,QAAvB,IAAmC2D,MAAM,CAAC3D,IAAP,CAAYzD,MAAZ,KAAuB,CAA9D,EACE,MAAMK,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,mEAHc,CADT,CAAX;AAOF,MAAI,OAAO8G,MAAM,CAACxH,GAAd,KAAsB,QAAtB,IAAkC,OAAOwH,MAAM,CAACxH,GAAd,KAAsB,UAA5D,EACE,MAAMS,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,oFAHc,CADT,CAAX;;AAOF,QAAM6R,uBAAuB,GAAIpP,UAAD,IAC9B,OAAOA,UAAP,KAAsB,QAAtB,IAAkC,OAAOA,UAAP,KAAsB,UAD1D;;AAEA,MACE,CAACoP,uBAAuB,CAAC/K,MAAM,CAACrE,UAAR,CAAxB,IACA,EACEwB,KAAK,CAACC,OAAN,CAAc4C,MAAM,CAACrE,UAArB,KACAqE,MAAM,CAACrE,UAAP,CAAkBqP,KAAlB,CAAwBD,uBAAxB,CAFF,CAFF,EAOE,MAAM9R,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAGd,+FAHc,CADT,CAAX;AAOF,MACE,EACE,CAAC8G,MAAM,CAACC,WAAR,IACC,OAAOD,MAAM,CAACC,WAAd,KAA8B,QAA9B,IACC,CAAC9C,KAAK,CAACC,OAAN,CAAc4C,MAAM,CAACC,WAArB,CAHL,CADF,EAOE,MAAMhH,KAAK,CACTC,kBAAkB,CAChB,EADgB,GAEL,mDAFK,CADT,CAAX;AAMH;;AAED,SAASqQ,iBAAT,CACEH,eADF,EAEEC,YAFF,EAGE1N,UAHF,EAIEsE,WAJF,EAKE;AACA,QAAMgL,cAAc,GAAG,OAAO7B,eAAP,KAA2B,QAAlD;AAEA,QAAME,YAAY,GAAG;AACnBjN,IAAAA,IAAI,EAAE,IADa;AAEnBgH,IAAAA,OAAO,EAAE,IAFU;AAGnB1H,IAAAA,UAAU,EAAE,IAHO;AAInBsE,IAAAA,WAAW,EAAE;AAJM,GAArB;;AAOA,MAAIgL,cAAJ,EAAoB;AAClBR,IAAAA,0BAA0B,CAACrB,eAAD,CAA1B;AACAE,IAAAA,YAAY,CAACjN,IAAb,GAAoB+M,eAAe,CAAC/M,IAApC;AACAiN,IAAAA,YAAY,CAACjG,OAAb,GAAuB+F,eAAe,CAAC5Q,GAAvC;AACA8Q,IAAAA,YAAY,CAAC3N,UAAb,GAA0ByN,eAAe,CAACzN,UAA1C;AACA2N,IAAAA,YAAY,CAACrJ,WAAb,GAA2BmJ,eAAe,CAACnJ,WAA3C;AACD,GAND,MAMO;AACLuK,IAAAA,6BAA6B,CAC3BpB,eAD2B,EAE3BC,YAF2B,EAG3B1N,UAH2B,EAI3BsE,WAJ2B,CAA7B;AAMAqJ,IAAAA,YAAY,CAACjN,IAAb,GAAoB+M,eAApB;AACAE,IAAAA,YAAY,CAACjG,OAAb,GAAuBgG,YAAvB;AACAC,IAAAA,YAAY,CAAC3N,UAAb,GAA0BA,UAA1B;AACA2N,IAAAA,YAAY,CAACrJ,WAAb,GAA2BA,WAA3B;AACD;;AAEDqJ,EAAAA,YAAY,CAACjG,OAAb,GAAuB6H,eAAe,CAAC5B,YAAY,CAACjG,OAAd,CAAtC;AACAiG,EAAAA,YAAY,CAACrJ,WAAb,GAA2BkL,mBAAmB,CAAC7B,YAAY,CAACrJ,WAAd,CAA9C;AACAqJ,EAAAA,YAAY,CAAC3N,UAAb,GAA0ByP,kBAAkB,CAAC9B,YAAY,CAAC3N,UAAd,CAA5C;AAEA,SAAO2N,YAAP;AACD;;AAED,SAAS4B,eAAT,CAAyB7H,OAAzB,EAAkC;AAChC,MAAI,OAAOA,OAAP,KAAmB,UAAvB,EAAmC;AACjC,WAAO,MAAM7F,OAAO,CAACC,OAAR,CAAgB4F,OAAhB,CAAb;AACD;;AAED,SAAOA,OAAP;AACD;;AAED,SAAS8H,mBAAT,CAA6BlL,WAA7B,EAA0C;AACxC,SAAOA,WAAW,GAAGA,WAAH,GAAiB,EAAnC;AACD;;AAED,SAASmL,kBAAT,CAA4BzP,UAA5B,EAAwC;AACtC,MAAI0P,eAAe,GAAGlO,KAAK,CAACC,OAAN,CAAczB,UAAd,IAA4BA,UAA5B,GAAyC,CAACA,UAAD,CAA/D;AACA0P,EAAAA,eAAe,GAAGA,eAAe,CAACxM,GAAhB,CAAqByM,gBAAD,IACpC,OAAOA,gBAAP,KAA4B,UAA5B,GACIA,gBADJ,GAEIC,gBAAgB,CAACD,gBAAD,CAHJ,CAAlB;AAMA,SAAQzP,QAAD,IACLwP,eAAe,CAACG,IAAhB,CAAsB7P,UAAD,IAAgBA,UAAU,CAACE,QAAD,CAA/C,CADF;AAED;;AAED,SAAS0P,gBAAT,CAA0BE,IAA1B,EAAgC;AAC9B,QAAMC,KAAK,GAAGC,2BAA2B,CAACF,IAAD,CAAzC;AAEA,SAAQ5P,QAAD,IAAc;AACnB,UAAM+P,KAAK,GAAG/P,QAAQ,CAACsI,IAAT,CAAc6D,OAAd,CAAsBnM,QAAQ,CAACgQ,MAA/B,EAAuC,EAAvC,CAAd;AACA,WAAOH,KAAK,CAACI,IAAN,CAAWF,KAAX,CAAP;AACD,GAHD;AAID;;AAEM,SAASD,2BAAT,CAAqCF,IAArC,EAA2C;AAChD,MAAIM,SAAS,GAAG,CAAhB;AAAA,MACEC,SAAS,GAAG,KADd;AAAA,MAEEC,QAAQ,GAAG,GAFb;;AAIA,OAAK,IAAIC,SAAS,GAAG,CAArB,EAAwBA,SAAS,GAAGT,IAAI,CAAC7S,MAAzC,EAAiDsT,SAAS,EAA1D,EAA8D;AAC5D,UAAMC,IAAI,GAAGV,IAAI,CAACS,SAAD,CAAjB;AACA,UAAME,cAAc,GAAG,CAACJ,SAAD,IAAcG,IAAI,KAAK,GAA9C;AACA,UAAME,YAAY,GAAGL,SAAS,IAAIG,IAAI,KAAK,GAA3C;;AACA,QAAIC,cAAc,IAAIC,YAAtB,EAAoC;AAClCC,MAAAA,aAAa,CAACJ,SAAD,CAAb;AACD;AACF;;AAEDI,EAAAA,aAAa,CAACb,IAAI,CAAC7S,MAAN,CAAb;AAEA,SAAO,IAAI2T,MAAJ,CAAWN,QAAX,EAAqB,GAArB,CAAP;;AAEA,WAASK,aAAT,CAAuBxO,KAAvB,EAA8B;AAC5B,UAAM0O,8BAA8B,GAAG,SAAvC;AACA,UAAMC,mBAAmB,GAAGC,cAAc,CAACjB,IAAI,CAACkB,KAAL,CAAWZ,SAAX,EAAsBjO,KAAtB,CAAD,CAA1C;AAEAmO,IAAAA,QAAQ,IAAID,SAAS,GACjBQ,8BADiB,GAEjBC,mBAFJ;AAGAT,IAAAA,SAAS,GAAG,CAACA,SAAb;AACAD,IAAAA,SAAS,GAAGjO,KAAZ;AACD;;AAED,WAAS4O,cAAT,CAAwB9F,GAAxB,EAA6B;AAC3B;AACA,WAAOA,GAAG,CAACoB,OAAJ,CAAY,qBAAZ,EAAmC,MAAnC,CAAP;AACD;AACF;;AC5ZD,IAAI4E,iBAAiB,GAAG,KAAxB;AAAA,IACEC,wBAAwB,GAAG,EAD7B;AAGO,SAASC,gBAAT,GAA4B;AACjC;AACA,SAAOtH,OAAO,EAAd;AACD;AAEM,SAASA,OAAT,CAAiBuH,eAAe,GAAG,EAAnC,EAAuC9H,cAAvC,EAAuD;AAC5D,MAAI2H,iBAAJ,EAAuB;AACrB,WAAO,IAAIpP,OAAJ,CAAY,CAACC,OAAD,EAAUS,MAAV,KAAqB;AACtC2O,MAAAA,wBAAwB,CAAC1T,IAAzB,CAA8B;AAC5BsE,QAAAA,OAD4B;AAE5BS,QAAAA,MAF4B;AAG5B+G,QAAAA;AAH4B,OAA9B;AAKD,KANM,CAAP;AAOD;;AAED,MAAI+H,OAAO,GAAG,IAAd;;AAEA,MAAIC,SAAS,EAAb,EAAiB;AACfL,IAAAA,iBAAiB,GAAG,IAApB;AACA,WAAOM,iBAAiB,EAAxB;AACD,GAHD,MAGO;AACL,WAAOC,QAAQ,EAAf;AACD;;AAED,WAASA,QAAT,GAAoB;AAClB,WAAO3P,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,MAAM;AAClC,YAAMqP,YAAY,GAAGzD,aAAa,GAAG9K,GAAhB,CAAoBqE,aAApB,CAArB;;AAEA,UAAIkK,YAAY,CAACxU,MAAb,GAAsB,CAA1B,EAA6B;AAC3BoU,QAAAA,OAAO,GAAG,KAAV;AACD;;AAED,aACExP,OAAO,CAACuB,GAAR,CAAYqO,YAAZ,EACGrP,IADH,CACQsP,qBADR;AAAA,OAGGtP,IAHH,CAGQ,MAAM,EAHd,EAIGK,KAJH,CAIU7F,GAAD,IAAS;AACd8U,QAAAA,qBAAqB;AACrB,cAAM9U,GAAN;AACD,OAPH,CADF;AAUD,KAjBM,CAAP;AAkBD;;AAED,WAAS2U,iBAAT,GAA6B;AAC3B,WAAO1P,OAAO,CAACC,OAAR,GAAkBM,IAAlB,CAAuB,MAAM;AAClCnC,MAAAA,MAAM,CAAC0D,aAAP,CACE,IAAIC,WAAJ,CACE,iCADF,EAEE+N,oBAAoB,EAFtB,CADF;AAMA,YAAMC,cAAc,GAAG1E,eAAe,GAAGhK,GAAlB,CAAsBsJ,eAAtB,CAAvB;AAEA,YAAMqF,qBAAqB,GAAG5D,gBAAgB,GAC3C/K,GAD2B,CACvBL,gBADuB,EAE3BK,GAF2B,CAEtByC,cAAD,IAAoBA,cAAc,CAACvD,IAAf,CAAoBoK,eAApB,CAFG,CAA9B;AAIA,YAAMsF,kBAAkB,GAAGD,qBAAqB,CAAC1C,MAAtB,CAA6ByC,cAA7B,CAA3B;;AACA,UAAIE,kBAAkB,CAAC7U,MAAnB,GAA4B,CAAhC,EAAmC;AACjCoU,QAAAA,OAAO,GAAG,KAAV;AACD;;AAED,YAAMU,iBAAiB,GAAGlQ,OAAO,CAACuB,GAAR,CAAY0O,kBAAZ,CAA1B;AAEA,YAAME,UAAU,GAAGhE,aAAa,EAAhC;AAEA;;;;AAGA,YAAMiE,qBAAqB,GAAGD,UAAU,CAAC9O,GAAX,CAAgBrG,GAAD,IAAS;AACpD,eAAO0K,aAAa,CAAC1K,GAAD,CAAb,CACJuF,IADI,CACCM,kBADD,EAEJN,IAFI,CAEEvF,GAAD,IAAS;AACb,iBAAOkV,iBAAiB,CAAC3P,IAAlB,CAAuB,MAAMsB,cAAc,CAAC7G,GAAD,CAA3C,CAAP;AACD,SAJI,CAAP;AAKD,OAN6B,CAA9B;;AAOA,UAAIoV,qBAAqB,CAAChV,MAAtB,GAA+B,CAAnC,EAAsC;AACpCoU,QAAAA,OAAO,GAAG,KAAV;AACD;AAED;;;;;;AAIA,YAAMa,aAAa,GAAGhE,cAAc,GACjCvQ,MADmB,CACXwU,UAAD,IAAgBH,UAAU,CAAClJ,OAAX,CAAmBqJ,UAAnB,IAAiC,CADrC,EAEnBjP,GAFmB,CAEdiP,UAAD,IAAgB;AACnB,eAAOzP,kBAAkB,CAACyP,UAAD,CAAlB,CACJ/P,IADI,CACC,MAAM2P,iBADP,EAEJ3P,IAFI,CAEC,MAAMsB,cAAc,CAACyO,UAAD,CAFrB,CAAP;AAGD,OANmB,CAAtB;;AAOA,UAAID,aAAa,CAACjV,MAAd,GAAuB,CAA3B,EAA8B;AAC5BoU,QAAAA,OAAO,GAAG,KAAV;AACD;;AACD,aAAOU,iBAAiB,CACrBtP,KADI,CACG7F,GAAD,IAAS;AACd8U,QAAAA,qBAAqB;AACrB,cAAM9U,GAAN;AACD,OAJI,EAKJwF,IALI,CAKC,MAAM;AACV;;;;AAIAsP,QAAAA,qBAAqB;AAErB,eAAO7P,OAAO,CAACuB,GAAR,CAAY6O,qBAAqB,CAAC9C,MAAtB,CAA6B+C,aAA7B,CAAZ,EACJzP,KADI,CACG7F,GAAD,IAAS;AACdwU,UAAAA,eAAe,CAAClU,OAAhB,CAAyBsF,OAAD,IAAaA,OAAO,CAACD,MAAR,CAAe3F,GAAf,CAArC;AACA,gBAAMA,GAAN;AACD,SAJI,EAKJwF,IALI,CAKCgQ,iBALD,CAAP;AAMD,OAlBI,CAAP;AAmBD,KArEM,CAAP;AAsED;;AAED,WAASA,iBAAT,GAA6B;AAC3B,UAAMC,WAAW,GAAGjF,cAAc,EAAlC;AACAgE,IAAAA,eAAe,CAAClU,OAAhB,CAAyBsF,OAAD,IAAaA,OAAO,CAACV,OAAR,CAAgBuQ,WAAhB,CAArC;;AAEA,QAAI;AACF,YAAMC,kBAAkB,GAAGjB,OAAO,GAC9B,0BAD8B,GAE9B,uBAFJ;AAGApR,MAAAA,MAAM,CAAC0D,aAAP,CACE,IAAIC,WAAJ,CAAgB0O,kBAAhB,EAAoCX,oBAAoB,EAAxD,CADF;AAGA1R,MAAAA,MAAM,CAAC0D,aAAP,CACE,IAAIC,WAAJ,CAAgB,0BAAhB,EAA4C+N,oBAAoB,EAAhE,CADF;AAGD,KAVD,CAUE,OAAO/U,GAAP,EAAY;AACZ;;;;AAIAQ,MAAAA,UAAU,CAAC,MAAM;AACf,cAAMR,GAAN;AACD,OAFS,CAAV;AAGD;AAED;;;;;;;AAKAqU,IAAAA,iBAAiB,GAAG,KAApB;;AAEA,QAAIC,wBAAwB,CAACjU,MAAzB,GAAkC,CAAtC,EAAyC;AACvC;;;AAGA,YAAMsV,mBAAmB,GAAGrB,wBAA5B;AACAA,MAAAA,wBAAwB,GAAG,EAA3B;AACArH,MAAAA,OAAO,CAAC0I,mBAAD,CAAP;AACD;;AAED,WAAOF,WAAP;AACD;AAED;;;;;;;;AAMA,WAASX,qBAAT,GAAiC;AAC/BN,IAAAA,eAAe,CAAClU,OAAhB,CAAyBsV,cAAD,IAAoB;AAC1CnJ,MAAAA,0BAA0B,CAACmJ,cAAc,CAAClJ,cAAhB,CAA1B;AACD,KAFD;AAIAD,IAAAA,0BAA0B,CAACC,cAAD,CAA1B;AACD;;AAED,WAASqI,oBAAT,GAAgC;AAC9B,UAAMnT,MAAM,GAAG;AAAEiU,MAAAA,MAAM,EAAE;AAAV,KAAf;;AAEA,QAAInJ,cAAc,IAAIA,cAAc,CAAC,CAAD,CAApC,EAAyC;AACvC9K,MAAAA,MAAM,CAACiU,MAAP,CAAcC,aAAd,GAA8BpJ,cAAc,CAAC,CAAD,CAA5C;AACD;;AAED,WAAO9K,MAAP;AACD;AACF;;ACtMD,IAAImU,OAAO,GAAG,KAAd;AAEO,SAASC,KAAT,CAAepE,IAAf,EAAqB;AAC1BmE,EAAAA,OAAO,GAAG,IAAV;;AACA,MAAInE,IAAI,IAAIA,IAAI,CAAC9E,cAAjB,EAAiC;AAC/BC,IAAAA,iBAAiB,CAAC6E,IAAI,CAAC9E,cAAN,CAAjB;AACD;;AACD,MAAI1B,WAAJ,EAAiB;AACf6B,IAAAA,OAAO;AACR;AACF;AAEM,SAASyH,SAAT,GAAqB;AAC1B,SAAOqB,OAAP;AACD;;AAED,IAAI3K,WAAJ,EAAiB;AACf5K,EAAAA,UAAU,CAAC,MAAM;AACf,QAAI,CAACuV,OAAL,EAAc;AACZjU,MAAAA,OAAO,CAACC,IAAR,CACEpB,kBAAkB,CAChB,CADgB,GAGb,wKAHa,CADpB;AAOD;AACF,GAVS,EAUP,IAVO,CAAV;AAWD;;AC3BD,eAAe;AACb+P,EAAAA,aADa;AAEbzD,EAAAA,OAFa;AAGb9K,EAAAA,UAHa;AAIbwI,EAAAA,aAJa;AAKb7E,EAAAA,kBALa;AAMbyL,EAAAA;AANa,CAAf;;ACmCA,IAAInG,WAAW,IAAI/H,MAAM,CAAC4S,uBAA1B,EAAmD;AACjD5S,EAAAA,MAAM,CAAC4S,uBAAP,CAA+BC,cAA/B,GAAgDhL,QAAhD;AACD;;;;"}
\No newline at end of file