345 lines
2.0 MiB
345 lines
2.0 MiB
"use strict";
|
||
/*
|
||
* ATTENTION: An "eval-source-map" devtool has been used.
|
||
* This devtool is neither made for production nor for readable output files.
|
||
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
||
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
||
* or disable the default devtool with "devtool: false".
|
||
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
||
*/
|
||
exports.id = "vendor-chunks/zod@3.25.76";
|
||
exports.ids = ["vendor-chunks/zod@3.25.76"];
|
||
exports.modules = {
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js ***!
|
||
\************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodError: () => (/* binding */ ZodError),\n/* harmony export */ ZodIssueCode: () => (/* binding */ ZodIssueCode),\n/* harmony export */ quotelessJson: () => (/* binding */ quotelessJson)\n/* harmony export */ });\n/* harmony import */ var _helpers_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/util.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js\");\n\nconst ZodIssueCode = _helpers_util_js__WEBPACK_IMPORTED_MODULE_0__.util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\"\n]);\nconst quotelessJson = (obj)=>{\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues){\n super();\n this.issues = [];\n this.addIssue = (sub)=>{\n this.issues = [\n ...this.issues,\n sub\n ];\n };\n this.addIssues = (subs = [])=>{\n this.issues = [\n ...this.issues,\n ...subs\n ];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n } else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper || function(issue) {\n return issue.message;\n };\n const fieldErrors = {\n _errors: []\n };\n const processError = (error)=>{\n for (const issue of error.issues){\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n } else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n } else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n } else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n } else {\n let curr = fieldErrors;\n let i = 0;\n while(i < issue.path.length){\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || {\n _errors: []\n };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n } else {\n curr[el] = curr[el] || {\n _errors: []\n };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, _helpers_util_js__WEBPACK_IMPORTED_MODULE_0__.util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue)=>issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues){\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n } else {\n formErrors.push(mapper(sub));\n }\n }\n return {\n formErrors,\n fieldErrors\n };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues)=>{\n const error = new ZodError(issues);\n return error;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9ab2RFcnJvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXlDO0FBQ2xDLE1BQU1DLGVBQWVELGtEQUFJQSxDQUFDRSxXQUFXLENBQUM7SUFDekM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDSCxFQUFFO0FBQ0ksTUFBTUMsZ0JBQWdCLENBQUNDO0lBQzFCLE1BQU1DLE9BQU9DLEtBQUtDLFNBQVMsQ0FBQ0gsS0FBSyxNQUFNO0lBQ3ZDLE9BQU9DLEtBQUtHLE9BQU8sQ0FBQyxlQUFlO0FBQ3ZDLEVBQUU7QUFDSyxNQUFNQyxpQkFBaUJDO0lBQzFCLElBQUlDLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQ0MsTUFBTTtJQUN0QjtJQUNBLFlBQVlBLE1BQU0sQ0FBRTtRQUNoQixLQUFLO1FBQ0wsSUFBSSxDQUFDQSxNQUFNLEdBQUcsRUFBRTtRQUNoQixJQUFJLENBQUNDLFFBQVEsR0FBRyxDQUFDQztZQUNiLElBQUksQ0FBQ0YsTUFBTSxHQUFHO21CQUFJLElBQUksQ0FBQ0EsTUFBTTtnQkFBRUU7YUFBSTtRQUN2QztRQUNBLElBQUksQ0FBQ0MsU0FBUyxHQUFHLENBQUNDLE9BQU8sRUFBRTtZQUN2QixJQUFJLENBQUNKLE1BQU0sR0FBRzttQkFBSSxJQUFJLENBQUNBLE1BQU07bUJBQUtJO2FBQUs7UUFDM0M7UUFDQSxNQUFNQyxjQUFjLFdBQVdDLFNBQVM7UUFDeEMsSUFBSUMsT0FBT0MsY0FBYyxFQUFFO1lBQ3ZCLG1DQUFtQztZQUNuQ0QsT0FBT0MsY0FBYyxDQUFDLElBQUksRUFBRUg7UUFDaEMsT0FDSztZQUNELElBQUksQ0FBQ0ksU0FBUyxHQUFHSjtRQUNyQjtRQUNBLElBQUksQ0FBQ0ssSUFBSSxHQUFHO1FBQ1osSUFBSSxDQUFDVixNQUFNLEdBQUdB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QUFDZCxPQUFPWDtZQUMzQjtRQUNKO1FBQ0EsT0FBTztZQUFFb0M7WUFBWXRCO1FBQVk7SUFDckM7SUFDQSxJQUFJc0IsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDRCxPQUFPO0lBQ3ZCO0FBQ0o7QUFDQXhDLFNBQVMyQyxNQUFNLEdBQUcsQ0FBQ3hDO0lBQ2YsTUFBTW1CLFFBQVEsSUFBSXRCLFNBQVNHO0lBQzNCLE9BQU9tQjtBQUNYIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvWm9kRXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbCB9IGZyb20gXCIuL2hlbHBlcnMvdXRpbC5qc1wiO1xuZXhwb3J0IGNvbnN0IFpvZElzc3VlQ29kZSA9IHV0aWwuYXJyYXlUb0VudW0oW1xuICAgIFwiaW52YWxpZF90eXBlXCIsXG4gICAgXCJpbnZhbGlkX2xpdGVyYWxcIixcbiAgICBcImN1c3RvbVwiLFxuICAgIFwiaW52YWxpZF91bmlvblwiLFxuICAgIFwiaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yXCIsXG4gICAgXCJpbnZhbGlkX2VudW1fdmFsdWVcIixcbiAgICBcInVucmVjb2duaXplZF9rZXlzXCIsXG4gICAgXCJpbnZhbGlkX2FyZ3VtZW50c1wiLFxuICAgIFwiaW52YWxpZF9yZXR1cm5fdHlwZVwiLFxuICAgIFwiaW52YWxpZF9kYXRlXCIsXG4gICAgXCJpbnZhbGlkX3N0cmluZ1wiLFxuICAgIFwidG9vX3NtYWxsXCIsXG4gICAgXCJ0b29fYmlnXCIsXG4gICAgXCJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlc1wiLFxuICAgIFwibm90X211bHRpcGxlX29mXCIsXG4gICAgXCJub3RfZmluaXRlXCIsXG5dKTtcbmV4cG9ydCBjb25zdCBxdW90ZWxlc3NKc29uID0gKG9iaikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpO1xuICAgIHJldHVybiBqc29uLnJlcGxhY2UoL1wiKFteXCJdKylcIjovZywgXCIkMTpcIik7XG59O1xuZXhwb3J0IGNsYXNzIFpvZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGdldCBlcnJvcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzc3VlcztcbiAgICB9XG4gICAgY29uc3RydWN0b3IoaXNzdWVzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaXNzdWVzID0gW107XG4gICAgICAgIHRoaXMuYWRkSXNzdWUgPSAoc3ViKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzc3VlcyA9IFsuLi50aGlzLmlzc3Vlcywgc3ViXTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hZGRJc3N1ZXMgPSAoc3VicyA9IFtdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzc3VlcyA9IFsuLi50aGlzLmlzc3VlcywgLi4uc3Vic107XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFjdHVhbFByb3RvID0gbmV3LnRhcmdldC5wcm90b3R5cGU7XG4gICAgICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBiYW4vYmFuXG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgYWN0dWFsUHJvdG8pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fX3Byb3RvX18gPSBhY3R1YWxQcm90bztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5hbWUgPSBcIlpvZEVycm9yXCI7XG4gICAgICAgIHRoaXMuaXNzdWVzID0gaXNzdWVzO1xuICAgIH1cbiAgICBmb3JtYXQoX21hcHBlcikge1xuICAgICAgICBjb25zdCBtYXBwZXIgPSBfbWFwcGVyIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoaXNzdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNzdWUubWVzc2FnZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0geyBfZXJyb3JzOiBbXSB9O1xuICAgICAgICBjb25zdCBwcm9jZXNzRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXNzdWUgb2YgZXJyb3IuaXNzdWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF91bmlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzc3VlLnVuaW9uRXJyb3JzLm1hcChwcm9jZXNzRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfcmV0dXJuX3R5cGVcIikge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRXJyb3IoaXNzdWUucmV0dXJuVHlwZUVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX2FyZ3VtZW50c1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NFcnJvcihpc3N1ZS5hcmd1bWVudHNFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzLl9lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjdXJyID0gZmllbGRFcnJvcnM7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBpc3N1ZS5wYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBpc3N1ZS5wYXRoW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVybWluYWwgPSBpID09PSBpc3N1ZS5wYXRoLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlcm1pbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHR5cGVvZiBlbCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh0eXBlb2YgZWwgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0IGVycm9yQXJyYXk6IGFueSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZXJyb3JBcnJheS5fZXJyb3JzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IGVycm9yQXJyYXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0uX2Vycm9ycy5wdXNoKG1hcHBlcihpc3N1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3VyciA9IGN1cnJbZWxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBwcm9jZXNzRXJyb3IodGhpcyk7XG4gICAgICAgIHJldHVybiBmaWVsZEVycm9ycztcbiAgICB9XG4gICAgc3RhdGljIGFzc2VydCh2YWx1ZSkge1xuICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIFpvZEVycm9yKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgYSBab2RFcnJvcjogJHt2YWx1ZX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZTtcbiAgICB9XG4gICAgZ2V0IG1lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmlzc3VlcywgdXRpbC5qc29uU3RyaW5naWZ5UmVwbGFjZXIsIDIpO1xuICAgIH1cbiAgICBnZXQgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICB9XG4gICAgZmxhdHRlbihtYXBwZXIgPSAoaXNzdWUpID0+IGlzc3VlLm1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSB7fTtcbiAgICAgICAgY29uc3QgZm9ybUVycm9ycyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLmlzc3Vlcykge1xuICAgICAgICAgICAgaWYgKHN1Yi5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEVsID0gc3ViLnBhdGhbMF07XG4gICAgICAgICAgICAgICAgZmllbGRFcnJvcnNbZmlyc3RFbF0gPSBmaWVsZEVycm9yc1tmaXJzdEVsXSB8fCBbXTtcbiAgICAgICAgICAgICAgICBmaWVsZEVycm9yc1tmaXJzdEVsXS5wdXNoKG1hcHBlcihzdWIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcm1FcnJvcnMucHVzaChtYXBwZXIoc3ViKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZm9ybUVycm9ycywgZmllbGRFcnJvcnMgfTtcbiAgICB9XG4gICAgZ2V0IGZvcm1FcnJvcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZsYXR0ZW4oKTtcbiAgICB9XG59XG5ab2RFcnJvci5jcmVhdGUgPSAoaXNzdWVzKSA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgWm9kRXJyb3IoaXNzdWVzKTtcbiAgICByZXR1cm4gZXJyb3I7XG59O1xuIl0sIm5hbWVzIjpbInV0aWwiLCJab2RJc3N1ZUNvZGUiLCJhcnJheVRvRW51bSIsInF1b3RlbGVzc0pzb24iLCJvYmoiLCJqc29uIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlcGxhY2UiLCJab2RFcnJvciIsIkVycm9yIiwiZXJyb3JzIiwiaXNzdWVzIiwiYWRkSXNzdWUiLCJzdWIiLCJhZGRJc3N1ZXMiLCJzdWJzIiwiYWN0dWFsUHJvdG8iLCJwcm90b3R5cGUiLCJPYmplY3QiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIm5hbWUiLCJmb3JtYXQiLCJfbWFwcGVyIiwibWFwcGVyIiwiaXNzdWUiLCJtZXNzYWdlIiwiZmllbGRFcnJvcnMiLCJfZXJyb3JzIiwicHJvY2Vzc0Vycm9yIiwiZXJyb3IiLCJjb2RlIiwidW5pb25FcnJvcnMiLCJtYXAiLCJyZXR1cm5UeXBlRXJyb3IiLCJhcmd1bWVudHNFcnJvciIsInBhdGgiLCJsZW5ndGgiLCJwdXNoIiwiY3VyciIsImkiLCJlbCIsInRlcm1pbmFsIiwiYXNzZXJ0IiwidmFsdWUiLCJ0b1N0cmluZyIsImpzb25TdHJpbmdpZnlSZXBsYWNlciIsImlzRW1wdHkiLCJmbGF0dGVuIiwiZm9ybUVycm9ycyIsImZpcnN0RWwiLCJjcmVhdGUiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultErrorMap: () => (/* reexport safe */ _locales_en_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ getErrorMap: () => (/* binding */ getErrorMap),\n/* harmony export */ setErrorMap: () => (/* binding */ setErrorMap)\n/* harmony export */ });\n/* harmony import */ var _locales_en_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locales/en.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js\");\n\nlet overrideErrorMap = _locales_en_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9lcnJvcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUE4QztBQUM5QyxJQUFJQyxtQkFBbUJELHNEQUFlQTtBQUNYO0FBQ3BCLFNBQVNFLFlBQVlDLEdBQUc7SUFDM0JGLG1CQUFtQkU7QUFDdkI7QUFDTyxTQUFTQztJQUNaLE9BQU9IO0FBQ1giLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9lcnJvcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRFcnJvck1hcCBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzXCI7XG5sZXQgb3ZlcnJpZGVFcnJvck1hcCA9IGRlZmF1bHRFcnJvck1hcDtcbmV4cG9ydCB7IGRlZmF1bHRFcnJvck1hcCB9O1xuZXhwb3J0IGZ1bmN0aW9uIHNldEVycm9yTWFwKG1hcCkge1xuICAgIG92ZXJyaWRlRXJyb3JNYXAgPSBtYXA7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JNYXAoKSB7XG4gICAgcmV0dXJuIG92ZXJyaWRlRXJyb3JNYXA7XG59XG4iXSwibmFtZXMiOlsiZGVmYXVsdEVycm9yTWFwIiwib3ZlcnJpZGVFcnJvck1hcCIsInNldEVycm9yTWFwIiwibWFwIiwiZ2V0RXJyb3JNYXAiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ errorUtil: () => (/* binding */ errorUtil)\n/* harmony export */ });\nvar errorUtil;\n(function(errorUtil) {\n errorUtil.errToObj = (message)=>typeof message === \"string\" ? {\n message\n } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message)=>typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9oZWxwZXJzL2Vycm9yVXRpbC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sSUFBSUEsVUFBVTtBQUNwQixVQUFVQSxTQUFTO0lBQ2hCQSxVQUFVQyxRQUFRLEdBQUcsQ0FBQ0MsVUFBWSxPQUFPQSxZQUFZLFdBQVc7WUFBRUE7UUFBUSxJQUFJQSxXQUFXLENBQUM7SUFDMUYscUJBQXFCO0lBQ3JCRixVQUFVRyxRQUFRLEdBQUcsQ0FBQ0QsVUFBWSxPQUFPQSxZQUFZLFdBQVdBLFVBQVVBLFNBQVNBO0FBQ3ZGLEdBQUdGLGFBQWNBLENBQUFBLFlBQVksQ0FBQyIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3YzL2hlbHBlcnMvZXJyb3JVdGlsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgZXJyb3JVdGlsO1xuKGZ1bmN0aW9uIChlcnJvclV0aWwpIHtcbiAgICBlcnJvclV0aWwuZXJyVG9PYmogPSAobWVzc2FnZSkgPT4gdHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgPyB7IG1lc3NhZ2UgfSA6IG1lc3NhZ2UgfHwge307XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQ6XG4gICAgZXJyb3JVdGlsLnRvU3RyaW5nID0gKG1lc3NhZ2UpID0+IHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiID8gbWVzc2FnZSA6IG1lc3NhZ2U/Lm1lc3NhZ2U7XG59KShlcnJvclV0aWwgfHwgKGVycm9yVXRpbCA9IHt9KSk7XG4iXSwibmFtZXMiOlsiZXJyb3JVdGlsIiwiZXJyVG9PYmoiLCJtZXNzYWdlIiwidG9TdHJpbmciXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DIRTY: () => (/* binding */ DIRTY),\n/* harmony export */ EMPTY_PATH: () => (/* binding */ EMPTY_PATH),\n/* harmony export */ INVALID: () => (/* binding */ INVALID),\n/* harmony export */ OK: () => (/* binding */ OK),\n/* harmony export */ ParseStatus: () => (/* binding */ ParseStatus),\n/* harmony export */ addIssueToContext: () => (/* binding */ addIssueToContext),\n/* harmony export */ isAborted: () => (/* binding */ isAborted),\n/* harmony export */ isAsync: () => (/* binding */ isAsync),\n/* harmony export */ isDirty: () => (/* binding */ isDirty),\n/* harmony export */ isValid: () => (/* binding */ isValid),\n/* harmony export */ makeIssue: () => (/* binding */ makeIssue)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js\");\n/* harmony import */ var _locales_en_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../locales/en.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js\");\n\n\nconst makeIssue = (params)=>{\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [\n ...path,\n ...issueData.path || []\n ];\n const fullIssue = {\n ...issueData,\n path: fullPath\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps.filter((m)=>!!m).slice().reverse();\n for (const map of maps){\n errorMessage = map(fullIssue, {\n data,\n defaultError: errorMessage\n }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.getErrorMap)();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n overrideMap,\n overrideMap === _locales_en_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? undefined : _locales_en_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n ].filter((x)=>!!x)\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor(){\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\") this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\") this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results){\n if (s.status === \"aborted\") return INVALID;\n if (s.status === \"dirty\") status.dirty();\n arrayValue.push(s.value);\n }\n return {\n status: status.value,\n value: arrayValue\n };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs){\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs){\n const { key, value } = pair;\n if (key.status === \"aborted\") return INVALID;\n if (value.status === \"aborted\") return INVALID;\n if (key.status === \"dirty\") status.dirty();\n if (value.status === \"dirty\") status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return {\n status: status.value,\n value: finalObject\n };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\"\n});\nconst DIRTY = (value)=>({\n status: \"dirty\",\n value\n });\nconst OK = (value)=>({\n status: \"valid\",\n value\n });\nconst isAborted = (x)=>x.status === \"aborted\";\nconst isDirty = (x)=>x.status === \"dirty\";\nconst isValid = (x)=>x.status === \"valid\";\nconst isAsync = (x)=>typeof Promise !== \"undefined\" && x instanceof Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9oZWxwZXJzL3BhcnNlVXRpbC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQTJDO0FBQ0k7QUFDeEMsTUFBTUUsWUFBWSxDQUFDQztJQUN0QixNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRSxHQUFHSjtJQUM3QyxNQUFNSyxXQUFXO1dBQUlIO1dBQVVFLFVBQVVGLElBQUksSUFBSSxFQUFFO0tBQUU7SUFDckQsTUFBTUksWUFBWTtRQUNkLEdBQUdGLFNBQVM7UUFDWkYsTUFBTUc7SUFDVjtJQUNBLElBQUlELFVBQVVHLE9BQU8sS0FBS0MsV0FBVztRQUNqQyxPQUFPO1lBQ0gsR0FBR0osU0FBUztZQUNaRixNQUFNRztZQUNORSxTQUFTSCxVQUFVRyxPQUFPO1FBQzlCO0lBQ0o7SUFDQSxJQUFJRSxlQUFlO0lBQ25CLE1BQU1DLE9BQU9QLFVBQ1JRLE1BQU0sQ0FBQyxDQUFDQyxJQUFNLENBQUMsQ0FBQ0EsR0FDaEJDLEtBQUssR0FDTEMsT0FBTztJQUNaLEtBQUssTUFBTUMsT0FBT0wsS0FBTTtRQUNwQkQsZUFBZU0sSUFBSVQsV0FBVztZQUFFTDtZQUFNZSxjQUFjUDtRQUFhLEdBQUdGLE9BQU87SUFDL0U7SUFDQSxPQUFPO1FBQ0gsR0FBR0gsU0FBUztRQUNaRixNQUFNRztRQUNORSxTQUFTRTtJQUNiO0FBQ0osRUFBRTtBQUNLLE1BQU1RLGFBQWEsRUFBRSxDQUFDO0FBQ3RCLFNBQVNDLGtCQUFrQkMsR0FBRyxFQUFFZixTQUFTO0lBQzVDLE1BQU1nQixjQUFjdkIsdURBQVdBO0lBQy9CLE1BQU13QixRQUFRdEIsVUFBVTtRQUNwQkssV0FBV0E7UUFDWEgsTUFBTWtCLElBQUlsQixJQUFJO1FBQ2RDLE1BQU1pQixJQUFJakIsSUFBSTtRQUNkQyxXQUFXO1lBQ1BnQixJQUFJRyxNQUFNLENB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bWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvaGVscGVycy9wYXJzZVV0aWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RXJyb3JNYXAgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgZGVmYXVsdEVycm9yTWFwIGZyb20gXCIuLi9sb2NhbGVzL2VuLmpzXCI7XG5leHBvcnQgY29uc3QgbWFrZUlzc3VlID0gKHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IHsgZGF0YSwgcGF0aCwgZXJyb3JNYXBzLCBpc3N1ZURhdGEgfSA9IHBhcmFtcztcbiAgICBjb25zdCBmdWxsUGF0aCA9IFsuLi5wYXRoLCAuLi4oaXNzdWVEYXRhLnBhdGggfHwgW10pXTtcbiAgICBjb25zdCBmdWxsSXNzdWUgPSB7XG4gICAgICAgIC4uLmlzc3VlRGF0YSxcbiAgICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgfTtcbiAgICBpZiAoaXNzdWVEYXRhLm1lc3NhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uaXNzdWVEYXRhLFxuICAgICAgICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICBtZXNzYWdlOiBpc3N1ZURhdGEubWVzc2FnZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9IFwiXCI7XG4gICAgY29uc3QgbWFwcyA9IGVycm9yTWFwc1xuICAgICAgICAuZmlsdGVyKChtKSA9PiAhIW0pXG4gICAgICAgIC5zbGljZSgpXG4gICAgICAgIC5yZXZlcnNlKCk7XG4gICAgZm9yIChjb25zdCBtYXAgb2YgbWFwcykge1xuICAgICAgICBlcnJvck1lc3NhZ2UgPSBtYXAoZnVsbElzc3VlLCB7IGRhdGEsIGRlZmF1bHRFcnJvcjogZXJyb3JNZXNzYWdlIH0pLm1lc3NhZ2U7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmlzc3VlRGF0YSxcbiAgICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBFTVBUWV9QQVRIID0gW107XG5leHBvcnQgZnVuY3Rpb24gYWRkSXNzdWVUb0NvbnRleHQoY3R4LCBpc3N1ZURhdGEpIHtcbiAgICBjb25zdCBvdmVycmlkZU1hcCA9IGdldEVycm9yTWFwKCk7XG4gICAgY29uc3QgaXNzdWUgPSBtYWtlSXNzdWUoe1xuICAgICAgICBpc3N1ZURhdGE6IGlzc3VlRGF0YSxcbiAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICBlcnJvck1hcHM6IFtcbiAgICAgICAgICAgIGN0eC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLCAvLyBjb250ZXh0dWFsIGVycm9yIG1hcCBpcyBmaXJzdCBwcmlvcml0eVxuICAgICAgICAgICAgY3R4LnNjaGVtYUVycm9yTWFwLCAvLyB0aGVuIHNjaGVtYS1ib3VuZCBtYXAgaWYgYXZhaWxhYmxlXG4gICAgICAgICAgICBvdmVycmlkZU1hcCwgLy8gdGhlbiBnbG9iYWwgb3ZlcnJpZGUgbWFwXG4gICAgICAgICAgICBvdmVycmlkZU1hcCA9PT0gZGVmYXVsdEVycm9yTWFwID8gdW5kZWZpbmVkIDogZGVmYXVsdEVycm9yTWFwLCAvLyB0aGVuIGdsb2JhbCBkZWZhdWx0IG1hcFxuICAgICAgICBdLmZpbHRlcigoeCkgPT4gISF4KSxcbiAgICB9KTtcbiAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKGlzc3VlKTtcbn1cbmV4cG9ydCBjbGFzcyBQYXJzZVN0YXR1cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBcInZhbGlkXCI7XG4gICAgfVxuICAgIGRpcnR5KCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gXCJ2YWxpZFwiKVxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFwiZGlydHlcIjtcbiAgICB9XG4gICAgYWJvcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlICE9PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBcImFib3J0ZWRcIjtcbiAgICB9XG4gICAgc3RhdGljIG1lcmdlQXJyYXkoc3RhdHVzLCByZXN1bHRzKSB7XG4gICAgICAgIGNvbnN0IGFycmF5VmFsdWUgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHJlc3VsdHMpIHtcbiAgICAgICAgICAgIGlmIChzLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICBpZiAocy5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIGFycmF5VmFsdWUucHVzaChzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGFycmF5VmFsdWUgfTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIG1lcmdlT2JqZWN0QXN5bmMoc3RhdHVzLCBwYWlycykge1xuICAgICAgICBjb25zdCBzeW5jUGFpcnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBwYWlyLmtleTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcGFpci52YWx1ZTtcbiAgICAgICAgICAgIHN5bmNQYWlycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHN0YXR1cywgc3luY1BhaXJzKTtcbiAgICB9XG4gICAgc3RhdGljIG1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHBhaXJzKSB7XG4gICAgICAgIGNvbnN0IGZpbmFsT2JqZWN0ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSBwYWlyO1xuICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgaWYgKGtleS52YWx1ZSAhPT0gXCJfX3Byb3RvX19cIiAmJiAodHlwZW9mIHZhbHVlLnZhbHVlICE9PSBcInVuZGVmaW5lZFwiIHx8IHBhaXIuYWx3YXlzU2V0KSkge1xuICAgICAgICAgICAgICAgIGZpbmFsT2JqZWN0W2tleS52YWx1ZV0gPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGZpbmFsT2JqZWN0IH07XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IElOVkFMSUQgPSBPYmplY3QuZnJlZXplKHtcbiAgICBzdGF0dXM6IFwiYWJvcnRlZFwiLFxufSk7XG5leHBvcnQgY29uc3QgRElSVFkgPSAodmFsdWUpID0+ICh7IHN0YXR1czogXCJkaXJ0eVwiLCB2YWx1ZSB9KTtcbmV4cG9ydCBjb25zdCBPSyA9ICh2YWx1ZSkgPT4gKHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlIH0pO1xuZXhwb3J0IGNvbnN0IGlzQWJvcnRlZCA9ICh4KSA9PiB4LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCI7XG5leHBvcnQgY29uc3QgaXNEaXJ0eSA9ICh4KSA9PiB4LnN0YXR1cyA9PT0gXCJkaXJ0eVwiO1xuZXhwb3J0IGNvbnN0IGlzVmFsaWQgPSAoeCkgPT4geC5zdGF0dXMgPT09IFwidmFsaWRcIjtcbmV4cG9ydCBjb25zdCBpc0FzeW5jID0gKHgpID0+IHR5cGVvZiBQcm9taXNlICE9PSBcInVuZGVmaW5lZFwiICYmIHggaW5zdGFuY2VvZiBQcm9taXNlO1xuIl0sIm5hbWVzIjpbImdldEVycm9yTWFwIiwiZGVmYXVsdEVycm9yTWFwIiwibWFrZUlzc3VlIiwicGFyYW1zIiwiZGF0YSIsInBhdGgiLCJlcnJvck1hcHMiLCJpc3N1ZURhdGEiLCJmdWxsUGF0aCIsImZ1bGxJc3N1ZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJlcnJvck1lc3NhZ2UiLCJtYXBzIiwiZmlsdGVyIiwibSIsInNsaWNlIiwicmV2ZXJzZSIsIm1hcCIsImRlZmF1bHRFcnJvciIsIkVNUFRZX1BBVEgiLCJhZGRJc3N1ZVRvQ29udGV4dCIsImN0eCIsIm92ZXJyaWRlTWFwIiwiaXNzdWUiLCJjb21tb24iLCJjb250ZXh0dWFsRXJyb3JNYXAiLCJzY2hlbWFFcnJvck1hcCIsIngiLCJpc3N1ZXMiLCJwdXNoIiwiUGFyc2VTdGF0dXMiLCJ2YWx1ZSIsImRpcnR5IiwiYWJvcnQiLCJtZXJnZUFycmF5Iiwic3RhdHVzIiwicmVzdWx0cyIsImFycmF5VmFsdWUiLCJzIiwiSU5WQUxJRCIsIm1lcmdlT2JqZWN0QXN5bmMiLCJwYWlycyIsInN5bmNQYWlycyIsInBhaXIiLCJrZXkiLCJtZXJnZU9iamVjdFN5bmMiLCJmaW5hbE9iamVjdCIsImFsd2F5c1NldCIsIk9iamVjdCIsImZyZWV6ZSIsIkRJUlRZIiwiT0siLCJpc0Fib3J0ZWQiLCJpc0RpcnR5IiwiaXNWYWxpZCIsImlzQXN5bmMiLCJQcm9taXNlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodParsedType: () => (/* binding */ ZodParsedType),\n/* harmony export */ getParsedType: () => (/* binding */ getParsedType),\n/* harmony export */ objectUtil: () => (/* binding */ objectUtil),\n/* harmony export */ util: () => (/* binding */ util)\n/* harmony export */ });\nvar util;\n(function(util) {\n util.assertEqual = (_)=>{};\n function assertIs(_arg) {}\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items)=>{\n const obj = {};\n for (const item of items){\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj)=>{\n const validKeys = util.objectKeys(obj).filter((k)=>typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys){\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj)=>{\n return util.objectKeys(obj).map(function(e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj)=>Object.keys(obj) // eslint-disable-line ban/ban\n : (object)=>{\n const keys = [];\n for(const key in object){\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker)=>{\n for (const item of arr){\n if (checker(item)) return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\" ? (val)=>Number.isInteger(val) // eslint-disable-line ban/ban\n : (val)=>typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val)=>typeof val === \"string\" ? `'${val}'` : val).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value)=>{\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function(objectUtil) {\n objectUtil.mergeShapes = (first, second)=>{\n return {\n ...first,\n ...second\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\"\n]);\nconst getParsedType = (data)=>{\n const t = typeof data;\n switch(t){\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9oZWxwZXJzL3V0aWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFPLElBQUlBLEtBQUs7QUFDZixVQUFVQSxJQUFJO0lBQ1hBLEtBQUtDLFdBQVcsR0FBRyxDQUFDQyxLQUFRO0lBQzVCLFNBQVNDLFNBQVNDLElBQUksR0FBSTtJQUMxQkosS0FBS0csUUFBUSxHQUFHQTtJQUNoQixTQUFTRSxZQUFZQyxFQUFFO1FBQ25CLE1BQU0sSUFBSUM7SUFDZDtJQUNBUCxLQUFLSyxXQUFXLEdBQUdBO0lBQ25CTCxLQUFLUSxXQUFXLEdBQUcsQ0FBQ0M7UUFDaEIsTUFBTUMsTUFBTSxDQUFDO1FBQ2IsS0FBSyxNQUFNQyxRQUFRRixNQUFPO1lBQ3RCQyxHQUFHLENBQUNDLEtBQUssR0FBR0E7UUFDaEI7UUFDQSxPQUFPRDtJQUNYO0lBQ0FWLEtBQUtZLGtCQUFrQixHQUFHLENBQUNGO1FBQ3ZCLE1BQU1HLFlBQVliLEtBQUtjLFVBQVUsQ0FBQ0osS0FBS0ssTUFBTSxDQUFDLENBQUNDLElBQU0sT0FBT04sR0FBRyxDQUFDQSxHQUFHLENBQUNNLEVBQUUsQ0FBQyxLQUFLO1FBQzVFLE1BQU1DLFdBQVcsQ0FBQztRQUNsQixLQUFLLE1BQU1ELEtBQUtILFVBQVc7WUFDdkJJLFFBQVEsQ0FBQ0QsRUFBRSxHQUFHTixHQUFHLENBQUNNLEVBQUU7UUFDeEI7UUFDQSxPQUFPaEIsS0FBS2tCLFlBQVksQ0FBQ0Q7SUFDN0I7SUFDQWpCLEtBQUtrQixZQUFZLEdBQUcsQ0FBQ1I7UUFDakIsT0FBT1YsS0FBS2MsVUFBVSxDQUFDSixLQUFLUyxHQUFHLENBQUMsU0FBVUMsQ0FBQztZQUN2QyxPQUFPVixHQUFHLENBQUNVLEVBQUU7UUFDakI7SUFDSjtJQUNBcEIsS0FBS2MsVUFBVSxHQUFHLE9BQU9PLE9BQU9DLElBQUksS0FBSyxXQUFXLDhCQUE4QjtPQUM1RSxDQUFDWixNQUFR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T2tELFFBQVEsZUFBZWpCLGdCQUFnQmlCLEtBQUs7Z0JBQ25ELE9BQU9uQixjQUFjb0IsR0FBRztZQUM1QjtZQUNBLElBQUksT0FBT0MsU0FBUyxlQUFlbkIsZ0JBQWdCbUIsTUFBTTtnQkFDckQsT0FBT3JCLGNBQWNzQixJQUFJO1lBQzdCO1lBQ0EsT0FBT3RCLGNBQWMzQixNQUFNO1FBQy9CO1lBQ0ksT0FBTzJCLGNBQWN1QixPQUFPO0lBQ3BDO0FBQ0osRUFBRSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3YzL2hlbHBlcnMvdXRpbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIHV0aWw7XG4oZnVuY3Rpb24gKHV0aWwpIHtcbiAgICB1dGlsLmFzc2VydEVxdWFsID0gKF8pID0+IHsgfTtcbiAgICBmdW5jdGlvbiBhc3NlcnRJcyhfYXJnKSB7IH1cbiAgICB1dGlsLmFzc2VydElzID0gYXNzZXJ0SXM7XG4gICAgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoX3gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuICAgIHV0aWwuYXNzZXJ0TmV2ZXIgPSBhc3NlcnROZXZlcjtcbiAgICB1dGlsLmFycmF5VG9FbnVtID0gKGl0ZW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIG9ialtpdGVtXSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9O1xuICAgIHV0aWwuZ2V0VmFsaWRFbnVtVmFsdWVzID0gKG9iaikgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZEtleXMgPSB1dGlsLm9iamVjdEtleXMob2JqKS5maWx0ZXIoKGspID0+IHR5cGVvZiBvYmpbb2JqW2tdXSAhPT0gXCJudW1iZXJcIik7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0ge307XG4gICAgICAgIGZvciAoY29uc3QgayBvZiB2YWxpZEtleXMpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkW2tdID0gb2JqW2tdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1dGlsLm9iamVjdFZhbHVlcyhmaWx0ZXJlZCk7XG4gICAgfTtcbiAgICB1dGlsLm9iamVjdFZhbHVlcyA9IChvYmopID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWwub2JqZWN0S2V5cyhvYmopLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9ialtlXTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICB1dGlsLm9iamVjdEtleXMgPSB0eXBlb2YgT2JqZWN0LmtleXMgPT09IFwiZnVuY3Rpb25cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGJhbi9iYW5cbiAgICAgICAgPyAob2JqKSA9PiBPYmplY3Qua2V5cyhvYmopIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYmFuL2JhblxuICAgICAgICA6IChvYmplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iamVjdCkge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9O1xuICAgIHV0aWwuZmluZCA9IChhcnIsIGNoZWNrZXIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycikge1xuICAgICAgICAgICAgaWYgKGNoZWNrZXIoaXRlbSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIHV0aWwuaXNJbnRlZ2VyID0gdHlwZW9mIE51bWJlci5pc0ludGVnZXIgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICA/ICh2YWwpID0+IE51bWJlci5pc0ludGVnZXIodmFsKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGJhbi9iYW5cbiAgICAgICAgOiAodmFsKSA9PiB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZSh2YWwpICYmIE1hdGguZmxvb3IodmFsKSA9PT0gdmFsO1xuICAgIGZ1bmN0aW9uIGpvaW5WYWx1ZXMoYXJyYXksIHNlcGFyYXRvciA9IFwiIHwgXCIpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5Lm1hcCgodmFsKSA9PiAodHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIiA/IGAnJHt2YWx9J2AgOiB2YWwpKS5qb2luKHNlcGFyYXRvcik7XG4gICAgfVxuICAgIHV0aWwuam9pblZhbHVlcyA9IGpvaW5WYWx1ZXM7XG4gICAgdXRpbC5qc29uU3RyaW5naWZ5UmVwbGFjZXIgPSAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG59KSh1dGlsIHx8ICh1dGlsID0ge30pKTtcbmV4cG9ydCB2YXIgb2JqZWN0VXRpbDtcbihmdW5jdGlvbiAob2JqZWN0VXRpbCkge1xuICAgIG9iamVjdFV0aWwubWVyZ2VTaGFwZXMgPSAoZmlyc3QsIHNlY29uZCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZmlyc3QsXG4gICAgICAgICAgICAuLi5zZWNvbmQsIC8vIHNlY29uZCBvdmVyd3JpdGVzIGZpcnN0XG4gICAgICAgIH07XG4gICAgfTtcbn0pKG9iamVjdFV0aWwgfHwgKG9iamVjdFV0aWwgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IFpvZFBhcnNlZFR5cGUgPSB1dGlsLmFycmF5VG9FbnVtKFtcbiAgICBcInN0cmluZ1wiLFxuICAgIFwibmFuXCIsXG4gICAgXCJudW1iZXJcIixcbiAgICBcImludGVnZXJcIixcbiAgICBcImZsb2F0XCIsXG4gICAgXCJib29sZWFuXCIsXG4gICAgXCJkYXRlXCIsXG4gICAgXCJiaWdpbnRcIixcbiAgICBcInN5bWJvbFwiLFxuICAgIFwiZnVuY3Rpb25cIixcbiAgICBcInVuZGVmaW5lZFwiLFxuICAgIFwibnVsbFwiLFxuICAgIFwiYXJyYXlcIixcbiAgICBcIm9iamVjdFwiLFxuICAgIFwidW5rbm93blwiLFxuICAgIFwicHJvbWlzZVwiLFxuICAgIFwidm9pZFwiLFxuICAgIFwibmV2ZXJcIixcbiAgICBcIm1hcFwiLFxuICAgIFwic2V0XCIsXG5dKTtcbmV4cG9ydCBjb25zdCBnZXRQYXJzZWRUeXBlID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCB0ID0gdHlwZW9mIGRhdGE7XG4gICAgc3dpdGNoICh0KSB7XG4gICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnVuZGVmaW5lZDtcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc3RyaW5nO1xuICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGEpID8gWm9kUGFyc2VkVHlwZS5uYW4gOiBab2RQYXJzZWRUeXBlLm51bWJlcjtcbiAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmJvb2xlYW47XG4gICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuZnVuY3Rpb247XG4gICAgICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmJpZ2ludDtcbiAgICAgICAgY2FzZSBcInN5bWJvbFwiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc3ltYm9sO1xuICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmFycmF5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5udWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEudGhlbiAmJiB0eXBlb2YgZGF0YS50aGVuID09PSBcImZ1bmN0aW9uXCIgJiYgZGF0YS5jYXRjaCAmJiB0eXBlb2YgZGF0YS5jYXRjaCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUucHJvbWlzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgTWFwICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5tYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIFNldCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBEYXRlICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLm9iamVjdDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnVua25vd247XG4gICAgfVxufTtcbiJdLCJuYW1lcyI6WyJ1dGlsIiwiYXNzZXJ0RXF1YWwiLCJfIiwiYXNzZXJ0SXMiLCJfYXJnIiwiYXNzZXJ0TmV2ZXIiLCJfeCIsIkVycm9yIiwiYXJyYXlUb0VudW0iLCJpdGVtcyIsIm9iaiIsIml0ZW0iLCJnZXRWYWxpZEVudW1WYWx1ZXMiLCJ2YWxpZEtleXMiLCJvYmplY3RLZXlzIiwiZmlsdGVyIiwiayIsImZpbHRlcmVkIiwib2JqZWN0VmFsdWVzIiwibWFwIiwiZSIsIk9iamVjdCIsImtleXMiLCJvYmplY3QiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwdXNoIiwiZmluZCIsImFyciIsImNoZWNrZXIiLCJ1bmRlZmluZWQiLCJpc0ludGVnZXIiLCJOdW1iZXIiLCJ2YWwiLCJpc0Zpbml0ZSIsIk1hdGgiLCJmbG9vciIsImpvaW5WYWx1ZXMiLCJhcnJheSIsInNlcGFyYXRvciIsImpvaW4iLCJqc29uU3RyaW5naWZ5UmVwbGFjZXIiLCJ2YWx1ZSIsInRvU3RyaW5nIiwib2JqZWN0VXRpbCIsIm1lcmdlU2hhcGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJab2RQYXJzZWRUeXBlIiwiZ2V0UGFyc2VkVHlwZSIsImRhdGEiLCJ0Iiwic3RyaW5nIiwiaXNOYU4iLCJuYW4iLCJudW1iZXIiLCJib29sZWFuIiwiZnVuY3Rpb24iLCJiaWdpbnQiLCJzeW1ib2wiLCJBcnJheSIsImlzQXJyYXkiLCJudWxsIiwidGhlbiIsImNhdGNoIiwicHJvbWlzZSIsIk1hcCIsIlNldCIsInNldCIsIkRhdGUiLCJkYXRlIiwidW5rbm93biJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ZodError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ZodError.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js\");\n/* harmony import */ var _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/util.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js\");\n\n\nconst errorMap = (issue, _ctx)=>{\n let message;\n switch(issue.code){\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_type:\n if (issue.received === _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.ZodParsedType.undefined) {\n message = \"Required\";\n } else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.jsonStringifyReplacer)}`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${_helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.joinValues(issue.keys, \", \")}`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${_helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.joinValues(issue.options)}`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${_helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n } else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n } else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.assertNever(issue.validation);\n }\n } else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n } else {\n message = \"Invalid\";\n }\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.too_small:\n if (issue.type === \"array\") message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\") message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\") message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\") message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\") message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else message = \"Invalid input\";\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.too_big:\n if (issue.type === \"array\") message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\") message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\") message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\") message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\") message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else message = \"Invalid input\";\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.assertNever(issue);\n }\n return {\n message\n };\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (errorMap);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9sb2NhbGVzL2VuLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE4QztBQUNXO0FBQ3pELE1BQU1HLFdBQVcsQ0FBQ0MsT0FBT0M7SUFDckIsSUFBSUM7SUFDSixPQUFRRixNQUFNRyxJQUFJO1FBQ2QsS0FBS1Asc0RBQVlBLENBQUNRLFlBQVk7WUFDMUIsSUFBSUosTUFBTUssUUFBUSxLQUFLUCwyREFBYUEsQ0FBQ1EsU0FBUyxFQUFFO2dCQUM1Q0osVUFBVTtZQUNkLE9BQ0s7Z0JBQ0RBLFVBQVUsQ0FBQyxTQUFTLEVBQUVGLE1BQU1PLFFBQVEsQ0FBQyxXQUFXLEVBQUVQLE1BQU1LLFFBQVEsRUFBRTtZQUN0RTtZQUNBO1FBQ0osS0FBS1Qsc0RBQVlBLENBQUNZLGVBQWU7WUFDN0JOLFVBQVUsQ0FBQyxnQ0FBZ0MsRUFBRU8sS0FBS0MsU0FBUyxDQUFDVixNQUFNTyxRQUFRLEVBQUVWLGtEQUFJQSxDQUFDYyxxQkFBcUIsR0FBRztZQUN6RztRQUNKLEtBQUtmLHNEQUFZQSxDQUFDZ0IsaUJBQWlCO1lBQy9CVixVQUFVLENBQUMsK0JBQStCLEVBQUVMLGtEQUFJQSxDQUFDZ0IsVUFBVSxDQUFDYixNQUFNYyxJQUFJLEVBQUUsT0FBTztZQUMvRTtRQUNKLEtBQUtsQixzREFBWUEsQ0FBQ21CLGFBQWE7WUFDM0JiLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDekI7UUFDSixLQUFLTixzREFBWUEsQ0FBQ29CLDJCQUEyQjtZQUN6Q2QsVUFBVSxDQUFDLHNDQUFzQyxFQUFFTCxrREFBSUEsQ0FBQ2dCLFVBQVUsQ0FBQ2IsTUFBTWlCLE9BQU8sR0FBRztZQUNuRjtRQUNKLEtBQUtyQixzREFBWUEsQ0FBQ3NCLGtCQUFrQjtZQUNoQ2hCLFVBQVUsQ0FBQyw2QkFBNkIsRUFBRUwsa0RBQUlBLENBQUNnQixVQUFVLENBQUNiLE1BQU1pQixPQUFPLEVBQUUsWUFBWSxFQUFF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RUFBRTtpQkFDL0gsSUFBSXJDLE1BQU04QixJQUFJLEtBQUssUUFDcEI1QixVQUFVLENBQUMsYUFBYSxFQUFFRixNQUFNK0IsS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcvQixNQUFNZ0MsU0FBUyxHQUFHLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJRSxLQUFLQyxPQUFPbkMsTUFBTXFDLE9BQU8sSUFBSTtpQkFFdEpuQyxVQUFVO1lBQ2Q7UUFDSixLQUFLTixzREFBWUEsQ0FBQzBDLE1BQU07WUFDcEJwQyxVQUFVLENBQUMsYUFBYSxDQUFDO1lBQ3pCO1FBQ0osS0FBS04sc0RBQVlBLENBQUMyQywwQkFBMEI7WUFDeENyQyxVQUFVLENBQUMsd0NBQXdDLENBQUM7WUFDcEQ7UUFDSixLQUFLTixzREFBWUEsQ0FBQzRDLGVBQWU7WUFDN0J0QyxVQUFVLENBQUMsNkJBQTZCLEVBQUVGLE1BQU15QyxVQUFVLEVBQUU7WUFDNUQ7UUFDSixLQUFLN0Msc0RBQVlBLENBQUM4QyxVQUFVO1lBQ3hCeEMsVUFBVTtZQUNWO1FBQ0o7WUFDSUEsVUFBVUQsS0FBSzBDLFlBQVk7WUFDM0I5QyxrREFBSUEsQ0FBQytCLFdBQVcsQ0FBQzVCO0lBQ3pCO0lBQ0EsT0FBTztRQUFFRTtJQUFRO0FBQ3JCO0FBQ0EsaUVBQWVILFFBQVFBLEVBQUMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9sb2NhbGVzL2VuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFpvZElzc3VlQ29kZSB9IGZyb20gXCIuLi9ab2RFcnJvci5qc1wiO1xuaW1wb3J0IHsgdXRpbCwgWm9kUGFyc2VkVHlwZSB9IGZyb20gXCIuLi9oZWxwZXJzL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yTWFwID0gKGlzc3VlLCBfY3R4KSA9PiB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZTpcbiAgICAgICAgICAgIGlmIChpc3N1ZS5yZWNlaXZlZCA9PT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJSZXF1aXJlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBFeHBlY3RlZCAke2lzc3VlLmV4cGVjdGVkfSwgcmVjZWl2ZWQgJHtpc3N1ZS5yZWNlaXZlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfbGl0ZXJhbDpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBsaXRlcmFsIHZhbHVlLCBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KGlzc3VlLmV4cGVjdGVkLCB1dGlsLmpzb25TdHJpbmdpZnlSZXBsYWNlcil9YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS51bnJlY29nbml6ZWRfa2V5czpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgVW5yZWNvZ25pemVkIGtleShzKSBpbiBvYmplY3Q6ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUub3B0aW9ucyl9YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWU6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZW51bSB2YWx1ZS4gRXhwZWN0ZWQgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUub3B0aW9ucyl9LCByZWNlaXZlZCAnJHtpc3N1ZS5yZWNlaXZlZH0nYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2FyZ3VtZW50czpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBmdW5jdGlvbiBhcmd1bWVudHNgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfcmV0dXJuX3R5cGU6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZnVuY3Rpb24gcmV0dXJuIHR5cGVgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfZGF0ZTpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBkYXRlYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZzpcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXNzdWUudmFsaWRhdGlvbiA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgIGlmIChcImluY2x1ZGVzXCIgaW4gaXNzdWUudmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgaW5wdXQ6IG11c3QgaW5jbHVkZSBcIiR7aXNzdWUudmFsaWRhdGlvbi5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXNzdWUudmFsaWRhdGlvbi5wb3NpdGlvbiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGAke21lc3NhZ2V9IGF0IG9uZSBvciBtb3JlIHBvc2l0aW9ucyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtpc3N1ZS52YWxpZGF0aW9uLnBvc2l0aW9ufWA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoXCJzdGFydHNXaXRoXCIgaW4gaXNzdWUudmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgaW5wdXQ6IG11c3Qgc3RhcnQgd2l0aCBcIiR7aXNzdWUudmFsaWRhdGlvbi5zdGFydHNXaXRofVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoXCJlbmRzV2l0aFwiIGluIGlzc3VlLnZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0OiBtdXN0IGVuZCB3aXRoIFwiJHtpc3N1ZS52YWxpZGF0aW9uLmVuZHNXaXRofVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoaXNzdWUudmFsaWRhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudmFsaWRhdGlvbiAhPT0gXCJyZWdleFwiKSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkICR7aXNzdWUudmFsaWRhdGlvbn1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiSW52YWxpZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLnRvb19zbWFsbDpcbiAgICAgICAgICAgIGlmIChpc3N1ZS50eXBlID09PSBcImFycmF5XCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBBcnJheSBtdXN0IGNvbnRhaW4gJHtpc3N1ZS5leGFjdCA/IFwiZXhhY3RseVwiIDogaXNzdWUuaW5jbHVzaXZlID8gYGF0IGxlYXN0YCA6IGBtb3JlIHRoYW5gfSAke2lzc3VlLm1pbmltdW19IGVsZW1lbnQocylgO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYFN0cmluZyBtdXN0IGNvbnRhaW4gJHtpc3N1ZS5leGFjdCA/IFwiZXhhY3RseVwiIDogaXNzdWUuaW5jbHVzaXZlID8gYGF0IGxlYXN0YCA6IGBvdmVyYH0gJHtpc3N1ZS5taW5pbXVtfSBjaGFyYWN0ZXIocylgO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYE51bWJlciBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseSBlcXVhbCB0byBgIDogaXNzdWUuaW5jbHVzaXZlID8gYGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgIDogYGdyZWF0ZXIgdGhhbiBgfSR7aXNzdWUubWluaW11bX1gO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJiaWdpbnRcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYE51bWJlciBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseSBlcXVhbCB0byBgIDogaXNzdWUuaW5jbHVzaXZlID8gYGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgIDogYGdyZWF0ZXIgdGhhbiBgfSR7aXNzdWUubWluaW11bX1gO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJkYXRlXCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBEYXRlIG11c3QgYmUgJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5IGVxdWFsIHRvIGAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGAgOiBgZ3JlYXRlciB0aGFuIGB9JHtuZXcgRGF0ZShOdW1iZXIoaXNzdWUubWluaW11bSkpfWA7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiSW52YWxpZCBpbnB1dFwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLnRvb19iaWc6XG4gICAgICAgICAgICBpZiAoaXNzdWUudHlwZSA9PT0gXCJhcnJheVwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgQXJyYXkgbXVzdCBjb250YWluICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseWAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbW9zdGAgOiBgbGVzcyB0aGFuYH0gJHtpc3N1ZS5tYXhpbXVtfSBlbGVtZW50KHMpYDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBTdHJpbmcgbXVzdCBjb250YWluICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseWAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbW9zdGAgOiBgdW5kZXJgfSAke2lzc3VlLm1heGltdW19IGNoYXJhY3RlcihzKWA7XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgTnVtYmVyIG11c3QgYmUgJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5YCA6IGlzc3VlLmluY2x1c2l2ZSA/IGBsZXNzIHRoYW4gb3IgZXF1YWwgdG9gIDogYGxlc3MgdGhhbmB9ICR7aXNzdWUubWF4aW11bX1gO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJiaWdpbnRcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEJpZ0ludCBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseWAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgbGVzcyB0aGFuIG9yIGVxdWFsIHRvYCA6IGBsZXNzIHRoYW5gfSAke2lzc3VlLm1heGltdW19YDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwiZGF0ZVwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgRGF0ZSBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseWAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgc21hbGxlciB0aGFuIG9yIGVxdWFsIHRvYCA6IGBzbWFsbGVyIHRoYW5gfSAke25ldyBEYXRlKE51bWJlcihpc3N1ZS5tYXhpbXVtKSl9YDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJJbnZhbGlkIGlucHV0XCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuY3VzdG9tOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlczpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW50ZXJzZWN0aW9uIHJlc3VsdHMgY291bGQgbm90IGJlIG1lcmdlZGA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUubm90X211bHRpcGxlX29mOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBOdW1iZXIgbXVzdCBiZSBhIG11bHRpcGxlIG9mICR7aXNzdWUubXVsdGlwbGVPZn1gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLm5vdF9maW5pdGU6XG4gICAgICAgICAgICBtZXNzYWdlID0gXCJOdW1iZXIgbXVzdCBiZSBmaW5pdGVcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgbWVzc2FnZSA9IF9jdHguZGVmYXVsdEVycm9yO1xuICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihpc3N1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IG1lc3NhZ2UgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBlcnJvck1hcDtcbiJdLCJuYW1lcyI6WyJab2RJc3N1ZUNvZGUiLCJ1dGlsIiwiWm9kUGFyc2VkVHlwZSIsImVycm9yTWFwIiwiaXNzdWUiLCJfY3R4IiwibWVzc2FnZSIsImNvZGUiLCJpbnZhbGlkX3R5cGUiLCJyZWNlaXZlZCIsInVuZGVmaW5lZCIsImV4cGVjdGVkIiwiaW52YWxpZF9saXRlcmFsIiwiSlNPTiIsInN0cmluZ2lmeSIsImpzb25TdHJpbmdpZnlSZXBsYWNlciIsInVucmVjb2duaXplZF9rZXlzIiwiam9pblZhbHVlcyIsImtleXMiLCJpbnZhbGlkX3VuaW9uIiwiaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yIiwib3B0aW9ucyIsImludmFsaWRfZW51bV92YWx1ZSIsImludmFsaWRfYXJndW1lbnRzIiwiaW52YWxpZF9yZXR1cm5fdHlwZSIsImludmFsaWRfZGF0ZSIsImludmFsaWRfc3RyaW5nIiwidmFsaWRhdGlvbiIsImluY2x1ZGVzIiwicG9zaXRpb24iLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJhc3NlcnROZXZlciIsInRvb19zbWFsbCIsInR5cGUiLCJleGFjdCIsImluY2x1c2l2ZSIsIm1pbmltdW0iLCJEYXRlIiwiTnVtYmVyIiwidG9vX2JpZyIsIm1heGltdW0iLCJjdXN0b20iLCJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlcyIsIm5vdF9tdWx0aXBsZV9vZiIsIm11bHRpcGxlT2YiLCJub3RfZmluaXRlIiwiZGVmYXVsdEVycm9yIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BRAND: () => (/* binding */ BRAND),\n/* harmony export */ NEVER: () => (/* binding */ NEVER),\n/* harmony export */ Schema: () => (/* binding */ ZodType),\n/* harmony export */ ZodAny: () => (/* binding */ ZodAny),\n/* harmony export */ ZodArray: () => (/* binding */ ZodArray),\n/* harmony export */ ZodBigInt: () => (/* binding */ ZodBigInt),\n/* harmony export */ ZodBoolean: () => (/* binding */ ZodBoolean),\n/* harmony export */ ZodBranded: () => (/* binding */ ZodBranded),\n/* harmony export */ ZodCatch: () => (/* binding */ ZodCatch),\n/* harmony export */ ZodDate: () => (/* binding */ ZodDate),\n/* harmony export */ ZodDefault: () => (/* binding */ ZodDefault),\n/* harmony export */ ZodDiscriminatedUnion: () => (/* binding */ ZodDiscriminatedUnion),\n/* harmony export */ ZodEffects: () => (/* binding */ ZodEffects),\n/* harmony export */ ZodEnum: () => (/* binding */ ZodEnum),\n/* harmony export */ ZodFirstPartyTypeKind: () => (/* binding */ ZodFirstPartyTypeKind),\n/* harmony export */ ZodFunction: () => (/* binding */ ZodFunction),\n/* harmony export */ ZodIntersection: () => (/* binding */ ZodIntersection),\n/* harmony export */ ZodLazy: () => (/* binding */ ZodLazy),\n/* harmony export */ ZodLiteral: () => (/* binding */ ZodLiteral),\n/* harmony export */ ZodMap: () => (/* binding */ ZodMap),\n/* harmony export */ ZodNaN: () => (/* binding */ ZodNaN),\n/* harmony export */ ZodNativeEnum: () => (/* binding */ ZodNativeEnum),\n/* harmony export */ ZodNever: () => (/* binding */ ZodNever),\n/* harmony export */ ZodNull: () => (/* binding */ ZodNull),\n/* harmony export */ ZodNullable: () => (/* binding */ ZodNullable),\n/* harmony export */ ZodNumber: () => (/* binding */ ZodNumber),\n/* harmony export */ ZodObject: () => (/* binding */ ZodObject),\n/* harmony export */ ZodOptional: () => (/* binding */ ZodOptional),\n/* harmony export */ ZodPipeline: () => (/* binding */ ZodPipeline),\n/* harmony export */ ZodPromise: () => (/* binding */ ZodPromise),\n/* harmony export */ ZodReadonly: () => (/* binding */ ZodReadonly),\n/* harmony export */ ZodRecord: () => (/* binding */ ZodRecord),\n/* harmony export */ ZodSchema: () => (/* binding */ ZodType),\n/* harmony export */ ZodSet: () => (/* binding */ ZodSet),\n/* harmony export */ ZodString: () => (/* binding */ ZodString),\n/* harmony export */ ZodSymbol: () => (/* binding */ ZodSymbol),\n/* harmony export */ ZodTransformer: () => (/* binding */ ZodEffects),\n/* harmony export */ ZodTuple: () => (/* binding */ ZodTuple),\n/* harmony export */ ZodType: () => (/* binding */ ZodType),\n/* harmony export */ ZodUndefined: () => (/* binding */ ZodUndefined),\n/* harmony export */ ZodUnion: () => (/* binding */ ZodUnion),\n/* harmony export */ ZodUnknown: () => (/* binding */ ZodUnknown),\n/* harmony export */ ZodVoid: () => (/* binding */ ZodVoid),\n/* harmony export */ any: () => (/* binding */ anyType),\n/* harmony export */ array: () => (/* binding */ arrayType),\n/* harmony export */ bigint: () => (/* binding */ bigIntType),\n/* harmony export */ boolean: () => (/* binding */ booleanType),\n/* harmony export */ coerce: () => (/* binding */ coerce),\n/* harmony export */ custom: () => (/* binding */ custom),\n/* harmony export */ date: () => (/* binding */ dateType),\n/* harmony export */ datetimeRegex: () => (/* binding */ datetimeRegex),\n/* harmony export */ discriminatedUnion: () => (/* binding */ discriminatedUnionType),\n/* harmony export */ effect: () => (/* binding */ effectsType),\n/* harmony export */ \"enum\": () => (/* binding */ enumType),\n/* harmony export */ \"function\": () => (/* binding */ functionType),\n/* harmony export */ \"instanceof\": () => (/* binding */ instanceOfType),\n/* harmony export */ intersection: () => (/* binding */ intersectionType),\n/* harmony export */ late: () => (/* binding */ late),\n/* harmony export */ lazy: () => (/* binding */ lazyType),\n/* harmony export */ literal: () => (/* binding */ literalType),\n/* harmony export */ map: () => (/* binding */ mapType),\n/* harmony export */ nan: () => (/* binding */ nanType),\n/* harmony export */ nativeEnum: () => (/* binding */ nativeEnumType),\n/* harmony export */ never: () => (/* binding */ neverType),\n/* harmony export */ \"null\": () => (/* binding */ nullType),\n/* harmony export */ nullable: () => (/* binding */ nullableType),\n/* harmony export */ number: () => (/* binding */ numberType),\n/* harmony export */ object: () => (/* binding */ objectType),\n/* harmony export */ oboolean: () => (/* binding */ oboolean),\n/* harmony export */ onumber: () => (/* binding */ onumber),\n/* harmony export */ optional: () => (/* binding */ optionalType),\n/* harmony export */ ostring: () => (/* binding */ ostring),\n/* harmony export */ pipeline: () => (/* binding */ pipelineType),\n/* harmony export */ preprocess: () => (/* binding */ preprocessType),\n/* harmony export */ promise: () => (/* binding */ promiseType),\n/* harmony export */ record: () => (/* binding */ recordType),\n/* harmony export */ set: () => (/* binding */ setType),\n/* harmony export */ strictObject: () => (/* binding */ strictObjectType),\n/* harmony export */ string: () => (/* binding */ stringType),\n/* harmony export */ symbol: () => (/* binding */ symbolType),\n/* harmony export */ transformer: () => (/* binding */ effectsType),\n/* harmony export */ tuple: () => (/* binding */ tupleType),\n/* harmony export */ undefined: () => (/* binding */ undefinedType),\n/* harmony export */ union: () => (/* binding */ unionType),\n/* harmony export */ unknown: () => (/* binding */ unknownType),\n/* harmony export */ \"void\": () => (/* binding */ voidType)\n/* harmony export */ });\n/* harmony import */ var _ZodError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ZodError.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./errors.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./errors.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js\");\n/* harmony import */ var _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers/errorUtil.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js\");\n/* harmony import */ var _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/parseUtil.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js\");\n/* harmony import */ var _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers/util.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js\");\n\n\n\n\n\nclass ParseInputLazyPath {\n constructor(parent, value, path, key){\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n } else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result)=>{\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(result)) {\n return {\n success: true,\n data: result.value\n };\n } else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error () {\n if (this._error) return this._error;\n const error = new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n }\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params) return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap) return {\n errorMap: errorMap,\n description\n };\n const customMap = (iss, ctx)=>{\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return {\n message: message ?? ctx.defaultError\n };\n }\n if (typeof ctx.data === \"undefined\") {\n return {\n message: message ?? required_error ?? ctx.defaultError\n };\n }\n if (iss.code !== \"invalid_type\") return {\n message: ctx.defaultError\n };\n return {\n message: message ?? invalid_type_error ?? ctx.defaultError\n };\n };\n return {\n errorMap: customMap,\n description\n };\n}\nclass ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n };\n }\n _processInputParams(input) {\n return {\n status: new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n }\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAsync)(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success) return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(data)\n };\n const result = this._parseSync({\n data,\n path: ctx.path,\n parent: ctx\n });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(data)\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({\n data,\n path: [],\n parent: ctx\n });\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(result) ? {\n value: result.value\n } : {\n issues: ctx.common.issues\n };\n } catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true\n };\n }\n }\n return this._parseAsync({\n data,\n path: [],\n parent: ctx\n }).then((result)=>(0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(result) ? {\n value: result.value\n } : {\n issues: ctx.common.issues\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success) return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(data)\n };\n const maybeAsyncResult = this._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n const result = await ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAsync)(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val)=>{\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return {\n message\n };\n } else if (typeof message === \"function\") {\n return message(val);\n } else {\n return message;\n }\n };\n return this._refinement((val, ctx)=>{\n const result = check(val);\n const setError = ()=>ctx.addIssue({\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.custom,\n ...getIssueProperties(val)\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data)=>{\n if (!data) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx)=>{\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n } else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: {\n type: \"refinement\",\n refinement\n }\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def){\n /** Alias of safeParseAsync */ this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data)=>this[\"~validate\"](data)\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([\n this,\n option\n ], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: {\n type: \"transform\",\n transform\n }\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : ()=>def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def)\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : ()=>def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n } else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset) opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt)) return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header) return false;\n // Convert base64url to base64\n const base64 = header.replace(/-/g, \"+\").replace(/_/g, \"/\").padEnd(header.length + (4 - header.length % 4) % 4, \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null) return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\") return false;\n if (!decoded.alg) return false;\n if (alg && decoded.alg !== alg) return false;\n return true;\n } catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.string,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const status = new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks){\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message\n });\n } else if (tooSmall) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message\n });\n }\n status.dirty();\n }\n } else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"email\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"emoji\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"uuid\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"nanoid\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"cuid\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"cuid2\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"ulid\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n } catch {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"url\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"regex\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n } else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: {\n includes: check.value,\n position: check.position\n },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n } else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n } else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: {\n startsWith: check.value\n },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: {\n endsWith: check.value\n },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"duration\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"ip\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"jwt\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"cidr\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"base64\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"base64url\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: input.data\n };\n }\n _regex(regex, validation, message) {\n return this.refinement((data)=>regex.test(data), {\n validation,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n email(message) {\n return this._addCheck({\n kind: \"email\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n url(message) {\n return this._addCheck({\n kind: \"url\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n emoji(message) {\n return this._addCheck({\n kind: \"emoji\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n uuid(message) {\n return this._addCheck({\n kind: \"uuid\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n nanoid(message) {\n return this._addCheck({\n kind: \"nanoid\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n cuid(message) {\n return this._addCheck({\n kind: \"cuid\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n cuid2(message) {\n return this._addCheck({\n kind: \"cuid2\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n ulid(message) {\n return this._addCheck({\n kind: \"ulid\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n base64(message) {\n return this._addCheck({\n kind: \"base64\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n jwt(options) {\n return this._addCheck({\n kind: \"jwt\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options)\n });\n }\n ip(options) {\n return this._addCheck({\n kind: \"ip\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options)\n });\n }\n cidr(options) {\n return this._addCheck({\n kind: \"cidr\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options)\n });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options?.message)\n });\n }\n date(message) {\n return this._addCheck({\n kind: \"date\",\n message\n });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options?.message)\n });\n }\n duration(message) {\n return this._addCheck({\n kind: \"duration\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options?.message)\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n /**\n * Equivalent to `.min(1)`\n */ nonempty(message) {\n return this.min(1, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind: \"trim\"\n }\n ]\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind: \"toLowerCase\"\n }\n ]\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind: \"toUpperCase\"\n }\n ]\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch)=>ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch)=>ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch)=>ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch)=>ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch)=>ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch)=>ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch)=>ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch)=>ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch)=>ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch)=>ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch)=>ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch)=>ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params)=>{\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params)\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return valInt % stepInt / 10 ** decCount;\n}\nclass ZodNumber extends ZodType {\n constructor(){\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.number,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n let ctx = undefined;\n const status = new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus();\n for (const check of this._def.checks){\n if (check.kind === \"int\") {\n if (!_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.not_finite,\n message: check.message\n });\n status.dirty();\n }\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: input.data\n };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n ]\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch)=>ch.kind === \"int\" || ch.kind === \"multipleOf\" && _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.isInteger(ch.value));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n } else if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n } else if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params)=>{\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params)\n });\n};\nclass ZodBigInt extends ZodType {\n constructor(){\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n } catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus();\n for (const check of this._def.checks){\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message\n });\n status.dirty();\n }\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: input.data\n };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.bigint,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n ]\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params)=>{\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params)\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.boolean,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodBoolean.create = (params)=>{\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params)\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.date,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_date\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const status = new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks){\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime())\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params)=>{\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params)\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.symbol,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodSymbol.create = (params)=>{\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params)\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodUndefined.create = (params)=>{\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params)\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.null,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodNull.create = (params)=>{\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params)\n });\n};\nclass ZodAny extends ZodType {\n constructor(){\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodAny.create = (params)=>{\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params)\n });\n};\nclass ZodUnknown extends ZodType {\n constructor(){\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodUnknown.create = (params)=>{\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params)\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.never,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n}\nZodNever.create = (params)=>{\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params)\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.void,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodVoid.create = (params)=>{\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params)\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: tooBig ? _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big : _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: tooSmall ? def.exactLength.value : undefined,\n maximum: tooBig ? def.exactLength.value : undefined,\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([\n ...ctx.data\n ].map((item, i)=>{\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result)=>{\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeArray(status, result);\n });\n }\n const result = [\n ...ctx.data\n ].map((item, i)=>{\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: {\n value: minLength,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: {\n value: maxLength,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: {\n value: len,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params)=>{\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params)\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for(const key in schema.shape){\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: ()=>newShape\n });\n } else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element)\n });\n } else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item)=>deepPartialify(item)));\n } else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor(){\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */ this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */ this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null) return this._cached;\n const shape = this._def.shape();\n const keys = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(shape);\n this._cached = {\n shape,\n keys\n };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for(const key in ctx.data){\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys){\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: {\n status: \"valid\",\n value: key\n },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys){\n pairs.push({\n key: {\n status: \"valid\",\n value: key\n },\n value: {\n status: \"valid\",\n value: ctx.data[key]\n }\n });\n }\n } else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.unrecognized_keys,\n keys: extraKeys\n });\n status.dirty();\n }\n } else if (unknownKeys === \"strip\") {} else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n } else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys){\n const value = ctx.data[key];\n pairs.push({\n key: {\n status: \"valid\",\n value: key\n },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve().then(async ()=>{\n const syncPairs = [];\n for (const pair of pairs){\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet\n });\n }\n return syncPairs;\n }).then((syncPairs)=>{\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeObjectSync(status, syncPairs);\n });\n } else {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...message !== undefined ? {\n errorMap: (issue, ctx)=>{\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\") return {\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message).message ?? defaultError\n };\n return {\n message: defaultError\n };\n }\n } : {}\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\"\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\"\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: ()=>({\n ...this._def.shape(),\n ...augmentation\n })\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */ merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: ()=>({\n ...this._def.shape(),\n ...merging._def.shape()\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({\n [key]: schema\n });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(mask)){\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>shape\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(this.shape)){\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>shape\n });\n }\n /**\n * @deprecated\n */ deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(this.shape)){\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n } else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>newShape\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(this.shape)){\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n } else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while(newField instanceof ZodOptional){\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>newShape\n });\n }\n keyof() {\n return createZodEnum(_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params)=>{\n return new ZodObject({\n shape: ()=>shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nZodObject.strictCreate = (shape, params)=>{\n return new ZodObject({\n shape: ()=>shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nZodObject.lazycreate = (shape, params)=>{\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results){\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results){\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result)=>new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(result.ctx.common.issues));\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_union,\n unionErrors\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option)=>{\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n }),\n ctx: childCtx\n };\n })).then(handleResults);\n } else {\n let dirty = undefined;\n const issues = [];\n for (const option of options){\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n });\n if (result.status === \"valid\") {\n return result;\n } else if (result.status === \"dirty\" && !dirty) {\n dirty = {\n result,\n ctx: childCtx\n };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues)=>new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(issues));\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_union,\n unionErrors\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params)=>{\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params)\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type)=>{\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n } else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n } else if (type instanceof ZodLiteral) {\n return [\n type.value\n ];\n } else if (type instanceof ZodEnum) {\n return type.options;\n } else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectValues(type.enum);\n } else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n } else if (type instanceof ZodUndefined) {\n return [\n undefined\n ];\n } else if (type instanceof ZodNull) {\n return [\n null\n ];\n } else if (type instanceof ZodOptional) {\n return [\n undefined,\n ...getDiscriminator(type.unwrap())\n ];\n } else if (type instanceof ZodNullable) {\n return [\n null,\n ...getDiscriminator(type.unwrap())\n ];\n } else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n } else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n } else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n } else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [\n discriminator\n ]\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n } else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */ static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options){\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues){\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params)\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(a);\n const bType = (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(b);\n if (a === b) {\n return {\n valid: true,\n data: a\n };\n } else if (aType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object && bType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object) {\n const bKeys = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(b);\n const sharedKeys = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(a).filter((key)=>bKeys.indexOf(key) !== -1);\n const newObj = {\n ...a,\n ...b\n };\n for (const key of sharedKeys){\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false\n };\n }\n newObj[key] = sharedValue.data;\n }\n return {\n valid: true,\n data: newObj\n };\n } else if (aType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array && bType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array) {\n if (a.length !== b.length) {\n return {\n valid: false\n };\n }\n const newArray = [];\n for(let index = 0; index < a.length; index++){\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false\n };\n }\n newArray.push(sharedValue.data);\n }\n return {\n valid: true,\n data: newArray\n };\n } else if (aType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.date && bType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.date && +a === +b) {\n return {\n valid: true,\n data: a\n };\n } else {\n return {\n valid: false\n };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight)=>{\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAborted)(parsedLeft) || (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAborted)(parsedRight)) {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_intersection_types\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isDirty)(parsedLeft) || (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isDirty)(parsedRight)) {\n status.dirty();\n }\n return {\n status: status.value,\n value: merged.data\n };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n })\n ]).then(([left, right])=>handleParsed(left, right));\n } else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params)=>{\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params)\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\"\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\"\n });\n status.dirty();\n }\n const items = [\n ...ctx.data\n ].map((item, itemIndex)=>{\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema) return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n }).filter((x)=>!!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results)=>{\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeArray(status, results);\n });\n } else {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest\n });\n }\n}\nZodTuple.create = (schemas, params)=>{\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params)\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for(const key in ctx.data){\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data\n });\n }\n if (ctx.common.async) {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeObjectAsync(status, pairs);\n } else {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third)\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second)\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.map) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.map,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [\n ...ctx.data.entries()\n ].map(([key, value], index)=>{\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [\n index,\n \"key\"\n ])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [\n index,\n \"value\"\n ]))\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async ()=>{\n for (const pair of pairs){\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return {\n status: status.value,\n value: finalMap\n };\n });\n } else {\n const finalMap = new Map();\n for (const pair of pairs){\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return {\n status: status.value,\n value: finalMap\n };\n }\n }\n}\nZodMap.create = (keyType, valueType, params)=>{\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params)\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.set) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.set,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements){\n if (element.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (element.status === \"dirty\") status.dirty();\n parsedSet.add(element.value);\n }\n return {\n status: status.value,\n value: parsedSet\n };\n }\n const elements = [\n ...ctx.data.values()\n ].map((item, i)=>valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements)=>finalizeSet(elements));\n } else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: {\n value: minSize,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: {\n value: maxSize,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params)=>{\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params)\n });\n};\nclass ZodFunction extends ZodType {\n constructor(){\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.function) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.function,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n function makeArgsIssue(args, error) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.makeIssue)({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n (0,_errors_js__WEBPACK_IMPORTED_MODULE_4__.getErrorMap)(),\n _errors_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n ].filter((x)=>!!x),\n issueData: {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_arguments,\n argumentsError: error\n }\n });\n }\n function makeReturnsIssue(returns, error) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.makeIssue)({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n (0,_errors_js__WEBPACK_IMPORTED_MODULE_4__.getErrorMap)(),\n _errors_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n ].filter((x)=>!!x),\n issueData: {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_return_type,\n returnTypeError: error\n }\n });\n }\n const params = {\n errorMap: ctx.common.contextualErrorMap\n };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(async function(...args) {\n const error = new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e)=>{\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e)=>{\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n } else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(function(...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError([\n makeArgsIssue(args, parsedArgs.error)\n ]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError([\n makeReturnsIssue(result, parsedReturns.error)\n ]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create())\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: args ? args : ZodTuple.create([]).rest(ZodUnknown.create()),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params)\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n }\n}\nZodLazy.create = (getter, params)=>{\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params)\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n received: ctx.data,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_literal,\n expected: this._def.value\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return {\n status: \"valid\",\n value: input.data\n };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params)=>{\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params)\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params)\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n received: ctx.data,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_enum_value,\n options: expectedValues\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values){\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values){\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values){\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt)=>!values.includes(opt)), {\n ...this._def,\n ...newDef\n });\n }\n}\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.string && ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.number) {\n const expectedValues = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectValues(nativeEnumValues);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectValues(nativeEnumValues);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n received: ctx.data,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_enum_value,\n options: expectedValues\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params)=>{\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params)\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.promise && ctx.common.async === false) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.promise,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const promisified = ctx.parsedType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(promisified.then((data)=>{\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap\n });\n }));\n }\n}\nZodPromise.create = (schema, params)=>{\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params)\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects ? this._def.schema.sourceType() : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg)=>{\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, arg);\n if (arg.fatal) {\n status.abort();\n } else {\n status.dirty();\n }\n },\n get path () {\n return ctx.path;\n }\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed)=>{\n if (status.value === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx\n });\n if (result.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (result.status === \"dirty\") return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(result.value);\n if (status.value === \"dirty\") return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(result.value);\n return result;\n });\n } else {\n if (status.value === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx\n });\n if (result.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (result.status === \"dirty\") return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(result.value);\n if (status.value === \"dirty\") return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc)=>{\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inner.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (inner.status === \"dirty\") status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return {\n status: status.value,\n value: inner.value\n };\n } else {\n return this._def.schema._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }).then((inner)=>{\n if (inner.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (inner.status === \"dirty\") status.dirty();\n return executeRefinement(inner.value).then(()=>{\n return {\n status: status.value,\n value: inner.value\n };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (!(0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(base)) return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return {\n status: status.value,\n value: result\n };\n } else {\n return this._def.schema._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }).then((base)=>{\n if (!(0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(base)) return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result)=>({\n status: status.value,\n value: result\n }));\n });\n }\n }\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params)=>{\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params)\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params)=>{\n return new ZodEffects({\n schema,\n effect: {\n type: \"preprocess\",\n transform: preprocess\n },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params)\n });\n};\n\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params)=>{\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params)\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.null) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params)=>{\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params)\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params)=>{\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : ()=>params.default,\n ...processCreateParams(params)\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n }\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx\n }\n });\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAsync)(result)) {\n return result.then((result)=>{\n return {\n status: \"valid\",\n value: result.status === \"valid\" ? result.value : this._def.catchValue({\n get error () {\n return new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(newCtx.common.issues);\n },\n input: newCtx.data\n })\n };\n });\n } else {\n return {\n status: \"valid\",\n value: result.status === \"valid\" ? result.value : this._def.catchValue({\n get error () {\n return new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(newCtx.common.issues);\n },\n input: newCtx.data\n })\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params)=>{\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : ()=>params.catch,\n ...processCreateParams(params)\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.nan,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return {\n status: \"valid\",\n value: input.data\n };\n }\n}\nZodNaN.create = (params)=>{\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params)\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async ()=>{\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inResult.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(inResult.value);\n } else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx\n });\n }\n };\n return handleAsync();\n } else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inResult.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value\n };\n } else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data)=>{\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAsync)(result) ? result.then((data)=>freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params)=>{\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params)\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? {\n message: params\n } : params;\n const p2 = typeof p === \"string\" ? {\n message: p\n } : p;\n return p2;\n}\nfunction custom(check, _params = {}, /**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */ fatal) {\n if (check) return ZodAny.create().superRefine((data, ctx)=>{\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r)=>{\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({\n code: \"custom\",\n ...params,\n fatal: _fatal\n });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({\n code: \"custom\",\n ...params,\n fatal: _fatal\n });\n }\n return;\n });\n return ZodAny.create();\n}\n\nconst late = {\n object: ZodObject.lazycreate\n};\nvar ZodFirstPartyTypeKind;\n(function(ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._){}\n}\nconst instanceOfType = (// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`\n})=>custom((data)=>data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = ()=>stringType().optional();\nconst onumber = ()=>numberType().optional();\nconst oboolean = ()=>booleanType().optional();\nconst coerce = {\n string: (arg)=>ZodString.create({\n ...arg,\n coerce: true\n }),\n number: (arg)=>ZodNumber.create({\n ...arg,\n coerce: true\n }),\n boolean: (arg)=>ZodBoolean.create({\n ...arg,\n coerce: true\n }),\n bigint: (arg)=>ZodBigInt.create({\n ...arg,\n coerce: true\n }),\n date: (arg)=>ZodDate.create({\n ...arg,\n coerce: true\n })\n};\n\nconst NEVER = _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My90eXBlcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3RDtBQUNHO0FBQ1I7QUFDMkY7QUFDdkU7QUFDdkUsTUFBTWtCO0lBQ0YsWUFBWUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsR0FBRyxDQUFFO1FBQ2xDLElBQUksQ0FBQ0MsV0FBVyxHQUFHLEVBQUU7UUFDckIsSUFBSSxDQUFDSixNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDSyxJQUFJLEdBQUdKO1FBQ1osSUFBSSxDQUFDSyxLQUFLLEdBQUdKO1FBQ2IsSUFBSSxDQUFDSyxJQUFJLEdBQUdKO0lBQ2hCO0lBQ0EsSUFBSUQsT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUNFLFdBQVcsQ0FBQ0ksTUFBTSxFQUFFO1lBQzFCLElBQUlDLE1BQU1DLE9BQU8sQ0FBQyxJQUFJLENBQUNILElBQUksR0FBRztnQkFDMUIsSUFBSSxDQUFDSCxXQUFXLENBQUNPLElBQUksSUFBSSxJQUFJLENBQUNMLEtBQUssS0FBSyxJQUFJLENBQUNDLElBQUk7WUFDckQsT0FDSztnQkFDRCxJQUFJLENBQUNILFdBQVcsQ0FBQ08sSUFBSSxJQUFJLElBQUksQ0FBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQ0MsSUFBSTtZQUNsRDtRQUNKO1FBQ0EsT0FBTyxJQUFJLENBQUNILFdBQVc7SUFDM0I7QUFDSjtBQUNBLE1BQU1RLGVBQWUsQ0FBQ0MsS0FBS0M7SUFDdkIsSUFBSXBCLDhEQUFPQSxDQUFDb0IsU0FBUztRQUNqQixPQUFPO1lBQUVDLFNBQVM7WUFBTVYsTUFBTVMsT0FBT2IsS0FBSztRQUFDO0lBQy9DLE9BQ0s7UUFDRCxJQUFJLENBQUNZLElB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UyxRQUFRO1FBQUs7SUFDMURnSCxTQUFVLENBQUM4TCxNQUFRaE0sV0FBV25MLE1BQU0sQ0FBQztZQUNqQyxHQUFHbVgsR0FBRztZQUNOOVMsUUFBUTtRQUNaO0lBQ0E2RyxRQUFTLENBQUNpTSxNQUFRcE0sVUFBVS9LLE1BQU0sQ0FBQztZQUFFLEdBQUdtWCxHQUFHO1lBQUU5UyxRQUFRO1FBQUs7SUFDMUQyQyxNQUFPLENBQUNtUSxNQUFRN0wsUUFBUXRMLE1BQU0sQ0FBQztZQUFFLEdBQUdtWCxHQUFHO1lBQUU5UyxRQUFRO1FBQUs7QUFDMUQsRUFBRTtBQUNzM0I7QUFDajNCLE1BQU11WSxRQUFRMWpCLDBEQUFPQSxDQUFDIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvdHlwZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWm9kRXJyb3IsIFpvZElzc3VlQ29kZSwgfSBmcm9tIFwiLi9ab2RFcnJvci5qc1wiO1xuaW1wb3J0IHsgZGVmYXVsdEVycm9yTWFwLCBnZXRFcnJvck1hcCB9IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHsgZXJyb3JVdGlsIH0gZnJvbSBcIi4vaGVscGVycy9lcnJvclV0aWwuanNcIjtcbmltcG9ydCB7IERJUlRZLCBJTlZBTElELCBPSywgUGFyc2VTdGF0dXMsIGFkZElzc3VlVG9Db250ZXh0LCBpc0Fib3J0ZWQsIGlzQXN5bmMsIGlzRGlydHksIGlzVmFsaWQsIG1ha2VJc3N1ZSwgfSBmcm9tIFwiLi9oZWxwZXJzL3BhcnNlVXRpbC5qc1wiO1xuaW1wb3J0IHsgdXRpbCwgWm9kUGFyc2VkVHlwZSwgZ2V0UGFyc2VkVHlwZSB9IGZyb20gXCIuL2hlbHBlcnMvdXRpbC5qc1wiO1xuY2xhc3MgUGFyc2VJbnB1dExhenlQYXRoIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHZhbHVlLCBwYXRoLCBrZXkpIHtcbiAgICAgICAgdGhpcy5fY2FjaGVkUGF0aCA9IFtdO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5kYXRhID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3BhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG4gICAgfVxuICAgIGdldCBwYXRoKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9rZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkUGF0aC5wdXNoKC4uLnRoaXMuX3BhdGgsIC4uLnRoaXMuX2tleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRQYXRoLnB1c2goLi4udGhpcy5fcGF0aCwgdGhpcy5fa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkUGF0aDtcbiAgICB9XG59XG5jb25zdCBoYW5kbGVSZXN1bHQgPSAoY3R4LCByZXN1bHQpID0+IHtcbiAgICBpZiAoaXNWYWxpZChyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IHJlc3VsdC52YWx1ZSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKCFjdHguY29tbW9uLmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZhbGlkYXRpb24gZmFpbGVkIGJ1dCBubyBpc3N1ZXMgZGV0ZWN0ZWQuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGdldCBlcnJvcigpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lcnJvcjtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihjdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3I7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn07XG5mdW5jdGlvbiBwcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcykge1xuICAgIGlmICghcGFyYW1zKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgeyBlcnJvck1hcCwgaW52YWxpZF90eXBlX2Vycm9yLCByZXF1aXJlZF9lcnJvciwgZGVzY3JpcHRpb24gfSA9IHBhcmFtcztcbiAgICBpZiAoZXJyb3JNYXAgJiYgKGludmFsaWRfdHlwZV9lcnJvciB8fCByZXF1aXJlZF9lcnJvcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCB1c2UgXCJpbnZhbGlkX3R5cGVfZXJyb3JcIiBvciBcInJlcXVpcmVkX2Vycm9yXCIgaW4gY29uanVuY3Rpb24gd2l0aCBjdXN0b20gZXJyb3IgbWFwLmApO1xuICAgIH1cbiAgICBpZiAoZXJyb3JNYXApXG4gICAgICAgIHJldHVybiB7IGVycm9yTWFwOiBlcnJvck1hcCwgZGVzY3JpcHRpb24gfTtcbiAgICBjb25zdCBjdXN0b21NYXAgPSAoaXNzLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgeyBtZXNzYWdlIH0gPSBwYXJhbXM7XG4gICAgICAgIGlmIChpc3MuY29kZSA9PT0gXCJpbnZhbGlkX2VudW1fdmFsdWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogbWVzc2FnZSA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjdHguZGF0YSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogbWVzc2FnZSA/PyByZXF1aXJlZF9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzcy5jb2RlICE9PSBcImludmFsaWRfdHlwZVwiKVxuICAgICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogY3R4LmRlZmF1bHRFcnJvciB9O1xuICAgICAgICByZXR1cm4geyBtZXNzYWdlOiBtZXNzYWdlID8/IGludmFsaWRfdHlwZV9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgfTtcbiAgICByZXR1cm4geyBlcnJvck1hcDogY3VzdG9tTWFwLCBkZXNjcmlwdGlvbiB9O1xufVxuZXhwb3J0IGNsYXNzIFpvZFR5cGUge1xuICAgIGdldCBkZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5kZXNjcmlwdGlvbjtcbiAgICB9XG4gICAgX2dldFR5cGUoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNlZFR5cGUoaW5wdXQuZGF0YSk7XG4gICAgfVxuICAgIF9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KSB7XG4gICAgICAgIHJldHVybiAoY3R4IHx8IHtcbiAgICAgICAgICAgIGNvbW1vbjogaW5wdXQucGFyZW50LmNvbW1vbixcbiAgICAgICAgICAgIGRhdGE6IGlucHV0LmRhdGEsXG4gICAgICAgICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpLFxuICAgICAgICAgICAgc2NoZW1hRXJyb3JNYXA6IHRoaXMuX2RlZi5lcnJvck1hcCxcbiAgICAgICAgICAgIHBhdGg6IGlucHV0LnBhdGgsXG4gICAgICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXR1czogbmV3IFBhcnNlU3RhdHVzKCksXG4gICAgICAgICAgICBjdHg6IHtcbiAgICAgICAgICAgICAgICBjb21tb246IGlucHV0LnBhcmVudC5jb21tb24sXG4gICAgICAgICAgICAgICAgZGF0YTogaW5wdXQuZGF0YSxcbiAgICAgICAgICAgICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpLFxuICAgICAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICAgICAgcGF0aDogaW5wdXQucGF0aCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9wYXJzZVN5bmMoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2UoaW5wdXQpO1xuICAgICAgICBpZiAoaXNBc3luYyhyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jaHJvbm91cyBwYXJzZSBlbmNvdW50ZXJlZCBwcm9taXNlLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBfcGFyc2VBc3luYyhpbnB1dCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9wYXJzZShpbnB1dCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICB9XG4gICAgcGFyc2UoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2FmZVBhcnNlKGRhdGEsIHBhcmFtcyk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2VzcylcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICAgICAgdGhyb3cgcmVzdWx0LmVycm9yO1xuICAgIH1cbiAgICBzYWZlUGFyc2UoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgYXN5bmM6IHBhcmFtcz8uYXN5bmMgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgY29udGV4dHVhbEVycm9yTWFwOiBwYXJhbXM/LmVycm9yTWFwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhdGg6IHBhcmFtcz8ucGF0aCB8fCBbXSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2VTeW5jKHsgZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pO1xuICAgICAgICByZXR1cm4gaGFuZGxlUmVzdWx0KGN0eCwgcmVzdWx0KTtcbiAgICB9XG4gICAgXCJ+dmFsaWRhdGVcIihkYXRhKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgYXN5bmM6ICEhdGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luYyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXRoOiBbXSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3BhcnNlU3luYyh7IGRhdGEsIHBhdGg6IFtdLCBwYXJlbnQ6IGN0eCB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZChyZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlczogY3R4LmNvbW1vbi5pc3N1ZXMsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycj8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoXCJlbmNvdW50ZXJlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3R4LmNvbW1vbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmM6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VBc3luYyh7IGRhdGEsIHBhdGg6IFtdLCBwYXJlbnQ6IGN0eCB9KS50aGVuKChyZXN1bHQpID0+IGlzVmFsaWQocmVzdWx0KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogY3R4LmNvbW1vbi5pc3N1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcGFyc2VBc3luYyhkYXRhLCBwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zYWZlUGFyc2VBc3luYyhkYXRhLCBwYXJhbXMpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgICB9XG4gICAgYXN5bmMgc2FmZVBhcnNlQXN5bmMoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgY29udGV4dHVhbEVycm9yTWFwOiBwYXJhbXM/LmVycm9yTWFwLFxuICAgICAgICAgICAgICAgIGFzeW5jOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhdGg6IHBhcmFtcz8ucGF0aCB8fCBbXSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbWF5YmVBc3luY1Jlc3VsdCA9IHRoaXMuX3BhcnNlKHsgZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoaXNBc3luYyhtYXliZUFzeW5jUmVzdWx0KSA/IG1heWJlQXN5bmNSZXN1bHQgOiBQcm9taXNlLnJlc29sdmUobWF5YmVBc3luY1Jlc3VsdCkpO1xuICAgICAgICByZXR1cm4gaGFuZGxlUmVzdWx0KGN0eCwgcmVzdWx0KTtcbiAgICB9XG4gICAgcmVmaW5lKGNoZWNrLCBtZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IGdldElzc3VlUHJvcGVydGllcyA9ICh2YWwpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgbWVzc2FnZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IG1lc3NhZ2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZSh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWZpbmVtZW50KCh2YWwsIGN0eCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2hlY2sodmFsKTtcbiAgICAgICAgICAgIGNvbnN0IHNldEVycm9yID0gKCkgPT4gY3R4LmFkZElzc3VlKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuY3VzdG9tLFxuICAgICAgICAgICAgICAgIC4uLmdldElzc3VlUHJvcGVydGllcyh2YWwpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIFByb21pc2UgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVmaW5lbWVudChjaGVjaywgcmVmaW5lbWVudERhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZmluZW1lbnQoKHZhbCwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNoZWNrKHZhbCkpIHtcbiAgICAgICAgICAgICAgICBjdHguYWRkSXNzdWUodHlwZW9mIHJlZmluZW1lbnREYXRhID09PSBcImZ1bmN0aW9uXCIgPyByZWZpbmVtZW50RGF0YSh2YWwsIGN0eCkgOiByZWZpbmVtZW50RGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfcmVmaW5lbWVudChyZWZpbmVtZW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kRWZmZWN0cyh7XG4gICAgICAgICAgICBzY2hlbWE6IHRoaXMsXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXG4gICAgICAgICAgICBlZmZlY3Q6IHsgdHlwZTogXCJyZWZpbmVtZW50XCIsIHJlZmluZW1lbnQgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN1cGVyUmVmaW5lKHJlZmluZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZmluZW1lbnQocmVmaW5lbWVudCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGRlZikge1xuICAgICAgICAvKiogQWxpYXMgb2Ygc2FmZVBhcnNlQXN5bmMgKi9cbiAgICAgICAgdGhpcy5zcGEgPSB0aGlzLnNhZmVQYXJzZUFzeW5jO1xuICAgICAgICB0aGlzLl9kZWYgPSBkZWY7XG4gICAgICAgIHRoaXMucGFyc2UgPSB0aGlzLnBhcnNlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2FmZVBhcnNlID0gdGhpcy5zYWZlUGFyc2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5wYXJzZUFzeW5jID0gdGhpcy5wYXJzZUFzeW5jLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2FmZVBhcnNlQXN5bmMgPSB0aGlzLnNhZmVQYXJzZUFzeW5jLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc3BhID0gdGhpcy5zcGEuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5yZWZpbmUgPSB0aGlzLnJlZmluZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnJlZmluZW1lbnQgPSB0aGlzLnJlZmluZW1lbnQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5zdXBlclJlZmluZSA9IHRoaXMuc3VwZXJSZWZpbmUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5vcHRpb25hbCA9IHRoaXMub3B0aW9uYWwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5udWxsYWJsZSA9IHRoaXMubnVsbGFibGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5udWxsaXNoID0gdGhpcy5udWxsaXNoLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuYXJyYXkgPSB0aGlzLmFycmF5LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IHRoaXMucHJvbWlzZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLm9yID0gdGhpcy5vci5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmFuZCA9IHRoaXMuYW5kLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm0uYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5icmFuZCA9IHRoaXMuYnJhbmQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5kZWZhdWx0ID0gdGhpcy5kZWZhdWx0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuY2F0Y2ggPSB0aGlzLmNhdGNoLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVzY3JpYmUgPSB0aGlzLmRlc2NyaWJlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucGlwZSA9IHRoaXMucGlwZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gdGhpcy5yZWFkb25seS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmlzTnVsbGFibGUgPSB0aGlzLmlzTnVsbGFibGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5pc09wdGlvbmFsID0gdGhpcy5pc09wdGlvbmFsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXNbXCJ+c3RhbmRhcmRcIl0gPSB7XG4gICAgICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICAgICAgdmVuZG9yOiBcInpvZFwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChkYXRhKSA9PiB0aGlzW1wifnZhbGlkYXRlXCJdKGRhdGEpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBvcHRpb25hbCgpIHtcbiAgICAgICAgcmV0dXJuIFpvZE9wdGlvbmFsLmNyZWF0ZSh0aGlzLCB0aGlzLl9kZWYpO1xuICAgIH1cbiAgICBudWxsYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIFpvZE51bGxhYmxlLmNyZWF0ZSh0aGlzLCB0aGlzLl9kZWYpO1xuICAgIH1cbiAgICBudWxsaXNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5udWxsYWJsZSgpLm9wdGlvbmFsKCk7XG4gICAgfVxuICAgIGFycmF5KCkge1xuICAgICAgICByZXR1cm4gWm9kQXJyYXkuY3JlYXRlKHRoaXMpO1xuICAgIH1cbiAgICBwcm9taXNlKCkge1xuICAgICAgICByZXR1cm4gWm9kUHJvbWlzZS5jcmVhdGUodGhpcywgdGhpcy5fZGVmKTtcbiAgICB9XG4gICAgb3Iob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBab2RVbmlvbi5jcmVhdGUoW3RoaXMsIG9wdGlvbl0sIHRoaXMuX2RlZik7XG4gICAgfVxuICAgIGFuZChpbmNvbWluZykge1xuICAgICAgICByZXR1cm4gWm9kSW50ZXJzZWN0aW9uLmNyZWF0ZSh0aGlzLCBpbmNvbWluZywgdGhpcy5fZGVmKTtcbiAgICB9XG4gICAgdHJhbnNmb3JtKHRyYW5zZm9ybSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyh0aGlzLl9kZWYpLFxuICAgICAgICAgICAgc2NoZW1hOiB0aGlzLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxuICAgICAgICAgICAgZWZmZWN0OiB7IHR5cGU6IFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGVmYXVsdChkZWYpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlRnVuYyA9IHR5cGVvZiBkZWYgPT09IFwiZnVuY3Rpb25cIiA/IGRlZiA6ICgpID0+IGRlZjtcbiAgICAgICAgcmV0dXJuIG5ldyBab2REZWZhdWx0KHtcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcy5fZGVmKSxcbiAgICAgICAgICAgIGlubmVyVHlwZTogdGhpcyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlRnVuYyxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGVmYXVsdCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGJyYW5kKCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEJyYW5kZWQoe1xuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCcmFuZGVkLFxuICAgICAgICAgICAgdHlwZTogdGhpcyxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcy5fZGVmKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNhdGNoKGRlZikge1xuICAgICAgICBjb25zdCBjYXRjaFZhbHVlRnVuYyA9IHR5cGVvZiBkZWYgPT09IFwiZnVuY3Rpb25cIiA/IGRlZiA6ICgpID0+IGRlZjtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RDYXRjaCh7XG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHRoaXMuX2RlZiksXG4gICAgICAgICAgICBpbm5lclR5cGU6IHRoaXMsXG4gICAgICAgICAgICBjYXRjaFZhbHVlOiBjYXRjaFZhbHVlRnVuYyxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQ2F0Y2gsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkZXNjcmliZShkZXNjcmlwdGlvbikge1xuICAgICAgICBjb25zdCBUaGlzID0gdGhpcy5jb25zdHJ1Y3RvcjtcbiAgICAgICAgcmV0dXJuIG5ldyBUaGlzKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcGlwZSh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIFpvZFBpcGVsaW5lLmNyZWF0ZSh0aGlzLCB0YXJnZXQpO1xuICAgIH1cbiAgICByZWFkb25seSgpIHtcbiAgICAgICAgcmV0dXJuIFpvZFJlYWRvbmx5LmNyZWF0ZSh0aGlzKTtcbiAgICB9XG4gICAgaXNPcHRpb25hbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVBhcnNlKHVuZGVmaW5lZCkuc3VjY2VzcztcbiAgICB9XG4gICAgaXNOdWxsYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3M7XG4gICAgfVxufVxuY29uc3QgY3VpZFJlZ2V4ID0gL15jW15cXHMtXXs4LH0kL2k7XG5jb25zdCBjdWlkMlJlZ2V4ID0gL15bMC05YS16XSskLztcbmNvbnN0IHVsaWRSZWdleCA9IC9eWzAtOUEtSEpLTU5QLVRWLVpdezI2fSQvaTtcbi8vIGNvbnN0IHV1aWRSZWdleCA9XG4vLyAgIC9eKFthLWYwLTldezh9LVthLWYwLTldezR9LVsxLTVdW2EtZjAtOV17M30tW2EtZjAtOV17NH0tW2EtZjAtOV17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkL2k7XG5jb25zdCB1dWlkUmVnZXggPSAvXlswLTlhLWZBLUZdezh9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezEyfSQvaTtcbmNvbnN0IG5hbm9pZFJlZ2V4ID0gL15bYS16MC05Xy1dezIxfSQvaTtcbmNvbnN0IGp3dFJlZ2V4ID0gL15bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10rXFwuW0EtWmEtejAtOS1fXSokLztcbmNvbnN0IGR1cmF0aW9uUmVnZXggPSAvXlstK10/UCg/ISQpKD86KD86Wy0rXT9cXGQrWSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtZJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzooPzpbLStdP1xcZCtXKXwoPzpbLStdP1xcZCtbLixdXFxkK1ckKSk/KD86KD86Wy0rXT9cXGQrRCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtEJCkpPyg/OlQoPz1bXFxkKy1dKSg/Oig/OlstK10/XFxkK0gpfCg/OlstK10/XFxkK1suLF1cXGQrSCQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86Wy0rXT9cXGQrKD86Wy4sXVxcZCspP1MpPyk/PyQvO1xuLy8gZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDYxODEvMTU1MDE1NVxuLy8gb2xkIHZlcnNpb246IHRvbyBzbG93LCBkaWRuJ3Qgc3VwcG9ydCB1bmljb2RlXG4vLyBjb25zdCBlbWFpbFJlZ2V4ID0gL14oKChbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKFxcLihbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKSopfCgoXFx4MjIpKCgoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oKFtcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDdmXXxcXHgyMXxbXFx4MjMtXFx4NWJdfFtcXHg1ZC1cXHg3ZV18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfChcXFxcKFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZC1cXHg3Zl18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSkpKigoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oXFx4MjIpKSlAKCgoW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKVxcLikrKChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpJC9pO1xuLy9vbGQgZW1haWwgcmVnZXhcbi8vIGNvbnN0IGVtYWlsUmVnZXggPSAvXigoW148PigpW1xcXS4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKD8hLSkoW148PigpW1xcXS4sOzpcXHNAXCJdK1xcLikrW148PigpW1xcXS4sOzpcXHNAXCJdezEsfSlbXi08PigpW1xcXS4sOzpcXHNAXCJdJC9pO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4vLyBjb25zdCBlbWFpbFJlZ2V4ID1cbi8vICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcXFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFxcXCJdKykqKXwoXFxcIi4rXFxcIikpQCgoXFxbKCgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpXFwuKXszfSgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpXFxdKXwoXFxbSVB2NjooKFthLWYwLTldezEsNH06KXs3fXw6OihbYS1mMC05XXsxLDR9Oil7MCw2fXwoW2EtZjAtOV17MSw0fTopezF9OihbYS1mMC05XXsxLDR9Oil7MCw1fXwoW2EtZjAtOV17MSw0fTopezJ9OihbYS1mMC05XXsxLDR9Oil7MCw0fXwoW2EtZjAtOV17MSw0fTopezN9OihbYS1mMC05XXsxLDR9Oil7MCwzfXwoW2EtZjAtOV17MSw0fTopezR9OihbYS1mMC05XXsxLDR9Oil7MCwyfXwoW2EtZjAtOV17MSw0fTopezV9OihbYS1mMC05XXsxLDR9Oil7MCwxfSkoW2EtZjAtOV17MSw0fXwoKCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSlcXC4pezN9KCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSkpXFxdKXwoW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dKltBLVphLXowLTldKSooXFwuW0EtWmEtel17Mix9KSspKSQvO1xuLy8gY29uc3QgZW1haWxSZWdleCA9XG4vLyAgIC9eW2EtekEtWjAtOVxcLlxcIVxcI1xcJFxcJVxcJlxcJ1xcKlxcK1xcL1xcPVxcP1xcXlxcX1xcYFxce1xcfFxcfVxcflxcLV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC87XG4vLyBjb25zdCBlbWFpbFJlZ2V4ID1cbi8vICAgL14oPzpbYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XFwuW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqfFwiKD86W1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4MjFcXHgyMy1cXHg1YlxceDVkLVxceDdmXXxcXFxcW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBlLVxceDdmXSkqXCIpQCg/Oig/OlthLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9cXC4pK1thLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT98XFxbKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT98W2EtejAtOS1dKlthLXowLTldOig/OltcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDIxLVxceDVhXFx4NTMtXFx4N2ZdfFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGUtXFx4N2ZdKSspXFxdKSQvaTtcbmNvbnN0IGVtYWlsUmVnZXggPSAvXig/IVxcLikoPyEuKlxcLlxcLikoW0EtWjAtOV8nK1xcLVxcLl0qKVtBLVowLTlfKy1dQChbQS1aMC05XVtBLVowLTlcXC1dKlxcLikrW0EtWl17Mix9JC9pO1xuLy8gY29uc3QgZW1haWxSZWdleCA9XG4vLyAgIC9eW2EtejAtOS4hIyQlJuKAmSorLz0/Xl9ge3x9fi1dK0BbYS16MC05LV0rKD86XFwuW2EtejAtOVxcLV0rKSokL2k7XG4vLyBmcm9tIGh0dHBzOi8vdGhla2V2aW5zY290dC5jb20vZW1vamlzLWluLWphdmFzY3JpcHQvI3dyaXRpbmctYS1yZWd1bGFyLWV4cHJlc3Npb25cbmNvbnN0IF9lbW9qaVJlZ2V4ID0gYF4oXFxcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXFxccHtFbW9qaV9Db21wb25lbnR9KSskYDtcbmxldCBlbW9qaVJlZ2V4O1xuLy8gZmFzdGVyLCBzaW1wbGVyLCBzYWZlclxuY29uc3QgaXB2NFJlZ2V4ID0gL14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLztcbmNvbnN0IGlwdjRDaWRyUmVnZXggPSAvXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLygzWzAtMl18WzEyXT9bMC05XSkkLztcbi8vIGNvbnN0IGlwdjZSZWdleCA9XG4vLyAvXigoW2EtZjAtOV17MSw0fTopezd9fDo6KFthLWYwLTldezEsNH06KXswLDZ9fChbYS1mMC05XXsxLDR9Oil7MX06KFthLWYwLTldezEsNH06KXswLDV9fChbYS1mMC05XXsxLDR9Oil7Mn06KFthLWYwLTldezEsNH06KXswLDR9fChbYS1mMC05XXsxLDR9Oil7M306KFthLWYwLTldezEsNH06KXswLDN9fChbYS1mMC05XXsxLDR9Oil7NH06KFthLWYwLTldezEsNH06KXswLDJ9fChbYS1mMC05XXsxLDR9Oil7NX06KFthLWYwLTldezEsNH06KXswLDF9KShbYS1mMC05XXsxLDR9fCgoKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKVxcLil7M30oKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKSkkLztcbmNvbnN0IGlwdjZSZWdleCA9IC9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKSQvO1xuY29uc3QgaXB2NkNpZHJSZWdleCA9IC9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKVxcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC87XG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83ODYwMzkyL2RldGVybWluZS1pZi1zdHJpbmctaXMtaW4tYmFzZTY0LXVzaW5nLWphdmFzY3JpcHRcbmNvbnN0IGJhc2U2NFJlZ2V4ID0gL14oWzAtOWEtekEtWisvXXs0fSkqKChbMC05YS16QS1aKy9dezJ9PT0pfChbMC05YS16QS1aKy9dezN9PSkpPyQvO1xuLy8gaHR0cHM6Ly9iYXNlNjQuZ3VydS9zdGFuZGFyZHMvYmFzZTY0dXJsXG5jb25zdCBiYXNlNjR1cmxSZWdleCA9IC9eKFswLTlhLXpBLVotX117NH0pKigoWzAtOWEtekEtWi1fXXsyfSg9PSk/KXwoWzAtOWEtekEtWi1fXXszfSg9KT8pKT8kLztcbi8vIHNpbXBsZVxuLy8gY29uc3QgZGF0ZVJlZ2V4U291cmNlID0gYFxcXFxkezR9LVxcXFxkezJ9LVxcXFxkezJ9YDtcbi8vIG5vIGxlYXAgeWVhciB2YWxpZGF0aW9uXG4vLyBjb25zdCBkYXRlUmVnZXhTb3VyY2UgPSBgXFxcXGR7NH0tKCgwWzEzNTc4XXwxMHwxMiktMzF8KDBbMTMtOV18MVswLTJdKS0zMHwoMFsxLTldfDFbMC0yXSktKDBbMS05XXwxXFxcXGR8MlxcXFxkKSlgO1xuLy8gd2l0aCBsZWFwIHllYXIgdmFsaWRhdGlvblxuY29uc3QgZGF0ZVJlZ2V4U291cmNlID0gYCgoXFxcXGRcXFxcZFsyNDY4XVswNDhdfFxcXFxkXFxcXGRbMTM1NzldWzI2XXxcXFxcZFxcXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxcXGR7NH0tKCgwWzEzNTc4XXwxWzAyXSktKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pfCgwWzQ2OV18MTEpLSgwWzEtOV18WzEyXVxcXFxkfDMwKXwoMDIpLSgwWzEtOV18MVxcXFxkfDJbMC04XSkpKWA7XG5jb25zdCBkYXRlUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtkYXRlUmVnZXhTb3VyY2V9JGApO1xuZnVuY3Rpb24gdGltZVJlZ2V4U291cmNlKGFyZ3MpIHtcbiAgICBsZXQgc2Vjb25kc1JlZ2V4U291cmNlID0gYFswLTVdXFxcXGRgO1xuICAgIGlmIChhcmdzLnByZWNpc2lvbikge1xuICAgICAgICBzZWNvbmRzUmVnZXhTb3VyY2UgPSBgJHtzZWNvbmRzUmVnZXhTb3VyY2V9XFxcXC5cXFxcZHske2FyZ3MucHJlY2lzaW9ufX1gO1xuICAgIH1cbiAgICBlbHNlIGlmIChhcmdzLnByZWNpc2lvbiA9PSBudWxsKSB7XG4gICAgICAgIHNlY29uZHNSZWdleFNvdXJjZSA9IGAke3NlY29uZHNSZWdleFNvdXJjZX0oXFxcXC5cXFxcZCspP2A7XG4gICAgfVxuICAgIGNvbnN0IHNlY29uZHNRdWFudGlmaWVyID0gYXJncy5wcmVjaXNpb24gPyBcIitcIiA6IFwiP1wiOyAvLyByZXF1aXJlIHNlY29uZHMgaWYgcHJlY2lzaW9uIGlzIG5vbnplcm9cbiAgICByZXR1cm4gYChbMDFdXFxcXGR8MlswLTNdKTpbMC01XVxcXFxkKDoke3NlY29uZHNSZWdleFNvdXJjZX0pJHtzZWNvbmRzUXVhbnRpZmllcn1gO1xufVxuZnVuY3Rpb24gdGltZVJlZ2V4KGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7dGltZVJlZ2V4U291cmNlKGFyZ3MpfSRgKTtcbn1cbi8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzE0MzIzMVxuZXhwb3J0IGZ1bmN0aW9uIGRhdGV0aW1lUmVnZXgoYXJncykge1xuICAgIGxldCByZWdleCA9IGAke2RhdGVSZWdleFNvdXJjZX1UJHt0aW1lUmVnZXhTb3VyY2UoYXJncyl9YDtcbiAgICBjb25zdCBvcHRzID0gW107XG4gICAgb3B0cy5wdXNoKGFyZ3MubG9jYWwgPyBgWj9gIDogYFpgKTtcbiAgICBpZiAoYXJncy5vZmZzZXQpXG4gICAgICAgIG9wdHMucHVzaChgKFsrLV1cXFxcZHsyfTo/XFxcXGR7Mn0pYCk7XG4gICAgcmVnZXggPSBgJHtyZWdleH0oJHtvcHRzLmpvaW4oXCJ8XCIpfSlgO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeJHtyZWdleH0kYCk7XG59XG5mdW5jdGlvbiBpc1ZhbGlkSVAoaXAsIHZlcnNpb24pIHtcbiAgICBpZiAoKHZlcnNpb24gPT09IFwidjRcIiB8fCAhdmVyc2lvbikgJiYgaXB2NFJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoKHZlcnNpb24gPT09IFwidjZcIiB8fCAhdmVyc2lvbikgJiYgaXB2NlJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc1ZhbGlkSldUKGp3dCwgYWxnKSB7XG4gICAgaWYgKCFqd3RSZWdleC50ZXN0KGp3dCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBbaGVhZGVyXSA9IGp3dC5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICghaGVhZGVyKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBDb252ZXJ0IGJhc2U2NHVybCB0byBiYXNlNjRcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gaGVhZGVyXG4gICAgICAgICAgICAucmVwbGFjZSgvLS9nLCBcIitcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9fL2csIFwiL1wiKVxuICAgICAgICAgICAgLnBhZEVuZChoZWFkZXIubGVuZ3RoICsgKCg0IC0gKGhlYWRlci5sZW5ndGggJSA0KSkgJSA0KSwgXCI9XCIpO1xuICAgICAgICBjb25zdCBkZWNvZGVkID0gSlNPTi5wYXJzZShhdG9iKGJhc2U2NCkpO1xuICAgICAgICBpZiAodHlwZW9mIGRlY29kZWQgIT09IFwib2JqZWN0XCIgfHwgZGVjb2RlZCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKFwidHlwXCIgaW4gZGVjb2RlZCAmJiBkZWNvZGVkPy50eXAgIT09IFwiSldUXCIpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghZGVjb2RlZC5hbGcpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChhbGcgJiYgZGVjb2RlZC5hbGcgIT09IGFsZylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGlzVmFsaWRDaWRyKGlwLCB2ZXJzaW9uKSB7XG4gICAgaWYgKCh2ZXJzaW9uID09PSBcInY0XCIgfHwgIXZlcnNpb24pICYmIGlwdjRDaWRyUmVnZXgudGVzdChpcCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICgodmVyc2lvbiA9PT0gXCJ2NlwiIHx8ICF2ZXJzaW9uKSAmJiBpcHY2Q2lkclJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnQgY2xhc3MgWm9kU3RyaW5nIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICBpbnB1dC5kYXRhID0gU3RyaW5nKGlucHV0LmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuc3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnN0cmluZyxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgICAgICBsZXQgY3R4ID0gdW5kZWZpbmVkO1xuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEubGVuZ3RoIDwgY2hlY2sudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEubGVuZ3RoID4gY2hlY2sudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJsZW5ndGhcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGlucHV0LmRhdGEubGVuZ3RoID4gY2hlY2sudmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBpbnB1dC5kYXRhLmxlbmd0aCA8IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29CaWcgfHwgdG9vU21hbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b29CaWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJlbWFpbFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlbWFpbFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJlbWFpbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZW1vamlcIikge1xuICAgICAgICAgICAgICAgIGlmICghZW1vamlSZWdleCkge1xuICAgICAgICAgICAgICAgICAgICBlbW9qaVJlZ2V4ID0gbmV3IFJlZ0V4cChfZW1vamlSZWdleCwgXCJ1XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWVtb2ppUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImVtb2ppXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ1dWlkXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXV1aWRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwidXVpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibmFub2lkXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW5hbm9pZFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJuYW5vaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImN1aWRcIikge1xuICAgICAgICAgICAgICAgIGlmICghY3VpZFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJjdWlkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJjdWlkMlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjdWlkMlJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJjdWlkMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidWxpZFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1bGlkUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInVsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInVybFwiKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3IFVSTChpbnB1dC5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwicmVnZXhcIikge1xuICAgICAgICAgICAgICAgIGNoZWNrLnJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgdGVzdFJlc3VsdCA9IGNoZWNrLnJlZ2V4LnRlc3QoaW5wdXQuZGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0ZXN0UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwicmVnZXhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInRyaW1cIikge1xuICAgICAgICAgICAgICAgIGlucHV0LmRhdGEgPSBpbnB1dC5kYXRhLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiaW5jbHVkZXNcIikge1xuICAgICAgICAgICAgICAgIGlmICghaW5wdXQuZGF0YS5pbmNsdWRlcyhjaGVjay52YWx1ZSwgY2hlY2sucG9zaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHsgaW5jbHVkZXM6IGNoZWNrLnZhbHVlLCBwb3NpdGlvbjogY2hlY2sucG9zaXRpb24gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInRvTG93ZXJDYXNlXCIpIHtcbiAgICAgICAgICAgICAgICBpbnB1dC5kYXRhID0gaW5wdXQuZGF0YS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ0b1VwcGVyQ2FzZVwiKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuZGF0YSA9IGlucHV0LmRhdGEudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwic3RhcnRzV2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbnB1dC5kYXRhLnN0YXJ0c1dpdGgoY2hlY2sudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHsgc3RhcnRzV2l0aDogY2hlY2sudmFsdWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImVuZHNXaXRoXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0LmRhdGEuZW5kc1dpdGgoY2hlY2sudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHsgZW5kc1dpdGg6IGNoZWNrLnZhbHVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSBkYXRldGltZVJlZ2V4KGNoZWNrKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJkYXRldGltZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSBkYXRlUmVnZXg7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidGltZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSB0aW1lUmVnZXgoY2hlY2spO1xuICAgICAgICAgICAgICAgIGlmICghcmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInRpbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImR1cmF0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWR1cmF0aW9uUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImR1cmF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJpcFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkSVAoaW5wdXQuZGF0YSwgY2hlY2sudmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiand0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRKV1QoaW5wdXQuZGF0YSwgY2hlY2suYWxnKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImp3dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiY2lkclwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ2lkcihpbnB1dC5kYXRhLCBjaGVjay52ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImNpZHJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImJhc2U2NFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFiYXNlNjRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiYmFzZTY0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJiYXNlNjR1cmxcIikge1xuICAgICAgICAgICAgICAgIGlmICghYmFzZTY0dXJsUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImJhc2U2NHVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoY2hlY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogaW5wdXQuZGF0YSB9O1xuICAgIH1cbiAgICBfcmVnZXgocmVnZXgsIHZhbGlkYXRpb24sIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmaW5lbWVudCgoZGF0YSkgPT4gcmVnZXgudGVzdChkYXRhKSwge1xuICAgICAgICAgICAgdmFsaWRhdGlvbixcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9hZGRDaGVjayhjaGVjaykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZFN0cmluZyh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbWFpbChtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiZW1haWxcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICB1cmwobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcInVybFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIGVtb2ppKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJlbW9qaVwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIHV1aWQobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcInV1aWRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBuYW5vaWQobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcIm5hbm9pZFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIGN1aWQobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImN1aWRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBjdWlkMihtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiY3VpZDJcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICB1bGlkKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJ1bGlkXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgYmFzZTY0KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJiYXNlNjRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBiYXNlNjR1cmwobWVzc2FnZSkge1xuICAgICAgICAvLyBiYXNlNjR1cmwgZW5jb2RpbmcgaXMgYSBtb2RpZmljYXRpb24gb2YgYmFzZTY0IHRoYXQgY2FuIHNhZmVseSBiZSB1c2VkIGluIFVSTHMgYW5kIGZpbGVuYW1lc1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJiYXNlNjR1cmxcIixcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGp3dChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiand0XCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihvcHRpb25zKSB9KTtcbiAgICB9XG4gICAgaXAob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImlwXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihvcHRpb25zKSB9KTtcbiAgICB9XG4gICAgY2lkcihvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiY2lkclwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucykgfSk7XG4gICAgfVxuICAgIGRhdGV0aW1lKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAgICAgIGtpbmQ6IFwiZGF0ZXRpbWVcIixcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IG51bGwsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb2NhbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImRhdGV0aW1lXCIsXG4gICAgICAgICAgICBwcmVjaXNpb246IHR5cGVvZiBvcHRpb25zPy5wcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIgPyBudWxsIDogb3B0aW9ucz8ucHJlY2lzaW9uLFxuICAgICAgICAgICAgb2Zmc2V0OiBvcHRpb25zPy5vZmZzZXQgPz8gZmFsc2UsXG4gICAgICAgICAgICBsb2NhbDogb3B0aW9ucz8ubG9jYWwgPz8gZmFsc2UsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucz8ubWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkYXRlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJkYXRlXCIsIG1lc3NhZ2UgfSk7XG4gICAgfVxuICAgIHRpbWUob3B0aW9ucykge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICAgICAga2luZDogXCJ0aW1lXCIsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiBudWxsLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJ0aW1lXCIsXG4gICAgICAgICAgICBwcmVjaXNpb246IHR5cGVvZiBvcHRpb25zPy5wcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIgPyBudWxsIDogb3B0aW9ucz8ucHJlY2lzaW9uLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG9wdGlvbnM/Lm1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZHVyYXRpb24obWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImR1cmF0aW9uXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgcmVnZXgocmVnZXgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwicmVnZXhcIixcbiAgICAgICAgICAgIHJlZ2V4OiByZWdleCxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluY2x1ZGVzKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImluY2x1ZGVzXCIsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBwb3NpdGlvbjogb3B0aW9ucz8ucG9zaXRpb24sXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucz8ubWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGFydHNXaXRoKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcInN0YXJ0c1dpdGhcIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVuZHNXaXRoKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImVuZHNXaXRoXCIsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtaW4obWluTGVuZ3RoLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IG1pbkxlbmd0aCxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhMZW5ndGgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWF4XCIsXG4gICAgICAgICAgICB2YWx1ZTogbWF4TGVuZ3RoLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbGVuZ3RoKGxlbiwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJsZW5ndGhcIixcbiAgICAgICAgICAgIHZhbHVlOiBsZW4sXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFcXVpdmFsZW50IHRvIGAubWluKDEpYFxuICAgICAqL1xuICAgIG5vbmVtcHR5KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluKDEsIGVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSk7XG4gICAgfVxuICAgIHRyaW0oKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kU3RyaW5nKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogWy4uLnRoaXMuX2RlZi5jaGVja3MsIHsga2luZDogXCJ0cmltXCIgfV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0b0xvd2VyQ2FzZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgeyBraW5kOiBcInRvTG93ZXJDYXNlXCIgfV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0b1VwcGVyQ2FzZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgeyBraW5kOiBcInRvVXBwZXJDYXNlXCIgfV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgaXNEYXRldGltZSgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJkYXRldGltZVwiKTtcbiAgICB9XG4gICAgZ2V0IGlzRGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJkYXRlXCIpO1xuICAgIH1cbiAgICBnZXQgaXNUaW1lKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcInRpbWVcIik7XG4gICAgfVxuICAgIGdldCBpc0R1cmF0aW9uKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcImR1cmF0aW9uXCIpO1xuICAgIH1cbiAgICBnZXQgaXNFbWFpbCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJlbWFpbFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzVVJMKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcInVybFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzRW1vamkoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiZW1vamlcIik7XG4gICAgfVxuICAgIGdldCBpc1VVSUQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwidXVpZFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzTkFOT0lEKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcIm5hbm9pZFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzQ1VJRCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjdWlkXCIpO1xuICAgIH1cbiAgICBnZXQgaXNDVUlEMigpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjdWlkMlwiKTtcbiAgICB9XG4gICAgZ2V0IGlzVUxJRCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJ1bGlkXCIpO1xuICAgIH1cbiAgICBnZXQgaXNJUCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJpcFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzQ0lEUigpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjaWRyXCIpO1xuICAgIH1cbiAgICBnZXQgaXNCYXNlNjQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiYmFzZTY0XCIpO1xuICAgIH1cbiAgICBnZXQgaXNCYXNlNjR1cmwoKSB7XG4gICAgICAgIC8vIGJhc2U2NHVybCBlbmNvZGluZyBpcyBhIG1vZGlmaWNhdGlvbiBvZiBiYXNlNjQgdGhhdCBjYW4gc2FmZWx5IGJlIHVzZWQgaW4gVVJMcyBhbmQgZmlsZW5hbWVzXG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiYmFzZTY0dXJsXCIpO1xuICAgIH1cbiAgICBnZXQgbWluTGVuZ3RoKCkge1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pXG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIGdldCBtYXhMZW5ndGgoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG59XG5ab2RTdHJpbmcuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kU3RyaW5nKHtcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTdHJpbmcsXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgPz8gZmFsc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zOTY2NDg0L3doeS1kb2VzLW1vZHVsdXMtb3BlcmF0b3ItcmV0dXJuLWZyYWN0aW9uYWwtbnVtYmVyLWluLWphdmFzY3JpcHQvMzE3MTEwMzQjMzE3MTEwMzRcbmZ1bmN0aW9uIGZsb2F0U2FmZVJlbWFpbmRlcih2YWwsIHN0ZXApIHtcbiAgICBjb25zdCB2YWxEZWNDb3VudCA9ICh2YWwudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0gfHwgXCJcIikubGVuZ3RoO1xuICAgIGNvbnN0IHN0ZXBEZWNDb3VudCA9IChzdGVwLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdIHx8IFwiXCIpLmxlbmd0aDtcbiAgICBjb25zdCBkZWNDb3VudCA9IHZhbERlY0NvdW50ID4gc3RlcERlY0NvdW50ID8gdmFsRGVjQ291bnQgOiBzdGVwRGVjQ291bnQ7XG4gICAgY29uc3QgdmFsSW50ID0gTnVtYmVyLnBhcnNlSW50KHZhbC50b0ZpeGVkKGRlY0NvdW50KS5yZXBsYWNlKFwiLlwiLCBcIlwiKSk7XG4gICAgY29uc3Qgc3RlcEludCA9IE51bWJlci5wYXJzZUludChzdGVwLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcbiAgICByZXR1cm4gKHZhbEludCAlIHN0ZXBJbnQpIC8gMTAgKiogZGVjQ291bnQ7XG59XG5leHBvcnQgY2xhc3MgWm9kTnVtYmVyIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMubWluID0gdGhpcy5ndGU7XG4gICAgICAgIHRoaXMubWF4ID0gdGhpcy5sdGU7XG4gICAgICAgIHRoaXMuc3RlcCA9IHRoaXMubXVsdGlwbGVPZjtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICBpbnB1dC5kYXRhID0gTnVtYmVyKGlucHV0LmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubnVtYmVyKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm51bWJlcixcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjdHggPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcImludFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1dGlsLmlzSW50ZWdlcihpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IFwiZmxvYXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBjaGVjay5pbmNsdXNpdmUgPyBpbnB1dC5kYXRhIDwgY2hlY2sudmFsdWUgOiBpbnB1dC5kYXRhIDw9IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBjaGVjay5pbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGNoZWNrLmluY2x1c2l2ZSA/IGlucHV0LmRhdGEgPiBjaGVjay52YWx1ZSA6IGlucHV0LmRhdGEgPj0gY2hlY2sudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHRvb0JpZykge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogY2hlY2suaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZsb2F0U2FmZVJlbWFpbmRlcihpbnB1dC5kYXRhLCBjaGVjay52YWx1ZSkgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZixcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlT2Y6IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZmluaXRlXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUubm90X2Zpbml0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgICB9XG4gICAgZ3RlKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsIHZhbHVlLCB0cnVlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBndCh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLCB2YWx1ZSwgZmFsc2UsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIGx0ZSh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCB2YWx1ZSwgdHJ1ZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgbHQodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIiwgdmFsdWUsIGZhbHNlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBzZXRMaW1pdChraW5kLCB2YWx1ZSwgaW5jbHVzaXZlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogW1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZi5jaGVja3MsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBraW5kLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfYWRkQ2hlY2soY2hlY2spIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2ROdW1iZXIoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgY2hlY2tdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaW50KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwiaW50XCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbmVnYXRpdmUobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtYXhcIixcbiAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vbnBvc2l0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWF4XCIsXG4gICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vbm5lZ2F0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG11bHRpcGxlT2YodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibXVsdGlwbGVPZlwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZmluaXRlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwiZmluaXRlXCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzYWZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IG1pblZhbHVlKCkge1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pXG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIGdldCBtYXhWYWx1ZSgpIHtcbiAgICAgICAgbGV0IG1heCA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWF4ID09PSBudWxsIHx8IGNoLnZhbHVlIDwgbWF4KVxuICAgICAgICAgICAgICAgICAgICBtYXggPSBjaC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgIH1cbiAgICBnZXQgaXNJbnQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiaW50XCIgfHwgKGNoLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiICYmIHV0aWwuaXNJbnRlZ2VyKGNoLnZhbHVlKSkpO1xuICAgIH1cbiAgICBnZXQgaXNGaW5pdGUoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJmaW5pdGVcIiB8fCBjaC5raW5kID09PSBcImludFwiIHx8IGNoLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaC5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1pbiA9PT0gbnVsbCB8fCBjaC52YWx1ZSA+IG1pbilcbiAgICAgICAgICAgICAgICAgICAgbWluID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShtaW4pICYmIE51bWJlci5pc0Zpbml0ZShtYXgpO1xuICAgIH1cbn1cblpvZE51bWJlci5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROdW1iZXIoe1xuICAgICAgICBjaGVja3M6IFtdLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcixcbiAgICAgICAgY29lcmNlOiBwYXJhbXM/LmNvZXJjZSB8fCBmYWxzZSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RCaWdJbnQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5taW4gPSB0aGlzLmd0ZTtcbiAgICAgICAgdGhpcy5tYXggPSB0aGlzLmx0ZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlucHV0LmRhdGEgPSBCaWdJbnQoaW5wdXQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldEludmFsaWRJbnB1dChpbnB1dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5iaWdpbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRJbnZhbGlkSW5wdXQoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjdHggPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBjaGVjay5pbmNsdXNpdmUgPyBpbnB1dC5kYXRhIDwgY2hlY2sudmFsdWUgOiBpbnB1dC5kYXRhIDw9IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJiaWdpbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBjaGVjay5pbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGNoZWNrLmluY2x1c2l2ZSA/IGlucHV0LmRhdGEgPiBjaGVjay52YWx1ZSA6IGlucHV0LmRhdGEgPj0gY2hlY2sudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHRvb0JpZykge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogY2hlY2suaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEgJSBjaGVjay52YWx1ZSAhPT0gQmlnSW50KDApKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2YsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZU9mOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgICB9XG4gICAgX2dldEludmFsaWRJbnB1dChpbnB1dCkge1xuICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmJpZ2ludCxcbiAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbiAgICBndGUodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIiwgdmFsdWUsIHRydWUsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIGd0KHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsIHZhbHVlLCBmYWxzZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgbHRlKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsIHZhbHVlLCB0cnVlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBsdCh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCB2YWx1ZSwgZmFsc2UsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIHNldExpbWl0KGtpbmQsIHZhbHVlLCBpbmNsdXNpdmUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RCaWdJbnQoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLmNoZWNrcyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9hZGRDaGVjayhjaGVjaykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEJpZ0ludCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuZWdhdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBub25wb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vbm5lZ2F0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICB2YWx1ZTogQmlnSW50KDApLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbXVsdGlwbGVPZih2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtdWx0aXBsZU9mXCIsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCBtaW5WYWx1ZSgpIHtcbiAgICAgICAgbGV0IG1pbiA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKVxuICAgICAgICAgICAgICAgICAgICBtaW4gPSBjaC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBnZXQgbWF4VmFsdWUoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG59XG5ab2RCaWdJbnQuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQmlnSW50KHtcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCaWdJbnQsXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgPz8gZmFsc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kQm9vbGVhbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBpZiAodGhpcy5fZGVmLmNvZXJjZSkge1xuICAgICAgICAgICAgaW5wdXQuZGF0YSA9IEJvb2xlYW4oaW5wdXQuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5ib29sZWFuKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmJvb2xlYW4sXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxufVxuWm9kQm9vbGVhbi5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RCb29sZWFuKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuLFxuICAgICAgICBjb2VyY2U6IHBhcmFtcz8uY29lcmNlIHx8IGZhbHNlLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZERhdGUgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlZi5jb2VyY2UpIHtcbiAgICAgICAgICAgIGlucHV0LmRhdGEgPSBuZXcgRGF0ZShpbnB1dC5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuZGF0ZSxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oaW5wdXQuZGF0YS5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9kYXRlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0dXMgPSBuZXcgUGFyc2VTdGF0dXMoKTtcbiAgICAgICAgbGV0IGN0eCA9IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2hlY2sua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhLmdldFRpbWUoKSA8IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YS5nZXRUaW1lKCkgPiBjaGVjay52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihjaGVjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBEYXRlKGlucHV0LmRhdGEuZ2V0VGltZSgpKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2FkZENoZWNrKGNoZWNrKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kRGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtaW4obWluRGF0ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtaW5cIixcbiAgICAgICAgICAgIHZhbHVlOiBtaW5EYXRlLmdldFRpbWUoKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhEYXRlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IG1heERhdGUuZ2V0VGltZSgpLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgICAgIGxldCBtaW4gPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1pbiA9PT0gbnVsbCB8fCBjaC52YWx1ZSA+IG1pbilcbiAgICAgICAgICAgICAgICAgICAgbWluID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbiAhPSBudWxsID8gbmV3IERhdGUobWluKSA6IG51bGw7XG4gICAgfVxuICAgIGdldCBtYXhEYXRlKCkge1xuICAgICAgICBsZXQgbWF4ID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGlmIChtYXggPT09IG51bGwgfHwgY2gudmFsdWUgPCBtYXgpXG4gICAgICAgICAgICAgICAgICAgIG1heCA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXggIT0gbnVsbCA/IG5ldyBEYXRlKG1heCkgOiBudWxsO1xuICAgIH1cbn1cblpvZERhdGUuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kRGF0ZSh7XG4gICAgICAgIGNoZWNrczogW10sXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgfHwgZmFsc2UsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGF0ZSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RTeW1ib2wgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zeW1ib2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuc3ltYm9sLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZFN5bWJvbC5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RTeW1ib2woe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFN5bWJvbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RVbmRlZmluZWQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZFVuZGVmaW5lZC5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmRlZmluZWQoe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuZGVmaW5lZCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2ROdWxsIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubnVsbCkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5udWxsLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZE51bGwuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTnVsbCh7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVsbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RBbnkgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgLy8gdG8gcHJldmVudCBpbnN0YW5jZXMgb2Ygb3RoZXIgY2xhc3NlcyBmcm9tIGV4dGVuZGluZyBab2RBbnkuIHRoaXMgY2F1c2VzIGlzc3VlcyB3aXRoIGNhdGNoYWxsIGluIFpvZE9iamVjdC5cbiAgICAgICAgdGhpcy5fYW55ID0gdHJ1ZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG59XG5ab2RBbnkuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQW55KHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RBbnksXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kVW5rbm93biBleHRlbmRzIFpvZFR5cGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICAvLyByZXF1aXJlZFxuICAgICAgICB0aGlzLl91bmtub3duID0gdHJ1ZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG59XG5ab2RVbmtub3duLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFVua25vd24oe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVua25vd24sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kTmV2ZXIgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5uZXZlcixcbiAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbn1cblpvZE5ldmVyLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5ldmVyKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROZXZlcixcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RWb2lkIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnZvaWQsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxufVxuWm9kVm9pZC5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RWb2lkKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RWb2lkLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZEFycmF5IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4LCBzdGF0dXMgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGRlZiA9IHRoaXMuX2RlZjtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmFycmF5LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5leGFjdExlbmd0aCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgdG9vQmlnID0gY3R4LmRhdGEubGVuZ3RoID4gZGVmLmV4YWN0TGVuZ3RoLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBjdHguZGF0YS5sZW5ndGggPCBkZWYuZXhhY3RMZW5ndGgudmFsdWU7XG4gICAgICAgICAgICBpZiAodG9vQmlnIHx8IHRvb1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IHRvb0JpZyA/IFpvZElzc3VlQ29kZS50b29fYmlnIDogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgbWluaW11bTogKHRvb1NtYWxsID8gZGVmLmV4YWN0TGVuZ3RoLnZhbHVlIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogKHRvb0JpZyA/IGRlZi5leGFjdExlbmd0aC52YWx1ZSA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZGVmLmV4YWN0TGVuZ3RoLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5taW5MZW5ndGggIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChjdHguZGF0YS5sZW5ndGggPCBkZWYubWluTGVuZ3RoLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGRlZi5taW5MZW5ndGgudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5taW5MZW5ndGgubWVzc2FnZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmLm1heExlbmd0aCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGN0eC5kYXRhLmxlbmd0aCA+IGRlZi5tYXhMZW5ndGgudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW06IGRlZi5tYXhMZW5ndGgudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5tYXhMZW5ndGgubWVzc2FnZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5jdHguZGF0YV0ubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZi50eXBlLl9wYXJzZUFzeW5jKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSkpO1xuICAgICAgICAgICAgfSkpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5jdHguZGF0YV0ubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVmLnR5cGUuX3BhcnNlU3luYyhuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgaXRlbSwgY3R4LnBhdGgsIGkpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0KTtcbiAgICB9XG4gICAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZTtcbiAgICB9XG4gICAgbWluKG1pbkxlbmd0aCwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIG1pbkxlbmd0aDogeyB2YWx1ZTogbWluTGVuZ3RoLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhMZW5ndGgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RBcnJheSh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBtYXhMZW5ndGg6IHsgdmFsdWU6IG1heExlbmd0aCwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsZW5ndGgobGVuLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgZXhhY3RMZW5ndGg6IHsgdmFsdWU6IGxlbiwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBub25lbXB0eShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbigxLCBtZXNzYWdlKTtcbiAgICB9XG59XG5ab2RBcnJheS5jcmVhdGUgPSAoc2NoZW1hLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgICAgdHlwZTogc2NoZW1hLFxuICAgICAgICBtaW5MZW5ndGg6IG51bGwsXG4gICAgICAgIG1heExlbmd0aDogbnVsbCxcbiAgICAgICAgZXhhY3RMZW5ndGg6IG51bGwsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQXJyYXksXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5mdW5jdGlvbiBkZWVwUGFydGlhbGlmeShzY2hlbWEpIHtcbiAgICBpZiAoc2NoZW1hIGluc3RhbmNlb2YgWm9kT2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IG5ld1NoYXBlID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYS5zaGFwZSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSBzY2hlbWEuc2hhcGVba2V5XTtcbiAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSBab2RPcHRpb25hbC5jcmVhdGUoZGVlcFBhcnRpYWxpZnkoZmllbGRTY2hlbWEpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi5zY2hlbWEuX2RlZixcbiAgICAgICAgICAgIHNoYXBlOiAoKSA9PiBuZXdTaGFwZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZEFycmF5KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xuICAgICAgICAgICAgLi4uc2NoZW1hLl9kZWYsXG4gICAgICAgICAgICB0eXBlOiBkZWVwUGFydGlhbGlmeShzY2hlbWEuZWxlbWVudCksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2RPcHRpb25hbCkge1xuICAgICAgICByZXR1cm4gWm9kT3B0aW9uYWwuY3JlYXRlKGRlZXBQYXJ0aWFsaWZ5KHNjaGVtYS51bndyYXAoKSkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2ROdWxsYWJsZSkge1xuICAgICAgICByZXR1cm4gWm9kTnVsbGFibGUuY3JlYXRlKGRlZXBQYXJ0aWFsaWZ5KHNjaGVtYS51bndyYXAoKSkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2RUdXBsZSkge1xuICAgICAgICByZXR1cm4gWm9kVHVwbGUuY3JlYXRlKHNjaGVtYS5pdGVtcy5tYXAoKGl0ZW0pID0+IGRlZXBQYXJ0aWFsaWZ5KGl0ZW0pKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RPYmplY3QgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5fY2FjaGVkID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIEluIG1vc3QgY2FzZXMsIHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCAtIHVua25vd24gcHJvcGVydGllcyBhcmUgbm93IHNpbGVudGx5IHN0cmlwcGVkLlxuICAgICAgICAgKiBJZiB5b3Ugd2FudCB0byBwYXNzIHRocm91Z2ggdW5rbm93biBwcm9wZXJ0aWVzLCB1c2UgYC5wYXNzdGhyb3VnaCgpYCBpbnN0ZWFkLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ub25zdHJpY3QgPSB0aGlzLnBhc3N0aHJvdWdoO1xuICAgICAgICAvLyBleHRlbmQ8XG4gICAgICAgIC8vICAgQXVnbWVudGF0aW9uIGV4dGVuZHMgWm9kUmF3U2hhcGUsXG4gICAgICAgIC8vICAgTmV3T3V0cHV0IGV4dGVuZHMgdXRpbC5mbGF0dGVuPHtcbiAgICAgICAgLy8gICAgIFtrIGluIGtleW9mIEF1Z21lbnRhdGlvbiB8IGtleW9mIE91dHB1dF06IGsgZXh0ZW5kcyBrZXlvZiBBdWdtZW50YXRpb25cbiAgICAgICAgLy8gICAgICAgPyBBdWdtZW50YXRpb25ba11bXCJfb3V0cHV0XCJdXG4gICAgICAgIC8vICAgICAgIDogayBleHRlbmRzIGtleW9mIE91dHB1dFxuICAgICAgICAvLyAgICAgICA/IE91dHB1dFtrXVxuICAgICAgICAvLyAgICAgICA6IG5ldmVyO1xuICAgICAgICAvLyAgIH0+LFxuICAgICAgICAvLyAgIE5ld0lucHV0IGV4dGVuZHMgdXRpbC5mbGF0dGVuPHtcbiAgICAgICAgLy8gICAgIFtrIGluIGtleW9mIEF1Z21lbnRhdGlvbiB8IGtleW9mIElucHV0XTogayBleHRlbmRzIGtleW9mIEF1Z21lbnRhdGlvblxuICAgICAgICAvLyAgICAgICA/IEF1Z21lbnRhdGlvbltrXVtcIl9pbnB1dFwiXVxuICAgICAgICAvLyAgICAgICA6IGsgZXh0ZW5kcyBrZXlvZiBJbnB1dFxuICAgICAgICAvLyAgICAgICA/IElucHV0W2tdXG4gICAgICAgIC8vICAgICAgIDogbmV2ZXI7XG4gICAgICAgIC8vICAgfT5cbiAgICAgICAgLy8gPihcbiAgICAgICAgLy8gICBhdWdtZW50YXRpb246IEF1Z21lbnRhdGlvblxuICAgICAgICAvLyApOiBab2RPYmplY3Q8XG4gICAgICAgIC8vICAgZXh0ZW5kU2hhcGU8VCwgQXVnbWVudGF0aW9uPixcbiAgICAgICAgLy8gICBVbmtub3duS2V5cyxcbiAgICAgICAgLy8gICBDYXRjaGFsbCxcbiAgICAgICAgLy8gICBOZXdPdXRwdXQsXG4gICAgICAgIC8vICAgTmV3SW5wdXRcbiAgICAgICAgLy8gPiB7XG4gICAgICAgIC8vICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAvLyAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAvLyAgICAgc2hhcGU6ICgpID0+ICh7XG4gICAgICAgIC8vICAgICAgIC4uLnRoaXMuX2RlZi5zaGFwZSgpLFxuICAgICAgICAvLyAgICAgICAuLi5hdWdtZW50YXRpb24sXG4gICAgICAgIC8vICAgICB9KSxcbiAgICAgICAgLy8gICB9KSBhcyBhbnk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSBgLmV4dGVuZGAgaW5zdGVhZFxuICAgICAgICAgKiAgKi9cbiAgICAgICAgdGhpcy5hdWdtZW50ID0gdGhpcy5leHRlbmQ7XG4gICAgfVxuICAgIF9nZXRDYWNoZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jYWNoZWQgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkO1xuICAgICAgICBjb25zdCBzaGFwZSA9IHRoaXMuX2RlZi5zaGFwZSgpO1xuICAgICAgICBjb25zdCBrZXlzID0gdXRpbC5vYmplY3RLZXlzKHNoYXBlKTtcbiAgICAgICAgdGhpcy5fY2FjaGVkID0geyBzaGFwZSwga2V5cyB9O1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkO1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5vYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgY29uc3QgeyBzaGFwZSwga2V5czogc2hhcGVLZXlzIH0gPSB0aGlzLl9nZXRDYWNoZWQoKTtcbiAgICAgICAgY29uc3QgZXh0cmFLZXlzID0gW107XG4gICAgICAgIGlmICghKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIFpvZE5ldmVyICYmIHRoaXMuX2RlZi51bmtub3duS2V5cyA9PT0gXCJzdHJpcFwiKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gY3R4LmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNoYXBlS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhS2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhaXJzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHNoYXBlS2V5cykge1xuICAgICAgICAgICAgY29uc3Qga2V5VmFsaWRhdG9yID0gc2hhcGVba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY3R4LmRhdGFba2V5XTtcbiAgICAgICAgICAgIHBhaXJzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGtleSB9LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBrZXlWYWxpZGF0b3IuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCB2YWx1ZSwgY3R4LnBhdGgsIGtleSkpLFxuICAgICAgICAgICAgICAgIGFsd2F5c1NldDoga2V5IGluIGN0eC5kYXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIFpvZE5ldmVyKSB7XG4gICAgICAgICAgICBjb25zdCB1bmtub3duS2V5cyA9IHRoaXMuX2RlZi51bmtub3duS2V5cztcbiAgICAgICAgICAgIGlmICh1bmtub3duS2V5cyA9PT0gXCJwYXNzdGhyb3VnaFwiKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgZXh0cmFLZXlzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhaXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZToga2V5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGN0eC5kYXRhW2tleV0gfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodW5rbm93bktleXMgPT09IFwic3RyaWN0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmFLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudW5yZWNvZ25pemVkX2tleXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzOiBleHRyYUtleXMsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh1bmtub3duS2V5cyA9PT0gXCJzdHJpcFwiKSB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIFpvZE9iamVjdCBlcnJvcjogaW52YWxpZCB1bmtub3duS2V5cyB2YWx1ZS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJ1biBjYXRjaGFsbCB2YWxpZGF0aW9uXG4gICAgICAgICAgICBjb25zdCBjYXRjaGFsbCA9IHRoaXMuX2RlZi5jYXRjaGFsbDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4dHJhS2V5cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY3R4LmRhdGFba2V5XTtcbiAgICAgICAgICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZToga2V5IH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjYXRjaGFsbC5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIHZhbHVlLCBjdHgucGF0aCwga2V5KSAvLywgY3R4LmNoaWxkKGtleSksIHZhbHVlLCBnZXRQYXJzZWRUeXBlKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBhbHdheXNTZXQ6IGtleSBpbiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgICAgICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN5bmNQYWlycyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBwYWlyLmtleTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBwYWlyLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzeW5jUGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5c1NldDogcGFpci5hbHdheXNTZXQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3luY1BhaXJzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoc3luY1BhaXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHN5bmNQYWlycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBwYWlycyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnNoYXBlKCk7XG4gICAgfVxuICAgIHN0cmljdChtZXNzYWdlKSB7XG4gICAgICAgIGVycm9yVXRpbC5lcnJUb09iajtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgdW5rbm93bktleXM6IFwic3RyaWN0XCIsXG4gICAgICAgICAgICAuLi4obWVzc2FnZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWFwOiAoaXNzdWUsIGN0eCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdEVycm9yID0gdGhpcy5fZGVmLmVycm9yTWFwPy4oaXNzdWUsIGN0eCkubWVzc2FnZSA/PyBjdHguZGVmYXVsdEVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLmNvZGUgPT09IFwidW5yZWNvZ25pemVkX2tleXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkubWVzc2FnZSA/PyBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZGVmYXVsdEVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdHJpcCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgdW5rbm93bktleXM6IFwic3RyaXBcIixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHBhc3N0aHJvdWdoKCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICB1bmtub3duS2V5czogXCJwYXNzdGhyb3VnaFwiLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gY29uc3QgQXVnbWVudEZhY3RvcnkgPVxuICAgIC8vICAgPERlZiBleHRlbmRzIFpvZE9iamVjdERlZj4oZGVmOiBEZWYpID0+XG4gICAgLy8gICA8QXVnbWVudGF0aW9uIGV4dGVuZHMgWm9kUmF3U2hhcGU+KFxuICAgIC8vICAgICBhdWdtZW50YXRpb246IEF1Z21lbnRhdGlvblxuICAgIC8vICAgKTogWm9kT2JqZWN0PFxuICAgIC8vICAgICBleHRlbmRTaGFwZTxSZXR1cm5UeXBlPERlZltcInNoYXBlXCJdPiwgQXVnbWVudGF0aW9uPixcbiAgICAvLyAgICAgRGVmW1widW5rbm93bktleXNcIl0sXG4gICAgLy8gICAgIERlZltcImNhdGNoYWxsXCJdXG4gICAgLy8gICA+ID0+IHtcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgIC8vICAgICAgIC4uLmRlZixcbiAgICAvLyAgICAgICBzaGFwZTogKCkgPT4gKHtcbiAgICAvLyAgICAgICAgIC4uLmRlZi5zaGFwZSgpLFxuICAgIC8vICAgICAgICAgLi4uYXVnbWVudGF0aW9uLFxuICAgIC8vICAgICAgIH0pLFxuICAgIC8vICAgICB9KSBhcyBhbnk7XG4gICAgLy8gICB9O1xuICAgIGV4dGVuZChhdWdtZW50YXRpb24pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLnNoYXBlKCksXG4gICAgICAgICAgICAgICAgLi4uYXVnbWVudGF0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcmlvciB0byB6b2RAMS4wLjEyIHRoZXJlIHdhcyBhIGJ1ZyBpbiB0aGVcbiAgICAgKiBpbmZlcnJlZCB0eXBlIG9mIG1lcmdlZCBvYmplY3RzLiBQbGVhc2VcbiAgICAgKiB1cGdyYWRlIGlmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGlzc3Vlcy5cbiAgICAgKi9cbiAgICBtZXJnZShtZXJnaW5nKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZCA9IG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAgICAgICAgIGNhdGNoYWxsOiBtZXJnaW5nLl9kZWYuY2F0Y2hhbGwsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9kZWYuc2hhcGUoKSxcbiAgICAgICAgICAgICAgICAuLi5tZXJnaW5nLl9kZWYuc2hhcGUoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgIH1cbiAgICAvLyBtZXJnZTxcbiAgICAvLyAgIEluY29taW5nIGV4dGVuZHMgQW55Wm9kT2JqZWN0LFxuICAgIC8vICAgQXVnbWVudGF0aW9uIGV4dGVuZHMgSW5jb21pbmdbXCJzaGFwZVwiXSxcbiAgICAvLyAgIE5ld091dHB1dCBleHRlbmRzIHtcbiAgICAvLyAgICAgW2sgaW4ga2V5b2YgQXVnbWVudGF0aW9uIHwga2V5b2YgT3V0cHV0XTogayBleHRlbmRzIGtleW9mIEF1Z21lbnRhdGlvblxuICAgIC8vICAgICAgID8gQXVnbWVudGF0aW9uW2tdW1wiX291dHB1dFwiXVxuICAgIC8vICAgICAgIDogayBleHRlbmRzIGtleW9mIE91dHB1dFxuICAgIC8vICAgICAgID8gT3V0cHV0W2tdXG4gICAgLy8gICAgICAgOiBuZXZlcjtcbiAgICAvLyAgIH0sXG4gICAgLy8gICBOZXdJbnB1dCBleHRlbmRzIHtcbiAgICAvLyAgICAgW2sgaW4ga2V5b2YgQXVnbWVudGF0aW9uIHwga2V5b2YgSW5wdXRdOiBrIGV4dGVuZHMga2V5b2YgQXVnbWVudGF0aW9uXG4gICAgLy8gICAgICAgPyBBdWdtZW50YXRpb25ba11bXCJfaW5wdXRcIl1cbiAgICAvLyAgICAgICA6IGsgZXh0ZW5kcyBrZXlvZiBJbnB1dFxuICAgIC8vICAgICAgID8gSW5wdXRba11cbiAgICAvLyAgICAgICA6IG5ldmVyO1xuICAgIC8vICAgfVxuICAgIC8vID4oXG4gICAgLy8gICBtZXJnaW5nOiBJbmNvbWluZ1xuICAgIC8vICk6IFpvZE9iamVjdDxcbiAgICAvLyAgIGV4dGVuZFNoYXBlPFQsIFJldHVyblR5cGU8SW5jb21pbmdbXCJfZGVmXCJdW1wic2hhcGVcIl0+PixcbiAgICAvLyAgIEluY29taW5nW1wiX2RlZlwiXVtcInVua25vd25LZXlzXCJdLFxuICAgIC8vICAgSW5jb21pbmdbXCJfZGVmXCJdW1wiY2F0Y2hhbGxcIl0sXG4gICAgLy8gICBOZXdPdXRwdXQsXG4gICAgLy8gICBOZXdJbnB1dFxuICAgIC8vID4ge1xuICAgIC8vICAgY29uc3QgbWVyZ2VkOiBhbnkgPSBuZXcgWm9kT2JqZWN0KHtcbiAgICAvLyAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAvLyAgICAgY2F0Y2hhbGw6IG1lcmdpbmcuX2RlZi5jYXRjaGFsbCxcbiAgICAvLyAgICAgc2hhcGU6ICgpID0+XG4gICAgLy8gICAgICAgb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyh0aGlzLl9kZWYuc2hhcGUoKSwgbWVyZ2luZy5fZGVmLnNoYXBlKCkpLFxuICAgIC8vICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcbiAgICAvLyAgIH0pIGFzIGFueTtcbiAgICAvLyAgIHJldHVybiBtZXJnZWQ7XG4gICAgLy8gfVxuICAgIHNldEtleShrZXksIHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdWdtZW50KHsgW2tleV06IHNjaGVtYSB9KTtcbiAgICB9XG4gICAgLy8gbWVyZ2U8SW5jb21pbmcgZXh0ZW5kcyBBbnlab2RPYmplY3Q+KFxuICAgIC8vICAgbWVyZ2luZzogSW5jb21pbmdcbiAgICAvLyApOiAvL1pvZE9iamVjdDxUICYgSW5jb21pbmdbXCJfc2hhcGVcIl0sIFVua25vd25LZXlzLCBDYXRjaGFsbD4gPSAobWVyZ2luZykgPT4ge1xuICAgIC8vIFpvZE9iamVjdDxcbiAgICAvLyAgIGV4dGVuZFNoYXBlPFQsIFJldHVyblR5cGU8SW5jb21pbmdbXCJfZGVmXCJdW1wic2hhcGVcIl0+PixcbiAgICAvLyAgIEluY29taW5nW1wiX2RlZlwiXVtcInVua25vd25LZXlzXCJdLFxuICAgIC8vICAgSW5jb21pbmdbXCJfZGVmXCJdW1wiY2F0Y2hhbGxcIl1cbiAgICAvLyA+IHtcbiAgICAvLyAgIC8vIGNvbnN0IG1lcmdlZFNoYXBlID0gb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyhcbiAgICAvLyAgIC8vICAgdGhpcy5fZGVmLnNoYXBlKCksXG4gICAgLy8gICAvLyAgIG1lcmdpbmcuX2RlZi5zaGFwZSgpXG4gICAgLy8gICAvLyApO1xuICAgIC8vICAgY29uc3QgbWVyZ2VkOiBhbnkgPSBuZXcgWm9kT2JqZWN0KHtcbiAgICAvLyAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAvLyAgICAgY2F0Y2hhbGw6IG1lcmdpbmcuX2RlZi5jYXRjaGFsbCxcbiAgICAvLyAgICAgc2hhcGU6ICgpID0+XG4gICAgLy8gICAgICAgb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyh0aGlzLl9kZWYuc2hhcGUoKSwgbWVyZ2luZy5fZGVmLnNoYXBlKCkpLFxuICAgIC8vICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcbiAgICAvLyAgIH0pIGFzIGFueTtcbiAgICAvLyAgIHJldHVybiBtZXJnZWQ7XG4gICAgLy8gfVxuICAgIGNhdGNoYWxsKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNhdGNoYWxsOiBpbmRleCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHBpY2sobWFzaykge1xuICAgICAgICBjb25zdCBzaGFwZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB1dGlsLm9iamVjdEtleXMobWFzaykpIHtcbiAgICAgICAgICAgIGlmIChtYXNrW2tleV0gJiYgdGhpcy5zaGFwZVtrZXldKSB7XG4gICAgICAgICAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvbWl0KG1hc2spIHtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKSB7XG4gICAgICAgICAgICBpZiAoIW1hc2tba2V5XSkge1xuICAgICAgICAgICAgICAgIHNoYXBlW2tleV0gPSB0aGlzLnNoYXBlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+IHNoYXBlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBkZWVwUGFydGlhbCgpIHtcbiAgICAgICAgcmV0dXJuIGRlZXBQYXJ0aWFsaWZ5KHRoaXMpO1xuICAgIH1cbiAgICBwYXJ0aWFsKG1hc2spIHtcbiAgICAgICAgY29uc3QgbmV3U2hhcGUgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgICAgIGlmIChtYXNrICYmICFtYXNrW2tleV0pIHtcbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gZmllbGRTY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gZmllbGRTY2hlbWEub3B0aW9uYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gbmV3U2hhcGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXF1aXJlZChtYXNrKSB7XG4gICAgICAgIGNvbnN0IG5ld1NoYXBlID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSkge1xuICAgICAgICAgICAgaWYgKG1hc2sgJiYgIW1hc2tba2V5XSkge1xuICAgICAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSB0aGlzLnNoYXBlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgICAgICAgICBsZXQgbmV3RmllbGQgPSBmaWVsZFNjaGVtYTtcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV3RmllbGQgaW5zdGFuY2VvZiBab2RPcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGaWVsZCA9IG5ld0ZpZWxkLl9kZWYuaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gbmV3RmllbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+IG5ld1NoYXBlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAga2V5b2YoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVab2RFbnVtKHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSk7XG4gICAgfVxufVxuWm9kT2JqZWN0LmNyZWF0ZSA9IChzaGFwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICAgIHVua25vd25LZXlzOiBcInN0cmlwXCIsXG4gICAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5ab2RPYmplY3Quc3RyaWN0Q3JlYXRlID0gKHNoYXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgIHNoYXBlOiAoKSA9PiBzaGFwZSxcbiAgICAgICAgdW5rbm93bktleXM6IFwic3RyaWN0XCIsXG4gICAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5ab2RPYmplY3QubGF6eWNyZWF0ZSA9IChzaGFwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICBzaGFwZSxcbiAgICAgICAgdW5rbm93bktleXM6IFwic3RyaXBcIixcbiAgICAgICAgY2F0Y2hhbGw6IFpvZE5ldmVyLmNyZWF0ZSgpLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RVbmlvbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2RlZi5vcHRpb25zO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVSZXN1bHRzKHJlc3VsdHMpIHtcbiAgICAgICAgICAgIC8vIHJldHVybiBmaXJzdCBpc3N1ZS1mcmVlIHZhbGlkYXRpb24gaWYgaXQgZXhpc3RzXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5yZXN1bHQuc3RhdHVzID09PSBcInZhbGlkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCBpc3N1ZXMgZnJvbSBkaXJ0eSBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgY3R4LmNvbW1vbi5pc3N1ZXMucHVzaCguLi5yZXN1bHQuY3R4LmNvbW1vbi5pc3N1ZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByZXR1cm4gaW52YWxpZFxuICAgICAgICAgICAgY29uc3QgdW5pb25FcnJvcnMgPSByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiBuZXcgWm9kRXJyb3IocmVzdWx0LmN0eC5jb21tb24uaXNzdWVzKSk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbixcbiAgICAgICAgICAgICAgICB1bmlvbkVycm9ycyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcHRpb25zLm1hcChhc3luYyAob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRDdHggPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmN0eCxcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jdHguY29tbW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBhd2FpdCBvcHRpb24uX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY2hpbGRDdHgsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBjdHg6IGNoaWxkQ3R4LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSkudGhlbihoYW5kbGVSZXN1bHRzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBkaXJ0eSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGlzc3VlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ3R4ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jdHgsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3R4LmNvbW1vbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdGlvbi5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGNoaWxkQ3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInZhbGlkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiICYmICFkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBkaXJ0eSA9IHsgcmVzdWx0LCBjdHg6IGNoaWxkQ3R4IH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjaGlsZEN0eC5jb21tb24uaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpc3N1ZXMucHVzaChjaGlsZEN0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKC4uLmRpcnR5LmN0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlydHkucmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdW5pb25FcnJvcnMgPSBpc3N1ZXMubWFwKChpc3N1ZXMpID0+IG5ldyBab2RFcnJvcihpc3N1ZXMpKTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uLFxuICAgICAgICAgICAgICAgIHVuaW9uRXJyb3JzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zO1xuICAgIH1cbn1cblpvZFVuaW9uLmNyZWF0ZSA9ICh0eXBlcywgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmlvbih7XG4gICAgICAgIG9wdGlvbnM6IHR5cGVzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuaW9uLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZERpc2NyaW1pbmF0ZWRVbmlvbiAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmNvbnN0IGdldERpc2NyaW1pbmF0b3IgPSAodHlwZSkgPT4ge1xuICAgIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTGF6eSkge1xuICAgICAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRvcih0eXBlLnNjaGVtYSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RFZmZlY3RzKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNjcmltaW5hdG9yKHR5cGUuaW5uZXJUeXBlKCkpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTGl0ZXJhbCkge1xuICAgICAgICByZXR1cm4gW3R5cGUudmFsdWVdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kRW51bSkge1xuICAgICAgICByZXR1cm4gdHlwZS5vcHRpb25zO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTmF0aXZlRW51bSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYmFuL2JhblxuICAgICAgICByZXR1cm4gdXRpbC5vYmplY3RWYWx1ZXModHlwZS5lbnVtKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZERlZmF1bHQpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc2NyaW1pbmF0b3IodHlwZS5fZGVmLmlubmVyVHlwZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RVbmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTnVsbCkge1xuICAgICAgICByZXR1cm4gW251bGxdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kT3B0aW9uYWwpIHtcbiAgICAgICAgcmV0dXJuIFt1bmRlZmluZWQsIC4uLmdldERpc2NyaW1pbmF0b3IodHlwZS51bndyYXAoKSldO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTnVsbGFibGUpIHtcbiAgICAgICAgcmV0dXJuIFtudWxsLCAuLi5nZXREaXNjcmltaW5hdG9yKHR5cGUudW53cmFwKCkpXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZEJyYW5kZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc2NyaW1pbmF0b3IodHlwZS51bndyYXAoKSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RSZWFkb25seSkge1xuICAgICAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRvcih0eXBlLnVud3JhcCgpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZENhdGNoKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNjcmltaW5hdG9yKHR5cGUuX2RlZi5pbm5lclR5cGUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn07XG5leHBvcnQgY2xhc3MgWm9kRGlzY3JpbWluYXRlZFVuaW9uIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm9iamVjdCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSB0aGlzLmRpc2NyaW1pbmF0b3I7XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZSA9IGN0eC5kYXRhW2Rpc2NyaW1pbmF0b3JdO1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnNNYXAuZ2V0KGRpc2NyaW1pbmF0b3JWYWx1ZSk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IEFycmF5LmZyb20odGhpcy5vcHRpb25zTWFwLmtleXMoKSksXG4gICAgICAgICAgICAgICAgcGF0aDogW2Rpc2NyaW1pbmF0b3JdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb24uX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgZGlzY3JpbWluYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5kaXNjcmltaW5hdG9yO1xuICAgIH1cbiAgICBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zO1xuICAgIH1cbiAgICBnZXQgb3B0aW9uc01hcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zTWFwO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgY29uc3RydWN0b3Igb2YgdGhlIGRpc2NyaW1pbmF0ZWQgdW5pb24gc2NoZW1hLiBJdHMgYmVoYXZpb3VyIGlzIHZlcnkgc2ltaWxhciB0byB0aGF0IG9mIHRoZSBub3JtYWwgei51bmlvbigpIGNvbnN0cnVjdG9yLlxuICAgICAqIEhvd2V2ZXIsIGl0IG9ubHkgYWxsb3dzIGEgdW5pb24gb2Ygb2JqZWN0cywgYWxsIG9mIHdoaWNoIG5lZWQgdG8gc2hhcmUgYSBkaXNjcmltaW5hdG9yIHByb3BlcnR5LiBUaGlzIHByb3BlcnR5IG11c3RcbiAgICAgKiBoYXZlIGEgZGlmZmVyZW50IHZhbHVlIGZvciBlYWNoIG9iamVjdCBpbiB0aGUgdW5pb24uXG4gICAgICogQHBhcmFtIGRpc2NyaW1pbmF0b3IgdGhlIG5hbWUgb2YgdGhlIGRpc2NyaW1pbmF0b3IgcHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdHlwZXMgYW4gYXJyYXkgb2Ygb2JqZWN0IHNjaGVtYXNcbiAgICAgKiBAcGFyYW0gcGFyYW1zXG4gICAgICovXG4gICAgc3RhdGljIGNyZWF0ZShkaXNjcmltaW5hdG9yLCBvcHRpb25zLCBwYXJhbXMpIHtcbiAgICAgICAgLy8gR2V0IGFsbCB0aGUgdmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZXNcbiAgICAgICAgY29uc3Qgb3B0aW9uc01hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgLy8gdHJ5IHtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZXMgPSBnZXREaXNjcmltaW5hdG9yKHR5cGUuc2hhcGVbZGlzY3JpbWluYXRvcl0pO1xuICAgICAgICAgICAgaWYgKCFkaXNjcmltaW5hdG9yVmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQSBkaXNjcmltaW5hdG9yIHZhbHVlIGZvciBrZXkgXFxgJHtkaXNjcmltaW5hdG9yfVxcYCBjb3VsZCBub3QgYmUgZXh0cmFjdGVkIGZyb20gYWxsIHNjaGVtYSBvcHRpb25zYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGRpc2NyaW1pbmF0b3JWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uc01hcC5oYXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY3JpbWluYXRvciBwcm9wZXJ0eSAke1N0cmluZyhkaXNjcmltaW5hdG9yKX0gaGFzIGR1cGxpY2F0ZSB2YWx1ZSAke1N0cmluZyh2YWx1ZSl9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnNNYXAuc2V0KHZhbHVlLCB0eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZERpc2NyaW1pbmF0ZWRVbmlvbih7XG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERpc2NyaW1pbmF0ZWRVbmlvbixcbiAgICAgICAgICAgIGRpc2NyaW1pbmF0b3IsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9uc01hcCxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gbWVyZ2VWYWx1ZXMoYSwgYikge1xuICAgIGNvbnN0IGFUeXBlID0gZ2V0UGFyc2VkVHlwZShhKTtcbiAgICBjb25zdCBiVHlwZSA9IGdldFBhcnNlZFR5cGUoYik7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IGEgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYVR5cGUgPT09IFpvZFBhcnNlZFR5cGUub2JqZWN0ICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLm9iamVjdCkge1xuICAgICAgICBjb25zdCBiS2V5cyA9IHV0aWwub2JqZWN0S2V5cyhiKTtcbiAgICAgICAgY29uc3Qgc2hhcmVkS2V5cyA9IHV0aWwub2JqZWN0S2V5cyhhKS5maWx0ZXIoKGtleSkgPT4gYktleXMuaW5kZXhPZihrZXkpICE9PSAtMSk7XG4gICAgICAgIGNvbnN0IG5ld09iaiA9IHsgLi4uYSwgLi4uYiB9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBzaGFyZWRLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGFba2V5XSwgYltrZXldKTtcbiAgICAgICAgICAgIGlmICghc2hhcmVkVmFsdWUudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld09ialtrZXldID0gc2hhcmVkVmFsdWUuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogbmV3T2JqIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKGFUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5ICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0FycmF5ID0gW107XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbUEgPSBhW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1CID0gYltpbmRleF07XG4gICAgICAgICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGl0ZW1BLCBpdGVtQik7XG4gICAgICAgICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdBcnJheS5wdXNoKHNoYXJlZFZhbHVlLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBuZXdBcnJheSB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChhVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5kYXRlICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLmRhdGUgJiYgK2EgPT09ICtiKSB7XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBhIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgWm9kSW50ZXJzZWN0aW9uIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGhhbmRsZVBhcnNlZCA9IChwYXJzZWRMZWZ0LCBwYXJzZWRSaWdodCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzQWJvcnRlZChwYXJzZWRMZWZ0KSB8fCBpc0Fib3J0ZWQocGFyc2VkUmlnaHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSBtZXJnZVZhbHVlcyhwYXJzZWRMZWZ0LnZhbHVlLCBwYXJzZWRSaWdodC52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIW1lcmdlZC52YWxpZCkge1xuICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNEaXJ0eShwYXJzZWRMZWZ0KSB8fCBpc0RpcnR5KHBhcnNlZFJpZ2h0KSkge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBtZXJnZWQuZGF0YSB9O1xuICAgICAgICB9O1xuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWYubGVmdC5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVmLnJpZ2h0Ll9wYXJzZUFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0pLnRoZW4oKFtsZWZ0LCByaWdodF0pID0+IGhhbmRsZVBhcnNlZChsZWZ0LCByaWdodCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVBhcnNlZCh0aGlzLl9kZWYubGVmdC5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgIH0pLCB0aGlzLl9kZWYucmlnaHQuX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5ab2RJbnRlcnNlY3Rpb24uY3JlYXRlID0gKGxlZnQsIHJpZ2h0LCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEludGVyc2VjdGlvbih7XG4gICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RJbnRlcnNlY3Rpb24sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG4vLyB0eXBlIFpvZFR1cGxlSXRlbXMgPSBbWm9kVHlwZUFueSwgLi4uWm9kVHlwZUFueVtdXTtcbmV4cG9ydCBjbGFzcyBab2RUdXBsZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYXJyYXkpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuYXJyYXksXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmRhdGEubGVuZ3RoIDwgdGhpcy5fZGVmLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICBtaW5pbXVtOiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN0ID0gdGhpcy5fZGVmLnJlc3Q7XG4gICAgICAgIGlmICghcmVzdCAmJiBjdHguZGF0YS5sZW5ndGggPiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICBtYXhpbXVtOiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtcyA9IFsuLi5jdHguZGF0YV1cbiAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5fZGVmLml0ZW1zW2l0ZW1JbmRleF0gfHwgdGhpcy5fZGVmLnJlc3Q7XG4gICAgICAgICAgICBpZiAoIXNjaGVtYSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBzY2hlbWEuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaXRlbUluZGV4KSk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiAhIXgpOyAvLyBmaWx0ZXIgbnVsbHNcbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChpdGVtcykudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBpdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pdGVtcztcbiAgICB9XG4gICAgcmVzdChyZXN0KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgcmVzdCxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuWm9kVHVwbGUuY3JlYXRlID0gKHNjaGVtYXMsIHBhcmFtcykgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWFzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJZb3UgbXVzdCBwYXNzIGFuIGFycmF5IG9mIHNjaGVtYXMgdG8gei50dXBsZShbIC4uLiBdKVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBab2RUdXBsZSh7XG4gICAgICAgIGl0ZW1zOiBzY2hlbWFzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFR1cGxlLFxuICAgICAgICByZXN0OiBudWxsLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZFJlY29yZCBleHRlbmRzIFpvZFR5cGUge1xuICAgIGdldCBrZXlTY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYua2V5VHlwZTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5vYmplY3QpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFpcnMgPSBbXTtcbiAgICAgICAgY29uc3Qga2V5VHlwZSA9IHRoaXMuX2RlZi5rZXlUeXBlO1xuICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSB0aGlzLl9kZWYudmFsdWVUeXBlO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjdHguZGF0YSkge1xuICAgICAgICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgICAga2V5OiBrZXlUeXBlLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwga2V5LCBjdHgucGF0aCwga2V5KSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlVHlwZS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGN0eC5kYXRhW2tleV0sIGN0eC5wYXRoLCBrZXkpKSxcbiAgICAgICAgICAgICAgICBhbHdheXNTZXQ6IGtleSBpbiBjdHguZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RBc3luYyhzdGF0dXMsIHBhaXJzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBwYWlycyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlO1xuICAgIH1cbiAgICBzdGF0aWMgY3JlYXRlKGZpcnN0LCBzZWNvbmQsIHRoaXJkKSB7XG4gICAgICAgIGlmIChzZWNvbmQgaW5zdGFuY2VvZiBab2RUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgICAgICAgICAga2V5VHlwZTogZmlyc3QsXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlOiBzZWNvbmQsXG4gICAgICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXG4gICAgICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyh0aGlyZCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgICAgICBrZXlUeXBlOiBab2RTdHJpbmcuY3JlYXRlKCksXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IGZpcnN0LFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHNlY29uZCksXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RNYXAgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBnZXQga2V5U2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmtleVR5cGU7XG4gICAgfVxuICAgIGdldCB2YWx1ZVNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubWFwKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm1hcCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleVR5cGUgPSB0aGlzLl9kZWYua2V5VHlwZTtcbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICAgICAgY29uc3QgcGFpcnMgPSBbLi4uY3R4LmRhdGEuZW50cmllcygpXS5tYXAoKFtrZXksIHZhbHVlXSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2V5OiBrZXlUeXBlLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwga2V5LCBjdHgucGF0aCwgW2luZGV4LCBcImtleVwiXSkpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCB2YWx1ZSwgY3R4LnBhdGgsIFtpbmRleCwgXCJ2YWx1ZVwiXSkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbE1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgcGFpci5rZXk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcGFpci52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkuc3RhdHVzID09PSBcImRpcnR5XCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsTWFwLnNldChrZXkudmFsdWUsIHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBmaW5hbE1hcCB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbE1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHBhaXIua2V5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFpci52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiZGlydHlcIiB8fCB2YWx1ZS5zdGF0dXMgPT09IFwiZGlydHlcIikge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxNYXAuc2V0KGtleS52YWx1ZSwgdmFsdWUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBmaW5hbE1hcCB9O1xuICAgICAgICB9XG4gICAgfVxufVxuWm9kTWFwLmNyZWF0ZSA9IChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTWFwKHtcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICBrZXlUeXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE1hcCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RTZXQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnNldCkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5zZXQsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWYgPSB0aGlzLl9kZWY7XG4gICAgICAgIGlmIChkZWYubWluU2l6ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGN0eC5kYXRhLnNpemUgPCBkZWYubWluU2l6ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBkZWYubWluU2l6ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5taW5TaXplLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5tYXhTaXplICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoY3R4LmRhdGEuc2l6ZSA+IGRlZi5tYXhTaXplLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBkZWYubWF4U2l6ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5tYXhTaXplLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICAgICAgZnVuY3Rpb24gZmluYWxpemVTZXQoZWxlbWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICBwYXJzZWRTZXQuYWRkKGVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBwYXJzZWRTZXQgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFsuLi5jdHguZGF0YS52YWx1ZXMoKV0ubWFwKChpdGVtLCBpKSA9PiB2YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSkpKTtcbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChlbGVtZW50cykudGhlbigoZWxlbWVudHMpID0+IGZpbmFsaXplU2V0KGVsZW1lbnRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmluYWxpemVTZXQoZWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG1pbihtaW5TaXplLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kU2V0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIG1pblNpemU6IHsgdmFsdWU6IG1pblNpemUsIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbWF4KG1heFNpemUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTZXQoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgbWF4U2l6ZTogeyB2YWx1ZTogbWF4U2l6ZSwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaXplKHNpemUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluKHNpemUsIG1lc3NhZ2UpLm1heChzaXplLCBtZXNzYWdlKTtcbiAgICB9XG4gICAgbm9uZW1wdHkobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW4oMSwgbWVzc2FnZSk7XG4gICAgfVxufVxuWm9kU2V0LmNyZWF0ZSA9ICh2YWx1ZVR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kU2V0KHtcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICBtaW5TaXplOiBudWxsLFxuICAgICAgICBtYXhTaXplOiBudWxsLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFNldCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RGdW5jdGlvbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnZhbGlkYXRlID0gdGhpcy5pbXBsZW1lbnQ7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmZ1bmN0aW9uKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmZ1bmN0aW9uLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gbWFrZUFyZ3NJc3N1ZShhcmdzLCBlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG1ha2VJc3N1ZSh7XG4gICAgICAgICAgICAgICAgZGF0YTogYXJncyxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBlcnJvck1hcHM6IFtjdHguY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCwgY3R4LnNjaGVtYUVycm9yTWFwLCBnZXRFcnJvck1hcCgpLCBkZWZhdWx0RXJyb3JNYXBdLmZpbHRlcigoeCkgPT4gISF4KSxcbiAgICAgICAgICAgICAgICBpc3N1ZURhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfYXJndW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNFcnJvcjogZXJyb3IsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VSZXR1cm5zSXNzdWUocmV0dXJucywgZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBtYWtlSXNzdWUoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHJldHVybnMsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgZXJyb3JNYXBzOiBbY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsIGN0eC5zY2hlbWFFcnJvck1hcCwgZ2V0RXJyb3JNYXAoKSwgZGVmYXVsdEVycm9yTWFwXS5maWx0ZXIoKHgpID0+ICEheCksXG4gICAgICAgICAgICAgICAgaXNzdWVEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3JldHVybl90eXBlLFxuICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlRXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IGVycm9yTWFwOiBjdHguY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCB9O1xuICAgICAgICBjb25zdCBmbiA9IGN0eC5kYXRhO1xuICAgICAgICBpZiAodGhpcy5fZGVmLnJldHVybnMgaW5zdGFuY2VvZiBab2RQcm9taXNlKSB7XG4gICAgICAgICAgICAvLyBXb3VsZCBsb3ZlIGEgd2F5IHRvIGF2b2lkIGRpc2FibGluZyB0aGlzIHJ1bGUsIGJ1dCB3ZSBuZWVkXG4gICAgICAgICAgICAvLyBhbiBhbGlhcyAodXNpbmcgYW4gYXJyb3cgZnVuY3Rpb24gd2FzIHdoYXQgY2F1c2VkIDI2NTEpLlxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgICAgICAgICBjb25zdCBtZSA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gT0soYXN5bmMgZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihbXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXJncyA9IGF3YWl0IG1lLl9kZWYuYXJncy5wYXJzZUFzeW5jKGFyZ3MsIHBhcmFtcykuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IuYWRkSXNzdWUobWFrZUFyZ3NJc3N1ZShhcmdzLCBlKSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZm4sIHRoaXMsIHBhcnNlZEFyZ3MpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFJldHVybnMgPSBhd2FpdCBtZS5fZGVmLnJldHVybnMuX2RlZi50eXBlXG4gICAgICAgICAgICAgICAgICAgIC5wYXJzZUFzeW5jKHJlc3VsdCwgcGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IuYWRkSXNzdWUobWFrZVJldHVybnNJc3N1ZShyZXN1bHQsIGUpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFJldHVybnM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdvdWxkIGxvdmUgYSB3YXkgdG8gYXZvaWQgZGlzYWJsaW5nIHRoaXMgcnVsZSwgYnV0IHdlIG5lZWRcbiAgICAgICAgICAgIC8vIGFuIGFsaWFzICh1c2luZyBhbiBhcnJvdyBmdW5jdGlvbiB3YXMgd2hhdCBjYXVzZWQgMjY1MSkuXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcbiAgICAgICAgICAgIGNvbnN0IG1lID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBPSyhmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFyZ3MgPSBtZS5fZGVmLmFyZ3Muc2FmZVBhcnNlKGFyZ3MsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRBcmdzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFpvZEVycm9yKFttYWtlQXJnc0lzc3VlKGFyZ3MsIHBhcnNlZEFyZ3MuZXJyb3IpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3QuYXBwbHkoZm4sIHRoaXMsIHBhcnNlZEFyZ3MuZGF0YSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmV0dXJucyA9IG1lLl9kZWYucmV0dXJucy5zYWZlUGFyc2UocmVzdWx0LCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgIGlmICghcGFyc2VkUmV0dXJucy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBab2RFcnJvcihbbWFrZVJldHVybnNJc3N1ZShyZXN1bHQsIHBhcnNlZFJldHVybnMuZXJyb3IpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRSZXR1cm5zLmRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJhbWV0ZXJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmFyZ3M7XG4gICAgfVxuICAgIHJldHVyblR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYucmV0dXJucztcbiAgICB9XG4gICAgYXJncyguLi5pdGVtcykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEZ1bmN0aW9uKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGFyZ3M6IFpvZFR1cGxlLmNyZWF0ZShpdGVtcykucmVzdChab2RVbmtub3duLmNyZWF0ZSgpKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybnMocmV0dXJuVHlwZSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEZ1bmN0aW9uKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIHJldHVybnM6IHJldHVyblR5cGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpbXBsZW1lbnQoZnVuYykge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZWRGdW5jID0gdGhpcy5wYXJzZShmdW5jKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZEZ1bmM7XG4gICAgfVxuICAgIHN0cmljdEltcGxlbWVudChmdW5jKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZEZ1bmMgPSB0aGlzLnBhcnNlKGZ1bmMpO1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVkRnVuYztcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZShhcmdzLCByZXR1cm5zLCBwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RGdW5jdGlvbih7XG4gICAgICAgICAgICBhcmdzOiAoYXJncyA/IGFyZ3MgOiBab2RUdXBsZS5jcmVhdGUoW10pLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSkpLFxuICAgICAgICAgICAgcmV0dXJuczogcmV0dXJucyB8fCBab2RVbmtub3duLmNyZWF0ZSgpLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RGdW5jdGlvbixcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFpvZExhenkgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBnZXQgc2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpO1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGxhenlTY2hlbWEgPSB0aGlzLl9kZWYuZ2V0dGVyKCk7XG4gICAgICAgIHJldHVybiBsYXp5U2NoZW1hLl9wYXJzZSh7IGRhdGE6IGN0eC5kYXRhLCBwYXRoOiBjdHgucGF0aCwgcGFyZW50OiBjdHggfSk7XG4gICAgfVxufVxuWm9kTGF6eS5jcmVhdGUgPSAoZ2V0dGVyLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZExhenkoe1xuICAgICAgICBnZXR0ZXI6IGdldHRlcixcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RMYXp5LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZExpdGVyYWwgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0LmRhdGEgIT09IHRoaXMuX2RlZi52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2xpdGVyYWwsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IHRoaXMuX2RlZi52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZTtcbiAgICB9XG59XG5ab2RMaXRlcmFsLmNyZWF0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RMaXRlcmFsKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExpdGVyYWwsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5mdW5jdGlvbiBjcmVhdGVab2RFbnVtKHZhbHVlcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RFbnVtKHtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVudW0sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjbGFzcyBab2RFbnVtIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQuZGF0YSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB0aGlzLl9kZWYudmFsdWVzO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IHV0aWwuam9pblZhbHVlcyhleHBlY3RlZFZhbHVlcyksXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fY2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhY2hlID0gbmV3IFNldCh0aGlzLl9kZWYudmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlLmhhcyhpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB0aGlzLl9kZWYudmFsdWVzO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZXhwZWN0ZWRWYWx1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG4gICAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVzO1xuICAgIH1cbiAgICBnZXQgZW51bSgpIHtcbiAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKSB7XG4gICAgICAgICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudW1WYWx1ZXM7XG4gICAgfVxuICAgIGdldCBWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgdGhpcy5fZGVmLnZhbHVlcykge1xuICAgICAgICAgICAgZW51bVZhbHVlc1t2YWxdID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnVtVmFsdWVzO1xuICAgIH1cbiAgICBnZXQgRW51bSgpIHtcbiAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKSB7XG4gICAgICAgICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudW1WYWx1ZXM7XG4gICAgfVxuICAgIGV4dHJhY3QodmFsdWVzLCBuZXdEZWYgPSB0aGlzLl9kZWYpIHtcbiAgICAgICAgcmV0dXJuIFpvZEVudW0uY3JlYXRlKHZhbHVlcywge1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgLi4ubmV3RGVmLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZXhjbHVkZSh2YWx1ZXMsIG5ld0RlZiA9IHRoaXMuX2RlZikge1xuICAgICAgICByZXR1cm4gWm9kRW51bS5jcmVhdGUodGhpcy5vcHRpb25zLmZpbHRlcigob3B0KSA9PiAhdmFsdWVzLmluY2x1ZGVzKG9wdCkpLCB7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICAuLi5uZXdEZWYsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblpvZEVudW0uY3JlYXRlID0gY3JlYXRlWm9kRW51bTtcbmV4cG9ydCBjbGFzcyBab2ROYXRpdmVFbnVtIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUVudW1WYWx1ZXMgPSB1dGlsLmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl9kZWYudmFsdWVzKTtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuc3RyaW5nICYmIGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm51bWJlcikge1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB1dGlsLm9iamVjdFZhbHVlcyhuYXRpdmVFbnVtVmFsdWVzKTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiB1dGlsLmpvaW5WYWx1ZXMoZXhwZWN0ZWRWYWx1ZXMpLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWNoZSA9IG5ldyBTZXQodXRpbC5nZXRWYWxpZEVudW1WYWx1ZXModGhpcy5fZGVmLnZhbHVlcykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fY2FjaGUuaGFzKGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IHV0aWwub2JqZWN0VmFsdWVzKG5hdGl2ZUVudW1WYWx1ZXMpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZXhwZWN0ZWRWYWx1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG4gICAgZ2V0IGVudW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVzO1xuICAgIH1cbn1cblpvZE5hdGl2ZUVudW0uY3JlYXRlID0gKHZhbHVlcywgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROYXRpdmVFbnVtKHtcbiAgICAgICAgdmFsdWVzOiB2YWx1ZXMsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmF0aXZlRW51bSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RQcm9taXNlIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgdW53cmFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnR5cGU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnByb21pc2UgJiYgY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUucHJvbWlzZSxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21pc2lmaWVkID0gY3R4LnBhcnNlZFR5cGUgPT09IFpvZFBhcnNlZFR5cGUucHJvbWlzZSA/IGN0eC5kYXRhIDogUHJvbWlzZS5yZXNvbHZlKGN0eC5kYXRhKTtcbiAgICAgICAgcmV0dXJuIE9LKHByb21pc2lmaWVkLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZS5wYXJzZUFzeW5jKGRhdGEsIHtcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBlcnJvck1hcDogY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgIH1cbn1cblpvZFByb21pc2UuY3JlYXRlID0gKHNjaGVtYSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RQcm9taXNlKHtcbiAgICAgICAgdHlwZTogc2NoZW1hLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFByb21pc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kRWZmZWN0cyBleHRlbmRzIFpvZFR5cGUge1xuICAgIGlubmVyVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWE7XG4gICAgfVxuICAgIHNvdXJjZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzXG4gICAgICAgICAgICA/IHRoaXMuX2RlZi5zY2hlbWEuc291cmNlVHlwZSgpXG4gICAgICAgICAgICA6IHRoaXMuX2RlZi5zY2hlbWE7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBjb25zdCBlZmZlY3QgPSB0aGlzLl9kZWYuZWZmZWN0IHx8IG51bGw7XG4gICAgICAgIGNvbnN0IGNoZWNrQ3R4ID0ge1xuICAgICAgICAgICAgYWRkSXNzdWU6IChhcmcpID0+IHtcbiAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIGFyZyk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZy5mYXRhbCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuYWJvcnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcGF0aCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhdGg7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBjaGVja0N0eC5hZGRJc3N1ZSA9IGNoZWNrQ3R4LmFkZElzc3VlLmJpbmQoY2hlY2tDdHgpO1xuICAgICAgICBpZiAoZWZmZWN0LnR5cGUgPT09IFwicHJlcHJvY2Vzc1wiKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzZWQgPSBlZmZlY3QudHJhbnNmb3JtKGN0eC5kYXRhLCBjaGVja0N0eCk7XG4gICAgICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocHJvY2Vzc2VkKS50aGVuKGFzeW5jIChwcm9jZXNzZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy52YWx1ZSA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBwcm9jZXNzZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcImRpcnR5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRElSVFkocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy52YWx1ZSA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERJUlRZKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnZhbHVlID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcHJvY2Vzc2VkLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRElSVFkocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnZhbHVlID09PSBcImRpcnR5XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBESVJUWShyZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVmZmVjdC50eXBlID09PSBcInJlZmluZW1lbnRcIikge1xuICAgICAgICAgICAgY29uc3QgZXhlY3V0ZVJlZmluZW1lbnQgPSAoYWNjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZWZmZWN0LnJlZmluZW1lbnQoYWNjLCBjaGVja0N0eCk7XG4gICAgICAgICAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3luYyByZWZpbmVtZW50IGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbm5lciA9IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGlnbm9yZWRcbiAgICAgICAgICAgICAgICBleGVjdXRlUmVmaW5lbWVudChpbm5lci52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbm5lci52YWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoeyBkYXRhOiBjdHguZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pLnRoZW4oKGlubmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhlY3V0ZVJlZmluZW1lbnQoaW5uZXIudmFsdWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbm5lci52YWx1ZSB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZWZmZWN0LnR5cGUgPT09IFwidHJhbnNmb3JtXCIpIHtcbiAgICAgICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZChiYXNlKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZWZmZWN0LnRyYW5zZm9ybShiYXNlLnZhbHVlLCBjaGVja0N0eCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3luY2hyb25vdXMgdHJhbnNmb3JtIGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IHJlc3VsdCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoeyBkYXRhOiBjdHguZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pLnRoZW4oKGJhc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGJhc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZWZmZWN0LnRyYW5zZm9ybShiYXNlLnZhbHVlLCBjaGVja0N0eCkpLnRoZW4oKHJlc3VsdCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoZWZmZWN0KTtcbiAgICB9XG59XG5ab2RFZmZlY3RzLmNyZWF0ZSA9IChzY2hlbWEsIGVmZmVjdCwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RFZmZlY3RzKHtcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXG4gICAgICAgIGVmZmVjdCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcblpvZEVmZmVjdHMuY3JlYXRlV2l0aFByZXByb2Nlc3MgPSAocHJlcHJvY2Vzcywgc2NoZW1hLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgICBzY2hlbWEsXG4gICAgICAgIGVmZmVjdDogeyB0eXBlOiBcInByZXByb2Nlc3NcIiwgdHJhbnNmb3JtOiBwcmVwcm9jZXNzIH0sXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0cyxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCB7IFpvZEVmZmVjdHMgYXMgWm9kVHJhbnNmb3JtZXIgfTtcbmV4cG9ydCBjbGFzcyBab2RPcHRpb25hbCBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlID09PSBab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIE9LKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGlucHV0KTtcbiAgICB9XG4gICAgdW53cmFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZTtcbiAgICB9XG59XG5ab2RPcHRpb25hbC5jcmVhdGUgPSAodHlwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPcHRpb25hbCh7XG4gICAgICAgIGlubmVyVHlwZTogdHlwZSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPcHRpb25hbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2ROdWxsYWJsZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlID09PSBab2RQYXJzZWRUeXBlLm51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBPSyhudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2UoaW5wdXQpO1xuICAgIH1cbiAgICB1bndyYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xuICAgIH1cbn1cblpvZE51bGxhYmxlLmNyZWF0ZSA9ICh0eXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE51bGxhYmxlKHtcbiAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGxhYmxlLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZERlZmF1bHQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGxldCBkYXRhID0gY3R4LmRhdGE7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLl9kZWYuZGVmYXVsdFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVtb3ZlRGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kRGVmYXVsdC5jcmVhdGUgPSAodHlwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2REZWZhdWx0KHtcbiAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERlZmF1bHQsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHlwZW9mIHBhcmFtcy5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgPyBwYXJhbXMuZGVmYXVsdCA6ICgpID0+IHBhcmFtcy5kZWZhdWx0LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZENhdGNoIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICAvLyBuZXdDdHggaXMgdXNlZCB0byBub3QgY29sbGVjdCBpc3N1ZXMgZnJvbSBpbm5lciB0eXBlcyBpbiBjdHhcbiAgICAgICAgY29uc3QgbmV3Q3R4ID0ge1xuICAgICAgICAgICAgLi4uY3R4LFxuICAgICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAgICAgLi4uY3R4LmNvbW1vbixcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2Uoe1xuICAgICAgICAgICAgZGF0YTogbmV3Q3R4LmRhdGEsXG4gICAgICAgICAgICBwYXRoOiBuZXdDdHgucGF0aCxcbiAgICAgICAgICAgIHBhcmVudDoge1xuICAgICAgICAgICAgICAgIC4uLm5ld0N0eCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNBc3luYyhyZXN1bHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogXCJ2YWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVzdWx0LnN0YXR1cyA9PT0gXCJ2YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJlc3VsdC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGVycm9yKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFpvZEVycm9yKG5ld0N0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBuZXdDdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiBcInZhbGlkXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC5zdGF0dXMgPT09IFwidmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICA/IHJlc3VsdC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2RlZi5jYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBlcnJvcigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFpvZEVycm9yKG5ld0N0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogbmV3Q3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW1vdmVDYXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kQ2F0Y2guY3JlYXRlID0gKHR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQ2F0Y2goe1xuICAgICAgICBpbm5lclR5cGU6IHR5cGUsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQ2F0Y2gsXG4gICAgICAgIGNhdGNoVmFsdWU6IHR5cGVvZiBwYXJhbXMuY2F0Y2ggPT09IFwiZnVuY3Rpb25cIiA/IHBhcmFtcy5jYXRjaCA6ICgpID0+IHBhcmFtcy5jYXRjaCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2ROYU4gZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5uYW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubmFuLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gICAgfVxufVxuWm9kTmFOLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5hTih7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmFOLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IEJSQU5EID0gU3ltYm9sKFwiem9kX2JyYW5kXCIpO1xuZXhwb3J0IGNsYXNzIFpvZEJyYW5kZWQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBjdHguZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi50eXBlLl9wYXJzZSh7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi50eXBlO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RQaXBlbGluZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQXN5bmMgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5SZXN1bHQgPSBhd2FpdCB0aGlzLl9kZWYuaW4uX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpblJlc3VsdC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICBpZiAoaW5SZXN1bHQuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBESVJUWShpblJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLm91dC5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBpblJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlQXN5bmMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGluUmVzdWx0ID0gdGhpcy5fZGVmLmluLl9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaW5SZXN1bHQuc3RhdHVzID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgIGlmIChpblJlc3VsdC5zdGF0dXMgPT09IFwiZGlydHlcIikge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogXCJkaXJ0eVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaW5SZXN1bHQudmFsdWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWYub3V0Ll9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBpblJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBjcmVhdGUoYSwgYikge1xuICAgICAgICByZXR1cm4gbmV3IFpvZFBpcGVsaW5lKHtcbiAgICAgICAgICAgIGluOiBhLFxuICAgICAgICAgICAgb3V0OiBiLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQaXBlbGluZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFpvZFJlYWRvbmx5IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGlucHV0KTtcbiAgICAgICAgY29uc3QgZnJlZXplID0gKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS52YWx1ZSA9IE9iamVjdC5mcmVlemUoZGF0YS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGlzQXN5bmMocmVzdWx0KSA/IHJlc3VsdC50aGVuKChkYXRhKSA9PiBmcmVlemUoZGF0YSkpIDogZnJlZXplKHJlc3VsdCk7XG4gICAgfVxuICAgIHVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kUmVhZG9ubHkuY3JlYXRlID0gKHR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kUmVhZG9ubHkoe1xuICAgICAgICBpbm5lclR5cGU6IHR5cGUsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVhZG9ubHksXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgei5jdXN0b20gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5mdW5jdGlvbiBjbGVhblBhcmFtcyhwYXJhbXMsIGRhdGEpIHtcbiAgICBjb25zdCBwID0gdHlwZW9mIHBhcmFtcyA9PT0gXCJmdW5jdGlvblwiID8gcGFyYW1zKGRhdGEpIDogdHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIiA/IHsgbWVzc2FnZTogcGFyYW1zIH0gOiBwYXJhbXM7XG4gICAgY29uc3QgcDIgPSB0eXBlb2YgcCA9PT0gXCJzdHJpbmdcIiA/IHsgbWVzc2FnZTogcCB9IDogcDtcbiAgICByZXR1cm4gcDI7XG59XG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tKGNoZWNrLCBfcGFyYW1zID0ge30sIFxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICpcbiAqIFBhc3MgYGZhdGFsYCBpbnRvIHRoZSBwYXJhbXMgb2JqZWN0IGluc3RlYWQ6XG4gKlxuICogYGBgdHNcbiAqIHouc3RyaW5nKCkuY3VzdG9tKCh2YWwpID0+IHZhbC5sZW5ndGggPiA1LCB7IGZhdGFsOiBmYWxzZSB9KVxuICogYGBgXG4gKlxuICovXG5mYXRhbCkge1xuICAgIGlmIChjaGVjaylcbiAgICAgICAgcmV0dXJuIFpvZEFueS5jcmVhdGUoKS5zdXBlclJlZmluZSgoZGF0YSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByID0gY2hlY2soZGF0YSk7XG4gICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gci50aGVuKChyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gY2xlYW5QYXJhbXMoX3BhcmFtcywgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfZmF0YWwgPSBwYXJhbXMuZmF0YWwgPz8gZmF0YWwgPz8gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5hZGRJc3N1ZSh7IGNvZGU6IFwiY3VzdG9tXCIsIC4uLnBhcmFtcywgZmF0YWw6IF9mYXRhbCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gY2xlYW5QYXJhbXMoX3BhcmFtcywgZGF0YSk7XG4gICAgICAgICAgICAgICAgY29uc3QgX2ZhdGFsID0gcGFyYW1zLmZhdGFsID8/IGZhdGFsID8/IHRydWU7XG4gICAgICAgICAgICAgICAgY3R4LmFkZElzc3VlKHsgY29kZTogXCJjdXN0b21cIiwgLi4ucGFyYW1zLCBmYXRhbDogX2ZhdGFsIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KTtcbiAgICByZXR1cm4gWm9kQW55LmNyZWF0ZSgpO1xufVxuZXhwb3J0IHsgWm9kVHlwZSBhcyBTY2hlbWEsIFpvZFR5cGUgYXMgWm9kU2NoZW1hIH07XG5leHBvcnQgY29uc3QgbGF0ZSA9IHtcbiAgICBvYmplY3Q6IFpvZE9iamVjdC5sYXp5Y3JlYXRlLFxufTtcbmV4cG9ydCB2YXIgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kO1xuKGZ1bmN0aW9uIChab2RGaXJzdFBhcnR5VHlwZUtpbmQpIHtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RTdHJpbmdcIl0gPSBcIlpvZFN0cmluZ1wiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE51bWJlclwiXSA9IFwiWm9kTnVtYmVyXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kTmFOXCJdID0gXCJab2ROYU5cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RCaWdJbnRcIl0gPSBcIlpvZEJpZ0ludFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEJvb2xlYW5cIl0gPSBcIlpvZEJvb2xlYW5cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2REYXRlXCJdID0gXCJab2REYXRlXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kU3ltYm9sXCJdID0gXCJab2RTeW1ib2xcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RVbmRlZmluZWRcIl0gPSBcIlpvZFVuZGVmaW5lZFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE51bGxcIl0gPSBcIlpvZE51bGxcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RBbnlcIl0gPSBcIlpvZEFueVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFVua25vd25cIl0gPSBcIlpvZFVua25vd25cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2ROZXZlclwiXSA9IFwiWm9kTmV2ZXJcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RWb2lkXCJdID0gXCJab2RWb2lkXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kQXJyYXlcIl0gPSBcIlpvZEFycmF5XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kT2JqZWN0XCJdID0gXCJab2RPYmplY3RcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RVbmlvblwiXSA9IFwiWm9kVW5pb25cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2REaXNjcmltaW5hdGVkVW5pb25cIl0gPSBcIlpvZERpc2NyaW1pbmF0ZWRVbmlvblwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEludGVyc2VjdGlvblwiXSA9IFwiWm9kSW50ZXJzZWN0aW9uXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kVHVwbGVcIl0gPSBcIlpvZFR1cGxlXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kUmVjb3JkXCJdID0gXCJab2RSZWNvcmRcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RNYXBcIl0gPSBcIlpvZE1hcFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFNldFwiXSA9IFwiWm9kU2V0XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRnVuY3Rpb25cIl0gPSBcIlpvZEZ1bmN0aW9uXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kTGF6eVwiXSA9IFwiWm9kTGF6eVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZExpdGVyYWxcIl0gPSBcIlpvZExpdGVyYWxcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RFbnVtXCJdID0gXCJab2RFbnVtXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRWZmZWN0c1wiXSA9IFwiWm9kRWZmZWN0c1wiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE5hdGl2ZUVudW1cIl0gPSBcIlpvZE5hdGl2ZUVudW1cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RPcHRpb25hbFwiXSA9IFwiWm9kT3B0aW9uYWxcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2ROdWxsYWJsZVwiXSA9IFwiWm9kTnVsbGFibGVcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2REZWZhdWx0XCJdID0gXCJab2REZWZhdWx0XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kQ2F0Y2hcIl0gPSBcIlpvZENhdGNoXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kUHJvbWlzZVwiXSA9IFwiWm9kUHJvbWlzZVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEJyYW5kZWRcIl0gPSBcIlpvZEJyYW5kZWRcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RQaXBlbGluZVwiXSA9IFwiWm9kUGlwZWxpbmVcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RSZWFkb25seVwiXSA9IFwiWm9kUmVhZG9ubHlcIjtcbn0pKFpvZEZpcnN0UGFydHlUeXBlS2luZCB8fCAoWm9kRmlyc3RQYXJ0eVR5cGVLaW5kID0ge30pKTtcbi8vIHJlcXVpcmVzIFRTIDQuNCtcbmNsYXNzIENsYXNzIHtcbiAgICBjb25zdHJ1Y3RvciguLi5fKSB7IH1cbn1cbmNvbnN0IGluc3RhbmNlT2ZUeXBlID0gKFxuLy8gY29uc3QgaW5zdGFuY2VPZlR5cGUgPSA8VCBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG5jbHMsIHBhcmFtcyA9IHtcbiAgICBtZXNzYWdlOiBgSW5wdXQgbm90IGluc3RhbmNlIG9mICR7Y2xzLm5hbWV9YCxcbn0pID0+IGN1c3RvbSgoZGF0YSkgPT4gZGF0YSBpbnN0YW5jZW9mIGNscywgcGFyYW1zKTtcbmNvbnN0IHN0cmluZ1R5cGUgPSBab2RTdHJpbmcuY3JlYXRlO1xuY29uc3QgbnVtYmVyVHlwZSA9IFpvZE51bWJlci5jcmVhdGU7XG5jb25zdCBuYW5UeXBlID0gWm9kTmFOLmNyZWF0ZTtcbmNvbnN0IGJpZ0ludFR5cGUgPSBab2RCaWdJbnQuY3JlYXRlO1xuY29uc3QgYm9vbGVhblR5cGUgPSBab2RCb29sZWFuLmNyZWF0ZTtcbmNvbnN0IGRhdGVUeXBlID0gWm9kRGF0ZS5jcmVhdGU7XG5jb25zdCBzeW1ib2xUeXBlID0gWm9kU3ltYm9sLmNyZWF0ZTtcbmNvbnN0IHVuZGVmaW5lZFR5cGUgPSBab2RVbmRlZmluZWQuY3JlYXRlO1xuY29uc3QgbnVsbFR5cGUgPSBab2ROdWxsLmNyZWF0ZTtcbmNvbnN0IGFueVR5cGUgPSBab2RBbnkuY3JlYXRlO1xuY29uc3QgdW5rbm93blR5cGUgPSBab2RVbmtub3duLmNyZWF0ZTtcbmNvbnN0IG5ldmVyVHlwZSA9IFpvZE5ldmVyLmNyZWF0ZTtcbmNvbnN0IHZvaWRUeXBlID0gWm9kVm9pZC5jcmVhdGU7XG5jb25zdCBhcnJheVR5cGUgPSBab2RBcnJheS5jcmVhdGU7XG5jb25zdCBvYmplY3RUeXBlID0gWm9kT2JqZWN0LmNyZWF0ZTtcbmNvbnN0IHN0cmljdE9iamVjdFR5cGUgPSBab2RPYmplY3Quc3RyaWN0Q3JlYXRlO1xuY29uc3QgdW5pb25UeXBlID0gWm9kVW5pb24uY3JlYXRlO1xuY29uc3QgZGlzY3JpbWluYXRlZFVuaW9uVHlwZSA9IFpvZERpc2NyaW1pbmF0ZWRVbmlvbi5jcmVhdGU7XG5jb25zdCBpbnRlcnNlY3Rpb25UeXBlID0gWm9kSW50ZXJzZWN0aW9uLmNyZWF0ZTtcbmNvbnN0IHR1cGxlVHlwZSA9IFpvZFR1cGxlLmNyZWF0ZTtcbmNvbnN0IHJlY29yZFR5cGUgPSBab2RSZWNvcmQuY3JlYXRlO1xuY29uc3QgbWFwVHlwZSA9IFpvZE1hcC5jcmVhdGU7XG5jb25zdCBzZXRUeXBlID0gWm9kU2V0LmNyZWF0ZTtcbmNvbnN0IGZ1bmN0aW9uVHlwZSA9IFpvZEZ1bmN0aW9uLmNyZWF0ZTtcbmNvbnN0IGxhenlUeXBlID0gWm9kTGF6eS5jcmVhdGU7XG5jb25zdCBsaXRlcmFsVHlwZSA9IFpvZExpdGVyYWwuY3JlYXRlO1xuY29uc3QgZW51bVR5cGUgPSBab2RFbnVtLmNyZWF0ZTtcbmNvbnN0IG5hdGl2ZUVudW1UeXBlID0gWm9kTmF0aXZlRW51bS5jcmVhdGU7XG5jb25zdCBwcm9taXNlVHlwZSA9IFpvZFByb21pc2UuY3JlYXRlO1xuY29uc3QgZWZmZWN0c1R5cGUgPSBab2RFZmZlY3RzLmNyZWF0ZTtcbmNvbnN0IG9wdGlvbmFsVHlwZSA9IFpvZE9wdGlvbmFsLmNyZWF0ZTtcbmNvbnN0IG51bGxhYmxlVHlwZSA9IFpvZE51bGxhYmxlLmNyZWF0ZTtcbmNvbnN0IHByZXByb2Nlc3NUeXBlID0gWm9kRWZmZWN0cy5jcmVhdGVXaXRoUHJlcHJvY2VzcztcbmNvbnN0IHBpcGVsaW5lVHlwZSA9IFpvZFBpcGVsaW5lLmNyZWF0ZTtcbmNvbnN0IG9zdHJpbmcgPSAoKSA9PiBzdHJpbmdUeXBlKCkub3B0aW9uYWwoKTtcbmNvbnN0IG9udW1iZXIgPSAoKSA9PiBudW1iZXJUeXBlKCkub3B0aW9uYWwoKTtcbmNvbnN0IG9ib29sZWFuID0gKCkgPT4gYm9vbGVhblR5cGUoKS5vcHRpb25hbCgpO1xuZXhwb3J0IGNvbnN0IGNvZXJjZSA9IHtcbiAgICBzdHJpbmc6ICgoYXJnKSA9PiBab2RTdHJpbmcuY3JlYXRlKHsgLi4uYXJnLCBjb2VyY2U6IHRydWUgfSkpLFxuICAgIG51bWJlcjogKChhcmcpID0+IFpvZE51bWJlci5jcmVhdGUoeyAuLi5hcmcsIGNvZXJjZTogdHJ1ZSB9KSksXG4gICAgYm9vbGVhbjogKChhcmcpID0+IFpvZEJvb2xlYW4uY3JlYXRlKHtcbiAgICAgICAgLi4uYXJnLFxuICAgICAgICBjb2VyY2U6IHRydWUsXG4gICAgfSkpLFxuICAgIGJpZ2ludDogKChhcmcpID0+IFpvZEJpZ0ludC5jcmVhdGUoeyAuLi5hcmcsIGNvZXJjZTogdHJ1ZSB9KSksXG4gICAgZGF0ZTogKChhcmcpID0+IFpvZERhdGUuY3JlYXRlKHsgLi4uYXJnLCBjb2VyY2U6IHRydWUgfSkpLFxufTtcbmV4cG9ydCB7IGFueVR5cGUgYXMgYW55LCBhcnJheVR5cGUgYXMgYXJyYXksIGJpZ0ludFR5cGUgYXMgYmlnaW50LCBib29sZWFuVHlwZSBhcyBib29sZWFuLCBkYXRlVHlwZSBhcyBkYXRlLCBkaXNjcmltaW5hdGVkVW5pb25UeXBlIGFzIGRpc2NyaW1pbmF0ZWRVbmlvbiwgZWZmZWN0c1R5cGUgYXMgZWZmZWN0LCBlbnVtVHlwZSBhcyBlbnVtLCBmdW5jdGlvblR5cGUgYXMgZnVuY3Rpb24sIGluc3RhbmNlT2ZUeXBlIGFzIGluc3RhbmNlb2YsIGludGVyc2VjdGlvblR5cGUgYXMgaW50ZXJzZWN0aW9uLCBsYXp5VHlwZSBhcyBsYXp5LCBsaXRlcmFsVHlwZSBhcyBsaXRlcmFsLCBtYXBUeXBlIGFzIG1hcCwgbmFuVHlwZSBhcyBuYW4sIG5hdGl2ZUVudW1UeXBlIGFzIG5hdGl2ZUVudW0sIG5ldmVyVHlwZSBhcyBuZXZlciwgbnVsbFR5cGUgYXMgbnVsbCwgbnVsbGFibGVUeXBlIGFzIG51bGxhYmxlLCBudW1iZXJUeXBlIGFzIG51bWJlciwgb2JqZWN0VHlwZSBhcyBvYmplY3QsIG9ib29sZWFuLCBvbnVtYmVyLCBvcHRpb25hbFR5cGUgYXMgb3B0aW9uYWwsIG9zdHJpbmcsIHBpcGVsaW5lVHlwZSBhcyBwaXBlbGluZSwgcHJlcHJvY2Vzc1R5cGUgYXMgcHJlcHJvY2VzcywgcHJvbWlzZVR5cGUgYXMgcHJvbWlzZSwgcmVjb3JkVHlwZSBhcyByZWNvcmQsIHNldFR5cGUgYXMgc2V0LCBzdHJpY3RPYmplY3RUeXBlIGFzIHN0cmljdE9iamVjdCwgc3RyaW5nVHlwZSBhcyBzdHJpbmcsIHN5bWJvbFR5cGUgYXMgc3ltYm9sLCBlZmZlY3RzVHlwZSBhcyB0cmFuc2Zvcm1lciwgdHVwbGVUeXBlIGFzIHR1cGxlLCB1bmRlZmluZWRUeXBlIGFzIHVuZGVmaW5lZCwgdW5pb25UeXBlIGFzIHVuaW9uLCB1bmtub3duVHlwZSBhcyB1bmtub3duLCB2b2lkVHlwZSBhcyB2b2lkLCB9O1xuZXhwb3J0IGNvbnN0IE5FVkVSID0gSU5WQUxJRDtcbiJdLCJuYW1lcyI6WyJab2RFcnJvciIsIlpvZElzc3VlQ29kZSIsImRlZmF1bHRFcnJvck1hcCIsImdldEVycm9yTWFwIiwiZXJyb3JVdGlsIiwiRElSVFkiLCJJTlZBTElEIiwiT0siLCJQYXJzZVN0YXR1cyIsImFkZElzc3VlVG9Db250ZXh0IiwiaXNBYm9ydGVkIiwiaXNBc3luYyIsImlzRGlydHkiLCJpc1ZhbGlkIiwibWFrZUlzc3VlIiwidXRpbCIsIlpvZFBhcnNlZFR5cGUiLCJnZXRQYXJzZWRUeXBlIiwiUGFyc2VJbnB1dExhenlQYXRoIiwicGFyZW50IiwidmFsdWUiLCJwYXRoIiwia2V5IiwiX2NhY2hlZFBhdGgiLCJkYXRhIiwiX3BhdGgiLCJfa2V5IiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsImhhbmRsZVJlc3VsdCIsImN0eCIsInJlc3VsdCIsInN1Y2Nlc3MiLCJjb21tb24iLCJpc3N1ZXMiLCJFcnJvciIsImVycm9yIiwiX2Vycm9yIiwicHJvY2Vzc0NyZWF0ZVBhcmFtcyIsInBhcmFtcyIsImVycm9yTWFwIiwiaW52YWxpZF90eXBlX2Vycm9yIiwicmVxdWlyZWRfZXJyb3IiLCJkZXNjcmlwdGlvbiIsImN1c3RvbU1hcCIsImlzcyIsIm1lc3NhZ2UiLCJjb2RlIiwiZGVmYXVsdEVycm9yIiwiWm9kVHlwZSIsIl9kZWYiLCJfZ2V0VHlwZSIsImlucHV0IiwiX2dldE9yUmV0dXJuQ3R4IiwicGFyc2VkVHlwZSIsInNjaGVtYUVycm9yTWFwIiwiX3Byb2Nlc3NJbnB1dFBhcmFtcyIsInN0YXR1cyIsIl9wYXJzZVN5bmMiLCJfcGFyc2UiLCJfcGFyc2VBc3luYyIsIlByb21pc2UiLCJyZXNvbHZlIiwicGFyc2UiLCJzYWZlUGFyc2UiLCJhc3luYyIsImNvbnRleHR1YWxFcnJvck1hcCIsImVyciIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJ0aGVuIiwicGFyc2VBc3luYyIsInNhZmVQYXJzZUFzeW5jIiwibWF5YmVBc3luY1Jlc3VsdCIsInJlZmluZSIsImNoZWNrIiwiZ2V0SXNzdWVQcm9wZXJ0aWVzIiwidmFsIiwiX3JlZmluZW1lbnQiLCJzZXRFcnJvciIsImFkZElzc3VlIiwiY3VzdG9tIiwicmVmaW5lbWVudCIsInJlZmluZW1lbnREYXRhIiwiWm9kRWZmZWN0cyIsInNjaGVtYSIsInR5cGVOYW1lIiwiWm9kRmlyc3RQYXJ0eVR5cGVLaW5kIiwiZWZmZWN0IiwidHlwZSIsInN1cGVyUmVmaW5lIiwiZGVmIiwic3BhIiwiYmluZCIsIm9wdGlvbmFsIiwibnVsbGFibGUiLCJudWxsaXNoIiwiYXJyYXkiLCJwcm9taXNlIiwib3IiLCJhbmQiLCJ0cmFuc2Zvcm0iLCJicmFuZCIsImRlZmF1bHQiLCJjYXRjaCIsImRlc2NyaWJlIiwicGlwZSIsInJlYWRvbmx5IiwiaXNOdWxsYWJsZSIsImlzT3B0aW9uYWwiLCJ2ZXJzaW9uIiwidmVuZG9yIiwidmFsaWRhdGUiLCJab2RPcHRpb25hbCIsImNyZWF0ZSIsIlpvZE51bGxhYmxlIiwiWm9kQXJyYXkiLCJab2RQcm9taXNlIiwib3B0aW9uIiwiWm9kVW5pb24iLCJpbmNvbWluZyIsIlpvZEludGVyc2VjdGlvbiIsImRlZmF1bHRWYWx1ZUZ1bmMiLCJab2REZWZhdWx0IiwiaW5uZXJUeXBlIiwiZGVmYXVsdFZhbHVlIiwiWm9kQnJhbmRlZCIsImNhdGNoVmFsdWVGdW5jIiwiWm9kQ2F0Y2giLCJjYXRjaFZhbHVlIiwiVGhpcyIsInRhcmdldCIsIlpvZFBpcGVsaW5lIiwiWm9kUmVhZG9ubHkiLCJ1bmRlZmluZWQiLCJjdWlkUmVnZXgiLCJjdWlkMlJlZ2V4IiwidWxpZFJlZ2V4IiwidXVpZFJlZ2V4IiwibmFub2lkUmVnZXgiLCJqd3RSZWdleCIsImR1cmF0aW9uUmVnZXgiLCJlbWFpbFJlZ2V4IiwiX2Vtb2ppUmVnZXgiLCJlbW9qaVJlZ2V4IiwiaXB2NFJlZ2V4IiwiaXB2NENpZHJSZWdleCIsImlwdjZSZWdleCIsImlwdjZDaWRyUmVnZXgiLCJiYXNlNjRSZWdleCIsImJhc2U2NHVybFJlZ2V4IiwiZGF0ZVJlZ2V4U291cmNlIiwiZGF0ZVJlZ2V4IiwiUmVnRXhwIiwidGltZVJlZ2V4U291cmNlIiwiYXJncyIsInNlY29uZHNSZWdleFNvdXJjZSIsInByZWNpc2lvbiIsInNlY29uZHNRdWFudGlmaWVyIiwidGltZVJlZ2V4IiwiZGF0ZXRpbWVSZWdleCIsInJlZ2V4Iiwib3B0cyIsImxvY2FsIiwib2Zmc2V0Iiwiam9pbiIsImlzVmFsaWRJUCIsImlwIiwidGVzdCIsImlzVmFsaWRKV1QiLCJqd3QiLCJhbGciLCJoZWFkZXIiLCJzcGxpdCIsImJhc2U2NCIsInJlcGxhY2UiLCJwYWRFbmQiLCJkZWNvZGVkIiwiSlNPTiIsImF0b2IiLCJ0eXAiLCJpc1ZhbGlkQ2lkciIsIlpvZFN0cmluZyIsImNvZXJjZSIsIlN0cmluZyIsInN0cmluZyIsImludmFsaWRfdHlwZSIsImV4cGVjdGVkIiwicmVjZWl2ZWQiLCJjaGVja3MiLCJraW5kIiwidG9vX3NtYWxsIiwibWluaW11bSIsImluY2x1c2l2ZSIsImV4YWN0IiwiZGlydHkiLCJ0b29fYmlnIiwibWF4aW11bSIsInRvb0JpZyIsInRvb1NtYWxsIiwidmFsaWRhdGlvbiIsImludmFsaWRfc3RyaW5nIiwiVVJMIiwibGFzdEluZGV4IiwidGVzdFJlc3VsdCIsInRyaW0iLCJwb3NpdGlvbiIsInRvVXBwZXJDYXNlIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwiYXNzZXJ0TmV2ZXIiLCJfcmVnZXgiLCJlcnJUb09iaiIsIl9hZGRDaGVjayIsImVtYWlsIiwidXJsIiwiZW1vamkiLCJ1dWlkIiwibmFub2lkIiwiY3VpZCIsImN1aWQyIiwidWxpZCIsImJhc2U2NHVybCIsIm9wdGlvbnMiLCJjaWRyIiwiZGF0ZXRpbWUiLCJkYXRlIiwidGltZSIsImR1cmF0aW9uIiwibWluIiwibWluTGVuZ3RoIiwibWF4IiwibWF4TGVuZ3RoIiwibGVuIiwibm9uZW1wdHkiLCJpc0RhdGV0aW1lIiwiZmluZCIsImNoIiwiaXNEYXRlIiwiaXNUaW1lIiwiaXNEdXJhdGlvbiIsImlzRW1haWwiLCJpc1VSTCIsImlzRW1vamkiLCJpc1VVSUQiLCJpc05BTk9JRCIsImlzQ1VJRCIsImlzQ1VJRDIiLCJpc1VMSUQiLCJpc0lQIiwiaXNDSURSIiwiaXNCYXNlNjQiLCJpc0Jhc2U2NHVybCIsImZsb2F0U2FmZVJlbWFpbmRlciIsInN0ZXAiLCJ2YWxEZWNDb3VudCIsInRvU3RyaW5nIiwic3RlcERlY0NvdW50IiwiZGVjQ291bnQiLCJ2YWxJbnQiLCJOdW1iZXIiLCJwYXJzZUludCIsInRvRml4ZWQiLCJzdGVwSW50IiwiWm9kTnVtYmVyIiwiYXJndW1lbnRzIiwiZ3RlIiwibHRlIiwibXVsdGlwbGVPZiIsIm51bWJlciIsImlzSW50ZWdlciIsIm5vdF9tdWx0aXBsZV9vZiIsImlzRmluaXRlIiwibm90X2Zpbml0ZSIsInNldExpbWl0IiwiZ3QiLCJsdCIsImludCIsInBvc2l0aXZlIiwibmVnYXRpdmUiLCJub25wb3NpdGl2ZSIsIm5vbm5lZ2F0aXZlIiwiZmluaXRlIiwic2FmZSIsIk1JTl9TQUZFX0lOVEVHRVIiLCJNQVhfU0FGRV9JTlRFR0VSIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsImlzSW50IiwiWm9kQmlnSW50IiwiQmlnSW50IiwiX2dldEludmFsaWRJbnB1dCIsImJpZ2ludCIsIlpvZEJvb2xlYW4iLCJCb29sZWFuIiwiYm9vbGVhbiIsIlpvZERhdGUiLCJEYXRlIiwiaXNOYU4iLCJnZXRUaW1lIiwiaW52YWxpZF9kYXRlIiwibWluRGF0ZSIsIm1heERhdGUiLCJab2RTeW1ib2wiLCJzeW1ib2wiLCJab2RVbmRlZmluZWQiLCJab2ROdWxsIiwibnVsbCIsIlpvZEFueSIsIl9hbnkiLCJab2RVbmtub3duIiwiX3Vua25vd24iLCJab2ROZXZlciIsIm5ldmVyIiwiWm9kVm9pZCIsInZvaWQiLCJleGFjdExlbmd0aCIsImFsbCIsIm1hcCIsIml0ZW0iLCJpIiwibWVyZ2VBcnJheSIsImVsZW1lbnQiLCJkZWVwUGFydGlhbGlmeSIsIlpvZE9iamVjdCIsIm5ld1NoYXBlIiwic2hhcGUiLCJmaWVsZFNjaGVtYSIsInVud3JhcCIsIlpvZFR1cGxlIiwiaXRlbXMiLCJfY2FjaGVkIiwibm9uc3RyaWN0IiwicGFzc3Rocm91Z2giLCJhdWdtZW50IiwiZXh0ZW5kIiwiX2dldENhY2hlZCIsImtleXMiLCJvYmplY3RLZXlzIiwib2JqZWN0Iiwic2hhcGVLZXlzIiwiZXh0cmFLZXlzIiwiY2F0Y2hhbGwiLCJ1bmtub3duS2V5cyIsInBhaXJzIiwia2V5VmFsaWRhdG9yIiwiYWx3YXlzU2V0IiwidW5yZWNvZ25pemVkX2tleXMiLCJzeW5jUGFpcnMiLCJwYWlyIiwibWVyZ2VPYmplY3RTeW5jIiwic3RyaWN0IiwiaXNzdWUiLCJzdHJpcCIsImF1Z21lbnRhdGlvbiIsIm1lcmdlIiwibWVyZ2luZyIsIm1lcmdlZCIsInNldEtleSIsImluZGV4IiwicGljayIsIm1hc2siLCJvbWl0IiwiZGVlcFBhcnRpYWwiLCJwYXJ0aWFsIiwicmVxdWlyZWQiLCJuZXdGaWVsZCIsImtleW9mIiwiY3JlYXRlWm9kRW51bSIsInN0cmljdENyZWF0ZSIsImxhenljcmVhdGUiLCJoYW5kbGVSZXN1bHRzIiwicmVzdWx0cyIsInVuaW9uRXJyb3JzIiwiaW52YWxpZF91bmlvbiIsImNoaWxkQ3R4IiwidHlwZXMiLCJnZXREaXNjcmltaW5hdG9yIiwiWm9kTGF6eSIsIlpvZExpdGVyYWwiLCJab2RFbnVtIiwiWm9kTmF0aXZlRW51bSIsIm9iamVjdFZhbHVlcyIsImVudW0iLCJab2REaXNjcmltaW5hdGVkVW5pb24iLCJkaXNjcmltaW5hdG9yIiwiZGlzY3JpbWluYXRvclZhbHVlIiwib3B0aW9uc01hcCIsImdldCIsImludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvciIsImZyb20iLCJNYXAiLCJkaXNjcmltaW5hdG9yVmFsdWVzIiwiaGFzIiwic2V0IiwibWVyZ2VWYWx1ZXMiLCJhIiwiYiIsImFUeXBlIiwiYlR5cGUiLCJ2YWxpZCIsImJLZXlzIiwic2hhcmVkS2V5cyIsImZpbHRlciIsImluZGV4T2YiLCJuZXdPYmoiLCJzaGFyZWRWYWx1ZSIsIm5ld0FycmF5IiwiaXRlbUEiLCJpdGVtQiIsImhhbmRsZVBhcnNlZCIsInBhcnNlZExlZnQiLCJwYXJzZWRSaWdodCIsImludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzIiwibGVmdCIsInJpZ2h0IiwicmVzdCIsIml0ZW1JbmRleCIsIngiLCJzY2hlbWFzIiwiWm9kUmVjb3JkIiwia2V5U2NoZW1hIiwia2V5VHlwZSIsInZhbHVlU2NoZW1hIiwidmFsdWVUeXBlIiwibWVyZ2VPYmplY3RBc3luYyIsImZpcnN0Iiwic2Vjb25kIiwidGhpcmQiLCJab2RNYXAiLCJlbnRyaWVzIiwiZmluYWxNYXAiLCJab2RTZXQiLCJtaW5TaXplIiwic2l6ZSIsIm1heFNpemUiLCJmaW5hbGl6ZVNldCIsImVsZW1lbnRzIiwicGFyc2VkU2V0IiwiU2V0IiwiYWRkIiwidmFsdWVzIiwiWm9kRnVuY3Rpb24iLCJpbXBsZW1lbnQiLCJmdW5jdGlvbiIsIm1ha2VBcmdzSXNzdWUiLCJlcnJvck1hcHMiLCJpc3N1ZURhdGEiLCJpbnZhbGlkX2FyZ3VtZW50cyIsImFyZ3VtZW50c0Vycm9yIiwibWFrZVJldHVybnNJc3N1ZSIsInJldHVybnMiLCJpbnZhbGlkX3JldHVybl90eXBlIiwicmV0dXJuVHlwZUVycm9yIiwiZm4iLCJtZSIsInBhcnNlZEFyZ3MiLCJlIiwiUmVmbGVjdCIsImFwcGx5IiwicGFyc2VkUmV0dXJucyIsInBhcmFtZXRlcnMiLCJyZXR1cm5UeXBlIiwiZnVuYyIsInZhbGlkYXRlZEZ1bmMiLCJzdHJpY3RJbXBsZW1lbnQiLCJnZXR0ZXIiLCJsYXp5U2NoZW1hIiwiaW52YWxpZF9saXRlcmFsIiwiZXhwZWN0ZWRWYWx1ZXMiLCJqb2luVmFsdWVzIiwiX2NhY2hlIiwiaW52YWxpZF9lbnVtX3ZhbHVlIiwiZW51bVZhbHVlcyIsIlZhbHVlcyIsIkVudW0iLCJleHRyYWN0IiwibmV3RGVmIiwiZXhjbHVkZSIsIm9wdCIsIm5hdGl2ZUVudW1WYWx1ZXMiLCJnZXRWYWxpZEVudW1WYWx1ZXMiLCJwcm9taXNpZmllZCIsInNvdXJjZVR5cGUiLCJjaGVja0N0eCIsImFyZyIsImZhdGFsIiwiYWJvcnQiLCJwcm9jZXNzZWQiLCJleGVjdXRlUmVmaW5lbWVudCIsImFjYyIsImlubmVyIiwiYmFzZSIsImNyZWF0ZVdpdGhQcmVwcm9jZXNzIiwicHJlcHJvY2VzcyIsIlpvZFRyYW5zZm9ybWVyIiwicmVtb3ZlRGVmYXVsdCIsIm5ld0N0eCIsInJlbW92ZUNhdGNoIiwiWm9kTmFOIiwibmFuIiwiQlJBTkQiLCJTeW1ib2wiLCJoYW5kbGVBc3luYyIsImluUmVzdWx0IiwiaW4iLCJvdXQiLCJmcmVlemUiLCJPYmplY3QiLCJjbGVhblBhcmFtcyIsInAiLCJwMiIsIl9wYXJhbXMiLCJyIiwiX2ZhdGFsIiwiU2NoZW1hIiwiWm9kU2NoZW1hIiwibGF0ZSIsIkNsYXNzIiwiXyIsImluc3RhbmNlT2ZUeXBlIiwiY2xzIiwibmFtZSIsInN0cmluZ1R5cGUiLCJudW1iZXJUeXBlIiwibmFuVHlwZSIsImJpZ0ludFR5cGUiLCJib29sZWFuVHlwZSIsImRhdGVUeXBlIiwic3ltYm9sVHlwZSIsInVuZGVmaW5lZFR5cGUiLCJudWxsVHlwZSIsImFueVR5cGUiLCJ1bmtub3duVHlwZSIsIm5ldmVyVHlwZSIsInZvaWRUeXBlIiwiYXJyYXlUeXBlIiwib2JqZWN0VHlwZSIsInN0cmljdE9iamVjdFR5cGUiLCJ1bmlvblR5cGUiLCJkaXNjcmltaW5hdGVkVW5pb25UeXBlIiwiaW50ZXJzZWN0aW9uVHlwZSIsInR1cGxlVHlwZSIsInJlY29yZFR5cGUiLCJtYXBUeXBlIiwic2V0VHlwZSIsImZ1bmN0aW9uVHlwZSIsImxhenlUeXBlIiwibGl0ZXJhbFR5cGUiLCJlbnVtVHlwZSIsIm5hdGl2ZUVudW1UeXBlIiwicHJvbWlzZVR5cGUiLCJlZmZlY3RzVHlwZSIsIm9wdGlvbmFsVHlwZSIsIm51bGxhYmxlVHlwZSIsInByZXByb2Nlc3NUeXBlIiwicGlwZWxpbmVUeXBlIiwib3N0cmluZyIsIm9udW1iZXIiLCJvYm9vbGVhbiIsImFueSIsImRpc2NyaW1pbmF0ZWRVbmlvbiIsImluc3RhbmNlb2YiLCJpbnRlcnNlY3Rpb24iLCJsYXp5IiwibGl0ZXJhbCIsIm5hdGl2ZUVudW0iLCJwaXBlbGluZSIsInJlY29yZCIsInN0cmljdE9iamVjdCIsInRyYW5zZm9ybWVyIiwidHVwbGUiLCJ1bmlvbiIsInVua25vd24iLCJORVZFUiJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/coerce.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/coerce.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bigint: () => (/* binding */ bigint),\n/* harmony export */ boolean: () => (/* binding */ boolean),\n/* harmony export */ date: () => (/* binding */ date),\n/* harmony export */ number: () => (/* binding */ number),\n/* harmony export */ string: () => (/* binding */ string)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js\");\n/* harmony import */ var _schemas_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schemas.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js\");\n\n\nfunction string(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedString(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodString, params);\n}\nfunction number(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedNumber(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodNumber, params);\n}\nfunction boolean(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedBoolean(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodBoolean, params);\n}\nfunction bigint(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedBigint(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodBigInt, params);\n}\nfunction date(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__._coercedDate(_schemas_js__WEBPACK_IMPORTED_MODULE_1__.ZodDate, params);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL2NvZXJjZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQXlDO0FBQ0Q7QUFDakMsU0FBU0UsT0FBT0MsTUFBTTtJQUN6QixPQUFPSCwwREFBbUIsQ0FBQ0Msa0RBQWlCLEVBQUVFO0FBQ2xEO0FBQ08sU0FBU0csT0FBT0gsTUFBTTtJQUN6QixPQUFPSCwwREFBbUIsQ0FBQ0Msa0RBQWlCLEVBQUVFO0FBQ2xEO0FBQ08sU0FBU00sUUFBUU4sTUFBTTtJQUMxQixPQUFPSCwyREFBb0IsQ0FBQ0MsbURBQWtCLEVBQUVFO0FBQ3BEO0FBQ08sU0FBU1MsT0FBT1QsTUFBTTtJQUN6QixPQUFPSCwwREFBbUIsQ0FBQ0Msa0RBQWlCLEVBQUVFO0FBQ2xEO0FBQ08sU0FBU1ksS0FBS1osTUFBTTtJQUN2QixPQUFPSCx3REFBaUIsQ0FBQ0MsZ0RBQWUsRUFBRUU7QUFDOUMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL2NvZXJjZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBzY2hlbWFzIGZyb20gXCIuL3NjaGVtYXMuanNcIjtcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmcocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NvZXJjZWRTdHJpbmcoc2NoZW1hcy5ab2RTdHJpbmcsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jb2VyY2VkTnVtYmVyKHNjaGVtYXMuWm9kTnVtYmVyLCBwYXJhbXMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGJvb2xlYW4ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NvZXJjZWRCb29sZWFuKHNjaGVtYXMuWm9kQm9vbGVhbiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBiaWdpbnQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NvZXJjZWRCaWdpbnQoc2NoZW1hcy5ab2RCaWdJbnQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZGF0ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY29lcmNlZERhdGUoc2NoZW1hcy5ab2REYXRlLCBwYXJhbXMpO1xufVxuIl0sIm5hbWVzIjpbImNvcmUiLCJzY2hlbWFzIiwic3RyaW5nIiwicGFyYW1zIiwiX2NvZXJjZWRTdHJpbmciLCJab2RTdHJpbmciLCJudW1iZXIiLCJfY29lcmNlZE51bWJlciIsIlpvZE51bWJlciIsImJvb2xlYW4iLCJfY29lcmNlZEJvb2xlYW4iLCJab2RCb29sZWFuIiwiYmlnaW50IiwiX2NvZXJjZWRCaWdpbnQiLCJab2RCaWdJbnQiLCJkYXRlIiwiX2NvZXJjZWREYXRlIiwiWm9kRGF0ZSJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/coerce.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/compat.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/compat.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $brand: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$brand),\n/* harmony export */ ZodIssueCode: () => (/* binding */ ZodIssueCode),\n/* harmony export */ config: () => (/* reexport safe */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.config),\n/* harmony export */ getErrorMap: () => (/* binding */ getErrorMap),\n/* harmony export */ setErrorMap: () => (/* binding */ setErrorMap)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\");\n// Zod 3 compat layer\n\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */ const ZodIssueCode = {\n invalid_type: \"invalid_type\",\n too_big: \"too_big\",\n too_small: \"too_small\",\n invalid_format: \"invalid_format\",\n not_multiple_of: \"not_multiple_of\",\n unrecognized_keys: \"unrecognized_keys\",\n invalid_union: \"invalid_union\",\n invalid_key: \"invalid_key\",\n invalid_element: \"invalid_element\",\n invalid_value: \"invalid_value\",\n custom: \"custom\"\n};\n\n/** @deprecated Use `z.config(params)` instead. */ function setErrorMap(map) {\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.config({\n customError: map\n });\n}\n/** @deprecated Use `z.config()` instead. */ function getErrorMap() {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_0__.config().customError;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL2NvbXBhdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxxQkFBcUI7QUFDb0I7QUFDekMsK0VBQStFLEdBQ3hFLE1BQU1DLGVBQWU7SUFDeEJDLGNBQWM7SUFDZEMsU0FBUztJQUNUQyxXQUFXO0lBQ1hDLGdCQUFnQjtJQUNoQkMsaUJBQWlCO0lBQ2pCQyxtQkFBbUI7SUFDbkJDLGVBQWU7SUFDZkMsYUFBYTtJQUNiQyxpQkFBaUI7SUFDakJDLGVBQWU7SUFDZkMsUUFBUTtBQUNaLEVBQUU7QUFDZ0Q7QUFDbEQsZ0RBQWdELEdBQ3pDLFNBQVNHLFlBQVlDLEdBQUc7SUFDM0JoQixrREFBVyxDQUFDO1FBQ1JpQixhQUFhRDtJQUNqQjtBQUNKO0FBQ0EsMENBQTBDLEdBQ25DLFNBQVNFO0lBQ1osT0FBT2xCLGtEQUFXLEdBQUdpQixXQUFXO0FBQ3BDIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY2xhc3NpYy9jb21wYXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gWm9kIDMgY29tcGF0IGxheWVyXG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG4vKiogQGRlcHJlY2F0ZWQgVXNlIHRoZSByYXcgc3RyaW5nIGxpdGVyYWwgY29kZXMgaW5zdGVhZCwgZS5nLiBcImludmFsaWRfdHlwZVwiLiAqL1xuZXhwb3J0IGNvbnN0IFpvZElzc3VlQ29kZSA9IHtcbiAgICBpbnZhbGlkX3R5cGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgdG9vX2JpZzogXCJ0b29fYmlnXCIsXG4gICAgdG9vX3NtYWxsOiBcInRvb19zbWFsbFwiLFxuICAgIGludmFsaWRfZm9ybWF0OiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgbm90X211bHRpcGxlX29mOiBcIm5vdF9tdWx0aXBsZV9vZlwiLFxuICAgIHVucmVjb2duaXplZF9rZXlzOiBcInVucmVjb2duaXplZF9rZXlzXCIsXG4gICAgaW52YWxpZF91bmlvbjogXCJpbnZhbGlkX3VuaW9uXCIsXG4gICAgaW52YWxpZF9rZXk6IFwiaW52YWxpZF9rZXlcIixcbiAgICBpbnZhbGlkX2VsZW1lbnQ6IFwiaW52YWxpZF9lbGVtZW50XCIsXG4gICAgaW52YWxpZF92YWx1ZTogXCJpbnZhbGlkX3ZhbHVlXCIsXG4gICAgY3VzdG9tOiBcImN1c3RvbVwiLFxufTtcbmV4cG9ydCB7ICRicmFuZCwgY29uZmlnIH0gZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbi8qKiBAZGVwcmVjYXRlZCBVc2UgYHouY29uZmlnKHBhcmFtcylgIGluc3RlYWQuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RXJyb3JNYXAobWFwKSB7XG4gICAgY29yZS5jb25maWcoe1xuICAgICAgICBjdXN0b21FcnJvcjogbWFwLFxuICAgIH0pO1xufVxuLyoqIEBkZXByZWNhdGVkIFVzZSBgei5jb25maWcoKWAgaW5zdGVhZC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck1hcCgpIHtcbiAgICByZXR1cm4gY29yZS5jb25maWcoKS5jdXN0b21FcnJvcjtcbn1cbiJdLCJuYW1lcyI6WyJjb3JlIiwiWm9kSXNzdWVDb2RlIiwiaW52YWxpZF90eXBlIiwidG9vX2JpZyIsInRvb19zbWFsbCIsImludmFsaWRfZm9ybWF0Iiwibm90X211bHRpcGxlX29mIiwidW5yZWNvZ25pemVkX2tleXMiLCJpbnZhbGlkX3VuaW9uIiwiaW52YWxpZF9rZXkiLCJpbnZhbGlkX2VsZW1lbnQiLCJpbnZhbGlkX3ZhbHVlIiwiY3VzdG9tIiwiJGJyYW5kIiwiY29uZmlnIiwic2V0RXJyb3JNYXAiLCJtYXAiLCJjdXN0b21FcnJvciIsImdldEVycm9yTWFwIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/compat.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/errors.js":
|
||
/*!******************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/errors.js ***!
|
||
\******************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodError: () => (/* binding */ ZodError),\n/* harmony export */ ZodRealError: () => (/* binding */ ZodRealError)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\");\n\n\nconst initializer = (inst, issues)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$ZodError.init(inst, issues);\n inst.name = \"ZodError\";\n Object.defineProperties(inst, {\n format: {\n value: (mapper)=>_core_index_js__WEBPACK_IMPORTED_MODULE_0__.formatError(inst, mapper)\n },\n flatten: {\n value: (mapper)=>_core_index_js__WEBPACK_IMPORTED_MODULE_0__.flattenError(inst, mapper)\n },\n addIssue: {\n value: (issue)=>inst.issues.push(issue)\n },\n addIssues: {\n value: (issues)=>inst.issues.push(...issues)\n },\n isEmpty: {\n get () {\n return inst.issues.length === 0;\n }\n }\n });\n// Object.defineProperty(inst, \"isEmpty\", {\n// get() {\n// return inst.issues.length === 0;\n// },\n// });\n};\nconst ZodError = _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"ZodError\", initializer);\nconst ZodRealError = _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$constructor(\"ZodError\", initializer, {\n Parent: Error\n}); // /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n // export type ErrorMapCtx = core.$ZodErrorMapCtx;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL2Vycm9ycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXlDO0FBQ0k7QUFDN0MsTUFBTUUsY0FBYyxDQUFDQyxNQUFNQztJQUN2QkgscURBQVNBLENBQUNJLElBQUksQ0FBQ0YsTUFBTUM7SUFDckJELEtBQUtHLElBQUksR0FBRztJQUNaQyxPQUFPQyxnQkFBZ0IsQ0FBQ0wsTUFBTTtRQUMxQk0sUUFBUTtZQUNKQyxPQUFPLENBQUNDLFNBQVdYLHVEQUFnQixDQUFDRyxNQUFNUTtRQUU5QztRQUNBRSxTQUFTO1lBQ0xILE9BQU8sQ0FBQ0MsU0FBV1gsd0RBQWlCLENBQUNHLE1BQU1RO1FBRS9DO1FBQ0FJLFVBQVU7WUFDTkwsT0FBTyxDQUFDTSxRQUFVYixLQUFLQyxNQUFNLENBQUNhLElBQUksQ0FBQ0Q7UUFFdkM7UUFDQUUsV0FBVztZQUNQUixPQUFPLENBQUNOLFNBQVdELEtBQUtDLE1BQU0sQ0FBQ2EsSUFBSSxJQUFJYjtRQUUzQztRQUNBZSxTQUFTO1lBQ0xDO2dCQUNJLE9BQU9qQixLQUFLQyxNQUFNLENBQUNpQixNQUFNLEtBQUs7WUFDbEM7UUFFSjtJQUNKO0FBQ0EsMkNBQTJDO0FBQzNDLFlBQVk7QUFDWix1Q0FBdUM7QUFDdkMsT0FBTztBQUNQLE1BQU07QUFDVjtBQUNPLE1BQU1DLFdBQVd0Qix3REFBaUIsQ0FBQyxZQUFZRSxhQUFhO0FBQzVELE1BQU1zQixlQUFleEIsd0RBQWlCLENBQUMsWUFBWUUsYUFBYTtJQUNuRXVCLFFBQVFDO0FBQ1osR0FBRyxDQUNILDJEQUEyRDtDQUMzRCxrREFBa0QiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL2Vycm9ycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgeyAkWm9kRXJyb3IgfSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuY29uc3QgaW5pdGlhbGl6ZXIgPSAoaW5zdCwgaXNzdWVzKSA9PiB7XG4gICAgJFpvZEVycm9yLmluaXQoaW5zdCwgaXNzdWVzKTtcbiAgICBpbnN0Lm5hbWUgPSBcIlpvZEVycm9yXCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaW5zdCwge1xuICAgICAgICBmb3JtYXQ6IHtcbiAgICAgICAgICAgIHZhbHVlOiAobWFwcGVyKSA9PiBjb3JlLmZvcm1hdEVycm9yKGluc3QsIG1hcHBlciksXG4gICAgICAgICAgICAvLyBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgZmxhdHRlbjoge1xuICAgICAgICAgICAgdmFsdWU6IChtYXBwZXIpID0+IGNvcmUuZmxhdHRlbkVycm9yKGluc3QsIG1hcHBlciksXG4gICAgICAgICAgICAvLyBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgYWRkSXNzdWU6IHtcbiAgICAgICAgICAgIHZhbHVlOiAoaXNzdWUpID0+IGluc3QuaXNzdWVzLnB1c2goaXNzdWUpLFxuICAgICAgICAgICAgLy8gZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIGFkZElzc3Vlczoge1xuICAgICAgICAgICAgdmFsdWU6IChpc3N1ZXMpID0+IGluc3QuaXNzdWVzLnB1c2goLi4uaXNzdWVzKSxcbiAgICAgICAgICAgIC8vIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBpc0VtcHR5OiB7XG4gICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGluc3QuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJpc0VtcHR5XCIsIHtcbiAgICAvLyAgIGdldCgpIHtcbiAgICAvLyAgICAgcmV0dXJuIGluc3QuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICAvLyAgIH0sXG4gICAgLy8gfSk7XG59O1xuZXhwb3J0IGNvbnN0IFpvZEVycm9yID0gY29yZS4kY29uc3RydWN0b3IoXCJab2RFcnJvclwiLCBpbml0aWFsaXplcik7XG5leHBvcnQgY29uc3QgWm9kUmVhbEVycm9yID0gY29yZS4kY29uc3RydWN0b3IoXCJab2RFcnJvclwiLCBpbml0aWFsaXplciwge1xuICAgIFBhcmVudDogRXJyb3IsXG59KTtcbi8vIC8qKiBAZGVwcmVjYXRlZCBVc2UgYHouY29yZS4kWm9kRXJyb3JNYXBDdHhgIGluc3RlYWQuICovXG4vLyBleHBvcnQgdHlwZSBFcnJvck1hcEN0eCA9IGNvcmUuJFpvZEVycm9yTWFwQ3R4O1xuIl0sIm5hbWVzIjpbImNvcmUiLCIkWm9kRXJyb3IiLCJpbml0aWFsaXplciIsImluc3QiLCJpc3N1ZXMiLCJpbml0IiwibmFtZSIsIk9iamVjdCIsImRlZmluZVByb3BlcnRpZXMiLCJmb3JtYXQiLCJ2YWx1ZSIsIm1hcHBlciIsImZvcm1hdEVycm9yIiwiZmxhdHRlbiIsImZsYXR0ZW5FcnJvciIsImFkZElzc3VlIiwiaXNzdWUiLCJwdXNoIiwiYWRkSXNzdWVzIiwiaXNFbXB0eSIsImdldCIsImxlbmd0aCIsIlpvZEVycm9yIiwiJGNvbnN0cnVjdG9yIiwiWm9kUmVhbEVycm9yIiwiUGFyZW50IiwiRXJyb3IiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/errors.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/iso.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/iso.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodISODate: () => (/* binding */ ZodISODate),\n/* harmony export */ ZodISODateTime: () => (/* binding */ ZodISODateTime),\n/* harmony export */ ZodISODuration: () => (/* binding */ ZodISODuration),\n/* harmony export */ ZodISOTime: () => (/* binding */ ZodISOTime),\n/* harmony export */ date: () => (/* binding */ date),\n/* harmony export */ datetime: () => (/* binding */ datetime),\n/* harmony export */ duration: () => (/* binding */ duration),\n/* harmony export */ time: () => (/* binding */ time)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js\");\n/* harmony import */ var _schemas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./schemas.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js\");\n\n\nconst ZodISODateTime = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodISODateTime\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodISODateTime.init(inst, def);\n _schemas_js__WEBPACK_IMPORTED_MODULE_2__.ZodStringFormat.init(inst, def);\n});\nfunction datetime(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__._isoDateTime(ZodISODateTime, params);\n}\nconst ZodISODate = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodISODate\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodISODate.init(inst, def);\n _schemas_js__WEBPACK_IMPORTED_MODULE_2__.ZodStringFormat.init(inst, def);\n});\nfunction date(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__._isoDate(ZodISODate, params);\n}\nconst ZodISOTime = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodISOTime\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodISOTime.init(inst, def);\n _schemas_js__WEBPACK_IMPORTED_MODULE_2__.ZodStringFormat.init(inst, def);\n});\nfunction time(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__._isoTime(ZodISOTime, params);\n}\nconst ZodISODuration = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodISODuration\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodISODuration.init(inst, def);\n _schemas_js__WEBPACK_IMPORTED_MODULE_2__.ZodStringFormat.init(inst, def);\n});\nfunction duration(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__._isoDuration(ZodISODuration, params);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL2lzby5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBeUM7QUFDRDtBQUNqQyxNQUFNRSxpQkFBaUIsV0FBVyxHQUFHRix3REFBaUIsQ0FBQyxrQkFBa0IsQ0FBQ0ksTUFBTUM7SUFDbkZMLDJEQUFvQixDQUFDTyxJQUFJLENBQUNILE1BQU1DO0lBQ2hDSix3REFBdUIsQ0FBQ00sSUFBSSxDQUFDSCxNQUFNQztBQUN2QyxHQUFHO0FBQ0ksU0FBU0ksU0FBU0MsTUFBTTtJQUMzQixPQUFPVix3REFBaUIsQ0FBQ0UsZ0JBQWdCUTtBQUM3QztBQUNPLE1BQU1FLGFBQWEsV0FBVyxHQUFHWix3REFBaUIsQ0FBQyxjQUFjLENBQUNJLE1BQU1DO0lBQzNFTCx1REFBZ0IsQ0FBQ08sSUFBSSxDQUFDSCxNQUFNQztJQUM1Qkosd0RBQXVCLENBQUNNLElBQUksQ0FBQ0gsTUFBTUM7QUFDdkMsR0FBRztBQUNJLFNBQVNTLEtBQUtKLE1BQU07SUFDdkIsT0FBT1Ysb0RBQWEsQ0FBQ1ksWUFBWUY7QUFDckM7QUFDTyxNQUFNTSxhQUFhLFdBQVcsR0FBR2hCLHdEQUFpQixDQUFDLGNBQWMsQ0FBQ0ksTUFBTUM7SUFDM0VMLHVEQUFnQixDQUFDTyxJQUFJLENBQUNILE1BQU1DO0lBQzVCSix3REFBdUIsQ0FBQ00sSUFBSSxDQUFDSCxNQUFNQztBQUN2QyxHQUFHO0FBQ0ksU0FBU2EsS0FBS1IsTUFBTTtJQUN2QixPQUFPVixvREFBYSxDQUFDZ0IsWUFBWU47QUFDckM7QUFDTyxNQUFNVSxpQkFBaUIsV0FBVyxHQUFHcEIsd0RBQWlCLENBQUMsa0JBQWtCLENBQUNJLE1BQU1DO0lBQ25GTCwyREFBb0IsQ0FBQ08sSUFBSSxDQUFDSCxNQUFNQztJQUNoQ0osd0RBQXVCLENBQUNNLElBQUksQ0FBQ0gsTUFBTUM7QUFDdkMsR0FBRztBQUNJLFNBQVNpQixTQUFTWixNQUFNO0lBQzNCLE9BQU9WLHdEQUFpQixDQUFDb0IsZ0JBQWdCVjtBQUM3QyIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NsYXNzaWMvaXNvLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCAqIGFzIHNjaGVtYXMgZnJvbSBcIi4vc2NoZW1hcy5qc1wiO1xuZXhwb3J0IGNvbnN0IFpvZElTT0RhdGVUaW1lID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZElTT0RhdGVUaW1lXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJU09EYXRlVGltZS5pbml0KGluc3QsIGRlZik7XG4gICAgc2NoZW1hcy5ab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZXRpbWUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2lzb0RhdGVUaW1lKFpvZElTT0RhdGVUaW1lLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElTT0RhdGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVNPRGF0ZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSVNPRGF0ZS5pbml0KGluc3QsIGRlZik7XG4gICAgc2NoZW1hcy5ab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGF0ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXNvRGF0ZShab2RJU09EYXRlLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElTT1RpbWUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVNPVGltZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSVNPVGltZS5pbml0KGluc3QsIGRlZik7XG4gICAgc2NoZW1hcy5ab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdGltZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXNvVGltZShab2RJU09UaW1lLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElTT0R1cmF0aW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZElTT0R1cmF0aW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJU09EdXJhdGlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgc2NoZW1hcy5ab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZHVyYXRpb24ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2lzb0R1cmF0aW9uKFpvZElTT0R1cmF0aW9uLCBwYXJhbXMpO1xufVxuIl0sIm5hbWVzIjpbImNvcmUiLCJzY2hlbWFzIiwiWm9kSVNPRGF0ZVRpbWUiLCIkY29uc3RydWN0b3IiLCJpbnN0IiwiZGVmIiwiJFpvZElTT0RhdGVUaW1lIiwiaW5pdCIsIlpvZFN0cmluZ0Zvcm1hdCIsImRhdGV0aW1lIiwicGFyYW1zIiwiX2lzb0RhdGVUaW1lIiwiWm9kSVNPRGF0ZSIsIiRab2RJU09EYXRlIiwiZGF0ZSIsIl9pc29EYXRlIiwiWm9kSVNPVGltZSIsIiRab2RJU09UaW1lIiwidGltZSIsIl9pc29UaW1lIiwiWm9kSVNPRHVyYXRpb24iLCIkWm9kSVNPRHVyYXRpb24iLCJkdXJhdGlvbiIsIl9pc29EdXJhdGlvbiJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/iso.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/parse.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/parse.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ parse: () => (/* binding */ parse),\n/* harmony export */ parseAsync: () => (/* binding */ parseAsync),\n/* harmony export */ safeParse: () => (/* binding */ safeParse),\n/* harmony export */ safeParseAsync: () => (/* binding */ safeParseAsync)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./errors.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/errors.js\");\n\n\nconst parse = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._parse(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst parseAsync = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._parseAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst safeParse = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._safeParse(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\nconst safeParseAsync = /* @__PURE__ */ _core_index_js__WEBPACK_IMPORTED_MODULE_0__._safeParseAsync(_errors_js__WEBPACK_IMPORTED_MODULE_1__.ZodRealError);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL3BhcnNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUF5QztBQUNFO0FBQ3BDLE1BQU1FLFFBQVEsYUFBYSxHQUFHRixrREFBVyxDQUFDQyxvREFBWUEsRUFBRTtBQUN4RCxNQUFNRyxhQUFhLGFBQWEsR0FBR0osdURBQWdCLENBQUNDLG9EQUFZQSxFQUFFO0FBQ2xFLE1BQU1LLFlBQVksYUFBYSxHQUFHTixzREFBZSxDQUFDQyxvREFBWUEsRUFBRTtBQUNoRSxNQUFNTyxpQkFBaUIsYUFBYSxHQUFHUiwyREFBb0IsQ0FBQ0Msb0RBQVlBLEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL3BhcnNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCB7IFpvZFJlYWxFcnJvciB9IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuZXhwb3J0IGNvbnN0IHBhcnNlID0gLyogQF9fUFVSRV9fICovIGNvcmUuX3BhcnNlKFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3QgcGFyc2VBc3luYyA9IC8qIEBfX1BVUkVfXyAqLyBjb3JlLl9wYXJzZUFzeW5jKFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3Qgc2FmZVBhcnNlID0gLyogQF9fUFVSRV9fICovIGNvcmUuX3NhZmVQYXJzZShab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IHNhZmVQYXJzZUFzeW5jID0gLyogQF9fUFVSRV9fICovIGNvcmUuX3NhZmVQYXJzZUFzeW5jKFpvZFJlYWxFcnJvcik7XG4iXSwibmFtZXMiOlsiY29yZSIsIlpvZFJlYWxFcnJvciIsInBhcnNlIiwiX3BhcnNlIiwicGFyc2VBc3luYyIsIl9wYXJzZUFzeW5jIiwic2FmZVBhcnNlIiwiX3NhZmVQYXJzZSIsInNhZmVQYXJzZUFzeW5jIiwiX3NhZmVQYXJzZUFzeW5jIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/parse.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js ***!
|
||
\*******************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodAny: () => (/* binding */ ZodAny),\n/* harmony export */ ZodArray: () => (/* binding */ ZodArray),\n/* harmony export */ ZodBase64: () => (/* binding */ ZodBase64),\n/* harmony export */ ZodBase64URL: () => (/* binding */ ZodBase64URL),\n/* harmony export */ ZodBigInt: () => (/* binding */ ZodBigInt),\n/* harmony export */ ZodBigIntFormat: () => (/* binding */ ZodBigIntFormat),\n/* harmony export */ ZodBoolean: () => (/* binding */ ZodBoolean),\n/* harmony export */ ZodCIDRv4: () => (/* binding */ ZodCIDRv4),\n/* harmony export */ ZodCIDRv6: () => (/* binding */ ZodCIDRv6),\n/* harmony export */ ZodCUID: () => (/* binding */ ZodCUID),\n/* harmony export */ ZodCUID2: () => (/* binding */ ZodCUID2),\n/* harmony export */ ZodCatch: () => (/* binding */ ZodCatch),\n/* harmony export */ ZodCustom: () => (/* binding */ ZodCustom),\n/* harmony export */ ZodCustomStringFormat: () => (/* binding */ ZodCustomStringFormat),\n/* harmony export */ ZodDate: () => (/* binding */ ZodDate),\n/* harmony export */ ZodDefault: () => (/* binding */ ZodDefault),\n/* harmony export */ ZodDiscriminatedUnion: () => (/* binding */ ZodDiscriminatedUnion),\n/* harmony export */ ZodE164: () => (/* binding */ ZodE164),\n/* harmony export */ ZodEmail: () => (/* binding */ ZodEmail),\n/* harmony export */ ZodEmoji: () => (/* binding */ ZodEmoji),\n/* harmony export */ ZodEnum: () => (/* binding */ ZodEnum),\n/* harmony export */ ZodFile: () => (/* binding */ ZodFile),\n/* harmony export */ ZodGUID: () => (/* binding */ ZodGUID),\n/* harmony export */ ZodIPv4: () => (/* binding */ ZodIPv4),\n/* harmony export */ ZodIPv6: () => (/* binding */ ZodIPv6),\n/* harmony export */ ZodIntersection: () => (/* binding */ ZodIntersection),\n/* harmony export */ ZodJWT: () => (/* binding */ ZodJWT),\n/* harmony export */ ZodKSUID: () => (/* binding */ ZodKSUID),\n/* harmony export */ ZodLazy: () => (/* binding */ ZodLazy),\n/* harmony export */ ZodLiteral: () => (/* binding */ ZodLiteral),\n/* harmony export */ ZodMap: () => (/* binding */ ZodMap),\n/* harmony export */ ZodNaN: () => (/* binding */ ZodNaN),\n/* harmony export */ ZodNanoID: () => (/* binding */ ZodNanoID),\n/* harmony export */ ZodNever: () => (/* binding */ ZodNever),\n/* harmony export */ ZodNonOptional: () => (/* binding */ ZodNonOptional),\n/* harmony export */ ZodNull: () => (/* binding */ ZodNull),\n/* harmony export */ ZodNullable: () => (/* binding */ ZodNullable),\n/* harmony export */ ZodNumber: () => (/* binding */ ZodNumber),\n/* harmony export */ ZodNumberFormat: () => (/* binding */ ZodNumberFormat),\n/* harmony export */ ZodObject: () => (/* binding */ ZodObject),\n/* harmony export */ ZodOptional: () => (/* binding */ ZodOptional),\n/* harmony export */ ZodPipe: () => (/* binding */ ZodPipe),\n/* harmony export */ ZodPrefault: () => (/* binding */ ZodPrefault),\n/* harmony export */ ZodPromise: () => (/* binding */ ZodPromise),\n/* harmony export */ ZodReadonly: () => (/* binding */ ZodReadonly),\n/* harmony export */ ZodRecord: () => (/* binding */ ZodRecord),\n/* harmony export */ ZodSet: () => (/* binding */ ZodSet),\n/* harmony export */ ZodString: () => (/* binding */ ZodString),\n/* harmony export */ ZodStringFormat: () => (/* binding */ ZodStringFormat),\n/* harmony export */ ZodSuccess: () => (/* binding */ ZodSuccess),\n/* harmony export */ ZodSymbol: () => (/* binding */ ZodSymbol),\n/* harmony export */ ZodTemplateLiteral: () => (/* binding */ ZodTemplateLiteral),\n/* harmony export */ ZodTransform: () => (/* binding */ ZodTransform),\n/* harmony export */ ZodTuple: () => (/* binding */ ZodTuple),\n/* harmony export */ ZodType: () => (/* binding */ ZodType),\n/* harmony export */ ZodULID: () => (/* binding */ ZodULID),\n/* harmony export */ ZodURL: () => (/* binding */ ZodURL),\n/* harmony export */ ZodUUID: () => (/* binding */ ZodUUID),\n/* harmony export */ ZodUndefined: () => (/* binding */ ZodUndefined),\n/* harmony export */ ZodUnion: () => (/* binding */ ZodUnion),\n/* harmony export */ ZodUnknown: () => (/* binding */ ZodUnknown),\n/* harmony export */ ZodVoid: () => (/* binding */ ZodVoid),\n/* harmony export */ ZodXID: () => (/* binding */ ZodXID),\n/* harmony export */ _ZodString: () => (/* binding */ _ZodString),\n/* harmony export */ _default: () => (/* binding */ _default),\n/* harmony export */ any: () => (/* binding */ any),\n/* harmony export */ array: () => (/* binding */ array),\n/* harmony export */ base64: () => (/* binding */ base64),\n/* harmony export */ base64url: () => (/* binding */ base64url),\n/* harmony export */ bigint: () => (/* binding */ bigint),\n/* harmony export */ boolean: () => (/* binding */ boolean),\n/* harmony export */ \"catch\": () => (/* binding */ _catch),\n/* harmony export */ check: () => (/* binding */ check),\n/* harmony export */ cidrv4: () => (/* binding */ cidrv4),\n/* harmony export */ cidrv6: () => (/* binding */ cidrv6),\n/* harmony export */ cuid: () => (/* binding */ cuid),\n/* harmony export */ cuid2: () => (/* binding */ cuid2),\n/* harmony export */ custom: () => (/* binding */ custom),\n/* harmony export */ date: () => (/* binding */ date),\n/* harmony export */ discriminatedUnion: () => (/* binding */ discriminatedUnion),\n/* harmony export */ e164: () => (/* binding */ e164),\n/* harmony export */ email: () => (/* binding */ email),\n/* harmony export */ emoji: () => (/* binding */ emoji),\n/* harmony export */ \"enum\": () => (/* binding */ _enum),\n/* harmony export */ file: () => (/* binding */ file),\n/* harmony export */ float32: () => (/* binding */ float32),\n/* harmony export */ float64: () => (/* binding */ float64),\n/* harmony export */ guid: () => (/* binding */ guid),\n/* harmony export */ \"instanceof\": () => (/* binding */ _instanceof),\n/* harmony export */ int: () => (/* binding */ int),\n/* harmony export */ int32: () => (/* binding */ int32),\n/* harmony export */ int64: () => (/* binding */ int64),\n/* harmony export */ intersection: () => (/* binding */ intersection),\n/* harmony export */ ipv4: () => (/* binding */ ipv4),\n/* harmony export */ ipv6: () => (/* binding */ ipv6),\n/* harmony export */ json: () => (/* binding */ json),\n/* harmony export */ jwt: () => (/* binding */ jwt),\n/* harmony export */ keyof: () => (/* binding */ keyof),\n/* harmony export */ ksuid: () => (/* binding */ ksuid),\n/* harmony export */ lazy: () => (/* binding */ lazy),\n/* harmony export */ literal: () => (/* binding */ literal),\n/* harmony export */ looseObject: () => (/* binding */ looseObject),\n/* harmony export */ map: () => (/* binding */ map),\n/* harmony export */ nan: () => (/* binding */ nan),\n/* harmony export */ nanoid: () => (/* binding */ nanoid),\n/* harmony export */ nativeEnum: () => (/* binding */ nativeEnum),\n/* harmony export */ never: () => (/* binding */ never),\n/* harmony export */ nonoptional: () => (/* binding */ nonoptional),\n/* harmony export */ \"null\": () => (/* binding */ _null),\n/* harmony export */ nullable: () => (/* binding */ nullable),\n/* harmony export */ nullish: () => (/* binding */ nullish),\n/* harmony export */ number: () => (/* binding */ number),\n/* harmony export */ object: () => (/* binding */ object),\n/* harmony export */ optional: () => (/* binding */ optional),\n/* harmony export */ partialRecord: () => (/* binding */ partialRecord),\n/* harmony export */ pipe: () => (/* binding */ pipe),\n/* harmony export */ prefault: () => (/* binding */ prefault),\n/* harmony export */ preprocess: () => (/* binding */ preprocess),\n/* harmony export */ promise: () => (/* binding */ promise),\n/* harmony export */ readonly: () => (/* binding */ readonly),\n/* harmony export */ record: () => (/* binding */ record),\n/* harmony export */ refine: () => (/* binding */ refine),\n/* harmony export */ set: () => (/* binding */ set),\n/* harmony export */ strictObject: () => (/* binding */ strictObject),\n/* harmony export */ string: () => (/* binding */ string),\n/* harmony export */ stringFormat: () => (/* binding */ stringFormat),\n/* harmony export */ stringbool: () => (/* binding */ stringbool),\n/* harmony export */ success: () => (/* binding */ success),\n/* harmony export */ superRefine: () => (/* binding */ superRefine),\n/* harmony export */ symbol: () => (/* binding */ symbol),\n/* harmony export */ templateLiteral: () => (/* binding */ templateLiteral),\n/* harmony export */ transform: () => (/* binding */ transform),\n/* harmony export */ tuple: () => (/* binding */ tuple),\n/* harmony export */ uint32: () => (/* binding */ uint32),\n/* harmony export */ uint64: () => (/* binding */ uint64),\n/* harmony export */ ulid: () => (/* binding */ ulid),\n/* harmony export */ undefined: () => (/* binding */ _undefined),\n/* harmony export */ union: () => (/* binding */ union),\n/* harmony export */ unknown: () => (/* binding */ unknown),\n/* harmony export */ url: () => (/* binding */ url),\n/* harmony export */ uuid: () => (/* binding */ uuid),\n/* harmony export */ uuidv4: () => (/* binding */ uuidv4),\n/* harmony export */ uuidv6: () => (/* binding */ uuidv6),\n/* harmony export */ uuidv7: () => (/* binding */ uuidv7),\n/* harmony export */ \"void\": () => (/* binding */ _void),\n/* harmony export */ xid: () => (/* binding */ xid)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js\");\n/* harmony import */ var _checks_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./checks.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js\");\n/* harmony import */ var _iso_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./iso.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/iso.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parse.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/parse.js\");\n\n\n\n\n\nconst ZodType = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodType\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodType.init(inst, def);\n inst.def = def;\n Object.defineProperty(inst, \"_def\", {\n value: def\n });\n // base methods\n inst.check = (...checks)=>{\n return inst.clone({\n ...def,\n checks: [\n ...def.checks ?? [],\n ...checks.map((ch)=>typeof ch === \"function\" ? {\n _zod: {\n check: ch,\n def: {\n check: \"custom\"\n },\n onattach: []\n }\n } : ch)\n ]\n });\n };\n inst.clone = (def, params)=>_core_index_js__WEBPACK_IMPORTED_MODULE_2__.clone(inst, def, params);\n inst.brand = ()=>inst;\n inst.register = (reg, meta)=>{\n reg.add(inst, meta);\n return inst;\n };\n // parsing\n inst.parse = (data, params)=>_parse_js__WEBPACK_IMPORTED_MODULE_3__.parse(inst, data, params, {\n callee: inst.parse\n });\n inst.safeParse = (data, params)=>_parse_js__WEBPACK_IMPORTED_MODULE_3__.safeParse(inst, data, params);\n inst.parseAsync = async (data, params)=>_parse_js__WEBPACK_IMPORTED_MODULE_3__.parseAsync(inst, data, params, {\n callee: inst.parseAsync\n });\n inst.safeParseAsync = async (data, params)=>_parse_js__WEBPACK_IMPORTED_MODULE_3__.safeParseAsync(inst, data, params);\n inst.spa = inst.safeParseAsync;\n // refinements\n inst.refine = (check, params)=>inst.check(refine(check, params));\n inst.superRefine = (refinement)=>inst.check(superRefine(refinement));\n inst.overwrite = (fn)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._overwrite(fn));\n // wrappers\n inst.optional = ()=>optional(inst);\n inst.nullable = ()=>nullable(inst);\n inst.nullish = ()=>optional(nullable(inst));\n inst.nonoptional = (params)=>nonoptional(inst, params);\n inst.array = ()=>array(inst);\n inst.or = (arg)=>union([\n inst,\n arg\n ]);\n inst.and = (arg)=>intersection(inst, arg);\n inst.transform = (tx)=>pipe(inst, transform(tx));\n inst.default = (def)=>_default(inst, def);\n inst.prefault = (def)=>prefault(inst, def);\n // inst.coalesce = (def, params) => coalesce(inst, def, params);\n inst.catch = (params)=>_catch(inst, params);\n inst.pipe = (target)=>pipe(inst, target);\n inst.readonly = ()=>readonly(inst);\n // meta\n inst.describe = (description)=>{\n const cl = inst.clone();\n _core_index_js__WEBPACK_IMPORTED_MODULE_5__.globalRegistry.add(cl, {\n description\n });\n return cl;\n };\n Object.defineProperty(inst, \"description\", {\n get () {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_5__.globalRegistry.get(inst)?.description;\n },\n configurable: true\n });\n inst.meta = (...args)=>{\n if (args.length === 0) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_5__.globalRegistry.get(inst);\n }\n const cl = inst.clone();\n _core_index_js__WEBPACK_IMPORTED_MODULE_5__.globalRegistry.add(cl, args[0]);\n return cl;\n };\n // helpers\n inst.isOptional = ()=>inst.safeParse(undefined).success;\n inst.isNullable = ()=>inst.safeParse(null).success;\n return inst;\n});\n/** @internal */ const _ZodString = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"_ZodString\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodString.init(inst, def);\n ZodType.init(inst, def);\n const bag = inst._zod.bag;\n inst.format = bag.format ?? null;\n inst.minLength = bag.minimum ?? null;\n inst.maxLength = bag.maximum ?? null;\n // validations\n inst.regex = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._regex(...args));\n inst.includes = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._includes(...args));\n inst.startsWith = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._startsWith(...args));\n inst.endsWith = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._endsWith(...args));\n inst.min = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._minLength(...args));\n inst.max = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._maxLength(...args));\n inst.length = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._length(...args));\n inst.nonempty = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._minLength(1, ...args));\n inst.lowercase = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lowercase(params));\n inst.uppercase = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._uppercase(params));\n // transforms\n inst.trim = ()=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._trim());\n inst.normalize = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._normalize(...args));\n inst.toLowerCase = ()=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._toLowerCase());\n inst.toUpperCase = ()=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._toUpperCase());\n});\nconst ZodString = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodString\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodString.init(inst, def);\n _ZodString.init(inst, def);\n inst.email = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._email(ZodEmail, params));\n inst.url = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._url(ZodURL, params));\n inst.jwt = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._jwt(ZodJWT, params));\n inst.emoji = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._emoji(ZodEmoji, params));\n inst.guid = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._guid(ZodGUID, params));\n inst.uuid = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._uuid(ZodUUID, params));\n inst.uuidv4 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._uuidv4(ZodUUID, params));\n inst.uuidv6 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._uuidv6(ZodUUID, params));\n inst.uuidv7 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._uuidv7(ZodUUID, params));\n inst.nanoid = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._nanoid(ZodNanoID, params));\n inst.guid = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._guid(ZodGUID, params));\n inst.cuid = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._cuid(ZodCUID, params));\n inst.cuid2 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._cuid2(ZodCUID2, params));\n inst.ulid = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._ulid(ZodULID, params));\n inst.base64 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._base64(ZodBase64, params));\n inst.base64url = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._base64url(ZodBase64URL, params));\n inst.xid = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._xid(ZodXID, params));\n inst.ksuid = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._ksuid(ZodKSUID, params));\n inst.ipv4 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._ipv4(ZodIPv4, params));\n inst.ipv6 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._ipv6(ZodIPv6, params));\n inst.cidrv4 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._cidrv4(ZodCIDRv4, params));\n inst.cidrv6 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._cidrv6(ZodCIDRv6, params));\n inst.e164 = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._e164(ZodE164, params));\n // iso\n inst.datetime = (params)=>inst.check(_iso_js__WEBPACK_IMPORTED_MODULE_6__.datetime(params));\n inst.date = (params)=>inst.check(_iso_js__WEBPACK_IMPORTED_MODULE_6__.date(params));\n inst.time = (params)=>inst.check(_iso_js__WEBPACK_IMPORTED_MODULE_6__.time(params));\n inst.duration = (params)=>inst.check(_iso_js__WEBPACK_IMPORTED_MODULE_6__.duration(params));\n});\nfunction string(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._string(ZodString, params);\n}\nconst ZodStringFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodStringFormat\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodStringFormat.init(inst, def);\n _ZodString.init(inst, def);\n});\nconst ZodEmail = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodEmail\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodEmail.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction email(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._email(ZodEmail, params);\n}\nconst ZodGUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodGUID\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodGUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction guid(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._guid(ZodGUID, params);\n}\nconst ZodUUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodUUID\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodUUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction uuid(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._uuid(ZodUUID, params);\n}\nfunction uuidv4(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nfunction uuidv6(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nfunction uuidv7(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._uuidv7(ZodUUID, params);\n}\nconst ZodURL = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodURL\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodURL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction url(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._url(ZodURL, params);\n}\nconst ZodEmoji = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodEmoji\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodEmoji.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction emoji(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._emoji(ZodEmoji, params);\n}\nconst ZodNanoID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNanoID\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNanoID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction nanoid(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._nanoid(ZodNanoID, params);\n}\nconst ZodCUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCUID\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction cuid(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._cuid(ZodCUID, params);\n}\nconst ZodCUID2 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCUID2\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCUID2.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction cuid2(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._cuid2(ZodCUID2, params);\n}\nconst ZodULID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodULID\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodULID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction ulid(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._ulid(ZodULID, params);\n}\nconst ZodXID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodXID\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodXID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction xid(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._xid(ZodXID, params);\n}\nconst ZodKSUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodKSUID\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodKSUID.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction ksuid(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._ksuid(ZodKSUID, params);\n}\nconst ZodIPv4 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodIPv4\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodIPv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction ipv4(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._ipv4(ZodIPv4, params);\n}\nconst ZodIPv6 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodIPv6\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodIPv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction ipv6(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._ipv6(ZodIPv6, params);\n}\nconst ZodCIDRv4 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCIDRv4\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCIDRv4.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction cidrv4(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._cidrv4(ZodCIDRv4, params);\n}\nconst ZodCIDRv6 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCIDRv6\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCIDRv6.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction cidrv6(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._cidrv6(ZodCIDRv6, params);\n}\nconst ZodBase64 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBase64\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBase64.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction base64(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._base64(ZodBase64, params);\n}\nconst ZodBase64URL = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBase64URL\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBase64URL.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction base64url(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._base64url(ZodBase64URL, params);\n}\nconst ZodE164 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodE164\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodE164.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction e164(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._e164(ZodE164, params);\n}\nconst ZodJWT = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodJWT\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodJWT.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction jwt(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._jwt(ZodJWT, params);\n}\nconst ZodCustomStringFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCustomStringFormat\", (inst, def)=>{\n // ZodStringFormat.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCustomStringFormat.init(inst, def);\n ZodStringFormat.init(inst, def);\n});\nfunction stringFormat(format, fnOrRegex, _params = {}) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nconst ZodNumber = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNumber\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNumber.init(inst, def);\n ZodType.init(inst, def);\n inst.gt = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gt(value, params));\n inst.gte = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gte(value, params));\n inst.min = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gte(value, params));\n inst.lt = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lt(value, params));\n inst.lte = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lte(value, params));\n inst.max = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lte(value, params));\n inst.int = (params)=>inst.check(int(params));\n inst.safe = (params)=>inst.check(int(params));\n inst.positive = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gt(0, params));\n inst.nonnegative = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gte(0, params));\n inst.negative = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lt(0, params));\n inst.nonpositive = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lte(0, params));\n inst.multipleOf = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._multipleOf(value, params));\n inst.step = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._multipleOf(value, params));\n // inst.finite = (params) => inst.check(core.finite(params));\n inst.finite = ()=>inst;\n const bag = inst._zod.bag;\n inst.minValue = Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n inst.maxValue = Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n inst.isFinite = true;\n inst.format = bag.format ?? null;\n});\nfunction number(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._number(ZodNumber, params);\n}\nconst ZodNumberFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNumberFormat\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNumberFormat.init(inst, def);\n ZodNumber.init(inst, def);\n});\nfunction int(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._int(ZodNumberFormat, params);\n}\nfunction float32(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._float32(ZodNumberFormat, params);\n}\nfunction float64(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._float64(ZodNumberFormat, params);\n}\nfunction int32(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._int32(ZodNumberFormat, params);\n}\nfunction uint32(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._uint32(ZodNumberFormat, params);\n}\nconst ZodBoolean = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBoolean\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBoolean.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction boolean(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._boolean(ZodBoolean, params);\n}\nconst ZodBigInt = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBigInt\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBigInt.init(inst, def);\n ZodType.init(inst, def);\n inst.gte = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gte(value, params));\n inst.min = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gte(value, params));\n inst.gt = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gt(value, params));\n inst.gte = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gte(value, params));\n inst.min = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gte(value, params));\n inst.lt = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lt(value, params));\n inst.lte = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lte(value, params));\n inst.max = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lte(value, params));\n inst.positive = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gt(BigInt(0), params));\n inst.negative = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lt(BigInt(0), params));\n inst.nonpositive = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lte(BigInt(0), params));\n inst.nonnegative = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gte(BigInt(0), params));\n inst.multipleOf = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._multipleOf(value, params));\n const bag = inst._zod.bag;\n inst.minValue = bag.minimum ?? null;\n inst.maxValue = bag.maximum ?? null;\n inst.format = bag.format ?? null;\n});\nfunction bigint(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._bigint(ZodBigInt, params);\n}\nconst ZodBigIntFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodBigIntFormat\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBigIntFormat.init(inst, def);\n ZodBigInt.init(inst, def);\n});\n// int64\nfunction int64(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._int64(ZodBigIntFormat, params);\n}\n// uint64\nfunction uint64(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._uint64(ZodBigIntFormat, params);\n}\nconst ZodSymbol = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodSymbol\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodSymbol.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction symbol(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._symbol(ZodSymbol, params);\n}\nconst ZodUndefined = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodUndefined\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodUndefined.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _undefined(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._undefined(ZodUndefined, params);\n}\n\nconst ZodNull = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNull\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNull.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _null(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._null(ZodNull, params);\n}\n\nconst ZodAny = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodAny\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodAny.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction any() {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._any(ZodAny);\n}\nconst ZodUnknown = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodUnknown\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodUnknown.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction unknown() {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._unknown(ZodUnknown);\n}\nconst ZodNever = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNever\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNever.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction never(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._never(ZodNever, params);\n}\nconst ZodVoid = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodVoid\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodVoid.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction _void(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._void(ZodVoid, params);\n}\n\nconst ZodDate = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodDate\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodDate.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._gte(value, params));\n inst.max = (value, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._lte(value, params));\n const c = inst._zod.bag;\n inst.minDate = c.minimum ? new Date(c.minimum) : null;\n inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nfunction date(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._date(ZodDate, params);\n}\nconst ZodArray = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodArray\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodArray.init(inst, def);\n ZodType.init(inst, def);\n inst.element = def.element;\n inst.min = (minLength, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._minLength(minLength, params));\n inst.nonempty = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._minLength(1, params));\n inst.max = (maxLength, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._maxLength(maxLength, params));\n inst.length = (len, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._length(len, params));\n inst.unwrap = ()=>inst.element;\n});\nfunction array(element, params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._array(ZodArray, element, params);\n}\n// .keyof\nfunction keyof(schema) {\n const shape = schema._zod.def.shape;\n return literal(Object.keys(shape));\n}\nconst ZodObject = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodObject\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodObject.init(inst, def);\n ZodType.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst, \"shape\", ()=>def.shape);\n inst.keyof = ()=>_enum(Object.keys(inst._zod.def.shape));\n inst.catchall = (catchall)=>inst.clone({\n ...inst._zod.def,\n catchall: catchall\n });\n inst.passthrough = ()=>inst.clone({\n ...inst._zod.def,\n catchall: unknown()\n });\n // inst.nonstrict = () => inst.clone({ ...inst._zod.def, catchall: api.unknown() });\n inst.loose = ()=>inst.clone({\n ...inst._zod.def,\n catchall: unknown()\n });\n inst.strict = ()=>inst.clone({\n ...inst._zod.def,\n catchall: never()\n });\n inst.strip = ()=>inst.clone({\n ...inst._zod.def,\n catchall: undefined\n });\n inst.extend = (incoming)=>{\n return _core_index_js__WEBPACK_IMPORTED_MODULE_2__.extend(inst, incoming);\n };\n inst.merge = (other)=>_core_index_js__WEBPACK_IMPORTED_MODULE_2__.merge(inst, other);\n inst.pick = (mask)=>_core_index_js__WEBPACK_IMPORTED_MODULE_2__.pick(inst, mask);\n inst.omit = (mask)=>_core_index_js__WEBPACK_IMPORTED_MODULE_2__.omit(inst, mask);\n inst.partial = (...args)=>_core_index_js__WEBPACK_IMPORTED_MODULE_2__.partial(ZodOptional, inst, args[0]);\n inst.required = (...args)=>_core_index_js__WEBPACK_IMPORTED_MODULE_2__.required(ZodNonOptional, inst, args[0]);\n});\nfunction object(shape, params) {\n const def = {\n type: \"object\",\n get shape () {\n _core_index_js__WEBPACK_IMPORTED_MODULE_2__.assignProp(this, \"shape\", {\n ...shape\n });\n return this.shape;\n },\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n };\n return new ZodObject(def);\n}\n// strictObject\nfunction strictObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n get shape () {\n _core_index_js__WEBPACK_IMPORTED_MODULE_2__.assignProp(this, \"shape\", {\n ...shape\n });\n return this.shape;\n },\n catchall: never(),\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\n// looseObject\nfunction looseObject(shape, params) {\n return new ZodObject({\n type: \"object\",\n get shape () {\n _core_index_js__WEBPACK_IMPORTED_MODULE_2__.assignProp(this, \"shape\", {\n ...shape\n });\n return this.shape;\n },\n catchall: unknown(),\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodUnion = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodUnion\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodUnion.init(inst, def);\n ZodType.init(inst, def);\n inst.options = def.options;\n});\nfunction union(options, params) {\n return new ZodUnion({\n type: \"union\",\n options: options,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodDiscriminatedUnion = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodDiscriminatedUnion\", (inst, def)=>{\n ZodUnion.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodDiscriminatedUnion.init(inst, def);\n});\nfunction discriminatedUnion(discriminator, options, params) {\n // const [options, params] = args;\n return new ZodDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodIntersection = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodIntersection\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodIntersection.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction intersection(left, right) {\n return new ZodIntersection({\n type: \"intersection\",\n left: left,\n right: right\n });\n}\nconst ZodTuple = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodTuple\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodTuple.init(inst, def);\n ZodType.init(inst, def);\n inst.rest = (rest)=>inst.clone({\n ...inst._zod.def,\n rest: rest\n });\n});\nfunction tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodTuple({\n type: \"tuple\",\n items: items,\n rest,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodRecord = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodRecord\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRecord.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nfunction record(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nfunction partialRecord(keyType, valueType, params) {\n return new ZodRecord({\n type: \"record\",\n keyType: union([\n keyType,\n never()\n ]),\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodMap = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMap\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodMap.init(inst, def);\n ZodType.init(inst, def);\n inst.keyType = def.keyType;\n inst.valueType = def.valueType;\n});\nfunction map(keyType, valueType, params) {\n return new ZodMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodSet = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodSet\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodSet.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._minSize(...args));\n inst.nonempty = (params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._minSize(1, params));\n inst.max = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._maxSize(...args));\n inst.size = (...args)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._size(...args));\n});\nfunction set(valueType, params) {\n return new ZodSet({\n type: \"set\",\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodEnum = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodEnum\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodEnum.init(inst, def);\n ZodType.init(inst, def);\n inst.enum = def.entries;\n inst.options = Object.values(def.entries);\n const keys = new Set(Object.keys(def.entries));\n inst.extract = (values, params)=>{\n const newEntries = {};\n for (const value of values){\n if (keys.has(value)) {\n newEntries[value] = def.entries[value];\n } else throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params),\n entries: newEntries\n });\n };\n inst.exclude = (values, params)=>{\n const newEntries = {\n ...def.entries\n };\n for (const value of values){\n if (keys.has(value)) {\n delete newEntries[value];\n } else throw new Error(`Key ${value} not found in enum`);\n }\n return new ZodEnum({\n ...def,\n checks: [],\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params),\n entries: newEntries\n });\n };\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v)=>[\n v,\n v\n ])) : values;\n return new ZodEnum({\n type: \"enum\",\n entries,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\n\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */ function nativeEnum(entries, params) {\n return new ZodEnum({\n type: \"enum\",\n entries,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodLiteral = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodLiteral\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodLiteral.init(inst, def);\n ZodType.init(inst, def);\n inst.values = new Set(def.values);\n Object.defineProperty(inst, \"value\", {\n get () {\n if (def.values.length > 1) {\n throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n }\n return def.values[0];\n }\n });\n});\nfunction literal(value, params) {\n return new ZodLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [\n value\n ],\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodFile = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodFile\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodFile.init(inst, def);\n ZodType.init(inst, def);\n inst.min = (size, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._minSize(size, params));\n inst.max = (size, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._maxSize(size, params));\n inst.mime = (types, params)=>inst.check(_checks_js__WEBPACK_IMPORTED_MODULE_4__._mime(Array.isArray(types) ? types : [\n types\n ], params));\n});\nfunction file(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._file(ZodFile, params);\n}\nconst ZodTransform = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodTransform\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodTransform.init(inst, def);\n ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx)=>{\n payload.addIssue = (issue)=>{\n if (typeof issue === \"string\") {\n payload.issues.push(_core_index_js__WEBPACK_IMPORTED_MODULE_2__.issue(issue, payload.value, def));\n } else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal) _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = inst);\n _issue.continue ?? (_issue.continue = true);\n payload.issues.push(_core_index_js__WEBPACK_IMPORTED_MODULE_2__.issue(_issue));\n }\n };\n const output = def.transform(payload.value, payload);\n if (output instanceof Promise) {\n return output.then((output)=>{\n payload.value = output;\n return payload;\n });\n }\n payload.value = output;\n return payload;\n };\n});\nfunction transform(fn) {\n return new ZodTransform({\n type: \"transform\",\n transform: fn\n });\n}\nconst ZodOptional = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodOptional\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = ()=>inst._zod.def.innerType;\n});\nfunction optional(innerType) {\n return new ZodOptional({\n type: \"optional\",\n innerType: innerType\n });\n}\nconst ZodNullable = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNullable\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNullable.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = ()=>inst._zod.def.innerType;\n});\nfunction nullable(innerType) {\n return new ZodNullable({\n type: \"nullable\",\n innerType: innerType\n });\n}\n// nullish\nfunction nullish(innerType) {\n return optional(nullable(innerType));\n}\nconst ZodDefault = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodDefault\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodDefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = ()=>inst._zod.def.innerType;\n inst.removeDefault = inst.unwrap;\n});\nfunction _default(innerType, defaultValue) {\n return new ZodDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue () {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n }\n });\n}\nconst ZodPrefault = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodPrefault\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodPrefault.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = ()=>inst._zod.def.innerType;\n});\nfunction prefault(innerType, defaultValue) {\n return new ZodPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue () {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n }\n });\n}\nconst ZodNonOptional = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNonOptional\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNonOptional.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = ()=>inst._zod.def.innerType;\n});\nfunction nonoptional(innerType, params) {\n return new ZodNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodSuccess = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodSuccess\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodSuccess.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = ()=>inst._zod.def.innerType;\n});\nfunction success(innerType) {\n return new ZodSuccess({\n type: \"success\",\n innerType: innerType\n });\n}\nconst ZodCatch = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCatch\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCatch.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = ()=>inst._zod.def.innerType;\n inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n return new ZodCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: typeof catchValue === \"function\" ? catchValue : ()=>catchValue\n });\n}\n\nconst ZodNaN = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodNaN\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNaN.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction nan(params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._nan(ZodNaN, params);\n}\nconst ZodPipe = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodPipe\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodPipe.init(inst, def);\n ZodType.init(inst, def);\n inst.in = def.in;\n inst.out = def.out;\n});\nfunction pipe(in_, out) {\n return new ZodPipe({\n type: \"pipe\",\n in: in_,\n out: out\n });\n}\nconst ZodReadonly = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodReadonly\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodReadonly.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction readonly(innerType) {\n return new ZodReadonly({\n type: \"readonly\",\n innerType: innerType\n });\n}\nconst ZodTemplateLiteral = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodTemplateLiteral\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodTemplateLiteral.init(inst, def);\n ZodType.init(inst, def);\n});\nfunction templateLiteral(parts, params) {\n return new ZodTemplateLiteral({\n type: \"template_literal\",\n parts,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n}\nconst ZodLazy = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodLazy\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodLazy.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = ()=>inst._zod.def.getter();\n});\nfunction lazy(getter) {\n return new ZodLazy({\n type: \"lazy\",\n getter: getter\n });\n}\nconst ZodPromise = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodPromise\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodPromise.init(inst, def);\n ZodType.init(inst, def);\n inst.unwrap = ()=>inst._zod.def.innerType;\n});\nfunction promise(innerType) {\n return new ZodPromise({\n type: \"promise\",\n innerType: innerType\n });\n}\nconst ZodCustom = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodCustom\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCustom.init(inst, def);\n ZodType.init(inst, def);\n});\n// custom checks\nfunction check(fn) {\n const ch = new _core_index_js__WEBPACK_IMPORTED_MODULE_7__.$ZodCheck({\n check: \"custom\"\n });\n ch._zod.check = fn;\n return ch;\n}\nfunction custom(fn, _params) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._custom(ZodCustom, fn ?? (()=>true), _params);\n}\nfunction refine(fn, _params = {}) {\n return _checks_js__WEBPACK_IMPORTED_MODULE_4__._refine(ZodCustom, fn, _params);\n}\n// superRefine\nfunction superRefine(fn) {\n const ch = check((payload)=>{\n payload.addIssue = (issue)=>{\n if (typeof issue === \"string\") {\n payload.issues.push(_core_index_js__WEBPACK_IMPORTED_MODULE_2__.issue(issue, payload.value, ch._zod.def));\n } else {\n // for Zod 3 backwards compatibility\n const _issue = issue;\n if (_issue.fatal) _issue.continue = false;\n _issue.code ?? (_issue.code = \"custom\");\n _issue.input ?? (_issue.input = payload.value);\n _issue.inst ?? (_issue.inst = ch);\n _issue.continue ?? (_issue.continue = !ch._zod.def.abort);\n payload.issues.push(_core_index_js__WEBPACK_IMPORTED_MODULE_2__.issue(_issue));\n }\n };\n return fn(payload.value, payload);\n });\n return ch;\n}\nfunction _instanceof(cls, params = {\n error: `Input not instance of ${cls.name}`\n}) {\n const inst = new ZodCustom({\n type: \"custom\",\n check: \"custom\",\n fn: (data)=>data instanceof cls,\n abort: true,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_2__.normalizeParams(params)\n });\n inst._zod.bag.Class = cls;\n return inst;\n}\n\n// stringbool\nconst stringbool = (...args)=>_checks_js__WEBPACK_IMPORTED_MODULE_4__._stringbool({\n Pipe: ZodPipe,\n Boolean: ZodBoolean,\n String: ZodString,\n Transform: ZodTransform\n }, ...args);\nfunction json(params) {\n const jsonSchema = lazy(()=>{\n return union([\n string(params),\n number(),\n boolean(),\n _null(),\n array(jsonSchema),\n record(string(), jsonSchema)\n ]);\n });\n return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nfunction preprocess(fn, schema) {\n return pipe(transform(fn), schema);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL3NjaGVtYXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF5QztBQUNEO0FBQ0Y7QUFDTjtBQUNJO0FBQzdCLE1BQU1LLFVBQVUsV0FBVyxHQUFHTCx3REFBaUIsQ0FBQyxXQUFXLENBQUNPLE1BQU1DO0lBQ3JFUixvREFBYSxDQUFDVSxJQUFJLENBQUNILE1BQU1DO0lBQ3pCRCxLQUFLQyxHQUFHLEdBQUdBO0lBQ1hHLE9BQU9DLGNBQWMsQ0FBQ0wsTUFBTSxRQUFRO1FBQUVNLE9BQU9MO0lBQUk7SUFDakQsZUFBZTtJQUNmRCxLQUFLTyxLQUFLLEdBQUcsQ0FBQyxHQUFHWjtRQUNiLE9BQU9LLEtBQUtRLEtBQUssQ0FBQztZQUNkLEdBQUdQLEdBQUc7WUFDTk4sUUFBUTttQkFDQU0sSUFBSU4sTUFBTSxJQUFJLEVBQUU7bUJBQ2pCQSxPQUFPYyxHQUFHLENBQUMsQ0FBQ0MsS0FBTyxPQUFPQSxPQUFPLGFBQWE7d0JBQUVDLE1BQU07NEJBQUVKLE9BQU9HOzRCQUFJVCxLQUFLO2dDQUFFTSxPQUFPOzRCQUFTOzRCQUFHSyxVQUFVLEVBQUU7d0JBQUM7b0JBQUUsSUFBSUY7YUFDdEg7UUFDTDtJQUdKO0lBQ0FWLEtBQUtRLEtBQUssR0FBRyxDQUFDUCxLQUFLWSxTQUFXcEIsaURBQVUsQ0FBQ08sTUFBTUMsS0FBS1k7SUFDcERiLEtBQUtjLEtBQUssR0FBRyxJQUFNZDtJQUNuQkEsS0FBS2UsUUFBUSxHQUFJLENBQUNDLEtBQUtDO1FBQ25CRCxJQUFJRSxHQUFHLENBQUNsQixN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QUFLc1A7QUFDL0IiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jbGFzc2ljL3NjaGVtYXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29yZSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gXCIuLi9jb3JlL2luZGV4LmpzXCI7XG5pbXBvcnQgKiBhcyBjaGVja3MgZnJvbSBcIi4vY2hlY2tzLmpzXCI7XG5pbXBvcnQgKiBhcyBpc28gZnJvbSBcIi4vaXNvLmpzXCI7XG5pbXBvcnQgKiBhcyBwYXJzZSBmcm9tIFwiLi9wYXJzZS5qc1wiO1xuZXhwb3J0IGNvbnN0IFpvZFR5cGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVHlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5kZWYgPSBkZWY7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIFwiX2RlZlwiLCB7IHZhbHVlOiBkZWYgfSk7XG4gICAgLy8gYmFzZSBtZXRob2RzXG4gICAgaW5zdC5jaGVjayA9ICguLi5jaGVja3MpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc3QuY2xvbmUoe1xuICAgICAgICAgICAgLi4uZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbXG4gICAgICAgICAgICAgICAgLi4uKGRlZi5jaGVja3MgPz8gW10pLFxuICAgICAgICAgICAgICAgIC4uLmNoZWNrcy5tYXAoKGNoKSA9PiB0eXBlb2YgY2ggPT09IFwiZnVuY3Rpb25cIiA/IHsgX3pvZDogeyBjaGVjazogY2gsIGRlZjogeyBjaGVjazogXCJjdXN0b21cIiB9LCBvbmF0dGFjaDogW10gfSB9IDogY2gpLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfVxuICAgICAgICAvLyB7IHBhcmVudDogdHJ1ZSB9XG4gICAgICAgICk7XG4gICAgfTtcbiAgICBpbnN0LmNsb25lID0gKGRlZiwgcGFyYW1zKSA9PiBjb3JlLmNsb25lKGluc3QsIGRlZiwgcGFyYW1zKTtcbiAgICBpbnN0LmJyYW5kID0gKCkgPT4gaW5zdDtcbiAgICBpbnN0LnJlZ2lzdGVyID0gKChyZWcsIG1ldGEpID0+IHtcbiAgICAgICAgcmVnLmFkZChpbnN0LCBtZXRhKTtcbiAgICAgICAgcmV0dXJuIGluc3Q7XG4gICAgfSk7XG4gICAgLy8gcGFyc2luZ1xuICAgIGluc3QucGFyc2UgPSAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5wYXJzZShpbnN0LCBkYXRhLCBwYXJhbXMsIHsgY2FsbGVlOiBpbnN0LnBhcnNlIH0pO1xuICAgIGluc3Quc2FmZVBhcnNlID0gKGRhdGEsIHBhcmFtcykgPT4gcGFyc2Uuc2FmZVBhcnNlKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgaW5zdC5wYXJzZUFzeW5jID0gYXN5bmMgKGRhdGEsIHBhcmFtcykgPT4gcGFyc2UucGFyc2VBc3luYyhpbnN0LCBkYXRhLCBwYXJhbXMsIHsgY2FsbGVlOiBpbnN0LnBhcnNlQXN5bmMgfSk7XG4gICAgaW5zdC5zYWZlUGFyc2VBc3luYyA9IGFzeW5jIChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnNhZmVQYXJzZUFzeW5jKGluc3QsIGRhdGEsIHBhcmFtcyk7XG4gICAgaW5zdC5zcGEgPSBpbnN0LnNhZmVQYXJzZUFzeW5jO1xuICAgIC8vIHJlZmluZW1lbnRzXG4gICAgaW5zdC5yZWZpbmUgPSAoY2hlY2ssIHBhcmFtcykgPT4gaW5zdC5jaGVjayhyZWZpbmUoY2hlY2ssIHBhcmFtcykpO1xuICAgIGluc3Quc3VwZXJSZWZpbmUgPSAocmVmaW5lbWVudCkgPT4gaW5zdC5jaGVjayhzdXBlclJlZmluZShyZWZpbmVtZW50KSk7XG4gICAgaW5zdC5vdmVyd3JpdGUgPSAoZm4pID0+IGluc3QuY2hlY2soY2hlY2tzLm92ZXJ3cml0ZShmbikpO1xuICAgIC8vIHdyYXBwZXJzXG4gICAgaW5zdC5vcHRpb25hbCA9ICgpID0+IG9wdGlvbmFsKGluc3QpO1xuICAgIGluc3QubnVsbGFibGUgPSAoKSA9PiBudWxsYWJsZShpbnN0KTtcbiAgICBpbnN0Lm51bGxpc2ggPSAoKSA9PiBvcHRpb25hbChudWxsYWJsZShpbnN0KSk7XG4gICAgaW5zdC5ub25vcHRpb25hbCA9IChwYXJhbXMpID0+IG5vbm9wdGlvbmFsKGluc3QsIHBhcmFtcyk7XG4gICAgaW5zdC5hcnJheSA9ICgpID0+IGFycmF5KGluc3QpO1xuICAgIGluc3Qub3IgPSAoYXJnKSA9PiB1bmlvbihbaW5zdCwgYXJnXSk7XG4gICAgaW5zdC5hbmQgPSAoYXJnKSA9PiBpbnRlcnNlY3Rpb24oaW5zdCwgYXJnKTtcbiAgICBpbnN0LnRyYW5zZm9ybSA9ICh0eCkgPT4gcGlwZShpbnN0LCB0cmFuc2Zvcm0odHgpKTtcbiAgICBpbnN0LmRlZmF1bHQgPSAoZGVmKSA9PiBfZGVmYXVsdChpbnN0LCBkZWYpO1xuICAgIGluc3QucHJlZmF1bHQgPSAoZGVmKSA9PiBwcmVmYXVsdChpbnN0LCBkZWYpO1xuICAgIC8vIGluc3QuY29hbGVzY2UgPSAoZGVmLCBwYXJhbXMpID0+IGNvYWxlc2NlKGluc3QsIGRlZiwgcGFyYW1zKTtcbiAgICBpbnN0LmNhdGNoID0gKHBhcmFtcykgPT4gX2NhdGNoKGluc3QsIHBhcmFtcyk7XG4gICAgaW5zdC5waXBlID0gKHRhcmdldCkgPT4gcGlwZShpbnN0LCB0YXJnZXQpO1xuICAgIGluc3QucmVhZG9ubHkgPSAoKSA9PiByZWFkb25seShpbnN0KTtcbiAgICAvLyBtZXRhXG4gICAgaW5zdC5kZXNjcmliZSA9IChkZXNjcmlwdGlvbikgPT4ge1xuICAgICAgICBjb25zdCBjbCA9IGluc3QuY2xvbmUoKTtcbiAgICAgICAgY29yZS5nbG9iYWxSZWdpc3RyeS5hZGQoY2wsIHsgZGVzY3JpcHRpb24gfSk7XG4gICAgICAgIHJldHVybiBjbDtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcImRlc2NyaXB0aW9uXCIsIHtcbiAgICAgICAgZ2V0KCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvcmUuZ2xvYmFsUmVnaXN0cnkuZ2V0KGluc3QpPy5kZXNjcmlwdGlvbjtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICAgIGluc3QubWV0YSA9ICguLi5hcmdzKSA9PiB7XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvcmUuZ2xvYmFsUmVnaXN0cnkuZ2V0KGluc3QpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsID0gaW5zdC5jbG9uZSgpO1xuICAgICAgICBjb3JlLmdsb2JhbFJlZ2lzdHJ5LmFkZChjbCwgYXJnc1swXSk7XG4gICAgICAgIHJldHVybiBjbDtcbiAgICB9O1xuICAgIC8vIGhlbHBlcnNcbiAgICBpbnN0LmlzT3B0aW9uYWwgPSAoKSA9PiBpbnN0LnNhZmVQYXJzZSh1bmRlZmluZWQpLnN1Y2Nlc3M7XG4gICAgaW5zdC5pc051bGxhYmxlID0gKCkgPT4gaW5zdC5zYWZlUGFyc2UobnVsbCkuc3VjY2VzcztcbiAgICByZXR1cm4gaW5zdDtcbn0pO1xuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IF9ab2RTdHJpbmcgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiX1pvZFN0cmluZ1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3RyaW5nLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgIGluc3QuZm9ybWF0ID0gYmFnLmZvcm1hdCA/PyBudWxsO1xuICAgIGluc3QubWluTGVuZ3RoID0gYmFnLm1pbmltdW0gPz8gbnVsbDtcbiAgICBpbnN0Lm1heExlbmd0aCA9IGJhZy5tYXhpbXVtID8/IG51bGw7XG4gICAgLy8gdmFsaWRhdGlvbnNcbiAgICBpbnN0LnJlZ2V4ID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLnJlZ2V4KC4uLmFyZ3MpKTtcbiAgICBpbnN0LmluY2x1ZGVzID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLmluY2x1ZGVzKC4uLmFyZ3MpKTtcbiAgICBpbnN0LnN0YXJ0c1dpdGggPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3Muc3RhcnRzV2l0aCguLi5hcmdzKSk7XG4gICAgaW5zdC5lbmRzV2l0aCA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5lbmRzV2l0aCguLi5hcmdzKSk7XG4gICAgaW5zdC5taW4gPSAoLi4uYXJncykgPT4gaW5zdC5jaGVjayhjaGVja3MubWluTGVuZ3RoKC4uLmFyZ3MpKTtcbiAgICBpbnN0Lm1heCA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5tYXhMZW5ndGgoLi4uYXJncykpO1xuICAgIGluc3QubGVuZ3RoID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLmxlbmd0aCguLi5hcmdzKSk7XG4gICAgaW5zdC5ub25lbXB0eSA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5taW5MZW5ndGgoMSwgLi4uYXJncykpO1xuICAgIGluc3QubG93ZXJjYXNlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubG93ZXJjYXNlKHBhcmFtcykpO1xuICAgIGluc3QudXBwZXJjYXNlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MudXBwZXJjYXNlKHBhcmFtcykpO1xuICAgIC8vIHRyYW5zZm9ybXNcbiAgICBpbnN0LnRyaW0gPSAoKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy50cmltKCkpO1xuICAgIGluc3Qubm9ybWFsaXplID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY2hlY2tzLm5vcm1hbGl6ZSguLi5hcmdzKSk7XG4gICAgaW5zdC50b0xvd2VyQ2FzZSA9ICgpID0+IGluc3QuY2hlY2soY2hlY2tzLnRvTG93ZXJDYXNlKCkpO1xuICAgIGluc3QudG9VcHBlckNhc2UgPSAoKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy50b1VwcGVyQ2FzZSgpKTtcbn0pO1xuZXhwb3J0IGNvbnN0IFpvZFN0cmluZyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RTdHJpbmdcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG4gICAgX1pvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5lbWFpbCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZW1haWwoWm9kRW1haWwsIHBhcmFtcykpO1xuICAgIGluc3QudXJsID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl91cmwoWm9kVVJMLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmp3dCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fand0KFpvZEpXVCwgcGFyYW1zKSk7XG4gICAgaW5zdC5lbW9qaSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZW1vamkoWm9kRW1vamksIHBhcmFtcykpO1xuICAgIGluc3QuZ3VpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZ3VpZChab2RHVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LnV1aWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3V1aWQoWm9kVVVJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC51dWlkdjQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3V1aWR2NChab2RVVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LnV1aWR2NiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fdXVpZHY2KFpvZFVVSUQsIHBhcmFtcykpO1xuICAgIGluc3QudXVpZHY3ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl91dWlkdjcoWm9kVVVJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5uYW5vaWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX25hbm9pZChab2ROYW5vSUQsIHBhcmFtcykpO1xuICAgIGluc3QuZ3VpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZ3VpZChab2RHVUlELCBwYXJhbXMpKTtcbiAgICBpbnN0LmN1aWQgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2N1aWQoWm9kQ1VJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5jdWlkMiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fY3VpZDIoWm9kQ1VJRDIsIHBhcmFtcykpO1xuICAgIGluc3QudWxpZCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fdWxpZChab2RVTElELCBwYXJhbXMpKTtcbiAgICBpbnN0LmJhc2U2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fYmFzZTY0KFpvZEJhc2U2NCwgcGFyYW1zKSk7XG4gICAgaW5zdC5iYXNlNjR1cmwgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2Jhc2U2NHVybChab2RCYXNlNjRVUkwsIHBhcmFtcykpO1xuICAgIGluc3QueGlkID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl94aWQoWm9kWElELCBwYXJhbXMpKTtcbiAgICBpbnN0LmtzdWlkID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9rc3VpZChab2RLU1VJRCwgcGFyYW1zKSk7XG4gICAgaW5zdC5pcHY0ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9pcHY0KFpvZElQdjQsIHBhcmFtcykpO1xuICAgIGluc3QuaXB2NiA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5faXB2Nihab2RJUHY2LCBwYXJhbXMpKTtcbiAgICBpbnN0LmNpZHJ2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fY2lkcnY0KFpvZENJRFJ2NCwgcGFyYW1zKSk7XG4gICAgaW5zdC5jaWRydjYgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNvcmUuX2NpZHJ2Nihab2RDSURSdjYsIHBhcmFtcykpO1xuICAgIGluc3QuZTE2NCA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fZTE2NChab2RFMTY0LCBwYXJhbXMpKTtcbiAgICAvLyBpc29cbiAgICBpbnN0LmRhdGV0aW1lID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpc28uZGF0ZXRpbWUocGFyYW1zKSk7XG4gICAgaW5zdC5kYXRlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpc28uZGF0ZShwYXJhbXMpKTtcbiAgICBpbnN0LnRpbWUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGlzby50aW1lKHBhcmFtcykpO1xuICAgIGluc3QuZHVyYXRpb24gPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGlzby5kdXJhdGlvbihwYXJhbXMpKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZyhwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fc3RyaW5nKFpvZFN0cmluZywgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RTdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIF9ab2RTdHJpbmcuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgWm9kRW1haWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kRW1haWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kRW1haWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlbWFpbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZW1haWwoWm9kRW1haWwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kR1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RHVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEdVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBndWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9ndWlkKFpvZEdVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kVVVJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZFVVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1dWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkKFpvZFVVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gdXVpZHY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91dWlkdjQoWm9kVVVJRCwgcGFyYW1zKTtcbn1cbi8vIFpvZFVVSUR2NlxuZXhwb3J0IGZ1bmN0aW9uIHV1aWR2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdXVpZHY2KFpvZFVVSUQsIHBhcmFtcyk7XG59XG4vLyBab2RVVUlEdjdcbmV4cG9ydCBmdW5jdGlvbiB1dWlkdjcocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3V1aWR2Nyhab2RVVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVSTCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RVUkxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kVVJMLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdXJsKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91cmwoWm9kVVJMLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEVtb2ppID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEVtb2ppXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEVtb2ppLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZW1vamkocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Vtb2ppKFpvZEVtb2ppLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE5hbm9JRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROYW5vSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kTmFub0lELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uYW5vaWQoWm9kTmFub0lELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQ1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RDVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY3VpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VpZChab2RDVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENVSUQyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZENVSUQyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZENVSUQyLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY3VpZDIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2N1aWQyKFpvZENVSUQyLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVMSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVUxJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RVTElELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdWxpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdWxpZChab2RVTElELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFhJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RYSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgY29yZS4kWm9kWElELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24geGlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl94aWQoWm9kWElELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZEtTVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEtTVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEtTVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24ga3N1aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2tzdWlkKFpvZEtTVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElQdjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVB2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RJUHY0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaXB2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXB2NChab2RJUHY0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZElQdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSVB2NlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RJUHY2LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaXB2NihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXB2Nihab2RJUHY2LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZENJRFJ2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDSURSdjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENJRFJ2NC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGNpZHJ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY2lkcnY0KFpvZENJRFJ2NCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RDSURSdjYgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQ0lEUnY2XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDSURSdjYuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBjaWRydjYocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2NpZHJ2Nihab2RDSURSdjYsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQmFzZTY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEJhc2U2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RCYXNlNjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jhc2U2NChab2RCYXNlNjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQmFzZTY0VVJMID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEJhc2U2NFVSTFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RCYXNlNjRVUkwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjR1cmwocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jhc2U2NHVybChab2RCYXNlNjRVUkwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kRTE2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RFMTY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvcmUuJFpvZEUxNjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlMTY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9lMTY0KFpvZEUxNjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kSldUID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEpXVFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RKV1QuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBqd3QocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2p3dChab2RKV1QsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQ3VzdG9tU3RyaW5nRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgLy8gWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2RDdXN0b21TdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdGb3JtYXQoZm9ybWF0LCBmbk9yUmVnZXgsIF9wYXJhbXMgPSB7fSkge1xuICAgIHJldHVybiBjb3JlLl9zdHJpbmdGb3JtYXQoWm9kQ3VzdG9tU3RyaW5nRm9ybWF0LCBmb3JtYXQsIGZuT3JSZWdleCwgX3BhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTnVtYmVyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE51bWJlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVtYmVyLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Lmd0ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0KHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmd0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QubWluID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5sdCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdCh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5sdGUgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHRlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QuaW50ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpbnQocGFyYW1zKSk7XG4gICAgaW5zdC5zYWZlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhpbnQocGFyYW1zKSk7XG4gICAgaW5zdC5wb3NpdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0KDAsIHBhcmFtcykpO1xuICAgIGluc3Qubm9ubmVnYXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUoMCwgcGFyYW1zKSk7XG4gICAgaW5zdC5uZWdhdGl2ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmx0KDAsIHBhcmFtcykpO1xuICAgIGluc3Qubm9ucG9zaXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUoMCwgcGFyYW1zKSk7XG4gICAgaW5zdC5tdWx0aXBsZU9mID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLm11bHRpcGxlT2YodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3Quc3RlcCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5tdWx0aXBsZU9mKHZhbHVlLCBwYXJhbXMpKTtcbiAgICAvLyBpbnN0LmZpbml0ZSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5maW5pdGUocGFyYW1zKSk7XG4gICAgaW5zdC5maW5pdGUgPSAoKSA9PiBpbnN0O1xuICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgaW5zdC5taW5WYWx1ZSA9XG4gICAgICAgIE1hdGgubWF4KGJhZy5taW5pbXVtID8/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSwgYmFnLmV4Y2x1c2l2ZU1pbmltdW0gPz8gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKSA/PyBudWxsO1xuICAgIGluc3QubWF4VmFsdWUgPVxuICAgICAgICBNYXRoLm1pbihiYWcubWF4aW11bSA/PyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIGJhZy5leGNsdXNpdmVNYXhpbXVtID8/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSkgPz8gbnVsbDtcbiAgICBpbnN0LmlzSW50ID0gKGJhZy5mb3JtYXQgPz8gXCJcIikuaW5jbHVkZXMoXCJpbnRcIikgfHwgTnVtYmVyLmlzU2FmZUludGVnZXIoYmFnLm11bHRpcGxlT2YgPz8gMC41KTtcbiAgICBpbnN0LmlzRmluaXRlID0gdHJ1ZTtcbiAgICBpbnN0LmZvcm1hdCA9IGJhZy5mb3JtYXQgPz8gbnVsbDtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG51bWJlcihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbnVtYmVyKFpvZE51bWJlciwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2ROdW1iZXJGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTnVtYmVyRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROdW1iZXJGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE51bWJlci5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpbnQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ludChab2ROdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZmxvYXQzMihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZmxvYXQzMihab2ROdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gZmxvYXQ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZmxvYXQ2NChab2ROdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaW50MzIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ludDMyKFpvZE51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1aW50MzIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VpbnQzMihab2ROdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQm9vbGVhbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RCb29sZWFuXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCb29sZWFuLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJvb2xlYW4ocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jvb2xlYW4oWm9kQm9vbGVhbiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RCaWdJbnQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kQmlnSW50XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RCaWdJbnQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuZ3RlID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5taW4gPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmd0ID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0KHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmd0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QubWluID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5sdCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdCh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5sdGUgPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHRlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9ICh2YWx1ZSwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUodmFsdWUsIHBhcmFtcykpO1xuICAgIGluc3QucG9zaXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5ndChCaWdJbnQoMCksIHBhcmFtcykpO1xuICAgIGluc3QubmVnYXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdChCaWdJbnQoMCksIHBhcmFtcykpO1xuICAgIGluc3Qubm9ucG9zaXRpdmUgPSAocGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5sdGUoQmlnSW50KDApLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm5vbm5lZ2F0aXZlID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MuZ3RlKEJpZ0ludCgwKSwgcGFyYW1zKSk7XG4gICAgaW5zdC5tdWx0aXBsZU9mID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLm11bHRpcGxlT2YodmFsdWUsIHBhcmFtcykpO1xuICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgaW5zdC5taW5WYWx1ZSA9IGJhZy5taW5pbXVtID8/IG51bGw7XG4gICAgaW5zdC5tYXhWYWx1ZSA9IGJhZy5tYXhpbXVtID8/IG51bGw7XG4gICAgaW5zdC5mb3JtYXQgPSBiYWcuZm9ybWF0ID8/IG51bGw7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiaWdpbnQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2JpZ2ludChab2RCaWdJbnQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kQmlnSW50Rm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEJpZ0ludEZvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQmlnSW50Rm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RCaWdJbnQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG4vLyBpbnQ2NFxuZXhwb3J0IGZ1bmN0aW9uIGludDY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pbnQ2NChab2RCaWdJbnRGb3JtYXQsIHBhcmFtcyk7XG59XG4vLyB1aW50NjRcbmV4cG9ydCBmdW5jdGlvbiB1aW50NjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VpbnQ2NChab2RCaWdJbnRGb3JtYXQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kU3ltYm9sID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFN5bWJvbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3ltYm9sLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN5bWJvbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fc3ltYm9sKFpvZFN5bWJvbCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RVbmRlZmluZWQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVW5kZWZpbmVkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVbmRlZmluZWQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfdW5kZWZpbmVkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91bmRlZmluZWQoWm9kVW5kZWZpbmVkLCBwYXJhbXMpO1xufVxuZXhwb3J0IHsgX3VuZGVmaW5lZCBhcyB1bmRlZmluZWQgfTtcbmV4cG9ydCBjb25zdCBab2ROdWxsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE51bGxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bGwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfbnVsbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbnVsbChab2ROdWxsLCBwYXJhbXMpO1xufVxuZXhwb3J0IHsgX251bGwgYXMgbnVsbCB9O1xuZXhwb3J0IGNvbnN0IFpvZEFueSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RBbnlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEFueS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBhbnkoKSB7XG4gICAgcmV0dXJuIGNvcmUuX2FueShab2RBbnkpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVua25vd24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVW5rbm93blwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVW5rbm93bi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1bmtub3duKCkge1xuICAgIHJldHVybiBjb3JlLl91bmtub3duKFpvZFVua25vd24pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE5ldmVyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE5ldmVyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROZXZlci5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBuZXZlcihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbmV2ZXIoWm9kTmV2ZXIsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kVm9pZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RWb2lkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RWb2lkLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZnVuY3Rpb24gX3ZvaWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3ZvaWQoWm9kVm9pZCwgcGFyYW1zKTtcbn1cbmV4cG9ydCB7IF92b2lkIGFzIHZvaWQgfTtcbmV4cG9ydCBjb25zdCBab2REYXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZERhdGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZERhdGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QubWluID0gKHZhbHVlLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY2hlY2tzLmd0ZSh2YWx1ZSwgcGFyYW1zKSk7XG4gICAgaW5zdC5tYXggPSAodmFsdWUsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubHRlKHZhbHVlLCBwYXJhbXMpKTtcbiAgICBjb25zdCBjID0gaW5zdC5fem9kLmJhZztcbiAgICBpbnN0Lm1pbkRhdGUgPSBjLm1pbmltdW0gPyBuZXcgRGF0ZShjLm1pbmltdW0pIDogbnVsbDtcbiAgICBpbnN0Lm1heERhdGUgPSBjLm1heGltdW0gPyBuZXcgRGF0ZShjLm1heGltdW0pIDogbnVsbDtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2RhdGUoWm9kRGF0ZSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RBcnJheSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RBcnJheVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQXJyYXkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuZWxlbWVudCA9IGRlZi5lbGVtZW50O1xuICAgIGluc3QubWluID0gKG1pbkxlbmd0aCwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5taW5MZW5ndGgobWluTGVuZ3RoLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm5vbmVtcHR5ID0gKHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubWluTGVuZ3RoKDEsIHBhcmFtcykpO1xuICAgIGluc3QubWF4ID0gKG1heExlbmd0aCwgcGFyYW1zKSA9PiBpbnN0LmNoZWNrKGNoZWNrcy5tYXhMZW5ndGgobWF4TGVuZ3RoLCBwYXJhbXMpKTtcbiAgICBpbnN0Lmxlbmd0aCA9IChsZW4sIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjaGVja3MubGVuZ3RoKGxlbiwgcGFyYW1zKSk7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0LmVsZW1lbnQ7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBhcnJheShlbGVtZW50LCBwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYXJyYXkoWm9kQXJyYXksIGVsZW1lbnQsIHBhcmFtcyk7XG59XG4vLyAua2V5b2ZcbmV4cG9ydCBmdW5jdGlvbiBrZXlvZihzY2hlbWEpIHtcbiAgICBjb25zdCBzaGFwZSA9IHNjaGVtYS5fem9kLmRlZi5zaGFwZTtcbiAgICByZXR1cm4gbGl0ZXJhbChPYmplY3Qua2V5cyhzaGFwZSkpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE9iamVjdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RPYmplY3RcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE9iamVjdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QsIFwic2hhcGVcIiwgKCkgPT4gZGVmLnNoYXBlKTtcbiAgICBpbnN0LmtleW9mID0gKCkgPT4gX2VudW0oT2JqZWN0LmtleXMoaW5zdC5fem9kLmRlZi5zaGFwZSkpO1xuICAgIGluc3QuY2F0Y2hhbGwgPSAoY2F0Y2hhbGwpID0+IGluc3QuY2xvbmUoeyAuLi5pbnN0Ll96b2QuZGVmLCBjYXRjaGFsbDogY2F0Y2hhbGwgfSk7XG4gICAgaW5zdC5wYXNzdGhyb3VnaCA9ICgpID0+IGluc3QuY2xvbmUoeyAuLi5pbnN0Ll96b2QuZGVmLCBjYXRjaGFsbDogdW5rbm93bigpIH0pO1xuICAgIC8vIGluc3Qubm9uc3RyaWN0ID0gKCkgPT4gaW5zdC5jbG9uZSh7IC4uLmluc3QuX3pvZC5kZWYsIGNhdGNoYWxsOiBhcGkudW5rbm93bigpIH0pO1xuICAgIGluc3QubG9vc2UgPSAoKSA9PiBpbnN0LmNsb25lKHsgLi4uaW5zdC5fem9kLmRlZiwgY2F0Y2hhbGw6IHVua25vd24oKSB9KTtcbiAgICBpbnN0LnN0cmljdCA9ICgpID0+IGluc3QuY2xvbmUoeyAuLi5pbnN0Ll96b2QuZGVmLCBjYXRjaGFsbDogbmV2ZXIoKSB9KTtcbiAgICBpbnN0LnN0cmlwID0gKCkgPT4gaW5zdC5jbG9uZSh7IC4uLmluc3QuX3pvZC5kZWYsIGNhdGNoYWxsOiB1bmRlZmluZWQgfSk7XG4gICAgaW5zdC5leHRlbmQgPSAoaW5jb21pbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWwuZXh0ZW5kKGluc3QsIGluY29taW5nKTtcbiAgICB9O1xuICAgIGluc3QubWVyZ2UgPSAob3RoZXIpID0+IHV0aWwubWVyZ2UoaW5zdCwgb3RoZXIpO1xuICAgIGluc3QucGljayA9IChtYXNrKSA9PiB1dGlsLnBpY2soaW5zdCwgbWFzayk7XG4gICAgaW5zdC5vbWl0ID0gKG1hc2spID0+IHV0aWwub21pdChpbnN0LCBtYXNrKTtcbiAgICBpbnN0LnBhcnRpYWwgPSAoLi4uYXJncykgPT4gdXRpbC5wYXJ0aWFsKFpvZE9wdGlvbmFsLCBpbnN0LCBhcmdzWzBdKTtcbiAgICBpbnN0LnJlcXVpcmVkID0gKC4uLmFyZ3MpID0+IHV0aWwucmVxdWlyZWQoWm9kTm9uT3B0aW9uYWwsIGluc3QsIGFyZ3NbMF0pO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0KHNoYXBlLCBwYXJhbXMpIHtcbiAgICBjb25zdCBkZWYgPSB7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIGdldCBzaGFwZSgpIHtcbiAgICAgICAgICAgIHV0aWwuYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIHsgLi4uc2hhcGUgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaGFwZTtcbiAgICAgICAgfSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KGRlZik7XG59XG4vLyBzdHJpY3RPYmplY3RcbmV4cG9ydCBmdW5jdGlvbiBzdHJpY3RPYmplY3Qoc2hhcGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgdXRpbC5hc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgeyAuLi5zaGFwZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXBlO1xuICAgICAgICB9LFxuICAgICAgICBjYXRjaGFsbDogbmV2ZXIoKSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIGxvb3NlT2JqZWN0XG5leHBvcnQgZnVuY3Rpb24gbG9vc2VPYmplY3Qoc2hhcGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgdHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgdXRpbC5hc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgeyAuLi5zaGFwZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXBlO1xuICAgICAgICB9LFxuICAgICAgICBjYXRjaGFsbDogdW5rbm93bigpLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFVuaW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFVuaW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RVbmlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5vcHRpb25zID0gZGVmLm9wdGlvbnM7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1bmlvbihvcHRpb25zLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZFVuaW9uKHtcbiAgICAgICAgdHlwZTogXCJ1bmlvblwiLFxuICAgICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZERpc2NyaW1pbmF0ZWRVbmlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2REaXNjcmltaW5hdGVkVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIFpvZFVuaW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb3JlLiRab2REaXNjcmltaW5hdGVkVW5pb24uaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGlzY3JpbWluYXRlZFVuaW9uKGRpc2NyaW1pbmF0b3IsIG9wdGlvbnMsIHBhcmFtcykge1xuICAgIC8vIGNvbnN0IFtvcHRpb25zLCBwYXJhbXNdID0gYXJncztcbiAgICByZXR1cm4gbmV3IFpvZERpc2NyaW1pbmF0ZWRVbmlvbih7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZGlzY3JpbWluYXRvcixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RJbnRlcnNlY3Rpb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kSW50ZXJzZWN0aW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RJbnRlcnNlY3Rpb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaW50ZXJzZWN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gICAgcmV0dXJuIG5ldyBab2RJbnRlcnNlY3Rpb24oe1xuICAgICAgICB0eXBlOiBcImludGVyc2VjdGlvblwiLFxuICAgICAgICBsZWZ0OiBsZWZ0LFxuICAgICAgICByaWdodDogcmlnaHQsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kVHVwbGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVHVwbGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFR1cGxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnJlc3QgPSAocmVzdCkgPT4gaW5zdC5jbG9uZSh7XG4gICAgICAgIC4uLmluc3QuX3pvZC5kZWYsXG4gICAgICAgIHJlc3Q6IHJlc3QsXG4gICAgfSk7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0dXBsZShpdGVtcywgX3BhcmFtc09yUmVzdCwgX3BhcmFtcykge1xuICAgIGNvbnN0IGhhc1Jlc3QgPSBfcGFyYW1zT3JSZXN0IGluc3RhbmNlb2YgY29yZS4kWm9kVHlwZTtcbiAgICBjb25zdCBwYXJhbXMgPSBoYXNSZXN0ID8gX3BhcmFtcyA6IF9wYXJhbXNPclJlc3Q7XG4gICAgY29uc3QgcmVzdCA9IGhhc1Jlc3QgPyBfcGFyYW1zT3JSZXN0IDogbnVsbDtcbiAgICByZXR1cm4gbmV3IFpvZFR1cGxlKHtcbiAgICAgICAgdHlwZTogXCJ0dXBsZVwiLFxuICAgICAgICBpdGVtczogaXRlbXMsXG4gICAgICAgIHJlc3QsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kUmVjb3JkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFJlY29yZFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUmVjb3JkLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LmtleVR5cGUgPSBkZWYua2V5VHlwZTtcbiAgICBpbnN0LnZhbHVlVHlwZSA9IGRlZi52YWx1ZVR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiByZWNvcmQoa2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgIHR5cGU6IFwicmVjb3JkXCIsXG4gICAgICAgIGtleVR5cGUsXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gdHlwZSBhbGtzamYgPSBjb3JlLm91dHB1dDxjb3JlLiRab2RSZWNvcmRLZXk+O1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpYWxSZWNvcmQoa2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgIHR5cGU6IFwicmVjb3JkXCIsXG4gICAgICAgIGtleVR5cGU6IHVuaW9uKFtrZXlUeXBlLCBuZXZlcigpXSksXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1hcCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNYXBcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE1hcC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5rZXlUeXBlID0gZGVmLmtleVR5cGU7XG4gICAgaW5zdC52YWx1ZVR5cGUgPSBkZWYudmFsdWVUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbWFwKGtleVR5cGUsIHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNYXAoe1xuICAgICAgICB0eXBlOiBcIm1hcFwiLFxuICAgICAgICBrZXlUeXBlOiBrZXlUeXBlLFxuICAgICAgICB2YWx1ZVR5cGU6IHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RTZXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU2V0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTZXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QubWluID0gKC4uLmFyZ3MpID0+IGluc3QuY2hlY2soY29yZS5fbWluU2l6ZSguLi5hcmdzKSk7XG4gICAgaW5zdC5ub25lbXB0eSA9IChwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fbWluU2l6ZSgxLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNvcmUuX21heFNpemUoLi4uYXJncykpO1xuICAgIGluc3Quc2l6ZSA9ICguLi5hcmdzKSA9PiBpbnN0LmNoZWNrKGNvcmUuX3NpemUoLi4uYXJncykpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc2V0KHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RTZXQoe1xuICAgICAgICB0eXBlOiBcInNldFwiLFxuICAgICAgICB2YWx1ZVR5cGU6IHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RFbnVtID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZEVudW1cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEVudW0uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuZW51bSA9IGRlZi5lbnRyaWVzO1xuICAgIGluc3Qub3B0aW9ucyA9IE9iamVjdC52YWx1ZXMoZGVmLmVudHJpZXMpO1xuICAgIGNvbnN0IGtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKGRlZi5lbnRyaWVzKSk7XG4gICAgaW5zdC5leHRyYWN0ID0gKHZhbHVlcywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0VudHJpZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGlmIChrZXlzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBuZXdFbnRyaWVzW3ZhbHVlXSA9IGRlZi5lbnRyaWVzW3ZhbHVlXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEtleSAke3ZhbHVlfSBub3QgZm91bmQgaW4gZW51bWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgWm9kRW51bSh7XG4gICAgICAgICAgICAuLi5kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFtdLFxuICAgICAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgICAgIGVudHJpZXM6IG5ld0VudHJpZXMsXG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgaW5zdC5leGNsdWRlID0gKHZhbHVlcywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0VudHJpZXMgPSB7IC4uLmRlZi5lbnRyaWVzIH07XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBpZiAoa2V5cy5oYXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0VudHJpZXNbdmFsdWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgS2V5ICR7dmFsdWV9IG5vdCBmb3VuZCBpbiBlbnVtYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RFbnVtKHtcbiAgICAgICAgICAgIC4uLmRlZixcbiAgICAgICAgICAgIGNoZWNrczogW10sXG4gICAgICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICAgICAgZW50cmllczogbmV3RW50cmllcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gX2VudW0odmFsdWVzLCBwYXJhbXMpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZXMpID8gT2JqZWN0LmZyb21FbnRyaWVzKHZhbHVlcy5tYXAoKHYpID0+IFt2LCB2XSkpIDogdmFsdWVzO1xuICAgIHJldHVybiBuZXcgWm9kRW51bSh7XG4gICAgICAgIHR5cGU6IFwiZW51bVwiLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IHsgX2VudW0gYXMgZW51bSB9O1xuLyoqIEBkZXByZWNhdGVkIFRoaXMgQVBJIGhhcyBiZWVuIG1lcmdlZCBpbnRvIGB6LmVudW0oKWAuIFVzZSBgei5lbnVtKClgIGluc3RlYWQuXG4gKlxuICogYGBgdHNcbiAqIGVudW0gQ29sb3JzIHsgcmVkLCBncmVlbiwgYmx1ZSB9XG4gKiB6LmVudW0oQ29sb3JzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbmF0aXZlRW51bShlbnRyaWVzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZEVudW0oe1xuICAgICAgICB0eXBlOiBcImVudW1cIixcbiAgICAgICAgZW50cmllcyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RMaXRlcmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZExpdGVyYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZExpdGVyYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudmFsdWVzID0gbmV3IFNldChkZWYudmFsdWVzKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJ2YWx1ZVwiLCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIGlmIChkZWYudmFsdWVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNjaGVtYSBjb250YWlucyBtdWx0aXBsZSB2YWxpZCBsaXRlcmFsIHZhbHVlcy4gVXNlIGAudmFsdWVzYCBpbnN0ZWFkLlwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZWYudmFsdWVzWzBdO1xuICAgICAgICB9LFxuICAgIH0pO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbGl0ZXJhbCh2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RMaXRlcmFsKHtcbiAgICAgICAgdHlwZTogXCJsaXRlcmFsXCIsXG4gICAgICAgIHZhbHVlczogQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kRmlsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RGaWxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RGaWxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Lm1pbiA9IChzaXplLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fbWluU2l6ZShzaXplLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1heCA9IChzaXplLCBwYXJhbXMpID0+IGluc3QuY2hlY2soY29yZS5fbWF4U2l6ZShzaXplLCBwYXJhbXMpKTtcbiAgICBpbnN0Lm1pbWUgPSAodHlwZXMsIHBhcmFtcykgPT4gaW5zdC5jaGVjayhjb3JlLl9taW1lKEFycmF5LmlzQXJyYXkodHlwZXMpID8gdHlwZXMgOiBbdHlwZXNdLCBwYXJhbXMpKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGUocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ZpbGUoWm9kRmlsZSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RUcmFuc2Zvcm0gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVHJhbnNmb3JtXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RUcmFuc2Zvcm0uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIHBheWxvYWQuYWRkSXNzdWUgPSAoaXNzdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXNzdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHV0aWwuaXNzdWUoaXNzdWUsIHBheWxvYWQudmFsdWUsIGRlZikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIFpvZCAzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mYXRhbClcbiAgICAgICAgICAgICAgICAgICAgX2lzc3VlLmNvbnRpbnVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmNvZGUgPz8gKF9pc3N1ZS5jb2RlID0gXCJjdXN0b21cIik7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmlucHV0ID8/IChfaXNzdWUuaW5wdXQgPSBwYXlsb2FkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuaW5zdCA/PyAoX2lzc3VlLmluc3QgPSBpbnN0KTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuY29udGludWUgPz8gKF9pc3N1ZS5jb250aW51ZSA9IHRydWUpO1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2godXRpbC5pc3N1ZShfaXNzdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZGVmLnRyYW5zZm9ybShwYXlsb2FkLnZhbHVlLCBwYXlsb2FkKTtcbiAgICAgICAgaWYgKG91dHB1dCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQudGhlbigob3V0cHV0KSA9PiB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBvdXRwdXQ7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm0oZm4pIHtcbiAgICByZXR1cm4gbmV3IFpvZFRyYW5zZm9ybSh7XG4gICAgICAgIHR5cGU6IFwidHJhbnNmb3JtXCIsXG4gICAgICAgIHRyYW5zZm9ybTogZm4sXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kT3B0aW9uYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE9wdGlvbmFsLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWwoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RPcHRpb25hbCh7XG4gICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTnVsbGFibGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTnVsbGFibGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bGxhYmxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbnVsbGFibGUoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2ROdWxsYWJsZSh7XG4gICAgICAgIHR5cGU6IFwibnVsbGFibGVcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG4vLyBudWxsaXNoXG5leHBvcnQgZnVuY3Rpb24gbnVsbGlzaChpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gb3B0aW9uYWwobnVsbGFibGUoaW5uZXJUeXBlKSk7XG59XG5leHBvcnQgY29uc3QgWm9kRGVmYXVsdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2REZWZhdWx0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2REZWZhdWx0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xuICAgIGluc3QucmVtb3ZlRGVmYXVsdCA9IGluc3QudW53cmFwO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gX2RlZmF1bHQoaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZERlZmF1bHQoe1xuICAgICAgICB0eXBlOiBcImRlZmF1bHRcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kUHJlZmF1bHQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUHJlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFByZWZhdWx0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LnVud3JhcCA9ICgpID0+IGluc3QuX3pvZC5kZWYuaW5uZXJUeXBlO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcHJlZmF1bHQoaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZFByZWZhdWx0KHtcbiAgICAgICAgdHlwZTogXCJwcmVmYXVsdFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgZ2V0IGRlZmF1bHRWYWx1ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBkZWZhdWx0VmFsdWUoKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2ROb25PcHRpb25hbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2ROb25PcHRpb25hbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTm9uT3B0aW9uYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5pbm5lclR5cGU7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBub25vcHRpb25hbChpbm5lclR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTm9uT3B0aW9uYWwoe1xuICAgICAgICB0eXBlOiBcIm5vbm9wdGlvbmFsXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFN1Y2Nlc3MgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kU3VjY2Vzc1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3VjY2Vzcy5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmlubmVyVHlwZTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN1Y2Nlc3MoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RTdWNjZXNzKHtcbiAgICAgICAgdHlwZTogXCJzdWNjZXNzXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZENhdGNoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZENhdGNoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDYXRjaC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmlubmVyVHlwZTtcbiAgICBpbnN0LnJlbW92ZUNhdGNoID0gaW5zdC51bndyYXA7XG59KTtcbmZ1bmN0aW9uIF9jYXRjaChpbm5lclR5cGUsIGNhdGNoVmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZENhdGNoKHtcbiAgICAgICAgdHlwZTogXCJjYXRjaFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgY2F0Y2hWYWx1ZTogKHR5cGVvZiBjYXRjaFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBjYXRjaFZhbHVlIDogKCkgPT4gY2F0Y2hWYWx1ZSksXG4gICAgfSk7XG59XG5leHBvcnQgeyBfY2F0Y2ggYXMgY2F0Y2ggfTtcbmV4cG9ydCBjb25zdCBab2ROYU4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTmFOXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROYU4uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbmFuKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uYW4oWm9kTmFOLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZFBpcGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUGlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUGlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5pbiA9IGRlZi5pbjtcbiAgICBpbnN0Lm91dCA9IGRlZi5vdXQ7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwaXBlKGluXywgb3V0KSB7XG4gICAgcmV0dXJuIG5ldyBab2RQaXBlKHtcbiAgICAgICAgdHlwZTogXCJwaXBlXCIsXG4gICAgICAgIGluOiBpbl8sXG4gICAgICAgIG91dDogb3V0LFxuICAgICAgICAvLyAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFJlYWRvbmx5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZFJlYWRvbmx5XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RSZWFkb25seS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiByZWFkb25seShpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZFJlYWRvbmx5KHtcbiAgICAgICAgdHlwZTogXCJyZWFkb25seVwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RUZW1wbGF0ZUxpdGVyYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kVGVtcGxhdGVMaXRlcmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RUZW1wbGF0ZUxpdGVyYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGVMaXRlcmFsKHBhcnRzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZFRlbXBsYXRlTGl0ZXJhbCh7XG4gICAgICAgIHR5cGU6IFwidGVtcGxhdGVfbGl0ZXJhbFwiLFxuICAgICAgICBwYXJ0cyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RMYXp5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZExhenlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZExhenkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QudW53cmFwID0gKCkgPT4gaW5zdC5fem9kLmRlZi5nZXR0ZXIoKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGxhenkoZ2V0dGVyKSB7XG4gICAgcmV0dXJuIG5ldyBab2RMYXp5KHtcbiAgICAgICAgdHlwZTogXCJsYXp5XCIsXG4gICAgICAgIGdldHRlcjogZ2V0dGVyLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZFByb21pc2UgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kUHJvbWlzZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUHJvbWlzZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC51bndyYXAgPSAoKSA9PiBpbnN0Ll96b2QuZGVmLmlubmVyVHlwZTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2UoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RQcm9taXNlKHtcbiAgICAgICAgdHlwZTogXCJwcm9taXNlXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZEN1c3RvbSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RDdXN0b21cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEN1c3RvbS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vIGN1c3RvbSBjaGVja3NcbmV4cG9ydCBmdW5jdGlvbiBjaGVjayhmbikge1xuICAgIGNvbnN0IGNoID0gbmV3IGNvcmUuJFpvZENoZWNrKHtcbiAgICAgICAgY2hlY2s6IFwiY3VzdG9tXCIsXG4gICAgICAgIC8vIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gICAgY2guX3pvZC5jaGVjayA9IGZuO1xuICAgIHJldHVybiBjaDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjdXN0b20oZm4sIF9wYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY3VzdG9tKFpvZEN1c3RvbSwgZm4gPz8gKCgpID0+IHRydWUpLCBfcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZWZpbmUoZm4sIF9wYXJhbXMgPSB7fSkge1xuICAgIHJldHVybiBjb3JlLl9yZWZpbmUoWm9kQ3VzdG9tLCBmbiwgX3BhcmFtcyk7XG59XG4vLyBzdXBlclJlZmluZVxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyUmVmaW5lKGZuKSB7XG4gICAgY29uc3QgY2ggPSBjaGVjaygocGF5bG9hZCkgPT4ge1xuICAgICAgICBwYXlsb2FkLmFkZElzc3VlID0gKGlzc3VlKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlzc3VlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh1dGlsLmlzc3VlKGlzc3VlLCBwYXlsb2FkLnZhbHVlLCBjaC5fem9kLmRlZikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIFpvZCAzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4gICAgICAgICAgICAgICAgY29uc3QgX2lzc3VlID0gaXNzdWU7XG4gICAgICAgICAgICAgICAgaWYgKF9pc3N1ZS5mYXRhbClcbiAgICAgICAgICAgICAgICAgICAgX2lzc3VlLmNvbnRpbnVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmNvZGUgPz8gKF9pc3N1ZS5jb2RlID0gXCJjdXN0b21cIik7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmlucHV0ID8/IChfaXNzdWUuaW5wdXQgPSBwYXlsb2FkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBfaXNzdWUuaW5zdCA/PyAoX2lzc3VlLmluc3QgPSBjaCk7XG4gICAgICAgICAgICAgICAgX2lzc3VlLmNvbnRpbnVlID8/IChfaXNzdWUuY29udGludWUgPSAhY2guX3pvZC5kZWYuYWJvcnQpO1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2godXRpbC5pc3N1ZShfaXNzdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGZuKHBheWxvYWQudmFsdWUsIHBheWxvYWQpO1xuICAgIH0pO1xuICAgIHJldHVybiBjaDtcbn1cbmZ1bmN0aW9uIF9pbnN0YW5jZW9mKGNscywgcGFyYW1zID0ge1xuICAgIGVycm9yOiBgSW5wdXQgbm90IGluc3RhbmNlIG9mICR7Y2xzLm5hbWV9YCxcbn0pIHtcbiAgICBjb25zdCBpbnN0ID0gbmV3IFpvZEN1c3RvbSh7XG4gICAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIGNoZWNrOiBcImN1c3RvbVwiLFxuICAgICAgICBmbjogKGRhdGEpID0+IGRhdGEgaW5zdGFuY2VvZiBjbHMsXG4gICAgICAgIGFib3J0OiB0cnVlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xuICAgIGluc3QuX3pvZC5iYWcuQ2xhc3MgPSBjbHM7XG4gICAgcmV0dXJuIGluc3Q7XG59XG5leHBvcnQgeyBfaW5zdGFuY2VvZiBhcyBpbnN0YW5jZW9mIH07XG4vLyBzdHJpbmdib29sXG5leHBvcnQgY29uc3Qgc3RyaW5nYm9vbCA9ICguLi5hcmdzKSA9PiBjb3JlLl9zdHJpbmdib29sKHtcbiAgICBQaXBlOiBab2RQaXBlLFxuICAgIEJvb2xlYW46IFpvZEJvb2xlYW4sXG4gICAgU3RyaW5nOiBab2RTdHJpbmcsXG4gICAgVHJhbnNmb3JtOiBab2RUcmFuc2Zvcm0sXG59LCAuLi5hcmdzKTtcbmV4cG9ydCBmdW5jdGlvbiBqc29uKHBhcmFtcykge1xuICAgIGNvbnN0IGpzb25TY2hlbWEgPSBsYXp5KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHVuaW9uKFtzdHJpbmcocGFyYW1zKSwgbnVtYmVyKCksIGJvb2xlYW4oKSwgX251bGwoKSwgYXJyYXkoanNvblNjaGVtYSksIHJlY29yZChzdHJpbmcoKSwganNvblNjaGVtYSldKTtcbiAgICB9KTtcbiAgICByZXR1cm4ganNvblNjaGVtYTtcbn1cbi8vIHByZXByb2Nlc3Ncbi8vIC8qKiBAZGVwcmVjYXRlZCBVc2UgYHoucGlwZSgpYCBhbmQgYHoudHJhbnNmb3JtKClgIGluc3RlYWQuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcHJvY2Vzcyhmbiwgc2NoZW1hKSB7XG4gICAgcmV0dXJuIHBpcGUodHJhbnNmb3JtKGZuKSwgc2NoZW1hKTtcbn1cbiJdLCJuYW1lcyI6WyJjb3JlIiwidXRpbCIsImNoZWNrcyIsImlzbyIsInBhcnNlIiwiWm9kVHlwZSIsIiRjb25zdHJ1Y3RvciIsImluc3QiLCJkZWYiLCIkWm9kVHlwZSIsImluaXQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiY2hlY2siLCJjbG9uZSIsIm1hcCIsImNoIiwiX3pvZCIsIm9uYXR0YWNoIiwicGFyYW1zIiwiYnJhbmQiLCJyZWdpc3RlciIsInJlZyIsIm1ldGEiLCJhZGQiLCJkYXRhIiwiY2FsbGVlIiwic2FmZVBhcnNlIiwicGFyc2VBc3luYyIsInNhZmVQYXJzZUFzeW5jIiwic3BhIiwicmVmaW5lIiwic3VwZXJSZWZpbmUiLCJyZWZpbmVtZW50Iiwib3ZlcndyaXRlIiwiZm4iLCJvcHRpb25hbCIsIm51bGxhYmxlIiwibnVsbGlzaCIsIm5vbm9wdGlvbmFsIiwiYXJyYXkiLCJvciIsImFyZyIsInVuaW9uIiwiYW5kIiwiaW50ZXJzZWN0aW9uIiwidHJhbnNmb3JtIiwidHgiLCJwaXBlIiwiZGVmYXVsdCIsIl9kZWZhdWx0IiwicHJlZmF1bHQiLCJjYXRjaCIsIl9jYXRjaCIsInRhcmdldCIsInJlYWRvbmx5IiwiZGVzY3JpYmUiLCJkZXNjcmlwdGlvbiIsImNsIiwiZ2xvYmFsUmVnaXN0cnkiLCJnZXQiLCJjb25maWd1cmFibGUiLCJhcmdzIiwibGVuZ3RoIiwiaXNPcHRpb25hbCIsInVuZGVmaW5lZCIsInN1Y2Nlc3MiLCJpc051bGxhYmxlIiwiX1pvZFN0cmluZyIsIiRab2RTdHJpbmciLCJiYWciLCJmb3JtYXQiLCJtaW5MZW5ndGgiLCJtaW5pbXVtIiwibWF4TGVuZ3RoIiwibWF4aW11bSIsInJlZ2V4IiwiaW5jbHVkZXMiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJtaW4iLCJtYXgiLCJub25lbXB0eSIsImxvd2VyY2FzZSIsInVwcGVyY2FzZSIsInRyaW0iLCJub3JtYWxpemUiLCJ0b0xvd2VyQ2FzZSIsInRvVXBwZXJDYXNlIiwiWm9kU3RyaW5nIiwiZW1haWwiLCJfZW1haWwiLCJab2RFbWFpbCIsInVybCIsIl91cmwiLCJab2RVUkwiLCJqd3QiLCJfand0IiwiWm9kSldUIiwiZW1vamkiLCJfZW1vamkiLCJab2RFbW9qaSIsImd1aWQiLCJfZ3VpZCIsIlpvZEdVSUQiLCJ1dWlkIiwiX3V1aWQiLCJab2RVVUlEIiwidXVpZHY0IiwiX3V1aWR2NCIsInV1aWR2NiIsIl91dWlkdjYiLCJ1dWlkdjciLCJfdXVpZHY3IiwibmFub2lkIiwiX25hbm9pZCIsIlpvZE5hbm9JRCIsImN1aWQiLCJfY3VpZCIsIlpvZENVSUQiLCJjdWlkMiIsIl9jdWlkMiIsIlpvZENVSUQyIiwidWxpZCIsIl91bGlkIiwiWm9kVUxJRCIsImJhc2U2NCIsIl9iYXNlNjQiLCJab2RCYXNlNjQiLCJiYXNlNjR1cmwiLCJfYmFzZTY0dXJsIiwiWm9kQmFzZTY0VVJMIiwieGlkIiwiX3hpZCIsIlpvZFhJRCIsImtzdWlkIiwiX2tzdWlkIiwiWm9kS1NVSUQiLCJpcHY0IiwiX2lwdjQiLCJab2RJUHY0IiwiaXB2NiIsIl9pcHY2IiwiWm9kSVB2NiIsImNpZHJ2NCIsIl9jaWRydjQiLCJab2RDSURSdjQiLCJjaWRydjYiLCJfY2lkcnY2IiwiWm9kQ0lEUnY2IiwiZTE2NCIsIl9lMTY0IiwiWm9kRTE2NCIsImRhdGV0aW1lIiwiZGF0ZSIsInRpbWUiLCJkdXJhdGlvbiIsInN0cmluZyIsIl9zdHJpbmciLCJab2RTdHJpbmdGb3JtYXQiLCIkWm9kU3RyaW5nRm9ybWF0IiwiJFpvZEVtYWlsIiwiJFpvZEdVSUQiLCIkWm9kVVVJRCIsIiRab2RVUkwiLCIkWm9kRW1vamkiLCIkWm9kTmFub0lEIiwiJFpvZENVSUQiLCIkWm9kQ1VJRDIiLCIkWm9kVUxJRCIsIiRab2RYSUQiLCIkWm9kS1NVSUQiLCIkWm9kSVB2NCIsIiRab2RJUHY2IiwiJFpvZENJRFJ2NCIsIiRab2RDSURSdjYiLCIkWm9kQmFzZTY0IiwiJFpvZEJhc2U2NFVSTCIsIiRab2RFMTY0IiwiJFpvZEpXVCIsIlpvZEN1c3RvbVN0cmluZ0Zvcm1hdCIsIiRab2RDdXN0b21TdHJpbmdGb3JtYXQiLCJzdHJpbmdGb3JtYXQiLCJmbk9yUmVnZXgiLCJfcGFyYW1zIiwiX3N0cmluZ0Zvcm1hdCIsIlpvZE51bWJlciIsIiRab2ROdW1iZXIiLCJndCIsImd0ZSIsImx0IiwibHRlIiwiaW50Iiwic2FmZSIsInBvc2l0aXZlIiwibm9ubmVnYXRpdmUiLCJuZWdhdGl2ZSIsIm5vbnBvc2l0aXZlIiwibXVsdGlwbGVPZiIsInN0ZXAiLCJmaW5pdGUiLCJtaW5WYWx1ZSIsIk1hdGgiLCJOdW1iZXIiLCJORUdBVElWRV9JTkZJTklUWSIsImV4Y2x1c2l2ZU1pbmltdW0iLCJtYXhWYWx1ZSIsIlBPU0lUSVZFX0lORklOSVRZIiwiZXhjbHVzaXZlTWF4aW11bSIsImlzSW50IiwiaXNTYWZlSW50ZWdlciIsImlzRmluaXRlIiwibnVtYmVyIiwiX251bWJlciIsIlpvZE51bWJlckZvcm1hdCIsIiRab2ROdW1iZXJGb3JtYXQiLCJfaW50IiwiZmxvYXQzMiIsIl9mbG9hdDMyIiwiZmxvYXQ2NCIsIl9mbG9hdDY0IiwiaW50MzIiLCJfaW50MzIiLCJ1aW50MzIiLCJfdWludDMyIiwiWm9kQm9vbGVhbiIsIiRab2RCb29sZWFuIiwiYm9vbGVhbiIsIl9ib29sZWFuIiwiWm9kQmlnSW50IiwiJFpvZEJpZ0ludCIsIkJpZ0ludCIsImJpZ2ludCIsIl9iaWdpbnQiLCJab2RCaWdJbnRGb3JtYXQiLCIkWm9kQmlnSW50Rm9ybWF0IiwiaW50NjQiLCJfaW50NjQiLCJ1aW50NjQiLCJfdWludDY0IiwiWm9kU3ltYm9sIiwiJFpvZFN5bWJvbCIsInN5bWJvbCIsIl9zeW1ib2wiLCJab2RVbmRlZmluZWQiLCIkWm9kVW5kZWZpbmVkIiwiX3VuZGVmaW5lZCIsIlpvZE51bGwiLCIkWm9kTnVsbCIsIl9udWxsIiwibnVsbCIsIlpvZEFueSIsIiRab2RBbnkiLCJhbnkiLCJfYW55IiwiWm9kVW5rbm93biIsIiRab2RVbmtub3duIiwidW5rbm93biIsIl91bmtub3duIiwiWm9kTmV2ZXIiLCIkWm9kTmV2ZXIiLCJuZXZlciIsIl9uZXZlciIsIlpvZFZvaWQiLCIkWm9kVm9pZCIsIl92b2lkIiwidm9pZCIsIlpvZERhdGUiLCIkWm9kRGF0ZSIsImMiLCJtaW5EYXRlIiwiRGF0ZSIsIm1heERhdGUiLCJfZGF0ZSIsIlpvZEFycmF5IiwiJFpvZEFycmF5IiwiZWxlbWVudCIsImxlbiIsInVud3JhcCIsIl9hcnJheSIsImtleW9mIiwic2NoZW1hIiwic2hhcGUiLCJsaXRlcmFsIiwia2V5cyIsIlpvZE9iamVjdCIsIiRab2RPYmplY3QiLCJkZWZpbmVMYXp5IiwiX2VudW0iLCJjYXRjaGFsbCIsInBhc3N0aHJvdWdoIiwibG9vc2UiLCJzdHJpY3QiLCJzdHJpcCIsImV4dGVuZCIsImluY29taW5nIiwibWVyZ2UiLCJvdGhlciIsInBpY2siLCJtYXNrIiwib21pdCIsInBhcnRpYWwiLCJab2RPcHRpb25hbCIsInJlcXVpcmVkIiwiWm9kTm9uT3B0aW9uYWwiLCJvYmplY3QiLCJ0eXBlIiwiYXNzaWduUHJvcCIsIm5vcm1hbGl6ZVBhcmFtcyIsInN0cmljdE9iamVjdCIsImxvb3NlT2JqZWN0IiwiWm9kVW5pb24iLCIkWm9kVW5pb24iLCJvcHRpb25zIiwiWm9kRGlzY3JpbWluYXRlZFVuaW9uIiwiJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiIsImRpc2NyaW1pbmF0ZWRVbmlvbiIsImRpc2NyaW1pbmF0b3IiLCJab2RJbnRlcnNlY3Rpb24iLCIkWm9kSW50ZXJzZWN0aW9uIiwibGVmdCIsInJpZ2h0IiwiWm9kVHVwbGUiLCIkWm9kVHVwbGUiLCJyZXN0IiwidHVwbGUiLCJpdGVtcyIsIl9wYXJhbXNPclJlc3QiLCJoYXNSZXN0IiwiWm9kUmVjb3JkIiwiJFpvZFJlY29yZCIsImtleVR5cGUiLCJ2YWx1ZVR5cGUiLCJyZWNvcmQiLCJwYXJ0aWFsUmVjb3JkIiwiWm9kTWFwIiwiJFpvZE1hcCIsIlpvZFNldCIsIiRab2RTZXQiLCJfbWluU2l6ZSIsIl9tYXhTaXplIiwic2l6ZSIsIl9zaXplIiwic2V0IiwiWm9kRW51bSIsIiRab2RFbnVtIiwiZW51bSIsImVudHJpZXMiLCJ2YWx1ZXMiLCJTZXQiLCJleHRyYWN0IiwibmV3RW50cmllcyIsImhhcyIsIkVycm9yIiwiZXhjbHVkZSIsIkFycmF5IiwiaXNBcnJheSIsImZyb21FbnRyaWVzIiwidiIsIm5hdGl2ZUVudW0iLCJab2RMaXRlcmFsIiwiJFpvZExpdGVyYWwiLCJab2RGaWxlIiwiJFpvZEZpbGUiLCJtaW1lIiwidHlwZXMiLCJfbWltZSIsImZpbGUiLCJfZmlsZSIsIlpvZFRyYW5zZm9ybSIsIiRab2RUcmFuc2Zvcm0iLCJwYXlsb2FkIiwiX2N0eCIsImFkZElzc3VlIiwiaXNzdWUiLCJpc3N1ZXMiLCJwdXNoIiwiX2lzc3VlIiwiZmF0YWwiLCJjb250aW51ZSIsImNvZGUiLCJpbnB1dCIsIm91dHB1dCIsIlByb21pc2UiLCJ0aGVuIiwiJFpvZE9wdGlvbmFsIiwiaW5uZXJUeXBlIiwiWm9kTnVsbGFibGUiLCIkWm9kTnVsbGFibGUiLCJab2REZWZhdWx0IiwiJFpvZERlZmF1bHQiLCJyZW1vdmVEZWZhdWx0IiwiZGVmYXVsdFZhbHVlIiwiWm9kUHJlZmF1bHQiLCIkWm9kUHJlZmF1bHQiLCIkWm9kTm9uT3B0aW9uYWwiLCJab2RTdWNjZXNzIiwiJFpvZFN1Y2Nlc3MiLCJab2RDYXRjaCIsIiRab2RDYXRjaCIsInJlbW92ZUNhdGNoIiwiY2F0Y2hWYWx1ZSIsIlpvZE5hTiIsIiRab2ROYU4iLCJuYW4iLCJfbmFuIiwiWm9kUGlwZSIsIiRab2RQaXBlIiwiaW4iLCJvdXQiLCJpbl8iLCJab2RSZWFkb25seSIsIiRab2RSZWFkb25seSIsIlpvZFRlbXBsYXRlTGl0ZXJhbCIsIiRab2RUZW1wbGF0ZUxpdGVyYWwiLCJ0ZW1wbGF0ZUxpdGVyYWwiLCJwYXJ0cyIsIlpvZExhenkiLCIkWm9kTGF6eSIsImdldHRlciIsImxhenkiLCJab2RQcm9taXNlIiwiJFpvZFByb21pc2UiLCJwcm9taXNlIiwiWm9kQ3VzdG9tIiwiJFpvZEN1c3RvbSIsIiRab2RDaGVjayIsImN1c3RvbSIsIl9jdXN0b20iLCJfcmVmaW5lIiwiYWJvcnQiLCJfaW5zdGFuY2VvZiIsImNscyIsImVycm9yIiwibmFtZSIsIkNsYXNzIiwiaW5zdGFuY2VvZiIsInN0cmluZ2Jvb2wiLCJfc3RyaW5nYm9vbCIsIlBpcGUiLCJCb29sZWFuIiwiU3RyaW5nIiwiVHJhbnNmb3JtIiwianNvbiIsImpzb25TY2hlbWEiLCJwcmVwcm9jZXNzIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/classic/schemas.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js ***!
|
||
\************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TimePrecision: () => (/* binding */ TimePrecision),\n/* harmony export */ _any: () => (/* binding */ _any),\n/* harmony export */ _array: () => (/* binding */ _array),\n/* harmony export */ _base64: () => (/* binding */ _base64),\n/* harmony export */ _base64url: () => (/* binding */ _base64url),\n/* harmony export */ _bigint: () => (/* binding */ _bigint),\n/* harmony export */ _boolean: () => (/* binding */ _boolean),\n/* harmony export */ _catch: () => (/* binding */ _catch),\n/* harmony export */ _cidrv4: () => (/* binding */ _cidrv4),\n/* harmony export */ _cidrv6: () => (/* binding */ _cidrv6),\n/* harmony export */ _coercedBigint: () => (/* binding */ _coercedBigint),\n/* harmony export */ _coercedBoolean: () => (/* binding */ _coercedBoolean),\n/* harmony export */ _coercedDate: () => (/* binding */ _coercedDate),\n/* harmony export */ _coercedNumber: () => (/* binding */ _coercedNumber),\n/* harmony export */ _coercedString: () => (/* binding */ _coercedString),\n/* harmony export */ _cuid: () => (/* binding */ _cuid),\n/* harmony export */ _cuid2: () => (/* binding */ _cuid2),\n/* harmony export */ _custom: () => (/* binding */ _custom),\n/* harmony export */ _date: () => (/* binding */ _date),\n/* harmony export */ _default: () => (/* binding */ _default),\n/* harmony export */ _discriminatedUnion: () => (/* binding */ _discriminatedUnion),\n/* harmony export */ _e164: () => (/* binding */ _e164),\n/* harmony export */ _email: () => (/* binding */ _email),\n/* harmony export */ _emoji: () => (/* binding */ _emoji),\n/* harmony export */ _endsWith: () => (/* binding */ _endsWith),\n/* harmony export */ _enum: () => (/* binding */ _enum),\n/* harmony export */ _file: () => (/* binding */ _file),\n/* harmony export */ _float32: () => (/* binding */ _float32),\n/* harmony export */ _float64: () => (/* binding */ _float64),\n/* harmony export */ _gt: () => (/* binding */ _gt),\n/* harmony export */ _gte: () => (/* binding */ _gte),\n/* harmony export */ _guid: () => (/* binding */ _guid),\n/* harmony export */ _includes: () => (/* binding */ _includes),\n/* harmony export */ _int: () => (/* binding */ _int),\n/* harmony export */ _int32: () => (/* binding */ _int32),\n/* harmony export */ _int64: () => (/* binding */ _int64),\n/* harmony export */ _intersection: () => (/* binding */ _intersection),\n/* harmony export */ _ipv4: () => (/* binding */ _ipv4),\n/* harmony export */ _ipv6: () => (/* binding */ _ipv6),\n/* harmony export */ _isoDate: () => (/* binding */ _isoDate),\n/* harmony export */ _isoDateTime: () => (/* binding */ _isoDateTime),\n/* harmony export */ _isoDuration: () => (/* binding */ _isoDuration),\n/* harmony export */ _isoTime: () => (/* binding */ _isoTime),\n/* harmony export */ _jwt: () => (/* binding */ _jwt),\n/* harmony export */ _ksuid: () => (/* binding */ _ksuid),\n/* harmony export */ _lazy: () => (/* binding */ _lazy),\n/* harmony export */ _length: () => (/* binding */ _length),\n/* harmony export */ _literal: () => (/* binding */ _literal),\n/* harmony export */ _lowercase: () => (/* binding */ _lowercase),\n/* harmony export */ _lt: () => (/* binding */ _lt),\n/* harmony export */ _lte: () => (/* binding */ _lte),\n/* harmony export */ _map: () => (/* binding */ _map),\n/* harmony export */ _max: () => (/* binding */ _lte),\n/* harmony export */ _maxLength: () => (/* binding */ _maxLength),\n/* harmony export */ _maxSize: () => (/* binding */ _maxSize),\n/* harmony export */ _mime: () => (/* binding */ _mime),\n/* harmony export */ _min: () => (/* binding */ _gte),\n/* harmony export */ _minLength: () => (/* binding */ _minLength),\n/* harmony export */ _minSize: () => (/* binding */ _minSize),\n/* harmony export */ _multipleOf: () => (/* binding */ _multipleOf),\n/* harmony export */ _nan: () => (/* binding */ _nan),\n/* harmony export */ _nanoid: () => (/* binding */ _nanoid),\n/* harmony export */ _nativeEnum: () => (/* binding */ _nativeEnum),\n/* harmony export */ _negative: () => (/* binding */ _negative),\n/* harmony export */ _never: () => (/* binding */ _never),\n/* harmony export */ _nonnegative: () => (/* binding */ _nonnegative),\n/* harmony export */ _nonoptional: () => (/* binding */ _nonoptional),\n/* harmony export */ _nonpositive: () => (/* binding */ _nonpositive),\n/* harmony export */ _normalize: () => (/* binding */ _normalize),\n/* harmony export */ _null: () => (/* binding */ _null),\n/* harmony export */ _nullable: () => (/* binding */ _nullable),\n/* harmony export */ _number: () => (/* binding */ _number),\n/* harmony export */ _optional: () => (/* binding */ _optional),\n/* harmony export */ _overwrite: () => (/* binding */ _overwrite),\n/* harmony export */ _pipe: () => (/* binding */ _pipe),\n/* harmony export */ _positive: () => (/* binding */ _positive),\n/* harmony export */ _promise: () => (/* binding */ _promise),\n/* harmony export */ _property: () => (/* binding */ _property),\n/* harmony export */ _readonly: () => (/* binding */ _readonly),\n/* harmony export */ _record: () => (/* binding */ _record),\n/* harmony export */ _refine: () => (/* binding */ _refine),\n/* harmony export */ _regex: () => (/* binding */ _regex),\n/* harmony export */ _set: () => (/* binding */ _set),\n/* harmony export */ _size: () => (/* binding */ _size),\n/* harmony export */ _startsWith: () => (/* binding */ _startsWith),\n/* harmony export */ _string: () => (/* binding */ _string),\n/* harmony export */ _stringFormat: () => (/* binding */ _stringFormat),\n/* harmony export */ _stringbool: () => (/* binding */ _stringbool),\n/* harmony export */ _success: () => (/* binding */ _success),\n/* harmony export */ _symbol: () => (/* binding */ _symbol),\n/* harmony export */ _templateLiteral: () => (/* binding */ _templateLiteral),\n/* harmony export */ _toLowerCase: () => (/* binding */ _toLowerCase),\n/* harmony export */ _toUpperCase: () => (/* binding */ _toUpperCase),\n/* harmony export */ _transform: () => (/* binding */ _transform),\n/* harmony export */ _trim: () => (/* binding */ _trim),\n/* harmony export */ _tuple: () => (/* binding */ _tuple),\n/* harmony export */ _uint32: () => (/* binding */ _uint32),\n/* harmony export */ _uint64: () => (/* binding */ _uint64),\n/* harmony export */ _ulid: () => (/* binding */ _ulid),\n/* harmony export */ _undefined: () => (/* binding */ _undefined),\n/* harmony export */ _union: () => (/* binding */ _union),\n/* harmony export */ _unknown: () => (/* binding */ _unknown),\n/* harmony export */ _uppercase: () => (/* binding */ _uppercase),\n/* harmony export */ _url: () => (/* binding */ _url),\n/* harmony export */ _uuid: () => (/* binding */ _uuid),\n/* harmony export */ _uuidv4: () => (/* binding */ _uuidv4),\n/* harmony export */ _uuidv6: () => (/* binding */ _uuidv6),\n/* harmony export */ _uuidv7: () => (/* binding */ _uuidv7),\n/* harmony export */ _void: () => (/* binding */ _void),\n/* harmony export */ _xid: () => (/* binding */ _xid)\n/* harmony export */ });\n/* harmony import */ var _checks_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checks.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js\");\n/* harmony import */ var _schemas_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./schemas.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js\");\n\n\n\nfunction _string(Class, params) {\n return new Class({\n type: \"string\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _coercedString(Class, params) {\n return new Class({\n type: \"string\",\n coerce: true,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _email(Class, params) {\n return new Class({\n type: \"string\",\n format: \"email\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _guid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"guid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _uuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _uuidv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v4\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _uuidv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v6\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _uuidv7(Class, params) {\n return new Class({\n type: \"string\",\n format: \"uuid\",\n check: \"string_format\",\n abort: false,\n version: \"v7\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"url\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _emoji(Class, params) {\n return new Class({\n type: \"string\",\n format: \"emoji\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _nanoid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"nanoid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _cuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _cuid2(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cuid2\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _ulid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ulid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _xid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"xid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _ksuid(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ksuid\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _ipv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv4\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _ipv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"ipv6\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _cidrv4(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv4\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _cidrv6(Class, params) {\n return new Class({\n type: \"string\",\n format: \"cidrv6\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _base64(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _base64url(Class, params) {\n return new Class({\n type: \"string\",\n format: \"base64url\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _e164(Class, params) {\n return new Class({\n type: \"string\",\n format: \"e164\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _jwt(Class, params) {\n return new Class({\n type: \"string\",\n format: \"jwt\",\n check: \"string_format\",\n abort: false,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nconst TimePrecision = {\n Any: null,\n Minute: -1,\n Second: 0,\n Millisecond: 3,\n Microsecond: 6\n};\nfunction _isoDateTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"datetime\",\n check: \"string_format\",\n offset: false,\n local: false,\n precision: null,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _isoDate(Class, params) {\n return new Class({\n type: \"string\",\n format: \"date\",\n check: \"string_format\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _isoTime(Class, params) {\n return new Class({\n type: \"string\",\n format: \"time\",\n check: \"string_format\",\n precision: null,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _isoDuration(Class, params) {\n return new Class({\n type: \"string\",\n format: \"duration\",\n check: \"string_format\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _number(Class, params) {\n return new Class({\n type: \"number\",\n checks: [],\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _coercedNumber(Class, params) {\n return new Class({\n type: \"number\",\n coerce: true,\n checks: [],\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _int(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"safeint\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _float32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float32\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _float64(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"float64\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _int32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"int32\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _uint32(Class, params) {\n return new Class({\n type: \"number\",\n check: \"number_format\",\n abort: false,\n format: \"uint32\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _boolean(Class, params) {\n return new Class({\n type: \"boolean\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _coercedBoolean(Class, params) {\n return new Class({\n type: \"boolean\",\n coerce: true,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _bigint(Class, params) {\n return new Class({\n type: \"bigint\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _coercedBigint(Class, params) {\n return new Class({\n type: \"bigint\",\n coerce: true,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _int64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"int64\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _uint64(Class, params) {\n return new Class({\n type: \"bigint\",\n check: \"bigint_format\",\n abort: false,\n format: \"uint64\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _symbol(Class, params) {\n return new Class({\n type: \"symbol\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _undefined(Class, params) {\n return new Class({\n type: \"undefined\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _null(Class, params) {\n return new Class({\n type: \"null\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _any(Class) {\n return new Class({\n type: \"any\"\n });\n}\nfunction _unknown(Class) {\n return new Class({\n type: \"unknown\"\n });\n}\nfunction _never(Class, params) {\n return new Class({\n type: \"never\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _void(Class, params) {\n return new Class({\n type: \"void\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _date(Class, params) {\n return new Class({\n type: \"date\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _coercedDate(Class, params) {\n return new Class({\n type: \"date\",\n coerce: true,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _nan(Class, params) {\n return new Class({\n type: \"nan\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _lt(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckLessThan({\n check: \"less_than\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n value,\n inclusive: false\n });\n}\nfunction _lte(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckLessThan({\n check: \"less_than\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n value,\n inclusive: true\n });\n}\n\nfunction _gt(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n value,\n inclusive: false\n });\n}\nfunction _gte(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckGreaterThan({\n check: \"greater_than\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n value,\n inclusive: true\n });\n}\n\nfunction _positive(params) {\n return _gt(0, params);\n}\n// negative\nfunction _negative(params) {\n return _lt(0, params);\n}\n// nonpositive\nfunction _nonpositive(params) {\n return _lte(0, params);\n}\n// nonnegative\nfunction _nonnegative(params) {\n return _gte(0, params);\n}\nfunction _multipleOf(value, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckMultipleOf({\n check: \"multiple_of\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n value\n });\n}\nfunction _maxSize(maximum, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckMaxSize({\n check: \"max_size\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n maximum\n });\n}\nfunction _minSize(minimum, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckMinSize({\n check: \"min_size\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n minimum\n });\n}\nfunction _size(size, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckSizeEquals({\n check: \"size_equals\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n size\n });\n}\nfunction _maxLength(maximum, params) {\n const ch = new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckMaxLength({\n check: \"max_length\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n maximum\n });\n return ch;\n}\nfunction _minLength(minimum, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckMinLength({\n check: \"min_length\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n minimum\n });\n}\nfunction _length(length, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckLengthEquals({\n check: \"length_equals\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n length\n });\n}\nfunction _regex(pattern, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckRegex({\n check: \"string_format\",\n format: \"regex\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n pattern\n });\n}\nfunction _lowercase(params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckLowerCase({\n check: \"string_format\",\n format: \"lowercase\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _uppercase(params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckUpperCase({\n check: \"string_format\",\n format: \"uppercase\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _includes(includes, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckIncludes({\n check: \"string_format\",\n format: \"includes\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n includes\n });\n}\nfunction _startsWith(prefix, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckStartsWith({\n check: \"string_format\",\n format: \"starts_with\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n prefix\n });\n}\nfunction _endsWith(suffix, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckEndsWith({\n check: \"string_format\",\n format: \"ends_with\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params),\n suffix\n });\n}\nfunction _property(property, schema, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckProperty({\n check: \"property\",\n property,\n schema,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _mime(types, params) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckMimeType({\n check: \"mime_type\",\n mime: types,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _overwrite(tx) {\n return new _checks_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCheckOverwrite({\n check: \"overwrite\",\n tx\n });\n}\n// normalize\nfunction _normalize(form) {\n return _overwrite((input)=>input.normalize(form));\n}\n// trim\nfunction _trim() {\n return _overwrite((input)=>input.trim());\n}\n// toLowerCase\nfunction _toLowerCase() {\n return _overwrite((input)=>input.toLowerCase());\n}\n// toUpperCase\nfunction _toUpperCase() {\n return _overwrite((input)=>input.toUpperCase());\n}\nfunction _array(Class, element, params) {\n return new Class({\n type: \"array\",\n element,\n // get element() {\n // return element;\n // },\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _union(Class, options, params) {\n return new Class({\n type: \"union\",\n options,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _discriminatedUnion(Class, discriminator, options, params) {\n return new Class({\n type: \"union\",\n options,\n discriminator,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _intersection(Class, left, right) {\n return new Class({\n type: \"intersection\",\n left,\n right\n });\n}\n// export function _tuple(\n// Class: util.SchemaClass<schemas.$ZodTuple>,\n// items: [],\n// params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\nfunction _tuple(Class, items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof _schemas_js__WEBPACK_IMPORTED_MODULE_2__.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new Class({\n type: \"tuple\",\n items,\n rest,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _record(Class, keyType, valueType, params) {\n return new Class({\n type: \"record\",\n keyType,\n valueType,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _map(Class, keyType, valueType, params) {\n return new Class({\n type: \"map\",\n keyType,\n valueType,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _set(Class, valueType, params) {\n return new Class({\n type: \"set\",\n valueType,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _enum(Class, values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v)=>[\n v,\n v\n ])) : values;\n // if (Array.isArray(values)) {\n // for (const value of values) {\n // entries[value] = value;\n // }\n // } else {\n // Object.assign(entries, values);\n // }\n // const entries: util.EnumLike = {};\n // for (const val of values) {\n // entries[val] = val;\n // }\n return new Class({\n type: \"enum\",\n entries,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */ function _nativeEnum(Class, entries, params) {\n return new Class({\n type: \"enum\",\n entries,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _literal(Class, value, params) {\n return new Class({\n type: \"literal\",\n values: Array.isArray(value) ? value : [\n value\n ],\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _file(Class, params) {\n return new Class({\n type: \"file\",\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _transform(Class, fn) {\n return new Class({\n type: \"transform\",\n transform: fn\n });\n}\nfunction _optional(Class, innerType) {\n return new Class({\n type: \"optional\",\n innerType\n });\n}\nfunction _nullable(Class, innerType) {\n return new Class({\n type: \"nullable\",\n innerType\n });\n}\nfunction _default(Class, innerType, defaultValue) {\n return new Class({\n type: \"default\",\n innerType,\n get defaultValue () {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n }\n });\n}\nfunction _nonoptional(Class, innerType, params) {\n return new Class({\n type: \"nonoptional\",\n innerType,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _success(Class, innerType) {\n return new Class({\n type: \"success\",\n innerType\n });\n}\nfunction _catch(Class, innerType, catchValue) {\n return new Class({\n type: \"catch\",\n innerType,\n catchValue: typeof catchValue === \"function\" ? catchValue : ()=>catchValue\n });\n}\nfunction _pipe(Class, in_, out) {\n return new Class({\n type: \"pipe\",\n in: in_,\n out\n });\n}\nfunction _readonly(Class, innerType) {\n return new Class({\n type: \"readonly\",\n innerType\n });\n}\nfunction _templateLiteral(Class, parts, params) {\n return new Class({\n type: \"template_literal\",\n parts,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(params)\n });\n}\nfunction _lazy(Class, getter) {\n return new Class({\n type: \"lazy\",\n getter\n });\n}\nfunction _promise(Class, innerType) {\n return new Class({\n type: \"promise\",\n innerType\n });\n}\nfunction _custom(Class, fn, _params) {\n const norm = _util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(_params);\n norm.abort ?? (norm.abort = true); // default to abort:false\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ...norm\n });\n return schema;\n}\n// export function _refine<T>(\n// Class: util.SchemaClass<schemas.$ZodCustom>,\n// fn: (arg: NoInfer<T>) => util.MaybeAsync<unknown>,\n// _params: string | $ZodCustomParams = {}\n// ): checks.$ZodCheck<T> {\n// return _custom(Class, fn, _params);\n// }\n// same as _custom but defaults to abort:false\nfunction _refine(Class, fn, _params) {\n const schema = new Class({\n type: \"custom\",\n check: \"custom\",\n fn: fn,\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(_params)\n });\n return schema;\n}\nfunction _stringbool(Classes, _params) {\n const params = _util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(_params);\n let truthyArray = params.truthy ?? [\n \"true\",\n \"1\",\n \"yes\",\n \"on\",\n \"y\",\n \"enabled\"\n ];\n let falsyArray = params.falsy ?? [\n \"false\",\n \"0\",\n \"no\",\n \"off\",\n \"n\",\n \"disabled\"\n ];\n if (params.case !== \"sensitive\") {\n truthyArray = truthyArray.map((v)=>typeof v === \"string\" ? v.toLowerCase() : v);\n falsyArray = falsyArray.map((v)=>typeof v === \"string\" ? v.toLowerCase() : v);\n }\n const truthySet = new Set(truthyArray);\n const falsySet = new Set(falsyArray);\n const _Pipe = Classes.Pipe ?? _schemas_js__WEBPACK_IMPORTED_MODULE_2__.$ZodPipe;\n const _Boolean = Classes.Boolean ?? _schemas_js__WEBPACK_IMPORTED_MODULE_2__.$ZodBoolean;\n const _String = Classes.String ?? _schemas_js__WEBPACK_IMPORTED_MODULE_2__.$ZodString;\n const _Transform = Classes.Transform ?? _schemas_js__WEBPACK_IMPORTED_MODULE_2__.$ZodTransform;\n const tx = new _Transform({\n type: \"transform\",\n transform: (input, payload)=>{\n let data = input;\n if (params.case !== \"sensitive\") data = data.toLowerCase();\n if (truthySet.has(data)) {\n return true;\n } else if (falsySet.has(data)) {\n return false;\n } else {\n payload.issues.push({\n code: \"invalid_value\",\n expected: \"stringbool\",\n values: [\n ...truthySet,\n ...falsySet\n ],\n input: payload.value,\n inst: tx\n });\n return {};\n }\n },\n error: params.error\n });\n // params.error;\n const innerPipe = new _Pipe({\n type: \"pipe\",\n in: new _String({\n type: \"string\",\n error: params.error\n }),\n out: tx,\n error: params.error\n });\n const outerPipe = new _Pipe({\n type: \"pipe\",\n in: innerPipe,\n out: new _Boolean({\n type: \"boolean\",\n error: params.error\n }),\n error: params.error\n });\n return outerPipe;\n}\nfunction _stringFormat(Class, format, fnOrRegex, _params = {}) {\n const params = _util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(_params);\n const def = {\n ..._util_js__WEBPACK_IMPORTED_MODULE_0__.normalizeParams(_params),\n check: \"string_format\",\n type: \"string\",\n format,\n fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val)=>fnOrRegex.test(val),\n ...params\n };\n if (fnOrRegex instanceof RegExp) {\n def.pattern = fnOrRegex;\n }\n const inst = new Class(def);\n return inst;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2FwaS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFzQztBQUNFO0FBQ047QUFDM0IsU0FBU0csUUFBUUMsS0FBSyxFQUFFQyxNQUFNO0lBQ2pDLE9BQU8sSUFBSUQsTUFBTTtRQUNiRSxNQUFNO1FBQ04sR0FBR0oscURBQW9CLENBQUNHLE9BQU87SUFDbkM7QUFDSjtBQUNPLFNBQVNHLGVBQWVKLEtBQUssRUFBRUMsTUFBTTtJQUN4QyxPQUFPLElBQUlELE1BQU07UUFDYkUsTUFBTTtRQUNORyxRQUFRO1FBQ1IsR0FBR1AscURBQW9CLENBQUNHLE9BQU87SUFDbkM7QUFDSjtBQUNPLFNBQVNLLE9BQU9OLEtBQUssRUFBRUMsTUFBTTtJQUNoQyxPQUFPLElBQUlELE1BQU07UUFDYkUsTUFBTTtRQUNOSyxRQUFRO1FBQ1JDLE9BQU87UUFDUEMsT0FBTztRQUNQLEdBQUdYLHFEQUFvQixDQUFDRyxPQUFPO0lBQ25DO0FBQ0o7QUFDTyxTQUFTUyxNQUFNVixLQUFLLEVBQUVDLE1BQU07SUFDL0IsT0FBTyxJQUFJRCxNQUFNO1FBQ2JFLE1BQU07UUFDTkssUUFBUTtRQUNSQyxPQUFPO1FBQ1BDLE9BQU87UUFDUCxHQUFHWCxxREFBb0IsQ0FBQ0csT0FBTztJQUNuQztBQUNKO0FBQ08sU0FBU1UsTUFBTVgsS0FBSyxFQUFFQyxNQUFNO0lBQy9CLE9BQU8sSUFBSUQsTUFBTTtRQUNiRSxNQUFNO1FBQ05LLFFBQVE7UUFDUkMsT0FBTztRQUNQQyxPQUFPO1FBQ1AsR0FBR1gscURBQW9CLENBQUNHLE9BQU87SUFDbkM7QUFDSjtBQUNPLFNBQVNXLFFBQVFaLEtBQUss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LE9BQU9FO0FBQ1g7QUFDTyxTQUFTQyxjQUFjck8sS0FBSyxFQUFFTyxNQUFNLEVBQUUrTixTQUFTLEVBQUVoRixVQUFVLENBQUMsQ0FBQztJQUNoRSxNQUFNckosU0FBU0gscURBQW9CLENBQUN3SjtJQUNwQyxNQUFNaUYsTUFBTTtRQUNSLEdBQUd6TyxxREFBb0IsQ0FBQ3dKLFFBQVE7UUFDaEM5SSxPQUFPO1FBQ1BOLE1BQU07UUFDTks7UUFDQXFLLElBQUksT0FBTzBELGNBQWMsYUFBYUEsWUFBWSxDQUFDRSxNQUFRRixVQUFVRyxJQUFJLENBQUNEO1FBQzFFLEdBQUd2TyxNQUFNO0lBQ2I7SUFDQSxJQUFJcU8scUJBQXFCSSxRQUFRO1FBQzdCSCxJQUFJakksT0FBTyxHQUFHZ0k7SUFDbEI7SUFDQSxNQUFNTCxPQUFPLElBQUlqTyxNQUFNdU87SUFDdkIsT0FBT047QUFDWCIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvYXBpLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoZWNrcyBmcm9tIFwiLi9jaGVja3MuanNcIjtcbmltcG9ydCAqIGFzIHNjaGVtYXMgZnJvbSBcIi4vc2NoZW1hcy5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi91dGlsLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gX3N0cmluZyhDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2NvZXJjZWRTdHJpbmcoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBjb2VyY2U6IHRydWUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2VtYWlsKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImVtYWlsXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9ndWlkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImd1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3V1aWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwidXVpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdXVpZHY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInV1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIHZlcnNpb246IFwidjRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdXVpZHY2KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInV1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIHZlcnNpb246IFwidjZcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdXVpZHY3KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInV1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIHZlcnNpb246IFwidjdcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdXJsKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInVybFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZW1vamkoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiZW1vamlcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX25hbm9pZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJuYW5vaWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2N1aWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiY3VpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY3VpZDIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiY3VpZDJcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3VsaWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwidWxpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfeGlkKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInhpZFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfa3N1aWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwia3N1aWRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2lwdjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiaXB2NFwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaXB2NihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJpcHY2XCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jaWRydjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiY2lkcnY0XCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jaWRydjYoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiY2lkcnY2XCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9iYXNlNjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiYmFzZTY0XCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9iYXNlNjR1cmwoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICBmb3JtYXQ6IFwiYmFzZTY0dXJsXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9lMTY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImUxNjRcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2p3dChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJqd3RcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgVGltZVByZWNpc2lvbiA9IHtcbiAgICBBbnk6IG51bGwsXG4gICAgTWludXRlOiAtMSxcbiAgICBTZWNvbmQ6IDAsXG4gICAgTWlsbGlzZWNvbmQ6IDMsXG4gICAgTWljcm9zZWNvbmQ6IDYsXG59O1xuZXhwb3J0IGZ1bmN0aW9uIF9pc29EYXRlVGltZShDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgIGZvcm1hdDogXCJkYXRldGltZVwiLFxuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIG9mZnNldDogZmFsc2UsXG4gICAgICAgIGxvY2FsOiBmYWxzZSxcbiAgICAgICAgcHJlY2lzaW9uOiBudWxsLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pc29EYXRlKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImRhdGVcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pc29UaW1lKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcInRpbWVcIixcbiAgICAgICAgY2hlY2s6IFwic3RyaW5nX2Zvcm1hdFwiLFxuICAgICAgICBwcmVjaXNpb246IG51bGwsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2lzb0R1cmF0aW9uKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0OiBcImR1cmF0aW9uXCIsXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbnVtYmVyKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfY29lcmNlZE51bWJlcihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNvZXJjZTogdHJ1ZSxcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaW50KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgY2hlY2s6IFwibnVtYmVyX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIGZvcm1hdDogXCJzYWZlaW50XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2Zsb2F0MzIoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICBjaGVjazogXCJudW1iZXJfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgZm9ybWF0OiBcImZsb2F0MzJcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZmxvYXQ2NChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNoZWNrOiBcIm51bWJlcl9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwiZmxvYXQ2NFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pbnQzMihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVtYmVyXCIsXG4gICAgICAgIGNoZWNrOiBcIm51bWJlcl9mb3JtYXRcIixcbiAgICAgICAgYWJvcnQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXQ6IFwiaW50MzJcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdWludDMyKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgY2hlY2s6IFwibnVtYmVyX2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIGZvcm1hdDogXCJ1aW50MzJcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfYm9vbGVhbihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jb2VyY2VkQm9vbGVhbihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICBjb2VyY2U6IHRydWUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2JpZ2ludChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2NvZXJjZWRCaWdpbnQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImJpZ2ludFwiLFxuICAgICAgICBjb2VyY2U6IHRydWUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2ludDY0KENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJiaWdpbnRcIixcbiAgICAgICAgY2hlY2s6IFwiYmlnaW50X2Zvcm1hdFwiLFxuICAgICAgICBhYm9ydDogZmFsc2UsXG4gICAgICAgIGZvcm1hdDogXCJpbnQ2NFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91aW50NjQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImJpZ2ludFwiLFxuICAgICAgICBjaGVjazogXCJiaWdpbnRfZm9ybWF0XCIsXG4gICAgICAgIGFib3J0OiBmYWxzZSxcbiAgICAgICAgZm9ybWF0OiBcInVpbnQ2NFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9zeW1ib2woQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN5bWJvbFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91bmRlZmluZWQoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInVuZGVmaW5lZFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9udWxsKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJudWxsXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2FueShDbGFzcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImFueVwiLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF91bmtub3duKENsYXNzKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidW5rbm93blwiLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9uZXZlcihDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibmV2ZXJcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdm9pZChDbGFzcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidm9pZFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9kYXRlKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJkYXRlXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2NvZXJjZWREYXRlKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJkYXRlXCIsXG4gICAgICAgIGNvZXJjZTogdHJ1ZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbmFuKENsYXNzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJuYW5cIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbHQodmFsdWUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0xlc3NUaGFuKHtcbiAgICAgICAgY2hlY2s6IFwibGVzc190aGFuXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9sdGUodmFsdWUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0xlc3NUaGFuKHtcbiAgICAgICAgY2hlY2s6IFwibGVzc190aGFuXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgfSk7XG59XG5leHBvcnQgeyBcbi8qKiBAZGVwcmVjYXRlZCBVc2UgYHoubHRlKClgIGluc3RlYWQuICovXG5fbHRlIGFzIF9tYXgsIH07XG5leHBvcnQgZnVuY3Rpb24gX2d0KHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tHcmVhdGVyVGhhbih7XG4gICAgICAgIGNoZWNrOiBcImdyZWF0ZXJfdGhhblwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfZ3RlKHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tHcmVhdGVyVGhhbih7XG4gICAgICAgIGNoZWNrOiBcImdyZWF0ZXJfdGhhblwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgIH0pO1xufVxuZXhwb3J0IHsgXG4vKiogQGRlcHJlY2F0ZWQgVXNlIGB6Lmd0ZSgpYCBpbnN0ZWFkLiAqL1xuX2d0ZSBhcyBfbWluLCB9O1xuZXhwb3J0IGZ1bmN0aW9uIF9wb3NpdGl2ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gX2d0KDAsIHBhcmFtcyk7XG59XG4vLyBuZWdhdGl2ZVxuZXhwb3J0IGZ1bmN0aW9uIF9uZWdhdGl2ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gX2x0KDAsIHBhcmFtcyk7XG59XG4vLyBub25wb3NpdGl2ZVxuZXhwb3J0IGZ1bmN0aW9uIF9ub25wb3NpdGl2ZShwYXJhbXMpIHtcbiAgICByZXR1cm4gX2x0ZSgwLCBwYXJhbXMpO1xufVxuLy8gbm9ubmVnYXRpdmVcbmV4cG9ydCBmdW5jdGlvbiBfbm9ubmVnYXRpdmUocGFyYW1zKSB7XG4gICAgcmV0dXJuIF9ndGUoMCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbXVsdGlwbGVPZih2YWx1ZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrTXVsdGlwbGVPZih7XG4gICAgICAgIGNoZWNrOiBcIm11bHRpcGxlX29mXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHZhbHVlLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9tYXhTaXplKG1heGltdW0sIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja01heFNpemUoe1xuICAgICAgICBjaGVjazogXCJtYXhfc2l6ZVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBtYXhpbXVtLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9taW5TaXplKG1pbmltdW0sIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja01pblNpemUoe1xuICAgICAgICBjaGVjazogXCJtaW5fc2l6ZVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBtaW5pbXVtLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9zaXplKHNpemUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja1NpemVFcXVhbHMoe1xuICAgICAgICBjaGVjazogXCJzaXplX2VxdWFsc1wiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBzaXplLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9tYXhMZW5ndGgobWF4aW11bSwgcGFyYW1zKSB7XG4gICAgY29uc3QgY2ggPSBuZXcgY2hlY2tzLiRab2RDaGVja01heExlbmd0aCh7XG4gICAgICAgIGNoZWNrOiBcIm1heF9sZW5ndGhcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgbWF4aW11bSxcbiAgICB9KTtcbiAgICByZXR1cm4gY2g7XG59XG5leHBvcnQgZnVuY3Rpb24gX21pbkxlbmd0aChtaW5pbXVtLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tNaW5MZW5ndGgoe1xuICAgICAgICBjaGVjazogXCJtaW5fbGVuZ3RoXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIG1pbmltdW0sXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2xlbmd0aChsZW5ndGgsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja0xlbmd0aEVxdWFscyh7XG4gICAgICAgIGNoZWNrOiBcImxlbmd0aF9lcXVhbHNcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgbGVuZ3RoLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9yZWdleChwYXR0ZXJuLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tSZWdleCh7XG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgZm9ybWF0OiBcInJlZ2V4XCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgICAgIHBhdHRlcm4sXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2xvd2VyY2FzZShwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tMb3dlckNhc2Uoe1xuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGZvcm1hdDogXCJsb3dlcmNhc2VcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdXBwZXJjYXNlKHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja1VwcGVyQ2FzZSh7XG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgZm9ybWF0OiBcInVwcGVyY2FzZVwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9pbmNsdWRlcyhpbmNsdWRlcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrSW5jbHVkZXMoe1xuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGZvcm1hdDogXCJpbmNsdWRlc1wiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBpbmNsdWRlcyxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfc3RhcnRzV2l0aChwcmVmaXgsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja1N0YXJ0c1dpdGgoe1xuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGZvcm1hdDogXCJzdGFydHNfd2l0aFwiLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgICAgICBwcmVmaXgsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2VuZHNXaXRoKHN1ZmZpeCwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBjaGVja3MuJFpvZENoZWNrRW5kc1dpdGgoe1xuICAgICAgICBjaGVjazogXCJzdHJpbmdfZm9ybWF0XCIsXG4gICAgICAgIGZvcm1hdDogXCJlbmRzX3dpdGhcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgc3VmZml4LFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9wcm9wZXJ0eShwcm9wZXJ0eSwgc2NoZW1hLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tQcm9wZXJ0eSh7XG4gICAgICAgIGNoZWNrOiBcInByb3BlcnR5XCIsXG4gICAgICAgIHByb3BlcnR5LFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX21pbWUodHlwZXMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgY2hlY2tzLiRab2RDaGVja01pbWVUeXBlKHtcbiAgICAgICAgY2hlY2s6IFwibWltZV90eXBlXCIsXG4gICAgICAgIG1pbWU6IHR5cGVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9vdmVyd3JpdGUodHgpIHtcbiAgICByZXR1cm4gbmV3IGNoZWNrcy4kWm9kQ2hlY2tPdmVyd3JpdGUoe1xuICAgICAgICBjaGVjazogXCJvdmVyd3JpdGVcIixcbiAgICAgICAgdHgsXG4gICAgfSk7XG59XG4vLyBub3JtYWxpemVcbmV4cG9ydCBmdW5jdGlvbiBfbm9ybWFsaXplKGZvcm0pIHtcbiAgICByZXR1cm4gX292ZXJ3cml0ZSgoaW5wdXQpID0+IGlucHV0Lm5vcm1hbGl6ZShmb3JtKSk7XG59XG4vLyB0cmltXG5leHBvcnQgZnVuY3Rpb24gX3RyaW0oKSB7XG4gICAgcmV0dXJuIF9vdmVyd3JpdGUoKGlucHV0KSA9PiBpbnB1dC50cmltKCkpO1xufVxuLy8gdG9Mb3dlckNhc2VcbmV4cG9ydCBmdW5jdGlvbiBfdG9Mb3dlckNhc2UoKSB7XG4gICAgcmV0dXJuIF9vdmVyd3JpdGUoKGlucHV0KSA9PiBpbnB1dC50b0xvd2VyQ2FzZSgpKTtcbn1cbi8vIHRvVXBwZXJDYXNlXG5leHBvcnQgZnVuY3Rpb24gX3RvVXBwZXJDYXNlKCkge1xuICAgIHJldHVybiBfb3ZlcndyaXRlKChpbnB1dCkgPT4gaW5wdXQudG9VcHBlckNhc2UoKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2FycmF5KENsYXNzLCBlbGVtZW50LCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICBlbGVtZW50LFxuICAgICAgICAvLyBnZXQgZWxlbWVudCgpIHtcbiAgICAgICAgLy8gICByZXR1cm4gZWxlbWVudDtcbiAgICAgICAgLy8gfSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdW5pb24oQ2xhc3MsIG9wdGlvbnMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInVuaW9uXCIsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2Rpc2NyaW1pbmF0ZWRVbmlvbihDbGFzcywgZGlzY3JpbWluYXRvciwgb3B0aW9ucywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZGlzY3JpbWluYXRvcixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfaW50ZXJzZWN0aW9uKENsYXNzLCBsZWZ0LCByaWdodCkge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImludGVyc2VjdGlvblwiLFxuICAgICAgICBsZWZ0LFxuICAgICAgICByaWdodCxcbiAgICB9KTtcbn1cbi8vIGV4cG9ydCBmdW5jdGlvbiBfdHVwbGUoXG4vLyAgIENsYXNzOiB1dGlsLlNjaGVtYUNsYXNzPHNjaGVtYXMuJFpvZFR1cGxlPixcbi8vICAgaXRlbXM6IFtdLFxuLy8gICBwYXJhbXM/OiBzdHJpbmcgfCAkWm9kVHVwbGVQYXJhbXNcbi8vICk6IHNjaGVtYXMuJFpvZFR1cGxlPFtdLCBudWxsPjtcbmV4cG9ydCBmdW5jdGlvbiBfdHVwbGUoQ2xhc3MsIGl0ZW1zLCBfcGFyYW1zT3JSZXN0LCBfcGFyYW1zKSB7XG4gICAgY29uc3QgaGFzUmVzdCA9IF9wYXJhbXNPclJlc3QgaW5zdGFuY2VvZiBzY2hlbWFzLiRab2RUeXBlO1xuICAgIGNvbnN0IHBhcmFtcyA9IGhhc1Jlc3QgPyBfcGFyYW1zIDogX3BhcmFtc09yUmVzdDtcbiAgICBjb25zdCByZXN0ID0gaGFzUmVzdCA/IF9wYXJhbXNPclJlc3QgOiBudWxsO1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInR1cGxlXCIsXG4gICAgICAgIGl0ZW1zLFxuICAgICAgICByZXN0LFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9yZWNvcmQoQ2xhc3MsIGtleVR5cGUsIHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwicmVjb3JkXCIsXG4gICAgICAgIGtleVR5cGUsXG4gICAgICAgIHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbWFwKENsYXNzLCBrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcIm1hcFwiLFxuICAgICAgICBrZXlUeXBlLFxuICAgICAgICB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3NldChDbGFzcywgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9lbnVtKENsYXNzLCB2YWx1ZXMsIHBhcmFtcykge1xuICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlcykgPyBPYmplY3QuZnJvbUVudHJpZXModmFsdWVzLm1hcCgodikgPT4gW3YsIHZdKSkgOiB2YWx1ZXM7XG4gICAgLy8gaWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgIC8vICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAvLyAgICAgZW50cmllc1t2YWx1ZV0gPSB2YWx1ZTtcbiAgICAvLyAgIH1cbiAgICAvLyB9IGVsc2Uge1xuICAgIC8vICAgT2JqZWN0LmFzc2lnbihlbnRyaWVzLCB2YWx1ZXMpO1xuICAgIC8vIH1cbiAgICAvLyBjb25zdCBlbnRyaWVzOiB1dGlsLkVudW1MaWtlID0ge307XG4gICAgLy8gZm9yIChjb25zdCB2YWwgb2YgdmFsdWVzKSB7XG4gICAgLy8gICBlbnRyaWVzW3ZhbF0gPSB2YWw7XG4gICAgLy8gfVxuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImVudW1cIixcbiAgICAgICAgZW50cmllcyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8qKiBAZGVwcmVjYXRlZCBUaGlzIEFQSSBoYXMgYmVlbiBtZXJnZWQgaW50byBgei5lbnVtKClgLiBVc2UgYHouZW51bSgpYCBpbnN0ZWFkLlxuICpcbiAqIGBgYHRzXG4gKiBlbnVtIENvbG9ycyB7IHJlZCwgZ3JlZW4sIGJsdWUgfVxuICogei5lbnVtKENvbG9ycyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9uYXRpdmVFbnVtKENsYXNzLCBlbnRyaWVzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJlbnVtXCIsXG4gICAgICAgIGVudHJpZXMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2xpdGVyYWwoQ2xhc3MsIHZhbHVlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJsaXRlcmFsXCIsXG4gICAgICAgIHZhbHVlczogQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0sXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX2ZpbGUoQ2xhc3MsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdHJhbnNmb3JtKENsYXNzLCBmbikge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInRyYW5zZm9ybVwiLFxuICAgICAgICB0cmFuc2Zvcm06IGZuLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9vcHRpb25hbChDbGFzcywgaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9udWxsYWJsZShDbGFzcywgaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibnVsbGFibGVcIixcbiAgICAgICAgaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9kZWZhdWx0KENsYXNzLCBpbm5lclR5cGUsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcImRlZmF1bHRcIixcbiAgICAgICAgaW5uZXJUeXBlLFxuICAgICAgICBnZXQgZGVmYXVsdFZhbHVlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IGRlZmF1bHRWYWx1ZSgpIDogZGVmYXVsdFZhbHVlO1xuICAgICAgICB9LFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9ub25vcHRpb25hbChDbGFzcywgaW5uZXJUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJub25vcHRpb25hbFwiLFxuICAgICAgICBpbm5lclR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3N1Y2Nlc3MoQ2xhc3MsIGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jYXRjaChDbGFzcywgaW5uZXJUeXBlLCBjYXRjaFZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiY2F0Y2hcIixcbiAgICAgICAgaW5uZXJUeXBlLFxuICAgICAgICBjYXRjaFZhbHVlOiAodHlwZW9mIGNhdGNoVmFsdWUgPT09IFwiZnVuY3Rpb25cIiA/IGNhdGNoVmFsdWUgOiAoKSA9PiBjYXRjaFZhbHVlKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfcGlwZShDbGFzcywgaW5fLCBvdXQpIHtcbiAgICByZXR1cm4gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJwaXBlXCIsXG4gICAgICAgIGluOiBpbl8sXG4gICAgICAgIG91dCxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfcmVhZG9ubHkoQ2xhc3MsIGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInJlYWRvbmx5XCIsXG4gICAgICAgIGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfdGVtcGxhdGVMaXRlcmFsKENsYXNzLCBwYXJ0cywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwidGVtcGxhdGVfbGl0ZXJhbFwiLFxuICAgICAgICBwYXJ0cyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfbGF6eShDbGFzcywgZ2V0dGVyKSB7XG4gICAgcmV0dXJuIG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwibGF6eVwiLFxuICAgICAgICBnZXR0ZXIsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gX3Byb21pc2UoQ2xhc3MsIGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgQ2xhc3Moe1xuICAgICAgICB0eXBlOiBcInByb21pc2VcIixcbiAgICAgICAgaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIF9jdXN0b20oQ2xhc3MsIGZuLCBfcGFyYW1zKSB7XG4gICAgY29uc3Qgbm9ybSA9IHV0aWwubm9ybWFsaXplUGFyYW1zKF9wYXJhbXMpO1xuICAgIG5vcm0uYWJvcnQgPz8gKG5vcm0uYWJvcnQgPSB0cnVlKTsgLy8gZGVmYXVsdCB0byBhYm9ydDpmYWxzZVxuICAgIGNvbnN0IHNjaGVtYSA9IG5ldyBDbGFzcyh7XG4gICAgICAgIHR5cGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIGNoZWNrOiBcImN1c3RvbVwiLFxuICAgICAgICBmbjogZm4sXG4gICAgICAgIC4uLm5vcm0sXG4gICAgfSk7XG4gICAgcmV0dXJuIHNjaGVtYTtcbn1cbi8vIGV4cG9ydCBmdW5jdGlvbiBfcmVmaW5lPFQ+KFxuLy8gICBDbGFzczogdXRpbC5TY2hlbWFDbGFzczxzY2hlbWFzLiRab2RDdXN0b20+LFxuLy8gICBmbjogKGFyZzogTm9JbmZlcjxUPikgPT4gdXRpbC5NYXliZUFzeW5jPHVua25vd24+LFxuLy8gICBfcGFyYW1zOiBzdHJpbmcgfCAkWm9kQ3VzdG9tUGFyYW1zID0ge31cbi8vICk6IGNoZWNrcy4kWm9kQ2hlY2s8VD4ge1xuLy8gICByZXR1cm4gX2N1c3RvbShDbGFzcywgZm4sIF9wYXJhbXMpO1xuLy8gfVxuLy8gc2FtZSBhcyBfY3VzdG9tIGJ1dCBkZWZhdWx0cyB0byBhYm9ydDpmYWxzZVxuZXhwb3J0IGZ1bmN0aW9uIF9yZWZpbmUoQ2xhc3MsIGZuLCBfcGFyYW1zKSB7XG4gICAgY29uc3Qgc2NoZW1hID0gbmV3IENsYXNzKHtcbiAgICAgICAgdHlwZTogXCJjdXN0b21cIixcbiAgICAgICAgY2hlY2s6IFwiY3VzdG9tXCIsXG4gICAgICAgIGZuOiBmbixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMoX3BhcmFtcyksXG4gICAgfSk7XG4gICAgcmV0dXJuIHNjaGVtYTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBfc3RyaW5nYm9vbChDbGFzc2VzLCBfcGFyYW1zKSB7XG4gICAgY29uc3QgcGFyYW1zID0gdXRpbC5ub3JtYWxpemVQYXJhbXMoX3BhcmFtcyk7XG4gICAgbGV0IHRydXRoeUFycmF5ID0gcGFyYW1zLnRydXRoeSA/PyBbXCJ0cnVlXCIsIFwiMVwiLCBcInllc1wiLCBcIm9uXCIsIFwieVwiLCBcImVuYWJsZWRcIl07XG4gICAgbGV0IGZhbHN5QXJyYXkgPSBwYXJhbXMuZmFsc3kgPz8gW1wiZmFsc2VcIiwgXCIwXCIsIFwibm9cIiwgXCJvZmZcIiwgXCJuXCIsIFwiZGlzYWJsZWRcIl07XG4gICAgaWYgKHBhcmFtcy5jYXNlICE9PSBcInNlbnNpdGl2ZVwiKSB7XG4gICAgICAgIHRydXRoeUFycmF5ID0gdHJ1dGh5QXJyYXkubWFwKCh2KSA9PiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIgPyB2LnRvTG93ZXJDYXNlKCkgOiB2KSk7XG4gICAgICAgIGZhbHN5QXJyYXkgPSBmYWxzeUFycmF5Lm1hcCgodikgPT4gKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiID8gdi50b0xvd2VyQ2FzZSgpIDogdikpO1xuICAgIH1cbiAgICBjb25zdCB0cnV0aHlTZXQgPSBuZXcgU2V0KHRydXRoeUFycmF5KTtcbiAgICBjb25zdCBmYWxzeVNldCA9IG5ldyBTZXQoZmFsc3lBcnJheSk7XG4gICAgY29uc3QgX1BpcGUgPSBDbGFzc2VzLlBpcGUgPz8gc2NoZW1hcy4kWm9kUGlwZTtcbiAgICBjb25zdCBfQm9vbGVhbiA9IENsYXNzZXMuQm9vbGVhbiA/PyBzY2hlbWFzLiRab2RCb29sZWFuO1xuICAgIGNvbnN0IF9TdHJpbmcgPSBDbGFzc2VzLlN0cmluZyA/PyBzY2hlbWFzLiRab2RTdHJpbmc7XG4gICAgY29uc3QgX1RyYW5zZm9ybSA9IENsYXNzZXMuVHJhbnNmb3JtID8/IHNjaGVtYXMuJFpvZFRyYW5zZm9ybTtcbiAgICBjb25zdCB0eCA9IG5ldyBfVHJhbnNmb3JtKHtcbiAgICAgICAgdHlwZTogXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgdHJhbnNmb3JtOiAoaW5wdXQsIHBheWxvYWQpID0+IHtcbiAgICAgICAgICAgIGxldCBkYXRhID0gaW5wdXQ7XG4gICAgICAgICAgICBpZiAocGFyYW1zLmNhc2UgIT09IFwic2Vuc2l0aXZlXCIpXG4gICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGlmICh0cnV0aHlTZXQuaGFzKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChmYWxzeVNldC5oYXMoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3ZhbHVlXCIsXG4gICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcInN0cmluZ2Jvb2xcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbLi4udHJ1dGh5U2V0LCAuLi5mYWxzeVNldF0sXG4gICAgICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpbnN0OiB0eCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiBwYXJhbXMuZXJyb3IsXG4gICAgfSk7XG4gICAgLy8gcGFyYW1zLmVycm9yO1xuICAgIGNvbnN0IGlubmVyUGlwZSA9IG5ldyBfUGlwZSh7XG4gICAgICAgIHR5cGU6IFwicGlwZVwiLFxuICAgICAgICBpbjogbmV3IF9TdHJpbmcoeyB0eXBlOiBcInN0cmluZ1wiLCBlcnJvcjogcGFyYW1zLmVycm9yIH0pLFxuICAgICAgICBvdXQ6IHR4LFxuICAgICAgICBlcnJvcjogcGFyYW1zLmVycm9yLFxuICAgIH0pO1xuICAgIGNvbnN0IG91dGVyUGlwZSA9IG5ldyBfUGlwZSh7XG4gICAgICAgIHR5cGU6IFwicGlwZVwiLFxuICAgICAgICBpbjogaW5uZXJQaXBlLFxuICAgICAgICBvdXQ6IG5ldyBfQm9vbGVhbih7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGVycm9yOiBwYXJhbXMuZXJyb3IsXG4gICAgICAgIH0pLFxuICAgICAgICBlcnJvcjogcGFyYW1zLmVycm9yLFxuICAgIH0pO1xuICAgIHJldHVybiBvdXRlclBpcGU7XG59XG5leHBvcnQgZnVuY3Rpb24gX3N0cmluZ0Zvcm1hdChDbGFzcywgZm9ybWF0LCBmbk9yUmVnZXgsIF9wYXJhbXMgPSB7fSkge1xuICAgIGNvbnN0IHBhcmFtcyA9IHV0aWwubm9ybWFsaXplUGFyYW1zKF9wYXJhbXMpO1xuICAgIGNvbnN0IGRlZiA9IHtcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMoX3BhcmFtcyksXG4gICAgICAgIGNoZWNrOiBcInN0cmluZ19mb3JtYXRcIixcbiAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgZm9ybWF0LFxuICAgICAgICBmbjogdHlwZW9mIGZuT3JSZWdleCA9PT0gXCJmdW5jdGlvblwiID8gZm5PclJlZ2V4IDogKHZhbCkgPT4gZm5PclJlZ2V4LnRlc3QodmFsKSxcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH07XG4gICAgaWYgKGZuT3JSZWdleCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICBkZWYucGF0dGVybiA9IGZuT3JSZWdleDtcbiAgICB9XG4gICAgY29uc3QgaW5zdCA9IG5ldyBDbGFzcyhkZWYpO1xuICAgIHJldHVybiBpbnN0O1xufVxuIl0sIm5hbWVzIjpbImNoZWNrcyIsInNjaGVtYXMiLCJ1dGlsIiwiX3N0cmluZyIsIkNsYXNzIiwicGFyYW1zIiwidHlwZSIsIm5vcm1hbGl6ZVBhcmFtcyIsIl9jb2VyY2VkU3RyaW5nIiwiY29lcmNlIiwiX2VtYWlsIiwiZm9ybWF0IiwiY2hlY2siLCJhYm9ydCIsIl9ndWlkIiwiX3V1aWQiLCJfdXVpZHY0IiwidmVyc2lvbiIsIl91dWlkdjYiLCJfdXVpZHY3IiwiX3VybCIsIl9lbW9qaSIsIl9uYW5vaWQiLCJfY3VpZCIsIl9jdWlkMiIsIl91bGlkIiwiX3hpZCIsIl9rc3VpZCIsIl9pcHY0IiwiX2lwdjYiLCJfY2lkcnY0IiwiX2NpZHJ2NiIsIl9iYXNlNjQiLCJfYmFzZTY0dXJsIiwiX2UxNjQiLCJfand0IiwiVGltZVByZWNpc2lvbiIsIkFueSIsIk1pbnV0ZSIsIlNlY29uZCIsIk1pbGxpc2Vjb25kIiwiTWljcm9zZWNvbmQiLCJfaXNvRGF0ZVRpbWUiLCJvZmZzZXQiLCJsb2NhbCIsInByZWNpc2lvbiIsIl9pc29EYXRlIiwiX2lzb1RpbWUiLCJfaXNvRHVyYXRpb24iLCJfbnVtYmVyIiwiX2NvZXJjZWROdW1iZXIiLCJfaW50IiwiX2Zsb2F0MzIiLCJfZmxvYXQ2NCIsIl9pbnQzMiIsIl91aW50MzIiLCJfYm9vbGVhbiIsIl9jb2VyY2VkQm9vbGVhbiIsIl9iaWdpbnQiLCJfY29lcmNlZEJpZ2ludCIsIl9pbnQ2NCIsIl91aW50NjQiLCJfc3ltYm9sIiwiX3VuZGVmaW5lZCIsIl9udWxsIiwiX2FueSIsIl91bmtub3duIiwiX25ldmVyIiwiX3ZvaWQiLCJfZGF0ZSIsIl9jb2VyY2VkRGF0ZSIsIl9uYW4iLCJfbHQiLCJ2YWx1ZSIsIiRab2RDaGVja0xlc3NUaGFuIiwiaW5jbHVzaXZlIiwiX2x0ZSIsIl9tYXgiLCJfZ3QiLCIkWm9kQ2hlY2tHcmVhdGVyVGhhbiIsIl9ndGUiLCJfbWluIiwiX3Bvc2l0aXZlIiwiX25lZ2F0aXZlIiwiX25vbnBvc2l0aXZlIiwiX25vbm5lZ2F0aXZlIiwiX211bHRpcGxlT2YiLCIkWm9kQ2hlY2tNdWx0aXBsZU9mIiwiX21heFNpemUiLCJtYXhpbXVtIiwiJFpvZENoZWNrTWF4U2l6ZSIsIl9taW5TaXplIiwibWluaW11bSIsIiRab2RDaGVja01pblNpemUiLCJfc2l6ZSIsInNpemUiLCIkWm9kQ2hlY2tTaXplRXF1YWxzIiwiX21heExlbmd0aCIsImNoIiwiJFpvZENoZWNrTWF4TGVuZ3RoIiwiX21pbkxlbmd0aCIsIiRab2RDaGVja01pbkxlbmd0aCIsIl9sZW5ndGgiLCJsZW5ndGgiLCIkWm9kQ2hlY2tMZW5ndGhFcXVhbHMiLCJfcmVnZXgiLCJwYXR0ZXJuIiwiJFpvZENoZWNrUmVnZXgiLCJfbG93ZXJjYXNlIiwiJFpvZENoZWNrTG93ZXJDYXNlIiwiX3VwcGVyY2FzZSIsIiRab2RDaGVja1VwcGVyQ2FzZSIsIl9pbmNsdWRlcyIsImluY2x1ZGVzIiwiJFpvZENoZWNrSW5jbHVkZXMiLCJfc3RhcnRzV2l0aCIsInByZWZpeCIsIiRab2RDaGVja1N0YXJ0c1dpdGgiLCJfZW5kc1dpdGgiLCJzdWZmaXgiLCIkWm9kQ2hlY2tFbmRzV2l0aCIsIl9wcm9wZXJ0eSIsInByb3BlcnR5Iiwic2NoZW1hIiwiJFpvZENoZWNrUHJvcGVydHkiLCJfbWltZSIsInR5cGVzIiwiJFpvZENoZWNrTWltZVR5cGUiLCJtaW1lIiwiX292ZXJ3cml0ZSIsInR4IiwiJFpvZENoZWNrT3ZlcndyaXRlIiwiX25vcm1hbGl6ZSIsImZvcm0iLCJpbnB1dCIsIm5vcm1hbGl6ZSIsIl90cmltIiwidHJpbSIsIl90b0xvd2VyQ2FzZSIsInRvTG93ZXJDYXNlIiwiX3RvVXBwZXJDYXNlIiwidG9VcHBlckNhc2UiLCJfYXJyYXkiLCJlbGVtZW50IiwiX3VuaW9uIiwib3B0aW9ucyIsIl9kaXNjcmltaW5hdGVkVW5pb24iLCJkaXNjcmltaW5hdG9yIiwiX2ludGVyc2VjdGlvbiIsImxlZnQiLCJyaWdodCIsIl90dXBsZSIsIml0ZW1zIiwiX3BhcmFtc09yUmVzdCIsIl9wYXJhbXMiLCJoYXNSZXN0IiwiJFpvZFR5cGUiLCJyZXN0IiwiX3JlY29yZCIsImtleVR5cGUiLCJ2YWx1ZVR5cGUiLCJfbWFwIiwiX3NldCIsIl9lbnVtIiwidmFsdWVzIiwiZW50cmllcyIsIkFycmF5IiwiaXNBcnJheSIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwibWFwIiwidiIsIl9uYXRpdmVFbnVtIiwiX2xpdGVyYWwiLCJfZmlsZSIsIl90cmFuc2Zvcm0iLCJmbiIsInRyYW5zZm9ybSIsIl9vcHRpb25hbCIsImlubmVyVHlwZSIsIl9udWxsYWJsZSIsIl9kZWZhdWx0IiwiZGVmYXVsdFZhbHVlIiwiX25vbm9wdGlvbmFsIiwiX3N1Y2Nlc3MiLCJfY2F0Y2giLCJjYXRjaFZhbHVlIiwiX3BpcGUiLCJpbl8iLCJvdXQiLCJpbiIsIl9yZWFkb25seSIsIl90ZW1wbGF0ZUxpdGVyYWwiLCJwYXJ0cyIsIl9sYXp5IiwiZ2V0dGVyIiwiX3Byb21pc2UiLCJfY3VzdG9tIiwibm9ybSIsIl9yZWZpbmUiLCJfc3RyaW5nYm9vbCIsIkNsYXNzZXMiLCJ0cnV0aHlBcnJheSIsInRydXRoeSIsImZhbHN5QXJyYXkiLCJmYWxzeSIsImNhc2UiLCJ0cnV0aHlTZXQiLCJTZXQiLCJmYWxzeVNldCIsIl9QaXBlIiwiUGlwZSIsIiRab2RQaXBlIiwiX0Jvb2xlYW4iLCJCb29sZWFuIiwiJFpvZEJvb2xlYW4iLCJfU3RyaW5nIiwiU3RyaW5nIiwiJFpvZFN0cmluZyIsIl9UcmFuc2Zvcm0iLCJUcmFuc2Zvcm0iLCIkWm9kVHJhbnNmb3JtIiwicGF5bG9hZCIsImRhdGEiLCJoYXMiLCJpc3N1ZXMiLCJwdXNoIiwiY29kZSIsImV4cGVjdGVkIiwiaW5zdCIsImVycm9yIiwiaW5uZXJQaXBlIiwib3V0ZXJQaXBlIiwiX3N0cmluZ0Zvcm1hdCIsImZuT3JSZWdleCIsImRlZiIsInZhbCIsInRlc3QiLCJSZWdFeHAiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodCheck: () => (/* binding */ $ZodCheck),\n/* harmony export */ $ZodCheckBigIntFormat: () => (/* binding */ $ZodCheckBigIntFormat),\n/* harmony export */ $ZodCheckEndsWith: () => (/* binding */ $ZodCheckEndsWith),\n/* harmony export */ $ZodCheckGreaterThan: () => (/* binding */ $ZodCheckGreaterThan),\n/* harmony export */ $ZodCheckIncludes: () => (/* binding */ $ZodCheckIncludes),\n/* harmony export */ $ZodCheckLengthEquals: () => (/* binding */ $ZodCheckLengthEquals),\n/* harmony export */ $ZodCheckLessThan: () => (/* binding */ $ZodCheckLessThan),\n/* harmony export */ $ZodCheckLowerCase: () => (/* binding */ $ZodCheckLowerCase),\n/* harmony export */ $ZodCheckMaxLength: () => (/* binding */ $ZodCheckMaxLength),\n/* harmony export */ $ZodCheckMaxSize: () => (/* binding */ $ZodCheckMaxSize),\n/* harmony export */ $ZodCheckMimeType: () => (/* binding */ $ZodCheckMimeType),\n/* harmony export */ $ZodCheckMinLength: () => (/* binding */ $ZodCheckMinLength),\n/* harmony export */ $ZodCheckMinSize: () => (/* binding */ $ZodCheckMinSize),\n/* harmony export */ $ZodCheckMultipleOf: () => (/* binding */ $ZodCheckMultipleOf),\n/* harmony export */ $ZodCheckNumberFormat: () => (/* binding */ $ZodCheckNumberFormat),\n/* harmony export */ $ZodCheckOverwrite: () => (/* binding */ $ZodCheckOverwrite),\n/* harmony export */ $ZodCheckProperty: () => (/* binding */ $ZodCheckProperty),\n/* harmony export */ $ZodCheckRegex: () => (/* binding */ $ZodCheckRegex),\n/* harmony export */ $ZodCheckSizeEquals: () => (/* binding */ $ZodCheckSizeEquals),\n/* harmony export */ $ZodCheckStartsWith: () => (/* binding */ $ZodCheckStartsWith),\n/* harmony export */ $ZodCheckStringFormat: () => (/* binding */ $ZodCheckStringFormat),\n/* harmony export */ $ZodCheckUpperCase: () => (/* binding */ $ZodCheckUpperCase)\n/* harmony export */ });\n/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _regexes_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./regexes.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js\");\n// import { $ZodType } from \"./schemas.js\";\n\n\n\nconst $ZodCheck = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheck\", (inst, def)=>{\n var _a;\n inst._zod ?? (inst._zod = {});\n inst._zod.def = def;\n (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n number: \"number\",\n bigint: \"bigint\",\n object: \"date\"\n};\nconst $ZodCheckLessThan = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckLessThan\", (inst, def)=>{\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n if (def.value < curr) {\n if (def.inclusive) bag.maximum = def.value;\n else bag.exclusiveMaximum = def.value;\n }\n });\n inst._zod.check = (payload)=>{\n if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckGreaterThan = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckGreaterThan\", (inst, def)=>{\n $ZodCheck.init(inst, def);\n const origin = numericOriginMap[typeof def.value];\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n if (def.value > curr) {\n if (def.inclusive) bag.minimum = def.value;\n else bag.exclusiveMinimum = def.value;\n }\n });\n inst._zod.check = (payload)=>{\n if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n return;\n }\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.value,\n input: payload.value,\n inclusive: def.inclusive,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckMultipleOf = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMultipleOf\", (inst, def)=>{\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst)=>{\n var _a;\n (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n });\n inst._zod.check = (payload)=>{\n if (typeof payload.value !== typeof def.value) throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n const isMultiple = typeof payload.value === \"bigint\" ? payload.value % def.value === BigInt(0) : _util_js__WEBPACK_IMPORTED_MODULE_1__.floatSafeRemainder(payload.value, def.value) === 0;\n if (isMultiple) return;\n payload.issues.push({\n origin: typeof payload.value,\n code: \"not_multiple_of\",\n divisor: def.value,\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckNumberFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckNumberFormat\", (inst, def)=>{\n $ZodCheck.init(inst, def); // no format checks\n def.format = def.format || \"float64\";\n const isInt = def.format?.includes(\"int\");\n const origin = isInt ? \"int\" : \"number\";\n const [minimum, maximum] = _util_js__WEBPACK_IMPORTED_MODULE_1__.NUMBER_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n if (isInt) bag.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_2__.integer;\n });\n inst._zod.check = (payload)=>{\n const input = payload.value;\n if (isInt) {\n if (!Number.isInteger(input)) {\n // invalid_format issue\n // payload.issues.push({\n // expected: def.format,\n // format: def.format,\n // code: \"invalid_format\",\n // input,\n // inst,\n // });\n // invalid_type issue\n payload.issues.push({\n expected: origin,\n format: def.format,\n code: \"invalid_type\",\n input,\n inst\n });\n return;\n // not_multiple_of issue\n // payload.issues.push({\n // code: \"not_multiple_of\",\n // origin: \"number\",\n // input,\n // inst,\n // divisor: 1,\n // });\n }\n if (!Number.isSafeInteger(input)) {\n if (input > 0) {\n // too_big\n payload.issues.push({\n input,\n code: \"too_big\",\n maximum: Number.MAX_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort\n });\n } else {\n // too_small\n payload.issues.push({\n input,\n code: \"too_small\",\n minimum: Number.MIN_SAFE_INTEGER,\n note: \"Integers must be within the safe integer range.\",\n inst,\n origin,\n continue: !def.abort\n });\n }\n return;\n }\n }\n if (input < minimum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_small\",\n minimum,\n inclusive: true,\n inst,\n continue: !def.abort\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"number\",\n input,\n code: \"too_big\",\n maximum,\n inst\n });\n }\n };\n});\nconst $ZodCheckBigIntFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckBigIntFormat\", (inst, def)=>{\n $ZodCheck.init(inst, def); // no format checks\n const [minimum, maximum] = _util_js__WEBPACK_IMPORTED_MODULE_1__.BIGINT_FORMAT_RANGES[def.format];\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.format = def.format;\n bag.minimum = minimum;\n bag.maximum = maximum;\n });\n inst._zod.check = (payload)=>{\n const input = payload.value;\n if (input < minimum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_small\",\n minimum: minimum,\n inclusive: true,\n inst,\n continue: !def.abort\n });\n }\n if (input > maximum) {\n payload.issues.push({\n origin: \"bigint\",\n input,\n code: \"too_big\",\n maximum,\n inst\n });\n }\n };\n});\nconst $ZodCheckMaxSize = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMaxSize\", (inst, def)=>{\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload)=>{\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_1__.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst)=>{\n const curr = inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY;\n if (def.maximum < curr) inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload)=>{\n const input = payload.value;\n const size = input.size;\n if (size <= def.maximum) return;\n payload.issues.push({\n origin: _util_js__WEBPACK_IMPORTED_MODULE_1__.getSizableOrigin(input),\n code: \"too_big\",\n maximum: def.maximum,\n input,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckMinSize = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMinSize\", (inst, def)=>{\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload)=>{\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_1__.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst)=>{\n const curr = inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY;\n if (def.minimum > curr) inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload)=>{\n const input = payload.value;\n const size = input.size;\n if (size >= def.minimum) return;\n payload.issues.push({\n origin: _util_js__WEBPACK_IMPORTED_MODULE_1__.getSizableOrigin(input),\n code: \"too_small\",\n minimum: def.minimum,\n input,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckSizeEquals = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckSizeEquals\", (inst, def)=>{\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload)=>{\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_1__.nullish(val) && val.size !== undefined;\n });\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.minimum = def.size;\n bag.maximum = def.size;\n bag.size = def.size;\n });\n inst._zod.check = (payload)=>{\n const input = payload.value;\n const size = input.size;\n if (size === def.size) return;\n const tooBig = size > def.size;\n payload.issues.push({\n origin: _util_js__WEBPACK_IMPORTED_MODULE_1__.getSizableOrigin(input),\n ...tooBig ? {\n code: \"too_big\",\n maximum: def.size\n } : {\n code: \"too_small\",\n minimum: def.size\n },\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckMaxLength = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMaxLength\", (inst, def)=>{\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload)=>{\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_1__.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst)=>{\n const curr = inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY;\n if (def.maximum < curr) inst._zod.bag.maximum = def.maximum;\n });\n inst._zod.check = (payload)=>{\n const input = payload.value;\n const length = input.length;\n if (length <= def.maximum) return;\n const origin = _util_js__WEBPACK_IMPORTED_MODULE_1__.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_big\",\n maximum: def.maximum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckMinLength = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMinLength\", (inst, def)=>{\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload)=>{\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_1__.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst)=>{\n const curr = inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY;\n if (def.minimum > curr) inst._zod.bag.minimum = def.minimum;\n });\n inst._zod.check = (payload)=>{\n const input = payload.value;\n const length = input.length;\n if (length >= def.minimum) return;\n const origin = _util_js__WEBPACK_IMPORTED_MODULE_1__.getLengthableOrigin(input);\n payload.issues.push({\n origin,\n code: \"too_small\",\n minimum: def.minimum,\n inclusive: true,\n input,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckLengthEquals = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckLengthEquals\", (inst, def)=>{\n var _a;\n $ZodCheck.init(inst, def);\n (_a = inst._zod.def).when ?? (_a.when = (payload)=>{\n const val = payload.value;\n return !_util_js__WEBPACK_IMPORTED_MODULE_1__.nullish(val) && val.length !== undefined;\n });\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.minimum = def.length;\n bag.maximum = def.length;\n bag.length = def.length;\n });\n inst._zod.check = (payload)=>{\n const input = payload.value;\n const length = input.length;\n if (length === def.length) return;\n const origin = _util_js__WEBPACK_IMPORTED_MODULE_1__.getLengthableOrigin(input);\n const tooBig = length > def.length;\n payload.issues.push({\n origin,\n ...tooBig ? {\n code: \"too_big\",\n maximum: def.length\n } : {\n code: \"too_small\",\n minimum: def.length\n },\n inclusive: true,\n exact: true,\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckStringFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckStringFormat\", (inst, def)=>{\n var _a, _b;\n $ZodCheck.init(inst, def);\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.format = def.format;\n if (def.pattern) {\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(def.pattern);\n }\n });\n if (def.pattern) (_a = inst._zod).check ?? (_a.check = (payload)=>{\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value)) return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n ...def.pattern ? {\n pattern: def.pattern.toString()\n } : {},\n inst,\n continue: !def.abort\n });\n });\n else (_b = inst._zod).check ?? (_b.check = ()=>{});\n});\nconst $ZodCheckRegex = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckRegex\", (inst, def)=>{\n $ZodCheckStringFormat.init(inst, def);\n inst._zod.check = (payload)=>{\n def.pattern.lastIndex = 0;\n if (def.pattern.test(payload.value)) return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"regex\",\n input: payload.value,\n pattern: def.pattern.toString(),\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckLowerCase = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckLowerCase\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_2__.lowercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nconst $ZodCheckUpperCase = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckUpperCase\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_2__.uppercase);\n $ZodCheckStringFormat.init(inst, def);\n});\nconst $ZodCheckIncludes = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckIncludes\", (inst, def)=>{\n $ZodCheck.init(inst, def);\n const escapedRegex = _util_js__WEBPACK_IMPORTED_MODULE_1__.escapeRegex(def.includes);\n const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n def.pattern = pattern;\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload)=>{\n if (payload.value.includes(def.includes, def.position)) return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"includes\",\n includes: def.includes,\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckStartsWith = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckStartsWith\", (inst, def)=>{\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`^${_util_js__WEBPACK_IMPORTED_MODULE_1__.escapeRegex(def.prefix)}.*`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload)=>{\n if (payload.value.startsWith(def.prefix)) return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"starts_with\",\n prefix: def.prefix,\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCheckEndsWith = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckEndsWith\", (inst, def)=>{\n $ZodCheck.init(inst, def);\n const pattern = new RegExp(`.*${_util_js__WEBPACK_IMPORTED_MODULE_1__.escapeRegex(def.suffix)}$`);\n def.pattern ?? (def.pattern = pattern);\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.patterns ?? (bag.patterns = new Set());\n bag.patterns.add(pattern);\n });\n inst._zod.check = (payload)=>{\n if (payload.value.endsWith(def.suffix)) return;\n payload.issues.push({\n origin: \"string\",\n code: \"invalid_format\",\n format: \"ends_with\",\n suffix: def.suffix,\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\n///////////////////////////////////\n///// $ZodCheckProperty /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_1__.prefixIssues(property, result.issues));\n }\n}\nconst $ZodCheckProperty = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckProperty\", (inst, def)=>{\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload)=>{\n const result = def.schema._zod.run({\n value: payload.value[def.property],\n issues: []\n }, {});\n if (result instanceof Promise) {\n return result.then((result)=>handleCheckPropertyResult(result, payload, def.property));\n }\n handleCheckPropertyResult(result, payload, def.property);\n return;\n };\n});\nconst $ZodCheckMimeType = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckMimeType\", (inst, def)=>{\n $ZodCheck.init(inst, def);\n const mimeSet = new Set(def.mime);\n inst._zod.onattach.push((inst)=>{\n inst._zod.bag.mime = def.mime;\n });\n inst._zod.check = (payload)=>{\n if (mimeSet.has(payload.value.type)) return;\n payload.issues.push({\n code: \"invalid_value\",\n values: def.mime,\n input: payload.value.type,\n inst\n });\n };\n});\nconst $ZodCheckOverwrite = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCheckOverwrite\", (inst, def)=>{\n $ZodCheck.init(inst, def);\n inst._zod.check = (payload)=>{\n payload.value = def.tx(payload.value);\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2NoZWNrcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQTJDO0FBQ1Q7QUFDTTtBQUNOO0FBQzNCLE1BQU1HLFlBQVksV0FBVyxHQUFHSCxrREFBaUIsQ0FBQyxhQUFhLENBQUNLLE1BQU1DO0lBQ3pFLElBQUlDO0lBQ0pGLEtBQUtHLElBQUksSUFBS0gsQ0FBQUEsS0FBS0csSUFBSSxHQUFHLENBQUM7SUFDM0JILEtBQUtHLElBQUksQ0FBQ0YsR0FBRyxHQUFHQTtJQUNmQyxDQUFBQSxLQUFLRixLQUFLRyxJQUFJLEVBQUVDLFFBQVEsSUFBS0YsQ0FBQUEsR0FBR0UsUUFBUSxHQUFHLEVBQUU7QUFDbEQsR0FBRztBQUNILE1BQU1DLG1CQUFtQjtJQUNyQkMsUUFBUTtJQUNSQyxRQUFRO0lBQ1JDLFFBQVE7QUFDWjtBQUNPLE1BQU1DLG9CQUFvQixXQUFXLEdBQUdkLGtEQUFpQixDQUFDLHFCQUFxQixDQUFDSyxNQUFNQztJQUN6RkgsVUFBVVksSUFBSSxDQUFDVixNQUFNQztJQUNyQixNQUFNVSxTQUFTTixnQkFBZ0IsQ0FBQyxPQUFPSixJQUFJVyxLQUFLLENBQUM7SUFDakRaLEtBQUtHLElBQUksQ0FBQ0MsUUFBUSxDQUFDUyxJQUFJLENBQUMsQ0FBQ2I7UUFDckIsTUFBTWMsTUFBTWQsS0FBS0csSUFBSSxDQUFDVyxHQUFHO1FBQ3pCLE1BQU1DLE9BQU8sQ0FBQ2QsSUFBSWUsU0FBUyxHQUFHRixJQUFJRyxPQUFPLEdBQUdILElBQUlJLGdCQUFnQixLQUFLQyxPQUFPQyxpQkFBaUI7UUFDN0YsSUFBSW5CLElBQUlXLEtBQUssR0FBR0csTUFBTTtZQUNsQixJQUFJZCxJQUFJZSxTQUFTLEVBQ2JGLElBQUlHLE9BQU8sR0FBR2hCLElBQUlXLEtBQUs7aUJBRXZCRSxJQUFJSSxnQkFBZ0IsR0FBR2pC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SUFDSjtBQUNKLEdBQUc7QUFDSSxNQUFNNkcscUJBQXFCLFdBQVcsR0FBR2xILGtEQUFpQixDQUFDLHNCQUFzQixDQUFDSyxNQUFNQztJQUMzRkgsVUFBVVksSUFBSSxDQUFDVixNQUFNQztJQUNyQkQsS0FBS0csSUFBSSxDQUFDa0IsS0FBSyxHQUFHLENBQUNDO1FBQ2ZBLFFBQVFWLEtBQUssR0FBR1gsSUFBSTZHLEVBQUUsQ0FBQ3hGLFFBQVFWLEtBQUs7SUFDeEM7QUFDSixHQUFHIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9jaGVja3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgJFpvZFR5cGUgfSBmcm9tIFwiLi9zY2hlbWFzLmpzXCI7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuL2NvcmUuanNcIjtcbmltcG9ydCAqIGFzIHJlZ2V4ZXMgZnJvbSBcIi4vcmVnZXhlcy5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi91dGlsLmpzXCI7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgIGluc3QuX3pvZCA/PyAoaW5zdC5fem9kID0ge30pO1xuICAgIGluc3QuX3pvZC5kZWYgPSBkZWY7XG4gICAgKF9hID0gaW5zdC5fem9kKS5vbmF0dGFjaCA/PyAoX2Eub25hdHRhY2ggPSBbXSk7XG59KTtcbmNvbnN0IG51bWVyaWNPcmlnaW5NYXAgPSB7XG4gICAgbnVtYmVyOiBcIm51bWJlclwiLFxuICAgIGJpZ2ludDogXCJiaWdpbnRcIixcbiAgICBvYmplY3Q6IFwiZGF0ZVwiLFxufTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tMZXNzVGhhbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tMZXNzVGhhblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCBvcmlnaW4gPSBudW1lcmljT3JpZ2luTWFwW3R5cGVvZiBkZWYudmFsdWVdO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGNvbnN0IGN1cnIgPSAoZGVmLmluY2x1c2l2ZSA/IGJhZy5tYXhpbXVtIDogYmFnLmV4Y2x1c2l2ZU1heGltdW0pID8/IE51bWJlci5QT1NJVElWRV9JTkZJTklUWTtcbiAgICAgICAgaWYgKGRlZi52YWx1ZSA8IGN1cnIpIHtcbiAgICAgICAgICAgIGlmIChkZWYuaW5jbHVzaXZlKVxuICAgICAgICAgICAgICAgIGJhZy5tYXhpbXVtID0gZGVmLnZhbHVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJhZy5leGNsdXNpdmVNYXhpbXVtID0gZGVmLnZhbHVlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKGRlZi5pbmNsdXNpdmUgPyBwYXlsb2FkLnZhbHVlIDw9IGRlZi52YWx1ZSA6IHBheWxvYWQudmFsdWUgPCBkZWYudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIGNvZGU6IFwidG9vX2JpZ1wiLFxuICAgICAgICAgICAgbWF4aW11bTogZGVmLnZhbHVlLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGRlZi5pbmNsdXNpdmUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tHcmVhdGVyVGhhbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tHcmVhdGVyVGhhblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCBvcmlnaW4gPSBudW1lcmljT3JpZ2luTWFwW3R5cGVvZiBkZWYudmFsdWVdO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGNvbnN0IGN1cnIgPSAoZGVmLmluY2x1c2l2ZSA/IGJhZy5taW5pbXVtIDogYmFnLmV4Y2x1c2l2ZU1pbmltdW0pID8/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWTtcbiAgICAgICAgaWYgKGRlZi52YWx1ZSA+IGN1cnIpIHtcbiAgICAgICAgICAgIGlmIChkZWYuaW5jbHVzaXZlKVxuICAgICAgICAgICAgICAgIGJhZy5taW5pbXVtID0gZGVmLnZhbHVlO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJhZy5leGNsdXNpdmVNaW5pbXVtID0gZGVmLnZhbHVlO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKGRlZi5pbmNsdXNpdmUgPyBwYXlsb2FkLnZhbHVlID49IGRlZi52YWx1ZSA6IHBheWxvYWQudmFsdWUgPiBkZWYudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIGNvZGU6IFwidG9vX3NtYWxsXCIsXG4gICAgICAgICAgICBtaW5pbXVtOiBkZWYudmFsdWUsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZGVmLmluY2x1c2l2ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja011bHRpcGxlT2YgPSBcbi8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tNdWx0aXBsZU9mXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gaW5zdC5fem9kLmJhZykubXVsdGlwbGVPZiA/PyAoX2EubXVsdGlwbGVPZiA9IGRlZi52YWx1ZSk7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBwYXlsb2FkLnZhbHVlICE9PSB0eXBlb2YgZGVmLnZhbHVlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IG1peCBudW1iZXIgYW5kIGJpZ2ludCBpbiBtdWx0aXBsZV9vZiBjaGVjay5cIik7XG4gICAgICAgIGNvbnN0IGlzTXVsdGlwbGUgPSB0eXBlb2YgcGF5bG9hZC52YWx1ZSA9PT0gXCJiaWdpbnRcIlxuICAgICAgICAgICAgPyBwYXlsb2FkLnZhbHVlICUgZGVmLnZhbHVlID09PSBCaWdJbnQoMClcbiAgICAgICAgICAgIDogdXRpbC5mbG9hdFNhZmVSZW1haW5kZXIocGF5bG9hZC52YWx1ZSwgZGVmLnZhbHVlKSA9PT0gMDtcbiAgICAgICAgaWYgKGlzTXVsdGlwbGUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiB0eXBlb2YgcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGNvZGU6IFwibm90X211bHRpcGxlX29mXCIsXG4gICAgICAgICAgICBkaXZpc29yOiBkZWYudmFsdWUsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja051bWJlckZvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tOdW1iZXJGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7IC8vIG5vIGZvcm1hdCBjaGVja3NcbiAgICBkZWYuZm9ybWF0ID0gZGVmLmZvcm1hdCB8fCBcImZsb2F0NjRcIjtcbiAgICBjb25zdCBpc0ludCA9IGRlZi5mb3JtYXQ/LmluY2x1ZGVzKFwiaW50XCIpO1xuICAgIGNvbnN0IG9yaWdpbiA9IGlzSW50ID8gXCJpbnRcIiA6IFwibnVtYmVyXCI7XG4gICAgY29uc3QgW21pbmltdW0sIG1heGltdW1dID0gdXRpbC5OVU1CRVJfRk9STUFUX1JBTkdFU1tkZWYuZm9ybWF0XTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcuZm9ybWF0ID0gZGVmLmZvcm1hdDtcbiAgICAgICAgYmFnLm1pbmltdW0gPSBtaW5pbXVtO1xuICAgICAgICBiYWcubWF4aW11bSA9IG1heGltdW07XG4gICAgICAgIGlmIChpc0ludClcbiAgICAgICAgICAgIGJhZy5wYXR0ZXJuID0gcmVnZXhlcy5pbnRlZ2VyO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKGlzSW50KSB7XG4gICAgICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgLy8gaW52YWxpZF9mb3JtYXQgaXNzdWVcbiAgICAgICAgICAgICAgICAvLyBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAvLyAgIGV4cGVjdGVkOiBkZWYuZm9ybWF0LFxuICAgICAgICAgICAgICAgIC8vICAgZm9ybWF0OiBkZWYuZm9ybWF0LFxuICAgICAgICAgICAgICAgIC8vICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgICAgIC8vICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgLy8gICBpbnN0LFxuICAgICAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgICAgICAgIC8vIGludmFsaWRfdHlwZSBpc3N1ZVxuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogb3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IGRlZi5mb3JtYXQsXG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAvLyBub3RfbXVsdGlwbGVfb2YgaXNzdWVcbiAgICAgICAgICAgICAgICAvLyBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAvLyAgIGNvZGU6IFwibm90X211bHRpcGxlX29mXCIsXG4gICAgICAgICAgICAgICAgLy8gICBvcmlnaW46IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgLy8gICBpbnB1dCxcbiAgICAgICAgICAgICAgICAvLyAgIGluc3QsXG4gICAgICAgICAgICAgICAgLy8gICBkaXZpc29yOiAxLFxuICAgICAgICAgICAgICAgIC8vIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRvb19iaWdcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFwidG9vX2JpZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9vX3NtYWxsXG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBcInRvb19zbWFsbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkludGVnZXJzIG11c3QgYmUgd2l0aGluIHRoZSBzYWZlIGludGVnZXIgcmFuZ2UuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0IDwgbWluaW11bSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGNvZGU6IFwidG9vX3NtYWxsXCIsXG4gICAgICAgICAgICAgICAgbWluaW11bSxcbiAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnB1dCA+IG1heGltdW0pIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIG9yaWdpbjogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBjb2RlOiBcInRvb19iaWdcIixcbiAgICAgICAgICAgICAgICBtYXhpbXVtLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tCaWdJbnRGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrQmlnSW50Rm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpOyAvLyBubyBmb3JtYXQgY2hlY2tzXG4gICAgY29uc3QgW21pbmltdW0sIG1heGltdW1dID0gdXRpbC5CSUdJTlRfRk9STUFUX1JBTkdFU1tkZWYuZm9ybWF0XTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcuZm9ybWF0ID0gZGVmLmZvcm1hdDtcbiAgICAgICAgYmFnLm1pbmltdW0gPSBtaW5pbXVtO1xuICAgICAgICBiYWcubWF4aW11bSA9IG1heGltdW07XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoaW5wdXQgPCBtaW5pbXVtKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwiYmlnaW50XCIsXG4gICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgY29kZTogXCJ0b29fc21hbGxcIixcbiAgICAgICAgICAgICAgICBtaW5pbXVtOiBtaW5pbXVtLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlucHV0ID4gbWF4aW11bSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcImJpZ2ludFwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGNvZGU6IFwidG9vX2JpZ1wiLFxuICAgICAgICAgICAgICAgIG1heGltdW0sXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja01heFNpemUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTWF4U2l6ZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgKF9hID0gaW5zdC5fem9kLmRlZikud2hlbiA/PyAoX2Eud2hlbiA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIHJldHVybiAhdXRpbC5udWxsaXNoKHZhbCkgJiYgdmFsLnNpemUgIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyID0gKGluc3QuX3pvZC5iYWcubWF4aW11bSA/PyBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBpZiAoZGVmLm1heGltdW0gPCBjdXJyKVxuICAgICAgICAgICAgaW5zdC5fem9kLmJhZy5tYXhpbXVtID0gZGVmLm1heGltdW07XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBzaXplID0gaW5wdXQuc2l6ZTtcbiAgICAgICAgaWYgKHNpemUgPD0gZGVmLm1heGltdW0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luOiB1dGlsLmdldFNpemFibGVPcmlnaW4oaW5wdXQpLFxuICAgICAgICAgICAgY29kZTogXCJ0b29fYmlnXCIsXG4gICAgICAgICAgICBtYXhpbXVtOiBkZWYubWF4aW11bSxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTWluU2l6ZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tNaW5TaXplXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICAoX2EgPSBpbnN0Ll96b2QuZGVmKS53aGVuID8/IChfYS53aGVuID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICF1dGlsLm51bGxpc2godmFsKSAmJiB2YWwuc2l6ZSAhPT0gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGN1cnIgPSAoaW5zdC5fem9kLmJhZy5taW5pbXVtID8/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGlmIChkZWYubWluaW11bSA+IGN1cnIpXG4gICAgICAgICAgICBpbnN0Ll96b2QuYmFnLm1pbmltdW0gPSBkZWYubWluaW11bTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGNvbnN0IHNpemUgPSBpbnB1dC5zaXplO1xuICAgICAgICBpZiAoc2l6ZSA+PSBkZWYubWluaW11bSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW46IHV0aWwuZ2V0U2l6YWJsZU9yaWdpbihpbnB1dCksXG4gICAgICAgICAgICBjb2RlOiBcInRvb19zbWFsbFwiLFxuICAgICAgICAgICAgbWluaW11bTogZGVmLm1pbmltdW0sXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja1NpemVFcXVhbHMgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrU2l6ZUVxdWFsc1wiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hO1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgKF9hID0gaW5zdC5fem9kLmRlZikud2hlbiA/PyAoX2Eud2hlbiA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIHJldHVybiAhdXRpbC5udWxsaXNoKHZhbCkgJiYgdmFsLnNpemUgIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBiYWcgPSBpbnN0Ll96b2QuYmFnO1xuICAgICAgICBiYWcubWluaW11bSA9IGRlZi5zaXplO1xuICAgICAgICBiYWcubWF4aW11bSA9IGRlZi5zaXplO1xuICAgICAgICBiYWcuc2l6ZSA9IGRlZi5zaXplO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IGlucHV0LnNpemU7XG4gICAgICAgIGlmIChzaXplID09PSBkZWYuc2l6ZSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdG9vQmlnID0gc2l6ZSA+IGRlZi5zaXplO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogdXRpbC5nZXRTaXphYmxlT3JpZ2luKGlucHV0KSxcbiAgICAgICAgICAgIC4uLih0b29CaWcgPyB7IGNvZGU6IFwidG9vX2JpZ1wiLCBtYXhpbXVtOiBkZWYuc2l6ZSB9IDogeyBjb2RlOiBcInRvb19zbWFsbFwiLCBtaW5pbXVtOiBkZWYuc2l6ZSB9KSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIGV4YWN0OiB0cnVlLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tNYXhMZW5ndGggPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTWF4TGVuZ3RoXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICAoX2EgPSBpbnN0Ll96b2QuZGVmKS53aGVuID8/IChfYS53aGVuID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICF1dGlsLm51bGxpc2godmFsKSAmJiB2YWwubGVuZ3RoICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgY3VyciA9IChpbnN0Ll96b2QuYmFnLm1heGltdW0gPz8gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICAgICAgaWYgKGRlZi5tYXhpbXVtIDwgY3VycilcbiAgICAgICAgICAgIGluc3QuX3pvZC5iYWcubWF4aW11bSA9IGRlZi5tYXhpbXVtO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoIDw9IGRlZi5tYXhpbXVtKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBvcmlnaW4gPSB1dGlsLmdldExlbmd0aGFibGVPcmlnaW4oaW5wdXQpO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIGNvZGU6IFwidG9vX2JpZ1wiLFxuICAgICAgICAgICAgbWF4aW11bTogZGVmLm1heGltdW0sXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja01pbkxlbmd0aCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tNaW5MZW5ndGhcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIChfYSA9IGluc3QuX3pvZC5kZWYpLndoZW4gPz8gKF9hLndoZW4gPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICByZXR1cm4gIXV0aWwubnVsbGlzaCh2YWwpICYmIHZhbC5sZW5ndGggIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2Qub25hdHRhY2gucHVzaCgoaW5zdCkgPT4ge1xuICAgICAgICBjb25zdCBjdXJyID0gKGluc3QuX3pvZC5iYWcubWluaW11bSA/PyBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBpZiAoZGVmLm1pbmltdW0gPiBjdXJyKVxuICAgICAgICAgICAgaW5zdC5fem9kLmJhZy5taW5pbXVtID0gZGVmLm1pbmltdW07XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBsZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPj0gZGVmLm1pbmltdW0pXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG9yaWdpbiA9IHV0aWwuZ2V0TGVuZ3RoYWJsZU9yaWdpbihpbnB1dCk7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICAgY29kZTogXCJ0b29fc21hbGxcIixcbiAgICAgICAgICAgIG1pbmltdW06IGRlZi5taW5pbXVtLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tMZW5ndGhFcXVhbHMgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrTGVuZ3RoRXF1YWxzXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICB2YXIgX2E7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICAoX2EgPSBpbnN0Ll96b2QuZGVmKS53aGVuID8/IChfYS53aGVuID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICF1dGlsLm51bGxpc2godmFsKSAmJiB2YWwubGVuZ3RoICE9PSB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLm1pbmltdW0gPSBkZWYubGVuZ3RoO1xuICAgICAgICBiYWcubWF4aW11bSA9IGRlZi5sZW5ndGg7XG4gICAgICAgIGJhZy5sZW5ndGggPSBkZWYubGVuZ3RoO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuICAgICAgICBpZiAobGVuZ3RoID09PSBkZWYubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBvcmlnaW4gPSB1dGlsLmdldExlbmd0aGFibGVPcmlnaW4oaW5wdXQpO1xuICAgICAgICBjb25zdCB0b29CaWcgPSBsZW5ndGggPiBkZWYubGVuZ3RoO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbixcbiAgICAgICAgICAgIC4uLih0b29CaWcgPyB7IGNvZGU6IFwidG9vX2JpZ1wiLCBtYXhpbXVtOiBkZWYubGVuZ3RoIH0gOiB7IGNvZGU6IFwidG9vX3NtYWxsXCIsIG1pbmltdW06IGRlZi5sZW5ndGggfSksXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICBleGFjdDogdHJ1ZSxcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrU3RyaW5nRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja1N0cmluZ0Zvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5mb3JtYXQgPSBkZWYuZm9ybWF0O1xuICAgICAgICBpZiAoZGVmLnBhdHRlcm4pIHtcbiAgICAgICAgICAgIGJhZy5wYXR0ZXJucyA/PyAoYmFnLnBhdHRlcm5zID0gbmV3IFNldCgpKTtcbiAgICAgICAgICAgIGJhZy5wYXR0ZXJucy5hZGQoZGVmLnBhdHRlcm4pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGRlZi5wYXR0ZXJuKVxuICAgICAgICAoX2EgPSBpbnN0Ll96b2QpLmNoZWNrID8/IChfYS5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgICAgICBkZWYucGF0dGVybi5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgaWYgKGRlZi5wYXR0ZXJuLnRlc3QocGF5bG9hZC52YWx1ZSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IGRlZi5mb3JtYXQsXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgLi4uKGRlZi5wYXR0ZXJuID8geyBwYXR0ZXJuOiBkZWYucGF0dGVybi50b1N0cmluZygpIH0gOiB7fSksXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICBlbHNlXG4gICAgICAgIChfYiA9IGluc3QuX3pvZCkuY2hlY2sgPz8gKF9iLmNoZWNrID0gKCkgPT4geyB9KTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja1JlZ2V4ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja1JlZ2V4XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2tTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRlZi5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmIChkZWYucGF0dGVybi50ZXN0KHBheWxvYWQudmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJyZWdleFwiLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBwYXR0ZXJuOiBkZWYucGF0dGVybi50b1N0cmluZygpLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENoZWNrTG93ZXJDYXNlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0xvd2VyQ2FzZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5sb3dlcmNhc2UpO1xuICAgICRab2RDaGVja1N0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tVcHBlckNhc2UgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrVXBwZXJDYXNlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLnVwcGVyY2FzZSk7XG4gICAgJFpvZENoZWNrU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja0luY2x1ZGVzID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDaGVja0luY2x1ZGVzXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IGVzY2FwZWRSZWdleCA9IHV0aWwuZXNjYXBlUmVnZXgoZGVmLmluY2x1ZGVzKTtcbiAgICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cCh0eXBlb2YgZGVmLnBvc2l0aW9uID09PSBcIm51bWJlclwiID8gYF4ueyR7ZGVmLnBvc2l0aW9ufX0ke2VzY2FwZWRSZWdleH1gIDogZXNjYXBlZFJlZ2V4KTtcbiAgICBkZWYucGF0dGVybiA9IHBhdHRlcm47XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLnBhdHRlcm5zID8/IChiYWcucGF0dGVybnMgPSBuZXcgU2V0KCkpO1xuICAgICAgICBiYWcucGF0dGVybnMuYWRkKHBhdHRlcm4pO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlLmluY2x1ZGVzKGRlZi5pbmNsdWRlcywgZGVmLnBvc2l0aW9uKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW46IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFwiaW5jbHVkZXNcIixcbiAgICAgICAgICAgIGluY2x1ZGVzOiBkZWYuaW5jbHVkZXMsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDaGVja1N0YXJ0c1dpdGggPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrU3RhcnRzV2l0aFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChgXiR7dXRpbC5lc2NhcGVSZWdleChkZWYucHJlZml4KX0uKmApO1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHBhdHRlcm4pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5wYXR0ZXJucyA/PyAoYmFnLnBhdHRlcm5zID0gbmV3IFNldCgpKTtcbiAgICAgICAgYmFnLnBhdHRlcm5zLmFkZChwYXR0ZXJuKTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC52YWx1ZS5zdGFydHNXaXRoKGRlZi5wcmVmaXgpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIG9yaWdpbjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJzdGFydHNfd2l0aFwiLFxuICAgICAgICAgICAgcHJlZml4OiBkZWYucHJlZml4LFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tFbmRzV2l0aCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tFbmRzV2l0aFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChgLioke3V0aWwuZXNjYXBlUmVnZXgoZGVmLnN1ZmZpeCl9JGApO1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHBhdHRlcm4pO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5wYXR0ZXJucyA/PyAoYmFnLnBhdHRlcm5zID0gbmV3IFNldCgpKTtcbiAgICAgICAgYmFnLnBhdHRlcm5zLmFkZChwYXR0ZXJuKTtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC52YWx1ZS5lbmRzV2l0aChkZWYuc3VmZml4KSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBvcmlnaW46IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFwiZW5kc193aXRoXCIsXG4gICAgICAgICAgICBzdWZmaXg6IGRlZi5zdWZmaXgsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vICAgICRab2RDaGVja1Byb3BlcnR5ICAgIC8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZnVuY3Rpb24gaGFuZGxlQ2hlY2tQcm9wZXJ0eVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIHByb3BlcnR5KSB7XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMocHJvcGVydHksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgJFpvZENoZWNrUHJvcGVydHkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrUHJvcGVydHlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RDaGVjay5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLnNjaGVtYS5fem9kLnJ1bih7XG4gICAgICAgICAgICB2YWx1ZTogcGF5bG9hZC52YWx1ZVtkZWYucHJvcGVydHldLFxuICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgfSwge30pO1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyZXN1bHQpID0+IGhhbmRsZUNoZWNrUHJvcGVydHlSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBkZWYucHJvcGVydHkpKTtcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVDaGVja1Byb3BlcnR5UmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgZGVmLnByb3BlcnR5KTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tNaW1lVHlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2hlY2tNaW1lVHlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZENoZWNrLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCBtaW1lU2V0ID0gbmV3IFNldChkZWYubWltZSk7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgaW5zdC5fem9kLmJhZy5taW1lID0gZGVmLm1pbWU7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKG1pbWVTZXQuaGFzKHBheWxvYWQudmFsdWUudHlwZSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3ZhbHVlXCIsXG4gICAgICAgICAgICB2YWx1ZXM6IGRlZi5taW1lLFxuICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUudHlwZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ2hlY2tPdmVyd3JpdGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZENoZWNrT3ZlcndyaXRlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBkZWYudHgocGF5bG9hZC52YWx1ZSk7XG4gICAgfTtcbn0pO1xuIl0sIm5hbWVzIjpbImNvcmUiLCJyZWdleGVzIiwidXRpbCIsIiRab2RDaGVjayIsIiRjb25zdHJ1Y3RvciIsImluc3QiLCJkZWYiLCJfYSIsIl96b2QiLCJvbmF0dGFjaCIsIm51bWVyaWNPcmlnaW5NYXAiLCJudW1iZXIiLCJiaWdpbnQiLCJvYmplY3QiLCIkWm9kQ2hlY2tMZXNzVGhhbiIsImluaXQiLCJvcmlnaW4iLCJ2YWx1ZSIsInB1c2giLCJiYWciLCJjdXJyIiwiaW5jbHVzaXZlIiwibWF4aW11bSIsImV4Y2x1c2l2ZU1heGltdW0iLCJOdW1iZXIiLCJQT1NJVElWRV9JTkZJTklUWSIsImNoZWNrIiwicGF5bG9hZCIsImlzc3VlcyIsImNvZGUiLCJpbnB1dCIsImNvbnRpbnVlIiwiYWJvcnQiLCIkWm9kQ2hlY2tHcmVhdGVyVGhhbiIsIm1pbmltdW0iLCJleGNsdXNpdmVNaW5pbXVtIiwiTkVHQVRJVkVfSU5GSU5JVFkiLCIkWm9kQ2hlY2tNdWx0aXBsZU9mIiwibXVsdGlwbGVPZiIsIkVycm9yIiwiaXNNdWx0aXBsZSIsIkJpZ0ludCIsImZsb2F0U2FmZVJlbWFpbmRlciIsImRpdmlzb3IiLCIkWm9kQ2hlY2tOdW1iZXJGb3JtYXQiLCJmb3JtYXQiLCJpc0ludCIsImluY2x1ZGVzIiwiTlVNQkVSX0ZPUk1BVF9SQU5HRVMiLCJwYXR0ZXJuIiwiaW50ZWdlciIsImlzSW50ZWdlciIsImV4cGVjdGVkIiwiaXNTYWZlSW50ZWdlciIsIk1BWF9TQUZFX0lOVEVHRVIiLCJub3RlIiwiTUlOX1NBRkVfSU5URUdFUiIsIiRab2RDaGVja0JpZ0ludEZvcm1hdCIsIkJJR0lOVF9GT1JNQVRfUkFOR0VTIiwiJFpvZENoZWNrTWF4U2l6ZSIsIndoZW4iLCJ2YWwiLCJudWxsaXNoIiwic2l6ZSIsInVuZGVmaW5lZCIsImdldFNpemFibGVPcmlnaW4iLCIkWm9kQ2hlY2tNaW5TaXplIiwiJFpvZENoZWNrU2l6ZUVxdWFscyIsInRvb0JpZyIsImV4YWN0IiwiJFpvZENoZWNrTWF4TGVuZ3RoIiwibGVuZ3RoIiwiZ2V0TGVuZ3RoYWJsZU9yaWdpbiIsIiRab2RDaGVja01pbkxlbmd0aCIsIiRab2RDaGVja0xlbmd0aEVxdWFscyIsIiRab2RDaGVja1N0cmluZ0Zvcm1hdCIsIl9iIiwicGF0dGVybnMiLCJTZXQiLCJhZGQiLCJsYXN0SW5kZXgiLCJ0ZXN0IiwidG9TdHJpbmciLCIkWm9kQ2hlY2tSZWdleCIsIiRab2RDaGVja0xvd2VyQ2FzZSIsImxvd2VyY2FzZSIsIiRab2RDaGVja1VwcGVyQ2FzZSIsInVwcGVyY2FzZSIsIiRab2RDaGVja0luY2x1ZGVzIiwiZXNjYXBlZFJlZ2V4IiwiZXNjYXBlUmVnZXgiLCJSZWdFeHAiLCJwb3NpdGlvbiIsIiRab2RDaGVja1N0YXJ0c1dpdGgiLCJwcmVmaXgiLCJzdGFydHNXaXRoIiwiJFpvZENoZWNrRW5kc1dpdGgiLCJzdWZmaXgiLCJlbmRzV2l0aCIsImhhbmRsZUNoZWNrUHJvcGVydHlSZXN1bHQiLCJyZXN1bHQiLCJwcm9wZXJ0eSIsInByZWZpeElzc3VlcyIsIiRab2RDaGVja1Byb3BlcnR5Iiwic2NoZW1hIiwicnVuIiwiUHJvbWlzZSIsInRoZW4iLCIkWm9kQ2hlY2tNaW1lVHlwZSIsIm1pbWVTZXQiLCJtaW1lIiwiaGFzIiwidHlwZSIsInZhbHVlcyIsIiRab2RDaGVja092ZXJ3cml0ZSIsInR4Il0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodAsyncError: () => (/* binding */ $ZodAsyncError),\n/* harmony export */ $brand: () => (/* binding */ $brand),\n/* harmony export */ $constructor: () => (/* binding */ $constructor),\n/* harmony export */ NEVER: () => (/* binding */ NEVER),\n/* harmony export */ config: () => (/* binding */ config),\n/* harmony export */ globalConfig: () => (/* binding */ globalConfig)\n/* harmony export */ });\n/** A special constant with type `never` */ const NEVER = Object.freeze({\n status: \"aborted\"\n});\nfunction $constructor(name, initializer, params) {\n function init(inst, def) {\n var _a;\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod ?? {},\n enumerable: false\n });\n (_a = inst._zod).traits ?? (_a.traits = new Set());\n inst._zod.traits.add(name);\n initializer(inst, def);\n // support prototype modifications\n for(const k in _.prototype){\n if (!(k in inst)) Object.defineProperty(inst, k, {\n value: _.prototype[k].bind(inst)\n });\n }\n inst._zod.constr = _;\n inst._zod.def = def;\n }\n // doesn't work if Parent has a constructor with arguments\n const Parent = params?.Parent ?? Object;\n class Definition extends Parent {\n }\n Object.defineProperty(Definition, \"name\", {\n value: name\n });\n function _(def) {\n var _a;\n const inst = params?.Parent ? new Definition() : this;\n init(inst, def);\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n for (const fn of inst._zod.deferred){\n fn();\n }\n return inst;\n }\n Object.defineProperty(_, \"init\", {\n value: init\n });\n Object.defineProperty(_, Symbol.hasInstance, {\n value: (inst)=>{\n if (params?.Parent && inst instanceof params.Parent) return true;\n return inst?._zod?.traits?.has(name);\n }\n });\n Object.defineProperty(_, \"name\", {\n value: name\n });\n return _;\n}\n////////////////////////////// UTILITIES ///////////////////////////////////////\nconst $brand = Symbol(\"zod_brand\");\nclass $ZodAsyncError extends Error {\n constructor(){\n super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n }\n}\nconst globalConfig = {};\nfunction config(newConfig) {\n if (newConfig) Object.assign(globalConfig, newConfig);\n return globalConfig;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2NvcmUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEseUNBQXlDLEdBQ2xDLE1BQU1BLFFBQVFDLE9BQU9DLE1BQU0sQ0FBQztJQUMvQkMsUUFBUTtBQUNaLEdBQUc7QUFDNkIsU0FBU0MsYUFBYUMsSUFBSSxFQUFFQyxXQUFXLEVBQUVDLE1BQU07SUFDM0UsU0FBU0MsS0FBS0MsSUFBSSxFQUFFQyxHQUFHO1FBQ25CLElBQUlDO1FBQ0pWLE9BQU9XLGNBQWMsQ0FBQ0gsTUFBTSxRQUFRO1lBQ2hDSSxPQUFPSixLQUFLSyxJQUFJLElBQUksQ0FBQztZQUNyQkMsWUFBWTtRQUNoQjtRQUNDSixDQUFBQSxLQUFLRixLQUFLSyxJQUFJLEVBQUVFLE1BQU0sSUFBS0wsQ0FBQUEsR0FBR0ssTUFBTSxHQUFHLElBQUlDLEtBQUk7UUFDaERSLEtBQUtLLElBQUksQ0FBQ0UsTUFBTSxDQUFDRSxHQUFHLENBQUNiO1FBQ3JCQyxZQUFZRyxNQUFNQztRQUNsQixrQ0FBa0M7UUFDbEMsSUFBSyxNQUFNUyxLQUFLQyxFQUFFQyxTQUFTLENBQUU7WUFDekIsSUFBSSxDQUFFRixDQUFBQSxLQUFLVixJQUFHLEdBQ1ZSLE9BQU9XLGNBQWMsQ0FBQ0gsTUFBTVUsR0FBRztnQkFBRU4sT0FBT08sRUFBRUMsU0FBUyxDQUFDRixFQUFFLENBQUNHLElBQUksQ0FBQ2I7WUFBTTtRQUMxRTtRQUNBQSxLQUFLSyxJQUFJLENBQUNTLE1BQU0sR0FBR0g7UUFDbkJYLEtBQUtLLElBQUksQ0FBQ0osR0FBRyxHQUFHQTtJQUNwQjtJQUNBLDBEQUEwRDtJQUMxRCxNQUFNYyxTQUFTakIsUUFBUWlCLFVBQVV2QjtJQUNqQyxNQUFNd0IsbUJBQW1CRDtJQUN6QjtJQUNBdkIsT0FBT1csY0FBYyxDQUFDYSxZQUFZLFFBQVE7UUFBRVosT0FBT1I7SUFBSztJQUN4RCxTQUFTZSxFQUFFVixHQUFHO1FBQ1YsSUFBSUM7UUFDSixNQUFNRixPQUFPRixRQUFRaUIsU0FBUyxJQUFJQyxlQUFlLElBQUk7UUFDckRqQixLQUFLQyxNQUFNQztRQUNWQyxDQUFBQSxLQUFLRixLQUFLSyxJQUFJLEVBQUVZLFFBQVEsSUFBS2YsQ0FBQUEsR0FBR2UsUUFBUSxHQUFHLEVBQUU7UUFDOUMsS0FBSyxNQUFNQyxNQUFNbEIsS0FBS0ssSUFBSSxDQUFDWSxRQUFRLENBQUU7WUFDakNDO1FBQ0o7UUFDQSxPQUFPbEI7SUFDWDtJQUNBUixPQUFPVyxjQUFjLENBQUNRLEdBQUcsUUFBUTtRQUFFUCxPQUFPTDtJQUFLO0lBQy9DUCxPQUFPVyxjQUFjLENBQUNRLEdBQUdRLE9BQU9DLFdBQVcsRUFBRTtRQUN6Q2hCLE9BQU8sQ0FBQ0o7WUFDSixJQUFJRixRQUFRaUIsVUFBVWYsZ0JBQWdCRixPQUFPaUIsTUFBTSxFQUMvQyxPQUFPO1lBQ1gsT0FBT2YsTUFBTUssTUFBTUUsUUFBUWMsSUFBSXpCO1FBQ25DO0lBQ0o7SUFDQUosT0FBT1csY0FBYyxDQUFDUSxHQUFHLFFBQVE7UUFBRVAsT0FBT1I7SUFBSztJQUMvQyxPQUFPZTtBQUNYO0FBQ0Esb0ZBQW9GO0FBQzdFLE1BQU1XLFNBQVNILE9BQU8sYUFBYTtBQUNuQyxNQUFNSSx1QkFBdUJDO0lBQ2hDLGFBQWM7UUFDVixLQUFLLENBQUMsQ0FBQyx3RUFBd0UsQ0FBQztJQUNwRjtBQUNKO0FBQ08sTUFBTUMsZUFBZSxDQUFDLEVBQUU7QUFDeEIsU0FBU0MsT0FBT0MsU0FBUztJQUM1QixJQUFJQSxXQUNBbkMsT0FBT29DLE1BQU0sQ0FBQ0gsY0FBY0U7SUFDaEMsT0FBT0Y7QUFDWCIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvY29yZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQSBzcGVjaWFsIGNvbnN0YW50IHdpdGggdHlwZSBgbmV2ZXJgICovXG5leHBvcnQgY29uc3QgTkVWRVIgPSBPYmplY3QuZnJlZXplKHtcbiAgICBzdGF0dXM6IFwiYWJvcnRlZFwiLFxufSk7XG5leHBvcnQgLypAX19OT19TSURFX0VGRkVDVFNfXyovIGZ1bmN0aW9uICRjb25zdHJ1Y3RvcihuYW1lLCBpbml0aWFsaXplciwgcGFyYW1zKSB7XG4gICAgZnVuY3Rpb24gaW5pdChpbnN0LCBkZWYpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaW5zdCwgXCJfem9kXCIsIHtcbiAgICAgICAgICAgIHZhbHVlOiBpbnN0Ll96b2QgPz8ge30sXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIChfYSA9IGluc3QuX3pvZCkudHJhaXRzID8/IChfYS50cmFpdHMgPSBuZXcgU2V0KCkpO1xuICAgICAgICBpbnN0Ll96b2QudHJhaXRzLmFkZChuYW1lKTtcbiAgICAgICAgaW5pdGlhbGl6ZXIoaW5zdCwgZGVmKTtcbiAgICAgICAgLy8gc3VwcG9ydCBwcm90b3R5cGUgbW9kaWZpY2F0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGsgaW4gXy5wcm90b3R5cGUpIHtcbiAgICAgICAgICAgIGlmICghKGsgaW4gaW5zdCkpXG4gICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIGssIHsgdmFsdWU6IF8ucHJvdG90eXBlW2tdLmJpbmQoaW5zdCkgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zdC5fem9kLmNvbnN0ciA9IF87XG4gICAgICAgIGluc3QuX3pvZC5kZWYgPSBkZWY7XG4gICAgfVxuICAgIC8vIGRvZXNuJ3Qgd29yayBpZiBQYXJlbnQgaGFzIGEgY29uc3RydWN0b3Igd2l0aCBhcmd1bWVudHNcbiAgICBjb25zdCBQYXJlbnQgPSBwYXJhbXM/LlBhcmVudCA/PyBPYmplY3Q7XG4gICAgY2xhc3MgRGVmaW5pdGlvbiBleHRlbmRzIFBhcmVudCB7XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEZWZpbml0aW9uLCBcIm5hbWVcIiwgeyB2YWx1ZTogbmFtZSB9KTtcbiAgICBmdW5jdGlvbiBfKGRlZikge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGluc3QgPSBwYXJhbXM/LlBhcmVudCA/IG5ldyBEZWZpbml0aW9uKCkgOiB0aGlzO1xuICAgICAgICBpbml0KGluc3QsIGRlZik7XG4gICAgICAgIChfYSA9IGluc3QuX3pvZCkuZGVmZXJyZWQgPz8gKF9hLmRlZmVycmVkID0gW10pO1xuICAgICAgICBmb3IgKGNvbnN0IGZuIG9mIGluc3QuX3pvZC5kZWZlcnJlZCkge1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5zdDtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF8sIFwiaW5pdFwiLCB7IHZhbHVlOiBpbml0IH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICAgICAgdmFsdWU6IChpbnN0KSA9PiB7XG4gICAgICAgICAgICBpZiAocGFyYW1zPy5QYXJlbnQgJiYgaW5zdCBpbnN0YW5jZW9mIHBhcmFtcy5QYXJlbnQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICByZXR1cm4gaW5zdD8uX3pvZD8udHJhaXRzPy5oYXMobmFtZSk7XG4gICAgICAgIH0sXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF8sIFwibmFtZVwiLCB7IHZhbHVlOiBuYW1lIH0pO1xuICAgIHJldHVybiBfO1xufVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAgVVRJTElUSUVTICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgY29uc3QgJGJyYW5kID0gU3ltYm9sKFwiem9kX2JyYW5kXCIpO1xuZXhwb3J0IGNsYXNzICRab2RBc3luY0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihgRW5jb3VudGVyZWQgUHJvbWlzZSBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2UuIFVzZSAucGFyc2VBc3luYygpIGluc3RlYWQuYCk7XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IGdsb2JhbENvbmZpZyA9IHt9O1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZyhuZXdDb25maWcpIHtcbiAgICBpZiAobmV3Q29uZmlnKVxuICAgICAgICBPYmplY3QuYXNzaWduKGdsb2JhbENvbmZpZywgbmV3Q29uZmlnKTtcbiAgICByZXR1cm4gZ2xvYmFsQ29uZmlnO1xufVxuIl0sIm5hbWVzIjpbIk5FVkVSIiwiT2JqZWN0IiwiZnJlZXplIiwic3RhdHVzIiwiJGNvbnN0cnVjdG9yIiwibmFtZSIsImluaXRpYWxpemVyIiwicGFyYW1zIiwiaW5pdCIsImluc3QiLCJkZWYiLCJfYSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJfem9kIiwiZW51bWVyYWJsZSIsInRyYWl0cyIsIlNldCIsImFkZCIsImsiLCJfIiwicHJvdG90eXBlIiwiYmluZCIsImNvbnN0ciIsIlBhcmVudCIsIkRlZmluaXRpb24iLCJkZWZlcnJlZCIsImZuIiwiU3ltYm9sIiwiaGFzSW5zdGFuY2UiLCJoYXMiLCIkYnJhbmQiLCIkWm9kQXN5bmNFcnJvciIsIkVycm9yIiwiZ2xvYmFsQ29uZmlnIiwiY29uZmlnIiwibmV3Q29uZmlnIiwiYXNzaWduIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/doc.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/doc.js ***!
|
||
\************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Doc: () => (/* binding */ Doc)\n/* harmony export */ });\nclass Doc {\n constructor(args = []){\n this.content = [];\n this.indent = 0;\n if (this) this.args = args;\n }\n indented(fn) {\n this.indent += 1;\n fn(this);\n this.indent -= 1;\n }\n write(arg) {\n if (typeof arg === \"function\") {\n arg(this, {\n execution: \"sync\"\n });\n arg(this, {\n execution: \"async\"\n });\n return;\n }\n const content = arg;\n const lines = content.split(\"\\n\").filter((x)=>x);\n const minIndent = Math.min(...lines.map((x)=>x.length - x.trimStart().length));\n const dedented = lines.map((x)=>x.slice(minIndent)).map((x)=>\" \".repeat(this.indent * 2) + x);\n for (const line of dedented){\n this.content.push(line);\n }\n }\n compile() {\n const F = Function;\n const args = this?.args;\n const content = this?.content ?? [\n ``\n ];\n const lines = [\n ...content.map((x)=>` ${x}`)\n ];\n // console.log(lines.join(\"\\n\"));\n return new F(...args, lines.join(\"\\n\"));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2RvYy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sTUFBTUE7SUFDVCxZQUFZQyxPQUFPLEVBQUUsQ0FBRTtRQUNuQixJQUFJLENBQUNDLE9BQU8sR0FBRyxFQUFFO1FBQ2pCLElBQUksQ0FBQ0MsTUFBTSxHQUFHO1FBQ2QsSUFBSSxJQUFJLEVBQ0osSUFBSSxDQUFDRixJQUFJLEdBQUdBO0lBQ3BCO0lBQ0FHLFNBQVNDLEVBQUUsRUFBRTtRQUNULElBQUksQ0FBQ0YsTUFBTSxJQUFJO1FBQ2ZFLEdBQUcsSUFBSTtRQUNQLElBQUksQ0FBQ0YsTUFBTSxJQUFJO0lBQ25CO0lBQ0FHLE1BQU1DLEdBQUcsRUFBRTtRQUNQLElBQUksT0FBT0EsUUFBUSxZQUFZO1lBQzNCQSxJQUFJLElBQUksRUFBRTtnQkFBRUMsV0FBVztZQUFPO1lBQzlCRCxJQUFJLElBQUksRUFBRTtnQkFBRUMsV0FBVztZQUFRO1lBQy9CO1FBQ0o7UUFDQSxNQUFNTixVQUFVSztRQUNoQixNQUFNRSxRQUFRUCxRQUFRUSxLQUFLLENBQUMsTUFBTUMsTUFBTSxDQUFDLENBQUNDLElBQU1BO1FBQ2hELE1BQU1DLFlBQVlDLEtBQUtDLEdBQUcsSUFBSU4sTUFBTU8sR0FBRyxDQUFDLENBQUNKLElBQU1BLEVBQUVLLE1BQU0sR0FBR0wsRUFBRU0sU0FBUyxHQUFHRCxNQUFNO1FBQzlFLE1BQU1FLFdBQVdWLE1BQU1PLEdBQUcsQ0FBQyxDQUFDSixJQUFNQSxFQUFFUSxLQUFLLENBQUNQLFlBQVlHLEdBQUcsQ0FBQyxDQUFDSixJQUFNLElBQUlTLE1BQU0sQ0FBQyxJQUFJLENBQUNsQixNQUFNLEdBQUcsS0FBS1M7UUFDL0YsS0FBSyxNQUFNVSxRQUFRSCxTQUFVO1lBQ3pCLElBQUksQ0FBQ2pCLE9BQU8sQ0FBQ3FCLElBQUksQ0FBQ0Q7UUFDdEI7SUFDSjtJQUNBRSxVQUFVO1FBQ04sTUFBTUMsSUFBSUM7UUFDVixNQUFNekIsT0FBTyxJQUFJLEVBQUVBO1FBQ25CLE1BQU1DLFVBQVUsSUFBSSxFQUFFQSxXQUFXO1lBQUMsRUFBRTtTQUFDO1FBQ3JDLE1BQU1PLFFBQVE7ZUFBSVAsUUFBUWMsR0FBRyxDQUFDLENBQUNKLElBQU0sQ0FBQyxFQUFFLEVBQUVBLEdBQUc7U0FBRTtRQUMvQyxpQ0FBaUM7UUFDakMsT0FBTyxJQUFJYSxLQUFLeEIsTUFBTVEsTUFBTWtCLElBQUksQ0FBQztJQUNyQztBQUNKIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9kb2MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIERvYyB7XG4gICAgY29uc3RydWN0b3IoYXJncyA9IFtdKSB7XG4gICAgICAgIHRoaXMuY29udGVudCA9IFtdO1xuICAgICAgICB0aGlzLmluZGVudCA9IDA7XG4gICAgICAgIGlmICh0aGlzKVxuICAgICAgICAgICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB9XG4gICAgaW5kZW50ZWQoZm4pIHtcbiAgICAgICAgdGhpcy5pbmRlbnQgKz0gMTtcbiAgICAgICAgZm4odGhpcyk7XG4gICAgICAgIHRoaXMuaW5kZW50IC09IDE7XG4gICAgfVxuICAgIHdyaXRlKGFyZykge1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBhcmcodGhpcywgeyBleGVjdXRpb246IFwic3luY1wiIH0pO1xuICAgICAgICAgICAgYXJnKHRoaXMsIHsgZXhlY3V0aW9uOiBcImFzeW5jXCIgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29udGVudCA9IGFyZztcbiAgICAgICAgY29uc3QgbGluZXMgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpLmZpbHRlcigoeCkgPT4geCk7XG4gICAgICAgIGNvbnN0IG1pbkluZGVudCA9IE1hdGgubWluKC4uLmxpbmVzLm1hcCgoeCkgPT4geC5sZW5ndGggLSB4LnRyaW1TdGFydCgpLmxlbmd0aCkpO1xuICAgICAgICBjb25zdCBkZWRlbnRlZCA9IGxpbmVzLm1hcCgoeCkgPT4geC5zbGljZShtaW5JbmRlbnQpKS5tYXAoKHgpID0+IFwiIFwiLnJlcGVhdCh0aGlzLmluZGVudCAqIDIpICsgeCk7XG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBkZWRlbnRlZCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZW50LnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29tcGlsZSgpIHtcbiAgICAgICAgY29uc3QgRiA9IEZ1bmN0aW9uO1xuICAgICAgICBjb25zdCBhcmdzID0gdGhpcz8uYXJncztcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXM/LmNvbnRlbnQgPz8gW2BgXTtcbiAgICAgICAgY29uc3QgbGluZXMgPSBbLi4uY29udGVudC5tYXAoKHgpID0+IGAgICR7eH1gKV07XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGxpbmVzLmpvaW4oXCJcXG5cIikpO1xuICAgICAgICByZXR1cm4gbmV3IEYoLi4uYXJncywgbGluZXMuam9pbihcIlxcblwiKSk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIkRvYyIsImFyZ3MiLCJjb250ZW50IiwiaW5kZW50IiwiaW5kZW50ZWQiLCJmbiIsIndyaXRlIiwiYXJnIiwiZXhlY3V0aW9uIiwibGluZXMiLCJzcGxpdCIsImZpbHRlciIsIngiLCJtaW5JbmRlbnQiLCJNYXRoIiwibWluIiwibWFwIiwibGVuZ3RoIiwidHJpbVN0YXJ0IiwiZGVkZW50ZWQiLCJzbGljZSIsInJlcGVhdCIsImxpbmUiLCJwdXNoIiwiY29tcGlsZSIsIkYiLCJGdW5jdGlvbiIsImpvaW4iXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/doc.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js":
|
||
/*!***************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js ***!
|
||
\***************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodError: () => (/* binding */ $ZodError),\n/* harmony export */ $ZodRealError: () => (/* binding */ $ZodRealError),\n/* harmony export */ flattenError: () => (/* binding */ flattenError),\n/* harmony export */ formatError: () => (/* binding */ formatError),\n/* harmony export */ prettifyError: () => (/* binding */ prettifyError),\n/* harmony export */ toDotPath: () => (/* binding */ toDotPath),\n/* harmony export */ treeifyError: () => (/* binding */ treeifyError)\n/* harmony export */ });\n/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./core.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js\");\n\n\nconst initializer = (inst, def)=>{\n inst.name = \"$ZodError\";\n Object.defineProperty(inst, \"_zod\", {\n value: inst._zod,\n enumerable: false\n });\n Object.defineProperty(inst, \"issues\", {\n value: def,\n enumerable: false\n });\n Object.defineProperty(inst, \"message\", {\n get () {\n return JSON.stringify(def, _util_js__WEBPACK_IMPORTED_MODULE_0__.jsonStringifyReplacer, 2);\n },\n enumerable: true\n });\n Object.defineProperty(inst, \"toString\", {\n value: ()=>inst.message,\n enumerable: false\n });\n};\nconst $ZodError = (0,_core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor)(\"$ZodError\", initializer);\nconst $ZodRealError = (0,_core_js__WEBPACK_IMPORTED_MODULE_1__.$constructor)(\"$ZodError\", initializer, {\n Parent: Error\n});\nfunction flattenError(error, mapper = (issue)=>issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of error.issues){\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n } else {\n formErrors.push(mapper(sub));\n }\n }\n return {\n formErrors,\n fieldErrors\n };\n}\nfunction formatError(error, _mapper) {\n const mapper = _mapper || function(issue) {\n return issue.message;\n };\n const fieldErrors = {\n _errors: []\n };\n const processError = (error)=>{\n for (const issue of error.issues){\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n issue.errors.map((issues)=>processError({\n issues\n }));\n } else if (issue.code === \"invalid_key\") {\n processError({\n issues: issue.issues\n });\n } else if (issue.code === \"invalid_element\") {\n processError({\n issues: issue.issues\n });\n } else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n } else {\n let curr = fieldErrors;\n let i = 0;\n while(i < issue.path.length){\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || {\n _errors: []\n };\n } else {\n curr[el] = curr[el] || {\n _errors: []\n };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(error);\n return fieldErrors;\n}\nfunction treeifyError(error, _mapper) {\n const mapper = _mapper || function(issue) {\n return issue.message;\n };\n const result = {\n errors: []\n };\n const processError = (error, path = [])=>{\n var _a, _b;\n for (const issue of error.issues){\n if (issue.code === \"invalid_union\" && issue.errors.length) {\n // regular union error\n issue.errors.map((issues)=>processError({\n issues\n }, issue.path));\n } else if (issue.code === \"invalid_key\") {\n processError({\n issues: issue.issues\n }, issue.path);\n } else if (issue.code === \"invalid_element\") {\n processError({\n issues: issue.issues\n }, issue.path);\n } else {\n const fullpath = [\n ...path,\n ...issue.path\n ];\n if (fullpath.length === 0) {\n result.errors.push(mapper(issue));\n continue;\n }\n let curr = result;\n let i = 0;\n while(i < fullpath.length){\n const el = fullpath[i];\n const terminal = i === fullpath.length - 1;\n if (typeof el === \"string\") {\n curr.properties ?? (curr.properties = {});\n (_a = curr.properties)[el] ?? (_a[el] = {\n errors: []\n });\n curr = curr.properties[el];\n } else {\n curr.items ?? (curr.items = []);\n (_b = curr.items)[el] ?? (_b[el] = {\n errors: []\n });\n curr = curr.items[el];\n }\n if (terminal) {\n curr.errors.push(mapper(issue));\n }\n i++;\n }\n }\n }\n };\n processError(error);\n return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n * issues: [\n * {\n * expected: 'string',\n * code: 'invalid_type',\n * path: [ 'username' ],\n * message: 'Invalid input: expected string'\n * },\n * {\n * expected: 'number',\n * code: 'invalid_type',\n * path: [ 'favoriteNumbers', 1 ],\n * message: 'Invalid input: expected number'\n * }\n * ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n * ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n * ✖ Invalid input: expected number\n * ```\n */ function toDotPath(path) {\n const segs = [];\n for (const seg of path){\n if (typeof seg === \"number\") segs.push(`[${seg}]`);\n else if (typeof seg === \"symbol\") segs.push(`[${JSON.stringify(String(seg))}]`);\n else if (/[^\\w$]/.test(seg)) segs.push(`[${JSON.stringify(seg)}]`);\n else {\n if (segs.length) segs.push(\".\");\n segs.push(seg);\n }\n }\n return segs.join(\"\");\n}\nfunction prettifyError(error) {\n const lines = [];\n // sort by path length\n const issues = [\n ...error.issues\n ].sort((a, b)=>a.path.length - b.path.length);\n // Process each issue\n for (const issue of issues){\n lines.push(`✖ ${issue.message}`);\n if (issue.path?.length) lines.push(` → at ${toDotPath(issue.path)}`);\n }\n // Convert Map to formatted string\n return lines.join(\"\\n\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2Vycm9ycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBeUM7QUFDUDtBQUNsQyxNQUFNRSxjQUFjLENBQUNDLE1BQU1DO0lBQ3ZCRCxLQUFLRSxJQUFJLEdBQUc7SUFDWkMsT0FBT0MsY0FBYyxDQUFDSixNQUFNLFFBQVE7UUFDaENLLE9BQU9MLEtBQUtNLElBQUk7UUFDaEJDLFlBQVk7SUFDaEI7SUFDQUosT0FBT0MsY0FBYyxDQUFDSixNQUFNLFVBQVU7UUFDbENLLE9BQU9KO1FBQ1BNLFlBQVk7SUFDaEI7SUFDQUosT0FBT0MsY0FBYyxDQUFDSixNQUFNLFdBQVc7UUFDbkNRO1lBQ0ksT0FBT0MsS0FBS0MsU0FBUyxDQUFDVCxLQUFLSCwyREFBMEIsRUFBRTtRQUMzRDtRQUNBUyxZQUFZO0lBRWhCO0lBQ0FKLE9BQU9DLGNBQWMsQ0FBQ0osTUFBTSxZQUFZO1FBQ3BDSyxPQUFPLElBQU1MLEtBQUtZLE9BQU87UUFDekJMLFlBQVk7SUFDaEI7QUFDSjtBQUNPLE1BQU1NLFlBQVloQixzREFBWUEsQ0FBQyxhQUFhRSxhQUFhO0FBQ3pELE1BQU1lLGdCQUFnQmpCLHNEQUFZQSxDQUFDLGFBQWFFLGFBQWE7SUFBRWdCLFFBQVFDO0FBQU0sR0FBRztBQUNoRixTQUFTQyxhQUFhQyxLQUFLLEVBQUVDLFNBQVMsQ0FBQ0MsUUFBVUEsTUFBTVIsT0FBTztJQUNqRSxNQUFNUyxjQUFjLENBQUM7SUFDckIsTUFBTUMsYUFBYSxFQUFFO0lBQ3JCLEtBQUssTUFBTUMsT0FBT0wsTUFBTU0sTUFBTSxDQUFFO1FBQzVCLElBQUlELElBQUlFLElBQUksQ0FBQ0MsTUFBTSxHQUFHLEdBQUc7WUFDckJMLFdBQVcsQ0FBQ0UsSUFBSUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHSixXQUFXLENBQUNFLElBQUlFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxF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QWtDO0lBQ2xDLE9BQU80QixNQUFNRixJQUFJLENBQUM7QUFDdEIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL2Vycm9ycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAkY29uc3RydWN0b3IgfSBmcm9tIFwiLi9jb3JlLmpzXCI7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gXCIuL3V0aWwuanNcIjtcbmNvbnN0IGluaXRpYWxpemVyID0gKGluc3QsIGRlZikgPT4ge1xuICAgIGluc3QubmFtZSA9IFwiJFpvZEVycm9yXCI7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIFwiX3pvZFwiLCB7XG4gICAgICAgIHZhbHVlOiBpbnN0Ll96b2QsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcImlzc3Vlc1wiLCB7XG4gICAgICAgIHZhbHVlOiBkZWYsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbnN0LCBcIm1lc3NhZ2VcIiwge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGVmLCB1dGlsLmpzb25TdHJpbmdpZnlSZXBsYWNlciwgMik7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIC8vIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGluc3QsIFwidG9TdHJpbmdcIiwge1xuICAgICAgICB2YWx1ZTogKCkgPT4gaW5zdC5tZXNzYWdlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbn07XG5leHBvcnQgY29uc3QgJFpvZEVycm9yID0gJGNvbnN0cnVjdG9yKFwiJFpvZEVycm9yXCIsIGluaXRpYWxpemVyKTtcbmV4cG9ydCBjb25zdCAkWm9kUmVhbEVycm9yID0gJGNvbnN0cnVjdG9yKFwiJFpvZEVycm9yXCIsIGluaXRpYWxpemVyLCB7IFBhcmVudDogRXJyb3IgfSk7XG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbkVycm9yKGVycm9yLCBtYXBwZXIgPSAoaXNzdWUpID0+IGlzc3VlLm1lc3NhZ2UpIHtcbiAgICBjb25zdCBmaWVsZEVycm9ycyA9IHt9O1xuICAgIGNvbnN0IGZvcm1FcnJvcnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHN1YiBvZiBlcnJvci5pc3N1ZXMpIHtcbiAgICAgICAgaWYgKHN1Yi5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZpZWxkRXJyb3JzW3N1Yi5wYXRoWzBdXSA9IGZpZWxkRXJyb3JzW3N1Yi5wYXRoWzBdXSB8fCBbXTtcbiAgICAgICAgICAgIGZpZWxkRXJyb3JzW3N1Yi5wYXRoWzBdXS5wdXNoKG1hcHBlcihzdWIpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvcm1FcnJvcnMucHVzaChtYXBwZXIoc3ViKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgZm9ybUVycm9ycywgZmllbGRFcnJvcnMgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFcnJvcihlcnJvciwgX21hcHBlcikge1xuICAgIGNvbnN0IG1hcHBlciA9IF9tYXBwZXIgfHxcbiAgICAgICAgZnVuY3Rpb24gKGlzc3VlKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNzdWUubWVzc2FnZTtcbiAgICAgICAgfTtcbiAgICBjb25zdCBmaWVsZEVycm9ycyA9IHsgX2Vycm9yczogW10gfTtcbiAgICBjb25zdCBwcm9jZXNzRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBpc3N1ZSBvZiBlcnJvci5pc3N1ZXMpIHtcbiAgICAgICAgICAgIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfdW5pb25cIiAmJiBpc3N1ZS5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaXNzdWUuZXJyb3JzLm1hcCgoaXNzdWVzKSA9PiBwcm9jZXNzRXJyb3IoeyBpc3N1ZXMgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX2tleVwiKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKHsgaXNzdWVzOiBpc3N1ZS5pc3N1ZXMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfZWxlbWVudFwiKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKHsgaXNzdWVzOiBpc3N1ZS5pc3N1ZXMgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5wYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzLl9lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBjdXJyID0gZmllbGRFcnJvcnM7XG4gICAgICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgaXNzdWUucGF0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBpc3N1ZS5wYXRoW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IGkgPT09IGlzc3VlLnBhdGgubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0ZXJtaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IHsgX2Vycm9yczogW10gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJbZWxdLl9lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjdXJyID0gY3VycltlbF07XG4gICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHByb2Nlc3NFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIGZpZWxkRXJyb3JzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVpZnlFcnJvcihlcnJvciwgX21hcHBlcikge1xuICAgIGNvbnN0IG1hcHBlciA9IF9tYXBwZXIgfHxcbiAgICAgICAgZnVuY3Rpb24gKGlzc3VlKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNzdWUubWVzc2FnZTtcbiAgICAgICAgfTtcbiAgICBjb25zdCByZXN1bHQgPSB7IGVycm9yczogW10gfTtcbiAgICBjb25zdCBwcm9jZXNzRXJyb3IgPSAoZXJyb3IsIHBhdGggPSBbXSkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBmb3IgKGNvbnN0IGlzc3VlIG9mIGVycm9yLmlzc3Vlcykge1xuICAgICAgICAgICAgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF91bmlvblwiICYmIGlzc3VlLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyByZWd1bGFyIHVuaW9uIGVycm9yXG4gICAgICAgICAgICAgICAgaXNzdWUuZXJyb3JzLm1hcCgoaXNzdWVzKSA9PiBwcm9jZXNzRXJyb3IoeyBpc3N1ZXMgfSwgaXNzdWUucGF0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX2tleVwiKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKHsgaXNzdWVzOiBpc3N1ZS5pc3N1ZXMgfSwgaXNzdWUucGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfZWxlbWVudFwiKSB7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0Vycm9yKHsgaXNzdWVzOiBpc3N1ZS5pc3N1ZXMgfSwgaXNzdWUucGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmdWxscGF0aCA9IFsuLi5wYXRoLCAuLi5pc3N1ZS5wYXRoXTtcbiAgICAgICAgICAgICAgICBpZiAoZnVsbHBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCBjdXJyID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IGZ1bGxwYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbCA9IGZ1bGxwYXRoW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXJtaW5hbCA9IGkgPT09IGZ1bGxwYXRoLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZWwgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnIucHJvcGVydGllcyA/PyAoY3Vyci5wcm9wZXJ0aWVzID0ge30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgKF9hID0gY3Vyci5wcm9wZXJ0aWVzKVtlbF0gPz8gKF9hW2VsXSA9IHsgZXJyb3JzOiBbXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnIgPSBjdXJyLnByb3BlcnRpZXNbZWxdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyci5pdGVtcyA/PyAoY3Vyci5pdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIChfYiA9IGN1cnIuaXRlbXMpW2VsXSA/PyAoX2JbZWxdID0geyBlcnJvcnM6IFtdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VyciA9IGN1cnIuaXRlbXNbZWxdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyci5lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBwcm9jZXNzRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4vKiogRm9ybWF0IGEgWm9kRXJyb3IgYXMgYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcgaW4gdGhlIGZvbGxvd2luZyBmb3JtLlxuICpcbiAqIEZyb21cbiAqXG4gKiBgYGB0c1xuICogWm9kRXJyb3Ige1xuICogICBpc3N1ZXM6IFtcbiAqICAgICB7XG4gKiAgICAgICBleHBlY3RlZDogJ3N0cmluZycsXG4gKiAgICAgICBjb2RlOiAnaW52YWxpZF90eXBlJyxcbiAqICAgICAgIHBhdGg6IFsgJ3VzZXJuYW1lJyBdLFxuICogICAgICAgbWVzc2FnZTogJ0ludmFsaWQgaW5wdXQ6IGV4cGVjdGVkIHN0cmluZydcbiAqICAgICB9LFxuICogICAgIHtcbiAqICAgICAgIGV4cGVjdGVkOiAnbnVtYmVyJyxcbiAqICAgICAgIGNvZGU6ICdpbnZhbGlkX3R5cGUnLFxuICogICAgICAgcGF0aDogWyAnZmF2b3JpdGVOdW1iZXJzJywgMSBdLFxuICogICAgICAgbWVzc2FnZTogJ0ludmFsaWQgaW5wdXQ6IGV4cGVjdGVkIG51bWJlcidcbiAqICAgICB9XG4gKiAgIF07XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiB0b1xuICpcbiAqIGBgYFxuICogdXNlcm5hbWVcbiAqICAg4pyWIEV4cGVjdGVkIG51bWJlciwgcmVjZWl2ZWQgc3RyaW5nIGF0IFwidXNlcm5hbWVcbiAqIGZhdm9yaXRlTnVtYmVyc1swXVxuICogICDinJYgSW52YWxpZCBpbnB1dDogZXhwZWN0ZWQgbnVtYmVyXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvRG90UGF0aChwYXRoKSB7XG4gICAgY29uc3Qgc2VncyA9IFtdO1xuICAgIGZvciAoY29uc3Qgc2VnIG9mIHBhdGgpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZWcgPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICBzZWdzLnB1c2goYFske3NlZ31dYCk7XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBzZWcgPT09IFwic3ltYm9sXCIpXG4gICAgICAgICAgICBzZWdzLnB1c2goYFske0pTT04uc3RyaW5naWZ5KFN0cmluZyhzZWcpKX1dYCk7XG4gICAgICAgIGVsc2UgaWYgKC9bXlxcdyRdLy50ZXN0KHNlZykpXG4gICAgICAgICAgICBzZWdzLnB1c2goYFske0pTT04uc3RyaW5naWZ5KHNlZyl9XWApO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZWdzLmxlbmd0aClcbiAgICAgICAgICAgICAgICBzZWdzLnB1c2goXCIuXCIpO1xuICAgICAgICAgICAgc2Vncy5wdXNoKHNlZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNlZ3Muam9pbihcIlwiKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwcmV0dGlmeUVycm9yKGVycm9yKSB7XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICAvLyBzb3J0IGJ5IHBhdGggbGVuZ3RoXG4gICAgY29uc3QgaXNzdWVzID0gWy4uLmVycm9yLmlzc3Vlc10uc29ydCgoYSwgYikgPT4gYS5wYXRoLmxlbmd0aCAtIGIucGF0aC5sZW5ndGgpO1xuICAgIC8vIFByb2Nlc3MgZWFjaCBpc3N1ZVxuICAgIGZvciAoY29uc3QgaXNzdWUgb2YgaXNzdWVzKSB7XG4gICAgICAgIGxpbmVzLnB1c2goYOKcliAke2lzc3VlLm1lc3NhZ2V9YCk7XG4gICAgICAgIGlmIChpc3N1ZS5wYXRoPy5sZW5ndGgpXG4gICAgICAgICAgICBsaW5lcy5wdXNoKGAgIOKGkiBhdCAke3RvRG90UGF0aChpc3N1ZS5wYXRoKX1gKTtcbiAgICB9XG4gICAgLy8gQ29udmVydCBNYXAgdG8gZm9ybWF0dGVkIHN0cmluZ1xuICAgIHJldHVybiBsaW5lcy5qb2luKFwiXFxuXCIpO1xufVxuIl0sIm5hbWVzIjpbIiRjb25zdHJ1Y3RvciIsInV0aWwiLCJpbml0aWFsaXplciIsImluc3QiLCJkZWYiLCJuYW1lIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJ2YWx1ZSIsIl96b2QiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiSlNPTiIsInN0cmluZ2lmeSIsImpzb25TdHJpbmdpZnlSZXBsYWNlciIsIm1lc3NhZ2UiLCIkWm9kRXJyb3IiLCIkWm9kUmVhbEVycm9yIiwiUGFyZW50IiwiRXJyb3IiLCJmbGF0dGVuRXJyb3IiLCJlcnJvciIsIm1hcHBlciIsImlzc3VlIiwiZmllbGRFcnJvcnMiLCJmb3JtRXJyb3JzIiwic3ViIiwiaXNzdWVzIiwicGF0aCIsImxlbmd0aCIsInB1c2giLCJmb3JtYXRFcnJvciIsIl9tYXBwZXIiLCJfZXJyb3JzIiwicHJvY2Vzc0Vycm9yIiwiY29kZSIsImVycm9ycyIsIm1hcCIsImN1cnIiLCJpIiwiZWwiLCJ0ZXJtaW5hbCIsInRyZWVpZnlFcnJvciIsInJlc3VsdCIsIl9hIiwiX2IiLCJmdWxscGF0aCIsInByb3BlcnRpZXMiLCJpdGVtcyIsInRvRG90UGF0aCIsInNlZ3MiLCJzZWciLCJTdHJpbmciLCJ0ZXN0Iiwiam9pbiIsInByZXR0aWZ5RXJyb3IiLCJsaW5lcyIsInNvcnQiLCJhIiwiYiJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _parse: () => (/* binding */ _parse),\n/* harmony export */ _parseAsync: () => (/* binding */ _parseAsync),\n/* harmony export */ _safeParse: () => (/* binding */ _safeParse),\n/* harmony export */ _safeParseAsync: () => (/* binding */ _safeParseAsync),\n/* harmony export */ parse: () => (/* binding */ parse),\n/* harmony export */ parseAsync: () => (/* binding */ parseAsync),\n/* harmony export */ safeParse: () => (/* binding */ safeParse),\n/* harmony export */ safeParseAsync: () => (/* binding */ safeParseAsync)\n/* harmony export */ });\n/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./errors.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/errors.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js\");\n\n\n\nconst _parse = (_Err)=>(schema, value, _ctx, _params)=>{\n const ctx = _ctx ? Object.assign(_ctx, {\n async: false\n }) : {\n async: false\n };\n const result = schema._zod.run({\n value,\n issues: []\n }, ctx);\n if (result instanceof Promise) {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_0__.$ZodAsyncError();\n }\n if (result.issues.length) {\n const e = new (_params?.Err ?? _Err)(result.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_1__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config())));\n _util_js__WEBPACK_IMPORTED_MODULE_1__.captureStackTrace(e, _params?.callee);\n throw e;\n }\n return result.value;\n };\nconst parse = /* @__PURE__*/ _parse(_errors_js__WEBPACK_IMPORTED_MODULE_2__.$ZodRealError);\nconst _parseAsync = (_Err)=>async (schema, value, _ctx, params)=>{\n const ctx = _ctx ? Object.assign(_ctx, {\n async: true\n }) : {\n async: true\n };\n let result = schema._zod.run({\n value,\n issues: []\n }, ctx);\n if (result instanceof Promise) result = await result;\n if (result.issues.length) {\n const e = new (params?.Err ?? _Err)(result.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_1__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config())));\n _util_js__WEBPACK_IMPORTED_MODULE_1__.captureStackTrace(e, params?.callee);\n throw e;\n }\n return result.value;\n };\nconst parseAsync = /* @__PURE__*/ _parseAsync(_errors_js__WEBPACK_IMPORTED_MODULE_2__.$ZodRealError);\nconst _safeParse = (_Err)=>(schema, value, _ctx)=>{\n const ctx = _ctx ? {\n ..._ctx,\n async: false\n } : {\n async: false\n };\n const result = schema._zod.run({\n value,\n issues: []\n }, ctx);\n if (result instanceof Promise) {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_0__.$ZodAsyncError();\n }\n return result.issues.length ? {\n success: false,\n error: new (_Err ?? _errors_js__WEBPACK_IMPORTED_MODULE_2__.$ZodError)(result.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_1__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config())))\n } : {\n success: true,\n data: result.value\n };\n };\nconst safeParse = /* @__PURE__*/ _safeParse(_errors_js__WEBPACK_IMPORTED_MODULE_2__.$ZodRealError);\nconst _safeParseAsync = (_Err)=>async (schema, value, _ctx)=>{\n const ctx = _ctx ? Object.assign(_ctx, {\n async: true\n }) : {\n async: true\n };\n let result = schema._zod.run({\n value,\n issues: []\n }, ctx);\n if (result instanceof Promise) result = await result;\n return result.issues.length ? {\n success: false,\n error: new _Err(result.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_1__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config())))\n } : {\n success: true,\n data: result.value\n };\n };\nconst safeParseAsync = /* @__PURE__*/ _safeParseAsync(_errors_js__WEBPACK_IMPORTED_MODULE_2__.$ZodRealError);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3BhcnNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQWtDO0FBQ0k7QUFDSjtBQUMzQixNQUFNRyxTQUFTLENBQUNDLE9BQVMsQ0FBQ0MsUUFBUUMsT0FBT0MsTUFBTUM7UUFDbEQsTUFBTUMsTUFBTUYsT0FBT0csT0FBT0MsTUFBTSxDQUFDSixNQUFNO1lBQUVLLE9BQU87UUFBTSxLQUFLO1lBQUVBLE9BQU87UUFBTTtRQUMxRSxNQUFNQyxTQUFTUixPQUFPUyxJQUFJLENBQUNDLEdBQUcsQ0FBQztZQUFFVDtZQUFPVSxRQUFRLEVBQUU7UUFBQyxHQUFHUDtRQUN0RCxJQUFJSSxrQkFBa0JJLFNBQVM7WUFDM0IsTUFBTSxJQUFJakIsb0RBQW1CO1FBQ2pDO1FBQ0EsSUFBSWEsT0FBT0csTUFBTSxDQUFDRyxNQUFNLEVBQUU7WUFDdEIsTUFBTUMsSUFBSSxJQUFLWixDQUFBQSxTQUFTYSxPQUFPakIsSUFBRyxFQUFHUyxPQUFPRyxNQUFNLENBQUNNLEdBQUcsQ0FBQyxDQUFDQyxNQUFRckIsbURBQWtCLENBQUNxQixLQUFLZCxLQUFLVCw0Q0FBVztZQUN4R0UsdURBQXNCLENBQUNrQixHQUFHWixTQUFTbUI7WUFDbkMsTUFBTVA7UUFDVjtRQUNBLE9BQU9QLE9BQU9QLEtBQUs7SUFDdkIsRUFBRTtBQUNLLE1BQU1zQixRQUFRLFlBQVksR0FBR3pCLE9BQU9GLHFEQUFvQixFQUFFO0FBQzFELE1BQU02QixjQUFjLENBQUMxQixPQUFTLE9BQU9DLFFBQVFDLE9BQU9DLE1BQU13QjtRQUM3RCxNQUFNdEIsTUFBTUYsT0FBT0csT0FBT0MsTUFBTSxDQUFDSixNQUFNO1lBQUVLLE9BQU87UUFBSyxLQUFLO1lBQUVBLE9BQU87UUFBSztRQUN4RSxJQUFJQyxTQUFTUixPQUFPUyxJQUFJLENBQUNDLEdBQUcsQ0FBQztZQUFFVDtZQUFPVSxRQUFRLEVBQUU7UUFBQyxHQUFHUDtRQUNwRCxJQUFJSSxrQkFBa0JJLFNBQ2xCSixTQUFTLE1BQU1BO1FBQ25CLElBQUlBLE9BQU9HLE1BQU0sQ0FBQ0csTUFBTSxFQUFFO1lBQ3RCLE1BQU1DLElBQUksSUFBS1csQ0FBQUEsUUFBUVYsT0FBT2pCLElBQUcsRUFBR1MsT0FBT0csTUFBTSxDQUFDTSxHQUFHLENBQUMsQ0FBQ0MsTUFBUXJCLG1EQUFrQixDQUFDcUIsS0FBS2QsS0FBS1QsNENBQVc7WUFDdkdFLHVEQUFzQixDQUFDa0IsR0FBR1csUUFBUUo7WUFDbEMsTUFBTVA7UUFDVjtRQUNBLE9BQU9QLE9BQU9QLEtBQUs7SUFDdkIsRUFBRTtBQUNLLE1BQU0wQixhQUFhLFlBQVksR0FBR0YsWUFBWTdCLHFEQUFvQixFQUFFO0FBQ3BFLE1BQU1nQyxhQUFhLENBQUM3QixPQUFTLENBQUNDLFFBQVFDLE9BQU9DO1FBQ2hELE1BQU1FLE1BQU1GLE9BQU87WUFBRSxHQUFHQSxJQUFJO1lBQUVLLE9BQU87UUFBTSxJQUFJO1lBQUVBLE9BQU87UUFBTTtRQUM5RCxNQUFNQyxTQUFTUixPQUFPUyxJQUFJLENBQUNDLEdBQUcsQ0FBQztZQUFFVDtZQUFPVSxRQUFRLEVBQUU7UUFBQyxHQUFHUDtRQUN0RCxJQUFJSSxrQkFBa0JJLFNBQVM7WUFDM0IsTUFBTSxJQUFJakIsb0RBQW1CO1FBQ2pDO1FBQ0EsT0FBT2EsT0FBT0csTUFBTSxDQUFDRyxNQUFNLEdBQ3JCO1lBQ0VlLFNBQVM7WUFDVEMsT0FBTyxJQUFLL0IsQ0FBQUEsUUFBUUgsaURBQWdCLEVBQUVZLE9BQU9HLE1BQU0sQ0FBQ00sR0FBRyxDQUFDLENBQUNDLE1BQVFyQixtREFBa0IsQ0FBQ3FCLEtBQUtkLEtBQUtULDRDQUFXO1FBQzdHLElBQ0U7WUFBRWtDLFNBQVM7WUFBTUcsTUFBTXhCLE9BQU9QLEtBQUs7UUFBQztJQUM5QyxFQUFFO0FBQ0ssTUFBTWdDLFlBQVksWUFBWSxHQUFHTCxXQUFXaEMscURBQW9CLEVBQUU7QUFDbEUsTUFBTXNDLGtCQUFrQixDQUFDbkMsT0FBUyxPQUFPQyxRQUFRQyxPQUFPQztRQUMzRCxNQUFNRSxNQUFNRixPQUFPRyxPQUFPQyxNQUFNLENBQUNKLE1BQU07WUFBRUssT0FBTztRQUFLLEtBQUs7WUFBRUEsT0FBTztRQUFLO1FBQ3hFLElBQUlDLFNBQVNSLE9BQU9TLElBQUksQ0FBQ0MsR0FBRyxDQUFDO1lBQUVUO1lBQU9VLFFBQVEsRUFBRTtRQUFDLEdBQUdQO1FBQ3BELElBQUlJLGtCQUFrQkksU0FDbEJKLFNBQVMsTUFBTUE7UUFDbkIsT0FBT0EsT0FBT0csTUFBTSxDQUFDRyxNQUFNLEdBQ3JCO1lBQ0VlLFNBQVM7WUFDVEMsT0FBTyxJQUFJL0IsS0FBS1MsT0FBT0csTUFBTSxDQUFDTSxHQUFHLENBQUMsQ0FBQ0MsTUFBUXJCLG1EQUFrQixDQUFDcUIsS0FBS2QsS0FBS1QsNENBQVc7UUFDdkYsSUFDRTtZQUFFa0MsU0FBUztZQUFNRyxNQUFNeEIsT0FBT1AsS0FBSztRQUFDO0lBQzlDLEVBQUU7QUFDSyxNQUFNa0MsaUJBQWlCLFlBQVksR0FBR0QsZ0JBQWdCdEMscURBQW9CLEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3BhcnNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4vY29yZS5qc1wiO1xuaW1wb3J0ICogYXMgZXJyb3JzIGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0ICogYXMgdXRpbCBmcm9tIFwiLi91dGlsLmpzXCI7XG5leHBvcnQgY29uc3QgX3BhcnNlID0gKF9FcnIpID0+IChzY2hlbWEsIHZhbHVlLCBfY3R4LCBfcGFyYW1zKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gX2N0eCA/IE9iamVjdC5hc3NpZ24oX2N0eCwgeyBhc3luYzogZmFsc2UgfSkgOiB7IGFzeW5jOiBmYWxzZSB9O1xuICAgIGNvbnN0IHJlc3VsdCA9IHNjaGVtYS5fem9kLnJ1bih7IHZhbHVlLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGUgPSBuZXcgKF9wYXJhbXM/LkVyciA/PyBfRXJyKShyZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSk7XG4gICAgICAgIHV0aWwuY2FwdHVyZVN0YWNrVHJhY2UoZSwgX3BhcmFtcz8uY2FsbGVlKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbn07XG5leHBvcnQgY29uc3QgcGFyc2UgPSAvKiBAX19QVVJFX18qLyBfcGFyc2UoZXJyb3JzLiRab2RSZWFsRXJyb3IpO1xuZXhwb3J0IGNvbnN0IF9wYXJzZUFzeW5jID0gKF9FcnIpID0+IGFzeW5jIChzY2hlbWEsIHZhbHVlLCBfY3R4LCBwYXJhbXMpID0+IHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8gT2JqZWN0LmFzc2lnbihfY3R4LCB7IGFzeW5jOiB0cnVlIH0pIDogeyBhc3luYzogdHJ1ZSB9O1xuICAgIGxldCByZXN1bHQgPSBzY2hlbWEuX3pvZC5ydW4oeyB2YWx1ZSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKVxuICAgICAgICByZXN1bHQgPSBhd2FpdCByZXN1bHQ7XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGUgPSBuZXcgKHBhcmFtcz8uRXJyID8/IF9FcnIpKHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpKTtcbiAgICAgICAgdXRpbC5jYXB0dXJlU3RhY2tUcmFjZShlLCBwYXJhbXM/LmNhbGxlZSk7XG4gICAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQudmFsdWU7XG59O1xuZXhwb3J0IGNvbnN0IHBhcnNlQXN5bmMgPSAvKiBAX19QVVJFX18qLyBfcGFyc2VBc3luYyhlcnJvcnMuJFpvZFJlYWxFcnJvcik7XG5leHBvcnQgY29uc3QgX3NhZmVQYXJzZSA9IChfRXJyKSA9PiAoc2NoZW1hLCB2YWx1ZSwgX2N0eCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IF9jdHggPyB7IC4uLl9jdHgsIGFzeW5jOiBmYWxzZSB9IDogeyBhc3luYzogZmFsc2UgfTtcbiAgICBjb25zdCByZXN1bHQgPSBzY2hlbWEuX3pvZC5ydW4oeyB2YWx1ZSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIHRocm93IG5ldyBjb3JlLiRab2RBc3luY0Vycm9yKCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQuaXNzdWVzLmxlbmd0aFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgZXJyb3I6IG5ldyAoX0VyciA/PyBlcnJvcnMuJFpvZEVycm9yKShyZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSksXG4gICAgICAgIH1cbiAgICAgICAgOiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IHJlc3VsdC52YWx1ZSB9O1xufTtcbmV4cG9ydCBjb25zdCBzYWZlUGFyc2UgPSAvKiBAX19QVVJFX18qLyBfc2FmZVBhcnNlKGVycm9ycy4kWm9kUmVhbEVycm9yKTtcbmV4cG9ydCBjb25zdCBfc2FmZVBhcnNlQXN5bmMgPSAoX0VycikgPT4gYXN5bmMgKHNjaGVtYSwgdmFsdWUsIF9jdHgpID0+IHtcbiAgICBjb25zdCBjdHggPSBfY3R4ID8gT2JqZWN0LmFzc2lnbihfY3R4LCB7IGFzeW5jOiB0cnVlIH0pIDogeyBhc3luYzogdHJ1ZSB9O1xuICAgIGxldCByZXN1bHQgPSBzY2hlbWEuX3pvZC5ydW4oeyB2YWx1ZSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKVxuICAgICAgICByZXN1bHQgPSBhd2FpdCByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdC5pc3N1ZXMubGVuZ3RoXG4gICAgICAgID8ge1xuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogbmV3IF9FcnIocmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSkpLFxuICAgICAgICB9XG4gICAgICAgIDogeyBzdWNjZXNzOiB0cnVlLCBkYXRhOiByZXN1bHQudmFsdWUgfTtcbn07XG5leHBvcnQgY29uc3Qgc2FmZVBhcnNlQXN5bmMgPSAvKiBAX19QVVJFX18qLyBfc2FmZVBhcnNlQXN5bmMoZXJyb3JzLiRab2RSZWFsRXJyb3IpO1xuIl0sIm5hbWVzIjpbImNvcmUiLCJlcnJvcnMiLCJ1dGlsIiwiX3BhcnNlIiwiX0VyciIsInNjaGVtYSIsInZhbHVlIiwiX2N0eCIsIl9wYXJhbXMiLCJjdHgiLCJPYmplY3QiLCJhc3NpZ24iLCJhc3luYyIsInJlc3VsdCIsIl96b2QiLCJydW4iLCJpc3N1ZXMiLCJQcm9taXNlIiwiJFpvZEFzeW5jRXJyb3IiLCJsZW5ndGgiLCJlIiwiRXJyIiwibWFwIiwiaXNzIiwiZmluYWxpemVJc3N1ZSIsImNvbmZpZyIsImNhcHR1cmVTdGFja1RyYWNlIiwiY2FsbGVlIiwicGFyc2UiLCIkWm9kUmVhbEVycm9yIiwiX3BhcnNlQXN5bmMiLCJwYXJhbXMiLCJwYXJzZUFzeW5jIiwiX3NhZmVQYXJzZSIsInN1Y2Nlc3MiLCJlcnJvciIsIiRab2RFcnJvciIsImRhdGEiLCJzYWZlUGFyc2UiLCJfc2FmZVBhcnNlQXN5bmMiLCJzYWZlUGFyc2VBc3luYyJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _emoji: () => (/* binding */ _emoji),\n/* harmony export */ base64: () => (/* binding */ base64),\n/* harmony export */ base64url: () => (/* binding */ base64url),\n/* harmony export */ bigint: () => (/* binding */ bigint),\n/* harmony export */ boolean: () => (/* binding */ boolean),\n/* harmony export */ browserEmail: () => (/* binding */ browserEmail),\n/* harmony export */ cidrv4: () => (/* binding */ cidrv4),\n/* harmony export */ cidrv6: () => (/* binding */ cidrv6),\n/* harmony export */ cuid: () => (/* binding */ cuid),\n/* harmony export */ cuid2: () => (/* binding */ cuid2),\n/* harmony export */ date: () => (/* binding */ date),\n/* harmony export */ datetime: () => (/* binding */ datetime),\n/* harmony export */ domain: () => (/* binding */ domain),\n/* harmony export */ duration: () => (/* binding */ duration),\n/* harmony export */ e164: () => (/* binding */ e164),\n/* harmony export */ email: () => (/* binding */ email),\n/* harmony export */ emoji: () => (/* binding */ emoji),\n/* harmony export */ extendedDuration: () => (/* binding */ extendedDuration),\n/* harmony export */ guid: () => (/* binding */ guid),\n/* harmony export */ hostname: () => (/* binding */ hostname),\n/* harmony export */ html5Email: () => (/* binding */ html5Email),\n/* harmony export */ integer: () => (/* binding */ integer),\n/* harmony export */ ipv4: () => (/* binding */ ipv4),\n/* harmony export */ ipv6: () => (/* binding */ ipv6),\n/* harmony export */ ksuid: () => (/* binding */ ksuid),\n/* harmony export */ lowercase: () => (/* binding */ lowercase),\n/* harmony export */ nanoid: () => (/* binding */ nanoid),\n/* harmony export */ \"null\": () => (/* binding */ _null),\n/* harmony export */ number: () => (/* binding */ number),\n/* harmony export */ rfc5322Email: () => (/* binding */ rfc5322Email),\n/* harmony export */ string: () => (/* binding */ string),\n/* harmony export */ time: () => (/* binding */ time),\n/* harmony export */ ulid: () => (/* binding */ ulid),\n/* harmony export */ undefined: () => (/* binding */ _undefined),\n/* harmony export */ unicodeEmail: () => (/* binding */ unicodeEmail),\n/* harmony export */ uppercase: () => (/* binding */ uppercase),\n/* harmony export */ uuid: () => (/* binding */ uuid),\n/* harmony export */ uuid4: () => (/* binding */ uuid4),\n/* harmony export */ uuid6: () => (/* binding */ uuid6),\n/* harmony export */ uuid7: () => (/* binding */ uuid7),\n/* harmony export */ xid: () => (/* binding */ xid)\n/* harmony export */ });\nconst cuid = /^[cC][^\\s-]{8,}$/;\nconst cuid2 = /^[0-9a-z]+$/;\nconst ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nconst xid = /^[0-9a-vA-V]{20}$/;\nconst ksuid = /^[A-Za-z0-9]{27}$/;\nconst nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */ const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */ const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */ const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */ const uuid = (version)=>{\n if (!version) return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000)$/;\n return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nconst uuid4 = /*@__PURE__*/ uuid(4);\nconst uuid6 = /*@__PURE__*/ uuid(6);\nconst uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */ const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */ const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */ const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */ const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nconst browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nfunction emoji() {\n return new RegExp(_emoji, \"u\");\n}\nconst ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})$/;\nconst cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nconst cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nconst base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp =\n// /^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)+([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$/;\nconst hostname = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nconst domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\nconst e164 = /^\\+(?:[0-9]){6,14}[0-9]$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nconst date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n const regex = typeof args.precision === \"number\" ? args.precision === -1 ? `${hhmm}` : args.precision === 0 ? `${hhmm}:[0-5]\\\\d` : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}` : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n return regex;\n}\nfunction time(args) {\n return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetime(args) {\n const time = timeSource({\n precision: args.precision\n });\n const opts = [\n \"Z\"\n ];\n if (args.local) opts.push(\"\");\n if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nconst string = (params)=>{\n const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n return new RegExp(`^${regex}$`);\n};\nconst bigint = /^\\d+n?$/;\nconst integer = /^\\d+$/;\nconst number = /^-?\\d+(?:\\.\\d+)?/i;\nconst boolean = /true|false/i;\nconst _null = /null/i;\n\nconst _undefined = /undefined/i;\n\n// regex for string with no uppercase letters\nconst lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nconst uppercase = /^[^a-z]*$/;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3JlZ2V4ZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxNQUFNQSxPQUFPLG1CQUFtQjtBQUNoQyxNQUFNQyxRQUFRLGNBQWM7QUFDNUIsTUFBTUMsT0FBTyx3Q0FBd0M7QUFDckQsTUFBTUMsTUFBTSxvQkFBb0I7QUFDaEMsTUFBTUMsUUFBUSxvQkFBb0I7QUFDbEMsTUFBTUMsU0FBUyxzQkFBc0I7QUFDNUMsaUlBQWlJLEdBQzFILE1BQU1DLFdBQVcsZ0dBQWdHO0FBQ3hILG1JQUFtSSxHQUM1SCxNQUFNQyxtQkFBbUIsMlNBQTJTO0FBQzNVLGlFQUFpRSxHQUMxRCxNQUFNQyxPQUFPLGtGQUFrRjtBQUN0Rzs7NEdBRTRHLEdBQ3JHLE1BQU1DLE9BQU8sQ0FBQ0M7SUFDakIsSUFBSSxDQUFDQSxTQUNELE9BQU87SUFDWCxPQUFPLElBQUlDLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRUQsUUFBUSx1REFBdUQsQ0FBQztBQUN6SCxFQUFFO0FBQ0ssTUFBTUUsUUFBUSxXQUFXLEdBQUdILEtBQUssR0FBRztBQUNwQyxNQUFNSSxRQUFRLFdBQVcsR0FBR0osS0FBSyxHQUFHO0FBQ3BDLE1BQU1LLFFBQVEsV0FBVyxHQUFHTCxLQUFLLEdBQUc7QUFDM0MsK0JBQStCLEdBQ3hCLE1BQU1NLFFBQVEsbUdBQW1HO0FBQ3hILGdLQUFnSyxHQUN6SixNQUFNQyxhQUFhLHVJQUF1STtBQUNqSyxtRUFBbUUsR0FDNUQsTUFBTUMsZUFBZSx5SkFBeUo7QUFDckwsK0ZBQStGLEdBQ3hGLE1BQU1DLGVBQWUsaUNBQWlDO0FBQ3RELE1BQU1DLGVBQWUsdUlBQXVJO0FBQ25LLG9GQUFvRjtBQUM3RSxNQUFNQyxTQUFTLENBQUMsb0RBQW9ELENBQUMsQ0FBQztBQUN0RSxTQUFTQztJQUNaLE9BQU8sSUFBSVYsT0FBT1MsUUFBUTtBQUM5QjtBQUNPLE1BQU1FLE9BQU8sc0hBQXNIO0FBQ25JLE1BQU1DLE9BQU8sK0ZBQStGO0FBQzVHLE1BQU1DLFNBQVMsMklBQTJJO0FBQzFKLE1BQU1DLFNBQVMsaUlBQWlJO0FBQ3ZKLGdHQUFnRztBQUN6RixNQUFNQyxTQUFTLDhFQUE4RTtBQUM3RixNQUFNQyxZQUFZLG1CQUFtQjtBQUM1Qyw2R0FBNkc7QUFDN0csa0NBQWtDO0FBQ2xDLG1IQUFtSDtBQUM1RyxNQUFNQyxXQUFXLG9DQUFvQztBQUNyRCxNQUFNQyxTQUFTLG1FQUFtRTtBQUN6RiwwRkFBMEY7QUFDbkYsTUFBTUMsT0FBTywyQkFBMkI7QUFDL0MsME5BQTBOO0FBQzFOLE1BQU1DLGFBQWEsQ0FBQyxtTkFBbU4sQ0FBQztBQUNqTyxNQUFNQyxPQUFPLFdBQVcsR0FBRyxJQUFJckIsT0FBTyxDQUFDLENBQUMsRUFBRW9CLFdBQVcsQ0FBQyxDQUFDLEVBQUU7QUFDaEUsU0FBU0UsV0FBV0MsSUFBSTtJQUNwQixNQUFNQyxPQUFPLENBQUMsMkJBQTJCLENBQUM7SUFDMUMsTUFBTUMsUUFBUSxPQUFPRixLQUFLRyxTQUFTLEtBQUssV0FDbENILEtBQUtHLFNBQVMsS0FBSyxDQUFDLElBQ2hCLEdBQUdGLE1BQU0sR0FDVEQsS0FBS0csU0FBUyxLQUFLLElBQ2YsR0FBR0YsS0FBSyxTQUFTLENBQUMsR0FDbEIsR0FBR0EsS0FBSyxnQkFBZ0IsRUFBRUQsS0FBS0csU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUNuRCxHQUFHRixLQUFLLDBCQUEwQixDQUFDO0lBQ3pDLE9BQU9DO0FBQ1g7QUFDTyxTQUFTRSxLQUFLSixJQUFJO0lBQ3JCLE9BQU8sSUFBSXZCLE9BQU8sQ0FBQyxDQUFDLEVBQUVzQixXQUFXQyxNQUFNLENBQUMsQ0FBQztBQUM3QztBQUNBLG1EQUFtRDtBQUM1QyxTQUFTSyxTQUFTTCxJQUFJO0lBQ3pCLE1BQU1JLE9BQU9MLFdBQVc7UUFBRUksV0FBV0gsS0FBS0csU0FBUztJQUFDO0lBQ3BELE1BQU1HLE9BQU87UUFBQztLQUFJO0lBQ2xCLElBQUlOLEtBQUtPLEtBQUssRUFDVkQsS0FBS0UsSUFBSSxDQUFDO0lBQ2QsSUFBSVIsS0FBS1MsTUFBTSxFQUNYSCxLQUFLRSxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztJQUNuQyxNQUFNRSxZQUFZLEdBQUdOLEtBQUssR0FBRyxFQUFFRSxLQUFLSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsT0FBTyxJQUFJbEMsT0FBTyxDQUFDLENBQUMsRUFBRW9CLFdBQVcsSUFBSSxFQUFFYSxVQUFVLEVBQUUsQ0FBQztBQUN4RDtBQUNPLE1BQU1FLFNBQVMsQ0FBQ0M7SUFDbkIsTUFBTVgsUUFBUVcsU0FBUyxDQUFDLFNBQVMsRUFBRUEsUUFBUUMsV0FBVyxFQUFFLENBQUMsRUFBRUQsUUFBUUUsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2pHLE9BQU8sSUFBSXRDLE9BQU8sQ0FBQyxDQUFDLEVBQUV5QixNQUFNLENBQUMsQ0FBQztBQUNsQyxFQUFFO0FBQ0ssTUFBTWMsU0FBUyxVQUFVO0FBQ3pCLE1BQU1DLFVBQVUsUUFBUTtBQUN4QixNQUFNQyxTQUFTLG9CQUFvQjtBQUNuQyxNQUFNQyxVQUFVLGNBQWM7QUFDckMsTUFBTUMsUUFBUTtBQUNXO0FBQ3pCLE1BQU1FLGFBQWE7QUFDZ0I7QUFDbkMsNkNBQTZDO0FBQ3RDLE1BQU1FLFlBQVksWUFBWTtBQUNyQyw2Q0FBNkM7QUFDdEMsTUFBTUMsWUFBWSxZQUFZIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvY29yZS9yZWdleGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBjdWlkID0gL15bY0NdW15cXHMtXXs4LH0kLztcbmV4cG9ydCBjb25zdCBjdWlkMiA9IC9eWzAtOWEtel0rJC87XG5leHBvcnQgY29uc3QgdWxpZCA9IC9eWzAtOUEtSEpLTU5QLVRWLVphLWhqa21ucC10di16XXsyNn0kLztcbmV4cG9ydCBjb25zdCB4aWQgPSAvXlswLTlhLXZBLVZdezIwfSQvO1xuZXhwb3J0IGNvbnN0IGtzdWlkID0gL15bQS1aYS16MC05XXsyN30kLztcbmV4cG9ydCBjb25zdCBuYW5vaWQgPSAvXlthLXpBLVowLTlfLV17MjF9JC87XG4vKiogSVNPIDg2MDEtMSBkdXJhdGlvbiByZWdleC4gRG9lcyBub3Qgc3VwcG9ydCB0aGUgODYwMS0yIGV4dGVuc2lvbnMgbGlrZSBuZWdhdGl2ZSBkdXJhdGlvbnMgb3IgZnJhY3Rpb25hbC9uZWdhdGl2ZSBjb21wb25lbnRzLiAqL1xuZXhwb3J0IGNvbnN0IGR1cmF0aW9uID0gL15QKD86KFxcZCtXKXwoPyEuKlcpKD89XFxkfFRcXGQpKFxcZCtZKT8oXFxkK00pPyhcXGQrRCk/KFQoPz1cXGQpKFxcZCtIKT8oXFxkK00pPyhcXGQrKFsuLF1cXGQrKT9TKT8pPykkLztcbi8qKiBJbXBsZW1lbnRzIElTTyA4NjAxLTIgZXh0ZW5zaW9ucyBsaWtlIGV4cGxpY2l0ICstIHByZWZpeGVzLCBtaXhpbmcgd2Vla3Mgd2l0aCBvdGhlciB1bml0cywgYW5kIGZyYWN0aW9uYWwvbmVnYXRpdmUgY29tcG9uZW50cy4gKi9cbmV4cG9ydCBjb25zdCBleHRlbmRlZER1cmF0aW9uID0gL15bLStdP1AoPyEkKSg/Oig/OlstK10/XFxkK1kpfCg/OlstK10/XFxkK1suLF1cXGQrWSQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86KD86Wy0rXT9cXGQrVyl8KD86Wy0rXT9cXGQrWy4sXVxcZCtXJCkpPyg/Oig/OlstK10/XFxkK0QpfCg/OlstK10/XFxkK1suLF1cXGQrRCQpKT8oPzpUKD89W1xcZCstXSkoPzooPzpbLStdP1xcZCtIKXwoPzpbLStdP1xcZCtbLixdXFxkK0gkKSk/KD86KD86Wy0rXT9cXGQrTSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtNJCkpPyg/OlstK10/XFxkKyg/OlsuLF1cXGQrKT9TKT8pPz8kLztcbi8qKiBBIHJlZ2V4IGZvciBhbnkgVVVJRC1saWtlIGlkZW50aWZpZXI6IDgtNC00LTQtMTIgaGV4IHBhdHRlcm4gKi9cbmV4cG9ydCBjb25zdCBndWlkID0gL14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9KSQvO1xuLyoqIFJldHVybnMgYSByZWdleCBmb3IgdmFsaWRhdGluZyBhbiBSRkMgNDEyMiBVVUlELlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uIE9wdGlvbmFsbHkgc3BlY2lmeSBhIHZlcnNpb24gMS04LiBJZiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZCwgYWxsIHZlcnNpb25zIGFyZSBzdXBwb3J0ZWQuICovXG5leHBvcnQgY29uc3QgdXVpZCA9ICh2ZXJzaW9uKSA9PiB7XG4gICAgaWYgKCF2ZXJzaW9uKVxuICAgICAgICByZXR1cm4gL14oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzEtOF1bMC05YS1mQS1GXXszfS1bODlhYkFCXVswLTlhLWZBLUZdezN9LVswLTlhLWZBLUZdezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDApJC87XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4oWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tJHt2ZXJzaW9ufVswLTlhLWZBLUZdezN9LVs4OWFiQUJdWzAtOWEtZkEtRl17M30tWzAtOWEtZkEtRl17MTJ9KSRgKTtcbn07XG5leHBvcnQgY29uc3QgdXVpZDQgPSAvKkBfX1BVUkVfXyovIHV1aWQoNCk7XG5leHBvcnQgY29uc3QgdXVpZDYgPSAvKkBfX1BVUkVfXyovIHV1aWQoNik7XG5leHBvcnQgY29uc3QgdXVpZDcgPSAvKkBfX1BVUkVfXyovIHV1aWQoNyk7XG4vKiogUHJhY3RpY2FsIGVtYWlsIHZhbGlkYXRpb24gKi9cbmV4cG9ydCBjb25zdCBlbWFpbCA9IC9eKD8hXFwuKSg/IS4qXFwuXFwuKShbQS1aYS16MC05XycrXFwtXFwuXSopW0EtWmEtejAtOV8rLV1AKFtBLVphLXowLTldW0EtWmEtejAtOVxcLV0qXFwuKStbQS1aYS16XXsyLH0kLztcbi8qKiBFcXVpdmFsZW50IHRvIHRoZSBIVE1MNSBpbnB1dFt0eXBlPWVtYWlsXSB2YWxpZGF0aW9uIGltcGxlbWVudGVkIGJ5IGJyb3dzZXJzLiBTb3VyY2U6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dC9lbWFpbCAqL1xuZXhwb3J0IGNvbnN0IGh0bWw1RW1haWwgPSAvXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC87XG4vKiogVGhlIGNsYXNzaWMgZW1haWxyZWdleC5jb20gcmVnZXggZm9yIFJGQyA1MzIyLWNvbXBsaWFudCBlbWFpbHMgKi9cbmV4cG9ydCBjb25zdCByZmM1MzIyRW1haWwgPSAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcbi8qKiBBIGxvb3NlIHJlZ2V4IHRoYXQgYWxsb3dzIFVuaWNvZGUgY2hhcmFjdGVycywgZW5mb3JjZXMgbGVuZ3RoIGxpbWl0cywgYW5kIHRoYXQncyBhYm91dCBpdC4gKi9cbmV4cG9ydCBjb25zdCB1bmljb2RlRW1haWwgPSAvXlteXFxzQFwiXXsxLDY0fUBbXlxcc0BdezEsMjU1fSQvdTtcbmV4cG9ydCBjb25zdCBicm93c2VyRW1haWwgPSAvXlthLXpBLVowLTkuISMkJSYnKisvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC87XG4vLyBmcm9tIGh0dHBzOi8vdGhla2V2aW5zY290dC5jb20vZW1vamlzLWluLWphdmFzY3JpcHQvI3dyaXRpbmctYS1yZWd1bGFyLWV4cHJlc3Npb25cbmV4cG9ydCBjb25zdCBfZW1vamkgPSBgXihcXFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxcXFxwe0Vtb2ppX0NvbXBvbmVudH0pKyRgO1xuZXhwb3J0IGZ1bmN0aW9uIGVtb2ppKCkge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKF9lbW9qaSwgXCJ1XCIpO1xufVxuZXhwb3J0IGNvbnN0IGlwdjQgPSAvXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKSQvO1xuZXhwb3J0IGNvbnN0IGlwdjYgPSAvXigoWzAtOWEtZkEtRl17MSw0fTopezd9WzAtOWEtZkEtRl17MSw0fXw6OnwoWzAtOWEtZkEtRl17MSw0fSk/OjooWzAtOWEtZkEtRl17MSw0fTo/KXswLDZ9KSQvO1xuZXhwb3J0IGNvbnN0IGNpZHJ2NCA9IC9eKCgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSgyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwvKFswLTldfFsxLTJdWzAtOV18M1swLTJdKSQvO1xuZXhwb3J0IGNvbnN0IGNpZHJ2NiA9IC9eKChbMC05YS1mQS1GXXsxLDR9Oil7N31bMC05YS1mQS1GXXsxLDR9fDo6fChbMC05YS1mQS1GXXsxLDR9KT86OihbMC05YS1mQS1GXXsxLDR9Oj8pezAsNn0pXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLztcbi8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzc4NjAzOTIvZGV0ZXJtaW5lLWlmLXN0cmluZy1pcy1pbi1iYXNlNjQtdXNpbmctamF2YXNjcmlwdFxuZXhwb3J0IGNvbnN0IGJhc2U2NCA9IC9eJHxeKD86WzAtOWEtekEtWisvXXs0fSkqKD86KD86WzAtOWEtekEtWisvXXsyfT09KXwoPzpbMC05YS16QS1aKy9dezN9PSkpPyQvO1xuZXhwb3J0IGNvbnN0IGJhc2U2NHVybCA9IC9eW0EtWmEtejAtOV8tXSokLztcbi8vIGJhc2VkIG9uIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNjE3OS9yZWd1bGFyLWV4cHJlc3Npb24tdG8tbWF0Y2gtZG5zLWhvc3RuYW1lLW9yLWlwLWFkZHJlc3Ncbi8vIGV4cG9ydCBjb25zdCBob3N0bmFtZTogUmVnRXhwID1cbi8vICAgL14oKFthLXpBLVowLTldfFthLXpBLVowLTldW2EtekEtWjAtOVxcLV0qW2EtekEtWjAtOV0pXFwuKSsoW0EtWmEtejAtOV18W0EtWmEtejAtOV1bQS1aYS16MC05XFwtXSpbQS1aYS16MC05XSkkLztcbmV4cG9ydCBjb25zdCBob3N0bmFtZSA9IC9eKFthLXpBLVowLTktXStcXC4pKlthLXpBLVowLTktXSskLztcbmV4cG9ydCBjb25zdCBkb21haW4gPSAvXihbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT9cXC4pK1thLXpBLVpdezIsfSQvO1xuLy8gaHR0cHM6Ly9ibG9nLnN0ZXZlbmxldml0aGFuLmNvbS9hcmNoaXZlcy92YWxpZGF0ZS1waG9uZS1udW1iZXIjcjQtMyAocmVnZXggc2FucyBzcGFjZXMpXG5leHBvcnQgY29uc3QgZTE2NCA9IC9eXFwrKD86WzAtOV0pezYsMTR9WzAtOV0kLztcbi8vIGNvbnN0IGRhdGVTb3VyY2UgPSBgKChcXFxcZFxcXFxkWzI0NjhdWzA0OF18XFxcXGRcXFxcZFsxMzU3OV1bMjZdfFxcXFxkXFxcXGQwWzQ4XXxbMDI0NjhdWzA0OF0wMHxbMTM1NzldWzI2XTAwKS0wMi0yOXxcXFxcZHs0fS0oKDBbMTM1NzhdfDFbMDJdKS0oMFsxLTldfFsxMl1cXFxcZHwzWzAxXSl8KDBbNDY5XXwxMSktKDBbMS05XXxbMTJdXFxcXGR8MzApfCgwMiktKDBbMS05XXwxXFxcXGR8MlswLThdKSkpYDtcbmNvbnN0IGRhdGVTb3VyY2UgPSBgKD86KD86XFxcXGRcXFxcZFsyNDY4XVswNDhdfFxcXFxkXFxcXGRbMTM1NzldWzI2XXxcXFxcZFxcXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxcXGR7NH0tKD86KD86MFsxMzU3OF18MVswMl0pLSg/OjBbMS05XXxbMTJdXFxcXGR8M1swMV0pfCg/OjBbNDY5XXwxMSktKD86MFsxLTldfFsxMl1cXFxcZHwzMCl8KD86MDIpLSg/OjBbMS05XXwxXFxcXGR8MlswLThdKSkpYDtcbmV4cG9ydCBjb25zdCBkYXRlID0gLypAX19QVVJFX18qLyBuZXcgUmVnRXhwKGBeJHtkYXRlU291cmNlfSRgKTtcbmZ1bmN0aW9uIHRpbWVTb3VyY2UoYXJncykge1xuICAgIGNvbnN0IGhobW0gPSBgKD86WzAxXVxcXFxkfDJbMC0zXSk6WzAtNV1cXFxcZGA7XG4gICAgY29uc3QgcmVnZXggPSB0eXBlb2YgYXJncy5wcmVjaXNpb24gPT09IFwibnVtYmVyXCJcbiAgICAgICAgPyBhcmdzLnByZWNpc2lvbiA9PT0gLTFcbiAgICAgICAgICAgID8gYCR7aGhtbX1gXG4gICAgICAgICAgICA6IGFyZ3MucHJlY2lzaW9uID09PSAwXG4gICAgICAgICAgICAgICAgPyBgJHtoaG1tfTpbMC01XVxcXFxkYFxuICAgICAgICAgICAgICAgIDogYCR7aGhtbX06WzAtNV1cXFxcZFxcXFwuXFxcXGR7JHthcmdzLnByZWNpc2lvbn19YFxuICAgICAgICA6IGAke2hobW19KD86OlswLTVdXFxcXGQoPzpcXFxcLlxcXFxkKyk/KT9gO1xuICAgIHJldHVybiByZWdleDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0aW1lKGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7dGltZVNvdXJjZShhcmdzKX0kYCk7XG59XG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzMxNDMyMzFcbmV4cG9ydCBmdW5jdGlvbiBkYXRldGltZShhcmdzKSB7XG4gICAgY29uc3QgdGltZSA9IHRpbWVTb3VyY2UoeyBwcmVjaXNpb246IGFyZ3MucHJlY2lzaW9uIH0pO1xuICAgIGNvbnN0IG9wdHMgPSBbXCJaXCJdO1xuICAgIGlmIChhcmdzLmxvY2FsKVxuICAgICAgICBvcHRzLnB1c2goXCJcIik7XG4gICAgaWYgKGFyZ3Mub2Zmc2V0KVxuICAgICAgICBvcHRzLnB1c2goYChbKy1dXFxcXGR7Mn06XFxcXGR7Mn0pYCk7XG4gICAgY29uc3QgdGltZVJlZ2V4ID0gYCR7dGltZX0oPzoke29wdHMuam9pbihcInxcIil9KWA7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4ke2RhdGVTb3VyY2V9VCg/OiR7dGltZVJlZ2V4fSkkYCk7XG59XG5leHBvcnQgY29uc3Qgc3RyaW5nID0gKHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gcGFyYW1zID8gYFtcXFxcc1xcXFxTXXske3BhcmFtcz8ubWluaW11bSA/PyAwfSwke3BhcmFtcz8ubWF4aW11bSA/PyBcIlwifX1gIDogYFtcXFxcc1xcXFxTXSpgO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeJHtyZWdleH0kYCk7XG59O1xuZXhwb3J0IGNvbnN0IGJpZ2ludCA9IC9eXFxkK24/JC87XG5leHBvcnQgY29uc3QgaW50ZWdlciA9IC9eXFxkKyQvO1xuZXhwb3J0IGNvbnN0IG51bWJlciA9IC9eLT9cXGQrKD86XFwuXFxkKyk/L2k7XG5leHBvcnQgY29uc3QgYm9vbGVhbiA9IC90cnVlfGZhbHNlL2k7XG5jb25zdCBfbnVsbCA9IC9udWxsL2k7XG5leHBvcnQgeyBfbnVsbCBhcyBudWxsIH07XG5jb25zdCBfdW5kZWZpbmVkID0gL3VuZGVmaW5lZC9pO1xuZXhwb3J0IHsgX3VuZGVmaW5lZCBhcyB1bmRlZmluZWQgfTtcbi8vIHJlZ2V4IGZvciBzdHJpbmcgd2l0aCBubyB1cHBlcmNhc2UgbGV0dGVyc1xuZXhwb3J0IGNvbnN0IGxvd2VyY2FzZSA9IC9eW15BLVpdKiQvO1xuLy8gcmVnZXggZm9yIHN0cmluZyB3aXRoIG5vIGxvd2VyY2FzZSBsZXR0ZXJzXG5leHBvcnQgY29uc3QgdXBwZXJjYXNlID0gL15bXmEtel0qJC87XG4iXSwibmFtZXMiOlsiY3VpZCIsImN1aWQyIiwidWxpZCIsInhpZCIsImtzdWlkIiwibmFub2lkIiwiZHVyYXRpb24iLCJleHRlbmRlZER1cmF0aW9uIiwiZ3VpZCIsInV1aWQiLCJ2ZXJzaW9uIiwiUmVnRXhwIiwidXVpZDQiLCJ1dWlkNiIsInV1aWQ3IiwiZW1haWwiLCJodG1sNUVtYWlsIiwicmZjNTMyMkVtYWlsIiwidW5pY29kZUVtYWlsIiwiYnJvd3NlckVtYWlsIiwiX2Vtb2ppIiwiZW1vamkiLCJpcHY0IiwiaXB2NiIsImNpZHJ2NCIsImNpZHJ2NiIsImJhc2U2NCIsImJhc2U2NHVybCIsImhvc3RuYW1lIiwiZG9tYWluIiwiZTE2NCIsImRhdGVTb3VyY2UiLCJkYXRlIiwidGltZVNvdXJjZSIsImFyZ3MiLCJoaG1tIiwicmVnZXgiLCJwcmVjaXNpb24iLCJ0aW1lIiwiZGF0ZXRpbWUiLCJvcHRzIiwibG9jYWwiLCJwdXNoIiwib2Zmc2V0IiwidGltZVJlZ2V4Iiwiam9pbiIsInN0cmluZyIsInBhcmFtcyIsIm1pbmltdW0iLCJtYXhpbXVtIiwiYmlnaW50IiwiaW50ZWdlciIsIm51bWJlciIsImJvb2xlYW4iLCJfbnVsbCIsIm51bGwiLCJfdW5kZWZpbmVkIiwidW5kZWZpbmVkIiwibG93ZXJjYXNlIiwidXBwZXJjYXNlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js":
|
||
/*!*******************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js ***!
|
||
\*******************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodRegistry: () => (/* binding */ $ZodRegistry),\n/* harmony export */ $input: () => (/* binding */ $input),\n/* harmony export */ $output: () => (/* binding */ $output),\n/* harmony export */ globalRegistry: () => (/* binding */ globalRegistry),\n/* harmony export */ registry: () => (/* binding */ registry)\n/* harmony export */ });\nconst $output = Symbol(\"ZodOutput\");\nconst $input = Symbol(\"ZodInput\");\nclass $ZodRegistry {\n constructor(){\n this._map = new Map();\n this._idmap = new Map();\n }\n add(schema, ..._meta) {\n const meta = _meta[0];\n this._map.set(schema, meta);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n if (this._idmap.has(meta.id)) {\n throw new Error(`ID ${meta.id} already exists in the registry`);\n }\n this._idmap.set(meta.id, schema);\n }\n return this;\n }\n clear() {\n this._map = new Map();\n this._idmap = new Map();\n return this;\n }\n remove(schema) {\n const meta = this._map.get(schema);\n if (meta && typeof meta === \"object\" && \"id\" in meta) {\n this._idmap.delete(meta.id);\n }\n this._map.delete(schema);\n return this;\n }\n get(schema) {\n // return this._map.get(schema) as any;\n // inherit metadata\n const p = schema._zod.parent;\n if (p) {\n const pm = {\n ...this.get(p) ?? {}\n };\n delete pm.id; // do not inherit id\n return {\n ...pm,\n ...this._map.get(schema)\n };\n }\n return this._map.get(schema);\n }\n has(schema) {\n return this._map.has(schema);\n }\n}\n// registries\nfunction registry() {\n return new $ZodRegistry();\n}\nconst globalRegistry = /*@__PURE__*/ registry();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3JlZ2lzdHJpZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBTyxNQUFNQSxVQUFVQyxPQUFPLGFBQWE7QUFDcEMsTUFBTUMsU0FBU0QsT0FBTyxZQUFZO0FBQ2xDLE1BQU1FO0lBQ1QsYUFBYztRQUNWLElBQUksQ0FBQ0MsSUFBSSxHQUFHLElBQUlDO1FBQ2hCLElBQUksQ0FBQ0MsTUFBTSxHQUFHLElBQUlEO0lBQ3RCO0lBQ0FFLElBQUlDLE1BQU0sRUFBRSxHQUFHQyxLQUFLLEVBQUU7UUFDbEIsTUFBTUMsT0FBT0QsS0FBSyxDQUFDLEVBQUU7UUFDckIsSUFBSSxDQUFDTCxJQUFJLENBQUNPLEdBQUcsQ0FBQ0gsUUFBUUU7UUFDdEIsSUFBSUEsUUFBUSxPQUFPQSxTQUFTLFlBQVksUUFBUUEsTUFBTTtZQUNsRCxJQUFJLElBQUksQ0FBQ0osTUFBTSxDQUFDTSxHQUFHLENBQUNGLEtBQUtHLEVBQUUsR0FBRztnQkFDMUIsTUFBTSxJQUFJQyxNQUFNLENBQUMsR0FBRyxFQUFFSixLQUFLRyxFQUFFLENBQUMsK0JBQStCLENBQUM7WUFDbEU7WUFDQSxJQUFJLENBQUNQLE1BQU0sQ0FBQ0ssR0FBRyxDQUFDRCxLQUFLRyxFQUFFLEVBQUVMO1FBQzdCO1FBQ0EsT0FBTyxJQUFJO0lBQ2Y7SUFDQU8sUUFBUTtRQUNKLElBQUksQ0FBQ1gsSUFBSSxHQUFHLElBQUlDO1FBQ2hCLElBQUksQ0FBQ0MsTUFBTSxHQUFHLElBQUlEO1FBQ2xCLE9BQU8sSUFBSTtJQUNmO0lBQ0FXLE9BQU9SLE1BQU0sRUFBRTtRQUNYLE1BQU1FLE9BQU8sSUFBSSxDQUFDTixJQUFJLENBQUNhLEdBQUcsQ0FBQ1Q7UUFDM0IsSUFBSUUsUUFBUSxPQUFPQSxTQUFTLFlBQVksUUFBUUEsTUFBTTtZQUNsRCxJQUFJLENBQUNKLE1BQU0sQ0FBQ1ksTUFBTSxDQUFDUixLQUFLRyxFQUFFO1FBQzlCO1FBQ0EsSUFBSSxDQUFDVCxJQUFJLENBQUNjLE1BQU0sQ0FBQ1Y7UUFDakIsT0FBTyxJQUFJO0lBQ2Y7SUFDQVMsSUFBSVQsTUFBTSxFQUFFO1FBQ1IsdUNBQXVDO1FBQ3ZDLG1CQUFtQjtRQUNuQixNQUFNVyxJQUFJWCxPQUFPWSxJQUFJLENBQUNDLE1BQU07UUFDNUIsSUFBSUYsR0FBRztZQUNILE1BQU1HLEtBQUs7Z0JBQUUsR0FBSSxJQUFJLENBQUNMLEdBQUcsQ0FBQ0UsTUFBTSxDQUFDLENBQUM7WUFBRTtZQUNwQyxPQUFPRyxHQUFHVCxFQUFFLEVBQUUsb0JBQW9CO1lBQ2xDLE9BQU87Z0JBQUUsR0FBR1MsRUFBRTtnQkFBRSxHQUFHLElBQUksQ0FBQ2xCLElBQUksQ0FBQ2EsR0FBRyxDQUFDVCxPQUFPO1lBQUM7UUFDN0M7UUFDQSxPQUFPLElBQUksQ0FBQ0osSUFBSSxDQUFDYSxHQUFHLENBQUNUO0lBQ3pCO0lBQ0FJLElBQUlKLE1BQU0sRUFBRTtRQUNSLE9BQU8sSUFBSSxDQUFDSixJQUFJLENBQUNRLEdBQUcsQ0FBQ0o7SUFDekI7QUFDSjtBQUNBLGFBQWE7QUFDTixTQUFTZTtJQUNaLE9BQU8sSUFBSXBCO0FBQ2Y7QUFDTyxNQUFNcUIsaUJBQWlCLFdBQVcsR0FBR0QsV0FBVyIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvcmVnaXN0cmllcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgJG91dHB1dCA9IFN5bWJvbChcIlpvZE91dHB1dFwiKTtcbmV4cG9ydCBjb25zdCAkaW5wdXQgPSBTeW1ib2woXCJab2RJbnB1dFwiKTtcbmV4cG9ydCBjbGFzcyAkWm9kUmVnaXN0cnkge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9tYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuX2lkbWFwID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBhZGQoc2NoZW1hLCAuLi5fbWV0YSkge1xuICAgICAgICBjb25zdCBtZXRhID0gX21ldGFbMF07XG4gICAgICAgIHRoaXMuX21hcC5zZXQoc2NoZW1hLCBtZXRhKTtcbiAgICAgICAgaWYgKG1ldGEgJiYgdHlwZW9mIG1ldGEgPT09IFwib2JqZWN0XCIgJiYgXCJpZFwiIGluIG1ldGEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pZG1hcC5oYXMobWV0YS5pZCkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYElEICR7bWV0YS5pZH0gYWxyZWFkeSBleGlzdHMgaW4gdGhlIHJlZ2lzdHJ5YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9pZG1hcC5zZXQobWV0YS5pZCwgc2NoZW1hKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5faWRtYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICByZW1vdmUoc2NoZW1hKSB7XG4gICAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLl9tYXAuZ2V0KHNjaGVtYSk7XG4gICAgICAgIGlmIChtZXRhICYmIHR5cGVvZiBtZXRhID09PSBcIm9iamVjdFwiICYmIFwiaWRcIiBpbiBtZXRhKSB7XG4gICAgICAgICAgICB0aGlzLl9pZG1hcC5kZWxldGUobWV0YS5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbWFwLmRlbGV0ZShzY2hlbWEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZ2V0KHNjaGVtYSkge1xuICAgICAgICAvLyByZXR1cm4gdGhpcy5fbWFwLmdldChzY2hlbWEpIGFzIGFueTtcbiAgICAgICAgLy8gaW5oZXJpdCBtZXRhZGF0YVxuICAgICAgICBjb25zdCBwID0gc2NoZW1hLl96b2QucGFyZW50O1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgY29uc3QgcG0gPSB7IC4uLih0aGlzLmdldChwKSA/PyB7fSkgfTtcbiAgICAgICAgICAgIGRlbGV0ZSBwbS5pZDsgLy8gZG8gbm90IGluaGVyaXQgaWRcbiAgICAgICAgICAgIHJldHVybiB7IC4uLnBtLCAuLi50aGlzLl9tYXAuZ2V0KHNjaGVtYSkgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fbWFwLmdldChzY2hlbWEpO1xuICAgIH1cbiAgICBoYXMoc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXAuaGFzKHNjaGVtYSk7XG4gICAgfVxufVxuLy8gcmVnaXN0cmllc1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdHJ5KCkge1xuICAgIHJldHVybiBuZXcgJFpvZFJlZ2lzdHJ5KCk7XG59XG5leHBvcnQgY29uc3QgZ2xvYmFsUmVnaXN0cnkgPSAvKkBfX1BVUkVfXyovIHJlZ2lzdHJ5KCk7XG4iXSwibmFtZXMiOlsiJG91dHB1dCIsIlN5bWJvbCIsIiRpbnB1dCIsIiRab2RSZWdpc3RyeSIsIl9tYXAiLCJNYXAiLCJfaWRtYXAiLCJhZGQiLCJzY2hlbWEiLCJfbWV0YSIsIm1ldGEiLCJzZXQiLCJoYXMiLCJpZCIsIkVycm9yIiwiY2xlYXIiLCJyZW1vdmUiLCJnZXQiLCJkZWxldGUiLCJwIiwiX3pvZCIsInBhcmVudCIsInBtIiwicmVnaXN0cnkiLCJnbG9iYWxSZWdpc3RyeSJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ $ZodAny: () => (/* binding */ $ZodAny),\n/* harmony export */ $ZodArray: () => (/* binding */ $ZodArray),\n/* harmony export */ $ZodBase64: () => (/* binding */ $ZodBase64),\n/* harmony export */ $ZodBase64URL: () => (/* binding */ $ZodBase64URL),\n/* harmony export */ $ZodBigInt: () => (/* binding */ $ZodBigInt),\n/* harmony export */ $ZodBigIntFormat: () => (/* binding */ $ZodBigIntFormat),\n/* harmony export */ $ZodBoolean: () => (/* binding */ $ZodBoolean),\n/* harmony export */ $ZodCIDRv4: () => (/* binding */ $ZodCIDRv4),\n/* harmony export */ $ZodCIDRv6: () => (/* binding */ $ZodCIDRv6),\n/* harmony export */ $ZodCUID: () => (/* binding */ $ZodCUID),\n/* harmony export */ $ZodCUID2: () => (/* binding */ $ZodCUID2),\n/* harmony export */ $ZodCatch: () => (/* binding */ $ZodCatch),\n/* harmony export */ $ZodCustom: () => (/* binding */ $ZodCustom),\n/* harmony export */ $ZodCustomStringFormat: () => (/* binding */ $ZodCustomStringFormat),\n/* harmony export */ $ZodDate: () => (/* binding */ $ZodDate),\n/* harmony export */ $ZodDefault: () => (/* binding */ $ZodDefault),\n/* harmony export */ $ZodDiscriminatedUnion: () => (/* binding */ $ZodDiscriminatedUnion),\n/* harmony export */ $ZodE164: () => (/* binding */ $ZodE164),\n/* harmony export */ $ZodEmail: () => (/* binding */ $ZodEmail),\n/* harmony export */ $ZodEmoji: () => (/* binding */ $ZodEmoji),\n/* harmony export */ $ZodEnum: () => (/* binding */ $ZodEnum),\n/* harmony export */ $ZodFile: () => (/* binding */ $ZodFile),\n/* harmony export */ $ZodGUID: () => (/* binding */ $ZodGUID),\n/* harmony export */ $ZodIPv4: () => (/* binding */ $ZodIPv4),\n/* harmony export */ $ZodIPv6: () => (/* binding */ $ZodIPv6),\n/* harmony export */ $ZodISODate: () => (/* binding */ $ZodISODate),\n/* harmony export */ $ZodISODateTime: () => (/* binding */ $ZodISODateTime),\n/* harmony export */ $ZodISODuration: () => (/* binding */ $ZodISODuration),\n/* harmony export */ $ZodISOTime: () => (/* binding */ $ZodISOTime),\n/* harmony export */ $ZodIntersection: () => (/* binding */ $ZodIntersection),\n/* harmony export */ $ZodJWT: () => (/* binding */ $ZodJWT),\n/* harmony export */ $ZodKSUID: () => (/* binding */ $ZodKSUID),\n/* harmony export */ $ZodLazy: () => (/* binding */ $ZodLazy),\n/* harmony export */ $ZodLiteral: () => (/* binding */ $ZodLiteral),\n/* harmony export */ $ZodMap: () => (/* binding */ $ZodMap),\n/* harmony export */ $ZodNaN: () => (/* binding */ $ZodNaN),\n/* harmony export */ $ZodNanoID: () => (/* binding */ $ZodNanoID),\n/* harmony export */ $ZodNever: () => (/* binding */ $ZodNever),\n/* harmony export */ $ZodNonOptional: () => (/* binding */ $ZodNonOptional),\n/* harmony export */ $ZodNull: () => (/* binding */ $ZodNull),\n/* harmony export */ $ZodNullable: () => (/* binding */ $ZodNullable),\n/* harmony export */ $ZodNumber: () => (/* binding */ $ZodNumber),\n/* harmony export */ $ZodNumberFormat: () => (/* binding */ $ZodNumberFormat),\n/* harmony export */ $ZodObject: () => (/* binding */ $ZodObject),\n/* harmony export */ $ZodOptional: () => (/* binding */ $ZodOptional),\n/* harmony export */ $ZodPipe: () => (/* binding */ $ZodPipe),\n/* harmony export */ $ZodPrefault: () => (/* binding */ $ZodPrefault),\n/* harmony export */ $ZodPromise: () => (/* binding */ $ZodPromise),\n/* harmony export */ $ZodReadonly: () => (/* binding */ $ZodReadonly),\n/* harmony export */ $ZodRecord: () => (/* binding */ $ZodRecord),\n/* harmony export */ $ZodSet: () => (/* binding */ $ZodSet),\n/* harmony export */ $ZodString: () => (/* binding */ $ZodString),\n/* harmony export */ $ZodStringFormat: () => (/* binding */ $ZodStringFormat),\n/* harmony export */ $ZodSuccess: () => (/* binding */ $ZodSuccess),\n/* harmony export */ $ZodSymbol: () => (/* binding */ $ZodSymbol),\n/* harmony export */ $ZodTemplateLiteral: () => (/* binding */ $ZodTemplateLiteral),\n/* harmony export */ $ZodTransform: () => (/* binding */ $ZodTransform),\n/* harmony export */ $ZodTuple: () => (/* binding */ $ZodTuple),\n/* harmony export */ $ZodType: () => (/* binding */ $ZodType),\n/* harmony export */ $ZodULID: () => (/* binding */ $ZodULID),\n/* harmony export */ $ZodURL: () => (/* binding */ $ZodURL),\n/* harmony export */ $ZodUUID: () => (/* binding */ $ZodUUID),\n/* harmony export */ $ZodUndefined: () => (/* binding */ $ZodUndefined),\n/* harmony export */ $ZodUnion: () => (/* binding */ $ZodUnion),\n/* harmony export */ $ZodUnknown: () => (/* binding */ $ZodUnknown),\n/* harmony export */ $ZodVoid: () => (/* binding */ $ZodVoid),\n/* harmony export */ $ZodXID: () => (/* binding */ $ZodXID),\n/* harmony export */ clone: () => (/* reexport safe */ _util_js__WEBPACK_IMPORTED_MODULE_2__.clone),\n/* harmony export */ isValidBase64: () => (/* binding */ isValidBase64),\n/* harmony export */ isValidBase64URL: () => (/* binding */ isValidBase64URL),\n/* harmony export */ isValidJWT: () => (/* binding */ isValidJWT)\n/* harmony export */ });\n/* harmony import */ var _checks_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./checks.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js\");\n/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./core.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _doc_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./doc.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/doc.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parse.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js\");\n/* harmony import */ var _regexes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./regexes.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/regexes.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js\");\n/* harmony import */ var _versions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./versions.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/versions.js\");\n\n\n\n\n\n\n\nconst $ZodType = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodType\", (inst, def)=>{\n var _a;\n inst ?? (inst = {});\n inst._zod.def = def; // set _def property\n inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n inst._zod.version = _versions_js__WEBPACK_IMPORTED_MODULE_1__.version;\n const checks = [\n ...inst._zod.def.checks ?? []\n ];\n // if inst is itself a checks.$ZodCheck, run it as a check\n if (inst._zod.traits.has(\"$ZodCheck\")) {\n checks.unshift(inst);\n }\n //\n for (const ch of checks){\n for (const fn of ch._zod.onattach){\n fn(inst);\n }\n }\n if (checks.length === 0) {\n // deferred initializer\n // inst._zod.parse is not yet defined\n (_a = inst._zod).deferred ?? (_a.deferred = []);\n inst._zod.deferred?.push(()=>{\n inst._zod.run = inst._zod.parse;\n });\n } else {\n const runChecks = (payload, checks, ctx)=>{\n let isAborted = _util_js__WEBPACK_IMPORTED_MODULE_2__.aborted(payload);\n let asyncResult;\n for (const ch of checks){\n if (ch._zod.def.when) {\n const shouldRun = ch._zod.def.when(payload);\n if (!shouldRun) continue;\n } else if (isAborted) {\n continue;\n }\n const currLen = payload.issues.length;\n const _ = ch._zod.check(payload);\n if (_ instanceof Promise && ctx?.async === false) {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_0__.$ZodAsyncError();\n }\n if (asyncResult || _ instanceof Promise) {\n asyncResult = (asyncResult ?? Promise.resolve()).then(async ()=>{\n await _;\n const nextLen = payload.issues.length;\n if (nextLen === currLen) return;\n if (!isAborted) isAborted = _util_js__WEBPACK_IMPORTED_MODULE_2__.aborted(payload, currLen);\n });\n } else {\n const nextLen = payload.issues.length;\n if (nextLen === currLen) continue;\n if (!isAborted) isAborted = _util_js__WEBPACK_IMPORTED_MODULE_2__.aborted(payload, currLen);\n }\n }\n if (asyncResult) {\n return asyncResult.then(()=>{\n return payload;\n });\n }\n return payload;\n };\n inst._zod.run = (payload, ctx)=>{\n const result = inst._zod.parse(payload, ctx);\n if (result instanceof Promise) {\n if (ctx.async === false) throw new _core_js__WEBPACK_IMPORTED_MODULE_0__.$ZodAsyncError();\n return result.then((result)=>runChecks(result, checks, ctx));\n }\n return runChecks(result, checks, ctx);\n };\n }\n inst[\"~standard\"] = {\n validate: (value)=>{\n try {\n const r = (0,_parse_js__WEBPACK_IMPORTED_MODULE_3__.safeParse)(inst, value);\n return r.success ? {\n value: r.data\n } : {\n issues: r.error?.issues\n };\n } catch (_) {\n return (0,_parse_js__WEBPACK_IMPORTED_MODULE_3__.safeParseAsync)(inst, value).then((r)=>r.success ? {\n value: r.data\n } : {\n issues: r.error?.issues\n });\n }\n },\n vendor: \"zod\",\n version: 1\n };\n});\n\nconst $ZodString = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodString\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.pattern = [\n ...inst?._zod.bag?.patterns ?? []\n ].pop() ?? _regexes_js__WEBPACK_IMPORTED_MODULE_4__.string(inst._zod.bag);\n inst._zod.parse = (payload, _)=>{\n if (def.coerce) try {\n payload.value = String(payload.value);\n } catch (_) {}\n if (typeof payload.value === \"string\") return payload;\n payload.issues.push({\n expected: \"string\",\n code: \"invalid_type\",\n input: payload.value,\n inst\n });\n return payload;\n };\n});\nconst $ZodStringFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodStringFormat\", (inst, def)=>{\n // check initialization must come first\n _checks_js__WEBPACK_IMPORTED_MODULE_5__.$ZodCheckStringFormat.init(inst, def);\n $ZodString.init(inst, def);\n});\nconst $ZodGUID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodGUID\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.guid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodUUID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodUUID\", (inst, def)=>{\n if (def.version) {\n const versionMap = {\n v1: 1,\n v2: 2,\n v3: 3,\n v4: 4,\n v5: 5,\n v6: 6,\n v7: 7,\n v8: 8\n };\n const v = versionMap[def.version];\n if (v === undefined) throw new Error(`Invalid UUID version: \"${def.version}\"`);\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.uuid(v));\n } else def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.uuid());\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodEmail = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodEmail\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.email);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodURL = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodURL\", (inst, def)=>{\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload)=>{\n try {\n const orig = payload.value;\n const url = new URL(orig);\n const href = url.href;\n if (def.hostname) {\n def.hostname.lastIndex = 0;\n if (!def.hostname.test(url.hostname)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid hostname\",\n pattern: _regexes_js__WEBPACK_IMPORTED_MODULE_4__.hostname.source,\n input: payload.value,\n inst,\n continue: !def.abort\n });\n }\n }\n if (def.protocol) {\n def.protocol.lastIndex = 0;\n if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n note: \"Invalid protocol\",\n pattern: def.protocol.source,\n input: payload.value,\n inst,\n continue: !def.abort\n });\n }\n }\n // payload.value = url.href;\n if (!orig.endsWith(\"/\") && href.endsWith(\"/\")) {\n payload.value = href.slice(0, -1);\n } else {\n payload.value = href;\n }\n return;\n } catch (_) {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"url\",\n input: payload.value,\n inst,\n continue: !def.abort\n });\n }\n };\n});\nconst $ZodEmoji = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodEmoji\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.emoji());\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodNanoID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodNanoID\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.nanoid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodCUID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCUID\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.cuid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodCUID2 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCUID2\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.cuid2);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodULID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodULID\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.ulid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodXID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodXID\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.xid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodKSUID = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodKSUID\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.ksuid);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodISODateTime = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodISODateTime\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.datetime(def));\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodISODate = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodISODate\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.date);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodISOTime = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodISOTime\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.time(def));\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodISODuration = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodISODuration\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.duration);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodIPv4 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodIPv4\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.ipv4);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.format = `ipv4`;\n });\n});\nconst $ZodIPv6 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodIPv6\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.ipv6);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst)=>{\n const bag = inst._zod.bag;\n bag.format = `ipv6`;\n });\n inst._zod.check = (payload)=>{\n try {\n new URL(`http://[${payload.value}]`);\n // return;\n } catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"ipv6\",\n input: payload.value,\n inst,\n continue: !def.abort\n });\n }\n };\n});\nconst $ZodCIDRv4 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCIDRv4\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.cidrv4);\n $ZodStringFormat.init(inst, def);\n});\nconst $ZodCIDRv6 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCIDRv6\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.cidrv6); // not used for validation\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload)=>{\n const [address, prefix] = payload.value.split(\"/\");\n try {\n if (!prefix) throw new Error();\n const prefixNum = Number(prefix);\n if (`${prefixNum}` !== prefix) throw new Error();\n if (prefixNum < 0 || prefixNum > 128) throw new Error();\n new URL(`http://[${address}]`);\n } catch {\n payload.issues.push({\n code: \"invalid_format\",\n format: \"cidrv6\",\n input: payload.value,\n inst,\n continue: !def.abort\n });\n }\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nfunction isValidBase64(data) {\n if (data === \"\") return true;\n if (data.length % 4 !== 0) return false;\n try {\n atob(data);\n return true;\n } catch {\n return false;\n }\n}\nconst $ZodBase64 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodBase64\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.base64);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst)=>{\n inst._zod.bag.contentEncoding = \"base64\";\n });\n inst._zod.check = (payload)=>{\n if (isValidBase64(payload.value)) return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64\",\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\n////////////////////////////// ZodBase64 //////////////////////////////\nfunction isValidBase64URL(data) {\n if (!_regexes_js__WEBPACK_IMPORTED_MODULE_4__.base64url.test(data)) return false;\n const base64 = data.replace(/[-_]/g, (c)=>c === \"-\" ? \"+\" : \"/\");\n const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n return isValidBase64(padded);\n}\nconst $ZodBase64URL = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodBase64URL\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.base64url);\n $ZodStringFormat.init(inst, def);\n inst._zod.onattach.push((inst)=>{\n inst._zod.bag.contentEncoding = \"base64url\";\n });\n inst._zod.check = (payload)=>{\n if (isValidBase64URL(payload.value)) return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"base64url\",\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodE164 = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodE164\", (inst, def)=>{\n def.pattern ?? (def.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.e164);\n $ZodStringFormat.init(inst, def);\n});\n////////////////////////////// ZodJWT //////////////////////////////\nfunction isValidJWT(token, algorithm = null) {\n try {\n const tokensParts = token.split(\".\");\n if (tokensParts.length !== 3) return false;\n const [header] = tokensParts;\n if (!header) return false;\n const parsedHeader = JSON.parse(atob(header));\n if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\") return false;\n if (!parsedHeader.alg) return false;\n if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm)) return false;\n return true;\n } catch {\n return false;\n }\n}\nconst $ZodJWT = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodJWT\", (inst, def)=>{\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload)=>{\n if (isValidJWT(payload.value, def.alg)) return;\n payload.issues.push({\n code: \"invalid_format\",\n format: \"jwt\",\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodCustomStringFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCustomStringFormat\", (inst, def)=>{\n $ZodStringFormat.init(inst, def);\n inst._zod.check = (payload)=>{\n if (def.fn(payload.value)) return;\n payload.issues.push({\n code: \"invalid_format\",\n format: def.format,\n input: payload.value,\n inst,\n continue: !def.abort\n });\n };\n});\nconst $ZodNumber = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodNumber\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.pattern = inst._zod.bag.pattern ?? _regexes_js__WEBPACK_IMPORTED_MODULE_4__.number;\n inst._zod.parse = (payload, _ctx)=>{\n if (def.coerce) try {\n payload.value = Number(payload.value);\n } catch (_) {}\n const input = payload.value;\n if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n return payload;\n }\n const received = typeof input === \"number\" ? Number.isNaN(input) ? \"NaN\" : !Number.isFinite(input) ? \"Infinity\" : undefined : undefined;\n payload.issues.push({\n expected: \"number\",\n code: \"invalid_type\",\n input,\n inst,\n ...received ? {\n received\n } : {}\n });\n return payload;\n };\n});\nconst $ZodNumberFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodNumber\", (inst, def)=>{\n _checks_js__WEBPACK_IMPORTED_MODULE_5__.$ZodCheckNumberFormat.init(inst, def);\n $ZodNumber.init(inst, def); // no format checksp\n});\nconst $ZodBoolean = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodBoolean\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.boolean;\n inst._zod.parse = (payload, _ctx)=>{\n if (def.coerce) try {\n payload.value = Boolean(payload.value);\n } catch (_) {}\n const input = payload.value;\n if (typeof input === \"boolean\") return payload;\n payload.issues.push({\n expected: \"boolean\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n };\n});\nconst $ZodBigInt = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodBigInt\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.bigint;\n inst._zod.parse = (payload, _ctx)=>{\n if (def.coerce) try {\n payload.value = BigInt(payload.value);\n } catch (_) {}\n if (typeof payload.value === \"bigint\") return payload;\n payload.issues.push({\n expected: \"bigint\",\n code: \"invalid_type\",\n input: payload.value,\n inst\n });\n return payload;\n };\n});\nconst $ZodBigIntFormat = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodBigInt\", (inst, def)=>{\n _checks_js__WEBPACK_IMPORTED_MODULE_5__.$ZodCheckBigIntFormat.init(inst, def);\n $ZodBigInt.init(inst, def); // no format checks\n});\nconst $ZodSymbol = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodSymbol\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx)=>{\n const input = payload.value;\n if (typeof input === \"symbol\") return payload;\n payload.issues.push({\n expected: \"symbol\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n };\n});\nconst $ZodUndefined = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodUndefined\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__.undefined;\n inst._zod.values = new Set([\n undefined\n ]);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n inst._zod.parse = (payload, _ctx)=>{\n const input = payload.value;\n if (typeof input === \"undefined\") return payload;\n payload.issues.push({\n expected: \"undefined\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n };\n});\nconst $ZodNull = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodNull\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.pattern = _regexes_js__WEBPACK_IMPORTED_MODULE_4__[\"null\"];\n inst._zod.values = new Set([\n null\n ]);\n inst._zod.parse = (payload, _ctx)=>{\n const input = payload.value;\n if (input === null) return payload;\n payload.issues.push({\n expected: \"null\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n };\n});\nconst $ZodAny = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodAny\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload)=>payload;\n});\nconst $ZodUnknown = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodUnknown\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload)=>payload;\n});\nconst $ZodNever = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodNever\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx)=>{\n payload.issues.push({\n expected: \"never\",\n code: \"invalid_type\",\n input: payload.value,\n inst\n });\n return payload;\n };\n});\nconst $ZodVoid = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodVoid\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx)=>{\n const input = payload.value;\n if (typeof input === \"undefined\") return payload;\n payload.issues.push({\n expected: \"void\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n };\n});\nconst $ZodDate = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodDate\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx)=>{\n if (def.coerce) {\n try {\n payload.value = new Date(payload.value);\n } catch (_err) {}\n }\n const input = payload.value;\n const isDate = input instanceof Date;\n const isValidDate = isDate && !Number.isNaN(input.getTime());\n if (isValidDate) return payload;\n payload.issues.push({\n expected: \"date\",\n code: \"invalid_type\",\n input,\n ...isDate ? {\n received: \"Invalid Date\"\n } : {},\n inst\n });\n return payload;\n };\n});\nfunction handleArrayResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nconst $ZodArray = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodArray\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx)=>{\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n expected: \"array\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n }\n payload.value = Array(input.length);\n const proms = [];\n for(let i = 0; i < input.length; i++){\n const item = input[i];\n const result = def.element._zod.run({\n value: item,\n issues: []\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result)=>handleArrayResult(result, payload, i)));\n } else {\n handleArrayResult(result, payload, i);\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(()=>payload);\n }\n return payload; //handleArrayResultsAsync(parseResults, final);\n };\n});\nfunction handleObjectResult(result, final, key) {\n // if(isOptional)\n if (result.issues.length) {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(key, result.issues));\n }\n final.value[key] = result.value;\n}\nfunction handleOptionalObjectResult(result, final, key, input) {\n if (result.issues.length) {\n // validation failed against value schema\n if (input[key] === undefined) {\n // if input was undefined, ignore the error\n if (key in input) {\n final.value[key] = undefined;\n } else {\n final.value[key] = result.value;\n }\n } else {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(key, result.issues));\n }\n } else if (result.value === undefined) {\n // validation returned `undefined`\n if (key in input) final.value[key] = undefined;\n } else {\n // non-undefined value\n final.value[key] = result.value;\n }\n}\nconst $ZodObject = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodObject\", (inst, def)=>{\n // requires cast because technically $ZodObject doesn't extend\n $ZodType.init(inst, def);\n const _normalized = _util_js__WEBPACK_IMPORTED_MODULE_2__.cached(()=>{\n const keys = Object.keys(def.shape);\n for (const k of keys){\n if (!(def.shape[k] instanceof $ZodType)) {\n throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n }\n }\n const okeys = _util_js__WEBPACK_IMPORTED_MODULE_2__.optionalKeys(def.shape);\n return {\n shape: def.shape,\n keys,\n keySet: new Set(keys),\n numKeys: keys.length,\n optionalKeys: new Set(okeys)\n };\n });\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"propValues\", ()=>{\n const shape = def.shape;\n const propValues = {};\n for(const key in shape){\n const field = shape[key]._zod;\n if (field.values) {\n propValues[key] ?? (propValues[key] = new Set());\n for (const v of field.values)propValues[key].add(v);\n }\n }\n return propValues;\n });\n const generateFastpass = (shape)=>{\n const doc = new _doc_js__WEBPACK_IMPORTED_MODULE_6__.Doc([\n \"shape\",\n \"payload\",\n \"ctx\"\n ]);\n const normalized = _normalized.value;\n const parseStr = (key)=>{\n const k = _util_js__WEBPACK_IMPORTED_MODULE_2__.esc(key);\n return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n };\n doc.write(`const input = payload.value;`);\n const ids = Object.create(null);\n let counter = 0;\n for (const key of normalized.keys){\n ids[key] = `key_${counter++}`;\n }\n // A: preserve key order {\n doc.write(`const newResult = {}`);\n for (const key of normalized.keys){\n if (normalized.optionalKeys.has(key)) {\n const id = ids[key];\n doc.write(`const ${id} = ${parseStr(key)};`);\n const k = _util_js__WEBPACK_IMPORTED_MODULE_2__.esc(key);\n doc.write(`\n if (${id}.issues.length) {\n if (input[${k}] === undefined) {\n if (${k} in input) {\n newResult[${k}] = undefined;\n }\n } else {\n payload.issues = payload.issues.concat(\n ${id}.issues.map((iss) => ({\n ...iss,\n path: iss.path ? [${k}, ...iss.path] : [${k}],\n }))\n );\n }\n } else if (${id}.value === undefined) {\n if (${k} in input) newResult[${k}] = undefined;\n } else {\n newResult[${k}] = ${id}.value;\n }\n `);\n } else {\n const id = ids[key];\n // const id = ids[key];\n doc.write(`const ${id} = ${parseStr(key)};`);\n doc.write(`\n if (${id}.issues.length) payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n ...iss,\n path: iss.path ? [${_util_js__WEBPACK_IMPORTED_MODULE_2__.esc(key)}, ...iss.path] : [${_util_js__WEBPACK_IMPORTED_MODULE_2__.esc(key)}]\n })));`);\n doc.write(`newResult[${_util_js__WEBPACK_IMPORTED_MODULE_2__.esc(key)}] = ${id}.value`);\n }\n }\n doc.write(`payload.value = newResult;`);\n doc.write(`return payload;`);\n const fn = doc.compile();\n return (payload, ctx)=>fn(shape, payload, ctx);\n };\n let fastpass;\n const isObject = _util_js__WEBPACK_IMPORTED_MODULE_2__.isObject;\n const jit = !_core_js__WEBPACK_IMPORTED_MODULE_0__.globalConfig.jitless;\n const allowsEval = _util_js__WEBPACK_IMPORTED_MODULE_2__.allowsEval;\n const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n const catchall = def.catchall;\n let value;\n inst._zod.parse = (payload, ctx)=>{\n value ?? (value = _normalized.value);\n const input = payload.value;\n if (!isObject(input)) {\n payload.issues.push({\n expected: \"object\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n }\n const proms = [];\n if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n // always synchronous\n if (!fastpass) fastpass = generateFastpass(def.shape);\n payload = fastpass(payload, ctx);\n } else {\n payload.value = {};\n const shape = value.shape;\n for (const key of value.keys){\n const el = shape[key];\n // do not add omitted optional keys\n // if (!(key in input)) {\n // if (optionalKeys.has(key)) continue;\n // payload.issues.push({\n // code: \"invalid_type\",\n // path: [key],\n // expected: \"nonoptional\",\n // note: `Missing required key: \"${key}\"`,\n // input,\n // inst,\n // });\n // }\n const r = el._zod.run({\n value: input[key],\n issues: []\n }, ctx);\n const isOptional = el._zod.optin === \"optional\" && el._zod.optout === \"optional\";\n if (r instanceof Promise) {\n proms.push(r.then((r)=>isOptional ? handleOptionalObjectResult(r, payload, key, input) : handleObjectResult(r, payload, key)));\n } else if (isOptional) {\n handleOptionalObjectResult(r, payload, key, input);\n } else {\n handleObjectResult(r, payload, key);\n }\n }\n }\n if (!catchall) {\n // return payload;\n return proms.length ? Promise.all(proms).then(()=>payload) : payload;\n }\n const unrecognized = [];\n // iterate over input keys\n const keySet = value.keySet;\n const _catchall = catchall._zod;\n const t = _catchall.def.type;\n for (const key of Object.keys(input)){\n if (keySet.has(key)) continue;\n if (t === \"never\") {\n unrecognized.push(key);\n continue;\n }\n const r = _catchall.run({\n value: input[key],\n issues: []\n }, ctx);\n if (r instanceof Promise) {\n proms.push(r.then((r)=>handleObjectResult(r, payload, key)));\n } else {\n handleObjectResult(r, payload, key);\n }\n }\n if (unrecognized.length) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n keys: unrecognized,\n input,\n inst\n });\n }\n if (!proms.length) return payload;\n return Promise.all(proms).then(()=>{\n return payload;\n });\n };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n for (const result of results){\n if (result.issues.length === 0) {\n final.value = result.value;\n return final;\n }\n }\n final.issues.push({\n code: \"invalid_union\",\n input: final.value,\n inst,\n errors: results.map((result)=>result.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config())))\n });\n return final;\n}\nconst $ZodUnion = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodUnion\", (inst, def)=>{\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optin\", ()=>def.options.some((o)=>o._zod.optin === \"optional\") ? \"optional\" : undefined);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optout\", ()=>def.options.some((o)=>o._zod.optout === \"optional\") ? \"optional\" : undefined);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"values\", ()=>{\n if (def.options.every((o)=>o._zod.values)) {\n return new Set(def.options.flatMap((option)=>Array.from(option._zod.values)));\n }\n return undefined;\n });\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"pattern\", ()=>{\n if (def.options.every((o)=>o._zod.pattern)) {\n const patterns = def.options.map((o)=>o._zod.pattern);\n return new RegExp(`^(${patterns.map((p)=>_util_js__WEBPACK_IMPORTED_MODULE_2__.cleanRegex(p.source)).join(\"|\")})$`);\n }\n return undefined;\n });\n inst._zod.parse = (payload, ctx)=>{\n let async = false;\n const results = [];\n for (const option of def.options){\n const result = option._zod.run({\n value: payload.value,\n issues: []\n }, ctx);\n if (result instanceof Promise) {\n results.push(result);\n async = true;\n } else {\n if (result.issues.length === 0) return result;\n results.push(result);\n }\n }\n if (!async) return handleUnionResults(results, payload, inst, ctx);\n return Promise.all(results).then((results)=>{\n return handleUnionResults(results, payload, inst, ctx);\n });\n };\n});\nconst $ZodDiscriminatedUnion = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodDiscriminatedUnion\", (inst, def)=>{\n $ZodUnion.init(inst, def);\n const _super = inst._zod.parse;\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"propValues\", ()=>{\n const propValues = {};\n for (const option of def.options){\n const pv = option._zod.propValues;\n if (!pv || Object.keys(pv).length === 0) throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n for (const [k, v] of Object.entries(pv)){\n if (!propValues[k]) propValues[k] = new Set();\n for (const val of v){\n propValues[k].add(val);\n }\n }\n }\n return propValues;\n });\n const disc = _util_js__WEBPACK_IMPORTED_MODULE_2__.cached(()=>{\n const opts = def.options;\n const map = new Map();\n for (const o of opts){\n const values = o._zod.propValues[def.discriminator];\n if (!values || values.size === 0) throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n for (const v of values){\n if (map.has(v)) {\n throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n }\n map.set(v, o);\n }\n }\n return map;\n });\n inst._zod.parse = (payload, ctx)=>{\n const input = payload.value;\n if (!_util_js__WEBPACK_IMPORTED_MODULE_2__.isObject(input)) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"object\",\n input,\n inst\n });\n return payload;\n }\n const opt = disc.value.get(input?.[def.discriminator]);\n if (opt) {\n return opt._zod.run(payload, ctx);\n }\n if (def.unionFallback) {\n return _super(payload, ctx);\n }\n // no matching discriminator\n payload.issues.push({\n code: \"invalid_union\",\n errors: [],\n note: \"No matching discriminator\",\n input,\n path: [\n def.discriminator\n ],\n inst\n });\n return payload;\n };\n});\nconst $ZodIntersection = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodIntersection\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx)=>{\n const input = payload.value;\n const left = def.left._zod.run({\n value: input,\n issues: []\n }, ctx);\n const right = def.right._zod.run({\n value: input,\n issues: []\n }, ctx);\n const async = left instanceof Promise || right instanceof Promise;\n if (async) {\n return Promise.all([\n left,\n right\n ]).then(([left, right])=>{\n return handleIntersectionResults(payload, left, right);\n });\n }\n return handleIntersectionResults(payload, left, right);\n };\n});\nfunction mergeValues(a, b) {\n // const aType = parse.t(a);\n // const bType = parse.t(b);\n if (a === b) {\n return {\n valid: true,\n data: a\n };\n }\n if (a instanceof Date && b instanceof Date && +a === +b) {\n return {\n valid: true,\n data: a\n };\n }\n if (_util_js__WEBPACK_IMPORTED_MODULE_2__.isPlainObject(a) && _util_js__WEBPACK_IMPORTED_MODULE_2__.isPlainObject(b)) {\n const bKeys = Object.keys(b);\n const sharedKeys = Object.keys(a).filter((key)=>bKeys.indexOf(key) !== -1);\n const newObj = {\n ...a,\n ...b\n };\n for (const key of sharedKeys){\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [\n key,\n ...sharedValue.mergeErrorPath\n ]\n };\n }\n newObj[key] = sharedValue.data;\n }\n return {\n valid: true,\n data: newObj\n };\n }\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return {\n valid: false,\n mergeErrorPath: []\n };\n }\n const newArray = [];\n for(let index = 0; index < a.length; index++){\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false,\n mergeErrorPath: [\n index,\n ...sharedValue.mergeErrorPath\n ]\n };\n }\n newArray.push(sharedValue.data);\n }\n return {\n valid: true,\n data: newArray\n };\n }\n return {\n valid: false,\n mergeErrorPath: []\n };\n}\nfunction handleIntersectionResults(result, left, right) {\n if (left.issues.length) {\n result.issues.push(...left.issues);\n }\n if (right.issues.length) {\n result.issues.push(...right.issues);\n }\n if (_util_js__WEBPACK_IMPORTED_MODULE_2__.aborted(result)) return result;\n const merged = mergeValues(left.value, right.value);\n if (!merged.valid) {\n throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n }\n result.value = merged.data;\n return result;\n}\nconst $ZodTuple = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodTuple\", (inst, def)=>{\n $ZodType.init(inst, def);\n const items = def.items;\n const optStart = items.length - [\n ...items\n ].reverse().findIndex((item)=>item._zod.optin !== \"optional\");\n inst._zod.parse = (payload, ctx)=>{\n const input = payload.value;\n if (!Array.isArray(input)) {\n payload.issues.push({\n input,\n inst,\n expected: \"tuple\",\n code: \"invalid_type\"\n });\n return payload;\n }\n payload.value = [];\n const proms = [];\n if (!def.rest) {\n const tooBig = input.length > items.length;\n const tooSmall = input.length < optStart - 1;\n if (tooBig || tooSmall) {\n payload.issues.push({\n input,\n inst,\n origin: \"array\",\n ...tooBig ? {\n code: \"too_big\",\n maximum: items.length\n } : {\n code: \"too_small\",\n minimum: items.length\n }\n });\n return payload;\n }\n }\n let i = -1;\n for (const item of items){\n i++;\n if (i >= input.length) {\n if (i >= optStart) continue;\n }\n const result = item._zod.run({\n value: input[i],\n issues: []\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result)=>handleTupleResult(result, payload, i)));\n } else {\n handleTupleResult(result, payload, i);\n }\n }\n if (def.rest) {\n const rest = input.slice(items.length);\n for (const el of rest){\n i++;\n const result = def.rest._zod.run({\n value: el,\n issues: []\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result)=>handleTupleResult(result, payload, i)));\n } else {\n handleTupleResult(result, payload, i);\n }\n }\n }\n if (proms.length) return Promise.all(proms).then(()=>payload);\n return payload;\n };\n});\nfunction handleTupleResult(result, final, index) {\n if (result.issues.length) {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(index, result.issues));\n }\n final.value[index] = result.value;\n}\nconst $ZodRecord = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodRecord\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx)=>{\n const input = payload.value;\n if (!_util_js__WEBPACK_IMPORTED_MODULE_2__.isPlainObject(input)) {\n payload.issues.push({\n expected: \"record\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n }\n const proms = [];\n if (def.keyType._zod.values) {\n const values = def.keyType._zod.values;\n payload.value = {};\n for (const key of values){\n if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n const result = def.valueType._zod.run({\n value: input[key],\n issues: []\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result)=>{\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }));\n } else {\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(key, result.issues));\n }\n payload.value[key] = result.value;\n }\n }\n }\n let unrecognized;\n for(const key in input){\n if (!values.has(key)) {\n unrecognized = unrecognized ?? [];\n unrecognized.push(key);\n }\n }\n if (unrecognized && unrecognized.length > 0) {\n payload.issues.push({\n code: \"unrecognized_keys\",\n input,\n inst,\n keys: unrecognized\n });\n }\n } else {\n payload.value = {};\n for (const key of Reflect.ownKeys(input)){\n if (key === \"__proto__\") continue;\n const keyResult = def.keyType._zod.run({\n value: key,\n issues: []\n }, ctx);\n if (keyResult instanceof Promise) {\n throw new Error(\"Async schemas not supported in object keys currently\");\n }\n if (keyResult.issues.length) {\n payload.issues.push({\n origin: \"record\",\n code: \"invalid_key\",\n issues: keyResult.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config())),\n input: key,\n path: [\n key\n ],\n inst\n });\n payload.value[keyResult.value] = keyResult.value;\n continue;\n }\n const result = def.valueType._zod.run({\n value: input[key],\n issues: []\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result)=>{\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }));\n } else {\n if (result.issues.length) {\n payload.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(key, result.issues));\n }\n payload.value[keyResult.value] = result.value;\n }\n }\n }\n if (proms.length) {\n return Promise.all(proms).then(()=>payload);\n }\n return payload;\n };\n});\nconst $ZodMap = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodMap\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx)=>{\n const input = payload.value;\n if (!(input instanceof Map)) {\n payload.issues.push({\n expected: \"map\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n }\n const proms = [];\n payload.value = new Map();\n for (const [key, value] of input){\n const keyResult = def.keyType._zod.run({\n value: key,\n issues: []\n }, ctx);\n const valueResult = def.valueType._zod.run({\n value: value,\n issues: []\n }, ctx);\n if (keyResult instanceof Promise || valueResult instanceof Promise) {\n proms.push(Promise.all([\n keyResult,\n valueResult\n ]).then(([keyResult, valueResult])=>{\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }));\n } else {\n handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n }\n }\n if (proms.length) return Promise.all(proms).then(()=>payload);\n return payload;\n };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n if (keyResult.issues.length) {\n if (_util_js__WEBPACK_IMPORTED_MODULE_2__.propertyKeyTypes.has(typeof key)) {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(key, keyResult.issues));\n } else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_key\",\n input,\n inst,\n issues: keyResult.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config()))\n });\n }\n }\n if (valueResult.issues.length) {\n if (_util_js__WEBPACK_IMPORTED_MODULE_2__.propertyKeyTypes.has(typeof key)) {\n final.issues.push(..._util_js__WEBPACK_IMPORTED_MODULE_2__.prefixIssues(key, valueResult.issues));\n } else {\n final.issues.push({\n origin: \"map\",\n code: \"invalid_element\",\n input,\n inst,\n key: key,\n issues: valueResult.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config()))\n });\n }\n }\n final.value.set(keyResult.value, valueResult.value);\n}\nconst $ZodSet = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodSet\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx)=>{\n const input = payload.value;\n if (!(input instanceof Set)) {\n payload.issues.push({\n input,\n inst,\n expected: \"set\",\n code: \"invalid_type\"\n });\n return payload;\n }\n const proms = [];\n payload.value = new Set();\n for (const item of input){\n const result = def.valueType._zod.run({\n value: item,\n issues: []\n }, ctx);\n if (result instanceof Promise) {\n proms.push(result.then((result)=>handleSetResult(result, payload)));\n } else handleSetResult(result, payload);\n }\n if (proms.length) return Promise.all(proms).then(()=>payload);\n return payload;\n };\n});\nfunction handleSetResult(result, final) {\n if (result.issues.length) {\n final.issues.push(...result.issues);\n }\n final.value.add(result.value);\n}\nconst $ZodEnum = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodEnum\", (inst, def)=>{\n $ZodType.init(inst, def);\n const values = _util_js__WEBPACK_IMPORTED_MODULE_2__.getEnumValues(def.entries);\n inst._zod.values = new Set(values);\n inst._zod.pattern = new RegExp(`^(${values.filter((k)=>_util_js__WEBPACK_IMPORTED_MODULE_2__.propertyKeyTypes.has(typeof k)).map((o)=>typeof o === \"string\" ? _util_js__WEBPACK_IMPORTED_MODULE_2__.escapeRegex(o) : o.toString()).join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx)=>{\n const input = payload.value;\n if (inst._zod.values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values,\n input,\n inst\n });\n return payload;\n };\n});\nconst $ZodLiteral = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodLiteral\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.values = new Set(def.values);\n inst._zod.pattern = new RegExp(`^(${def.values.map((o)=>typeof o === \"string\" ? _util_js__WEBPACK_IMPORTED_MODULE_2__.escapeRegex(o) : o ? o.toString() : String(o)).join(\"|\")})$`);\n inst._zod.parse = (payload, _ctx)=>{\n const input = payload.value;\n if (inst._zod.values.has(input)) {\n return payload;\n }\n payload.issues.push({\n code: \"invalid_value\",\n values: def.values,\n input,\n inst\n });\n return payload;\n };\n});\nconst $ZodFile = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodFile\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx)=>{\n const input = payload.value;\n if (input instanceof File) return payload;\n payload.issues.push({\n expected: \"file\",\n code: \"invalid_type\",\n input,\n inst\n });\n return payload;\n };\n});\nconst $ZodTransform = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodTransform\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx)=>{\n const _out = def.transform(payload.value, payload);\n if (_ctx.async) {\n const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n return output.then((output)=>{\n payload.value = output;\n return payload;\n });\n }\n if (_out instanceof Promise) {\n throw new _core_js__WEBPACK_IMPORTED_MODULE_0__.$ZodAsyncError();\n }\n payload.value = _out;\n return payload;\n };\n});\nconst $ZodOptional = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodOptional\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n inst._zod.optout = \"optional\";\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"values\", ()=>{\n return def.innerType._zod.values ? new Set([\n ...def.innerType._zod.values,\n undefined\n ]) : undefined;\n });\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"pattern\", ()=>{\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${_util_js__WEBPACK_IMPORTED_MODULE_2__.cleanRegex(pattern.source)})?$`) : undefined;\n });\n inst._zod.parse = (payload, ctx)=>{\n if (def.innerType._zod.optin === \"optional\") {\n return def.innerType._zod.run(payload, ctx);\n }\n if (payload.value === undefined) {\n return payload;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nconst $ZodNullable = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodNullable\", (inst, def)=>{\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optin\", ()=>def.innerType._zod.optin);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optout\", ()=>def.innerType._zod.optout);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"pattern\", ()=>{\n const pattern = def.innerType._zod.pattern;\n return pattern ? new RegExp(`^(${_util_js__WEBPACK_IMPORTED_MODULE_2__.cleanRegex(pattern.source)}|null)$`) : undefined;\n });\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"values\", ()=>{\n return def.innerType._zod.values ? new Set([\n ...def.innerType._zod.values,\n null\n ]) : undefined;\n });\n inst._zod.parse = (payload, ctx)=>{\n if (payload.value === null) return payload;\n return def.innerType._zod.run(payload, ctx);\n };\n});\nconst $ZodDefault = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodDefault\", (inst, def)=>{\n $ZodType.init(inst, def);\n // inst._zod.qin = \"true\";\n inst._zod.optin = \"optional\";\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"values\", ()=>def.innerType._zod.values);\n inst._zod.parse = (payload, ctx)=>{\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n /**\n * $ZodDefault always returns the default value immediately.\n * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe. */ return payload;\n }\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result)=>handleDefaultResult(result, def));\n }\n return handleDefaultResult(result, def);\n };\n});\nfunction handleDefaultResult(payload, def) {\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return payload;\n}\nconst $ZodPrefault = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodPrefault\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"values\", ()=>def.innerType._zod.values);\n inst._zod.parse = (payload, ctx)=>{\n if (payload.value === undefined) {\n payload.value = def.defaultValue;\n }\n return def.innerType._zod.run(payload, ctx);\n };\n});\nconst $ZodNonOptional = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodNonOptional\", (inst, def)=>{\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"values\", ()=>{\n const v = def.innerType._zod.values;\n return v ? new Set([\n ...v\n ].filter((x)=>x !== undefined)) : undefined;\n });\n inst._zod.parse = (payload, ctx)=>{\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result)=>handleNonOptionalResult(result, inst));\n }\n return handleNonOptionalResult(result, inst);\n };\n});\nfunction handleNonOptionalResult(payload, inst) {\n if (!payload.issues.length && payload.value === undefined) {\n payload.issues.push({\n code: \"invalid_type\",\n expected: \"nonoptional\",\n input: payload.value,\n inst\n });\n }\n return payload;\n}\nconst $ZodSuccess = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodSuccess\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx)=>{\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result)=>{\n payload.value = result.issues.length === 0;\n return payload;\n });\n }\n payload.value = result.issues.length === 0;\n return payload;\n };\n});\nconst $ZodCatch = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCatch\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.optin = \"optional\";\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optout\", ()=>def.innerType._zod.optout);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"values\", ()=>def.innerType._zod.values);\n inst._zod.parse = (payload, ctx)=>{\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then((result)=>{\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config()))\n },\n input: payload.value\n });\n payload.issues = [];\n }\n return payload;\n });\n }\n payload.value = result.value;\n if (result.issues.length) {\n payload.value = def.catchValue({\n ...payload,\n error: {\n issues: result.issues.map((iss)=>_util_js__WEBPACK_IMPORTED_MODULE_2__.finalizeIssue(iss, ctx, _core_js__WEBPACK_IMPORTED_MODULE_0__.config()))\n },\n input: payload.value\n });\n payload.issues = [];\n }\n return payload;\n };\n});\nconst $ZodNaN = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodNaN\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _ctx)=>{\n if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"nan\",\n code: \"invalid_type\"\n });\n return payload;\n }\n return payload;\n };\n});\nconst $ZodPipe = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodPipe\", (inst, def)=>{\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"values\", ()=>def.in._zod.values);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optin\", ()=>def.in._zod.optin);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optout\", ()=>def.out._zod.optout);\n inst._zod.parse = (payload, ctx)=>{\n const left = def.in._zod.run(payload, ctx);\n if (left instanceof Promise) {\n return left.then((left)=>handlePipeResult(left, def, ctx));\n }\n return handlePipeResult(left, def, ctx);\n };\n});\nfunction handlePipeResult(left, def, ctx) {\n if (_util_js__WEBPACK_IMPORTED_MODULE_2__.aborted(left)) {\n return left;\n }\n return def.out._zod.run({\n value: left.value,\n issues: left.issues\n }, ctx);\n}\nconst $ZodReadonly = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodReadonly\", (inst, def)=>{\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"propValues\", ()=>def.innerType._zod.propValues);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"values\", ()=>def.innerType._zod.values);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optin\", ()=>def.innerType._zod.optin);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optout\", ()=>def.innerType._zod.optout);\n inst._zod.parse = (payload, ctx)=>{\n const result = def.innerType._zod.run(payload, ctx);\n if (result instanceof Promise) {\n return result.then(handleReadonlyResult);\n }\n return handleReadonlyResult(result);\n };\n});\nfunction handleReadonlyResult(payload) {\n payload.value = Object.freeze(payload.value);\n return payload;\n}\nconst $ZodTemplateLiteral = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodTemplateLiteral\", (inst, def)=>{\n $ZodType.init(inst, def);\n const regexParts = [];\n for (const part of def.parts){\n if (part instanceof $ZodType) {\n if (!part._zod.pattern) {\n // if (!source)\n throw new Error(`Invalid template literal part, no pattern found: ${[\n ...part._zod.traits\n ].shift()}`);\n }\n const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n if (!source) throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n regexParts.push(source.slice(start, end));\n } else if (part === null || _util_js__WEBPACK_IMPORTED_MODULE_2__.primitiveTypes.has(typeof part)) {\n regexParts.push(_util_js__WEBPACK_IMPORTED_MODULE_2__.escapeRegex(`${part}`));\n } else {\n throw new Error(`Invalid template literal part: ${part}`);\n }\n }\n inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n inst._zod.parse = (payload, _ctx)=>{\n if (typeof payload.value !== \"string\") {\n payload.issues.push({\n input: payload.value,\n inst,\n expected: \"template_literal\",\n code: \"invalid_type\"\n });\n return payload;\n }\n inst._zod.pattern.lastIndex = 0;\n if (!inst._zod.pattern.test(payload.value)) {\n payload.issues.push({\n input: payload.value,\n inst,\n code: \"invalid_format\",\n format: \"template_literal\",\n pattern: inst._zod.pattern.source\n });\n return payload;\n }\n return payload;\n };\n});\nconst $ZodPromise = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodPromise\", (inst, def)=>{\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, ctx)=>{\n return Promise.resolve(payload.value).then((inner)=>def.innerType._zod.run({\n value: inner,\n issues: []\n }, ctx));\n };\n});\nconst $ZodLazy = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodLazy\", (inst, def)=>{\n $ZodType.init(inst, def);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"innerType\", ()=>def.getter());\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"pattern\", ()=>inst._zod.innerType._zod.pattern);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"propValues\", ()=>inst._zod.innerType._zod.propValues);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optin\", ()=>inst._zod.innerType._zod.optin);\n _util_js__WEBPACK_IMPORTED_MODULE_2__.defineLazy(inst._zod, \"optout\", ()=>inst._zod.innerType._zod.optout);\n inst._zod.parse = (payload, ctx)=>{\n const inner = inst._zod.innerType;\n return inner._zod.run(payload, ctx);\n };\n});\nconst $ZodCustom = /*@__PURE__*/ _core_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"$ZodCustom\", (inst, def)=>{\n _checks_js__WEBPACK_IMPORTED_MODULE_5__.$ZodCheck.init(inst, def);\n $ZodType.init(inst, def);\n inst._zod.parse = (payload, _)=>{\n return payload;\n };\n inst._zod.check = (payload)=>{\n const input = payload.value;\n const r = def.fn(input);\n if (r instanceof Promise) {\n return r.then((r)=>handleRefineResult(r, payload, input, inst));\n }\n handleRefineResult(r, payload, input, inst);\n return;\n };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n if (!result) {\n const _iss = {\n code: \"custom\",\n input,\n inst,\n path: [\n ...inst._zod.def.path ?? []\n ],\n continue: !inst._zod.def.abort\n };\n if (inst._zod.def.params) _iss.params = inst._zod.def.params;\n payload.issues.push(_util_js__WEBPACK_IMPORTED_MODULE_2__.issue(_iss));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3NjaGVtYXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXNDO0FBQ0o7QUFDSDtBQUN3QjtBQUNmO0FBQ047QUFDTTtBQUNqQyxNQUFNUSxXQUFXLFdBQVcsR0FBR1Asa0RBQWlCLENBQUMsWUFBWSxDQUFDUyxNQUFNQztJQUN2RSxJQUFJQztJQUNKRixRQUFTQSxDQUFBQSxPQUFPLENBQUM7SUFDakJBLEtBQUtHLElBQUksQ0FBQ0YsR0FBRyxHQUFHQSxLQUFLLG9CQUFvQjtJQUN6Q0QsS0FBS0csSUFBSSxDQUFDQyxHQUFHLEdBQUdKLEtBQUtHLElBQUksQ0FBQ0MsR0FBRyxJQUFJLENBQUMsR0FBRyx5QkFBeUI7SUFDOURKLEtBQUtHLElBQUksQ0FBQ04sT0FBTyxHQUFHQSxpREFBT0E7SUFDM0IsTUFBTVAsU0FBUztXQUFLVSxLQUFLRyxJQUFJLENBQUNGLEdBQUcsQ0FBQ1gsTUFBTSxJQUFJLEVBQUU7S0FBRTtJQUNoRCwwREFBMEQ7SUFDMUQsSUFBSVUsS0FBS0csSUFBSSxDQUFDRSxNQUFNLENBQUNDLEdBQUcsQ0FBQyxjQUFjO1FBQ25DaEIsT0FBT2lCLE9BQU8sQ0FBQ1A7SUFDbkI7SUFDQSxFQUFFO0lBQ0YsS0FBSyxNQUFNUSxNQUFNbEIsT0FBUTtRQUNyQixLQUFLLE1BQU1tQixNQUFNRCxHQUFHTCxJQUFJLENBQUNPLFFBQVEsQ0FBRTtZQUMvQkQsR0FBR1Q7UUFDUDtJQUNKO0lBQ0EsSUFBSVYsT0FBT3FCLE1BQU0sS0FBSyxHQUFHO1FBQ3JCLHVCQUF1QjtRQUN2QixxQ0FBcUM7UUFDcENULENBQUFBLEtBQUtGLEtBQUtHLElBQUksRUFBRVMsUUFBUSxJQUFLVixDQUFBQSxHQUFHVSxRQUFRLEdB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QUFJLENBQUNrQyxRQUFRO1FBQ1QsTUFBTThVLE9BQU87WUFDVDVULE1BQU07WUFDTkM7WUFDQXJEO1lBQ0FtUixNQUFNO21CQUFLblIsS0FBS0csSUFBSSxDQUFDRixHQUFHLENBQUNrUixJQUFJLElBQUksRUFBRTthQUFFO1lBQ3JDOUwsVUFBVSxDQUFDckYsS0FBS0csSUFBSSxDQUFDRixHQUFHLENBQUNxRixLQUFLO1FBRWxDO1FBQ0EsSUFBSXRGLEtBQUtHLElBQUksQ0FBQ0YsR0FBRyxDQUFDZ1gsTUFBTSxFQUNwQkQsS0FBS0MsTUFBTSxHQUFHalgsS0FBS0csSUFBSSxDQUFDRixHQUFHLENBQUNnWCxNQUFNO1FBQ3RDaFcsUUFBUVEsTUFBTSxDQUFDWixJQUFJLENBQUNqQiwyQ0FBVSxDQUFDb1g7SUFDbkM7QUFDSiIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvc2NoZW1hcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGVja3MgZnJvbSBcIi4vY2hlY2tzLmpzXCI7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gXCIuL2NvcmUuanNcIjtcbmltcG9ydCB7IERvYyB9IGZyb20gXCIuL2RvYy5qc1wiO1xuaW1wb3J0IHsgc2FmZVBhcnNlLCBzYWZlUGFyc2VBc3luYyB9IGZyb20gXCIuL3BhcnNlLmpzXCI7XG5pbXBvcnQgKiBhcyByZWdleGVzIGZyb20gXCIuL3JlZ2V4ZXMuanNcIjtcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4vdXRpbC5qc1wiO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gXCIuL3ZlcnNpb25zLmpzXCI7XG5leHBvcnQgY29uc3QgJFpvZFR5cGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFR5cGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIHZhciBfYTtcbiAgICBpbnN0ID8/IChpbnN0ID0ge30pO1xuICAgIGluc3QuX3pvZC5kZWYgPSBkZWY7IC8vIHNldCBfZGVmIHByb3BlcnR5XG4gICAgaW5zdC5fem9kLmJhZyA9IGluc3QuX3pvZC5iYWcgfHwge307IC8vIGluaXRpYWxpemUgX2JhZyBvYmplY3RcbiAgICBpbnN0Ll96b2QudmVyc2lvbiA9IHZlcnNpb247XG4gICAgY29uc3QgY2hlY2tzID0gWy4uLihpbnN0Ll96b2QuZGVmLmNoZWNrcyA/PyBbXSldO1xuICAgIC8vIGlmIGluc3QgaXMgaXRzZWxmIGEgY2hlY2tzLiRab2RDaGVjaywgcnVuIGl0IGFzIGEgY2hlY2tcbiAgICBpZiAoaW5zdC5fem9kLnRyYWl0cy5oYXMoXCIkWm9kQ2hlY2tcIikpIHtcbiAgICAgICAgY2hlY2tzLnVuc2hpZnQoaW5zdCk7XG4gICAgfVxuICAgIC8vXG4gICAgZm9yIChjb25zdCBjaCBvZiBjaGVja3MpIHtcbiAgICAgICAgZm9yIChjb25zdCBmbiBvZiBjaC5fem9kLm9uYXR0YWNoKSB7XG4gICAgICAgICAgICBmbihpbnN0KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hlY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAvLyBkZWZlcnJlZCBpbml0aWFsaXplclxuICAgICAgICAvLyBpbnN0Ll96b2QucGFyc2UgaXMgbm90IHlldCBkZWZpbmVkXG4gICAgICAgIChfYSA9IGluc3QuX3pvZCkuZGVmZXJyZWQgPz8gKF9hLmRlZmVycmVkID0gW10pO1xuICAgICAgICBpbnN0Ll96b2QuZGVmZXJyZWQ/LnB1c2goKCkgPT4ge1xuICAgICAgICAgICAgaW5zdC5fem9kLnJ1biA9IGluc3QuX3pvZC5wYXJzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBjb25zdCBydW5DaGVja3MgPSAocGF5bG9hZCwgY2hlY2tzLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGxldCBpc0Fib3J0ZWQgPSB1dGlsLmFib3J0ZWQocGF5bG9hZCk7XG4gICAgICAgICAgICBsZXQgYXN5bmNSZXN1bHQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIGNoZWNrcykge1xuICAgICAgICAgICAgICAgIGlmIChjaC5fem9kLmRlZi53aGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3VsZFJ1biA9IGNoLl96b2QuZGVmLndoZW4ocGF5bG9hZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkUnVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQWJvcnRlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY3VyckxlbiA9IHBheWxvYWQuaXNzdWVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBfID0gY2guX3pvZC5jaGVjayhwYXlsb2FkKTtcbiAgICAgICAgICAgICAgICBpZiAoXyBpbnN0YW5jZW9mIFByb21pc2UgJiYgY3R4Py5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFzeW5jUmVzdWx0IHx8IF8gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFzeW5jUmVzdWx0ID0gKGFzeW5jUmVzdWx0ID8/IFByb21pc2UucmVzb2x2ZSgpKS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IF87XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0TGVuID0gcGF5bG9hZC5pc3N1ZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRMZW4gPT09IGN1cnJMZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Fib3J0ZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBYm9ydGVkID0gdXRpbC5hYm9ydGVkKHBheWxvYWQsIGN1cnJMZW4pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRMZW4gPSBwYXlsb2FkLmlzc3Vlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0TGVuID09PSBjdXJyTGVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNBYm9ydGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgaXNBYm9ydGVkID0gdXRpbC5hYm9ydGVkKHBheWxvYWQsIGN1cnJMZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhc3luY1Jlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhc3luY1Jlc3VsdC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfTtcbiAgICAgICAgaW5zdC5fem9kLnJ1biA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3QuX3pvZC5wYXJzZShwYXlsb2FkLCBjdHgpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoY3R4LmFzeW5jID09PSBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IGNvcmUuJFpvZEFzeW5jRXJyb3IoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gcnVuQ2hlY2tzKHJlc3VsdCwgY2hlY2tzLCBjdHgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBydW5DaGVja3MocmVzdWx0LCBjaGVja3MsIGN0eCk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGluc3RbXCJ+c3RhbmRhcmRcIl0gPSB7XG4gICAgICAgIHZhbGlkYXRlOiAodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgciA9IHNhZmVQYXJzZShpbnN0LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHIuc3VjY2VzcyA/IHsgdmFsdWU6IHIuZGF0YSB9IDogeyBpc3N1ZXM6IHIuZXJyb3I/Lmlzc3VlcyB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2FmZVBhcnNlQXN5bmMoaW5zdCwgdmFsdWUpLnRoZW4oKHIpID0+IChyLnN1Y2Nlc3MgPyB7IHZhbHVlOiByLmRhdGEgfSA6IHsgaXNzdWVzOiByLmVycm9yPy5pc3N1ZXMgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB2ZW5kb3I6IFwiem9kXCIsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgfTtcbn0pO1xuZXhwb3J0IHsgY2xvbmUgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5leHBvcnQgY29uc3QgJFpvZFN0cmluZyA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kU3RyaW5nXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBbLi4uKGluc3Q/Ll96b2QuYmFnPy5wYXR0ZXJucyA/PyBbXSldLnBvcCgpID8/IHJlZ2V4ZXMuc3RyaW5nKGluc3QuX3pvZC5iYWcpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfKSA9PiB7XG4gICAgICAgIGlmIChkZWYuY29lcmNlKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gU3RyaW5nKHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQudmFsdWUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFN0cmluZ0Zvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kU3RyaW5nRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAvLyBjaGVjayBpbml0aWFsaXphdGlvbiBtdXN0IGNvbWUgZmlyc3RcbiAgICBjaGVja3MuJFpvZENoZWNrU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICAkWm9kU3RyaW5nLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RHVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RHVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmd1aWQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFVVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFVVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGlmIChkZWYudmVyc2lvbikge1xuICAgICAgICBjb25zdCB2ZXJzaW9uTWFwID0ge1xuICAgICAgICAgICAgdjE6IDEsXG4gICAgICAgICAgICB2MjogMixcbiAgICAgICAgICAgIHYzOiAzLFxuICAgICAgICAgICAgdjQ6IDQsXG4gICAgICAgICAgICB2NTogNSxcbiAgICAgICAgICAgIHY2OiA2LFxuICAgICAgICAgICAgdjc6IDcsXG4gICAgICAgICAgICB2ODogOCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdiA9IHZlcnNpb25NYXBbZGVmLnZlcnNpb25dO1xuICAgICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIFVVSUQgdmVyc2lvbjogXCIke2RlZi52ZXJzaW9ufVwiYCk7XG4gICAgICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMudXVpZCh2KSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy51dWlkKCkpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEVtYWlsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RFbWFpbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5lbWFpbCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVVJMID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RVUkxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBvcmlnID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwob3JpZyk7XG4gICAgICAgICAgICBjb25zdCBocmVmID0gdXJsLmhyZWY7XG4gICAgICAgICAgICBpZiAoZGVmLmhvc3RuYW1lKSB7XG4gICAgICAgICAgICAgICAgZGVmLmhvc3RuYW1lLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKCFkZWYuaG9zdG5hbWUudGVzdCh1cmwuaG9zdG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2Zvcm1hdFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiBcInVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJJbnZhbGlkIGhvc3RuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiByZWdleGVzLmhvc3RuYW1lLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGVmLnByb3RvY29sKSB7XG4gICAgICAgICAgICAgICAgZGVmLnByb3RvY29sLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKCFkZWYucHJvdG9jb2wudGVzdCh1cmwucHJvdG9jb2wuZW5kc1dpdGgoXCI6XCIpID8gdXJsLnByb3RvY29sLnNsaWNlKDAsIC0xKSA6IHVybC5wcm90b2NvbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6IFwidXJsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkludmFsaWQgcHJvdG9jb2xcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IGRlZi5wcm90b2NvbC5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gcGF5bG9hZC52YWx1ZSA9IHVybC5ocmVmO1xuICAgICAgICAgICAgaWYgKCFvcmlnLmVuZHNXaXRoKFwiL1wiKSAmJiBocmVmLmVuZHNXaXRoKFwiL1wiKSkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBocmVmLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBocmVmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChfKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcInVybFwiLFxuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgY29udGludWU6ICFkZWYuYWJvcnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kRW1vamkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEVtb2ppXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmVtb2ppKCkpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE5hbm9JRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kTmFub0lEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLm5hbm9pZCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5jdWlkKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDVUlEMiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ1VJRDJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuY3VpZDIpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFVMSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFVMSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMudWxpZCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kWElEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RYSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMueGlkKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RLU1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kS1NVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMua3N1aWQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElTT0RhdGVUaW1lID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RJU09EYXRlVGltZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5kYXRldGltZShkZWYpKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJU09EYXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RJU09EYXRlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmRhdGUpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElTT1RpbWUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZElTT1RpbWVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMudGltZShkZWYpKTtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJU09EdXJhdGlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kSVNPRHVyYXRpb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZHVyYXRpb24pO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZElQdjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZElQdjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuaXB2NCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgY29uc3QgYmFnID0gaW5zdC5fem9kLmJhZztcbiAgICAgICAgYmFnLmZvcm1hdCA9IGBpcHY0YDtcbiAgICB9KTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJUHY2ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RJUHY2XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmlwdjYpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGJhZyA9IGluc3QuX3pvZC5iYWc7XG4gICAgICAgIGJhZy5mb3JtYXQgPSBgaXB2NmA7XG4gICAgfSk7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5ldyBVUkwoYGh0dHA6Ly9bJHtwYXlsb2FkLnZhbHVlfV1gKTtcbiAgICAgICAgICAgIC8vIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcImlwdjZcIixcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZENJRFJ2NCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ0lEUnY0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmNpZHJ2NCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ0lEUnY2ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDSURSdjZcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuY2lkcnY2KTsgLy8gbm90IHVzZWQgZm9yIHZhbGlkYXRpb25cbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBjb25zdCBbYWRkcmVzcywgcHJlZml4XSA9IHBheWxvYWQudmFsdWUuc3BsaXQoXCIvXCIpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKCFwcmVmaXgpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgICAgICAgICBjb25zdCBwcmVmaXhOdW0gPSBOdW1iZXIocHJlZml4KTtcbiAgICAgICAgICAgIGlmIChgJHtwcmVmaXhOdW19YCAhPT0gcHJlZml4KVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICAgICAgaWYgKHByZWZpeE51bSA8IDAgfHwgcHJlZml4TnVtID4gMTI4KVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICAgICAgbmV3IFVSTChgaHR0cDovL1ske2FkZHJlc3N9XWApO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFwiY2lkcnY2XCIsXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcbn0pO1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAgWm9kQmFzZTY0ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEJhc2U2NChkYXRhKSB7XG4gICAgaWYgKGRhdGEgPT09IFwiXCIpXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIGlmIChkYXRhLmxlbmd0aCAlIDQgIT09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICBhdG9iKGRhdGEpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0ICRab2RCYXNlNjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEJhc2U2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgZGVmLnBhdHRlcm4gPz8gKGRlZi5wYXR0ZXJuID0gcmVnZXhlcy5iYXNlNjQpO1xuICAgICRab2RTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5vbmF0dGFjaC5wdXNoKChpbnN0KSA9PiB7XG4gICAgICAgIGluc3QuX3pvZC5iYWcuY29udGVudEVuY29kaW5nID0gXCJiYXNlNjRcIjtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoaXNWYWxpZEJhc2U2NChwYXlsb2FkLnZhbHVlKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFwiYmFzZTY0XCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAgWm9kQmFzZTY0ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEJhc2U2NFVSTChkYXRhKSB7XG4gICAgaWYgKCFyZWdleGVzLmJhc2U2NHVybC50ZXN0KGRhdGEpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3QgYmFzZTY0ID0gZGF0YS5yZXBsYWNlKC9bLV9dL2csIChjKSA9PiAoYyA9PT0gXCItXCIgPyBcIitcIiA6IFwiL1wiKSk7XG4gICAgY29uc3QgcGFkZGVkID0gYmFzZTY0LnBhZEVuZChNYXRoLmNlaWwoYmFzZTY0Lmxlbmd0aCAvIDQpICogNCwgXCI9XCIpO1xuICAgIHJldHVybiBpc1ZhbGlkQmFzZTY0KHBhZGRlZCk7XG59XG5leHBvcnQgY29uc3QgJFpvZEJhc2U2NFVSTCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQmFzZTY0VVJMXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBkZWYucGF0dGVybiA/PyAoZGVmLnBhdHRlcm4gPSByZWdleGVzLmJhc2U2NHVybCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9uYXR0YWNoLnB1c2goKGluc3QpID0+IHtcbiAgICAgICAgaW5zdC5fem9kLmJhZy5jb250ZW50RW5jb2RpbmcgPSBcImJhc2U2NHVybFwiO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGlmIChpc1ZhbGlkQmFzZTY0VVJMKHBheWxvYWQudmFsdWUpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9mb3JtYXRcIixcbiAgICAgICAgICAgIGZvcm1hdDogXCJiYXNlNjR1cmxcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhZGVmLmFib3J0LFxuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEUxNjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEUxNjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGRlZi5wYXR0ZXJuID8/IChkZWYucGF0dGVybiA9IHJlZ2V4ZXMuZTE2NCk7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgIFpvZEpXVCAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRKV1QodG9rZW4sIGFsZ29yaXRobSA9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCB0b2tlbnNQYXJ0cyA9IHRva2VuLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKHRva2Vuc1BhcnRzLmxlbmd0aCAhPT0gMylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3QgW2hlYWRlcl0gPSB0b2tlbnNQYXJ0cztcbiAgICAgICAgaWYgKCFoZWFkZXIpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHBhcnNlZEhlYWRlciA9IEpTT04ucGFyc2UoYXRvYihoZWFkZXIpKTtcbiAgICAgICAgaWYgKFwidHlwXCIgaW4gcGFyc2VkSGVhZGVyICYmIHBhcnNlZEhlYWRlcj8udHlwICE9PSBcIkpXVFwiKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIXBhcnNlZEhlYWRlci5hbGcpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChhbGdvcml0aG0gJiYgKCEoXCJhbGdcIiBpbiBwYXJzZWRIZWFkZXIpIHx8IHBhcnNlZEhlYWRlci5hbGcgIT09IGFsZ29yaXRobSkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5leHBvcnQgY29uc3QgJFpvZEpXVCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kSldUXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QuY2hlY2sgPSAocGF5bG9hZCkgPT4ge1xuICAgICAgICBpZiAoaXNWYWxpZEpXVChwYXlsb2FkLnZhbHVlLCBkZWYuYWxnKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IFwiand0XCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDdXN0b21TdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEN1c3RvbVN0cmluZ0Zvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLmNoZWNrID0gKHBheWxvYWQpID0+IHtcbiAgICAgICAgaWYgKGRlZi5mbihwYXlsb2FkLnZhbHVlKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICBmb3JtYXQ6IGRlZi5mb3JtYXQsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICBjb250aW51ZTogIWRlZi5hYm9ydCxcbiAgICAgICAgfSk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROdW1iZXIgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE51bWJlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gaW5zdC5fem9kLmJhZy5wYXR0ZXJuID8/IHJlZ2V4ZXMubnVtYmVyO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGlmIChkZWYuY29lcmNlKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gTnVtYmVyKHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF8pIHsgfVxuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwibnVtYmVyXCIgJiYgIU51bWJlci5pc05hTihpbnB1dCkgJiYgTnVtYmVyLmlzRmluaXRlKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVjZWl2ZWQgPSB0eXBlb2YgaW5wdXQgPT09IFwibnVtYmVyXCJcbiAgICAgICAgICAgID8gTnVtYmVyLmlzTmFOKGlucHV0KVxuICAgICAgICAgICAgICAgID8gXCJOYU5cIlxuICAgICAgICAgICAgICAgIDogIU51bWJlci5pc0Zpbml0ZShpbnB1dClcbiAgICAgICAgICAgICAgICAgICAgPyBcIkluZmluaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgIC4uLihyZWNlaXZlZCA/IHsgcmVjZWl2ZWQgfSA6IHt9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTnVtYmVyRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2ROdW1iZXJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNoZWNrcy4kWm9kQ2hlY2tOdW1iZXJGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgICRab2ROdW1iZXIuaW5pdChpbnN0LCBkZWYpOyAvLyBubyBmb3JtYXQgY2hlY2tzcFxufSk7XG5leHBvcnQgY29uc3QgJFpvZEJvb2xlYW4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEJvb2xlYW5cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGF0dGVybiA9IHJlZ2V4ZXMuYm9vbGVhbjtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBpZiAoZGVmLmNvZXJjZSlcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IEJvb2xlYW4ocGF5bG9hZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJib29sZWFuXCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RCaWdJbnQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEJpZ0ludFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gcmVnZXhlcy5iaWdpbnQ7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5jb2VyY2UpXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBCaWdJbnQocGF5bG9hZC52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoXykgeyB9XG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC52YWx1ZSA9PT0gXCJiaWdpbnRcIilcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcImJpZ2ludFwiLFxuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQmlnSW50Rm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RCaWdJbnRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNoZWNrcy4kWm9kQ2hlY2tCaWdJbnRGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgICRab2RCaWdJbnQuaW5pdChpbnN0LCBkZWYpOyAvLyBubyBmb3JtYXQgY2hlY2tzXG59KTtcbmV4cG9ydCBjb25zdCAkWm9kU3ltYm9sID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RTeW1ib2xcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3ltYm9sXCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJzeW1ib2xcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFVuZGVmaW5lZCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVW5kZWZpbmVkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSByZWdleGVzLnVuZGVmaW5lZDtcbiAgICBpbnN0Ll96b2QudmFsdWVzID0gbmV3IFNldChbdW5kZWZpbmVkXSk7XG4gICAgaW5zdC5fem9kLm9wdGluID0gXCJvcHRpb25hbFwiO1xuICAgIGluc3QuX3pvZC5vcHRvdXQgPSBcIm9wdGlvbmFsXCI7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIGlucHV0ID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwidW5kZWZpbmVkXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROdWxsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2ROdWxsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSByZWdleGVzLm51bGw7XG4gICAgaW5zdC5fem9kLnZhbHVlcyA9IG5ldyBTZXQoW251bGxdKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmIChpbnB1dCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcIm51bGxcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZEFueSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQW55XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQpID0+IHBheWxvYWQ7XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kVW5rbm93biA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVW5rbm93blwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkKSA9PiBwYXlsb2FkO1xufSk7XG5leHBvcnQgY29uc3QgJFpvZE5ldmVyID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2ROZXZlclwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwibmV2ZXJcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFZvaWQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFZvaWRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBleHBlY3RlZDogXCJ2b2lkXCIsXG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2REYXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2REYXRlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5jb2VyY2UpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZSA9IG5ldyBEYXRlKHBheWxvYWQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKF9lcnIpIHsgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3QgaXNEYXRlID0gaW5wdXQgaW5zdGFuY2VvZiBEYXRlO1xuICAgICAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9IGlzRGF0ZSAmJiAhTnVtYmVyLmlzTmFOKGlucHV0LmdldFRpbWUoKSk7XG4gICAgICAgIGlmIChpc1ZhbGlkRGF0ZSlcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcImRhdGVcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIC4uLihpc0RhdGUgPyB7IHJlY2VpdmVkOiBcIkludmFsaWQgRGF0ZVwiIH0gOiB7fSksXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlQXJyYXlSZXN1bHQocmVzdWx0LCBmaW5hbCwgaW5kZXgpIHtcbiAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoaW5kZXgsIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICB9XG4gICAgZmluYWwudmFsdWVbaW5kZXhdID0gcmVzdWx0LnZhbHVlO1xufVxuZXhwb3J0IGNvbnN0ICRab2RBcnJheSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQXJyYXlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBBcnJheShpbnB1dC5sZW5ndGgpO1xuICAgICAgICBjb25zdCBwcm9tcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gaW5wdXRbaV07XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuZWxlbWVudC5fem9kLnJ1bih7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0sXG4gICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHByb21zLnB1c2gocmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlQXJyYXlSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBpKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQXJyYXlSZXN1bHQocmVzdWx0LCBwYXlsb2FkLCBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4gcGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7IC8vaGFuZGxlQXJyYXlSZXN1bHRzQXN5bmMocGFyc2VSZXN1bHRzLCBmaW5hbCk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlT2JqZWN0UmVzdWx0KHJlc3VsdCwgZmluYWwsIGtleSkge1xuICAgIC8vIGlmKGlzT3B0aW9uYWwpXG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgIH1cbiAgICBmaW5hbC52YWx1ZVtrZXldID0gcmVzdWx0LnZhbHVlO1xufVxuZnVuY3Rpb24gaGFuZGxlT3B0aW9uYWxPYmplY3RSZXN1bHQocmVzdWx0LCBmaW5hbCwga2V5LCBpbnB1dCkge1xuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAvLyB2YWxpZGF0aW9uIGZhaWxlZCBhZ2FpbnN0IHZhbHVlIHNjaGVtYVxuICAgICAgICBpZiAoaW5wdXRba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBpZiBpbnB1dCB3YXMgdW5kZWZpbmVkLCBpZ25vcmUgdGhlIGVycm9yXG4gICAgICAgICAgICBpZiAoa2V5IGluIGlucHV0KSB7XG4gICAgICAgICAgICAgICAgZmluYWwudmFsdWVba2V5XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbmFsLnZhbHVlW2tleV0gPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChyZXN1bHQudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyB2YWxpZGF0aW9uIHJldHVybmVkIGB1bmRlZmluZWRgXG4gICAgICAgIGlmIChrZXkgaW4gaW5wdXQpXG4gICAgICAgICAgICBmaW5hbC52YWx1ZVtrZXldID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgLy8gbm9uLXVuZGVmaW5lZCB2YWx1ZVxuICAgICAgICBmaW5hbC52YWx1ZVtrZXldID0gcmVzdWx0LnZhbHVlO1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCAkWm9kT2JqZWN0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RPYmplY3RcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIC8vIHJlcXVpcmVzIGNhc3QgYmVjYXVzZSB0ZWNobmljYWxseSAkWm9kT2JqZWN0IGRvZXNuJ3QgZXh0ZW5kXG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IF9ub3JtYWxpemVkID0gdXRpbC5jYWNoZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoZGVmLnNoYXBlKTtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgICAgICAgIGlmICghKGRlZi5zaGFwZVtrXSBpbnN0YW5jZW9mICRab2RUeXBlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBlbGVtZW50IGF0IGtleSBcIiR7a31cIjogZXhwZWN0ZWQgYSBab2Qgc2NoZW1hYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb2tleXMgPSB1dGlsLm9wdGlvbmFsS2V5cyhkZWYuc2hhcGUpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hhcGU6IGRlZi5zaGFwZSxcbiAgICAgICAgICAgIGtleXMsXG4gICAgICAgICAgICBrZXlTZXQ6IG5ldyBTZXQoa2V5cyksXG4gICAgICAgICAgICBudW1LZXlzOiBrZXlzLmxlbmd0aCxcbiAgICAgICAgICAgIG9wdGlvbmFsS2V5czogbmV3IFNldChva2V5cyksXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwcm9wVmFsdWVzXCIsICgpID0+IHtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSBkZWYuc2hhcGU7XG4gICAgICAgIGNvbnN0IHByb3BWYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2hhcGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gc2hhcGVba2V5XS5fem9kO1xuICAgICAgICAgICAgaWYgKGZpZWxkLnZhbHVlcykge1xuICAgICAgICAgICAgICAgIHByb3BWYWx1ZXNba2V5XSA/PyAocHJvcFZhbHVlc1trZXldID0gbmV3IFNldCgpKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgZmllbGQudmFsdWVzKVxuICAgICAgICAgICAgICAgICAgICBwcm9wVmFsdWVzW2tleV0uYWRkKHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wVmFsdWVzO1xuICAgIH0pO1xuICAgIGNvbnN0IGdlbmVyYXRlRmFzdHBhc3MgPSAoc2hhcGUpID0+IHtcbiAgICAgICAgY29uc3QgZG9jID0gbmV3IERvYyhbXCJzaGFwZVwiLCBcInBheWxvYWRcIiwgXCJjdHhcIl0pO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gX25vcm1hbGl6ZWQudmFsdWU7XG4gICAgICAgIGNvbnN0IHBhcnNlU3RyID0gKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgayA9IHV0aWwuZXNjKGtleSk7XG4gICAgICAgICAgICByZXR1cm4gYHNoYXBlWyR7a31dLl96b2QucnVuKHsgdmFsdWU6IGlucHV0WyR7a31dLCBpc3N1ZXM6IFtdIH0sIGN0eClgO1xuICAgICAgICB9O1xuICAgICAgICBkb2Mud3JpdGUoYGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtgKTtcbiAgICAgICAgY29uc3QgaWRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgbGV0IGNvdW50ZXIgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBub3JtYWxpemVkLmtleXMpIHtcbiAgICAgICAgICAgIGlkc1trZXldID0gYGtleV8ke2NvdW50ZXIrK31gO1xuICAgICAgICB9XG4gICAgICAgIC8vIEE6IHByZXNlcnZlIGtleSBvcmRlciB7XG4gICAgICAgIGRvYy53cml0ZShgY29uc3QgbmV3UmVzdWx0ID0ge31gKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Ygbm9ybWFsaXplZC5rZXlzKSB7XG4gICAgICAgICAgICBpZiAobm9ybWFsaXplZC5vcHRpb25hbEtleXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGlkc1trZXldO1xuICAgICAgICAgICAgICAgIGRvYy53cml0ZShgY29uc3QgJHtpZH0gPSAke3BhcnNlU3RyKGtleSl9O2ApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGsgPSB1dGlsLmVzYyhrZXkpO1xuICAgICAgICAgICAgICAgIGRvYy53cml0ZShgXG4gICAgICAgIGlmICgke2lkfS5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKGlucHV0WyR7a31dID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICgke2t9IGluIGlucHV0KSB7XG4gICAgICAgICAgICAgIG5ld1Jlc3VsdFske2t9XSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBwYXlsb2FkLmlzc3Vlcy5jb25jYXQoXG4gICAgICAgICAgICAgICR7aWR9Lmlzc3Vlcy5tYXAoKGlzcykgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi5pc3MsXG4gICAgICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHtrfSwgLi4uaXNzLnBhdGhdIDogWyR7a31dLFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCR7aWR9LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoJHtrfSBpbiBpbnB1dCkgbmV3UmVzdWx0WyR7a31dID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1Jlc3VsdFske2t9XSA9ICR7aWR9LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaWQgPSBpZHNba2V5XTtcbiAgICAgICAgICAgICAgICAvLyAgY29uc3QgaWQgPSBpZHNba2V5XTtcbiAgICAgICAgICAgICAgICBkb2Mud3JpdGUoYGNvbnN0ICR7aWR9ID0gJHtwYXJzZVN0cihrZXkpfTtgKTtcbiAgICAgICAgICAgICAgICBkb2Mud3JpdGUoYFxuICAgICAgICAgIGlmICgke2lkfS5pc3N1ZXMubGVuZ3RoKSBwYXlsb2FkLmlzc3VlcyA9IHBheWxvYWQuaXNzdWVzLmNvbmNhdCgke2lkfS5pc3N1ZXMubWFwKGlzcyA9PiAoe1xuICAgICAgICAgICAgLi4uaXNzLFxuICAgICAgICAgICAgcGF0aDogaXNzLnBhdGggPyBbJHt1dGlsLmVzYyhrZXkpfSwgLi4uaXNzLnBhdGhdIDogWyR7dXRpbC5lc2Moa2V5KX1dXG4gICAgICAgICAgfSkpKTtgKTtcbiAgICAgICAgICAgICAgICBkb2Mud3JpdGUoYG5ld1Jlc3VsdFske3V0aWwuZXNjKGtleSl9XSA9ICR7aWR9LnZhbHVlYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZG9jLndyaXRlKGBwYXlsb2FkLnZhbHVlID0gbmV3UmVzdWx0O2ApO1xuICAgICAgICBkb2Mud3JpdGUoYHJldHVybiBwYXlsb2FkO2ApO1xuICAgICAgICBjb25zdCBmbiA9IGRvYy5jb21waWxlKCk7XG4gICAgICAgIHJldHVybiAocGF5bG9hZCwgY3R4KSA9PiBmbihzaGFwZSwgcGF5bG9hZCwgY3R4KTtcbiAgICB9O1xuICAgIGxldCBmYXN0cGFzcztcbiAgICBjb25zdCBpc09iamVjdCA9IHV0aWwuaXNPYmplY3Q7XG4gICAgY29uc3Qgaml0ID0gIWNvcmUuZ2xvYmFsQ29uZmlnLmppdGxlc3M7XG4gICAgY29uc3QgYWxsb3dzRXZhbCA9IHV0aWwuYWxsb3dzRXZhbDtcbiAgICBjb25zdCBmYXN0RW5hYmxlZCA9IGppdCAmJiBhbGxvd3NFdmFsLnZhbHVlOyAvLyAmJiAhZGVmLmNhdGNoYWxsO1xuICAgIGNvbnN0IGNhdGNoYWxsID0gZGVmLmNhdGNoYWxsO1xuICAgIGxldCB2YWx1ZTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIHZhbHVlID8/ICh2YWx1ZSA9IF9ub3JtYWxpemVkLnZhbHVlKTtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoIWlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwib2JqZWN0XCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9tcyA9IFtdO1xuICAgICAgICBpZiAoaml0ICYmIGZhc3RFbmFibGVkICYmIGN0eD8uYXN5bmMgPT09IGZhbHNlICYmIGN0eC5qaXRsZXNzICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAvLyBhbHdheXMgc3luY2hyb25vdXNcbiAgICAgICAgICAgIGlmICghZmFzdHBhc3MpXG4gICAgICAgICAgICAgICAgZmFzdHBhc3MgPSBnZW5lcmF0ZUZhc3RwYXNzKGRlZi5zaGFwZSk7XG4gICAgICAgICAgICBwYXlsb2FkID0gZmFzdHBhc3MocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSB7fTtcbiAgICAgICAgICAgIGNvbnN0IHNoYXBlID0gdmFsdWUuc2hhcGU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB2YWx1ZS5rZXlzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZWwgPSBzaGFwZVtrZXldO1xuICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgb21pdHRlZCBvcHRpb25hbCBrZXlzXG4gICAgICAgICAgICAgICAgLy8gaWYgKCEoa2V5IGluIGlucHV0KSkge1xuICAgICAgICAgICAgICAgIC8vICAgaWYgKG9wdGlvbmFsS2V5cy5oYXMoa2V5KSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgLy8gICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAvLyAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICAvLyAgICAgcGF0aDogW2tleV0sXG4gICAgICAgICAgICAgICAgLy8gICAgIGV4cGVjdGVkOiBcIm5vbm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgLy8gICAgIG5vdGU6IGBNaXNzaW5nIHJlcXVpcmVkIGtleTogXCIke2tleX1cImAsXG4gICAgICAgICAgICAgICAgLy8gICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIC8vICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIC8vICAgfSk7XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBlbC5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFtrZXldLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNPcHRpb25hbCA9IGVsLl96b2Qub3B0aW4gPT09IFwib3B0aW9uYWxcIiAmJiBlbC5fem9kLm9wdG91dCA9PT0gXCJvcHRpb25hbFwiO1xuICAgICAgICAgICAgICAgIGlmIChyIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHIudGhlbigocikgPT4gaXNPcHRpb25hbCA/IGhhbmRsZU9wdGlvbmFsT2JqZWN0UmVzdWx0KHIsIHBheWxvYWQsIGtleSwgaW5wdXQpIDogaGFuZGxlT2JqZWN0UmVzdWx0KHIsIHBheWxvYWQsIGtleSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNPcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcHRpb25hbE9iamVjdFJlc3VsdChyLCBwYXlsb2FkLCBrZXksIGlucHV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZU9iamVjdFJlc3VsdChyLCBwYXlsb2FkLCBrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWNhdGNoYWxsKSB7XG4gICAgICAgICAgICAvLyByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgIHJldHVybiBwcm9tcy5sZW5ndGggPyBQcm9taXNlLmFsbChwcm9tcykudGhlbigoKSA9PiBwYXlsb2FkKSA6IHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdW5yZWNvZ25pemVkID0gW107XG4gICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBpbnB1dCBrZXlzXG4gICAgICAgIGNvbnN0IGtleVNldCA9IHZhbHVlLmtleVNldDtcbiAgICAgICAgY29uc3QgX2NhdGNoYWxsID0gY2F0Y2hhbGwuX3pvZDtcbiAgICAgICAgY29uc3QgdCA9IF9jYXRjaGFsbC5kZWYudHlwZTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoaW5wdXQpKSB7XG4gICAgICAgICAgICBpZiAoa2V5U2V0LmhhcyhrZXkpKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKHQgPT09IFwibmV2ZXJcIikge1xuICAgICAgICAgICAgICAgIHVucmVjb2duaXplZC5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByID0gX2NhdGNoYWxsLnJ1bih7IHZhbHVlOiBpbnB1dFtrZXldLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHIudGhlbigocikgPT4gaGFuZGxlT2JqZWN0UmVzdWx0KHIsIHBheWxvYWQsIGtleSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGhhbmRsZU9iamVjdFJlc3VsdChyLCBwYXlsb2FkLCBrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh1bnJlY29nbml6ZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBcInVucmVjb2duaXplZF9rZXlzXCIsXG4gICAgICAgICAgICAgICAga2V5czogdW5yZWNvZ25pemVkLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXByb21zLmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH0pO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVVuaW9uUmVzdWx0cyhyZXN1bHRzLCBmaW5hbCwgaW5zdCwgY3R4KSB7XG4gICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGZpbmFsLnZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIGZpbmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmFsLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgY29kZTogXCJpbnZhbGlkX3VuaW9uXCIsXG4gICAgICAgIGlucHV0OiBmaW5hbC52YWx1ZSxcbiAgICAgICAgaW5zdCxcbiAgICAgICAgZXJyb3JzOiByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSksXG4gICAgfSk7XG4gICAgcmV0dXJuIGZpbmFsO1xufVxuZXhwb3J0IGNvbnN0ICRab2RVbmlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdGluXCIsICgpID0+IGRlZi5vcHRpb25zLnNvbWUoKG8pID0+IG8uX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiKSA/IFwib3B0aW9uYWxcIiA6IHVuZGVmaW5lZCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLm9wdGlvbnMuc29tZSgobykgPT4gby5fem9kLm9wdG91dCA9PT0gXCJvcHRpb25hbFwiKSA/IFwib3B0aW9uYWxcIiA6IHVuZGVmaW5lZCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICBpZiAoZGVmLm9wdGlvbnMuZXZlcnkoKG8pID0+IG8uX3pvZC52YWx1ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNldChkZWYub3B0aW9ucy5mbGF0TWFwKChvcHRpb24pID0+IEFycmF5LmZyb20ob3B0aW9uLl96b2QudmFsdWVzKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwYXR0ZXJuXCIsICgpID0+IHtcbiAgICAgICAgaWYgKGRlZi5vcHRpb25zLmV2ZXJ5KChvKSA9PiBvLl96b2QucGF0dGVybikpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdHRlcm5zID0gZGVmLm9wdGlvbnMubWFwKChvKSA9PiBvLl96b2QucGF0dGVybik7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgXigke3BhdHRlcm5zLm1hcCgocCkgPT4gdXRpbC5jbGVhblJlZ2V4KHAuc291cmNlKSkuam9pbihcInxcIil9KSRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgbGV0IGFzeW5jID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdGlvbi5fem9kLnJ1bih7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgICAgICAgICAgICAgIGFzeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWFzeW5jKVxuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVVuaW9uUmVzdWx0cyhyZXN1bHRzLCBwYXlsb2FkLCBpbnN0LCBjdHgpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocmVzdWx0cykudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVVuaW9uUmVzdWx0cyhyZXN1bHRzLCBwYXlsb2FkLCBpbnN0LCBjdHgpO1xuICAgICAgICB9KTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZERpc2NyaW1pbmF0ZWRVbmlvbiA9IFxuLypAX19QVVJFX18qL1xuY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRGlzY3JpbWluYXRlZFVuaW9uXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVW5pb24uaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IF9zdXBlciA9IGluc3QuX3pvZC5wYXJzZTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInByb3BWYWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wVmFsdWVzID0ge307XG4gICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIGRlZi5vcHRpb25zKSB7XG4gICAgICAgICAgICBjb25zdCBwdiA9IG9wdGlvbi5fem9kLnByb3BWYWx1ZXM7XG4gICAgICAgICAgICBpZiAoIXB2IHx8IE9iamVjdC5rZXlzKHB2KS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4IFwiJHtkZWYub3B0aW9ucy5pbmRleE9mKG9wdGlvbil9XCJgKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHB2KSkge1xuICAgICAgICAgICAgICAgIGlmICghcHJvcFZhbHVlc1trXSlcbiAgICAgICAgICAgICAgICAgICAgcHJvcFZhbHVlc1trXSA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB2KSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BWYWx1ZXNba10uYWRkKHZhbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wVmFsdWVzO1xuICAgIH0pO1xuICAgIGNvbnN0IGRpc2MgPSB1dGlsLmNhY2hlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSBkZWYub3B0aW9ucztcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IG8gb2Ygb3B0cykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gby5fem9kLnByb3BWYWx1ZXNbZGVmLmRpc2NyaW1pbmF0b3JdO1xuICAgICAgICAgICAgaWYgKCF2YWx1ZXMgfHwgdmFsdWVzLnNpemUgPT09IDApXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRpc2NyaW1pbmF0ZWQgdW5pb24gb3B0aW9uIGF0IGluZGV4IFwiJHtkZWYub3B0aW9ucy5pbmRleE9mKG8pfVwiYCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1hcC5oYXModikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgZGlzY3JpbWluYXRvciB2YWx1ZSBcIiR7U3RyaW5nKHYpfVwiYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcC5zZXQodiwgbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCF1dGlsLmlzT2JqZWN0KGlucHV0KSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJvYmplY3RcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHQgPSBkaXNjLnZhbHVlLmdldChpbnB1dD8uW2RlZi5kaXNjcmltaW5hdG9yXSk7XG4gICAgICAgIGlmIChvcHQpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHQuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmLnVuaW9uRmFsbGJhY2spIHtcbiAgICAgICAgICAgIHJldHVybiBfc3VwZXIocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBubyBtYXRjaGluZyBkaXNjcmltaW5hdG9yXG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX3VuaW9uXCIsXG4gICAgICAgICAgICBlcnJvcnM6IFtdLFxuICAgICAgICAgICAgbm90ZTogXCJObyBtYXRjaGluZyBkaXNjcmltaW5hdG9yXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIHBhdGg6IFtkZWYuZGlzY3JpbWluYXRvcl0sXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RJbnRlcnNlY3Rpb24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEludGVyc2VjdGlvblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBjb25zdCBsZWZ0ID0gZGVmLmxlZnQuX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXQsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgY29uc3QgcmlnaHQgPSBkZWYucmlnaHQuX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXQsIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgY29uc3QgYXN5bmMgPSBsZWZ0IGluc3RhbmNlb2YgUHJvbWlzZSB8fCByaWdodCBpbnN0YW5jZW9mIFByb21pc2U7XG4gICAgICAgIGlmIChhc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtsZWZ0LCByaWdodF0pLnRoZW4oKFtsZWZ0LCByaWdodF0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhwYXlsb2FkLCBsZWZ0LCByaWdodCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFuZGxlSW50ZXJzZWN0aW9uUmVzdWx0cyhwYXlsb2FkLCBsZWZ0LCByaWdodCk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gbWVyZ2VWYWx1ZXMoYSwgYikge1xuICAgIC8vIGNvbnN0IGFUeXBlID0gcGFyc2UudChhKTtcbiAgICAvLyBjb25zdCBiVHlwZSA9IHBhcnNlLnQoYik7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IGEgfTtcbiAgICB9XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBEYXRlICYmIGIgaW5zdGFuY2VvZiBEYXRlICYmICthID09PSArYikge1xuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogYSB9O1xuICAgIH1cbiAgICBpZiAodXRpbC5pc1BsYWluT2JqZWN0KGEpICYmIHV0aWwuaXNQbGFpbk9iamVjdChiKSkge1xuICAgICAgICBjb25zdCBiS2V5cyA9IE9iamVjdC5rZXlzKGIpO1xuICAgICAgICBjb25zdCBzaGFyZWRLZXlzID0gT2JqZWN0LmtleXMoYSkuZmlsdGVyKChrZXkpID0+IGJLZXlzLmluZGV4T2Yoa2V5KSAhPT0gLTEpO1xuICAgICAgICBjb25zdCBuZXdPYmogPSB7IC4uLmEsIC4uLmIgfTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Ygc2hhcmVkS2V5cykge1xuICAgICAgICAgICAgY29uc3Qgc2hhcmVkVmFsdWUgPSBtZXJnZVZhbHVlcyhhW2tleV0sIGJba2V5XSk7XG4gICAgICAgICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBtZXJnZUVycm9yUGF0aDogW2tleSwgLi4uc2hhcmVkVmFsdWUubWVyZ2VFcnJvclBhdGhdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdPYmpba2V5XSA9IHNoYXJlZFZhbHVlLmRhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IG5ld09iaiB9O1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgbWVyZ2VFcnJvclBhdGg6IFtdIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3QXJyYXkgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGEubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpdGVtQSA9IGFbaW5kZXhdO1xuICAgICAgICAgICAgY29uc3QgaXRlbUIgPSBiW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHNoYXJlZFZhbHVlID0gbWVyZ2VWYWx1ZXMoaXRlbUEsIGl0ZW1CKTtcbiAgICAgICAgICAgIGlmICghc2hhcmVkVmFsdWUudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlRXJyb3JQYXRoOiBbaW5kZXgsIC4uLnNoYXJlZFZhbHVlLm1lcmdlRXJyb3JQYXRoXSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3QXJyYXkucHVzaChzaGFyZWRWYWx1ZS5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogbmV3QXJyYXkgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlLCBtZXJnZUVycm9yUGF0aDogW10gfTtcbn1cbmZ1bmN0aW9uIGhhbmRsZUludGVyc2VjdGlvblJlc3VsdHMocmVzdWx0LCBsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0Lmlzc3Vlcy5wdXNoKC4uLmxlZnQuaXNzdWVzKTtcbiAgICB9XG4gICAgaWYgKHJpZ2h0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzdWx0Lmlzc3Vlcy5wdXNoKC4uLnJpZ2h0Lmlzc3Vlcyk7XG4gICAgfVxuICAgIGlmICh1dGlsLmFib3J0ZWQocmVzdWx0KSlcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZVZhbHVlcyhsZWZ0LnZhbHVlLCByaWdodC52YWx1ZSk7XG4gICAgaWYgKCFtZXJnZWQudmFsaWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbm1lcmdhYmxlIGludGVyc2VjdGlvbi4gRXJyb3IgcGF0aDogYCArIGAke0pTT04uc3RyaW5naWZ5KG1lcmdlZC5tZXJnZUVycm9yUGF0aCl9YCk7XG4gICAgfVxuICAgIHJlc3VsdC52YWx1ZSA9IG1lcmdlZC5kYXRhO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnQgY29uc3QgJFpvZFR1cGxlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RUdXBsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IGl0ZW1zID0gZGVmLml0ZW1zO1xuICAgIGNvbnN0IG9wdFN0YXJ0ID0gaXRlbXMubGVuZ3RoIC0gWy4uLml0ZW1zXS5yZXZlcnNlKCkuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLl96b2Qub3B0aW4gIT09IFwib3B0aW9uYWxcIik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHBheWxvYWQudmFsdWU7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbnB1dCkpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwidHVwbGVcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0gW107XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIGlmICghZGVmLnJlc3QpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGlucHV0Lmxlbmd0aCA+IGl0ZW1zLmxlbmd0aDtcbiAgICAgICAgICAgIGNvbnN0IHRvb1NtYWxsID0gaW5wdXQubGVuZ3RoIDwgb3B0U3RhcnQgLSAxO1xuICAgICAgICAgICAgaWYgKHRvb0JpZyB8fCB0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luOiBcImFycmF5XCIsXG4gICAgICAgICAgICAgICAgICAgIC4uLih0b29CaWcgPyB7IGNvZGU6IFwidG9vX2JpZ1wiLCBtYXhpbXVtOiBpdGVtcy5sZW5ndGggfSA6IHsgY29kZTogXCJ0b29fc21hbGxcIiwgbWluaW11bTogaXRlbXMubGVuZ3RoIH0pLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBpID0gLTE7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgaWYgKGkgPj0gaW5wdXQubGVuZ3RoKVxuICAgICAgICAgICAgICAgIGlmIChpID49IG9wdFN0YXJ0KVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGl0ZW0uX3pvZC5ydW4oe1xuICAgICAgICAgICAgICAgIHZhbHVlOiBpbnB1dFtpXSxcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSwgY3R4KTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcHJvbXMucHVzaChyZXN1bHQudGhlbigocmVzdWx0KSA9PiBoYW5kbGVUdXBsZVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGkpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVUdXBsZVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChkZWYucmVzdCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdCA9IGlucHV0LnNsaWNlKGl0ZW1zLmxlbmd0aCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVsIG9mIHJlc3QpIHtcbiAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLnJlc3QuX3pvZC5ydW4oe1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZWwsXG4gICAgICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgfSwgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHJlc3VsdC50aGVuKChyZXN1bHQpID0+IGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSkpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgcGF5bG9hZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9tcy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbXMpLnRoZW4oKCkgPT4gcGF5bG9hZCk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVR1cGxlUmVzdWx0KHJlc3VsdCwgZmluYWwsIGluZGV4KSB7XG4gICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGluZGV4LCByZXN1bHQuaXNzdWVzKSk7XG4gICAgfVxuICAgIGZpbmFsLnZhbHVlW2luZGV4XSA9IHJlc3VsdC52YWx1ZTtcbn1cbmV4cG9ydCBjb25zdCAkWm9kUmVjb3JkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RSZWNvcmRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCF1dGlsLmlzUGxhaW5PYmplY3QoaW5wdXQpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJyZWNvcmRcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIGlmIChkZWYua2V5VHlwZS5fem9kLnZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gZGVmLmtleVR5cGUuX3pvZC52YWx1ZXM7XG4gICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2Yga2V5ID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiBrZXkgPT09IFwic3ltYm9sXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLnZhbHVlVHlwZS5fem9kLnJ1bih7IHZhbHVlOiBpbnB1dFtrZXldLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9tcy5wdXNoKHJlc3VsdC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC52YWx1ZVtrZXldID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWVba2V5XSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB1bnJlY29nbml6ZWQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBpbnB1dCkge1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWVzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIHVucmVjb2duaXplZCA9IHVucmVjb2duaXplZCA/PyBbXTtcbiAgICAgICAgICAgICAgICAgICAgdW5yZWNvZ25pemVkLnB1c2goa2V5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodW5yZWNvZ25pemVkICYmIHVucmVjb2duaXplZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFwidW5yZWNvZ25pemVkX2tleXNcIixcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgICAgIGtleXM6IHVucmVjb2duaXplZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIFJlZmxlY3Qub3duS2V5cyhpbnB1dCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBcIl9fcHJvdG9fX1wiKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCBrZXlSZXN1bHQgPSBkZWYua2V5VHlwZS5fem9kLnJ1bih7IHZhbHVlOiBrZXksIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5UmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3luYyBzY2hlbWFzIG5vdCBzdXBwb3J0ZWQgaW4gb2JqZWN0IGtleXMgY3VycmVudGx5XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoa2V5UmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW46IFwicmVjb3JkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfa2V5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IGtleVJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFtrZXldLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWVba2V5UmVzdWx0LnZhbHVlXSA9IGtleVJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi52YWx1ZVR5cGUuX3pvZC5ydW4oeyB2YWx1ZTogaW5wdXRba2V5XSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21zLnB1c2gocmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCguLi51dGlsLnByZWZpeElzc3VlcyhrZXksIHJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWVba2V5UmVzdWx0LnZhbHVlXSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKC4uLnV0aWwucHJlZml4SXNzdWVzKGtleSwgcmVzdWx0Lmlzc3VlcykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWVba2V5UmVzdWx0LnZhbHVlXSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb21zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21zKS50aGVuKCgpID0+IHBheWxvYWQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTWFwID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RNYXBcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCEoaW5wdXQgaW5zdGFuY2VvZiBNYXApKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogXCJtYXBcIixcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBuZXcgTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGlucHV0KSB7XG4gICAgICAgICAgICBjb25zdCBrZXlSZXN1bHQgPSBkZWYua2V5VHlwZS5fem9kLnJ1bih7IHZhbHVlOiBrZXksIGlzc3VlczogW10gfSwgY3R4KTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlUmVzdWx0ID0gZGVmLnZhbHVlVHlwZS5fem9kLnJ1bih7IHZhbHVlOiB2YWx1ZSwgaXNzdWVzOiBbXSB9LCBjdHgpO1xuICAgICAgICAgICAgaWYgKGtleVJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UgfHwgdmFsdWVSZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgcHJvbXMucHVzaChQcm9taXNlLmFsbChba2V5UmVzdWx0LCB2YWx1ZVJlc3VsdF0pLnRoZW4oKFtrZXlSZXN1bHQsIHZhbHVlUmVzdWx0XSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVNYXBSZXN1bHQoa2V5UmVzdWx0LCB2YWx1ZVJlc3VsdCwgcGF5bG9hZCwga2V5LCBpbnB1dCwgaW5zdCwgY3R4KTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBoYW5kbGVNYXBSZXN1bHQoa2V5UmVzdWx0LCB2YWx1ZVJlc3VsdCwgcGF5bG9hZCwga2V5LCBpbnB1dCwgaW5zdCwgY3R4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvbXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21zKS50aGVuKCgpID0+IHBheWxvYWQpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVNYXBSZXN1bHQoa2V5UmVzdWx0LCB2YWx1ZVJlc3VsdCwgZmluYWwsIGtleSwgaW5wdXQsIGluc3QsIGN0eCkge1xuICAgIGlmIChrZXlSZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBpZiAodXRpbC5wcm9wZXJ0eUtleVR5cGVzLmhhcyh0eXBlb2Yga2V5KSkge1xuICAgICAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoa2V5LCBrZXlSZXN1bHQuaXNzdWVzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgb3JpZ2luOiBcIm1hcFwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF9rZXlcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGlzc3Vlczoga2V5UmVzdWx0Lmlzc3Vlcy5tYXAoKGlzcykgPT4gdXRpbC5maW5hbGl6ZUlzc3VlKGlzcywgY3R4LCBjb3JlLmNvbmZpZygpKSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodmFsdWVSZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBpZiAodXRpbC5wcm9wZXJ0eUtleVR5cGVzLmhhcyh0eXBlb2Yga2V5KSkge1xuICAgICAgICAgICAgZmluYWwuaXNzdWVzLnB1c2goLi4udXRpbC5wcmVmaXhJc3N1ZXMoa2V5LCB2YWx1ZVJlc3VsdC5pc3N1ZXMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpbmFsLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBvcmlnaW46IFwibWFwXCIsXG4gICAgICAgICAgICAgICAgY29kZTogXCJpbnZhbGlkX2VsZW1lbnRcIixcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIGlzc3VlczogdmFsdWVSZXN1bHQuaXNzdWVzLm1hcCgoaXNzKSA9PiB1dGlsLmZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvcmUuY29uZmlnKCkpKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbmFsLnZhbHVlLnNldChrZXlSZXN1bHQudmFsdWUsIHZhbHVlUmVzdWx0LnZhbHVlKTtcbn1cbmV4cG9ydCBjb25zdCAkWm9kU2V0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RTZXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKCEoaW5wdXQgaW5zdGFuY2VvZiBTZXQpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcInNldFwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21zID0gW107XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSBuZXcgU2V0KCk7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpbnB1dCkge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLnZhbHVlVHlwZS5fem9kLnJ1bih7IHZhbHVlOiBpdGVtLCBpc3N1ZXM6IFtdIH0sIGN0eCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHByb21zLnB1c2gocmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlU2V0UmVzdWx0KHJlc3VsdCwgcGF5bG9hZCkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBoYW5kbGVTZXRSZXN1bHQocmVzdWx0LCBwYXlsb2FkKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvbXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21zKS50aGVuKCgpID0+IHBheWxvYWQpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVTZXRSZXN1bHQocmVzdWx0LCBmaW5hbCkge1xuICAgIGlmIChyZXN1bHQuaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICBmaW5hbC5pc3N1ZXMucHVzaCguLi5yZXN1bHQuaXNzdWVzKTtcbiAgICB9XG4gICAgZmluYWwudmFsdWUuYWRkKHJlc3VsdC52YWx1ZSk7XG59XG5leHBvcnQgY29uc3QgJFpvZEVudW0gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZEVudW1cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBjb25zdCB2YWx1ZXMgPSB1dGlsLmdldEVudW1WYWx1ZXMoZGVmLmVudHJpZXMpO1xuICAgIGluc3QuX3pvZC52YWx1ZXMgPSBuZXcgU2V0KHZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBuZXcgUmVnRXhwKGBeKCR7dmFsdWVzXG4gICAgICAgIC5maWx0ZXIoKGspID0+IHV0aWwucHJvcGVydHlLZXlUeXBlcy5oYXModHlwZW9mIGspKVxuICAgICAgICAubWFwKChvKSA9PiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB1dGlsLmVzY2FwZVJlZ2V4KG8pIDogby50b1N0cmluZygpKSlcbiAgICAgICAgLmpvaW4oXCJ8XCIpfSkkYCk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBwYXlsb2FkLnZhbHVlO1xuICAgICAgICBpZiAoaW5zdC5fem9kLnZhbHVlcy5oYXMoaW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF92YWx1ZVwiLFxuICAgICAgICAgICAgdmFsdWVzLFxuICAgICAgICAgICAgaW5wdXQsXG4gICAgICAgICAgICBpbnN0LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RMaXRlcmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RMaXRlcmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnZhbHVlcyA9IG5ldyBTZXQoZGVmLnZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnBhdHRlcm4gPSBuZXcgUmVnRXhwKGBeKCR7ZGVmLnZhbHVlc1xuICAgICAgICAubWFwKChvKSA9PiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB1dGlsLmVzY2FwZVJlZ2V4KG8pIDogbyA/IG8udG9TdHJpbmcoKSA6IFN0cmluZyhvKSkpXG4gICAgICAgIC5qb2luKFwifFwiKX0pJGApO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKGluc3QuX3pvZC52YWx1ZXMuaGFzKGlucHV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdmFsdWVcIixcbiAgICAgICAgICAgIHZhbHVlczogZGVmLnZhbHVlcyxcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kRmlsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kRmlsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRmlsZSlcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgIGV4cGVjdGVkOiBcImZpbGVcIixcbiAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZFRyYW5zZm9ybSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kVHJhbnNmb3JtXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIF9jdHgpID0+IHtcbiAgICAgICAgY29uc3QgX291dCA9IGRlZi50cmFuc2Zvcm0ocGF5bG9hZC52YWx1ZSwgcGF5bG9hZCk7XG4gICAgICAgIGlmIChfY3R4LmFzeW5jKSB7XG4gICAgICAgICAgICBjb25zdCBvdXRwdXQgPSBfb3V0IGluc3RhbmNlb2YgUHJvbWlzZSA/IF9vdXQgOiBQcm9taXNlLnJlc29sdmUoX291dCk7XG4gICAgICAgICAgICByZXR1cm4gb3V0cHV0LnRoZW4oKG91dHB1dCkgPT4ge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBvdXRwdXQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoX291dCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBjb3JlLiRab2RBc3luY0Vycm9yKCk7XG4gICAgICAgIH1cbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IF9vdXQ7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLm9wdGluID0gXCJvcHRpb25hbFwiO1xuICAgIGluc3QuX3pvZC5vcHRvdXQgPSBcIm9wdGlvbmFsXCI7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyA/IG5ldyBTZXQoWy4uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsIHVuZGVmaW5lZF0pIDogdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicGF0dGVyblwiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPSBkZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4gPyBuZXcgUmVnRXhwKGBeKCR7dXRpbC5jbGVhblJlZ2V4KHBhdHRlcm4uc291cmNlKX0pPyRgKSA6IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChkZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4gPT09IFwib3B0aW9uYWxcIikge1xuICAgICAgICAgICAgcmV0dXJuIGRlZi5pbm5lclR5cGUuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF5bG9hZC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTnVsbGFibGUgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE51bGxhYmxlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRpblwiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2Qub3B0aW4pO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0b3V0XCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC5vcHRvdXQpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicGF0dGVyblwiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdHRlcm4gPSBkZWYuaW5uZXJUeXBlLl96b2QucGF0dGVybjtcbiAgICAgICAgcmV0dXJuIHBhdHRlcm4gPyBuZXcgUmVnRXhwKGBeKCR7dXRpbC5jbGVhblJlZ2V4KHBhdHRlcm4uc291cmNlKX18bnVsbCkkYCkgOiB1bmRlZmluZWQ7XG4gICAgfSk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyA/IG5ldyBTZXQoWy4uLmRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMsIG51bGxdKSA6IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgIHJldHVybiBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2REZWZhdWx0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2REZWZhdWx0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgLy8gaW5zdC5fem9kLnFpbiA9IFwidHJ1ZVwiO1xuICAgIGluc3QuX3pvZC5vcHRpbiA9IFwib3B0aW9uYWxcIjtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInZhbHVlc1wiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2QudmFsdWVzKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBkZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiAkWm9kRGVmYXVsdCBhbHdheXMgcmV0dXJucyB0aGUgZGVmYXVsdCB2YWx1ZSBpbW1lZGlhdGVseS5cbiAgICAgICAgICAgICAqIEl0IGRvZXNuJ3QgcGFzcyB0aGUgZGVmYXVsdCB2YWx1ZSBpbnRvIHRoZSB2YWxpZGF0b3IgKFwicHJlZmF1bHRcIikuIFRoZXJlJ3Mgbm8gcmVhc29uIHRvIHBhc3MgdGhlIGRlZmF1bHQgdmFsdWUgdGhyb3VnaCB2YWxpZGF0aW9uLiBUaGUgdmFsaWRpdHkgb2YgdGhlIGRlZmF1bHQgaXMgZW5mb3JjZWQgYnkgVHlwZVNjcmlwdCBzdGF0aWNhbGx5LiBPdGhlcndpc2UsIGl0J3MgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSB1c2VyIHRvIGVuc3VyZSB0aGUgZGVmYXVsdCBpcyB2YWxpZC4gSW4gdGhlIGNhc2Ugb2YgcGlwZXMgd2l0aCBkaXZlcmdlbnQgaW4vb3V0IHR5cGVzLCB5b3UgY2FuIHNwZWNpZnkgdGhlIGRlZmF1bHQgb24gdGhlIGBpbmAgc2NoZW1hIG9mIHlvdXIgWm9kUGlwZSB0byBzZXQgYSBcInByZWZhdWx0XCIgZm9yIHRoZSBwaXBlLiAgICovXG4gICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4gaGFuZGxlRGVmYXVsdFJlc3VsdChyZXN1bHQsIGRlZikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYW5kbGVEZWZhdWx0UmVzdWx0KHJlc3VsdCwgZGVmKTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVEZWZhdWx0UmVzdWx0KHBheWxvYWQsIGRlZikge1xuICAgIGlmIChwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcGF5bG9hZC52YWx1ZSA9IGRlZi5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xufVxuZXhwb3J0IGNvbnN0ICRab2RQcmVmYXVsdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kUHJlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub3B0aW4gPSBcIm9wdGlvbmFsXCI7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwYXlsb2FkLnZhbHVlID0gZGVmLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kTm9uT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE5vbk9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4ge1xuICAgICAgICBjb25zdCB2ID0gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcztcbiAgICAgICAgcmV0dXJuIHYgPyBuZXcgU2V0KFsuLi52XS5maWx0ZXIoKHgpID0+IHggIT09IHVuZGVmaW5lZCkpIDogdW5kZWZpbmVkO1xuICAgIH0pO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGVmLmlubmVyVHlwZS5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC50aGVuKChyZXN1bHQpID0+IGhhbmRsZU5vbk9wdGlvbmFsUmVzdWx0KHJlc3VsdCwgaW5zdCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYW5kbGVOb25PcHRpb25hbFJlc3VsdChyZXN1bHQsIGluc3QpO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZU5vbk9wdGlvbmFsUmVzdWx0KHBheWxvYWQsIGluc3QpIHtcbiAgICBpZiAoIXBheWxvYWQuaXNzdWVzLmxlbmd0aCAmJiBwYXlsb2FkLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICBjb2RlOiBcImludmFsaWRfdHlwZVwiLFxuICAgICAgICAgICAgZXhwZWN0ZWQ6IFwibm9ub3B0aW9uYWxcIixcbiAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBwYXlsb2FkO1xufVxuZXhwb3J0IGNvbnN0ICRab2RTdWNjZXNzID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RTdWNjZXNzXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICAkWm9kVHlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSByZXN1bHQuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHBheWxvYWQudmFsdWUgPSByZXN1bHQuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2RDYXRjaCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kQ2F0Y2hcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2Qub3B0aW4gPSBcIm9wdGlvbmFsXCI7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLm9wdG91dCk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJ2YWx1ZXNcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnZhbHVlcyk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkZWYuaW5uZXJUeXBlLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5pc3N1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBkZWYuY2F0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXlsb2FkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBwYXlsb2FkLnZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAocmVzdWx0Lmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBheWxvYWQudmFsdWUgPSBkZWYuY2F0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgLi4ucGF5bG9hZCxcbiAgICAgICAgICAgICAgICBlcnJvcjoge1xuICAgICAgICAgICAgICAgICAgICBpc3N1ZXM6IHJlc3VsdC5pc3N1ZXMubWFwKChpc3MpID0+IHV0aWwuZmluYWxpemVJc3N1ZShpc3MsIGN0eCwgY29yZS5jb25maWcoKSkpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgfTtcbn0pO1xuZXhwb3J0IGNvbnN0ICRab2ROYU4gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZE5hTlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBfY3R4KSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcGF5bG9hZC52YWx1ZSAhPT0gXCJudW1iZXJcIiB8fCAhTnVtYmVyLmlzTmFOKHBheWxvYWQudmFsdWUpKSB7XG4gICAgICAgICAgICBwYXlsb2FkLmlzc3Vlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpbnB1dDogcGF5bG9hZC52YWx1ZSxcbiAgICAgICAgICAgICAgICBpbnN0LFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBcIm5hblwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kUGlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kUGlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwidmFsdWVzXCIsICgpID0+IGRlZi5pbi5fem9kLnZhbHVlcyk7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRpblwiLCAoKSA9PiBkZWYuaW4uX3pvZC5vcHRpbik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gZGVmLm91dC5fem9kLm9wdG91dCk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBsZWZ0ID0gZGVmLmluLl96b2QucnVuKHBheWxvYWQsIGN0eCk7XG4gICAgICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGxlZnQudGhlbigobGVmdCkgPT4gaGFuZGxlUGlwZVJlc3VsdChsZWZ0LCBkZWYsIGN0eCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYW5kbGVQaXBlUmVzdWx0KGxlZnQsIGRlZiwgY3R4KTtcbiAgICB9O1xufSk7XG5mdW5jdGlvbiBoYW5kbGVQaXBlUmVzdWx0KGxlZnQsIGRlZiwgY3R4KSB7XG4gICAgaWYgKHV0aWwuYWJvcnRlZChsZWZ0KSkge1xuICAgICAgICByZXR1cm4gbGVmdDtcbiAgICB9XG4gICAgcmV0dXJuIGRlZi5vdXQuX3pvZC5ydW4oeyB2YWx1ZTogbGVmdC52YWx1ZSwgaXNzdWVzOiBsZWZ0Lmlzc3VlcyB9LCBjdHgpO1xufVxuZXhwb3J0IGNvbnN0ICRab2RSZWFkb25seSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kUmVhZG9ubHlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcInByb3BWYWx1ZXNcIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLnByb3BWYWx1ZXMpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwidmFsdWVzXCIsICgpID0+IGRlZi5pbm5lclR5cGUuX3pvZC52YWx1ZXMpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwib3B0aW5cIiwgKCkgPT4gZGVmLmlubmVyVHlwZS5fem9kLm9wdGluKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdG91dFwiLCAoKSA9PiBkZWYuaW5uZXJUeXBlLl96b2Qub3B0b3V0KTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgY3R4KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRlZi5pbm5lclR5cGUuX3pvZC5ydW4ocGF5bG9hZCwgY3R4KTtcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbihoYW5kbGVSZWFkb25seVJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhbmRsZVJlYWRvbmx5UmVzdWx0KHJlc3VsdCk7XG4gICAgfTtcbn0pO1xuZnVuY3Rpb24gaGFuZGxlUmVhZG9ubHlSZXN1bHQocGF5bG9hZCkge1xuICAgIHBheWxvYWQudmFsdWUgPSBPYmplY3QuZnJlZXplKHBheWxvYWQudmFsdWUpO1xuICAgIHJldHVybiBwYXlsb2FkO1xufVxuZXhwb3J0IGNvbnN0ICRab2RUZW1wbGF0ZUxpdGVyYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZFRlbXBsYXRlTGl0ZXJhbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGNvbnN0IHJlZ2V4UGFydHMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcnQgb2YgZGVmLnBhcnRzKSB7XG4gICAgICAgIGlmIChwYXJ0IGluc3RhbmNlb2YgJFpvZFR5cGUpIHtcbiAgICAgICAgICAgIGlmICghcGFydC5fem9kLnBhdHRlcm4pIHtcbiAgICAgICAgICAgICAgICAvLyBpZiAoIXNvdXJjZSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdGVtcGxhdGUgbGl0ZXJhbCBwYXJ0LCBubyBwYXR0ZXJuIGZvdW5kOiAke1suLi5wYXJ0Ll96b2QudHJhaXRzXS5zaGlmdCgpfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc291cmNlID0gcGFydC5fem9kLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHAgPyBwYXJ0Ll96b2QucGF0dGVybi5zb3VyY2UgOiBwYXJ0Ll96b2QucGF0dGVybjtcbiAgICAgICAgICAgIGlmICghc291cmNlKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0ZW1wbGF0ZSBsaXRlcmFsIHBhcnQ6ICR7cGFydC5fem9kLnRyYWl0c31gKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gc291cmNlLnN0YXJ0c1dpdGgoXCJeXCIpID8gMSA6IDA7XG4gICAgICAgICAgICBjb25zdCBlbmQgPSBzb3VyY2UuZW5kc1dpdGgoXCIkXCIpID8gc291cmNlLmxlbmd0aCAtIDEgOiBzb3VyY2UubGVuZ3RoO1xuICAgICAgICAgICAgcmVnZXhQYXJ0cy5wdXNoKHNvdXJjZS5zbGljZShzdGFydCwgZW5kKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGFydCA9PT0gbnVsbCB8fCB1dGlsLnByaW1pdGl2ZVR5cGVzLmhhcyh0eXBlb2YgcGFydCkpIHtcbiAgICAgICAgICAgIHJlZ2V4UGFydHMucHVzaCh1dGlsLmVzY2FwZVJlZ2V4KGAke3BhcnR9YCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHRlbXBsYXRlIGxpdGVyYWwgcGFydDogJHtwYXJ0fWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc3QuX3pvZC5wYXR0ZXJuID0gbmV3IFJlZ0V4cChgXiR7cmVnZXhQYXJ0cy5qb2luKFwiXCIpfSRgKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgX2N0eCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHBheWxvYWQudmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGlucHV0OiBwYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgICAgIGluc3QsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwidGVtcGxhdGVfbGl0ZXJhbFwiLFxuICAgICAgICAgICAgICAgIGNvZGU6IFwiaW52YWxpZF90eXBlXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIGluc3QuX3pvZC5wYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gICAgICAgIGlmICghaW5zdC5fem9kLnBhdHRlcm4udGVzdChwYXlsb2FkLnZhbHVlKSkge1xuICAgICAgICAgICAgcGF5bG9hZC5pc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IHBheWxvYWQudmFsdWUsXG4gICAgICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgICAgICAgICBjb2RlOiBcImludmFsaWRfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcInRlbXBsYXRlX2xpdGVyYWxcIixcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBpbnN0Ll96b2QucGF0dGVybi5zb3VyY2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kUHJvbWlzZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCIkWm9kUHJvbWlzZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgJFpvZFR5cGUuaW5pdChpbnN0LCBkZWYpO1xuICAgIGluc3QuX3pvZC5wYXJzZSA9IChwYXlsb2FkLCBjdHgpID0+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShwYXlsb2FkLnZhbHVlKS50aGVuKChpbm5lcikgPT4gZGVmLmlubmVyVHlwZS5fem9kLnJ1bih7IHZhbHVlOiBpbm5lciwgaXNzdWVzOiBbXSB9LCBjdHgpKTtcbiAgICB9O1xufSk7XG5leHBvcnQgY29uc3QgJFpvZExhenkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiJFpvZExhenlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcImlubmVyVHlwZVwiLCAoKSA9PiBkZWYuZ2V0dGVyKCkpO1xuICAgIHV0aWwuZGVmaW5lTGF6eShpbnN0Ll96b2QsIFwicGF0dGVyblwiLCAoKSA9PiBpbnN0Ll96b2QuaW5uZXJUeXBlLl96b2QucGF0dGVybik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJwcm9wVmFsdWVzXCIsICgpID0+IGluc3QuX3pvZC5pbm5lclR5cGUuX3pvZC5wcm9wVmFsdWVzKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdC5fem9kLCBcIm9wdGluXCIsICgpID0+IGluc3QuX3pvZC5pbm5lclR5cGUuX3pvZC5vcHRpbik7XG4gICAgdXRpbC5kZWZpbmVMYXp5KGluc3QuX3pvZCwgXCJvcHRvdXRcIiwgKCkgPT4gaW5zdC5fem9kLmlubmVyVHlwZS5fem9kLm9wdG91dCk7XG4gICAgaW5zdC5fem9kLnBhcnNlID0gKHBheWxvYWQsIGN0eCkgPT4ge1xuICAgICAgICBjb25zdCBpbm5lciA9IGluc3QuX3pvZC5pbm5lclR5cGU7XG4gICAgICAgIHJldHVybiBpbm5lci5fem9kLnJ1bihwYXlsb2FkLCBjdHgpO1xuICAgIH07XG59KTtcbmV4cG9ydCBjb25zdCAkWm9kQ3VzdG9tID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIiRab2RDdXN0b21cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNoZWNrcy4kWm9kQ2hlY2suaW5pdChpbnN0LCBkZWYpO1xuICAgICRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0Ll96b2QucGFyc2UgPSAocGF5bG9hZCwgXykgPT4ge1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICB9O1xuICAgIGluc3QuX3pvZC5jaGVjayA9IChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcGF5bG9hZC52YWx1ZTtcbiAgICAgICAgY29uc3QgciA9IGRlZi5mbihpbnB1dCk7XG4gICAgICAgIGlmIChyIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHIudGhlbigocikgPT4gaGFuZGxlUmVmaW5lUmVzdWx0KHIsIHBheWxvYWQsIGlucHV0LCBpbnN0KSk7XG4gICAgICAgIH1cbiAgICAgICAgaGFuZGxlUmVmaW5lUmVzdWx0KHIsIHBheWxvYWQsIGlucHV0LCBpbnN0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH07XG59KTtcbmZ1bmN0aW9uIGhhbmRsZVJlZmluZVJlc3VsdChyZXN1bHQsIHBheWxvYWQsIGlucHV0LCBpbnN0KSB7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgY29uc3QgX2lzcyA9IHtcbiAgICAgICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgIGluc3QsIC8vIGluY29ycG9yYXRlcyBwYXJhbXMuZXJyb3IgaW50byBpc3N1ZSByZXBvcnRpbmdcbiAgICAgICAgICAgIHBhdGg6IFsuLi4oaW5zdC5fem9kLmRlZi5wYXRoID8/IFtdKV0sIC8vIGluY29ycG9yYXRlcyBwYXJhbXMuZXJyb3IgaW50byBpc3N1ZSByZXBvcnRpbmdcbiAgICAgICAgICAgIGNvbnRpbnVlOiAhaW5zdC5fem9kLmRlZi5hYm9ydCxcbiAgICAgICAgICAgIC8vIHBhcmFtczogaW5zdC5fem9kLmRlZi5wYXJhbXMsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChpbnN0Ll96b2QuZGVmLnBhcmFtcylcbiAgICAgICAgICAgIF9pc3MucGFyYW1zID0gaW5zdC5fem9kLmRlZi5wYXJhbXM7XG4gICAgICAgIHBheWxvYWQuaXNzdWVzLnB1c2godXRpbC5pc3N1ZShfaXNzKSk7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbImNoZWNrcyIsImNvcmUiLCJEb2MiLCJzYWZlUGFyc2UiLCJzYWZlUGFyc2VBc3luYyIsInJlZ2V4ZXMiLCJ1dGlsIiwidmVyc2lvbiIsIiRab2RUeXBlIiwiJGNvbnN0cnVjdG9yIiwiaW5zdCIsImRlZiIsIl9hIiwiX3pvZCIsImJhZyIsInRyYWl0cyIsImhhcyIsInVuc2hpZnQiLCJjaCIsImZuIiwib25hdHRhY2giLCJsZW5ndGgiLCJkZWZlcnJlZCIsInB1c2giLCJydW4iLCJwYXJzZSIsInJ1bkNoZWNrcyIsInBheWxvYWQiLCJjdHgiLCJpc0Fib3J0ZWQiLCJhYm9ydGVkIiwiYXN5bmNSZXN1bHQiLCJ3aGVuIiwic2hvdWxkUnVuIiwiY3VyckxlbiIsImlzc3VlcyIsIl8iLCJjaGVjayIsIlByb21pc2UiLCJhc3luYyIsIiRab2RBc3luY0Vycm9yIiwicmVzb2x2ZSIsInRoZW4iLCJuZXh0TGVuIiwicmVzdWx0IiwidmFsaWRhdGUiLCJ2YWx1ZSIsInIiLCJzdWNjZXNzIiwiZGF0YSIsImVycm9yIiwidmVuZG9yIiwiY2xvbmUiLCIkWm9kU3RyaW5nIiwiaW5pdCIsInBhdHRlcm4iLCJwYXR0ZXJucyIsInBvcCIsInN0cmluZyIsImNvZXJjZSIsIlN0cmluZyIsImV4cGVjdGVkIiwiY29kZSIsImlucHV0IiwiJFpvZFN0cmluZ0Zvcm1hdCIsIiRab2RDaGVja1N0cmluZ0Zvcm1hdCIsIiRab2RHVUlEIiwiZ3VpZCIsIiRab2RVVUlEIiwidmVyc2lvbk1hcCIsInYxIiwidjIiLCJ2MyIsInY0IiwidjUiLCJ2NiIsInY3IiwidjgiLCJ2IiwidW5kZWZpbmVkIiwiRXJyb3IiLCJ1dWlkIiwiJFpvZEVtYWlsIiwiZW1haWwiLCIkWm9kVVJMIiwib3JpZyIsInVybCIsIlVSTCIsImhyZWYiLCJob3N0bmFtZSIsImxhc3RJbmRleCIsInRlc3QiLCJmb3JtYXQiLCJub3RlIiwic291cmNlIiwiY29udGludWUiLCJhYm9ydCIsInByb3RvY29sIiwiZW5kc1dpdGgiLCJzbGljZSIsIiRab2RFbW9qaSIsImVtb2ppIiwiJFpvZE5hbm9JRCIsIm5hbm9pZCIsIiRab2RDVUlEIiwiY3VpZCIsIiRab2RDVUlEMiIsImN1aWQyIiwiJFpvZFVMSUQiLCJ1bGlkIiwiJFpvZFhJRCIsInhpZCIsIiRab2RLU1VJRCIsImtzdWlkIiwiJFpvZElTT0RhdGVUaW1lIiwiZGF0ZXRpbWUiLCIkWm9kSVNPRGF0ZSIsImRhdGUiLCIkWm9kSVNPVGltZSIsInRpbWUiLCIkWm9kSVNPRHVyYXRpb24iLCJkdXJhdGlvbiIsIiRab2RJUHY0IiwiaXB2NCIsIiRab2RJUHY2IiwiaXB2NiIsIiRab2RDSURSdjQiLCJjaWRydjQiLCIkWm9kQ0lEUnY2IiwiY2lkcnY2IiwiYWRkcmVzcyIsInByZWZpeCIsInNwbGl0IiwicHJlZml4TnVtIiwiTnVtYmVyIiwiaXNWYWxpZEJhc2U2NCIsImF0b2IiLCIkWm9kQmFzZTY0IiwiYmFzZTY0IiwiY29udGVudEVuY29kaW5nIiwiaXNWYWxpZEJhc2U2NFVSTCIsImJhc2U2NHVybCIsInJlcGxhY2UiLCJjIiwicGFkZGVkIiwicGFkRW5kIiwiTWF0aCIsImNlaWwiLCIkWm9kQmFzZTY0VVJMIiwiJFpvZEUxNjQiLCJlMTY0IiwiaXNWYWxpZEpXVCIsInRva2VuIiwiYWxnb3JpdGhtIiwidG9rZW5zUGFydHMiLCJoZWFkZXIiLCJwYXJzZWRIZWFkZXIiLCJKU09OIiwidHlwIiwiYWxnIiwiJFpvZEpXVCIsIiRab2RDdXN0b21TdHJpbmdGb3JtYXQiLCIkWm9kTnVtYmVyIiwibnVtYmVyIiwiX2N0eCIsImlzTmFOIiwiaXNGaW5pdGUiLCJyZWNlaXZlZCIsIiRab2ROdW1iZXJGb3JtYXQiLCIkWm9kQ2hlY2tOdW1iZXJGb3JtYXQiLCIkWm9kQm9vbGVhbiIsImJvb2xlYW4iLCJCb29sZWFuIiwiJFpvZEJpZ0ludCIsImJpZ2ludCIsIkJpZ0ludCIsIiRab2RCaWdJbnRGb3JtYXQiLCIkWm9kQ2hlY2tCaWdJbnRGb3JtYXQiLCIkWm9kU3ltYm9sIiwiJFpvZFVuZGVmaW5lZCIsInZhbHVlcyIsIlNldCIsIm9wdGluIiwib3B0b3V0IiwiJFpvZE51bGwiLCJudWxsIiwiJFpvZEFueSIsIiRab2RVbmtub3duIiwiJFpvZE5ldmVyIiwiJFpvZFZvaWQiLCIkWm9kRGF0ZSIsIkRhdGUiLCJfZXJyIiwiaXNEYXRlIiwiaXNWYWxpZERhdGUiLCJnZXRUaW1lIiwiaGFuZGxlQXJyYXlSZXN1bHQiLCJmaW5hbCIsImluZGV4IiwicHJlZml4SXNzdWVzIiwiJFpvZEFycmF5IiwiQXJyYXkiLCJpc0FycmF5IiwicHJvbXMiLCJpIiwiaXRlbSIsImVsZW1lbnQiLCJhbGwiLCJoYW5kbGVPYmplY3RSZXN1bHQiLCJrZXkiLCJoYW5kbGVPcHRpb25hbE9iamVjdFJlc3VsdCIsIiRab2RPYmplY3QiLCJfbm9ybWFsaXplZCIsImNhY2hlZCIsImtleXMiLCJPYmplY3QiLCJzaGFwZSIsImsiLCJva2V5cyIsIm9wdGlvbmFsS2V5cyIsImtleVNldCIsIm51bUtleXMiLCJkZWZpbmVMYXp5IiwicHJvcFZhbHVlcyIsImZpZWxkIiwiYWRkIiwiZ2VuZXJhdGVGYXN0cGFzcyIsImRvYyIsIm5vcm1hbGl6ZWQiLCJwYXJzZVN0ciIsImVzYyIsIndyaXRlIiwiaWRzIiwiY3JlYXRlIiwiY291bnRlciIsImlkIiwiY29tcGlsZSIsImZhc3RwYXNzIiwiaXNPYmplY3QiLCJqaXQiLCJnbG9iYWxDb25maWciLCJqaXRsZXNzIiwiYWxsb3dzRXZhbCIsImZhc3RFbmFibGVkIiwiY2F0Y2hhbGwiLCJlbCIsImlzT3B0aW9uYWwiLCJ1bnJlY29nbml6ZWQiLCJfY2F0Y2hhbGwiLCJ0IiwidHlwZSIsImhhbmRsZVVuaW9uUmVzdWx0cyIsInJlc3VsdHMiLCJlcnJvcnMiLCJtYXAiLCJpc3MiLCJmaW5hbGl6ZUlzc3VlIiwiY29uZmlnIiwiJFpvZFVuaW9uIiwib3B0aW9ucyIsInNvbWUiLCJvIiwiZXZlcnkiLCJmbGF0TWFwIiwib3B0aW9uIiwiZnJvbSIsIlJlZ0V4cCIsInAiLCJjbGVhblJlZ2V4Iiwiam9pbiIsIiRab2REaXNjcmltaW5hdGVkVW5pb24iLCJfc3VwZXIiLCJwdiIsImluZGV4T2YiLCJlbnRyaWVzIiwidmFsIiwiZGlzYyIsIm9wdHMiLCJNYXAiLCJkaXNjcmltaW5hdG9yIiwic2l6ZSIsInNldCIsIm9wdCIsImdldCIsInVuaW9uRmFsbGJhY2siLCJwYXRoIiwiJFpvZEludGVyc2VjdGlvbiIsImxlZnQiLCJyaWdodCIsImhhbmRsZUludGVyc2VjdGlvblJlc3VsdHMiLCJtZXJnZVZhbHVlcyIsImEiLCJiIiwidmFsaWQiLCJpc1BsYWluT2JqZWN0IiwiYktleXMiLCJzaGFyZWRLZXlzIiwiZmlsdGVyIiwibmV3T2JqIiwic2hhcmVkVmFsdWUiLCJtZXJnZUVycm9yUGF0aCIsIm5ld0FycmF5IiwiaXRlbUEiLCJpdGVtQiIsIm1lcmdlZCIsInN0cmluZ2lmeSIsIiRab2RUdXBsZSIsIml0ZW1zIiwib3B0U3RhcnQiLCJyZXZlcnNlIiwiZmluZEluZGV4IiwicmVzdCIsInRvb0JpZyIsInRvb1NtYWxsIiwib3JpZ2luIiwibWF4aW11bSIsIm1pbmltdW0iLCJoYW5kbGVUdXBsZVJlc3VsdCIsIiRab2RSZWNvcmQiLCJrZXlUeXBlIiwidmFsdWVUeXBlIiwiUmVmbGVjdCIsIm93bktleXMiLCJrZXlSZXN1bHQiLCIkWm9kTWFwIiwidmFsdWVSZXN1bHQiLCJoYW5kbGVNYXBSZXN1bHQiLCJwcm9wZXJ0eUtleVR5cGVzIiwiJFpvZFNldCIsImhhbmRsZVNldFJlc3VsdCIsIiRab2RFbnVtIiwiZ2V0RW51bVZhbHVlcyIsImVzY2FwZVJlZ2V4IiwidG9TdHJpbmciLCIkWm9kTGl0ZXJhbCIsIiRab2RGaWxlIiwiRmlsZSIsIiRab2RUcmFuc2Zvcm0iLCJfb3V0IiwidHJhbnNmb3JtIiwib3V0cHV0IiwiJFpvZE9wdGlvbmFsIiwiaW5uZXJUeXBlIiwiJFpvZE51bGxhYmxlIiwiJFpvZERlZmF1bHQiLCJkZWZhdWx0VmFsdWUiLCJoYW5kbGVEZWZhdWx0UmVzdWx0IiwiJFpvZFByZWZhdWx0IiwiJFpvZE5vbk9wdGlvbmFsIiwieCIsImhhbmRsZU5vbk9wdGlvbmFsUmVzdWx0IiwiJFpvZFN1Y2Nlc3MiLCIkWm9kQ2F0Y2giLCJjYXRjaFZhbHVlIiwiJFpvZE5hTiIsIiRab2RQaXBlIiwiaW4iLCJvdXQiLCJoYW5kbGVQaXBlUmVzdWx0IiwiJFpvZFJlYWRvbmx5IiwiaGFuZGxlUmVhZG9ubHlSZXN1bHQiLCJmcmVlemUiLCIkWm9kVGVtcGxhdGVMaXRlcmFsIiwicmVnZXhQYXJ0cyIsInBhcnQiLCJwYXJ0cyIsInNoaWZ0Iiwic3RhcnQiLCJzdGFydHNXaXRoIiwiZW5kIiwicHJpbWl0aXZlVHlwZXMiLCIkWm9kUHJvbWlzZSIsImlubmVyIiwiJFpvZExhenkiLCJnZXR0ZXIiLCIkWm9kQ3VzdG9tIiwiJFpvZENoZWNrIiwiaGFuZGxlUmVmaW5lUmVzdWx0IiwiX2lzcyIsInBhcmFtcyIsImlzc3VlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js":
|
||
/*!***********************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js ***!
|
||
\***********************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ JSONSchemaGenerator: () => (/* binding */ JSONSchemaGenerator),\n/* harmony export */ toJSONSchema: () => (/* binding */ toJSONSchema)\n/* harmony export */ });\n/* harmony import */ var _registries_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./registries.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/registries.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js\");\n\n\nclass JSONSchemaGenerator {\n constructor(params){\n this.counter = 0;\n this.metadataRegistry = params?.metadata ?? _registries_js__WEBPACK_IMPORTED_MODULE_0__.globalRegistry;\n this.target = params?.target ?? \"draft-2020-12\";\n this.unrepresentable = params?.unrepresentable ?? \"throw\";\n this.override = params?.override ?? (()=>{});\n this.io = params?.io ?? \"output\";\n this.seen = new Map();\n }\n process(schema, _params = {\n path: [],\n schemaPath: []\n }) {\n var _a;\n const def = schema._zod.def;\n const formatMap = {\n guid: \"uuid\",\n url: \"uri\",\n datetime: \"date-time\",\n json_string: \"json-string\",\n regex: \"\"\n };\n // check for schema in seens\n const seen = this.seen.get(schema);\n if (seen) {\n seen.count++;\n // check if cycle\n const isCycle = _params.schemaPath.includes(schema);\n if (isCycle) {\n seen.cycle = _params.path;\n }\n return seen.schema;\n }\n // initialize\n const result = {\n schema: {},\n count: 1,\n cycle: undefined,\n path: _params.path\n };\n this.seen.set(schema, result);\n // custom method overrides default behavior\n const overrideSchema = schema._zod.toJSONSchema?.();\n if (overrideSchema) {\n result.schema = overrideSchema;\n } else {\n const params = {\n ..._params,\n schemaPath: [\n ..._params.schemaPath,\n schema\n ],\n path: _params.path\n };\n const parent = schema._zod.parent;\n if (parent) {\n // schema was cloned from another schema\n result.ref = parent;\n this.process(parent, params);\n this.seen.get(parent).isParent = true;\n } else {\n const _json = result.schema;\n switch(def.type){\n case \"string\":\n {\n const json = _json;\n json.type = \"string\";\n const { minimum, maximum, format, patterns, contentEncoding } = schema._zod.bag;\n if (typeof minimum === \"number\") json.minLength = minimum;\n if (typeof maximum === \"number\") json.maxLength = maximum;\n // custom pattern overrides format\n if (format) {\n json.format = formatMap[format] ?? format;\n if (json.format === \"\") delete json.format; // empty format is not valid\n }\n if (contentEncoding) json.contentEncoding = contentEncoding;\n if (patterns && patterns.size > 0) {\n const regexes = [\n ...patterns\n ];\n if (regexes.length === 1) json.pattern = regexes[0].source;\n else if (regexes.length > 1) {\n result.schema.allOf = [\n ...regexes.map((regex)=>({\n ...this.target === \"draft-7\" ? {\n type: \"string\"\n } : {},\n pattern: regex.source\n }))\n ];\n }\n }\n break;\n }\n case \"number\":\n {\n const json = _json;\n const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n if (typeof format === \"string\" && format.includes(\"int\")) json.type = \"integer\";\n else json.type = \"number\";\n if (typeof exclusiveMinimum === \"number\") json.exclusiveMinimum = exclusiveMinimum;\n if (typeof minimum === \"number\") {\n json.minimum = minimum;\n if (typeof exclusiveMinimum === \"number\") {\n if (exclusiveMinimum >= minimum) delete json.minimum;\n else delete json.exclusiveMinimum;\n }\n }\n if (typeof exclusiveMaximum === \"number\") json.exclusiveMaximum = exclusiveMaximum;\n if (typeof maximum === \"number\") {\n json.maximum = maximum;\n if (typeof exclusiveMaximum === \"number\") {\n if (exclusiveMaximum <= maximum) delete json.maximum;\n else delete json.exclusiveMaximum;\n }\n }\n if (typeof multipleOf === \"number\") json.multipleOf = multipleOf;\n break;\n }\n case \"boolean\":\n {\n const json = _json;\n json.type = \"boolean\";\n break;\n }\n case \"bigint\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"BigInt cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"symbol\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Symbols cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"null\":\n {\n _json.type = \"null\";\n break;\n }\n case \"any\":\n {\n break;\n }\n case \"unknown\":\n {\n break;\n }\n case \"undefined\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Undefined cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"void\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Void cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"never\":\n {\n _json.not = {};\n break;\n }\n case \"date\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Date cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"array\":\n {\n const json = _json;\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\") json.minItems = minimum;\n if (typeof maximum === \"number\") json.maxItems = maximum;\n json.type = \"array\";\n json.items = this.process(def.element, {\n ...params,\n path: [\n ...params.path,\n \"items\"\n ]\n });\n break;\n }\n case \"object\":\n {\n const json = _json;\n json.type = \"object\";\n json.properties = {};\n const shape = def.shape; // params.shapeCache.get(schema)!;\n for(const key in shape){\n json.properties[key] = this.process(shape[key], {\n ...params,\n path: [\n ...params.path,\n \"properties\",\n key\n ]\n });\n }\n // required keys\n const allKeys = new Set(Object.keys(shape));\n // const optionalKeys = new Set(def.optional);\n const requiredKeys = new Set([\n ...allKeys\n ].filter((key)=>{\n const v = def.shape[key]._zod;\n if (this.io === \"input\") {\n return v.optin === undefined;\n } else {\n return v.optout === undefined;\n }\n }));\n if (requiredKeys.size > 0) {\n json.required = Array.from(requiredKeys);\n }\n // catchall\n if (def.catchall?._zod.def.type === \"never\") {\n // strict\n json.additionalProperties = false;\n } else if (!def.catchall) {\n // regular\n if (this.io === \"output\") json.additionalProperties = false;\n } else if (def.catchall) {\n json.additionalProperties = this.process(def.catchall, {\n ...params,\n path: [\n ...params.path,\n \"additionalProperties\"\n ]\n });\n }\n break;\n }\n case \"union\":\n {\n const json = _json;\n json.anyOf = def.options.map((x, i)=>this.process(x, {\n ...params,\n path: [\n ...params.path,\n \"anyOf\",\n i\n ]\n }));\n break;\n }\n case \"intersection\":\n {\n const json = _json;\n const a = this.process(def.left, {\n ...params,\n path: [\n ...params.path,\n \"allOf\",\n 0\n ]\n });\n const b = this.process(def.right, {\n ...params,\n path: [\n ...params.path,\n \"allOf\",\n 1\n ]\n });\n const isSimpleIntersection = (val)=>\"allOf\" in val && Object.keys(val).length === 1;\n const allOf = [\n ...isSimpleIntersection(a) ? a.allOf : [\n a\n ],\n ...isSimpleIntersection(b) ? b.allOf : [\n b\n ]\n ];\n json.allOf = allOf;\n break;\n }\n case \"tuple\":\n {\n const json = _json;\n json.type = \"array\";\n const prefixItems = def.items.map((x, i)=>this.process(x, {\n ...params,\n path: [\n ...params.path,\n \"prefixItems\",\n i\n ]\n }));\n if (this.target === \"draft-2020-12\") {\n json.prefixItems = prefixItems;\n } else {\n json.items = prefixItems;\n }\n if (def.rest) {\n const rest = this.process(def.rest, {\n ...params,\n path: [\n ...params.path,\n \"items\"\n ]\n });\n if (this.target === \"draft-2020-12\") {\n json.items = rest;\n } else {\n json.additionalItems = rest;\n }\n }\n // additionalItems\n if (def.rest) {\n json.items = this.process(def.rest, {\n ...params,\n path: [\n ...params.path,\n \"items\"\n ]\n });\n }\n // length\n const { minimum, maximum } = schema._zod.bag;\n if (typeof minimum === \"number\") json.minItems = minimum;\n if (typeof maximum === \"number\") json.maxItems = maximum;\n break;\n }\n case \"record\":\n {\n const json = _json;\n json.type = \"object\";\n json.propertyNames = this.process(def.keyType, {\n ...params,\n path: [\n ...params.path,\n \"propertyNames\"\n ]\n });\n json.additionalProperties = this.process(def.valueType, {\n ...params,\n path: [\n ...params.path,\n \"additionalProperties\"\n ]\n });\n break;\n }\n case \"map\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Map cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"set\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Set cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"enum\":\n {\n const json = _json;\n const values = (0,_util_js__WEBPACK_IMPORTED_MODULE_1__.getEnumValues)(def.entries);\n // Number enums can have both string and number values\n if (values.every((v)=>typeof v === \"number\")) json.type = \"number\";\n if (values.every((v)=>typeof v === \"string\")) json.type = \"string\";\n json.enum = values;\n break;\n }\n case \"literal\":\n {\n const json = _json;\n const vals = [];\n for (const val of def.values){\n if (val === undefined) {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n } else {\n // do not add to vals\n }\n } else if (typeof val === \"bigint\") {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n } else {\n vals.push(Number(val));\n }\n } else {\n vals.push(val);\n }\n }\n if (vals.length === 0) {\n // do nothing (an undefined literal was stripped)\n } else if (vals.length === 1) {\n const val = vals[0];\n json.type = val === null ? \"null\" : typeof val;\n json.const = val;\n } else {\n if (vals.every((v)=>typeof v === \"number\")) json.type = \"number\";\n if (vals.every((v)=>typeof v === \"string\")) json.type = \"string\";\n if (vals.every((v)=>typeof v === \"boolean\")) json.type = \"string\";\n if (vals.every((v)=>v === null)) json.type = \"null\";\n json.enum = vals;\n }\n break;\n }\n case \"file\":\n {\n const json = _json;\n const file = {\n type: \"string\",\n format: \"binary\",\n contentEncoding: \"binary\"\n };\n const { minimum, maximum, mime } = schema._zod.bag;\n if (minimum !== undefined) file.minLength = minimum;\n if (maximum !== undefined) file.maxLength = maximum;\n if (mime) {\n if (mime.length === 1) {\n file.contentMediaType = mime[0];\n Object.assign(json, file);\n } else {\n json.anyOf = mime.map((m)=>{\n const mFile = {\n ...file,\n contentMediaType: m\n };\n return mFile;\n });\n }\n } else {\n Object.assign(json, file);\n }\n break;\n }\n case \"transform\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Transforms cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"nullable\":\n {\n const inner = this.process(def.innerType, params);\n _json.anyOf = [\n inner,\n {\n type: \"null\"\n }\n ];\n break;\n }\n case \"nonoptional\":\n {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n break;\n }\n case \"success\":\n {\n const json = _json;\n json.type = \"boolean\";\n break;\n }\n case \"default\":\n {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n _json.default = JSON.parse(JSON.stringify(def.defaultValue));\n break;\n }\n case \"prefault\":\n {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n if (this.io === \"input\") _json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n break;\n }\n case \"catch\":\n {\n // use conditionals\n this.process(def.innerType, params);\n result.ref = def.innerType;\n let catchValue;\n try {\n catchValue = def.catchValue(undefined);\n } catch {\n throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n }\n _json.default = catchValue;\n break;\n }\n case \"nan\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"NaN cannot be represented in JSON Schema\");\n }\n break;\n }\n case \"template_literal\":\n {\n const json = _json;\n const pattern = schema._zod.pattern;\n if (!pattern) throw new Error(\"Pattern not found in template literal\");\n json.type = \"string\";\n json.pattern = pattern.source;\n break;\n }\n case \"pipe\":\n {\n const innerType = this.io === \"input\" ? def.in._zod.def.type === \"transform\" ? def.out : def.in : def.out;\n this.process(innerType, params);\n result.ref = innerType;\n break;\n }\n case \"readonly\":\n {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n _json.readOnly = true;\n break;\n }\n // passthrough types\n case \"promise\":\n {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n break;\n }\n case \"optional\":\n {\n this.process(def.innerType, params);\n result.ref = def.innerType;\n break;\n }\n case \"lazy\":\n {\n const innerType = schema._zod.innerType;\n this.process(innerType, params);\n result.ref = innerType;\n break;\n }\n case \"custom\":\n {\n if (this.unrepresentable === \"throw\") {\n throw new Error(\"Custom types cannot be represented in JSON Schema\");\n }\n break;\n }\n default:\n {\n def;\n }\n }\n }\n }\n // metadata\n const meta = this.metadataRegistry.get(schema);\n if (meta) Object.assign(result.schema, meta);\n if (this.io === \"input\" && isTransforming(schema)) {\n // examples/defaults only apply to output type of pipe\n delete result.schema.examples;\n delete result.schema.default;\n }\n // set prefault as default\n if (this.io === \"input\" && result.schema._prefault) (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n delete result.schema._prefault;\n // pulling fresh from this.seen in case it was overwritten\n const _result = this.seen.get(schema);\n return _result.schema;\n }\n emit(schema, _params) {\n const params = {\n cycles: _params?.cycles ?? \"ref\",\n reused: _params?.reused ?? \"inline\",\n // unrepresentable: _params?.unrepresentable ?? \"throw\",\n // uri: _params?.uri ?? ((id) => `${id}`),\n external: _params?.external ?? undefined\n };\n // iterate over seen map;\n const root = this.seen.get(schema);\n if (!root) throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n // initialize result with root schema fields\n // Object.assign(result, seen.cached);\n // returns a ref to the schema\n // defId will be empty if the ref points to an external schema (or #)\n const makeURI = (entry)=>{\n // comparing the seen objects because sometimes\n // multiple schemas map to the same seen object.\n // e.g. lazy\n // external is configured\n const defsSegment = this.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n if (params.external) {\n const externalId = params.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${this.counter++}`;\n // check if schema is in the external registry\n const uriGenerator = params.external.uri ?? ((id)=>id);\n if (externalId) {\n return {\n ref: uriGenerator(externalId)\n };\n }\n // otherwise, add to __shared\n const id = entry[1].defId ?? entry[1].schema.id ?? `schema${this.counter++}`;\n entry[1].defId = id; // set defId so it will be reused if needed\n return {\n defId: id,\n ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}`\n };\n }\n if (entry[1] === root) {\n return {\n ref: \"#\"\n };\n }\n // self-contained schema\n const uriPrefix = `#`;\n const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n const defId = entry[1].schema.id ?? `__schema${this.counter++}`;\n return {\n defId,\n ref: defUriPrefix + defId\n };\n };\n // stored cached version in `def` property\n // remove all properties, set $ref\n const extractToDef = (entry)=>{\n // if the schema is already a reference, do not extract it\n if (entry[1].schema.$ref) {\n return;\n }\n const seen = entry[1];\n const { ref, defId } = makeURI(entry);\n seen.def = {\n ...seen.schema\n };\n // defId won't be set if the schema is a reference to an external schema\n if (defId) seen.defId = defId;\n // wipe away all properties except $ref\n const schema = seen.schema;\n for(const key in schema){\n delete schema[key];\n }\n schema.$ref = ref;\n };\n // throw on cycles\n // break cycles\n if (params.cycles === \"throw\") {\n for (const entry of this.seen.entries()){\n const seen = entry[1];\n if (seen.cycle) {\n throw new Error(\"Cycle detected: \" + `#/${seen.cycle?.join(\"/\")}/<root>` + '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n }\n }\n }\n // extract schemas into $defs\n for (const entry of this.seen.entries()){\n const seen = entry[1];\n // convert root schema to # $ref\n if (schema === entry[0]) {\n extractToDef(entry); // this has special handling for the root schema\n continue;\n }\n // extract schemas that are in the external registry\n if (params.external) {\n const ext = params.external.registry.get(entry[0])?.id;\n if (schema !== entry[0] && ext) {\n extractToDef(entry);\n continue;\n }\n }\n // extract schemas with `id` meta\n const id = this.metadataRegistry.get(entry[0])?.id;\n if (id) {\n extractToDef(entry);\n continue;\n }\n // break cycles\n if (seen.cycle) {\n // any\n extractToDef(entry);\n continue;\n }\n // extract reused schemas\n if (seen.count > 1) {\n if (params.reused === \"ref\") {\n extractToDef(entry);\n continue;\n }\n }\n }\n // flatten _refs\n const flattenRef = (zodSchema, params)=>{\n const seen = this.seen.get(zodSchema);\n const schema = seen.def ?? seen.schema;\n const _cached = {\n ...schema\n };\n // already seen\n if (seen.ref === null) {\n return;\n }\n // flatten ref if defined\n const ref = seen.ref;\n seen.ref = null; // prevent recursion\n if (ref) {\n flattenRef(ref, params);\n // merge referenced schema into current\n const refSchema = this.seen.get(ref).schema;\n if (refSchema.$ref && params.target === \"draft-7\") {\n schema.allOf = schema.allOf ?? [];\n schema.allOf.push(refSchema);\n } else {\n Object.assign(schema, refSchema);\n Object.assign(schema, _cached); // prevent overwriting any fields in the original schema\n }\n }\n // execute overrides\n if (!seen.isParent) this.override({\n zodSchema: zodSchema,\n jsonSchema: schema,\n path: seen.path ?? []\n });\n };\n for (const entry of [\n ...this.seen.entries()\n ].reverse()){\n flattenRef(entry[0], {\n target: this.target\n });\n }\n const result = {};\n if (this.target === \"draft-2020-12\") {\n result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n } else if (this.target === \"draft-7\") {\n result.$schema = \"http://json-schema.org/draft-07/schema#\";\n } else {\n console.warn(`Invalid target: ${this.target}`);\n }\n if (params.external?.uri) {\n const id = params.external.registry.get(schema)?.id;\n if (!id) throw new Error(\"Schema is missing an `id` property\");\n result.$id = params.external.uri(id);\n }\n Object.assign(result, root.def);\n // build defs object\n const defs = params.external?.defs ?? {};\n for (const entry of this.seen.entries()){\n const seen = entry[1];\n if (seen.def && seen.defId) {\n defs[seen.defId] = seen.def;\n }\n }\n // set definitions in result\n if (params.external) {} else {\n if (Object.keys(defs).length > 0) {\n if (this.target === \"draft-2020-12\") {\n result.$defs = defs;\n } else {\n result.definitions = defs;\n }\n }\n }\n try {\n // this \"finalizes\" this schema and ensures all cycles are removed\n // each call to .emit() is functionally independent\n // though the seen map is shared\n return JSON.parse(JSON.stringify(result));\n } catch (_err) {\n throw new Error(\"Error converting schema to JSON.\");\n }\n }\n}\nfunction toJSONSchema(input, _params) {\n if (input instanceof _registries_js__WEBPACK_IMPORTED_MODULE_0__.$ZodRegistry) {\n const gen = new JSONSchemaGenerator(_params);\n const defs = {};\n for (const entry of input._idmap.entries()){\n const [_, schema] = entry;\n gen.process(schema);\n }\n const schemas = {};\n const external = {\n registry: input,\n uri: _params?.uri,\n defs\n };\n for (const entry of input._idmap.entries()){\n const [key, schema] = entry;\n schemas[key] = gen.emit(schema, {\n ..._params,\n external\n });\n }\n if (Object.keys(defs).length > 0) {\n const defsSegment = gen.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n schemas.__shared = {\n [defsSegment]: defs\n };\n }\n return {\n schemas\n };\n }\n const gen = new JSONSchemaGenerator(_params);\n gen.process(input);\n return gen.emit(input, _params);\n}\nfunction isTransforming(_schema, _ctx) {\n const ctx = _ctx ?? {\n seen: new Set()\n };\n if (ctx.seen.has(_schema)) return false;\n ctx.seen.add(_schema);\n const schema = _schema;\n const def = schema._zod.def;\n switch(def.type){\n case \"string\":\n case \"number\":\n case \"bigint\":\n case \"boolean\":\n case \"date\":\n case \"symbol\":\n case \"undefined\":\n case \"null\":\n case \"any\":\n case \"unknown\":\n case \"never\":\n case \"void\":\n case \"literal\":\n case \"enum\":\n case \"nan\":\n case \"file\":\n case \"template_literal\":\n return false;\n case \"array\":\n {\n return isTransforming(def.element, ctx);\n }\n case \"object\":\n {\n for(const key in def.shape){\n if (isTransforming(def.shape[key], ctx)) return true;\n }\n return false;\n }\n case \"union\":\n {\n for (const option of def.options){\n if (isTransforming(option, ctx)) return true;\n }\n return false;\n }\n case \"intersection\":\n {\n return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n }\n case \"tuple\":\n {\n for (const item of def.items){\n if (isTransforming(item, ctx)) return true;\n }\n if (def.rest && isTransforming(def.rest, ctx)) return true;\n return false;\n }\n case \"record\":\n {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n case \"map\":\n {\n return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n }\n case \"set\":\n {\n return isTransforming(def.valueType, ctx);\n }\n // inner types\n case \"promise\":\n case \"optional\":\n case \"nonoptional\":\n case \"nullable\":\n case \"readonly\":\n return isTransforming(def.innerType, ctx);\n case \"lazy\":\n return isTransforming(def.getter(), ctx);\n case \"default\":\n {\n return isTransforming(def.innerType, ctx);\n }\n case \"prefault\":\n {\n return isTransforming(def.innerType, ctx);\n }\n case \"custom\":\n {\n return false;\n }\n case \"transform\":\n {\n return true;\n }\n case \"pipe\":\n {\n return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n }\n case \"success\":\n {\n return false;\n }\n case \"catch\":\n {\n return false;\n }\n default:\n def;\n }\n throw new Error(`Unknown schema type: ${def.type}`);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3RvLWpzb24tc2NoZW1hLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0Q7QUFDckI7QUFDbkMsTUFBTUc7SUFDVCxZQUFZQyxNQUFNLENBQUU7UUFDaEIsSUFBSSxDQUFDQyxPQUFPLEdBQUc7UUFDZixJQUFJLENBQUNDLGdCQUFnQixHQUFHRixRQUFRRyxZQUFZTiwwREFBY0E7UUFDMUQsSUFBSSxDQUFDTyxNQUFNLEdBQUdKLFFBQVFJLFVBQVU7UUFDaEMsSUFBSSxDQUFDQyxlQUFlLEdBQUdMLFFBQVFLLG1CQUFtQjtRQUNsRCxJQUFJLENBQUNDLFFBQVEsR0FBR04sUUFBUU0sWUFBYSxNQUFRO1FBQzdDLElBQUksQ0FBQ0MsRUFBRSxHQUFHUCxRQUFRTyxNQUFNO1FBQ3hCLElBQUksQ0FBQ0MsSUFBSSxHQUFHLElBQUlDO0lBQ3BCO0lBQ0FDLFFBQVFDLE1BQU0sRUFBRUMsVUFBVTtRQUFFQyxNQUFNLEVBQUU7UUFBRUMsWUFBWSxFQUFFO0lBQUMsQ0FBQyxFQUFFO1FBQ3BELElBQUlDO1FBQ0osTUFBTUMsTUFBTUwsT0FBT00sSUFBSSxDQUFDRCxHQUFHO1FBQzNCLE1BQU1FLFlBQVk7WUFDZEMsTUFBTTtZQUNOQyxLQUFLO1lBQ0xDLFVBQVU7WUFDVkMsYUFBYTtZQUNiQyxPQUFPO1FBQ1g7UUFDQSw0QkFBNEI7UUFDNUIsTUFBTWYsT0FBTyxJQUFJLENBQUNBLElBQUksQ0FBQ2dCLEdBQUcsQ0FBQ2I7UUFDM0IsSUFBSUgsTUFBTTtZQUNOQSxLQUFLaUIsS0FBSztZQUNWLGlCQUFpQjtZQUNqQixNQUFNQyxVQUFVZCxRQUFRRSxVQUFVLENBQUNhLFFBQVEsQ0FBQ2hCO1lBQzVDLElBQUllLFNBQVM7Z0JBQ1RsQixLQUFLb0IsS0FBSyxHQUFHaEIsUUFBUUMsSUFBSTtZQUM3QjtZQUNBLE9BQU9MLEtBQUtHLE1BQU07UUFDdEI7UUFDQSxh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QSxLQUFLO1lBQVc7Z0JBQ1osT0FBTztZQUNYO1FBQ0EsS0FBSztZQUFTO2dCQUNWLE9BQU87WUFDWDtRQUNBO1lBQ0l6SjtJQUNSO0lBQ0EsTUFBTSxJQUFJMEMsTUFBTSxDQUFDLHFCQUFxQixFQUFFMUMsSUFBSXNCLElBQUksRUFBRTtBQUN0RCIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3Y0L2NvcmUvdG8tanNvbi1zY2hlbWEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgJFpvZFJlZ2lzdHJ5LCBnbG9iYWxSZWdpc3RyeSB9IGZyb20gXCIuL3JlZ2lzdHJpZXMuanNcIjtcbmltcG9ydCB7IGdldEVudW1WYWx1ZXMgfSBmcm9tIFwiLi91dGlsLmpzXCI7XG5leHBvcnQgY2xhc3MgSlNPTlNjaGVtYUdlbmVyYXRvciB7XG4gICAgY29uc3RydWN0b3IocGFyYW1zKSB7XG4gICAgICAgIHRoaXMuY291bnRlciA9IDA7XG4gICAgICAgIHRoaXMubWV0YWRhdGFSZWdpc3RyeSA9IHBhcmFtcz8ubWV0YWRhdGEgPz8gZ2xvYmFsUmVnaXN0cnk7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gcGFyYW1zPy50YXJnZXQgPz8gXCJkcmFmdC0yMDIwLTEyXCI7XG4gICAgICAgIHRoaXMudW5yZXByZXNlbnRhYmxlID0gcGFyYW1zPy51bnJlcHJlc2VudGFibGUgPz8gXCJ0aHJvd1wiO1xuICAgICAgICB0aGlzLm92ZXJyaWRlID0gcGFyYW1zPy5vdmVycmlkZSA/PyAoKCkgPT4geyB9KTtcbiAgICAgICAgdGhpcy5pbyA9IHBhcmFtcz8uaW8gPz8gXCJvdXRwdXRcIjtcbiAgICAgICAgdGhpcy5zZWVuID0gbmV3IE1hcCgpO1xuICAgIH1cbiAgICBwcm9jZXNzKHNjaGVtYSwgX3BhcmFtcyA9IHsgcGF0aDogW10sIHNjaGVtYVBhdGg6IFtdIH0pIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBkZWYgPSBzY2hlbWEuX3pvZC5kZWY7XG4gICAgICAgIGNvbnN0IGZvcm1hdE1hcCA9IHtcbiAgICAgICAgICAgIGd1aWQ6IFwidXVpZFwiLFxuICAgICAgICAgICAgdXJsOiBcInVyaVwiLFxuICAgICAgICAgICAgZGF0ZXRpbWU6IFwiZGF0ZS10aW1lXCIsXG4gICAgICAgICAgICBqc29uX3N0cmluZzogXCJqc29uLXN0cmluZ1wiLFxuICAgICAgICAgICAgcmVnZXg6IFwiXCIsIC8vIGRvIG5vdCBzZXRcbiAgICAgICAgfTtcbiAgICAgICAgLy8gY2hlY2sgZm9yIHNjaGVtYSBpbiBzZWVuc1xuICAgICAgICBjb25zdCBzZWVuID0gdGhpcy5zZWVuLmdldChzY2hlbWEpO1xuICAgICAgICBpZiAoc2Vlbikge1xuICAgICAgICAgICAgc2Vlbi5jb3VudCsrO1xuICAgICAgICAgICAgLy8gY2hlY2sgaWYgY3ljbGVcbiAgICAgICAgICAgIGNvbnN0IGlzQ3ljbGUgPSBfcGFyYW1zLnNjaGVtYVBhdGguaW5jbHVkZXMoc2NoZW1hKTtcbiAgICAgICAgICAgIGlmIChpc0N5Y2xlKSB7XG4gICAgICAgICAgICAgICAgc2Vlbi5jeWNsZSA9IF9wYXJhbXMucGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZWVuLnNjaGVtYTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpbml0aWFsaXplXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHsgc2NoZW1hOiB7fSwgY291bnQ6IDEsIGN5Y2xlOiB1bmRlZmluZWQsIHBhdGg6IF9wYXJhbXMucGF0aCB9O1xuICAgICAgICB0aGlzLnNlZW4uc2V0KHNjaGVtYSwgcmVzdWx0KTtcbiAgICAgICAgLy8gY3VzdG9tIG1ldGhvZCBvdmVycmlkZXMgZGVmYXVsdCBiZWhhdmlvclxuICAgICAgICBjb25zdCBvdmVycmlkZVNjaGVtYSA9IHNjaGVtYS5fem9kLnRvSlNPTlNjaGVtYT8uKCk7XG4gICAgICAgIGlmIChvdmVycmlkZVNjaGVtYSkge1xuICAgICAgICAgICAgcmVzdWx0LnNjaGVtYSA9IG92ZXJyaWRlU2NoZW1hO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLl9wYXJhbXMsXG4gICAgICAgICAgICAgICAgc2NoZW1hUGF0aDogWy4uLl9wYXJhbXMuc2NoZW1hUGF0aCwgc2NoZW1hXSxcbiAgICAgICAgICAgICAgICBwYXRoOiBfcGFyYW1zLnBhdGgsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gc2NoZW1hLl96b2QucGFyZW50O1xuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgICAgIC8vIHNjaGVtYSB3YXMgY2xvbmVkIGZyb20gYW5vdGhlciBzY2hlbWFcbiAgICAgICAgICAgICAgICByZXN1bHQucmVmID0gcGFyZW50O1xuICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhwYXJlbnQsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWVuLmdldChwYXJlbnQpLmlzUGFyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IF9qc29uID0gcmVzdWx0LnNjaGVtYTtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGRlZi50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzdHJpbmdcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJzdHJpbmdcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbWluaW11bSwgbWF4aW11bSwgZm9ybWF0LCBwYXR0ZXJucywgY29udGVudEVuY29kaW5nIH0gPSBzY2hlbWEuX3pvZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5iYWc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1pbmltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5taW5MZW5ndGggPSBtaW5pbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXhpbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWF4TGVuZ3RoID0gbWF4aW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGN1c3RvbSBwYXR0ZXJuIG92ZXJyaWRlcyBmb3JtYXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLmZvcm1hdCA9IGZvcm1hdE1hcFtmb3JtYXRdID8/IGZvcm1hdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoanNvbi5mb3JtYXQgPT09IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLmZvcm1hdDsgLy8gZW1wdHkgZm9ybWF0IGlzIG5vdCB2YWxpZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRFbmNvZGluZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLmNvbnRlbnRFbmNvZGluZyA9IGNvbnRlbnRFbmNvZGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXR0ZXJucyAmJiBwYXR0ZXJucy5zaXplID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ZXMgPSBbLi4ucGF0dGVybnNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWdleGVzLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5wYXR0ZXJuID0gcmVnZXhlc1swXS5zb3VyY2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVnZXhlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zY2hlbWEuYWxsT2YgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5yZWdleGVzLm1hcCgocmVnZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTdcIiA/IHsgdHlwZTogXCJzdHJpbmdcIiB9IDoge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHJlZ2V4LnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibnVtYmVyXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbWluaW11bSwgbWF4aW11bSwgZm9ybWF0LCBtdWx0aXBsZU9mLCBleGNsdXNpdmVNYXhpbXVtLCBleGNsdXNpdmVNaW5pbXVtIH0gPSBzY2hlbWEuX3pvZC5iYWc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gXCJzdHJpbmdcIiAmJiBmb3JtYXQuaW5jbHVkZXMoXCJpbnRcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJpbnRlZ2VyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJudW1iZXJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXhjbHVzaXZlTWluaW11bSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLmV4Y2x1c2l2ZU1pbmltdW0gPSBleGNsdXNpdmVNaW5pbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtaW5pbXVtID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5taW5pbXVtID0gbWluaW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGV4Y2x1c2l2ZU1pbmltdW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV4Y2x1c2l2ZU1pbmltdW0gPj0gbWluaW11bSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLm1pbmltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLmV4Y2x1c2l2ZU1pbmltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBleGNsdXNpdmVNYXhpbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uZXhjbHVzaXZlTWF4aW11bSA9IGV4Y2x1c2l2ZU1heGltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1heGltdW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLm1heGltdW0gPSBtYXhpbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZXhjbHVzaXZlTWF4aW11bSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhjbHVzaXZlTWF4aW11bSA8PSBtYXhpbXVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24ubWF4aW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24uZXhjbHVzaXZlTWF4aW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG11bHRpcGxlT2YgPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tdWx0aXBsZU9mID0gbXVsdGlwbGVPZjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJib29sZWFuXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwiYm9vbGVhblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImJpZ2ludFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJpZ0ludCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwic3ltYm9sXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3ltYm9scyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibnVsbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi50eXBlID0gXCJudWxsXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYW55XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ1bmtub3duXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmRlZmluZWQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInZvaWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWb2lkIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJuZXZlclwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi5ub3QgPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJkYXRlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGF0ZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYXJyYXlcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBtaW5pbXVtLCBtYXhpbXVtIH0gPSBzY2hlbWEuX3pvZC5iYWc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1pbmltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5taW5JdGVtcyA9IG1pbmltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG1heGltdW0gPT09IFwibnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5tYXhJdGVtcyA9IG1heGltdW07XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcImFycmF5XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLml0ZW1zID0gdGhpcy5wcm9jZXNzKGRlZi5lbGVtZW50LCB7IC4uLnBhcmFtcywgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcIml0ZW1zXCJdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm9iamVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi5wcm9wZXJ0aWVzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFwZSA9IGRlZi5zaGFwZTsgLy8gcGFyYW1zLnNoYXBlQ2FjaGUuZ2V0KHNjaGVtYSkhO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gc2hhcGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnByb3BlcnRpZXNba2V5XSA9IHRoaXMucHJvY2VzcyhzaGFwZVtrZXldLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcInByb3BlcnRpZXNcIiwga2V5XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcXVpcmVkIGtleXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFsbEtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKHNoYXBlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBvcHRpb25hbEtleXMgPSBuZXcgU2V0KGRlZi5vcHRpb25hbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXF1aXJlZEtleXMgPSBuZXcgU2V0KFsuLi5hbGxLZXlzXS5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBkZWYuc2hhcGVba2V5XS5fem9kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlvID09PSBcImlucHV0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHYub3B0aW4gPT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2Lm9wdG91dCA9PT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZEtleXMuc2l6ZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnJlcXVpcmVkID0gQXJyYXkuZnJvbShyZXF1aXJlZEtleXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2F0Y2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWYuY2F0Y2hhbGw/Ll96b2QuZGVmLnR5cGUgPT09IFwibmV2ZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0cmljdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWRkaXRpb25hbFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFkZWYuY2F0Y2hhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZWd1bGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW8gPT09IFwib3V0cHV0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWRkaXRpb25hbFByb3BlcnRpZXMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRlZi5jYXRjaGFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWRkaXRpb25hbFByb3BlcnRpZXMgPSB0aGlzLnByb2Nlc3MoZGVmLmNhdGNoYWxsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInVuaW9uXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYW55T2YgPSBkZWYub3B0aW9ucy5tYXAoKHgsIGkpID0+IHRoaXMucHJvY2Vzcyh4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJhbnlPZlwiLCBpXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJpbnRlcnNlY3Rpb25cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYSA9IHRoaXMucHJvY2VzcyhkZWYubGVmdCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiYWxsT2ZcIiwgMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGIgPSB0aGlzLnByb2Nlc3MoZGVmLnJpZ2h0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFsuLi5wYXJhbXMucGF0aCwgXCJhbGxPZlwiLCAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNTaW1wbGVJbnRlcnNlY3Rpb24gPSAodmFsKSA9PiBcImFsbE9mXCIgaW4gdmFsICYmIE9iamVjdC5rZXlzKHZhbCkubGVuZ3RoID09PSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsT2YgPSBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGlzU2ltcGxlSW50ZXJzZWN0aW9uKGEpID8gYS5hbGxPZiA6IFthXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGlzU2ltcGxlSW50ZXJzZWN0aW9uKGIpID8gYi5hbGxPZiA6IFtiXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi5hbGxPZiA9IGFsbE9mO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInR1cGxlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBfanNvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwiYXJyYXlcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWZpeEl0ZW1zID0gZGVmLml0ZW1zLm1hcCgoeCwgaSkgPT4gdGhpcy5wcm9jZXNzKHgsIHsgLi4ucGFyYW1zLCBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwicHJlZml4SXRlbXNcIiwgaV0gfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ucHJlZml4SXRlbXMgPSBwcmVmaXhJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uaXRlbXMgPSBwcmVmaXhJdGVtcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWYucmVzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3QgPSB0aGlzLnByb2Nlc3MoZGVmLnJlc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiaXRlbXNcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLml0ZW1zID0gcmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYWRkaXRpb25hbEl0ZW1zID0gcmVzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGRpdGlvbmFsSXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWYucmVzdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uaXRlbXMgPSB0aGlzLnByb2Nlc3MoZGVmLnJlc3QsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBbLi4ucGFyYW1zLnBhdGgsIFwiaXRlbXNcIl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgbWluaW11bSwgbWF4aW11bSB9ID0gc2NoZW1hLl96b2QuYmFnO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtaW5pbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWluSXRlbXMgPSBtaW5pbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXhpbXVtID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24ubWF4SXRlbXMgPSBtYXhpbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlY29yZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm9iamVjdFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi5wcm9wZXJ0eU5hbWVzID0gdGhpcy5wcm9jZXNzKGRlZi5rZXlUeXBlLCB7IC4uLnBhcmFtcywgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcInByb3BlcnR5TmFtZXNcIl0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLmFkZGl0aW9uYWxQcm9wZXJ0aWVzID0gdGhpcy5wcm9jZXNzKGRlZi52YWx1ZVR5cGUsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogWy4uLnBhcmFtcy5wYXRoLCBcImFkZGl0aW9uYWxQcm9wZXJ0aWVzXCJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibWFwXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWFwIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJzZXRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZXQgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImVudW1cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gZ2V0RW51bVZhbHVlcyhkZWYuZW50cmllcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBOdW1iZXIgZW51bXMgY2FuIGhhdmUgYm90aCBzdHJpbmcgYW5kIG51bWJlciB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm51bWJlclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLmVudW0gPSB2YWx1ZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibGl0ZXJhbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBqc29uID0gX2pzb247XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWxzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiBkZWYudmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMaXRlcmFsIGB1bmRlZmluZWRgIGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBKU09OIFNjaGVtYVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhZGQgdG8gdmFsc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09IFwiYmlnaW50XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJpZ0ludCBsaXRlcmFscyBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzLnB1c2goTnVtYmVyKHZhbCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxzLnB1c2godmFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFscy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nIChhbiB1bmRlZmluZWQgbGl0ZXJhbCB3YXMgc3RyaXBwZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWxzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHZhbHNbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gdmFsID09PSBudWxsID8gXCJudWxsXCIgOiB0eXBlb2YgdmFsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uY29uc3QgPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFscy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm51bWJlclwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSBcImJvb2xlYW5cIikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHMuZXZlcnkoKHYpID0+IHYgPT09IG51bGwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnR5cGUgPSBcIm51bGxcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLmVudW0gPSB2YWxzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImZpbGVcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdDogXCJiaW5hcnlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50RW5jb2Rpbmc6IFwiYmluYXJ5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBtaW5pbXVtLCBtYXhpbXVtLCBtaW1lIH0gPSBzY2hlbWEuX3pvZC5iYWc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluaW11bSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubWluTGVuZ3RoID0gbWluaW11bTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXhpbXVtICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5tYXhMZW5ndGggPSBtYXhpbXVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWltZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5jb250ZW50TWVkaWFUeXBlID0gbWltZVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCBmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24uYW55T2YgPSBtaW1lLm1hcCgobSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbUZpbGUgPSB7IC4uLmZpbGUsIGNvbnRlbnRNZWRpYVR5cGU6IG0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtRmlsZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihqc29uLCBmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLnVucmVwcmVzZW50YWJsZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRocm93IG5ldyBFcnJvcihcIkZpbGUgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRyYW5zZm9ybVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy51bnJlcHJlc2VudGFibGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyYW5zZm9ybXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm51bGxhYmxlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyID0gdGhpcy5wcm9jZXNzKGRlZi5pbm5lclR5cGUsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi5hbnlPZiA9IFtpbm5lciwgeyB0eXBlOiBcIm51bGxcIiB9XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJub25vcHRpb25hbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoZGVmLmlubmVyVHlwZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZWYgPSBkZWYuaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInN1Y2Nlc3NcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbi50eXBlID0gXCJib29sZWFuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZGVmYXVsdFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoZGVmLmlubmVyVHlwZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZWYgPSBkZWYuaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2pzb24uZGVmYXVsdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInByZWZhdWx0XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbyA9PT0gXCJpbnB1dFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9qc29uLl9wcmVmYXVsdCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVmLmRlZmF1bHRWYWx1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImNhdGNoXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSBjb25kaXRpb25hbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2F0Y2hWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hWYWx1ZSA9IGRlZi5jYXRjaFZhbHVlKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRHluYW1pYyBjYXRjaCB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gSlNPTiBTY2hlbWFcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi5kZWZhdWx0ID0gY2F0Y2hWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJuYW5cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOYU4gY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRlbXBsYXRlX2xpdGVyYWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QganNvbiA9IF9qc29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF0dGVybiA9IHNjaGVtYS5fem9kLnBhdHRlcm47XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhdHRlcm4pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0dGVybiBub3QgZm91bmQgaW4gdGVtcGxhdGUgbGl0ZXJhbFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzb24udHlwZSA9IFwic3RyaW5nXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uLnBhdHRlcm4gPSBwYXR0ZXJuLnNvdXJjZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJwaXBlXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyVHlwZSA9IHRoaXMuaW8gPT09IFwiaW5wdXRcIiA/IChkZWYuaW4uX3pvZC5kZWYudHlwZSA9PT0gXCJ0cmFuc2Zvcm1cIiA/IGRlZi5vdXQgOiBkZWYuaW4pIDogZGVmLm91dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzcyhpbm5lclR5cGUsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucmVmID0gaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlYWRvbmx5XCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBfanNvbi5yZWFkT25seSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBwYXNzdGhyb3VnaCB0eXBlc1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwicHJvbWlzZVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoZGVmLmlubmVyVHlwZSwgcGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5yZWYgPSBkZWYuaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIm9wdGlvbmFsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2VzcyhkZWYuaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGRlZi5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibGF6eVwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbm5lclR5cGUgPSBzY2hlbWEuX3pvZC5pbm5lclR5cGU7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3MoaW5uZXJUeXBlLCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnJlZiA9IGlubmVyVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJjdXN0b21cIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudW5yZXByZXNlbnRhYmxlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDdXN0b20gdHlwZXMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGluIEpTT04gU2NoZW1hXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIG1ldGFkYXRhXG4gICAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLm1ldGFkYXRhUmVnaXN0cnkuZ2V0KHNjaGVtYSk7XG4gICAgICAgIGlmIChtZXRhKVxuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQuc2NoZW1hLCBtZXRhKTtcbiAgICAgICAgaWYgKHRoaXMuaW8gPT09IFwiaW5wdXRcIiAmJiBpc1RyYW5zZm9ybWluZyhzY2hlbWEpKSB7XG4gICAgICAgICAgICAvLyBleGFtcGxlcy9kZWZhdWx0cyBvbmx5IGFwcGx5IHRvIG91dHB1dCB0eXBlIG9mIHBpcGVcbiAgICAgICAgICAgIGRlbGV0ZSByZXN1bHQuc2NoZW1hLmV4YW1wbGVzO1xuICAgICAgICAgICAgZGVsZXRlIHJlc3VsdC5zY2hlbWEuZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgcHJlZmF1bHQgYXMgZGVmYXVsdFxuICAgICAgICBpZiAodGhpcy5pbyA9PT0gXCJpbnB1dFwiICYmIHJlc3VsdC5zY2hlbWEuX3ByZWZhdWx0KVxuICAgICAgICAgICAgKF9hID0gcmVzdWx0LnNjaGVtYSkuZGVmYXVsdCA/PyAoX2EuZGVmYXVsdCA9IHJlc3VsdC5zY2hlbWEuX3ByZWZhdWx0KTtcbiAgICAgICAgZGVsZXRlIHJlc3VsdC5zY2hlbWEuX3ByZWZhdWx0O1xuICAgICAgICAvLyBwdWxsaW5nIGZyZXNoIGZyb20gdGhpcy5zZWVuIGluIGNhc2UgaXQgd2FzIG92ZXJ3cml0dGVuXG4gICAgICAgIGNvbnN0IF9yZXN1bHQgPSB0aGlzLnNlZW4uZ2V0KHNjaGVtYSk7XG4gICAgICAgIHJldHVybiBfcmVzdWx0LnNjaGVtYTtcbiAgICB9XG4gICAgZW1pdChzY2hlbWEsIF9wYXJhbXMpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgY3ljbGVzOiBfcGFyYW1zPy5jeWNsZXMgPz8gXCJyZWZcIixcbiAgICAgICAgICAgIHJldXNlZDogX3BhcmFtcz8ucmV1c2VkID8/IFwiaW5saW5lXCIsXG4gICAgICAgICAgICAvLyB1bnJlcHJlc2VudGFibGU6IF9wYXJhbXM/LnVucmVwcmVzZW50YWJsZSA/PyBcInRocm93XCIsXG4gICAgICAgICAgICAvLyB1cmk6IF9wYXJhbXM/LnVyaSA/PyAoKGlkKSA9PiBgJHtpZH1gKSxcbiAgICAgICAgICAgIGV4dGVybmFsOiBfcGFyYW1zPy5leHRlcm5hbCA/PyB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICAgIC8vIGl0ZXJhdGUgb3ZlciBzZWVuIG1hcDtcbiAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMuc2Vlbi5nZXQoc2NoZW1hKTtcbiAgICAgICAgaWYgKCFyb290KVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5wcm9jZXNzZWQgc2NoZW1hLiBUaGlzIGlzIGEgYnVnIGluIFpvZC5cIik7XG4gICAgICAgIC8vIGluaXRpYWxpemUgcmVzdWx0IHdpdGggcm9vdCBzY2hlbWEgZmllbGRzXG4gICAgICAgIC8vIE9iamVjdC5hc3NpZ24ocmVzdWx0LCBzZWVuLmNhY2hlZCk7XG4gICAgICAgIC8vIHJldHVybnMgYSByZWYgdG8gdGhlIHNjaGVtYVxuICAgICAgICAvLyBkZWZJZCB3aWxsIGJlIGVtcHR5IGlmIHRoZSByZWYgcG9pbnRzIHRvIGFuIGV4dGVybmFsIHNjaGVtYSAob3IgIylcbiAgICAgICAgY29uc3QgbWFrZVVSSSA9IChlbnRyeSkgPT4ge1xuICAgICAgICAgICAgLy8gY29tcGFyaW5nIHRoZSBzZWVuIG9iamVjdHMgYmVjYXVzZSBzb21ldGltZXNcbiAgICAgICAgICAgIC8vIG11bHRpcGxlIHNjaGVtYXMgbWFwIHRvIHRoZSBzYW1lIHNlZW4gb2JqZWN0LlxuICAgICAgICAgICAgLy8gZS5nLiBsYXp5XG4gICAgICAgICAgICAvLyBleHRlcm5hbCBpcyBjb25maWd1cmVkXG4gICAgICAgICAgICBjb25zdCBkZWZzU2VnbWVudCA9IHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIiA/IFwiJGRlZnNcIiA6IFwiZGVmaW5pdGlvbnNcIjtcbiAgICAgICAgICAgIGlmIChwYXJhbXMuZXh0ZXJuYWwpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBleHRlcm5hbElkID0gcGFyYW1zLmV4dGVybmFsLnJlZ2lzdHJ5LmdldChlbnRyeVswXSk/LmlkOyAvLyA/PyBcIl9fc2hhcmVkXCI7Ly8gYF9fc2NoZW1hJHt0aGlzLmNvdW50ZXIrK31gO1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHNjaGVtYSBpcyBpbiB0aGUgZXh0ZXJuYWwgcmVnaXN0cnlcbiAgICAgICAgICAgICAgICBjb25zdCB1cmlHZW5lcmF0b3IgPSBwYXJhbXMuZXh0ZXJuYWwudXJpID8/ICgoaWQpID0+IGlkKTtcbiAgICAgICAgICAgICAgICBpZiAoZXh0ZXJuYWxJZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyByZWY6IHVyaUdlbmVyYXRvcihleHRlcm5hbElkKSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGFkZCB0byBfX3NoYXJlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gZW50cnlbMV0uZGVmSWQgPz8gZW50cnlbMV0uc2NoZW1hLmlkID8/IGBzY2hlbWEke3RoaXMuY291bnRlcisrfWA7XG4gICAgICAgICAgICAgICAgZW50cnlbMV0uZGVmSWQgPSBpZDsgLy8gc2V0IGRlZklkIHNvIGl0IHdpbGwgYmUgcmV1c2VkIGlmIG5lZWRlZFxuICAgICAgICAgICAgICAgIHJldHVybiB7IGRlZklkOiBpZCwgcmVmOiBgJHt1cmlHZW5lcmF0b3IoXCJfX3NoYXJlZFwiKX0jLyR7ZGVmc1NlZ21lbnR9LyR7aWR9YCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVudHJ5WzFdID09PSByb290KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgcmVmOiBcIiNcIiB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gc2VsZi1jb250YWluZWQgc2NoZW1hXG4gICAgICAgICAgICBjb25zdCB1cmlQcmVmaXggPSBgI2A7XG4gICAgICAgICAgICBjb25zdCBkZWZVcmlQcmVmaXggPSBgJHt1cmlQcmVmaXh9LyR7ZGVmc1NlZ21lbnR9L2A7XG4gICAgICAgICAgICBjb25zdCBkZWZJZCA9IGVudHJ5WzFdLnNjaGVtYS5pZCA/PyBgX19zY2hlbWEke3RoaXMuY291bnRlcisrfWA7XG4gICAgICAgICAgICByZXR1cm4geyBkZWZJZCwgcmVmOiBkZWZVcmlQcmVmaXggKyBkZWZJZCB9O1xuICAgICAgICB9O1xuICAgICAgICAvLyBzdG9yZWQgY2FjaGVkIHZlcnNpb24gaW4gYGRlZmAgcHJvcGVydHlcbiAgICAgICAgLy8gcmVtb3ZlIGFsbCBwcm9wZXJ0aWVzLCBzZXQgJHJlZlxuICAgICAgICBjb25zdCBleHRyYWN0VG9EZWYgPSAoZW50cnkpID0+IHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBzY2hlbWEgaXMgYWxyZWFkeSBhIHJlZmVyZW5jZSwgZG8gbm90IGV4dHJhY3QgaXRcbiAgICAgICAgICAgIGlmIChlbnRyeVsxXS5zY2hlbWEuJHJlZikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNlZW4gPSBlbnRyeVsxXTtcbiAgICAgICAgICAgIGNvbnN0IHsgcmVmLCBkZWZJZCB9ID0gbWFrZVVSSShlbnRyeSk7XG4gICAgICAgICAgICBzZWVuLmRlZiA9IHsgLi4uc2Vlbi5zY2hlbWEgfTtcbiAgICAgICAgICAgIC8vIGRlZklkIHdvbid0IGJlIHNldCBpZiB0aGUgc2NoZW1hIGlzIGEgcmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIHNjaGVtYVxuICAgICAgICAgICAgaWYgKGRlZklkKVxuICAgICAgICAgICAgICAgIHNlZW4uZGVmSWQgPSBkZWZJZDtcbiAgICAgICAgICAgIC8vIHdpcGUgYXdheSBhbGwgcHJvcGVydGllcyBleGNlcHQgJHJlZlxuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0gc2Vlbi5zY2hlbWE7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzY2hlbWEpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgc2NoZW1hW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY2hlbWEuJHJlZiA9IHJlZjtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gdGhyb3cgb24gY3ljbGVzXG4gICAgICAgIC8vIGJyZWFrIGN5Y2xlc1xuICAgICAgICBpZiAocGFyYW1zLmN5Y2xlcyA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuc2Vlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWVuID0gZW50cnlbMV07XG4gICAgICAgICAgICAgICAgaWYgKHNlZW4uY3ljbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ3ljbGUgZGV0ZWN0ZWQ6IFwiICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGAjLyR7c2Vlbi5jeWNsZT8uam9pbihcIi9cIil9Lzxyb290PmAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcblxcblNldCB0aGUgYGN5Y2xlc2AgcGFyYW1ldGVyIHRvIGBcInJlZlwiYCB0byByZXNvbHZlIGN5Y2xpY2FsIHNjaGVtYXMgd2l0aCBkZWZzLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBleHRyYWN0IHNjaGVtYXMgaW50byAkZGVmc1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHRoaXMuc2Vlbi5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlZW4gPSBlbnRyeVsxXTtcbiAgICAgICAgICAgIC8vIGNvbnZlcnQgcm9vdCBzY2hlbWEgdG8gIyAkcmVmXG4gICAgICAgICAgICBpZiAoc2NoZW1hID09PSBlbnRyeVswXSkge1xuICAgICAgICAgICAgICAgIGV4dHJhY3RUb0RlZihlbnRyeSk7IC8vIHRoaXMgaGFzIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSByb290IHNjaGVtYVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXh0cmFjdCBzY2hlbWFzIHRoYXQgYXJlIGluIHRoZSBleHRlcm5hbCByZWdpc3RyeVxuICAgICAgICAgICAgaWYgKHBhcmFtcy5leHRlcm5hbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4dCA9IHBhcmFtcy5leHRlcm5hbC5yZWdpc3RyeS5nZXQoZW50cnlbMF0pPy5pZDtcbiAgICAgICAgICAgICAgICBpZiAoc2NoZW1hICE9PSBlbnRyeVswXSAmJiBleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdFRvRGVmKGVudHJ5KTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZXh0cmFjdCBzY2hlbWFzIHdpdGggYGlkYCBtZXRhXG4gICAgICAgICAgICBjb25zdCBpZCA9IHRoaXMubWV0YWRhdGFSZWdpc3RyeS5nZXQoZW50cnlbMF0pPy5pZDtcbiAgICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgICAgIGV4dHJhY3RUb0RlZihlbnRyeSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBicmVhayBjeWNsZXNcbiAgICAgICAgICAgIGlmIChzZWVuLmN5Y2xlKSB7XG4gICAgICAgICAgICAgICAgLy8gYW55XG4gICAgICAgICAgICAgICAgZXh0cmFjdFRvRGVmKGVudHJ5KTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGV4dHJhY3QgcmV1c2VkIHNjaGVtYXNcbiAgICAgICAgICAgIGlmIChzZWVuLmNvdW50ID4gMSkge1xuICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmV1c2VkID09PSBcInJlZlwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RUb0RlZihlbnRyeSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50OlxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmxhdHRlbiBfcmVmc1xuICAgICAgICBjb25zdCBmbGF0dGVuUmVmID0gKHpvZFNjaGVtYSwgcGFyYW1zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gdGhpcy5zZWVuLmdldCh6b2RTY2hlbWEpO1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0gc2Vlbi5kZWYgPz8gc2Vlbi5zY2hlbWE7XG4gICAgICAgICAgICBjb25zdCBfY2FjaGVkID0geyAuLi5zY2hlbWEgfTtcbiAgICAgICAgICAgIC8vIGFscmVhZHkgc2VlblxuICAgICAgICAgICAgaWYgKHNlZW4ucmVmID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZmxhdHRlbiByZWYgaWYgZGVmaW5lZFxuICAgICAgICAgICAgY29uc3QgcmVmID0gc2Vlbi5yZWY7XG4gICAgICAgICAgICBzZWVuLnJlZiA9IG51bGw7IC8vIHByZXZlbnQgcmVjdXJzaW9uXG4gICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgZmxhdHRlblJlZihyZWYsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgLy8gbWVyZ2UgcmVmZXJlbmNlZCBzY2hlbWEgaW50byBjdXJyZW50XG4gICAgICAgICAgICAgICAgY29uc3QgcmVmU2NoZW1hID0gdGhpcy5zZWVuLmdldChyZWYpLnNjaGVtYTtcbiAgICAgICAgICAgICAgICBpZiAocmVmU2NoZW1hLiRyZWYgJiYgcGFyYW1zLnRhcmdldCA9PT0gXCJkcmFmdC03XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hLmFsbE9mID0gc2NoZW1hLmFsbE9mID8/IFtdO1xuICAgICAgICAgICAgICAgICAgICBzY2hlbWEuYWxsT2YucHVzaChyZWZTY2hlbWEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihzY2hlbWEsIHJlZlNjaGVtYSk7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oc2NoZW1hLCBfY2FjaGVkKTsgLy8gcHJldmVudCBvdmVyd3JpdGluZyBhbnkgZmllbGRzIGluIHRoZSBvcmlnaW5hbCBzY2hlbWFcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBleGVjdXRlIG92ZXJyaWRlc1xuICAgICAgICAgICAgaWYgKCFzZWVuLmlzUGFyZW50KVxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcnJpZGUoe1xuICAgICAgICAgICAgICAgICAgICB6b2RTY2hlbWE6IHpvZFNjaGVtYSxcbiAgICAgICAgICAgICAgICAgICAganNvblNjaGVtYTogc2NoZW1hLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBzZWVuLnBhdGggPz8gW10sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgWy4uLnRoaXMuc2Vlbi5lbnRyaWVzKCldLnJldmVyc2UoKSkge1xuICAgICAgICAgICAgZmxhdHRlblJlZihlbnRyeVswXSwgeyB0YXJnZXQ6IHRoaXMudGFyZ2V0IH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBpZiAodGhpcy50YXJnZXQgPT09IFwiZHJhZnQtMjAyMC0xMlwiKSB7XG4gICAgICAgICAgICByZXN1bHQuJHNjaGVtYSA9IFwiaHR0cHM6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQvMjAyMC0xMi9zY2hlbWFcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnRhcmdldCA9PT0gXCJkcmFmdC03XCIpIHtcbiAgICAgICAgICAgIHJlc3VsdC4kc2NoZW1hID0gXCJodHRwOi8vanNvbi1zY2hlbWEub3JnL2RyYWZ0LTA3L3NjaGVtYSNcIjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgSW52YWxpZCB0YXJnZXQ6ICR7dGhpcy50YXJnZXR9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtcy5leHRlcm5hbD8udXJpKSB7XG4gICAgICAgICAgICBjb25zdCBpZCA9IHBhcmFtcy5leHRlcm5hbC5yZWdpc3RyeS5nZXQoc2NoZW1hKT8uaWQ7XG4gICAgICAgICAgICBpZiAoIWlkKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBpcyBtaXNzaW5nIGFuIGBpZGAgcHJvcGVydHlcIik7XG4gICAgICAgICAgICByZXN1bHQuJGlkID0gcGFyYW1zLmV4dGVybmFsLnVyaShpZCk7XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHJvb3QuZGVmKTtcbiAgICAgICAgLy8gYnVpbGQgZGVmcyBvYmplY3RcbiAgICAgICAgY29uc3QgZGVmcyA9IHBhcmFtcy5leHRlcm5hbD8uZGVmcyA/PyB7fTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiB0aGlzLnNlZW4uZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBzZWVuID0gZW50cnlbMV07XG4gICAgICAgICAgICBpZiAoc2Vlbi5kZWYgJiYgc2Vlbi5kZWZJZCkge1xuICAgICAgICAgICAgICAgIGRlZnNbc2Vlbi5kZWZJZF0gPSBzZWVuLmRlZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBzZXQgZGVmaW5pdGlvbnMgaW4gcmVzdWx0XG4gICAgICAgIGlmIChwYXJhbXMuZXh0ZXJuYWwpIHtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhkZWZzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0ID09PSBcImRyYWZ0LTIwMjAtMTJcIikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQuJGRlZnMgPSBkZWZzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmRlZmluaXRpb25zID0gZGVmcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIHRoaXMgXCJmaW5hbGl6ZXNcIiB0aGlzIHNjaGVtYSBhbmQgZW5zdXJlcyBhbGwgY3ljbGVzIGFyZSByZW1vdmVkXG4gICAgICAgICAgICAvLyBlYWNoIGNhbGwgdG8gLmVtaXQoKSBpcyBmdW5jdGlvbmFsbHkgaW5kZXBlbmRlbnRcbiAgICAgICAgICAgIC8vIHRob3VnaCB0aGUgc2VlbiBtYXAgaXMgc2hhcmVkXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXN1bHQpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2Vycikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgY29udmVydGluZyBzY2hlbWEgdG8gSlNPTi5cIik7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gdG9KU09OU2NoZW1hKGlucHV0LCBfcGFyYW1zKSB7XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgJFpvZFJlZ2lzdHJ5KSB7XG4gICAgICAgIGNvbnN0IGdlbiA9IG5ldyBKU09OU2NoZW1hR2VuZXJhdG9yKF9wYXJhbXMpO1xuICAgICAgICBjb25zdCBkZWZzID0ge307XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgaW5wdXQuX2lkbWFwLmVudHJpZXMoKSkge1xuICAgICAgICAgICAgY29uc3QgW18sIHNjaGVtYV0gPSBlbnRyeTtcbiAgICAgICAgICAgIGdlbi5wcm9jZXNzKHNjaGVtYSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NoZW1hcyA9IHt9O1xuICAgICAgICBjb25zdCBleHRlcm5hbCA9IHtcbiAgICAgICAgICAgIHJlZ2lzdHJ5OiBpbnB1dCxcbiAgICAgICAgICAgIHVyaTogX3BhcmFtcz8udXJpLFxuICAgICAgICAgICAgZGVmcyxcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBpbnB1dC5faWRtYXAuZW50cmllcygpKSB7XG4gICAgICAgICAgICBjb25zdCBba2V5LCBzY2hlbWFdID0gZW50cnk7XG4gICAgICAgICAgICBzY2hlbWFzW2tleV0gPSBnZW4uZW1pdChzY2hlbWEsIHtcbiAgICAgICAgICAgICAgICAuLi5fcGFyYW1zLFxuICAgICAgICAgICAgICAgIGV4dGVybmFsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKGRlZnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZnNTZWdtZW50ID0gZ2VuLnRhcmdldCA9PT0gXCJkcmFmdC0yMDIwLTEyXCIgPyBcIiRkZWZzXCIgOiBcImRlZmluaXRpb25zXCI7XG4gICAgICAgICAgICBzY2hlbWFzLl9fc2hhcmVkID0ge1xuICAgICAgICAgICAgICAgIFtkZWZzU2VnbWVudF06IGRlZnMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHNjaGVtYXMgfTtcbiAgICB9XG4gICAgY29uc3QgZ2VuID0gbmV3IEpTT05TY2hlbWFHZW5lcmF0b3IoX3BhcmFtcyk7XG4gICAgZ2VuLnByb2Nlc3MoaW5wdXQpO1xuICAgIHJldHVybiBnZW4uZW1pdChpbnB1dCwgX3BhcmFtcyk7XG59XG5mdW5jdGlvbiBpc1RyYW5zZm9ybWluZyhfc2NoZW1hLCBfY3R4KSB7XG4gICAgY29uc3QgY3R4ID0gX2N0eCA/PyB7IHNlZW46IG5ldyBTZXQoKSB9O1xuICAgIGlmIChjdHguc2Vlbi5oYXMoX3NjaGVtYSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjdHguc2Vlbi5hZGQoX3NjaGVtYSk7XG4gICAgY29uc3Qgc2NoZW1hID0gX3NjaGVtYTtcbiAgICBjb25zdCBkZWYgPSBzY2hlbWEuX3pvZC5kZWY7XG4gICAgc3dpdGNoIChkZWYudHlwZSkge1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICAgICAgY2FzZSBcImJpZ2ludFwiOlxuICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICBjYXNlIFwiZGF0ZVwiOlxuICAgICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgY2FzZSBcIm51bGxcIjpcbiAgICAgICAgY2FzZSBcImFueVwiOlxuICAgICAgICBjYXNlIFwidW5rbm93blwiOlxuICAgICAgICBjYXNlIFwibmV2ZXJcIjpcbiAgICAgICAgY2FzZSBcInZvaWRcIjpcbiAgICAgICAgY2FzZSBcImxpdGVyYWxcIjpcbiAgICAgICAgY2FzZSBcImVudW1cIjpcbiAgICAgICAgY2FzZSBcIm5hblwiOlxuICAgICAgICBjYXNlIFwiZmlsZVwiOlxuICAgICAgICBjYXNlIFwidGVtcGxhdGVfbGl0ZXJhbFwiOlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjYXNlIFwiYXJyYXlcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi5lbGVtZW50LCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJvYmplY3RcIjoge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGVmLnNoYXBlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzVHJhbnNmb3JtaW5nKGRlZi5zaGFwZVtrZXldLCBjdHgpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidW5pb25cIjoge1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2YgZGVmLm9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1pbmcob3B0aW9uLCBjdHgpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiaW50ZXJzZWN0aW9uXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYubGVmdCwgY3R4KSB8fCBpc1RyYW5zZm9ybWluZyhkZWYucmlnaHQsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInR1cGxlXCI6IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBkZWYuaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNUcmFuc2Zvcm1pbmcoaXRlbSwgY3R4KSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGVmLnJlc3QgJiYgaXNUcmFuc2Zvcm1pbmcoZGVmLnJlc3QsIGN0eCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInJlY29yZFwiOiB7XG4gICAgICAgICAgICByZXR1cm4gaXNUcmFuc2Zvcm1pbmcoZGVmLmtleVR5cGUsIGN0eCkgfHwgaXNUcmFuc2Zvcm1pbmcoZGVmLnZhbHVlVHlwZSwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwibWFwXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYua2V5VHlwZSwgY3R4KSB8fCBpc1RyYW5zZm9ybWluZyhkZWYudmFsdWVUeXBlLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZXRcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGlzVHJhbnNmb3JtaW5nKGRlZi52YWx1ZVR5cGUsIGN0eCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaW5uZXIgdHlwZXNcbiAgICAgICAgY2FzZSBcInByb21pc2VcIjpcbiAgICAgICAgY2FzZSBcIm9wdGlvbmFsXCI6XG4gICAgICAgIGNhc2UgXCJub25vcHRpb25hbFwiOlxuICAgICAgICBjYXNlIFwibnVsbGFibGVcIjpcbiAgICAgICAgY2FzZSBcInJlYWRvbmx5XCI6XG4gICAgICAgICAgICByZXR1cm4gaXNUcmFuc2Zvcm1pbmcoZGVmLmlubmVyVHlwZSwgY3R4KTtcbiAgICAgICAgY2FzZSBcImxhenlcIjpcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuZ2V0dGVyKCksIGN0eCk7XG4gICAgICAgIGNhc2UgXCJkZWZhdWx0XCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuaW5uZXJUeXBlLCBjdHgpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJwcmVmYXVsdFwiOiB7XG4gICAgICAgICAgICByZXR1cm4gaXNUcmFuc2Zvcm1pbmcoZGVmLmlubmVyVHlwZSwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY3VzdG9tXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwidHJhbnNmb3JtXCI6IHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJwaXBlXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBpc1RyYW5zZm9ybWluZyhkZWYuaW4sIGN0eCkgfHwgaXNUcmFuc2Zvcm1pbmcoZGVmLm91dCwgY3R4KTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic3VjY2Vzc1wiOiB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImNhdGNoXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgZGVmO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2NoZW1hIHR5cGU6ICR7ZGVmLnR5cGV9YCk7XG59XG4iXSwibmFtZXMiOlsiJFpvZFJlZ2lzdHJ5IiwiZ2xvYmFsUmVnaXN0cnkiLCJnZXRFbnVtVmFsdWVzIiwiSlNPTlNjaGVtYUdlbmVyYXRvciIsInBhcmFtcyIsImNvdW50ZXIiLCJtZXRhZGF0YVJlZ2lzdHJ5IiwibWV0YWRhdGEiLCJ0YXJnZXQiLCJ1bnJlcHJlc2VudGFibGUiLCJvdmVycmlkZSIsImlvIiwic2VlbiIsIk1hcCIsInByb2Nlc3MiLCJzY2hlbWEiLCJfcGFyYW1zIiwicGF0aCIsInNjaGVtYVBhdGgiLCJfYSIsImRlZiIsIl96b2QiLCJmb3JtYXRNYXAiLCJndWlkIiwidXJsIiwiZGF0ZXRpbWUiLCJqc29uX3N0cmluZyIsInJlZ2V4IiwiZ2V0IiwiY291bnQiLCJpc0N5Y2xlIiwiaW5jbHVkZXMiLCJjeWNsZSIsInJlc3VsdCIsInVuZGVmaW5lZCIsInNldCIsIm92ZXJyaWRlU2NoZW1hIiwidG9KU09OU2NoZW1hIiwicGFyZW50IiwicmVmIiwiaXNQYXJlbnQiLCJfanNvbiIsInR5cGUiLCJqc29uIiwibWluaW11bSIsIm1heGltdW0iLCJmb3JtYXQiLCJwYXR0ZXJucyIsImNvbnRlbnRFbmNvZGluZyIsImJhZyIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsInNpemUiLCJyZWdleGVzIiwibGVuZ3RoIiwicGF0dGVybiIsInNvdXJjZSIsImFsbE9mIiwibWFwIiwibXVsdGlwbGVPZiIsImV4Y2x1c2l2ZU1heGltdW0iLCJleGNsdXNpdmVNaW5pbXVtIiwiRXJyb3IiLCJub3QiLCJtaW5JdGVtcyIsIm1heEl0ZW1zIiwiaXRlbXMiLCJlbGVtZW50IiwicHJvcGVydGllcyIsInNoYXBlIiwia2V5IiwiYWxsS2V5cyIsIlNldCIsIk9iamVjdCIsImtleXMiLCJyZXF1aXJlZEtleXMiLCJmaWx0ZXIiLCJ2Iiwib3B0aW4iLCJvcHRvdXQiLCJyZXF1aXJlZCIsIkFycmF5IiwiZnJvbSIsImNhdGNoYWxsIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJhbnlPZiIsIm9wdGlvbnMiLCJ4IiwiaSIsImEiLCJsZWZ0IiwiYiIsInJpZ2h0IiwiaXNTaW1wbGVJbnRlcnNlY3Rpb24iLCJ2YWwiLCJwcmVmaXhJdGVtcyIsInJlc3QiLCJhZGRpdGlvbmFsSXRlbXMiLCJwcm9wZXJ0eU5hbWVzIiwia2V5VHlwZSIsInZhbHVlVHlwZSIsInZhbHVlcyIsImVudHJpZXMiLCJldmVyeSIsImVudW0iLCJ2YWxzIiwicHVzaCIsIk51bWJlciIsImNvbnN0IiwiZmlsZSIsIm1pbWUiLCJjb250ZW50TWVkaWFUeXBlIiwiYXNzaWduIiwibSIsIm1GaWxlIiwiaW5uZXIiLCJpbm5lclR5cGUiLCJkZWZhdWx0IiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiZGVmYXVsdFZhbHVlIiwiX3ByZWZhdWx0IiwiY2F0Y2hWYWx1ZSIsImluIiwib3V0IiwicmVhZE9ubHkiLCJtZXRhIiwiaXNUcmFuc2Zvcm1pbmciLCJleGFtcGxlcyIsIl9yZXN1bHQiLCJlbWl0IiwiY3ljbGVzIiwicmV1c2VkIiwiZXh0ZXJuYWwiLCJyb290IiwibWFrZVVSSSIsImVudHJ5IiwiZGVmc1NlZ21lbnQiLCJleHRlcm5hbElkIiwicmVnaXN0cnkiLCJpZCIsInVyaUdlbmVyYXRvciIsInVyaSIsImRlZklkIiwidXJpUHJlZml4IiwiZGVmVXJpUHJlZml4IiwiZXh0cmFjdFRvRGVmIiwiJHJlZiIsImpvaW4iLCJleHQiLCJmbGF0dGVuUmVmIiwiem9kU2NoZW1hIiwiX2NhY2hlZCIsInJlZlNjaGVtYSIsImpzb25TY2hlbWEiLCJyZXZlcnNlIiwiJHNjaGVtYSIsImNvbnNvbGUiLCJ3YXJuIiwiJGlkIiwiZGVmcyIsIiRkZWZzIiwiZGVmaW5pdGlvbnMiLCJfZXJyIiwiaW5wdXQiLCJnZW4iLCJfaWRtYXAiLCJfIiwic2NoZW1hcyIsIl9fc2hhcmVkIiwiX3NjaGVtYSIsIl9jdHgiLCJjdHgiLCJoYXMiLCJhZGQiLCJvcHRpb24iLCJpdGVtIiwiZ2V0dGVyIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/to-json-schema.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js":
|
||
/*!*************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js ***!
|
||
\*************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BIGINT_FORMAT_RANGES: () => (/* binding */ BIGINT_FORMAT_RANGES),\n/* harmony export */ Class: () => (/* binding */ Class),\n/* harmony export */ NUMBER_FORMAT_RANGES: () => (/* binding */ NUMBER_FORMAT_RANGES),\n/* harmony export */ aborted: () => (/* binding */ aborted),\n/* harmony export */ allowsEval: () => (/* binding */ allowsEval),\n/* harmony export */ assert: () => (/* binding */ assert),\n/* harmony export */ assertEqual: () => (/* binding */ assertEqual),\n/* harmony export */ assertIs: () => (/* binding */ assertIs),\n/* harmony export */ assertNever: () => (/* binding */ assertNever),\n/* harmony export */ assertNotEqual: () => (/* binding */ assertNotEqual),\n/* harmony export */ assignProp: () => (/* binding */ assignProp),\n/* harmony export */ cached: () => (/* binding */ cached),\n/* harmony export */ captureStackTrace: () => (/* binding */ captureStackTrace),\n/* harmony export */ cleanEnum: () => (/* binding */ cleanEnum),\n/* harmony export */ cleanRegex: () => (/* binding */ cleanRegex),\n/* harmony export */ clone: () => (/* binding */ clone),\n/* harmony export */ createTransparentProxy: () => (/* binding */ createTransparentProxy),\n/* harmony export */ defineLazy: () => (/* binding */ defineLazy),\n/* harmony export */ esc: () => (/* binding */ esc),\n/* harmony export */ escapeRegex: () => (/* binding */ escapeRegex),\n/* harmony export */ extend: () => (/* binding */ extend),\n/* harmony export */ finalizeIssue: () => (/* binding */ finalizeIssue),\n/* harmony export */ floatSafeRemainder: () => (/* binding */ floatSafeRemainder),\n/* harmony export */ getElementAtPath: () => (/* binding */ getElementAtPath),\n/* harmony export */ getEnumValues: () => (/* binding */ getEnumValues),\n/* harmony export */ getLengthableOrigin: () => (/* binding */ getLengthableOrigin),\n/* harmony export */ getParsedType: () => (/* binding */ getParsedType),\n/* harmony export */ getSizableOrigin: () => (/* binding */ getSizableOrigin),\n/* harmony export */ isObject: () => (/* binding */ isObject),\n/* harmony export */ isPlainObject: () => (/* binding */ isPlainObject),\n/* harmony export */ issue: () => (/* binding */ issue),\n/* harmony export */ joinValues: () => (/* binding */ joinValues),\n/* harmony export */ jsonStringifyReplacer: () => (/* binding */ jsonStringifyReplacer),\n/* harmony export */ merge: () => (/* binding */ merge),\n/* harmony export */ normalizeParams: () => (/* binding */ normalizeParams),\n/* harmony export */ nullish: () => (/* binding */ nullish),\n/* harmony export */ numKeys: () => (/* binding */ numKeys),\n/* harmony export */ omit: () => (/* binding */ omit),\n/* harmony export */ optionalKeys: () => (/* binding */ optionalKeys),\n/* harmony export */ partial: () => (/* binding */ partial),\n/* harmony export */ pick: () => (/* binding */ pick),\n/* harmony export */ prefixIssues: () => (/* binding */ prefixIssues),\n/* harmony export */ primitiveTypes: () => (/* binding */ primitiveTypes),\n/* harmony export */ promiseAllObject: () => (/* binding */ promiseAllObject),\n/* harmony export */ propertyKeyTypes: () => (/* binding */ propertyKeyTypes),\n/* harmony export */ randomString: () => (/* binding */ randomString),\n/* harmony export */ required: () => (/* binding */ required),\n/* harmony export */ stringifyPrimitive: () => (/* binding */ stringifyPrimitive),\n/* harmony export */ unwrapMessage: () => (/* binding */ unwrapMessage)\n/* harmony export */ });\n// functions\nfunction assertEqual(val) {\n return val;\n}\nfunction assertNotEqual(val) {\n return val;\n}\nfunction assertIs(_arg) {}\nfunction assertNever(_x) {\n throw new Error();\n}\nfunction assert(_) {}\nfunction getEnumValues(entries) {\n const numericValues = Object.values(entries).filter((v)=>typeof v === \"number\");\n const values = Object.entries(entries).filter(([k, _])=>numericValues.indexOf(+k) === -1).map(([_, v])=>v);\n return values;\n}\nfunction joinValues(array, separator = \"|\") {\n return array.map((val)=>stringifyPrimitive(val)).join(separator);\n}\nfunction jsonStringifyReplacer(_, value) {\n if (typeof value === \"bigint\") return value.toString();\n return value;\n}\nfunction cached(getter) {\n const set = false;\n return {\n get value () {\n if (!set) {\n const value = getter();\n Object.defineProperty(this, \"value\", {\n value\n });\n return value;\n }\n throw new Error(\"cached value already set\");\n }\n };\n}\nfunction nullish(input) {\n return input === null || input === undefined;\n}\nfunction cleanRegex(source) {\n const start = source.startsWith(\"^\") ? 1 : 0;\n const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n return source.slice(start, end);\n}\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return valInt % stepInt / 10 ** decCount;\n}\nfunction defineLazy(object, key, getter) {\n const set = false;\n Object.defineProperty(object, key, {\n get () {\n if (!set) {\n const value = getter();\n object[key] = value;\n return value;\n }\n throw new Error(\"cached value already set\");\n },\n set (v) {\n Object.defineProperty(object, key, {\n value: v\n });\n // object[key] = v;\n },\n configurable: true\n });\n}\nfunction assignProp(target, prop, value) {\n Object.defineProperty(target, prop, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n}\nfunction getElementAtPath(obj, path) {\n if (!path) return obj;\n return path.reduce((acc, key)=>acc?.[key], obj);\n}\nfunction promiseAllObject(promisesObj) {\n const keys = Object.keys(promisesObj);\n const promises = keys.map((key)=>promisesObj[key]);\n return Promise.all(promises).then((results)=>{\n const resolvedObj = {};\n for(let i = 0; i < keys.length; i++){\n resolvedObj[keys[i]] = results[i];\n }\n return resolvedObj;\n });\n}\nfunction randomString(length = 10) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let str = \"\";\n for(let i = 0; i < length; i++){\n str += chars[Math.floor(Math.random() * chars.length)];\n }\n return str;\n}\nfunction esc(str) {\n return JSON.stringify(str);\n}\nconst captureStackTrace = Error.captureStackTrace ? Error.captureStackTrace : (..._args)=>{};\nfunction isObject(data) {\n return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nconst allowsEval = cached(()=>{\n if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n return false;\n }\n try {\n const F = Function;\n new F(\"\");\n return true;\n } catch (_) {\n return false;\n }\n});\nfunction isPlainObject(o) {\n if (isObject(o) === false) return false;\n // modified constructor\n const ctor = o.constructor;\n if (ctor === undefined) return true;\n // modified prototype\n const prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n // ctor doesn't have static `isPrototypeOf`\n if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n return false;\n }\n return true;\n}\nfunction numKeys(data) {\n let keyCount = 0;\n for(const key in data){\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n keyCount++;\n }\n }\n return keyCount;\n}\nconst getParsedType = (data)=>{\n const t = typeof data;\n switch(t){\n case \"undefined\":\n return \"undefined\";\n case \"string\":\n return \"string\";\n case \"number\":\n return Number.isNaN(data) ? \"nan\" : \"number\";\n case \"boolean\":\n return \"boolean\";\n case \"function\":\n return \"function\";\n case \"bigint\":\n return \"bigint\";\n case \"symbol\":\n return \"symbol\";\n case \"object\":\n if (Array.isArray(data)) {\n return \"array\";\n }\n if (data === null) {\n return \"null\";\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return \"promise\";\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return \"map\";\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return \"set\";\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return \"date\";\n }\n if (typeof File !== \"undefined\" && data instanceof File) {\n return \"file\";\n }\n return \"object\";\n default:\n throw new Error(`Unknown data type: ${t}`);\n }\n};\nconst propertyKeyTypes = new Set([\n \"string\",\n \"number\",\n \"symbol\"\n]);\nconst primitiveTypes = new Set([\n \"string\",\n \"number\",\n \"bigint\",\n \"boolean\",\n \"symbol\",\n \"undefined\"\n]);\nfunction escapeRegex(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nfunction clone(inst, def, params) {\n const cl = new inst._zod.constr(def ?? inst._zod.def);\n if (!def || params?.parent) cl._zod.parent = inst;\n return cl;\n}\nfunction normalizeParams(_params) {\n const params = _params;\n if (!params) return {};\n if (typeof params === \"string\") return {\n error: ()=>params\n };\n if (params?.message !== undefined) {\n if (params?.error !== undefined) throw new Error(\"Cannot specify both `message` and `error` params\");\n params.error = params.message;\n }\n delete params.message;\n if (typeof params.error === \"string\") return {\n ...params,\n error: ()=>params.error\n };\n return params;\n}\nfunction createTransparentProxy(getter) {\n let target;\n return new Proxy({}, {\n get (_, prop, receiver) {\n target ?? (target = getter());\n return Reflect.get(target, prop, receiver);\n },\n set (_, prop, value, receiver) {\n target ?? (target = getter());\n return Reflect.set(target, prop, value, receiver);\n },\n has (_, prop) {\n target ?? (target = getter());\n return Reflect.has(target, prop);\n },\n deleteProperty (_, prop) {\n target ?? (target = getter());\n return Reflect.deleteProperty(target, prop);\n },\n ownKeys (_) {\n target ?? (target = getter());\n return Reflect.ownKeys(target);\n },\n getOwnPropertyDescriptor (_, prop) {\n target ?? (target = getter());\n return Reflect.getOwnPropertyDescriptor(target, prop);\n },\n defineProperty (_, prop, descriptor) {\n target ?? (target = getter());\n return Reflect.defineProperty(target, prop, descriptor);\n }\n });\n}\nfunction stringifyPrimitive(value) {\n if (typeof value === \"bigint\") return value.toString() + \"n\";\n if (typeof value === \"string\") return `\"${value}\"`;\n return `${value}`;\n}\nfunction optionalKeys(shape) {\n return Object.keys(shape).filter((k)=>{\n return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n });\n}\nconst NUMBER_FORMAT_RANGES = {\n safeint: [\n Number.MIN_SAFE_INTEGER,\n Number.MAX_SAFE_INTEGER\n ],\n int32: [\n -2147483648,\n 2147483647\n ],\n uint32: [\n 0,\n 4294967295\n ],\n float32: [\n -3.4028234663852886e38,\n 3.4028234663852886e38\n ],\n float64: [\n -Number.MAX_VALUE,\n Number.MAX_VALUE\n ]\n};\nconst BIGINT_FORMAT_RANGES = {\n int64: [\n /* @__PURE__*/ BigInt(\"-9223372036854775808\"),\n /* @__PURE__*/ BigInt(\"9223372036854775807\")\n ],\n uint64: [\n /* @__PURE__*/ BigInt(0),\n /* @__PURE__*/ BigInt(\"18446744073709551615\")\n ]\n};\nfunction pick(schema, mask) {\n const newShape = {};\n const currDef = schema._zod.def; //.shape;\n for(const key in mask){\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key]) continue;\n // pick key\n newShape[key] = currDef.shape[key];\n }\n return clone(schema, {\n ...schema._zod.def,\n shape: newShape,\n checks: []\n });\n}\nfunction omit(schema, mask) {\n const newShape = {\n ...schema._zod.def.shape\n };\n const currDef = schema._zod.def; //.shape;\n for(const key in mask){\n if (!(key in currDef.shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key]) continue;\n delete newShape[key];\n }\n return clone(schema, {\n ...schema._zod.def,\n shape: newShape,\n checks: []\n });\n}\nfunction extend(schema, shape) {\n if (!isPlainObject(shape)) {\n throw new Error(\"Invalid input to extend: expected a plain object\");\n }\n const def = {\n ...schema._zod.def,\n get shape () {\n const _shape = {\n ...schema._zod.def.shape,\n ...shape\n };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n checks: []\n };\n return clone(schema, def);\n}\nfunction merge(a, b) {\n return clone(a, {\n ...a._zod.def,\n get shape () {\n const _shape = {\n ...a._zod.def.shape,\n ...b._zod.def.shape\n };\n assignProp(this, \"shape\", _shape); // self-caching\n return _shape;\n },\n catchall: b._zod.def.catchall,\n checks: []\n });\n}\nfunction partial(Class, schema, mask) {\n const oldShape = schema._zod.def.shape;\n const shape = {\n ...oldShape\n };\n if (mask) {\n for(const key in mask){\n if (!(key in oldShape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key]) continue;\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class ? new Class({\n type: \"optional\",\n innerType: oldShape[key]\n }) : oldShape[key];\n }\n } else {\n for(const key in oldShape){\n // if (oldShape[key]!._zod.optin === \"optional\") continue;\n shape[key] = Class ? new Class({\n type: \"optional\",\n innerType: oldShape[key]\n }) : oldShape[key];\n }\n }\n return clone(schema, {\n ...schema._zod.def,\n shape,\n checks: []\n });\n}\nfunction required(Class, schema, mask) {\n const oldShape = schema._zod.def.shape;\n const shape = {\n ...oldShape\n };\n if (mask) {\n for(const key in mask){\n if (!(key in shape)) {\n throw new Error(`Unrecognized key: \"${key}\"`);\n }\n if (!mask[key]) continue;\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key]\n });\n }\n } else {\n for(const key in oldShape){\n // overwrite with non-optional\n shape[key] = new Class({\n type: \"nonoptional\",\n innerType: oldShape[key]\n });\n }\n }\n return clone(schema, {\n ...schema._zod.def,\n shape,\n // optional: [],\n checks: []\n });\n}\nfunction aborted(x, startIndex = 0) {\n for(let i = startIndex; i < x.issues.length; i++){\n if (x.issues[i]?.continue !== true) return true;\n }\n return false;\n}\nfunction prefixIssues(path, issues) {\n return issues.map((iss)=>{\n var _a;\n (_a = iss).path ?? (_a.path = []);\n iss.path.unshift(path);\n return iss;\n });\n}\nfunction unwrapMessage(message) {\n return typeof message === \"string\" ? message : message?.message;\n}\nfunction finalizeIssue(iss, ctx, config) {\n const full = {\n ...iss,\n path: iss.path ?? []\n };\n // for backwards compatibility\n if (!iss.message) {\n const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ?? unwrapMessage(ctx?.error?.(iss)) ?? unwrapMessage(config.customError?.(iss)) ?? unwrapMessage(config.localeError?.(iss)) ?? \"Invalid input\";\n full.message = message;\n }\n // delete (full as any).def;\n delete full.inst;\n delete full.continue;\n if (!ctx?.reportInput) {\n delete full.input;\n }\n return full;\n}\nfunction getSizableOrigin(input) {\n if (input instanceof Set) return \"set\";\n if (input instanceof Map) return \"map\";\n if (input instanceof File) return \"file\";\n return \"unknown\";\n}\nfunction getLengthableOrigin(input) {\n if (Array.isArray(input)) return \"array\";\n if (typeof input === \"string\") return \"string\";\n return \"unknown\";\n}\nfunction issue(...args) {\n const [iss, input, inst] = args;\n if (typeof iss === \"string\") {\n return {\n message: iss,\n code: \"custom\",\n input,\n inst\n };\n }\n return {\n ...iss\n };\n}\nfunction cleanEnum(obj) {\n return Object.entries(obj).filter(([k, _])=>{\n // return true if NaN, meaning it's not a number, thus a string key\n return Number.isNaN(Number.parseInt(k, 10));\n }).map((el)=>el[1]);\n}\n// instanceof\nclass Class {\n constructor(..._args){}\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3V0aWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFlBQVk7QUFDTCxTQUFTQSxZQUFZQyxHQUFHO0lBQzNCLE9BQU9BO0FBQ1g7QUFDTyxTQUFTQyxlQUFlRCxHQUFHO0lBQzlCLE9BQU9BO0FBQ1g7QUFDTyxTQUFTRSxTQUFTQyxJQUFJLEdBQUk7QUFDMUIsU0FBU0MsWUFBWUMsRUFBRTtJQUMxQixNQUFNLElBQUlDO0FBQ2Q7QUFDTyxTQUFTQyxPQUFPQyxDQUFDLEdBQUk7QUFDckIsU0FBU0MsY0FBY0MsT0FBTztJQUNqQyxNQUFNQyxnQkFBZ0JDLE9BQU9DLE1BQU0sQ0FBQ0gsU0FBU0ksTUFBTSxDQUFDLENBQUNDLElBQU0sT0FBT0EsTUFBTTtJQUN4RSxNQUFNRixTQUFTRCxPQUFPRixPQUFPLENBQUNBLFNBQ3pCSSxNQUFNLENBQUMsQ0FBQyxDQUFDRSxHQUFHUixFQUFFLEdBQUtHLGNBQWNNLE9BQU8sQ0FBQyxDQUFDRCxPQUFPLENBQUMsR0FDbERFLEdBQUcsQ0FBQyxDQUFDLENBQUNWLEdBQUdPLEVBQUUsR0FBS0E7SUFDckIsT0FBT0Y7QUFDWDtBQUNPLFNBQVNNLFdBQVdDLEtBQUssRUFBRUMsWUFBWSxHQUFHO0lBQzdDLE9BQU9ELE1BQU1GLEdBQUcsQ0FBQyxDQUFDbEIsTUFBUXNCLG1CQUFtQnRCLE1BQU11QixJQUFJLENBQUNGO0FBQzVEO0FBQ08sU0FBU0csc0JBQXNCaEIsQ0FBQyxFQUFFaUIsS0FBSztJQUMxQyxJQUFJLE9BQU9BLFVBQVUsVUFDakIsT0FBT0EsTUFBTUMsUUFBUTtJQUN6QixPQUFPRDtBQUNYO0FBQ08sU0FBU0UsT0FBT0MsTUFBTTtJQUN6QixNQUFNQyxNQUFNO0lBQ1osT0FBTztRQUNILElBQUlKLFNBQVE7WUFDUixJQUFJLENBQUNJLEtBQUs7Z0JBQ04sTUFBTUosUUFBUUc7Z0JBQ2RoQixPQUFPa0IsY0FBYyxDQUFDLElBQUksRUFBRSxTQUFTO29CQUFFTDtnQkFBTTtnQkFDN0MsT0FBT0E7WUFDWDtZQUNBLE1BQU0sSUFBSW5CLE1BQU07UUFDcEI7SUFDSjtBQUNKO0FBQ08sU0FBU3lCLFFBQVFDLEtBQUs7SUFDekIsT0FBT0EsVUFBVSxRQUFRQSxVQUFVQztBQUN2QztBQUNPLFNBQVNDLFdBQVdDLE1BQU07SUFDN0IsTUFBTUMsUUFBUUQsT0FBT0UsVUFBVSxDQUFDLE9BQU8sSUFBSTtJQUMzQyxNQUFNQyxNQUFNSCxPQUFPSSxRQUFRLENBQUMsT0FBT0osT0FBT0ssTUFBTSxHQUFHLElBQUlMLE9BQU9LLE1BQU07SUFDcEUsT0FBT0wsT0FBT00sS0FBSyxDQUFDTCxPQUFPRTtBQUMvQjtBQUNPLFNBQVNJLG1CQUFtQjFDLEdBQUcsRUFBRTJDLElBQUk7SUFDeEMsTUFBTUMsY0FBYyxDQUFDNUMsSUFBSTBCLFFBQVEsR0FBR21CLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUMsRUFBR0wsTUFBTTtJQUMvRCxNQUFNTSxlQUFlLENBQUNILEtBQUtqQixRQUFRLEdBQUdtQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFDLEVBQUdMLE1BQU07SUFDakUsTUFBTU8sV0FBV0gsY0FBY0UsZUFBZUYsY0FBY0U7SUFDNUQsTUFBTUUsU0FBU0MsT0FBT0MsUUFBUSxDQUFDbEQsSUFBSW1ELE9BQU8sQ0FBQ0osVUFBVUssT0FBTyxDQUFDLEtBQUs7SUFDbEUsTUFBTUMsVUFBVUosT0FBT0MsUUFBUSxDQUFDUCxLQUFLUSxPQUFPLENBQUNKLFVBQVVLLE9BQU8sQ0FBQyxLQUFLO0lBQ3BFLE9BQU8sU0FBVUMsVUFBVyxNQUFNTjtBQUN0QztBQUNPLFNBQVNPLFdBQVdDLE1BQU0sRUFBRUMsR0FBRyxFQUFFNUIsTUFBTTtJQUMxQyxNQUFNQyxNQUFNO0lBQ1pqQixPQUFPa0IsY0FBYyxDQUFDeUIsUUFBUUMsS0FBSztRQUMvQkM7WUFDSSxJQUFJLENBQUM1QixLQUFLO2dCQUNOLE1BQU1KLFFBQVFHO2dCQUNkMkIsTUFBTSxDQUFDQyxJQUFJLEdBQUcvQjtnQkFDZCxPQUFPQTtZQUNYO1lBQ0EsTUFBTSxJQUFJbkIsTUFBTTtRQUNwQjtRQUNBdUIsS0FBSWQsQ0FBQztZQUNESCxPQUFPa0IsY0FBYyxDQUFDeUIsUUFBUUMsS0FBSztnQkFDL0IvQixPQUFPVjtZQUVYO1FBQ0EsbUJBQW1CO1FBQ3ZCO1FBQ0EyQyxjQUFjO0lBQ2xCO0FBQ0o7QUFDTyxTQUFTQyxXQUFXQyxNQUFNLEVBQUVDLElBQUksRUFBRXBDLEtBQUs7SUFDMUNiLE9BQU9rQixjQUFjLENBQUM4QixRQUFRQyxNQUFNO1FBQ2hDcEM7UUFDQXFDLFVBQVU7UUFDVkMsWUFBWTtRQUNaTCxjQUFjO0lBQ2xCO0FBQ0o7QUFDTyxTQUFTTSxpQkFBaUJDLEdBQUcsRUFBRUMsSUFBSTtJQUN0QyxJQUFJLENBQUNBLE1BQ0QsT0FBT0Q7SUFDWCxPQUFPQyxLQUFLQyxNQUFNLENBQUMsQ0FBQ0MsS0FBS1osTUFBUVksS0FBSyxDQUFDWixJQUFJLEVBQUVTO0FBQ2pEO0FBQ08sU0FBU0ksaUJBQWlCQyxXQUFXO0lBQ3hDLE1BQU1DLE9BQU8zRCxPQUFPMkQsSUFBSSxDQUFDRDtJQUN6QixNQUFNRSxXQUFXRCxLQUFLckQsR0FBRyxDQUFDLENBQUNzQyxNQUFRYyxXQUFXLENBQUNkLElBQUk7SUFDbkQsT0FBT2lCLFFBQVFDLEdBQUcsQ0FBQ0YsVUFBVUcsSUFBSSxDQUFDLENBQUNDO1FBQy9CLE1BQU1DLGNBQWMsQ0FBQztRQUNyQixJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSVAsS0FBSy9CLE1BQU0sRUFBRXNDLElBQUs7WUFDbENELFdBQVcsQ0FBQ04sSUFBSSxDQUFDTyxFQUFFLENBQUMsR0FBR0YsT0FBTyxDQUFDRSxFQUFFO1FBQ3JDO1FBQ0EsT0FBT0Q7SUFDWDtBQUNKO0FBQ08sU0FBU0UsYUFBYXZDLFNBQVMsRUFBRTtJQUNwQyxNQUFNd0MsUUFBUTtJQUNkLElBQUlDLE1BQU07SUFDVixJQUFLLElBQUlILElBQUksR0FBR0EsSUFBSXRDLFFBQVFzQyxJQUFLO1FBQzdCRyxPQUFPRCxLQUFLLENBQUNFLEtBQUtDLEtBQUssQ0FBQ0QsS0FBS0UsTUFBTSxLQUFLSixNQUFNeEMsTUFBTSxFQUFFO0lBQzFEO0lBQ0EsT0FBT3lDO0FBQ1g7QUFDTyxTQUFTSSxJQUFJSixHQUFHO0lBQ25CLE9BQU9LLEtBQUtDLFNBQVMsQ0FBQ047QUFDMUI7QUFDTyxNQUFNTyxvQkFBb0JsRixNQUFNa0YsaUJBQWlCLEdBQ2xEbEYsTUFBTWtGLGlCQUFpQixHQUN2QixDQUFDLEdBQUdDLFNBQVksRUFBRTtBQUNqQixTQUFTQyxTQUFTQyxJQUFJO0lBQ3pCLE9BQU8sT0FBT0EsU0FBUyxZQUFZQSxTQUFTLFFBQVEsQ0FBQ0MsTUFBTUMsT0FBTyxDQUFDRjtBQUN2RTtBQUNPLE1BQU1HLGFBQWFuRSxPQUFPO0lBQzdCLElBQUksT0FBT29FLGNBQWMsZUFBZUEsV0FBV0MsV0FBV0MsU0FBUyxlQUFlO1FBQ2xGLE9BQU87SUFDWDtJQUNBLElBQUk7UUFDQSxNQUFNQyxJQUFJQztRQUNWLElBQUlELEVBQUU7UUFDTixPQUFPO0lBQ1gsRUFDQSxPQUFPMUYsR0FBRztRQUNOLE9BQU87SUFDWDtBQUNKLEdBQUc7QUFDSSxTQUFTNEYsY0FBY0MsQ0FBQztJQUMzQixJQUFJWCxTQUFTVyxPQUFPLE9BQ2hCLE9BQU87SUFDWCx1QkFBdUI7SUFDdkIsTUFBTUMsT0FBT0QsRUFBRSxXQUFXO0lBQzFCLElBQUlDLFNBQVNyRSxXQUNULE9BQU87SUFDWCxxQkFBcUI7SUFDckIsTUFBTXNFLE9BQU9ELEtBQUtFLFNBQVM7SUFDM0IsSUFBSWQsU0FBU2EsVUFBVSxPQUNuQixPQUFPO0lBQ1gsMkNBQTJDO0lBQzNDLElBQUkzRixPQUFPNEYsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ0gsTUFBTSxxQkFBcUIsT0FBTztRQUN2RSxPQUFPO0lBQ1g7SUFDQSxPQUFPO0FBQ1g7QUFDTyxTQUFTSSxRQUFRaEIsSUFBSTtJQUN4QixJQUFJaUIsV0FBVztJQUNmLElBQUssTUFBTXBELE9BQU9tQyxLQUFNO1FBQ3BCLElBQUkvRSxPQUFPNEYsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ2YsTUFBTW5DLE1BQU07WUFDakRvRDtRQUNKO0lBQ0o7SUFDQSxPQUFPQTtBQUNYO0FBQ08sTUFBTUMsZ0JBQWdCLENBQUNsQjtJQUMxQixNQUFNbUIsSUFBSSxPQUFPbkI7SUFDakIsT0FBUW1CO1FBQ0osS0FBSztZQUNELE9BQU87UUFDWCxLQUFLO1lBQ0QsT0FBTztRQUNYLEtBQUs7WUFDRCxPQUFPN0QsT0FBTzhELEtBQUssQ0FBQ3BCLFFBQVEsUUFBUTtRQUN4QyxLQUFLO1lBQ0QsT0FBTztRQUNYLEtBQUs7WUFDRCxPQUFPO1FBQ1gsS0FBSztZQUNELE9BQU87UUFDWCxLQUFLO1lBQ0QsT0FBTztRQUNYLEtBQUs7WUFDRCxJQUFJQyxNQUFNQyxPQUFPLENBQUNGLE9BQU87Z0JBQ3JCLE9BQU87WUFDWDtZQUNBLElBQUlBLFNBQVMsTUFBTTtnQkFDZixPQUFPO1lBQ1g7WUFDQSxJQUFJQSxLQUFLaEIsSUFBSSxJQUFJLE9BQU9nQixLQUFLaEIsSUFBSSxLQUFLLGNBQWNnQixLQUFLcUIsS0FBSyxJQUFJLE9BQU9yQixLQUFLcUIsS0FBSyxLQUFLLFlBQVk7Z0JBQ2hHLE9BQU87WUFDWDtZQUNBLElBQUksT0FBT0MsUUFBUSxlQUFldEIsZ0JBQWdCc0IsS0FBSztnQkFDbkQsT0FBTztZQUNYO1lBQ0EsSUFBSSxPQUFPQyxRQUFRLGVBQWV2QixnQkFBZ0J1QixLQUFLO2dCQUNuRCxPQUFPO1lBQ1g7WUFDQSxJQUFJLE9BQU9DLFNBQVMsZUFBZXhCLGdCQUFnQndCLE1BQU07Z0JBQ3JELE9BQU87WUFDWDtZQUNBLElBQUksT0FBT0MsU0FBUyxlQUFlekIsZ0JBQWdCeUIsTUFBTTtnQkFDckQsT0FBTztZQUNYO1lBQ0EsT0FBTztRQUNYO1lBQ0ksTUFBTSxJQUFJOUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFd0csR0FBRztJQUNqRDtBQUNKLEVBQUU7QUFDSyxNQUFNTyxtQkFBbUIsSUFBSUgsSUFBSTtJQUFDO0lBQVU7SUFBVTtDQUFTLEVBQUU7QUFDakUsTUFBTUksaUJBQWlCLElBQUlKLElBQUk7SUFBQztJQUFVO0lBQVU7SUFBVTtJQUFXO0lBQVU7Q0FBWSxFQUFFO0FBQ2pHLFNBQVNLLFlBQVl0QyxHQUFHO0lBQzNCLE9BQU9BLElBQUk3QixPQUFPLENBQUMsdUJBQXVCO0FBQzlDO0FBQ0EscUJBQXFCO0FBQ2QsU0FBU29FLE1BQU1DLElBQUksRUFBRUMsR0FBRyxFQUFFQyxNQUFNO0lBQ25DLE1BQU1DLEtBQUssSUFBSUgsS0FBS0ksSUFBSSxDQUFDQyxNQUFNLENBQUNKLE9BQU9ELEtBQUtJLElBQUksQ0FBQ0gsR0FBRztJQUNwRCxJQUFJLENBQUNBLE9BQU9DLFFBQVFJLFFBQ2hCSCxHQUFHQyxJQUFJLENBQUNFLE1BQU0sR0FBR047SUFDckIsT0FBT0c7QUFDWDtBQUNPLFNBQVNJLGdCQUFnQkMsT0FBTztJQUNuQyxNQUFNTixTQUFTTTtJQUNmLElBQUksQ0FBQ04sUUFDRCxPQUFPLENBQUM7SUFDWixJQUFJLE9BQU9BLFdBQVcsVUFDbEIsT0FBTztRQUFFTyxPQUFPLElBQU1QO0lBQU87SUFDakMsSUFBSUEsUUFBUVEsWUFBWWxHLFdBQVc7UUFDL0IsSUFBSTBGLFFBQVFPLFVBQVVqRyxXQUNsQixNQUFNLElBQUkzQixNQUFNO1FBQ3BCcUgsT0FBT08sS0FBSyxHQUFHUCxPQUFPUSxPQUFPO0lBQ2pDO0lBQ0EsT0FBT1IsT0FBT1EsT0FBTztJQUNyQixJQUFJLE9BQU9SLE9BQU9PLEtBQUssS0FBSyxVQUN4QixPQUFPO1FBQUUsR0FBR1AsTUFBTTtRQUFFTyxPQUFPLElBQU1QLE9BQU9PLEtBQUs7SUFBQztJQUNsRCxPQUFPUDtBQUNYO0FBQ08sU0FBU1MsdUJBQXVCeEcsTUFBTTtJQUN6QyxJQUFJZ0M7SUFDSixPQUFPLElBQUl5RSxNQUFNLENBQUMsR0FBRztRQUNqQjVFLEtBQUlqRCxDQUFDLEVBQUVxRCxJQUFJLEVBQUV5RSxRQUFRO1lBQ2pCMUUsVUFBV0EsQ0FBQUEsU0FBU2hDLFFBQU87WUFDM0IsT0FBTzJHLFFBQVE5RSxHQUFHLENBQUNHLFFBQVFDLE1BQU15RTtRQUNyQztRQUNBekcsS0FBSXJCLENBQUMsRUFBRXFELElBQUksRUFBRXBDLEtBQUssRUFBRTZHLFFBQVE7WUFDeEIxRSxVQUFXQSxDQUFBQSxTQUFTaEMsUUFBTztZQUMzQixPQUFPMkcsUUFBUTFHLEdBQUcsQ0FBQytCLFFBQVFDLE1BQU1wQyxPQUFPNkc7UUFDNUM7UUFDQUUsS0FBSWhJLENBQUMsRUFBRXFELElBQUk7WUFDUEQsVUFBV0EsQ0FBQUEsU0FBU2hDLFFBQU87WUFDM0IsT0FBTzJHLFFBQVFDLEdBQUcsQ0FBQzVFLFFBQVFDO1FBQy9CO1FBQ0E0RSxnQkFBZWpJLENBQUMsRUFBRXFELElBQUk7WUFDbEJELFVBQVdBLENBQUFBLFNBQVNoQyxRQUFPO1lBQzNCLE9BQU8yRyxRQUFRRSxjQUFjLENBQUM3RSxRQUFRQztRQUMxQztRQUNBNkUsU0FBUWxJLENBQUM7WUFDTG9ELFVBQVdBLENBQUFBLFNBQVNoQyxRQUFPO1lBQzNCLE9BQU8yRyxRQUFRRyxPQUFPLENBQUM5RTtRQUMzQjtRQUNBK0UsMEJBQXlCbkksQ0FBQyxFQUFFcUQsSUFBSTtZQUM1QkQsVUFBV0EsQ0FBQUEsU0FBU2hDLFFBQU87WUFDM0IsT0FBTzJHLFFBQVFJLHdCQUF3QixDQUFDL0UsUUFBUUM7UUFDcEQ7UUFDQS9CLGdCQUFldEIsQ0FBQyxFQUFFcUQsSUFBSSxFQUFFK0UsVUFBVTtZQUM5QmhGLFVBQVdBLENBQUFBLFNBQVNoQyxRQUFPO1lBQzNCLE9BQU8yRyxRQUFRekcsY0FBYyxDQUFDOEIsUUFBUUMsTUFBTStFO1FBQ2hEO0lBQ0o7QUFDSjtBQUNPLFNBQVN0SCxtQkFBbUJHLEtBQUs7SUFDcEMsSUFBSSxPQUFPQSxVQUFVLFVBQ2pCLE9BQU9BLE1BQU1DLFFBQVEsS0FBSztJQUM5QixJQUFJLE9BQU9ELFVBQVUsVUFDakIsT0FBTyxDQUFDLENBQUMsRUFBRUEsTUFBTSxDQUFDLENBQUM7SUFDdkIsT0FBTyxHQUFHQSxPQUFPO0FBQ3JCO0FBQ08sU0FBU29ILGFBQWFDLEtBQUs7SUFDOUIsT0FBT2xJLE9BQU8yRCxJQUFJLENBQUN1RSxPQUFPaEksTUFBTSxDQUFDLENBQUNFO1FBQzlCLE9BQU84SCxLQUFLLENBQUM5SCxFQUFFLENBQUM2RyxJQUFJLENBQUNrQixLQUFLLEtBQUssY0FBY0QsS0FBSyxDQUFDOUgsRUFBRSxDQUFDNkcsSUFBSSxDQUFDbUIsTUFBTSxLQUFLO0lBQzFFO0FBQ0o7QUFDTyxNQUFNQyx1QkFBdUI7SUFDaENDLFNBQVM7UUFBQ2pHLE9BQU9rRyxnQkFBZ0I7UUFBRWxHLE9BQU9tRyxnQkFBZ0I7S0FBQztJQUMzREMsT0FBTztRQUFDLENBQUM7UUFBWTtLQUFXO0lBQ2hDQyxRQUFRO1FBQUM7UUFBRztLQUFXO0lBQ3ZCQyxTQUFTO1FBQUMsQ0FBQztRQUF1QjtLQUFzQjtJQUN4REMsU0FBUztRQUFDLENBQUN2RyxPQUFPd0csU0FBUztRQUFFeEcsT0FBT3dHLFNBQVM7S0FBQztBQUNsRCxFQUFFO0FBQ0ssTUFBTUMsdUJBQXVCO0lBQ2hDQyxPQUFPO1FBQUMsWUFBWSxHQUFHQyxPQUFPO1FBQXlCLFlBQVksR0FBR0EsT0FBTztLQUF1QjtJQUNwR0MsUUFBUTtRQUFDLFlBQVksR0FBR0QsT0FBTztRQUFJLFlBQVksR0FBR0EsT0FBTztLQUF3QjtBQUNyRixFQUFFO0FBQ0ssU0FBU0UsS0FBS0MsTUFBTSxFQUFFQyxJQUFJO0lBQzdCLE1BQU1DLFdBQVcsQ0FBQztJQUNsQixNQUFNQyxVQUFVSCxPQUFPbEMsSUFBSSxDQUFDSCxHQUFHLEVBQUUsU0FBUztJQUMxQyxJQUFLLE1BQU1sRSxPQUFPd0csS0FBTTtRQUNwQixJQUFJLENBQUV4RyxDQUFBQSxPQUFPMEcsUUFBUXBCLEtBQUssR0FBRztZQUN6QixNQUFNLElBQUl4SSxNQUFNLENBQUMsbUJBQW1CLEVBQUVrRCxJQUFJLENBQUMsQ0FBQztRQUNoRDtRQUNBLElBQUksQ0FBQ3dHLElBQUksQ0FBQ3hHLElBQUksRUFDVjtRQUNKLFdBQVc7UUFDWHlHLFFBQVEsQ0FBQ3pHLElBQUksR0FBRzBHLFFBQVFwQixLQUFLLENBQUN0RixJQUFJO0lBQ3RDO0lBQ0EsT0FBT2dFLE1BQU11QyxRQUFRO1FBQ2pCLEdBQUdBLE9BQU9sQyxJQUFJLENBQUNILEdBQUc7UUFDbEJvQixPQUFPbUI7UUFDUEUsUUFBUSxFQUFFO0lBQ2Q7QUFDSjtBQUNPLFNBQVNDLEtBQUtMLE1BQU0sRUFBRUMsSUFBSTtJQUM3QixNQUFNQyxXQUFXO1FBQUUsR0FBR0YsT0FBT2xDLElBQUksQ0FBQ0gsR0FBRyxDQUFDb0IsS0FBSztJQUFDO0lBQzVDLE1BQU1vQixVQUFVSCxPQUFPbEMsSUFBSSxDQUFDSCxHQUFHLEVBQUUsU0FBUztJQUMxQyxJQUFLLE1BQU1sRSxPQUFPd0csS0FBTTtRQUNwQixJQUFJLENBQUV4RyxDQUFBQSxPQUFPMEcsUUFBUXBCLEtBQUssR0FBRztZQUN6QixNQUFNLElBQUl4SSxNQUFNLENBQUMsbUJBQW1CLEVBQUVrRCxJQUFJLENBQUMsQ0FBQztRQUNoRDtRQUNBLElBQUksQ0FBQ3dHLElBQUksQ0FBQ3hHLElBQUksRUFDVjtRQUNKLE9BQU95RyxRQUFRLENBQUN6RyxJQUFJO0lBQ3hCO0lBQ0EsT0FBT2dFLE1BQU11QyxRQUFRO1FBQ2pCLEdBQUdBLE9BQU9sQyxJQUFJLENBQUNILEdBQUc7UUFDbEJvQixPQUFPbUI7UUFDUEUsUUFBUSxFQUFFO0lBQ2Q7QUFDSjtBQUNPLFNBQVNFLE9BQU9OLE1BQU0sRUFBRWpCLEtBQUs7SUFDaEMsSUFBSSxDQUFDMUMsY0FBYzBDLFFBQVE7UUFDdkIsTUFBTSxJQUFJeEksTUFBTTtJQUNwQjtJQUNBLE1BQU1vSCxNQUFNO1FBQ1IsR0FBR3FDLE9BQU9sQyxJQUFJLENBQUNILEdBQUc7UUFDbEIsSUFBSW9CLFNBQVE7WUFDUixNQUFNd0IsU0FBUztnQkFBRSxHQUFHUCxPQUFPbEMsSUFBSSxDQUFDSCxHQUFHLENBQUNvQixLQUFLO2dCQUFFLEdBQUdBLEtBQUs7WUFBQztZQUNwRG5GLFdBQVcsSUFBSSxFQUFFLFNBQVMyRyxTQUFTLGVBQWU7WUFDbEQsT0FBT0E7UUFDWDtRQUNBSCxRQUFRLEVBQUU7SUFDZDtJQUNBLE9BQU8zQyxNQUFNdUMsUUFBUXJDO0FBQ3pCO0FBQ08sU0FBUzZDLE1BQU1DLENBQUMsRUFBRUMsQ0FBQztJQUN0QixPQUFPakQsTUFBTWdELEdBQUc7UUFDWixHQUFHQSxFQUFFM0MsSUFBSSxDQUFDSCxHQUFHO1FBQ2IsSUFBSW9CLFNBQVE7WUFDUixNQUFNd0IsU0FBUztnQkFBRSxHQUFHRSxFQUFFM0MsSUFBSSxDQUFDSCxHQUFHLENBQUNvQixLQUFLO2dCQUFFLEdBQUcyQixFQUFFNUMsSUFBSSxDQUFDSCxHQUFHLENBQUNvQixLQUFLO1lBQUM7WUFDMURuRixXQUFXLElBQUksRUFBRSxTQUFTMkcsU0FBUyxlQUFlO1lBQ2xELE9BQU9BO1FBQ1g7UUFDQUksVUFBVUQsRUFBRTVDLElBQUksQ0FBQ0gsR0FBRyxDQUFDZ0QsUUFBUTtRQUM3QlAsUUFBUSxFQUFFO0lBQ2Q7QUFDSjtBQUNPLFNBQVNRLFFBQVFDLEtBQUssRUFBRWIsTUFBTSxFQUFFQyxJQUFJO0lBQ3ZDLE1BQU1hLFdBQVdkLE9BQU9sQyxJQUFJLENBQUNILEdBQUcsQ0FBQ29CLEtBQUs7SUFDdEMsTUFBTUEsUUFBUTtRQUFFLEdBQUcrQixRQUFRO0lBQUM7SUFDNUIsSUFBSWIsTUFBTTtRQUNOLElBQUssTUFBTXhHLE9BQU93RyxLQUFNO1lBQ3BCLElBQUksQ0FBRXhHLENBQUFBLE9BQU9xSCxRQUFPLEdBQUk7Z0JBQ3BCLE1BQU0sSUFBSXZLLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRWtELElBQUksQ0FBQyxDQUFDO1lBQ2hEO1lBQ0EsSUFBSSxDQUFDd0csSUFBSSxDQUFDeEcsSUFBSSxFQUNWO1lBQ0osMERBQTBEO1lBQzFEc0YsS0FBSyxDQUFDdEYsSUFBSSxHQUFHb0gsUUFDUCxJQUFJQSxNQUFNO2dCQUNSRSxNQUFNO2dCQUNOQyxXQUFXRixRQUFRLENBQUNySCxJQUFJO1lBQzVCLEtBQ0VxSCxRQUFRLENBQUNySCxJQUFJO1FBQ3ZCO0lBQ0osT0FDSztRQUNELElBQUssTUFBTUEsT0FBT3FILFNBQVU7WUFDeEIsMERBQTBEO1lBQzFEL0IsS0FBSyxDQUFDdEYsSUFBSSxHQUFHb0gsUUFDUCxJQUFJQSxNQUFNO2dCQUNSRSxNQUFNO2dCQUNOQyxXQUFXRixRQUFRLENBQUNySCxJQUFJO1lBQzVCLEtBQ0VxSCxRQUFRLENBQUNySCxJQUFJO1FBQ3ZCO0lBQ0o7SUFDQSxPQUFPZ0UsTUFBTXVDLFFBQVE7UUFDakIsR0FBR0EsT0FBT2xDLElBQUksQ0FBQ0gsR0FBRztRQUNsQm9CO1FBQ0FxQixRQUFRLEVBQUU7SUFDZDtBQUNKO0FBQ08sU0FBU2EsU0FBU0osS0FBSyxFQUFFYixNQUFNLEVBQUVDLElBQUk7SUFDeEMsTUFBTWEsV0FBV2QsT0FBT2xDLElBQUksQ0FBQ0gsR0FBRyxDQUFDb0IsS0FBSztJQUN0QyxNQUFNQSxRQUFRO1FBQUUsR0FBRytCLFFBQVE7SUFBQztJQUM1QixJQUFJYixNQUFNO1FBQ04sSUFBSyxNQUFNeEcsT0FBT3dHLEtBQU07WUFDcEIsSUFBSSxDQUFFeEcsQ0FBQUEsT0FBT3NGLEtBQUksR0FBSTtnQkFDakIsTUFBTSxJQUFJeEksTUFBTSxDQUFDLG1CQUFtQixFQUFFa0QsSUFBSSxDQUFDLENBQUM7WUFDaEQ7WUFDQSxJQUFJLENBQUN3RyxJQUFJLENBQUN4RyxJQUFJLEVBQ1Y7WUFDSiw4QkFBOEI7WUFDOUJzRixLQUFLLENBQUN0RixJQUFJLEdBQUcsSUFBSW9ILE1BQU07Z0JBQ25CRSxNQUFNO2dCQUNOQyxXQUFXRixRQUFRLENBQUNySCxJQUFJO1lBQzVCO1FBQ0o7SUFDSixPQUNLO1FBQ0QsSUFBSyxNQUFNQSxPQUFPcUgsU0FBVTtZQUN4Qiw4QkFBOEI7WUFDOUIvQixLQUFLLENBQUN0RixJQUFJLEdBQUcsSUFBSW9ILE1BQU07Z0JBQ25CRSxNQUFNO2dCQUNOQyxXQUFXRixRQUFRLENBQUNySCxJQUFJO1lBQzVCO1FBQ0o7SUFDSjtJQUNBLE9BQU9nRSxNQUFNdUMsUUFBUTtRQUNqQixHQUFHQSxPQUFPbEMsSUFBSSxDQUFDSCxHQUFHO1FBQ2xCb0I7UUFDQSxnQkFBZ0I7UUFDaEJxQixRQUFRLEVBQUU7SUFDZDtBQUNKO0FBQ08sU0FBU2MsUUFBUUMsQ0FBQyxFQUFFQyxhQUFhLENBQUM7SUFDckMsSUFBSyxJQUFJckcsSUFBSXFHLFlBQVlyRyxJQUFJb0csRUFBRUUsTUFBTSxDQUFDNUksTUFBTSxFQUFFc0MsSUFBSztRQUMvQyxJQUFJb0csRUFBRUUsTUFBTSxDQUFDdEcsRUFBRSxFQUFFdUcsYUFBYSxNQUMxQixPQUFPO0lBQ2Y7SUFDQSxPQUFPO0FBQ1g7QUFDTyxTQUFTQyxhQUFhcEgsSUFBSSxFQUFFa0gsTUFBTTtJQUNyQyxPQUFPQSxPQUFPbEssR0FBRyxDQUFDLENBQUNxSztRQUNmLElBQUlDO1FBQ0hBLENBQUFBLEtBQUtELEdBQUUsRUFBR3JILElBQUksSUFBS3NILENBQUFBLEdBQUd0SCxJQUFJLEdBQUcsRUFBRTtRQUNoQ3FILElBQUlySCxJQUFJLENBQUN1SCxPQUFPLENBQUN2SDtRQUNqQixPQUFPcUg7SUFDWDtBQUNKO0FBQ08sU0FBU0csY0FBY3ZELE9BQU87SUFDakMsT0FBTyxPQUFPQSxZQUFZLFdBQVdBLFVBQVVBLFNBQVNBO0FBQzVEO0FBQ08sU0FBU3dELGNBQWNKLEdBQUcsRUFBRUssR0FBRyxFQUFFQyxNQUFNO0lBQzFDLE1BQU1DLE9BQU87UUFBRSxHQUFHUCxHQUFHO1FBQUVySCxNQUFNcUgsSUFBSXJILElBQUksSUFBSSxFQUFFO0lBQUM7SUFDNUMsOEJBQThCO0lBQzlCLElBQUksQ0FBQ3FILElBQUlwRCxPQUFPLEVBQUU7UUFDZCxNQUFNQSxVQUFVdUQsY0FBY0gsSUFBSTlELElBQUksRUFBRUksS0FBS0gsS0FBS1EsUUFBUXFELFNBQ3RERyxjQUFjRSxLQUFLMUQsUUFBUXFELFNBQzNCRyxjQUFjRyxPQUFPRSxXQUFXLEdBQUdSLFNBQ25DRyxjQUFjRyxPQUFPRyxXQUFXLEdBQUdULFNBQ25DO1FBQ0pPLEtBQUszRCxPQUFPLEdBQUdBO0lBQ25CO0lBQ0EsNEJBQTRCO0lBQzVCLE9BQU8yRCxLQUFLckUsSUFBSTtJQUNoQixPQUFPcUUsS0FBS1QsUUFBUTtJQUNwQixJQUFJLENBQUNPLEtBQUtLLGFBQWE7UUFDbkIsT0FBT0gsS0FBSzlKLEtBQUs7SUFDckI7SUFDQSxPQUFPOEo7QUFDWDtBQUNPLFNBQVNJLGlCQUFpQmxLLEtBQUs7SUFDbEMsSUFBSUEsaUJBQWlCa0YsS0FDakIsT0FBTztJQUNYLElBQUlsRixpQkFBaUJpRixLQUNqQixPQUFPO0lBQ1gsSUFBSWpGLGlCQUFpQm9GLE1BQ2pCLE9BQU87SUFDWCxPQUFPO0FBQ1g7QUFDTyxTQUFTK0Usb0JBQW9CbkssS0FBSztJQUNyQyxJQUFJNEQsTUFBTUMsT0FBTyxDQUFDN0QsUUFDZCxPQUFPO0lBQ1gsSUFBSSxPQUFPQSxVQUFVLFVBQ2pCLE9BQU87SUFDWCxPQUFPO0FBQ1g7QUFDTyxTQUFTb0ssTUFBTSxHQUFHQyxJQUFJO0lBQ3pCLE1BQU0sQ0FBQ2QsS0FBS3ZKLE9BQU95RixLQUFLLEdBQUc0RTtJQUMzQixJQUFJLE9BQU9kLFFBQVEsVUFBVTtRQUN6QixPQUFPO1lBQ0hwRCxTQUFTb0Q7WUFDVGUsTUFBTTtZQUNOdEs7WUFDQXlGO1FBQ0o7SUFDSjtJQUNBLE9BQU87UUFBRSxHQUFHOEQsR0FBRztJQUFDO0FBQ3BCO0FBQ08sU0FBU2dCLFVBQVV0SSxHQUFHO0lBQ3pCLE9BQU9yRCxPQUFPRixPQUFPLENBQUN1RCxLQUNqQm5ELE1BQU0sQ0FBQyxDQUFDLENBQUNFLEdBQUdSLEVBQUU7UUFDZixtRUFBbUU7UUFDbkUsT0FBT3lDLE9BQU84RCxLQUFLLENBQUM5RCxPQUFPQyxRQUFRLENBQUNsQyxHQUFHO0lBQzNDLEdBQ0tFLEdBQUcsQ0FBQyxDQUFDc0wsS0FBT0EsRUFBRSxDQUFDLEVBQUU7QUFDMUI7QUFDQSxhQUFhO0FBQ04sTUFBTTVCO0lBQ1QsWUFBWSxHQUFHbkYsS0FBSyxDQUFFLENBQUU7QUFDNUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3V0aWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZnVuY3Rpb25zXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXF1YWwodmFsKSB7XG4gICAgcmV0dXJuIHZhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnROb3RFcXVhbCh2YWwpIHtcbiAgICByZXR1cm4gdmFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElzKF9hcmcpIHsgfVxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydE5ldmVyKF94KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0KF8pIHsgfVxuZXhwb3J0IGZ1bmN0aW9uIGdldEVudW1WYWx1ZXMoZW50cmllcykge1xuICAgIGNvbnN0IG51bWVyaWNWYWx1ZXMgPSBPYmplY3QudmFsdWVzKGVudHJpZXMpLmZpbHRlcigodikgPT4gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIpO1xuICAgIGNvbnN0IHZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKGVudHJpZXMpXG4gICAgICAgIC5maWx0ZXIoKFtrLCBfXSkgPT4gbnVtZXJpY1ZhbHVlcy5pbmRleE9mKCtrKSA9PT0gLTEpXG4gICAgICAgIC5tYXAoKFtfLCB2XSkgPT4gdik7XG4gICAgcmV0dXJuIHZhbHVlcztcbn1cbmV4cG9ydCBmdW5jdGlvbiBqb2luVmFsdWVzKGFycmF5LCBzZXBhcmF0b3IgPSBcInxcIikge1xuICAgIHJldHVybiBhcnJheS5tYXAoKHZhbCkgPT4gc3RyaW5naWZ5UHJpbWl0aXZlKHZhbCkpLmpvaW4oc2VwYXJhdG9yKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBqc29uU3RyaW5naWZ5UmVwbGFjZXIoXywgdmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJpZ2ludFwiKVxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnQgZnVuY3Rpb24gY2FjaGVkKGdldHRlcikge1xuICAgIGNvbnN0IHNldCA9IGZhbHNlO1xuICAgIHJldHVybiB7XG4gICAgICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgICAgIGlmICghc2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXR0ZXIoKTtcbiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgXCJ2YWx1ZVwiLCB7IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhY2hlZCB2YWx1ZSBhbHJlYWR5IHNldFwiKTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG51bGxpc2goaW5wdXQpIHtcbiAgICByZXR1cm4gaW5wdXQgPT09IG51bGwgfHwgaW5wdXQgPT09IHVuZGVmaW5lZDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblJlZ2V4KHNvdXJjZSkge1xuICAgIGNvbnN0IHN0YXJ0ID0gc291cmNlLnN0YXJ0c1dpdGgoXCJeXCIpID8gMSA6IDA7XG4gICAgY29uc3QgZW5kID0gc291cmNlLmVuZHNXaXRoKFwiJFwiKSA/IHNvdXJjZS5sZW5ndGggLSAxIDogc291cmNlLmxlbmd0aDtcbiAgICByZXR1cm4gc291cmNlLnNsaWNlKHN0YXJ0LCBlbmQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0U2FmZVJlbWFpbmRlcih2YWwsIHN0ZXApIHtcbiAgICBjb25zdCB2YWxEZWNDb3VudCA9ICh2YWwudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0gfHwgXCJcIikubGVuZ3RoO1xuICAgIGNvbnN0IHN0ZXBEZWNDb3VudCA9IChzdGVwLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdIHx8IFwiXCIpLmxlbmd0aDtcbiAgICBjb25zdCBkZWNDb3VudCA9IHZhbERlY0NvdW50ID4gc3RlcERlY0NvdW50ID8gdmFsRGVjQ291bnQgOiBzdGVwRGVjQ291bnQ7XG4gICAgY29uc3QgdmFsSW50ID0gTnVtYmVyLnBhcnNlSW50KHZhbC50b0ZpeGVkKGRlY0NvdW50KS5yZXBsYWNlKFwiLlwiLCBcIlwiKSk7XG4gICAgY29uc3Qgc3RlcEludCA9IE51bWJlci5wYXJzZUludChzdGVwLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcbiAgICByZXR1cm4gKHZhbEludCAlIHN0ZXBJbnQpIC8gMTAgKiogZGVjQ291bnQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lTGF6eShvYmplY3QsIGtleSwgZ2V0dGVyKSB7XG4gICAgY29uc3Qgc2V0ID0gZmFsc2U7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwga2V5LCB7XG4gICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgIGlmICghc2V0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXR0ZXIoKTtcbiAgICAgICAgICAgICAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNhY2hlZCB2YWx1ZSBhbHJlYWR5IHNldFwiKTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0KHYpIHtcbiAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgICAgIC8vIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gb2JqZWN0W2tleV0gPSB2O1xuICAgICAgICB9LFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNzaWduUHJvcCh0YXJnZXQsIHByb3AsIHZhbHVlKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcCwge1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50QXRQYXRoKG9iaiwgcGF0aCkge1xuICAgIGlmICghcGF0aClcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICByZXR1cm4gcGF0aC5yZWR1Y2UoKGFjYywga2V5KSA9PiBhY2M/LltrZXldLCBvYmopO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2VBbGxPYmplY3QocHJvbWlzZXNPYmopIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvbWlzZXNPYmopO1xuICAgIGNvbnN0IHByb21pc2VzID0ga2V5cy5tYXAoKGtleSkgPT4gcHJvbWlzZXNPYmpba2V5XSk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKS50aGVuKChyZXN1bHRzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkT2JqID0ge307XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcmVzb2x2ZWRPYmpba2V5c1tpXV0gPSByZXN1bHRzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZE9iajtcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21TdHJpbmcobGVuZ3RoID0gMTApIHtcbiAgICBjb25zdCBjaGFycyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjtcbiAgICBsZXQgc3RyID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHN0ciArPSBjaGFyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFycy5sZW5ndGgpXTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlc2Moc3RyKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHN0cik7XG59XG5leHBvcnQgY29uc3QgY2FwdHVyZVN0YWNrVHJhY2UgPSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZVxuICAgID8gRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2VcbiAgICA6ICguLi5fYXJncykgPT4geyB9O1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KGRhdGEpIHtcbiAgICByZXR1cm4gdHlwZW9mIGRhdGEgPT09IFwib2JqZWN0XCIgJiYgZGF0YSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShkYXRhKTtcbn1cbmV4cG9ydCBjb25zdCBhbGxvd3NFdmFsID0gY2FjaGVkKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBuYXZpZ2F0b3I/LnVzZXJBZ2VudD8uaW5jbHVkZXMoXCJDbG91ZGZsYXJlXCIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgRiA9IEZ1bmN0aW9uO1xuICAgICAgICBuZXcgRihcIlwiKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIChfKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpc1BsYWluT2JqZWN0KG8pIHtcbiAgICBpZiAoaXNPYmplY3QobykgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gbW9kaWZpZWQgY29uc3RydWN0b3JcbiAgICBjb25zdCBjdG9yID0gby5jb25zdHJ1Y3RvcjtcbiAgICBpZiAoY3RvciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAvLyBtb2RpZmllZCBwcm90b3R5cGVcbiAgICBjb25zdCBwcm90ID0gY3Rvci5wcm90b3R5cGU7XG4gICAgaWYgKGlzT2JqZWN0KHByb3QpID09PSBmYWxzZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGN0b3IgZG9lc24ndCBoYXZlIHN0YXRpYyBgaXNQcm90b3R5cGVPZmBcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3QsIFwiaXNQcm90b3R5cGVPZlwiKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBudW1LZXlzKGRhdGEpIHtcbiAgICBsZXQga2V5Q291bnQgPSAwO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpKSB7XG4gICAgICAgICAgICBrZXlDb3VudCsrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBrZXlDb3VudDtcbn1cbmV4cG9ydCBjb25zdCBnZXRQYXJzZWRUeXBlID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCB0ID0gdHlwZW9mIGRhdGE7XG4gICAgc3dpdGNoICh0KSB7XG4gICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgICAgIHJldHVybiBcInVuZGVmaW5lZFwiO1xuICAgICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJzdHJpbmdcIjtcbiAgICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICAgICAgcmV0dXJuIE51bWJlci5pc05hTihkYXRhKSA/IFwibmFuXCIgOiBcIm51bWJlclwiO1xuICAgICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICAgICAgcmV0dXJuIFwiYm9vbGVhblwiO1xuICAgICAgICBjYXNlIFwiZnVuY3Rpb25cIjpcbiAgICAgICAgICAgIHJldHVybiBcImZ1bmN0aW9uXCI7XG4gICAgICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgICAgICAgIHJldHVybiBcImJpZ2ludFwiO1xuICAgICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICAgICAgICByZXR1cm4gXCJzeW1ib2xcIjtcbiAgICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJhcnJheVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJudWxsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGF0YS50aGVuICYmIHR5cGVvZiBkYXRhLnRoZW4gPT09IFwiZnVuY3Rpb25cIiAmJiBkYXRhLmNhdGNoICYmIHR5cGVvZiBkYXRhLmNhdGNoID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJwcm9taXNlXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgTWFwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwibWFwXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIFNldCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwic2V0XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIERhdGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZGF0YSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJkYXRlXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIEZpbGUgIT09IFwidW5kZWZpbmVkXCIgJiYgZGF0YSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJmaWxlXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gXCJvYmplY3RcIjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBkYXRhIHR5cGU6ICR7dH1gKTtcbiAgICB9XG59O1xuZXhwb3J0IGNvbnN0IHByb3BlcnR5S2V5VHlwZXMgPSBuZXcgU2V0KFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcInN5bWJvbFwiXSk7XG5leHBvcnQgY29uc3QgcHJpbWl0aXZlVHlwZXMgPSBuZXcgU2V0KFtcInN0cmluZ1wiLCBcIm51bWJlclwiLCBcImJpZ2ludFwiLCBcImJvb2xlYW5cIiwgXCJzeW1ib2xcIiwgXCJ1bmRlZmluZWRcIl0pO1xuZXhwb3J0IGZ1bmN0aW9uIGVzY2FwZVJlZ2V4KHN0cikge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csIFwiXFxcXCQmXCIpO1xufVxuLy8gem9kLXNwZWNpZmljIHV0aWxzXG5leHBvcnQgZnVuY3Rpb24gY2xvbmUoaW5zdCwgZGVmLCBwYXJhbXMpIHtcbiAgICBjb25zdCBjbCA9IG5ldyBpbnN0Ll96b2QuY29uc3RyKGRlZiA/PyBpbnN0Ll96b2QuZGVmKTtcbiAgICBpZiAoIWRlZiB8fCBwYXJhbXM/LnBhcmVudClcbiAgICAgICAgY2wuX3pvZC5wYXJlbnQgPSBpbnN0O1xuICAgIHJldHVybiBjbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVQYXJhbXMoX3BhcmFtcykge1xuICAgIGNvbnN0IHBhcmFtcyA9IF9wYXJhbXM7XG4gICAgaWYgKCFwYXJhbXMpXG4gICAgICAgIHJldHVybiB7fTtcbiAgICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgcmV0dXJuIHsgZXJyb3I6ICgpID0+IHBhcmFtcyB9O1xuICAgIGlmIChwYXJhbXM/Lm1lc3NhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocGFyYW1zPy5lcnJvciAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHNwZWNpZnkgYm90aCBgbWVzc2FnZWAgYW5kIGBlcnJvcmAgcGFyYW1zXCIpO1xuICAgICAgICBwYXJhbXMuZXJyb3IgPSBwYXJhbXMubWVzc2FnZTtcbiAgICB9XG4gICAgZGVsZXRlIHBhcmFtcy5tZXNzYWdlO1xuICAgIGlmICh0eXBlb2YgcGFyYW1zLmVycm9yID09PSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4geyAuLi5wYXJhbXMsIGVycm9yOiAoKSA9PiBwYXJhbXMuZXJyb3IgfTtcbiAgICByZXR1cm4gcGFyYW1zO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zcGFyZW50UHJveHkoZ2V0dGVyKSB7XG4gICAgbGV0IHRhcmdldDtcbiAgICByZXR1cm4gbmV3IFByb3h5KHt9LCB7XG4gICAgICAgIGdldChfLCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgdGFyZ2V0ID8/ICh0YXJnZXQgPSBnZXR0ZXIoKSk7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wLCByZWNlaXZlcik7XG4gICAgICAgIH0sXG4gICAgICAgIHNldChfLCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Quc2V0KHRhcmdldCwgcHJvcCwgdmFsdWUsIHJlY2VpdmVyKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFzKF8sIHByb3ApIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH0sXG4gICAgICAgIGRlbGV0ZVByb3BlcnR5KF8sIHByb3ApIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkodGFyZ2V0LCBwcm9wKTtcbiAgICAgICAgfSxcbiAgICAgICAgb3duS2V5cyhfKSB7XG4gICAgICAgICAgICB0YXJnZXQgPz8gKHRhcmdldCA9IGdldHRlcigpKTtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lm93bktleXModGFyZ2V0KTtcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF8sIHByb3ApIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcCk7XG4gICAgICAgIH0sXG4gICAgICAgIGRlZmluZVByb3BlcnR5KF8sIHByb3AsIGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgIHRhcmdldCA/PyAodGFyZ2V0ID0gZ2V0dGVyKCkpO1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wLCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlQcmltaXRpdmUodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJpZ2ludFwiKVxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKSArIFwiblwiO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiBgXCIke3ZhbHVlfVwiYDtcbiAgICByZXR1cm4gYCR7dmFsdWV9YDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBvcHRpb25hbEtleXMoc2hhcGUpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoc2hhcGUpLmZpbHRlcigoaykgPT4ge1xuICAgICAgICByZXR1cm4gc2hhcGVba10uX3pvZC5vcHRpbiA9PT0gXCJvcHRpb25hbFwiICYmIHNoYXBlW2tdLl96b2Qub3B0b3V0ID09PSBcIm9wdGlvbmFsXCI7XG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgTlVNQkVSX0ZPUk1BVF9SQU5HRVMgPSB7XG4gICAgc2FmZWludDogW051bWJlci5NSU5fU0FGRV9JTlRFR0VSLCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUl0sXG4gICAgaW50MzI6IFstMjE0NzQ4MzY0OCwgMjE0NzQ4MzY0N10sXG4gICAgdWludDMyOiBbMCwgNDI5NDk2NzI5NV0sXG4gICAgZmxvYXQzMjogWy0zLjQwMjgyMzQ2NjM4NTI4ODZlMzgsIDMuNDAyODIzNDY2Mzg1Mjg4NmUzOF0sXG4gICAgZmxvYXQ2NDogWy1OdW1iZXIuTUFYX1ZBTFVFLCBOdW1iZXIuTUFYX1ZBTFVFXSxcbn07XG5leHBvcnQgY29uc3QgQklHSU5UX0ZPUk1BVF9SQU5HRVMgPSB7XG4gICAgaW50NjQ6IFsvKiBAX19QVVJFX18qLyBCaWdJbnQoXCItOTIyMzM3MjAzNjg1NDc3NTgwOFwiKSwgLyogQF9fUFVSRV9fKi8gQmlnSW50KFwiOTIyMzM3MjAzNjg1NDc3NTgwN1wiKV0sXG4gICAgdWludDY0OiBbLyogQF9fUFVSRV9fKi8gQmlnSW50KDApLCAvKiBAX19QVVJFX18qLyBCaWdJbnQoXCIxODQ0Njc0NDA3MzcwOTU1MTYxNVwiKV0sXG59O1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2soc2NoZW1hLCBtYXNrKSB7XG4gICAgY29uc3QgbmV3U2hhcGUgPSB7fTtcbiAgICBjb25zdCBjdXJyRGVmID0gc2NoZW1hLl96b2QuZGVmOyAvLy5zaGFwZTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBtYXNrKSB7XG4gICAgICAgIGlmICghKGtleSBpbiBjdXJyRGVmLnNoYXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiBcIiR7a2V5fVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtYXNrW2tleV0pXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgLy8gcGljayBrZXlcbiAgICAgICAgbmV3U2hhcGVba2V5XSA9IGN1cnJEZWYuc2hhcGVba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwge1xuICAgICAgICAuLi5zY2hlbWEuX3pvZC5kZWYsXG4gICAgICAgIHNoYXBlOiBuZXdTaGFwZSxcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBvbWl0KHNjaGVtYSwgbWFzaykge1xuICAgIGNvbnN0IG5ld1NoYXBlID0geyAuLi5zY2hlbWEuX3pvZC5kZWYuc2hhcGUgfTtcbiAgICBjb25zdCBjdXJyRGVmID0gc2NoZW1hLl96b2QuZGVmOyAvLy5zaGFwZTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBtYXNrKSB7XG4gICAgICAgIGlmICghKGtleSBpbiBjdXJyRGVmLnNoYXBlKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnJlY29nbml6ZWQga2V5OiBcIiR7a2V5fVwiYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFtYXNrW2tleV0pXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgZGVsZXRlIG5ld1NoYXBlW2tleV07XG4gICAgfVxuICAgIHJldHVybiBjbG9uZShzY2hlbWEsIHtcbiAgICAgICAgLi4uc2NoZW1hLl96b2QuZGVmLFxuICAgICAgICBzaGFwZTogbmV3U2hhcGUsXG4gICAgICAgIGNoZWNrczogW10sXG4gICAgfSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZXh0ZW5kKHNjaGVtYSwgc2hhcGUpIHtcbiAgICBpZiAoIWlzUGxhaW5PYmplY3Qoc2hhcGUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW5wdXQgdG8gZXh0ZW5kOiBleHBlY3RlZCBhIHBsYWluIG9iamVjdFwiKTtcbiAgICB9XG4gICAgY29uc3QgZGVmID0ge1xuICAgICAgICAuLi5zY2hlbWEuX3pvZC5kZWYsXG4gICAgICAgIGdldCBzaGFwZSgpIHtcbiAgICAgICAgICAgIGNvbnN0IF9zaGFwZSA9IHsgLi4uc2NoZW1hLl96b2QuZGVmLnNoYXBlLCAuLi5zaGFwZSB9O1xuICAgICAgICAgICAgYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIF9zaGFwZSk7IC8vIHNlbGYtY2FjaGluZ1xuICAgICAgICAgICAgcmV0dXJuIF9zaGFwZTtcbiAgICAgICAgfSxcbiAgICAgICAgY2hlY2tzOiBbXSwgLy8gZGVsZXRlIGV4aXN0aW5nIGNoZWNrc1xuICAgIH07XG4gICAgcmV0dXJuIGNsb25lKHNjaGVtYSwgZGVmKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShhLCBiKSB7XG4gICAgcmV0dXJuIGNsb25lKGEsIHtcbiAgICAgICAgLi4uYS5fem9kLmRlZixcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgY29uc3QgX3NoYXBlID0geyAuLi5hLl96b2QuZGVmLnNoYXBlLCAuLi5iLl96b2QuZGVmLnNoYXBlIH07XG4gICAgICAgICAgICBhc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgX3NoYXBlKTsgLy8gc2VsZi1jYWNoaW5nXG4gICAgICAgICAgICByZXR1cm4gX3NoYXBlO1xuICAgICAgICB9LFxuICAgICAgICBjYXRjaGFsbDogYi5fem9kLmRlZi5jYXRjaGFsbCxcbiAgICAgICAgY2hlY2tzOiBbXSwgLy8gZGVsZXRlIGV4aXN0aW5nIGNoZWNrc1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnRpYWwoQ2xhc3MsIHNjaGVtYSwgbWFzaykge1xuICAgIGNvbnN0IG9sZFNoYXBlID0gc2NoZW1hLl96b2QuZGVmLnNoYXBlO1xuICAgIGNvbnN0IHNoYXBlID0geyAuLi5vbGRTaGFwZSB9O1xuICAgIGlmIChtYXNrKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIG1hc2spIHtcbiAgICAgICAgICAgIGlmICghKGtleSBpbiBvbGRTaGFwZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVjb2duaXplZCBrZXk6IFwiJHtrZXl9XCJgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbWFza1trZXldKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgLy8gaWYgKG9sZFNoYXBlW2tleV0hLl96b2Qub3B0aW4gPT09IFwib3B0aW9uYWxcIikgY29udGludWU7XG4gICAgICAgICAgICBzaGFwZVtrZXldID0gQ2xhc3NcbiAgICAgICAgICAgICAgICA/IG5ldyBDbGFzcyh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJUeXBlOiBvbGRTaGFwZVtrZXldLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgOiBvbGRTaGFwZVtrZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvbGRTaGFwZSkge1xuICAgICAgICAgICAgLy8gaWYgKG9sZFNoYXBlW2tleV0hLl96b2Qub3B0aW4gPT09IFwib3B0aW9uYWxcIikgY29udGludWU7XG4gICAgICAgICAgICBzaGFwZVtrZXldID0gQ2xhc3NcbiAgICAgICAgICAgICAgICA/IG5ldyBDbGFzcyh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJUeXBlOiBvbGRTaGFwZVtrZXldLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgOiBvbGRTaGFwZVtrZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbG9uZShzY2hlbWEsIHtcbiAgICAgICAgLi4uc2NoZW1hLl96b2QuZGVmLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlZChDbGFzcywgc2NoZW1hLCBtYXNrKSB7XG4gICAgY29uc3Qgb2xkU2hhcGUgPSBzY2hlbWEuX3pvZC5kZWYuc2hhcGU7XG4gICAgY29uc3Qgc2hhcGUgPSB7IC4uLm9sZFNoYXBlIH07XG4gICAgaWYgKG1hc2spIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gbWFzaykge1xuICAgICAgICAgICAgaWYgKCEoa2V5IGluIHNoYXBlKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5yZWNvZ25pemVkIGtleTogXCIke2tleX1cImApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFtYXNrW2tleV0pXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyBvdmVyd3JpdGUgd2l0aCBub24tb3B0aW9uYWxcbiAgICAgICAgICAgIHNoYXBlW2tleV0gPSBuZXcgQ2xhc3Moe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwibm9ub3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBpbm5lclR5cGU6IG9sZFNoYXBlW2tleV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2xkU2hhcGUpIHtcbiAgICAgICAgICAgIC8vIG92ZXJ3cml0ZSB3aXRoIG5vbi1vcHRpb25hbFxuICAgICAgICAgICAgc2hhcGVba2V5XSA9IG5ldyBDbGFzcyh7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJub25vcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIGlubmVyVHlwZTogb2xkU2hhcGVba2V5XSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbG9uZShzY2hlbWEsIHtcbiAgICAgICAgLi4uc2NoZW1hLl96b2QuZGVmLFxuICAgICAgICBzaGFwZSxcbiAgICAgICAgLy8gb3B0aW9uYWw6IFtdLFxuICAgICAgICBjaGVja3M6IFtdLFxuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFib3J0ZWQoeCwgc3RhcnRJbmRleCA9IDApIHtcbiAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8IHguaXNzdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh4Lmlzc3Vlc1tpXT8uY29udGludWUgIT09IHRydWUpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeElzc3VlcyhwYXRoLCBpc3N1ZXMpIHtcbiAgICByZXR1cm4gaXNzdWVzLm1hcCgoaXNzKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgKF9hID0gaXNzKS5wYXRoID8/IChfYS5wYXRoID0gW10pO1xuICAgICAgICBpc3MucGF0aC51bnNoaWZ0KHBhdGgpO1xuICAgICAgICByZXR1cm4gaXNzO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcE1lc3NhZ2UobWVzc2FnZSkge1xuICAgIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiA/IG1lc3NhZ2UgOiBtZXNzYWdlPy5tZXNzYWdlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGZpbmFsaXplSXNzdWUoaXNzLCBjdHgsIGNvbmZpZykge1xuICAgIGNvbnN0IGZ1bGwgPSB7IC4uLmlzcywgcGF0aDogaXNzLnBhdGggPz8gW10gfTtcbiAgICAvLyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBpZiAoIWlzcy5tZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB1bndyYXBNZXNzYWdlKGlzcy5pbnN0Py5fem9kLmRlZj8uZXJyb3I/Lihpc3MpKSA/P1xuICAgICAgICAgICAgdW53cmFwTWVzc2FnZShjdHg/LmVycm9yPy4oaXNzKSkgPz9cbiAgICAgICAgICAgIHVud3JhcE1lc3NhZ2UoY29uZmlnLmN1c3RvbUVycm9yPy4oaXNzKSkgPz9cbiAgICAgICAgICAgIHVud3JhcE1lc3NhZ2UoY29uZmlnLmxvY2FsZUVycm9yPy4oaXNzKSkgPz9cbiAgICAgICAgICAgIFwiSW52YWxpZCBpbnB1dFwiO1xuICAgICAgICBmdWxsLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cbiAgICAvLyBkZWxldGUgKGZ1bGwgYXMgYW55KS5kZWY7XG4gICAgZGVsZXRlIGZ1bGwuaW5zdDtcbiAgICBkZWxldGUgZnVsbC5jb250aW51ZTtcbiAgICBpZiAoIWN0eD8ucmVwb3J0SW5wdXQpIHtcbiAgICAgICAgZGVsZXRlIGZ1bGwuaW5wdXQ7XG4gICAgfVxuICAgIHJldHVybiBmdWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpemFibGVPcmlnaW4oaW5wdXQpIHtcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBTZXQpXG4gICAgICAgIHJldHVybiBcInNldFwiO1xuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIE1hcClcbiAgICAgICAgcmV0dXJuIFwibWFwXCI7XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRmlsZSlcbiAgICAgICAgcmV0dXJuIFwiZmlsZVwiO1xuICAgIHJldHVybiBcInVua25vd25cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRMZW5ndGhhYmxlT3JpZ2luKGlucHV0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKVxuICAgICAgICByZXR1cm4gXCJhcnJheVwiO1xuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIHJldHVybiBcInVua25vd25cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc3N1ZSguLi5hcmdzKSB7XG4gICAgY29uc3QgW2lzcywgaW5wdXQsIGluc3RdID0gYXJncztcbiAgICBpZiAodHlwZW9mIGlzcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVzc2FnZTogaXNzLFxuICAgICAgICAgICAgY29kZTogXCJjdXN0b21cIixcbiAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgaW5zdCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHsgLi4uaXNzIH07XG59XG5leHBvcnQgZnVuY3Rpb24gY2xlYW5FbnVtKG9iaikge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopXG4gICAgICAgIC5maWx0ZXIoKFtrLCBfXSkgPT4ge1xuICAgICAgICAvLyByZXR1cm4gdHJ1ZSBpZiBOYU4sIG1lYW5pbmcgaXQncyBub3QgYSBudW1iZXIsIHRodXMgYSBzdHJpbmcga2V5XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNOYU4oTnVtYmVyLnBhcnNlSW50KGssIDEwKSk7XG4gICAgfSlcbiAgICAgICAgLm1hcCgoZWwpID0+IGVsWzFdKTtcbn1cbi8vIGluc3RhbmNlb2ZcbmV4cG9ydCBjbGFzcyBDbGFzcyB7XG4gICAgY29uc3RydWN0b3IoLi4uX2FyZ3MpIHsgfVxufVxuIl0sIm5hbWVzIjpbImFzc2VydEVxdWFsIiwidmFsIiwiYXNzZXJ0Tm90RXF1YWwiLCJhc3NlcnRJcyIsIl9hcmciLCJhc3NlcnROZXZlciIsIl94IiwiRXJyb3IiLCJhc3NlcnQiLCJfIiwiZ2V0RW51bVZhbHVlcyIsImVudHJpZXMiLCJudW1lcmljVmFsdWVzIiwiT2JqZWN0IiwidmFsdWVzIiwiZmlsdGVyIiwidiIsImsiLCJpbmRleE9mIiwibWFwIiwiam9pblZhbHVlcyIsImFycmF5Iiwic2VwYXJhdG9yIiwic3RyaW5naWZ5UHJpbWl0aXZlIiwiam9pbiIsImpzb25TdHJpbmdpZnlSZXBsYWNlciIsInZhbHVlIiwidG9TdHJpbmciLCJjYWNoZWQiLCJnZXR0ZXIiLCJzZXQiLCJkZWZpbmVQcm9wZXJ0eSIsIm51bGxpc2giLCJpbnB1dCIsInVuZGVmaW5lZCIsImNsZWFuUmVnZXgiLCJzb3VyY2UiLCJzdGFydCIsInN0YXJ0c1dpdGgiLCJlbmQiLCJlbmRzV2l0aCIsImxlbmd0aCIsInNsaWNlIiwiZmxvYXRTYWZlUmVtYWluZGVyIiwic3RlcCIsInZhbERlY0NvdW50Iiwic3BsaXQiLCJzdGVwRGVjQ291bnQiLCJkZWNDb3VudCIsInZhbEludCIsIk51bWJlciIsInBhcnNlSW50IiwidG9GaXhlZCIsInJlcGxhY2UiLCJzdGVwSW50IiwiZGVmaW5lTGF6eSIsIm9iamVjdCIsImtleSIsImdldCIsImNvbmZpZ3VyYWJsZSIsImFzc2lnblByb3AiLCJ0YXJnZXQiLCJwcm9wIiwid3JpdGFibGUiLCJlbnVtZXJhYmxlIiwiZ2V0RWxlbWVudEF0UGF0aCIsIm9iaiIsInBhdGgiLCJyZWR1Y2UiLCJhY2MiLCJwcm9taXNlQWxsT2JqZWN0IiwicHJvbWlzZXNPYmoiLCJrZXlzIiwicHJvbWlzZXMiLCJQcm9taXNlIiwiYWxsIiwidGhlbiIsInJlc3VsdHMiLCJyZXNvbHZlZE9iaiIsImkiLCJyYW5kb21TdHJpbmciLCJjaGFycyIsInN0ciIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImVzYyIsIkpTT04iLCJzdHJpbmdpZnkiLCJjYXB0dXJlU3RhY2tUcmFjZSIsIl9hcmdzIiwiaXNPYmplY3QiLCJkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiYWxsb3dzRXZhbCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsImluY2x1ZGVzIiwiRiIsIkZ1bmN0aW9uIiwiaXNQbGFpbk9iamVjdCIsIm8iLCJjdG9yIiwicHJvdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIm51bUtleXMiLCJrZXlDb3VudCIsImdldFBhcnNlZFR5cGUiLCJ0IiwiaXNOYU4iLCJjYXRjaCIsIk1hcCIsIlNldCIsIkRhdGUiLCJGaWxlIiwicHJvcGVydHlLZXlUeXBlcyIsInByaW1pdGl2ZVR5cGVzIiwiZXNjYXBlUmVnZXgiLCJjbG9uZSIsImluc3QiLCJkZWYiLCJwYXJhbXMiLCJjbCIsIl96b2QiLCJjb25zdHIiLCJwYXJlbnQiLCJub3JtYWxpemVQYXJhbXMiLCJfcGFyYW1zIiwiZXJyb3IiLCJtZXNzYWdlIiwiY3JlYXRlVHJhbnNwYXJlbnRQcm94eSIsIlByb3h5IiwicmVjZWl2ZXIiLCJSZWZsZWN0IiwiaGFzIiwiZGVsZXRlUHJvcGVydHkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZGVzY3JpcHRvciIsIm9wdGlvbmFsS2V5cyIsInNoYXBlIiwib3B0aW4iLCJvcHRvdXQiLCJOVU1CRVJfRk9STUFUX1JBTkdFUyIsInNhZmVpbnQiLCJNSU5fU0FGRV9JTlRFR0VSIiwiTUFYX1NBRkVfSU5URUdFUiIsImludDMyIiwidWludDMyIiwiZmxvYXQzMiIsImZsb2F0NjQiLCJNQVhfVkFMVUUiLCJCSUdJTlRfRk9STUFUX1JBTkdFUyIsImludDY0IiwiQmlnSW50IiwidWludDY0IiwicGljayIsInNjaGVtYSIsIm1hc2siLCJuZXdTaGFwZSIsImN1cnJEZWYiLCJjaGVja3MiLCJvbWl0IiwiZXh0ZW5kIiwiX3NoYXBlIiwibWVyZ2UiLCJhIiwiYiIsImNhdGNoYWxsIiwicGFydGlhbCIsIkNsYXNzIiwib2xkU2hhcGUiLCJ0eXBlIiwiaW5uZXJUeXBlIiwicmVxdWlyZWQiLCJhYm9ydGVkIiwieCIsInN0YXJ0SW5kZXgiLCJpc3N1ZXMiLCJjb250aW51ZSIsInByZWZpeElzc3VlcyIsImlzcyIsIl9hIiwidW5zaGlmdCIsInVud3JhcE1lc3NhZ2UiLCJmaW5hbGl6ZUlzc3VlIiwiY3R4IiwiY29uZmlnIiwiZnVsbCIsImN1c3RvbUVycm9yIiwibG9jYWxlRXJyb3IiLCJyZXBvcnRJbnB1dCIsImdldFNpemFibGVPcmlnaW4iLCJnZXRMZW5ndGhhYmxlT3JpZ2luIiwiaXNzdWUiLCJhcmdzIiwiY29kZSIsImNsZWFuRW51bSIsImVsIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/versions.js":
|
||
/*!*****************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/versions.js ***!
|
||
\*****************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\nconst version = {\n major: 4,\n minor: 0,\n patch: 0\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3ZlcnNpb25zLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTyxNQUFNQSxVQUFVO0lBQ25CQyxPQUFPO0lBQ1BDLE9BQU87SUFDUEMsT0FBTztBQUNYLEVBQUUiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9jb3JlL3ZlcnNpb25zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB2ZXJzaW9uID0ge1xuICAgIG1ham9yOiA0LFxuICAgIG1pbm9yOiAwLFxuICAgIHBhdGNoOiAwLFxufTtcbiJdLCJuYW1lcyI6WyJ2ZXJzaW9uIiwibWFqb3IiLCJtaW5vciIsInBhdGNoIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/versions.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/mini/schemas.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/mini/schemas.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodMiniAny: () => (/* binding */ ZodMiniAny),\n/* harmony export */ ZodMiniArray: () => (/* binding */ ZodMiniArray),\n/* harmony export */ ZodMiniBase64: () => (/* binding */ ZodMiniBase64),\n/* harmony export */ ZodMiniBase64URL: () => (/* binding */ ZodMiniBase64URL),\n/* harmony export */ ZodMiniBigInt: () => (/* binding */ ZodMiniBigInt),\n/* harmony export */ ZodMiniBigIntFormat: () => (/* binding */ ZodMiniBigIntFormat),\n/* harmony export */ ZodMiniBoolean: () => (/* binding */ ZodMiniBoolean),\n/* harmony export */ ZodMiniCIDRv4: () => (/* binding */ ZodMiniCIDRv4),\n/* harmony export */ ZodMiniCIDRv6: () => (/* binding */ ZodMiniCIDRv6),\n/* harmony export */ ZodMiniCUID: () => (/* binding */ ZodMiniCUID),\n/* harmony export */ ZodMiniCUID2: () => (/* binding */ ZodMiniCUID2),\n/* harmony export */ ZodMiniCatch: () => (/* binding */ ZodMiniCatch),\n/* harmony export */ ZodMiniCustom: () => (/* binding */ ZodMiniCustom),\n/* harmony export */ ZodMiniCustomStringFormat: () => (/* binding */ ZodMiniCustomStringFormat),\n/* harmony export */ ZodMiniDate: () => (/* binding */ ZodMiniDate),\n/* harmony export */ ZodMiniDefault: () => (/* binding */ ZodMiniDefault),\n/* harmony export */ ZodMiniDiscriminatedUnion: () => (/* binding */ ZodMiniDiscriminatedUnion),\n/* harmony export */ ZodMiniE164: () => (/* binding */ ZodMiniE164),\n/* harmony export */ ZodMiniEmail: () => (/* binding */ ZodMiniEmail),\n/* harmony export */ ZodMiniEmoji: () => (/* binding */ ZodMiniEmoji),\n/* harmony export */ ZodMiniEnum: () => (/* binding */ ZodMiniEnum),\n/* harmony export */ ZodMiniFile: () => (/* binding */ ZodMiniFile),\n/* harmony export */ ZodMiniGUID: () => (/* binding */ ZodMiniGUID),\n/* harmony export */ ZodMiniIPv4: () => (/* binding */ ZodMiniIPv4),\n/* harmony export */ ZodMiniIPv6: () => (/* binding */ ZodMiniIPv6),\n/* harmony export */ ZodMiniIntersection: () => (/* binding */ ZodMiniIntersection),\n/* harmony export */ ZodMiniJWT: () => (/* binding */ ZodMiniJWT),\n/* harmony export */ ZodMiniKSUID: () => (/* binding */ ZodMiniKSUID),\n/* harmony export */ ZodMiniLazy: () => (/* binding */ ZodMiniLazy),\n/* harmony export */ ZodMiniLiteral: () => (/* binding */ ZodMiniLiteral),\n/* harmony export */ ZodMiniMap: () => (/* binding */ ZodMiniMap),\n/* harmony export */ ZodMiniNaN: () => (/* binding */ ZodMiniNaN),\n/* harmony export */ ZodMiniNanoID: () => (/* binding */ ZodMiniNanoID),\n/* harmony export */ ZodMiniNever: () => (/* binding */ ZodMiniNever),\n/* harmony export */ ZodMiniNonOptional: () => (/* binding */ ZodMiniNonOptional),\n/* harmony export */ ZodMiniNull: () => (/* binding */ ZodMiniNull),\n/* harmony export */ ZodMiniNullable: () => (/* binding */ ZodMiniNullable),\n/* harmony export */ ZodMiniNumber: () => (/* binding */ ZodMiniNumber),\n/* harmony export */ ZodMiniNumberFormat: () => (/* binding */ ZodMiniNumberFormat),\n/* harmony export */ ZodMiniObject: () => (/* binding */ ZodMiniObject),\n/* harmony export */ ZodMiniOptional: () => (/* binding */ ZodMiniOptional),\n/* harmony export */ ZodMiniPipe: () => (/* binding */ ZodMiniPipe),\n/* harmony export */ ZodMiniPrefault: () => (/* binding */ ZodMiniPrefault),\n/* harmony export */ ZodMiniPromise: () => (/* binding */ ZodMiniPromise),\n/* harmony export */ ZodMiniReadonly: () => (/* binding */ ZodMiniReadonly),\n/* harmony export */ ZodMiniRecord: () => (/* binding */ ZodMiniRecord),\n/* harmony export */ ZodMiniSet: () => (/* binding */ ZodMiniSet),\n/* harmony export */ ZodMiniString: () => (/* binding */ ZodMiniString),\n/* harmony export */ ZodMiniStringFormat: () => (/* binding */ ZodMiniStringFormat),\n/* harmony export */ ZodMiniSuccess: () => (/* binding */ ZodMiniSuccess),\n/* harmony export */ ZodMiniSymbol: () => (/* binding */ ZodMiniSymbol),\n/* harmony export */ ZodMiniTemplateLiteral: () => (/* binding */ ZodMiniTemplateLiteral),\n/* harmony export */ ZodMiniTransform: () => (/* binding */ ZodMiniTransform),\n/* harmony export */ ZodMiniTuple: () => (/* binding */ ZodMiniTuple),\n/* harmony export */ ZodMiniType: () => (/* binding */ ZodMiniType),\n/* harmony export */ ZodMiniULID: () => (/* binding */ ZodMiniULID),\n/* harmony export */ ZodMiniURL: () => (/* binding */ ZodMiniURL),\n/* harmony export */ ZodMiniUUID: () => (/* binding */ ZodMiniUUID),\n/* harmony export */ ZodMiniUndefined: () => (/* binding */ ZodMiniUndefined),\n/* harmony export */ ZodMiniUnion: () => (/* binding */ ZodMiniUnion),\n/* harmony export */ ZodMiniUnknown: () => (/* binding */ ZodMiniUnknown),\n/* harmony export */ ZodMiniVoid: () => (/* binding */ ZodMiniVoid),\n/* harmony export */ ZodMiniXID: () => (/* binding */ ZodMiniXID),\n/* harmony export */ _default: () => (/* binding */ _default),\n/* harmony export */ any: () => (/* binding */ any),\n/* harmony export */ array: () => (/* binding */ array),\n/* harmony export */ base64: () => (/* binding */ base64),\n/* harmony export */ base64url: () => (/* binding */ base64url),\n/* harmony export */ bigint: () => (/* binding */ bigint),\n/* harmony export */ boolean: () => (/* binding */ boolean),\n/* harmony export */ \"catch\": () => (/* binding */ _catch),\n/* harmony export */ catchall: () => (/* binding */ catchall),\n/* harmony export */ check: () => (/* binding */ check),\n/* harmony export */ cidrv4: () => (/* binding */ cidrv4),\n/* harmony export */ cidrv6: () => (/* binding */ cidrv6),\n/* harmony export */ cuid: () => (/* binding */ cuid),\n/* harmony export */ cuid2: () => (/* binding */ cuid2),\n/* harmony export */ custom: () => (/* binding */ custom),\n/* harmony export */ date: () => (/* binding */ date),\n/* harmony export */ discriminatedUnion: () => (/* binding */ discriminatedUnion),\n/* harmony export */ e164: () => (/* binding */ e164),\n/* harmony export */ email: () => (/* binding */ email),\n/* harmony export */ emoji: () => (/* binding */ emoji),\n/* harmony export */ \"enum\": () => (/* binding */ _enum),\n/* harmony export */ extend: () => (/* binding */ extend),\n/* harmony export */ file: () => (/* binding */ file),\n/* harmony export */ float32: () => (/* binding */ float32),\n/* harmony export */ float64: () => (/* binding */ float64),\n/* harmony export */ guid: () => (/* binding */ guid),\n/* harmony export */ \"instanceof\": () => (/* binding */ _instanceof),\n/* harmony export */ int: () => (/* binding */ int),\n/* harmony export */ int32: () => (/* binding */ int32),\n/* harmony export */ int64: () => (/* binding */ int64),\n/* harmony export */ intersection: () => (/* binding */ intersection),\n/* harmony export */ ipv4: () => (/* binding */ ipv4),\n/* harmony export */ ipv6: () => (/* binding */ ipv6),\n/* harmony export */ json: () => (/* binding */ json),\n/* harmony export */ jwt: () => (/* binding */ jwt),\n/* harmony export */ keyof: () => (/* binding */ keyof),\n/* harmony export */ ksuid: () => (/* binding */ ksuid),\n/* harmony export */ lazy: () => (/* binding */ _lazy),\n/* harmony export */ literal: () => (/* binding */ literal),\n/* harmony export */ looseObject: () => (/* binding */ looseObject),\n/* harmony export */ map: () => (/* binding */ map),\n/* harmony export */ merge: () => (/* binding */ merge),\n/* harmony export */ nan: () => (/* binding */ nan),\n/* harmony export */ nanoid: () => (/* binding */ nanoid),\n/* harmony export */ nativeEnum: () => (/* binding */ nativeEnum),\n/* harmony export */ never: () => (/* binding */ never),\n/* harmony export */ nonoptional: () => (/* binding */ nonoptional),\n/* harmony export */ \"null\": () => (/* binding */ _null),\n/* harmony export */ nullable: () => (/* binding */ nullable),\n/* harmony export */ nullish: () => (/* binding */ nullish),\n/* harmony export */ number: () => (/* binding */ number),\n/* harmony export */ object: () => (/* binding */ object),\n/* harmony export */ omit: () => (/* binding */ omit),\n/* harmony export */ optional: () => (/* binding */ optional),\n/* harmony export */ partial: () => (/* binding */ partial),\n/* harmony export */ partialRecord: () => (/* binding */ partialRecord),\n/* harmony export */ pick: () => (/* binding */ pick),\n/* harmony export */ pipe: () => (/* binding */ pipe),\n/* harmony export */ prefault: () => (/* binding */ prefault),\n/* harmony export */ promise: () => (/* binding */ promise),\n/* harmony export */ readonly: () => (/* binding */ readonly),\n/* harmony export */ record: () => (/* binding */ record),\n/* harmony export */ refine: () => (/* binding */ refine),\n/* harmony export */ required: () => (/* binding */ required),\n/* harmony export */ set: () => (/* binding */ set),\n/* harmony export */ strictObject: () => (/* binding */ strictObject),\n/* harmony export */ string: () => (/* binding */ string),\n/* harmony export */ stringFormat: () => (/* binding */ stringFormat),\n/* harmony export */ stringbool: () => (/* binding */ stringbool),\n/* harmony export */ success: () => (/* binding */ success),\n/* harmony export */ symbol: () => (/* binding */ symbol),\n/* harmony export */ templateLiteral: () => (/* binding */ templateLiteral),\n/* harmony export */ transform: () => (/* binding */ transform),\n/* harmony export */ tuple: () => (/* binding */ tuple),\n/* harmony export */ uint32: () => (/* binding */ uint32),\n/* harmony export */ uint64: () => (/* binding */ uint64),\n/* harmony export */ ulid: () => (/* binding */ ulid),\n/* harmony export */ undefined: () => (/* binding */ _undefined),\n/* harmony export */ union: () => (/* binding */ union),\n/* harmony export */ unknown: () => (/* binding */ unknown),\n/* harmony export */ url: () => (/* binding */ url),\n/* harmony export */ uuid: () => (/* binding */ uuid),\n/* harmony export */ uuidv4: () => (/* binding */ uuidv4),\n/* harmony export */ uuidv6: () => (/* binding */ uuidv6),\n/* harmony export */ uuidv7: () => (/* binding */ uuidv7),\n/* harmony export */ \"void\": () => (/* binding */ _void),\n/* harmony export */ xid: () => (/* binding */ xid)\n/* harmony export */ });\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/core.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/schemas.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/util.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/api.js\");\n/* harmony import */ var _core_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../core/index.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/checks.js\");\n/* harmony import */ var _parse_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parse.js */ \"(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/core/parse.js\");\n\n\n\nconst ZodMiniType = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniType\", (inst, def)=>{\n if (!inst._zod) throw new Error(\"Uninitialized schema in ZodMiniType.\");\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodType.init(inst, def);\n inst.def = def;\n inst.parse = (data, params)=>_parse_js__WEBPACK_IMPORTED_MODULE_2__.parse(inst, data, params, {\n callee: inst.parse\n });\n inst.safeParse = (data, params)=>_parse_js__WEBPACK_IMPORTED_MODULE_2__.safeParse(inst, data, params);\n inst.parseAsync = async (data, params)=>_parse_js__WEBPACK_IMPORTED_MODULE_2__.parseAsync(inst, data, params, {\n callee: inst.parseAsync\n });\n inst.safeParseAsync = async (data, params)=>_parse_js__WEBPACK_IMPORTED_MODULE_2__.safeParseAsync(inst, data, params);\n inst.check = (...checks)=>{\n return inst.clone({\n ...def,\n checks: [\n ...def.checks ?? [],\n ...checks.map((ch)=>typeof ch === \"function\" ? {\n _zod: {\n check: ch,\n def: {\n check: \"custom\"\n },\n onattach: []\n }\n } : ch)\n ]\n });\n };\n inst.clone = (_def, params)=>_core_index_js__WEBPACK_IMPORTED_MODULE_3__.clone(inst, _def, params);\n inst.brand = ()=>inst;\n inst.register = (reg, meta)=>{\n reg.add(inst, meta);\n return inst;\n };\n});\nconst ZodMiniString = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniString\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodString.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction string(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._string(ZodMiniString, params);\n}\nconst ZodMiniStringFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniStringFormat\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodStringFormat.init(inst, def);\n ZodMiniString.init(inst, def);\n});\nconst ZodMiniEmail = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniEmail\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodEmail.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction email(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._email(ZodMiniEmail, params);\n}\nconst ZodMiniGUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniGUID\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodGUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction guid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._guid(ZodMiniGUID, params);\n}\nconst ZodMiniUUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniUUID\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodUUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction uuid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._uuid(ZodMiniUUID, params);\n}\nfunction uuidv4(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._uuidv4(ZodMiniUUID, params);\n}\n// ZodMiniUUIDv6\nfunction uuidv6(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._uuidv6(ZodMiniUUID, params);\n}\n// ZodMiniUUIDv7\nfunction uuidv7(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._uuidv7(ZodMiniUUID, params);\n}\nconst ZodMiniURL = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniURL\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodURL.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction url(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._url(ZodMiniURL, params);\n}\nconst ZodMiniEmoji = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniEmoji\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodEmoji.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction emoji(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._emoji(ZodMiniEmoji, params);\n}\nconst ZodMiniNanoID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniNanoID\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNanoID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction nanoid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._nanoid(ZodMiniNanoID, params);\n}\nconst ZodMiniCUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniCUID\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction cuid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._cuid(ZodMiniCUID, params);\n}\nconst ZodMiniCUID2 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniCUID2\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCUID2.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction cuid2(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._cuid2(ZodMiniCUID2, params);\n}\nconst ZodMiniULID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniULID\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodULID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction ulid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._ulid(ZodMiniULID, params);\n}\nconst ZodMiniXID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniXID\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodXID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction xid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._xid(ZodMiniXID, params);\n}\nconst ZodMiniKSUID = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniKSUID\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodKSUID.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction ksuid(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._ksuid(ZodMiniKSUID, params);\n}\nconst ZodMiniIPv4 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniIPv4\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodIPv4.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction ipv4(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._ipv4(ZodMiniIPv4, params);\n}\nconst ZodMiniIPv6 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniIPv6\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodIPv6.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction ipv6(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._ipv6(ZodMiniIPv6, params);\n}\nconst ZodMiniCIDRv4 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniCIDRv4\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCIDRv4.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction cidrv4(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._cidrv4(ZodMiniCIDRv4, params);\n}\nconst ZodMiniCIDRv6 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniCIDRv6\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCIDRv6.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction cidrv6(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._cidrv6(ZodMiniCIDRv6, params);\n}\nconst ZodMiniBase64 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniBase64\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBase64.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction base64(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._base64(ZodMiniBase64, params);\n}\nconst ZodMiniBase64URL = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniBase64URL\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBase64URL.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction base64url(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._base64url(ZodMiniBase64URL, params);\n}\nconst ZodMiniE164 = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniE164\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodE164.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction e164(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._e164(ZodMiniE164, params);\n}\nconst ZodMiniJWT = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniJWT\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodJWT.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction jwt(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._jwt(ZodMiniJWT, params);\n}\nconst ZodMiniCustomStringFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniCustomStringFormat\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCustomStringFormat.init(inst, def);\n ZodMiniStringFormat.init(inst, def);\n});\nfunction stringFormat(format, fnOrRegex, _params = {}) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._stringFormat(ZodMiniCustomStringFormat, format, fnOrRegex, _params);\n}\nconst ZodMiniNumber = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniNumber\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNumber.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction number(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._number(ZodMiniNumber, params);\n}\nconst ZodMiniNumberFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniNumberFormat\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNumberFormat.init(inst, def);\n ZodMiniNumber.init(inst, def);\n});\n// int\nfunction int(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._int(ZodMiniNumberFormat, params);\n}\n// float32\nfunction float32(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._float32(ZodMiniNumberFormat, params);\n}\n// float64\nfunction float64(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._float64(ZodMiniNumberFormat, params);\n}\n// int32\nfunction int32(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._int32(ZodMiniNumberFormat, params);\n}\n// uint32\nfunction uint32(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._uint32(ZodMiniNumberFormat, params);\n}\nconst ZodMiniBoolean = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniBoolean\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBoolean.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction boolean(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._boolean(ZodMiniBoolean, params);\n}\nconst ZodMiniBigInt = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniBigInt\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBigInt.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction bigint(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._bigint(ZodMiniBigInt, params);\n}\nconst ZodMiniBigIntFormat = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniBigIntFormat\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodBigIntFormat.init(inst, def);\n ZodMiniBigInt.init(inst, def);\n});\n// int64\nfunction int64(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._int64(ZodMiniBigIntFormat, params);\n}\n// uint64\nfunction uint64(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._uint64(ZodMiniBigIntFormat, params);\n}\nconst ZodMiniSymbol = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniSymbol\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodSymbol.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction symbol(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._symbol(ZodMiniSymbol, params);\n}\nconst ZodMiniUndefined = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniUndefined\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodUndefined.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction _undefined(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._undefined(ZodMiniUndefined, params);\n}\n\nconst ZodMiniNull = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniNull\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNull.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction _null(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._null(ZodMiniNull, params);\n}\n\nconst ZodMiniAny = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniAny\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodAny.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction any() {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._any(ZodMiniAny);\n}\nconst ZodMiniUnknown = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniUnknown\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodUnknown.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction unknown() {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._unknown(ZodMiniUnknown);\n}\nconst ZodMiniNever = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniNever\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNever.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction never(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._never(ZodMiniNever, params);\n}\nconst ZodMiniVoid = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniVoid\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodVoid.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction _void(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._void(ZodMiniVoid, params);\n}\n\nconst ZodMiniDate = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniDate\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodDate.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction date(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._date(ZodMiniDate, params);\n}\nconst ZodMiniArray = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniArray\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodArray.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction array(element, params) {\n return new ZodMiniArray({\n type: \"array\",\n element: element,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\n// .keyof\nfunction keyof(schema) {\n const shape = schema._zod.def.shape;\n return literal(Object.keys(shape));\n}\nconst ZodMiniObject = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniObject\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodObject.init(inst, def);\n ZodMiniType.init(inst, def);\n _core_index_js__WEBPACK_IMPORTED_MODULE_3__.defineLazy(inst, \"shape\", ()=>def.shape);\n});\nfunction object(shape, params) {\n const def = {\n type: \"object\",\n get shape () {\n _core_index_js__WEBPACK_IMPORTED_MODULE_3__.assignProp(this, \"shape\", {\n ...shape\n });\n return this.shape;\n },\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n };\n return new ZodMiniObject(def);\n}\n// strictObject\nfunction strictObject(shape, params) {\n return new ZodMiniObject({\n type: \"object\",\n // shape: shape as core.$ZodLooseShape,\n get shape () {\n _core_index_js__WEBPACK_IMPORTED_MODULE_3__.assignProp(this, \"shape\", {\n ...shape\n });\n return this.shape;\n },\n catchall: never(),\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\n// looseObject\nfunction looseObject(shape, params) {\n return new ZodMiniObject({\n type: \"object\",\n // shape: shape as core.$ZodLooseShape,\n get shape () {\n _core_index_js__WEBPACK_IMPORTED_MODULE_3__.assignProp(this, \"shape\", {\n ...shape\n });\n return this.shape;\n },\n // get optional() {\n // return util.optionalKeys(shape);\n // },\n catchall: unknown(),\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\n// object methods\nfunction extend(schema, shape) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__.extend(schema, shape);\n}\nfunction merge(schema, shape) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__.extend(schema, shape);\n}\nfunction pick(schema, mask) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__.pick(schema, mask);\n}\n// .omit\nfunction omit(schema, mask) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__.omit(schema, mask);\n}\nfunction partial(schema, mask) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__.partial(ZodMiniOptional, schema, mask);\n}\nfunction required(schema, mask) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_3__.required(ZodMiniNonOptional, schema, mask);\n}\nfunction catchall(inst, catchall) {\n return inst.clone({\n ...inst._zod.def,\n catchall: catchall\n });\n}\nconst ZodMiniUnion = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniUnion\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodUnion.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction union(options, params) {\n return new ZodMiniUnion({\n type: \"union\",\n options: options,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniDiscriminatedUnion = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniDiscriminatedUnion\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodDiscriminatedUnion.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction discriminatedUnion(discriminator, options, params) {\n return new ZodMiniDiscriminatedUnion({\n type: \"union\",\n options,\n discriminator,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniIntersection = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniIntersection\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodIntersection.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction intersection(left, right) {\n return new ZodMiniIntersection({\n type: \"intersection\",\n left: left,\n right: right\n });\n}\nconst ZodMiniTuple = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniTuple\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodTuple.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction tuple(items, _paramsOrRest, _params) {\n const hasRest = _paramsOrRest instanceof _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodType;\n const params = hasRest ? _params : _paramsOrRest;\n const rest = hasRest ? _paramsOrRest : null;\n return new ZodMiniTuple({\n type: \"tuple\",\n items: items,\n rest,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniRecord = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniRecord\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodRecord.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction record(keyType, valueType, params) {\n return new ZodMiniRecord({\n type: \"record\",\n keyType,\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nfunction partialRecord(keyType, valueType, params) {\n return new ZodMiniRecord({\n type: \"record\",\n keyType: union([\n keyType,\n never()\n ]),\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniMap = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniMap\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodMap.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction map(keyType, valueType, params) {\n return new ZodMiniMap({\n type: \"map\",\n keyType: keyType,\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniSet = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniSet\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodSet.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction set(valueType, params) {\n return new ZodMiniSet({\n type: \"set\",\n valueType: valueType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniEnum = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniEnum\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodEnum.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction _enum(values, params) {\n const entries = Array.isArray(values) ? Object.fromEntries(values.map((v)=>[\n v,\n v\n ])) : values;\n return new ZodMiniEnum({\n type: \"enum\",\n entries,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\n\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */ function nativeEnum(entries, params) {\n return new ZodMiniEnum({\n type: \"enum\",\n entries,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniLiteral = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniLiteral\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodLiteral.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction literal(value, params) {\n return new ZodMiniLiteral({\n type: \"literal\",\n values: Array.isArray(value) ? value : [\n value\n ],\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniFile = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniFile\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodFile.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction file(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._file(ZodMiniFile, params);\n}\nconst ZodMiniTransform = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniTransform\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodTransform.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction transform(fn) {\n return new ZodMiniTransform({\n type: \"transform\",\n transform: fn\n });\n}\nconst ZodMiniOptional = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniOptional\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodOptional.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction optional(innerType) {\n return new ZodMiniOptional({\n type: \"optional\",\n innerType: innerType\n });\n}\nconst ZodMiniNullable = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniNullable\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNullable.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction nullable(innerType) {\n return new ZodMiniNullable({\n type: \"nullable\",\n innerType: innerType\n });\n}\n// nullish\nfunction nullish(innerType) {\n return optional(nullable(innerType));\n}\nconst ZodMiniDefault = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniDefault\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodDefault.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction _default(innerType, defaultValue) {\n return new ZodMiniDefault({\n type: \"default\",\n innerType: innerType,\n get defaultValue () {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n }\n });\n}\nconst ZodMiniPrefault = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniPrefault\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodPrefault.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction prefault(innerType, defaultValue) {\n return new ZodMiniPrefault({\n type: \"prefault\",\n innerType: innerType,\n get defaultValue () {\n return typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n }\n });\n}\nconst ZodMiniNonOptional = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniNonOptional\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNonOptional.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction nonoptional(innerType, params) {\n return new ZodMiniNonOptional({\n type: \"nonoptional\",\n innerType: innerType,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniSuccess = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniSuccess\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodSuccess.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction success(innerType) {\n return new ZodMiniSuccess({\n type: \"success\",\n innerType: innerType\n });\n}\nconst ZodMiniCatch = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniCatch\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCatch.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction _catch(innerType, catchValue) {\n return new ZodMiniCatch({\n type: \"catch\",\n innerType: innerType,\n catchValue: typeof catchValue === \"function\" ? catchValue : ()=>catchValue\n });\n}\n\nconst ZodMiniNaN = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniNaN\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodNaN.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction nan(params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._nan(ZodMiniNaN, params);\n}\nconst ZodMiniPipe = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniPipe\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodPipe.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction pipe(in_, out) {\n return new ZodMiniPipe({\n type: \"pipe\",\n in: in_,\n out: out\n });\n}\nconst ZodMiniReadonly = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniReadonly\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodReadonly.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction readonly(innerType) {\n return new ZodMiniReadonly({\n type: \"readonly\",\n innerType: innerType\n });\n}\nconst ZodMiniTemplateLiteral = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniTemplateLiteral\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodTemplateLiteral.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction templateLiteral(parts, params) {\n return new ZodMiniTemplateLiteral({\n type: \"template_literal\",\n parts,\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n}\nconst ZodMiniLazy = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniLazy\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodLazy.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// export function lazy<T extends object>(getter: () => T): T {\n// return util.createTransparentProxy<T>(getter);\n// }\nfunction _lazy(getter) {\n return new ZodMiniLazy({\n type: \"lazy\",\n getter: getter\n });\n}\n\nconst ZodMiniPromise = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniPromise\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodPromise.init(inst, def);\n ZodMiniType.init(inst, def);\n});\nfunction promise(innerType) {\n return new ZodMiniPromise({\n type: \"promise\",\n innerType: innerType\n });\n}\nconst ZodMiniCustom = /*@__PURE__*/ _core_index_js__WEBPACK_IMPORTED_MODULE_0__.$constructor(\"ZodMiniCustom\", (inst, def)=>{\n _core_index_js__WEBPACK_IMPORTED_MODULE_1__.$ZodCustom.init(inst, def);\n ZodMiniType.init(inst, def);\n});\n// custom checks\nfunction check(fn, params) {\n const ch = new _core_index_js__WEBPACK_IMPORTED_MODULE_5__.$ZodCheck({\n check: \"custom\",\n ..._core_index_js__WEBPACK_IMPORTED_MODULE_3__.normalizeParams(params)\n });\n ch._zod.check = fn;\n return ch;\n}\n// ZodCustom\n// custom schema\nfunction custom(fn, _params) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._custom(ZodMiniCustom, fn ?? (()=>true), _params);\n}\n// refine\nfunction refine(fn, _params = {}) {\n return _core_index_js__WEBPACK_IMPORTED_MODULE_4__._refine(ZodMiniCustom, fn, _params);\n}\n// instanceof\nclass Class {\n constructor(..._args){}\n}\nfunction _instanceof(cls, params = {\n error: `Input not instance of ${cls.name}`\n}) {\n const inst = custom((data)=>data instanceof cls, params);\n inst._zod.bag.Class = cls;\n return inst;\n}\n\n// stringbool\nconst stringbool = (...args)=>_core_index_js__WEBPACK_IMPORTED_MODULE_4__._stringbool({\n Pipe: ZodMiniPipe,\n Boolean: ZodMiniBoolean,\n String: ZodMiniString,\n Transform: ZodMiniTransform\n }, ...args);\nfunction json() {\n const jsonSchema = _lazy(()=>{\n return union([\n string(),\n number(),\n boolean(),\n _null(),\n array(jsonSchema),\n record(string(), jsonSchema)\n ]);\n });\n return jsonSchema;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92NC9taW5pL3NjaGVtYXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXlDO0FBQ0Q7QUFDSjtBQUM3QixNQUFNRyxjQUFjLFdBQVcsR0FBR0gsd0RBQWlCLENBQUMsZUFBZSxDQUFDSyxNQUFNQztJQUM3RSxJQUFJLENBQUNELEtBQUtFLElBQUksRUFDVixNQUFNLElBQUlDLE1BQU07SUFDcEJSLG9EQUFhLENBQUNVLElBQUksQ0FBQ0wsTUFBTUM7SUFDekJELEtBQUtDLEdBQUcsR0FBR0E7SUFDWEQsS0FBS0gsS0FBSyxHQUFHLENBQUNTLE1BQU1DLFNBQVdWLDRDQUFXLENBQUNHLE1BQU1NLE1BQU1DLFFBQVE7WUFBRUMsUUFBUVIsS0FBS0gsS0FBSztRQUFDO0lBQ3BGRyxLQUFLUyxTQUFTLEdBQUcsQ0FBQ0gsTUFBTUMsU0FBV1YsZ0RBQWUsQ0FBQ0csTUFBTU0sTUFBTUM7SUFDL0RQLEtBQUtVLFVBQVUsR0FBRyxPQUFPSixNQUFNQyxTQUFXVixpREFBZ0IsQ0FBQ0csTUFBTU0sTUFBTUMsUUFBUTtZQUFFQyxRQUFRUixLQUFLVSxVQUFVO1FBQUM7SUFDekdWLEtBQUtXLGNBQWMsR0FBRyxPQUFPTCxNQUFNQyxTQUFXVixxREFBb0IsQ0FBQ0csTUFBTU0sTUFBTUM7SUFDL0VQLEtBQUtZLEtBQUssR0FBRyxDQUFDLEdBQUdDO1FBQ2IsT0FBT2IsS0FBS2MsS0FBSyxDQUFDO1lBQ2QsR0FBR2IsR0FBRztZQUNOWSxRQUFRO21CQUNBWixJQUFJWSxNQUFNLElBQUksRUFBRTttQkFDakJB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QUM2VCxlQUFlbEQsSUFBSWpKO0FBQzNDO0FBQ0EsYUFBYTtBQUNiLE1BQU0wTTtJQUNGLFlBQVksR0FBR0MsS0FBSyxDQUFFLENBQUU7QUFDNUI7QUFDQSxTQUFTQyxZQUFZQyxHQUFHLEVBQUUzVCxTQUFTO0lBQy9CNFQsT0FBTyxDQUFDLHNCQUFzQixFQUFFRCxJQUFJRSxJQUFJLEVBQUU7QUFDOUMsQ0FBQztJQUNHLE1BQU1wVSxPQUFPMlQsT0FBTyxDQUFDclQsT0FBU0EsZ0JBQWdCNFQsS0FBSzNUO0lBQ25EUCxLQUFLRSxJQUFJLENBQUNtVSxHQUFHLENBQUNOLEtBQUssR0FBR0c7SUFDdEIsT0FBT2xVO0FBQ1g7QUFDcUM7QUFDckMsYUFBYTtBQUNOLE1BQU11VSxhQUFhLENBQUMsR0FBR0MsT0FBUzdVLHVEQUFnQixDQUFDO1FBQ3BEK1UsTUFBTXZDO1FBQ053QyxTQUFTcE07UUFDVHFNLFFBQVFwVDtRQUNScVQsV0FBVzFFO0lBQ2YsTUFBTXFFLE1BQU07QUFDTCxTQUFTTTtJQUNaLE1BQU1DLGFBQWE3QixNQUFNO1FBQ3JCLE9BQU85RixNQUFNO1lBQUMxTDtZQUFVK0Y7WUFBVWdCO1lBQVdzQjtZQUFTd0IsTUFBTXdKO1lBQWF2RyxPQUFPOU0sVUFBVXFUO1NBQVk7SUFDMUc7SUFDQSxPQUFPQTtBQUNYIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjQvbWluaS9zY2hlbWFzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSBcIi4uL2NvcmUvaW5kZXguanNcIjtcbmltcG9ydCB7IHV0aWwgfSBmcm9tIFwiLi4vY29yZS9pbmRleC5qc1wiO1xuaW1wb3J0ICogYXMgcGFyc2UgZnJvbSBcIi4vcGFyc2UuanNcIjtcbmV4cG9ydCBjb25zdCBab2RNaW5pVHlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVHlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgaWYgKCFpbnN0Ll96b2QpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuaW5pdGlhbGl6ZWQgc2NoZW1hIGluIFpvZE1pbmlUeXBlLlwiKTtcbiAgICBjb3JlLiRab2RUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBpbnN0LmRlZiA9IGRlZjtcbiAgICBpbnN0LnBhcnNlID0gKGRhdGEsIHBhcmFtcykgPT4gcGFyc2UucGFyc2UoaW5zdCwgZGF0YSwgcGFyYW1zLCB7IGNhbGxlZTogaW5zdC5wYXJzZSB9KTtcbiAgICBpbnN0LnNhZmVQYXJzZSA9IChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnNhZmVQYXJzZShpbnN0LCBkYXRhLCBwYXJhbXMpO1xuICAgIGluc3QucGFyc2VBc3luYyA9IGFzeW5jIChkYXRhLCBwYXJhbXMpID0+IHBhcnNlLnBhcnNlQXN5bmMoaW5zdCwgZGF0YSwgcGFyYW1zLCB7IGNhbGxlZTogaW5zdC5wYXJzZUFzeW5jIH0pO1xuICAgIGluc3Quc2FmZVBhcnNlQXN5bmMgPSBhc3luYyAoZGF0YSwgcGFyYW1zKSA9PiBwYXJzZS5zYWZlUGFyc2VBc3luYyhpbnN0LCBkYXRhLCBwYXJhbXMpO1xuICAgIGluc3QuY2hlY2sgPSAoLi4uY2hlY2tzKSA9PiB7XG4gICAgICAgIHJldHVybiBpbnN0LmNsb25lKHtcbiAgICAgICAgICAgIC4uLmRlZixcbiAgICAgICAgICAgIGNoZWNrczogW1xuICAgICAgICAgICAgICAgIC4uLihkZWYuY2hlY2tzID8/IFtdKSxcbiAgICAgICAgICAgICAgICAuLi5jaGVja3MubWFwKChjaCkgPT4gdHlwZW9mIGNoID09PSBcImZ1bmN0aW9uXCIgPyB7IF96b2Q6IHsgY2hlY2s6IGNoLCBkZWY6IHsgY2hlY2s6IFwiY3VzdG9tXCIgfSwgb25hdHRhY2g6IFtdIH0gfSA6IGNoKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH1cbiAgICAgICAgLy8geyBwYXJlbnQ6IHRydWUgfVxuICAgICAgICApO1xuICAgIH07XG4gICAgaW5zdC5jbG9uZSA9IChfZGVmLCBwYXJhbXMpID0+IGNvcmUuY2xvbmUoaW5zdCwgX2RlZiwgcGFyYW1zKTtcbiAgICBpbnN0LmJyYW5kID0gKCkgPT4gaW5zdDtcbiAgICBpbnN0LnJlZ2lzdGVyID0gKChyZWcsIG1ldGEpID0+IHtcbiAgICAgICAgcmVnLmFkZChpbnN0LCBtZXRhKTtcbiAgICAgICAgcmV0dXJuIGluc3Q7XG4gICAgfSk7XG59KTtcbmV4cG9ydCBjb25zdCBab2RNaW5pU3RyaW5nID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlTdHJpbmdcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFN0cmluZy5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9zdHJpbmcoWm9kTWluaVN0cmluZywgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pU3RyaW5nRm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlTdHJpbmdGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZy5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBjb25zdCBab2RNaW5pRW1haWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUVtYWlsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RFbWFpbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBlbWFpbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZW1haWwoWm9kTWluaUVtYWlsLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlHVUlEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlHVUlEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RHVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGd1aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2d1aWQoWm9kTWluaUdVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVVVSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVVVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVVSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdXVpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdXVpZChab2RNaW5pVVVJRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB1dWlkdjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3V1aWR2NChab2RNaW5pVVVJRCwgcGFyYW1zKTtcbn1cbi8vIFpvZE1pbmlVVUlEdjZcbmV4cG9ydCBmdW5jdGlvbiB1dWlkdjYocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3V1aWR2Nihab2RNaW5pVVVJRCwgcGFyYW1zKTtcbn1cbi8vIFpvZE1pbmlVVUlEdjdcbmV4cG9ydCBmdW5jdGlvbiB1dWlkdjcocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3V1aWR2Nyhab2RNaW5pVVVJRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVVJMID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlVUkxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVSTC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1cmwocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VybChab2RNaW5pVVJMLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlFbW9qaSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pRW1vamlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEVtb2ppLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGVtb2ppKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9lbW9qaShab2RNaW5pRW1vamksIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaU5hbm9JRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTmFub0lEXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROYW5vSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbmFub2lkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uYW5vaWQoWm9kTWluaU5hbm9JRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQ1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQ1VJRFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ1VJRC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBjdWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jdWlkKFpvZE1pbmlDVUlELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlDVUlEMiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQ1VJRDJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZENVSUQyLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGN1aWQyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jdWlkMihab2RNaW5pQ1VJRDIsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVVMSUQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVVMSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVMSUQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdWxpZChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fdWxpZChab2RNaW5pVUxJRCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pWElEID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlYSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFhJRC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB4aWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3hpZChab2RNaW5pWElELCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlLU1VJRCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pS1NVSURcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEtTVUlELmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGtzdWlkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9rc3VpZChab2RNaW5pS1NVSUQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUlQdjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUlQdjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZElQdjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaXB2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5faXB2NChab2RNaW5pSVB2NCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pSVB2NiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pSVB2NlwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kSVB2Ni5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBpcHY2KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pcHY2KFpvZE1pbmlJUHY2LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlDSURSdjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUNJRFJ2NFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ0lEUnY0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGNpZHJ2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fY2lkcnY0KFpvZE1pbmlDSURSdjQsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUNJRFJ2NiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQ0lEUnY2XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RDSURSdjYuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gY2lkcnY2KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jaWRydjYoWm9kTWluaUNJRFJ2NiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQmFzZTY0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlCYXNlNjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEJhc2U2NC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBiYXNlNjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Jhc2U2NChab2RNaW5pQmFzZTY0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlCYXNlNjRVUkwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUJhc2U2NFVSTFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQmFzZTY0VVJMLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGJhc2U2NHVybChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYmFzZTY0dXJsKFpvZE1pbmlCYXNlNjRVUkwsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUUxNjQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUUxNjRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEUxNjQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlTdHJpbmdGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZTE2NChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZTE2NChab2RNaW5pRTE2NCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pSldUID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlKV1RcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEpXVC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVN0cmluZ0Zvcm1hdC5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBqd3QocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2p3dChab2RNaW5pSldULCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlDdXN0b21TdHJpbmdGb3JtYXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUN1c3RvbVN0cmluZ0Zvcm1hdFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ3VzdG9tU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pU3RyaW5nRm9ybWF0LmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ0Zvcm1hdChmb3JtYXQsIGZuT3JSZWdleCwgX3BhcmFtcyA9IHt9KSB7XG4gICAgcmV0dXJuIGNvcmUuX3N0cmluZ0Zvcm1hdChab2RNaW5pQ3VzdG9tU3RyaW5nRm9ybWF0LCBmb3JtYXQsIGZuT3JSZWdleCwgX3BhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaU51bWJlciA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTnVtYmVyXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROdW1iZXIuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG51bWJlcihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbnVtYmVyKFpvZE1pbmlOdW1iZXIsIHBhcmFtcyk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaU51bWJlckZvcm1hdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTnVtYmVyRm9ybWF0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2ROdW1iZXJGb3JtYXQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlOdW1iZXIuaW5pdChpbnN0LCBkZWYpO1xufSk7XG4vLyBpbnRcbmV4cG9ydCBmdW5jdGlvbiBpbnQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ludChab2RNaW5pTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuLy8gZmxvYXQzMlxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0MzIocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2Zsb2F0MzIoWm9kTWluaU51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbi8vIGZsb2F0NjRcbmV4cG9ydCBmdW5jdGlvbiBmbG9hdDY0KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9mbG9hdDY0KFpvZE1pbmlOdW1iZXJGb3JtYXQsIHBhcmFtcyk7XG59XG4vLyBpbnQzMlxuZXhwb3J0IGZ1bmN0aW9uIGludDMyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9pbnQzMihab2RNaW5pTnVtYmVyRm9ybWF0LCBwYXJhbXMpO1xufVxuLy8gdWludDMyXG5leHBvcnQgZnVuY3Rpb24gdWludDMyKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl91aW50MzIoWm9kTWluaU51bWJlckZvcm1hdCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQm9vbGVhbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQm9vbGVhblwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQm9vbGVhbi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gYm9vbGVhbihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fYm9vbGVhbihab2RNaW5pQm9vbGVhbiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQmlnSW50ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlCaWdJbnRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEJpZ0ludC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gYmlnaW50KHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9iaWdpbnQoWm9kTWluaUJpZ0ludCwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQmlnSW50Rm9ybWF0ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlCaWdJbnRGb3JtYXRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEJpZ0ludEZvcm1hdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaUJpZ0ludC5pbml0KGluc3QsIGRlZik7XG59KTtcbi8vIGludDY0XG5leHBvcnQgZnVuY3Rpb24gaW50NjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX2ludDY0KFpvZE1pbmlCaWdJbnRGb3JtYXQsIHBhcmFtcyk7XG59XG4vLyB1aW50NjRcbmV4cG9ydCBmdW5jdGlvbiB1aW50NjQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VpbnQ2NChab2RNaW5pQmlnSW50Rm9ybWF0LCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlTeW1ib2wgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVN5bWJvbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU3ltYm9sLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzeW1ib2wocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3N5bWJvbChab2RNaW5pU3ltYm9sLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlVbmRlZmluZWQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVVuZGVmaW5lZFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kVW5kZWZpbmVkLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmZ1bmN0aW9uIF91bmRlZmluZWQocGFyYW1zKSB7XG4gICAgcmV0dXJuIGNvcmUuX3VuZGVmaW5lZChab2RNaW5pVW5kZWZpbmVkLCBwYXJhbXMpO1xufVxuZXhwb3J0IHsgX3VuZGVmaW5lZCBhcyB1bmRlZmluZWQgfTtcbmV4cG9ydCBjb25zdCBab2RNaW5pTnVsbCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTnVsbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTnVsbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfbnVsbChwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbnVsbChab2RNaW5pTnVsbCwgcGFyYW1zKTtcbn1cbmV4cG9ydCB7IF9udWxsIGFzIG51bGwgfTtcbmV4cG9ydCBjb25zdCBab2RNaW5pQW55ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlBbnlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEFueS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gYW55KCkge1xuICAgIHJldHVybiBjb3JlLl9hbnkoWm9kTWluaUFueSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVVua25vd24gPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVVua25vd25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVua25vd24uaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHVua25vd24oKSB7XG4gICAgcmV0dXJuIGNvcmUuX3Vua25vd24oWm9kTWluaVVua25vd24pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlOZXZlciA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTmV2ZXJcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE5ldmVyLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBuZXZlcihwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fbmV2ZXIoWm9kTWluaU5ldmVyLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlWb2lkID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlWb2lkXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RWb2lkLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmZ1bmN0aW9uIF92b2lkKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl92b2lkKFpvZE1pbmlWb2lkLCBwYXJhbXMpO1xufVxuZXhwb3J0IHsgX3ZvaWQgYXMgdm9pZCB9O1xuZXhwb3J0IGNvbnN0IFpvZE1pbmlEYXRlID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlEYXRlXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2REYXRlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBkYXRlKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9kYXRlKFpvZE1pbmlEYXRlLCBwYXJhbXMpO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlBcnJheSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pQXJyYXlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEFycmF5LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBhcnJheShlbGVtZW50LCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlBcnJheSh7XG4gICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIC5rZXlvZlxuZXhwb3J0IGZ1bmN0aW9uIGtleW9mKHNjaGVtYSkge1xuICAgIGNvbnN0IHNoYXBlID0gc2NoZW1hLl96b2QuZGVmLnNoYXBlO1xuICAgIHJldHVybiBsaXRlcmFsKE9iamVjdC5rZXlzKHNoYXBlKSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaU9iamVjdCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pT2JqZWN0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RPYmplY3QuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbiAgICB1dGlsLmRlZmluZUxhenkoaW5zdCwgXCJzaGFwZVwiLCAoKSA9PiBkZWYuc2hhcGUpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gb2JqZWN0KHNoYXBlLCBwYXJhbXMpIHtcbiAgICBjb25zdCBkZWYgPSB7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIGdldCBzaGFwZSgpIHtcbiAgICAgICAgICAgIHV0aWwuYXNzaWduUHJvcCh0aGlzLCBcInNoYXBlXCIsIHsgLi4uc2hhcGUgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaGFwZTtcbiAgICAgICAgfSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9O1xuICAgIHJldHVybiBuZXcgWm9kTWluaU9iamVjdChkZWYpO1xufVxuLy8gc3RyaWN0T2JqZWN0XG5leHBvcnQgZnVuY3Rpb24gc3RyaWN0T2JqZWN0KHNoYXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlPYmplY3Qoe1xuICAgICAgICB0eXBlOiBcIm9iamVjdFwiLFxuICAgICAgICAvLyBzaGFwZTogc2hhcGUgYXMgY29yZS4kWm9kTG9vc2VTaGFwZSxcbiAgICAgICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICAgICAgdXRpbC5hc3NpZ25Qcm9wKHRoaXMsIFwic2hhcGVcIiwgeyAuLi5zaGFwZSB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNoYXBlO1xuICAgICAgICB9LFxuICAgICAgICBjYXRjaGFsbDogbmV2ZXIoKSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbi8vIGxvb3NlT2JqZWN0XG5leHBvcnQgZnVuY3Rpb24gbG9vc2VPYmplY3Qoc2hhcGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaU9iamVjdCh7XG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICAgIC8vIHNoYXBlOiBzaGFwZSBhcyBjb3JlLiRab2RMb29zZVNoYXBlLFxuICAgICAgICBnZXQgc2hhcGUoKSB7XG4gICAgICAgICAgICB1dGlsLmFzc2lnblByb3AodGhpcywgXCJzaGFwZVwiLCB7IC4uLnNoYXBlIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hhcGU7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIGdldCBvcHRpb25hbCgpIHtcbiAgICAgICAgLy8gICByZXR1cm4gdXRpbC5vcHRpb25hbEtleXMoc2hhcGUpO1xuICAgICAgICAvLyB9LFxuICAgICAgICBjYXRjaGFsbDogdW5rbm93bigpLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuLy8gb2JqZWN0IG1ldGhvZHNcbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQoc2NoZW1hLCBzaGFwZSkge1xuICAgIHJldHVybiB1dGlsLmV4dGVuZChzY2hlbWEsIHNoYXBlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShzY2hlbWEsIHNoYXBlKSB7XG4gICAgcmV0dXJuIHV0aWwuZXh0ZW5kKHNjaGVtYSwgc2hhcGUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBpY2soc2NoZW1hLCBtYXNrKSB7XG4gICAgcmV0dXJuIHV0aWwucGljayhzY2hlbWEsIG1hc2spO1xufVxuLy8gLm9taXRcbmV4cG9ydCBmdW5jdGlvbiBvbWl0KHNjaGVtYSwgbWFzaykge1xuICAgIHJldHVybiB1dGlsLm9taXQoc2NoZW1hLCBtYXNrKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJ0aWFsKHNjaGVtYSwgbWFzaykge1xuICAgIHJldHVybiB1dGlsLnBhcnRpYWwoWm9kTWluaU9wdGlvbmFsLCBzY2hlbWEsIG1hc2spO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHJlcXVpcmVkKHNjaGVtYSwgbWFzaykge1xuICAgIHJldHVybiB1dGlsLnJlcXVpcmVkKFpvZE1pbmlOb25PcHRpb25hbCwgc2NoZW1hLCBtYXNrKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjYXRjaGFsbChpbnN0LCBjYXRjaGFsbCkge1xuICAgIHJldHVybiBpbnN0LmNsb25lKHsgLi4uaW5zdC5fem9kLmRlZiwgY2F0Y2hhbGw6IGNhdGNoYWxsIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlVbmlvbiA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFVuaW9uLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB1bmlvbihvcHRpb25zLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlVbmlvbih7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pRGlzY3JpbWluYXRlZFVuaW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlEaXNjcmltaW5hdGVkVW5pb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZERpc2NyaW1pbmF0ZWRVbmlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZGlzY3JpbWluYXRlZFVuaW9uKGRpc2NyaW1pbmF0b3IsIG9wdGlvbnMsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaURpc2NyaW1pbmF0ZWRVbmlvbih7XG4gICAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZGlzY3JpbWluYXRvcixcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pSW50ZXJzZWN0aW9uID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlJbnRlcnNlY3Rpb25cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEludGVyc2VjdGlvbi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gaW50ZXJzZWN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pSW50ZXJzZWN0aW9uKHtcbiAgICAgICAgdHlwZTogXCJpbnRlcnNlY3Rpb25cIixcbiAgICAgICAgbGVmdDogbGVmdCxcbiAgICAgICAgcmlnaHQ6IHJpZ2h0LFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlUdXBsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pVHVwbGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFR1cGxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiB0dXBsZShpdGVtcywgX3BhcmFtc09yUmVzdCwgX3BhcmFtcykge1xuICAgIGNvbnN0IGhhc1Jlc3QgPSBfcGFyYW1zT3JSZXN0IGluc3RhbmNlb2YgY29yZS4kWm9kVHlwZTtcbiAgICBjb25zdCBwYXJhbXMgPSBoYXNSZXN0ID8gX3BhcmFtcyA6IF9wYXJhbXNPclJlc3Q7XG4gICAgY29uc3QgcmVzdCA9IGhhc1Jlc3QgPyBfcGFyYW1zT3JSZXN0IDogbnVsbDtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlUdXBsZSh7XG4gICAgICAgIHR5cGU6IFwidHVwbGVcIixcbiAgICAgICAgaXRlbXM6IGl0ZW1zLFxuICAgICAgICByZXN0LFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlSZWNvcmQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVJlY29yZFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUmVjb3JkLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiByZWNvcmQoa2V5VHlwZSwgdmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlSZWNvcmQoe1xuICAgICAgICB0eXBlOiBcInJlY29yZFwiLFxuICAgICAgICBrZXlUeXBlLFxuICAgICAgICB2YWx1ZVR5cGU6IHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBwYXJ0aWFsUmVjb3JkKGtleVR5cGUsIHZhbHVlVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pUmVjb3JkKHtcbiAgICAgICAgdHlwZTogXCJyZWNvcmRcIixcbiAgICAgICAga2V5VHlwZTogdW5pb24oW2tleVR5cGUsIG5ldmVyKCldKSxcbiAgICAgICAgdmFsdWVUeXBlOiB2YWx1ZVR5cGUsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaU1hcCA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTWFwXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RNYXAuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG1hcChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaU1hcCh7XG4gICAgICAgIHR5cGU6IFwibWFwXCIsXG4gICAgICAgIGtleVR5cGU6IGtleVR5cGUsXG4gICAgICAgIHZhbHVlVHlwZTogdmFsdWVUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlTZXQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVNldFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kU2V0LmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzZXQodmFsdWVUeXBlLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlTZXQoe1xuICAgICAgICB0eXBlOiBcInNldFwiLFxuICAgICAgICB2YWx1ZVR5cGU6IHZhbHVlVHlwZSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pRW51bSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pRW51bVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRW51bS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5mdW5jdGlvbiBfZW51bSh2YWx1ZXMsIHBhcmFtcykge1xuICAgIGNvbnN0IGVudHJpZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlcykgPyBPYmplY3QuZnJvbUVudHJpZXModmFsdWVzLm1hcCgodikgPT4gW3YsIHZdKSkgOiB2YWx1ZXM7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pRW51bSh7XG4gICAgICAgIHR5cGU6IFwiZW51bVwiLFxuICAgICAgICBlbnRyaWVzLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IHsgX2VudW0gYXMgZW51bSB9O1xuLyoqIEBkZXByZWNhdGVkIFRoaXMgQVBJIGhhcyBiZWVuIG1lcmdlZCBpbnRvIGB6LmVudW0oKWAuIFVzZSBgei5lbnVtKClgIGluc3RlYWQuXG4gKlxuICogYGBgdHNcbiAqIGVudW0gQ29sb3JzIHsgcmVkLCBncmVlbiwgYmx1ZSB9XG4gKiB6LmVudW0oQ29sb3JzKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gbmF0aXZlRW51bShlbnRyaWVzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlFbnVtKHtcbiAgICAgICAgdHlwZTogXCJlbnVtXCIsXG4gICAgICAgIGVudHJpZXMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUxpdGVyYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUxpdGVyYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZExpdGVyYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIGxpdGVyYWwodmFsdWUsIHBhcmFtcykge1xuICAgIHJldHVybiBuZXcgWm9kTWluaUxpdGVyYWwoe1xuICAgICAgICB0eXBlOiBcImxpdGVyYWxcIixcbiAgICAgICAgdmFsdWVzOiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXSxcbiAgICAgICAgLi4udXRpbC5ub3JtYWxpemVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pRmlsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pRmlsZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kRmlsZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gZmlsZShwYXJhbXMpIHtcbiAgICByZXR1cm4gY29yZS5fZmlsZShab2RNaW5pRmlsZSwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVHJhbnNmb3JtID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlUcmFuc2Zvcm1cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFRyYW5zZm9ybS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtKGZuKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pVHJhbnNmb3JtKHtcbiAgICAgICAgdHlwZTogXCJ0cmFuc2Zvcm1cIixcbiAgICAgICAgdHJhbnNmb3JtOiBmbixcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pT3B0aW9uYWwgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaU9wdGlvbmFsXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RPcHRpb25hbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gb3B0aW9uYWwoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pT3B0aW9uYWwoe1xuICAgICAgICB0eXBlOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlOdWxsYWJsZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pTnVsbGFibGVcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE51bGxhYmxlLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBudWxsYWJsZShpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlOdWxsYWJsZSh7XG4gICAgICAgIHR5cGU6IFwibnVsbGFibGVcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG4vLyBudWxsaXNoXG5leHBvcnQgZnVuY3Rpb24gbnVsbGlzaChpbm5lclR5cGUpIHtcbiAgICByZXR1cm4gb3B0aW9uYWwobnVsbGFibGUoaW5uZXJUeXBlKSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaURlZmF1bHQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaURlZmF1bHRcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZERlZmF1bHQuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIF9kZWZhdWx0KGlubmVyVHlwZSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pRGVmYXVsdCh7XG4gICAgICAgIHR5cGU6IFwiZGVmYXVsdFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgZ2V0IGRlZmF1bHRWYWx1ZSgpIHtcbiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgZGVmYXVsdFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBkZWZhdWx0VmFsdWUoKSA6IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pUHJlZmF1bHQgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVByZWZhdWx0XCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RQcmVmYXVsdC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcHJlZmF1bHQoaW5uZXJUeXBlLCBkZWZhdWx0VmFsdWUpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlQcmVmYXVsdCh7XG4gICAgICAgIHR5cGU6IFwicHJlZmF1bHRcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgICAgIGdldCBkZWZhdWx0VmFsdWUoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIGRlZmF1bHRWYWx1ZSA9PT0gXCJmdW5jdGlvblwiID8gZGVmYXVsdFZhbHVlKCkgOiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH0sXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaU5vbk9wdGlvbmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlOb25PcHRpb25hbFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kTm9uT3B0aW9uYWwuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIG5vbm9wdGlvbmFsKGlubmVyVHlwZSwgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pTm9uT3B0aW9uYWwoe1xuICAgICAgICB0eXBlOiBcIm5vbm9wdGlvbmFsXCIsXG4gICAgICAgIGlubmVyVHlwZTogaW5uZXJUeXBlLFxuICAgICAgICAuLi51dGlsLm5vcm1hbGl6ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufVxuZXhwb3J0IGNvbnN0IFpvZE1pbmlTdWNjZXNzID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlTdWNjZXNzXCIsIChpbnN0LCBkZWYpID0+IHtcbiAgICBjb3JlLiRab2RTdWNjZXNzLmluaXQoaW5zdCwgZGVmKTtcbiAgICBab2RNaW5pVHlwZS5pbml0KGluc3QsIGRlZik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBzdWNjZXNzKGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVN1Y2Nlc3Moe1xuICAgICAgICB0eXBlOiBcInN1Y2Nlc3NcIixcbiAgICAgICAgaW5uZXJUeXBlOiBpbm5lclR5cGUsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUNhdGNoID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlDYXRjaFwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kQ2F0Y2guaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZnVuY3Rpb24gX2NhdGNoKGlubmVyVHlwZSwgY2F0Y2hWYWx1ZSkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaUNhdGNoKHtcbiAgICAgICAgdHlwZTogXCJjYXRjaFwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICAgICAgY2F0Y2hWYWx1ZTogKHR5cGVvZiBjYXRjaFZhbHVlID09PSBcImZ1bmN0aW9uXCIgPyBjYXRjaFZhbHVlIDogKCkgPT4gY2F0Y2hWYWx1ZSksXG4gICAgfSk7XG59XG5leHBvcnQgeyBfY2F0Y2ggYXMgY2F0Y2ggfTtcbmV4cG9ydCBjb25zdCBab2RNaW5pTmFOID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlOYU5cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZE5hTi5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gbmFuKHBhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9uYW4oWm9kTWluaU5hTiwgcGFyYW1zKTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pUGlwZSA9IC8qQF9fUFVSRV9fKi8gY29yZS4kY29uc3RydWN0b3IoXCJab2RNaW5pUGlwZVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUGlwZS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcGlwZShpbl8sIG91dCkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVBpcGUoe1xuICAgICAgICB0eXBlOiBcInBpcGVcIixcbiAgICAgICAgaW46IGluXyxcbiAgICAgICAgb3V0OiBvdXQsXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaVJlYWRvbmx5ID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlSZWFkb25seVwiLCAoaW5zdCwgZGVmKSA9PiB7XG4gICAgY29yZS4kWm9kUmVhZG9ubHkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHJlYWRvbmx5KGlubmVyVHlwZSkge1xuICAgIHJldHVybiBuZXcgWm9kTWluaVJlYWRvbmx5KHtcbiAgICAgICAgdHlwZTogXCJyZWFkb25seVwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pVGVtcGxhdGVMaXRlcmFsID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlUZW1wbGF0ZUxpdGVyYWxcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFRlbXBsYXRlTGl0ZXJhbC5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGVMaXRlcmFsKHBhcnRzLCBwYXJhbXMpIHtcbiAgICByZXR1cm4gbmV3IFpvZE1pbmlUZW1wbGF0ZUxpdGVyYWwoe1xuICAgICAgICB0eXBlOiBcInRlbXBsYXRlX2xpdGVyYWxcIixcbiAgICAgICAgcGFydHMsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59XG5leHBvcnQgY29uc3QgWm9kTWluaUxhenkgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaUxhenlcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZExhenkuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuLy8gZXhwb3J0IGZ1bmN0aW9uIGxhenk8VCBleHRlbmRzIG9iamVjdD4oZ2V0dGVyOiAoKSA9PiBUKTogVCB7XG4vLyAgIHJldHVybiB1dGlsLmNyZWF0ZVRyYW5zcGFyZW50UHJveHk8VD4oZ2V0dGVyKTtcbi8vIH1cbmZ1bmN0aW9uIF9sYXp5KGdldHRlcikge1xuICAgIHJldHVybiBuZXcgWm9kTWluaUxhenkoe1xuICAgICAgICB0eXBlOiBcImxhenlcIixcbiAgICAgICAgZ2V0dGVyOiBnZXR0ZXIsXG4gICAgfSk7XG59XG5leHBvcnQgeyBfbGF6eSBhcyBsYXp5IH07XG5leHBvcnQgY29uc3QgWm9kTWluaVByb21pc2UgPSAvKkBfX1BVUkVfXyovIGNvcmUuJGNvbnN0cnVjdG9yKFwiWm9kTWluaVByb21pc2VcIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZFByb21pc2UuaW5pdChpbnN0LCBkZWYpO1xuICAgIFpvZE1pbmlUeXBlLmluaXQoaW5zdCwgZGVmKTtcbn0pO1xuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2UoaW5uZXJUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBab2RNaW5pUHJvbWlzZSh7XG4gICAgICAgIHR5cGU6IFwicHJvbWlzZVwiLFxuICAgICAgICBpbm5lclR5cGU6IGlubmVyVHlwZSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjb25zdCBab2RNaW5pQ3VzdG9tID0gLypAX19QVVJFX18qLyBjb3JlLiRjb25zdHJ1Y3RvcihcIlpvZE1pbmlDdXN0b21cIiwgKGluc3QsIGRlZikgPT4ge1xuICAgIGNvcmUuJFpvZEN1c3RvbS5pbml0KGluc3QsIGRlZik7XG4gICAgWm9kTWluaVR5cGUuaW5pdChpbnN0LCBkZWYpO1xufSk7XG4vLyBjdXN0b20gY2hlY2tzXG5leHBvcnQgZnVuY3Rpb24gY2hlY2soZm4sIHBhcmFtcykge1xuICAgIGNvbnN0IGNoID0gbmV3IGNvcmUuJFpvZENoZWNrKHtcbiAgICAgICAgY2hlY2s6IFwiY3VzdG9tXCIsXG4gICAgICAgIC4uLnV0aWwubm9ybWFsaXplUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG4gICAgY2guX3pvZC5jaGVjayA9IGZuO1xuICAgIHJldHVybiBjaDtcbn1cbi8vIFpvZEN1c3RvbVxuLy8gY3VzdG9tIHNjaGVtYVxuZXhwb3J0IGZ1bmN0aW9uIGN1c3RvbShmbiwgX3BhcmFtcykge1xuICAgIHJldHVybiBjb3JlLl9jdXN0b20oWm9kTWluaUN1c3RvbSwgZm4gPz8gKCgpID0+IHRydWUpLCBfcGFyYW1zKTtcbn1cbi8vIHJlZmluZVxuZXhwb3J0IGZ1bmN0aW9uIHJlZmluZShmbiwgX3BhcmFtcyA9IHt9KSB7XG4gICAgcmV0dXJuIGNvcmUuX3JlZmluZShab2RNaW5pQ3VzdG9tLCBmbiwgX3BhcmFtcyk7XG59XG4vLyBpbnN0YW5jZW9mXG5jbGFzcyBDbGFzcyB7XG4gICAgY29uc3RydWN0b3IoLi4uX2FyZ3MpIHsgfVxufVxuZnVuY3Rpb24gX2luc3RhbmNlb2YoY2xzLCBwYXJhbXMgPSB7XG4gICAgZXJyb3I6IGBJbnB1dCBub3QgaW5zdGFuY2Ugb2YgJHtjbHMubmFtZX1gLFxufSkge1xuICAgIGNvbnN0IGluc3QgPSBjdXN0b20oKGRhdGEpID0+IGRhdGEgaW5zdGFuY2VvZiBjbHMsIHBhcmFtcyk7XG4gICAgaW5zdC5fem9kLmJhZy5DbGFzcyA9IGNscztcbiAgICByZXR1cm4gaW5zdDtcbn1cbmV4cG9ydCB7IF9pbnN0YW5jZW9mIGFzIGluc3RhbmNlb2YgfTtcbi8vIHN0cmluZ2Jvb2xcbmV4cG9ydCBjb25zdCBzdHJpbmdib29sID0gKC4uLmFyZ3MpID0+IGNvcmUuX3N0cmluZ2Jvb2woe1xuICAgIFBpcGU6IFpvZE1pbmlQaXBlLFxuICAgIEJvb2xlYW46IFpvZE1pbmlCb29sZWFuLFxuICAgIFN0cmluZzogWm9kTWluaVN0cmluZyxcbiAgICBUcmFuc2Zvcm06IFpvZE1pbmlUcmFuc2Zvcm0sXG59LCAuLi5hcmdzKTtcbmV4cG9ydCBmdW5jdGlvbiBqc29uKCkge1xuICAgIGNvbnN0IGpzb25TY2hlbWEgPSBfbGF6eSgoKSA9PiB7XG4gICAgICAgIHJldHVybiB1bmlvbihbc3RyaW5nKCksIG51bWJlcigpLCBib29sZWFuKCksIF9udWxsKCksIGFycmF5KGpzb25TY2hlbWEpLCByZWNvcmQoc3RyaW5nKCksIGpzb25TY2hlbWEpXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGpzb25TY2hlbWE7XG59XG4iXSwibmFtZXMiOlsiY29yZSIsInV0aWwiLCJwYXJzZSIsIlpvZE1pbmlUeXBlIiwiJGNvbnN0cnVjdG9yIiwiaW5zdCIsImRlZiIsIl96b2QiLCJFcnJvciIsIiRab2RUeXBlIiwiaW5pdCIsImRhdGEiLCJwYXJhbXMiLCJjYWxsZWUiLCJzYWZlUGFyc2UiLCJwYXJzZUFzeW5jIiwic2FmZVBhcnNlQXN5bmMiLCJjaGVjayIsImNoZWNrcyIsImNsb25lIiwibWFwIiwiY2giLCJvbmF0dGFjaCIsIl9kZWYiLCJicmFuZCIsInJlZ2lzdGVyIiwicmVnIiwibWV0YSIsImFkZCIsIlpvZE1pbmlTdHJpbmciLCIkWm9kU3RyaW5nIiwic3RyaW5nIiwiX3N0cmluZyIsIlpvZE1pbmlTdHJpbmdGb3JtYXQiLCIkWm9kU3RyaW5nRm9ybWF0IiwiWm9kTWluaUVtYWlsIiwiJFpvZEVtYWlsIiwiZW1haWwiLCJfZW1haWwiLCJab2RNaW5pR1VJRCIsIiRab2RHVUlEIiwiZ3VpZCIsIl9ndWlkIiwiWm9kTWluaVVVSUQiLCIkWm9kVVVJRCIsInV1aWQiLCJfdXVpZCIsInV1aWR2NCIsIl91dWlkdjQiLCJ1dWlkdjYiLCJfdXVpZHY2IiwidXVpZHY3IiwiX3V1aWR2NyIsIlpvZE1pbmlVUkwiLCIkWm9kVVJMIiwidXJsIiwiX3VybCIsIlpvZE1pbmlFbW9qaSIsIiRab2RFbW9qaSIsImVtb2ppIiwiX2Vtb2ppIiwiWm9kTWluaU5hbm9JRCIsIiRab2ROYW5vSUQiLCJuYW5vaWQiLCJfbmFub2lkIiwiWm9kTWluaUNVSUQiLCIkWm9kQ1VJRCIsImN1aWQiLCJfY3VpZCIsIlpvZE1pbmlDVUlEMiIsIiRab2RDVUlEMiIsImN1aWQyIiwiX2N1aWQyIiwiWm9kTWluaVVMSUQiLCIkWm9kVUxJRCIsInVsaWQiLCJfdWxpZCIsIlpvZE1pbmlYSUQiLCIkWm9kWElEIiwieGlkIiwiX3hpZCIsIlpvZE1pbmlLU1VJRCIsIiRab2RLU1VJRCIsImtzdWlkIiwiX2tzdWlkIiwiWm9kTWluaUlQdjQiLCIkWm9kSVB2NCIsImlwdjQiLCJfaXB2NCIsIlpvZE1pbmlJUHY2IiwiJFpvZElQdjYiLCJpcHY2IiwiX2lwdjYiLCJab2RNaW5pQ0lEUnY0IiwiJFpvZENJRFJ2NCIsImNpZHJ2NCIsIl9jaWRydjQiLCJab2RNaW5pQ0lEUnY2IiwiJFpvZENJRFJ2NiIsImNpZHJ2NiIsIl9jaWRydjYiLCJab2RNaW5pQmFzZTY0IiwiJFpvZEJhc2U2NCIsImJhc2U2NCIsIl9iYXNlNjQiLCJab2RNaW5pQmFzZTY0VVJMIiwiJFpvZEJhc2U2NFVSTCIsImJhc2U2NHVybCIsIl9iYXNlNjR1cmwiLCJab2RNaW5pRTE2NCIsIiRab2RFMTY0IiwiZTE2NCIsIl9lMTY0IiwiWm9kTWluaUpXVCIsIiRab2RKV1QiLCJqd3QiLCJfand0IiwiWm9kTWluaUN1c3RvbVN0cmluZ0Zvcm1hdCIsIiRab2RDdXN0b21TdHJpbmdGb3JtYXQiLCJzdHJpbmdGb3JtYXQiLCJmb3JtYXQiLCJmbk9yUmVnZXgiLCJfcGFyYW1zIiwiX3N0cmluZ0Zvcm1hdCIsIlpvZE1pbmlOdW1iZXIiLCIkWm9kTnVtYmVyIiwibnVtYmVyIiwiX251bWJlciIsIlpvZE1pbmlOdW1iZXJGb3JtYXQiLCIkWm9kTnVtYmVyRm9ybWF0IiwiaW50IiwiX2ludCIsImZsb2F0MzIiLCJfZmxvYXQzMiIsImZsb2F0NjQiLCJfZmxvYXQ2NCIsImludDMyIiwiX2ludDMyIiwidWludDMyIiwiX3VpbnQzMiIsIlpvZE1pbmlCb29sZWFuIiwiJFpvZEJvb2xlYW4iLCJib29sZWFuIiwiX2Jvb2xlYW4iLCJab2RNaW5pQmlnSW50IiwiJFpvZEJpZ0ludCIsImJpZ2ludCIsIl9iaWdpbnQiLCJab2RNaW5pQmlnSW50Rm9ybWF0IiwiJFpvZEJpZ0ludEZvcm1hdCIsImludDY0IiwiX2ludDY0IiwidWludDY0IiwiX3VpbnQ2NCIsIlpvZE1pbmlTeW1ib2wiLCIkWm9kU3ltYm9sIiwic3ltYm9sIiwiX3N5bWJvbCIsIlpvZE1pbmlVbmRlZmluZWQiLCIkWm9kVW5kZWZpbmVkIiwiX3VuZGVmaW5lZCIsInVuZGVmaW5lZCIsIlpvZE1pbmlOdWxsIiwiJFpvZE51bGwiLCJfbnVsbCIsIm51bGwiLCJab2RNaW5pQW55IiwiJFpvZEFueSIsImFueSIsIl9hbnkiLCJab2RNaW5pVW5rbm93biIsIiRab2RVbmtub3duIiwidW5rbm93biIsIl91bmtub3duIiwiWm9kTWluaU5ldmVyIiwiJFpvZE5ldmVyIiwibmV2ZXIiLCJfbmV2ZXIiLCJab2RNaW5pVm9pZCIsIiRab2RWb2lkIiwiX3ZvaWQiLCJ2b2lkIiwiWm9kTWluaURhdGUiLCIkWm9kRGF0ZSIsImRhdGUiLCJfZGF0ZSIsIlpvZE1pbmlBcnJheSIsIiRab2RBcnJheSIsImFycmF5IiwiZWxlbWVudCIsInR5cGUiLCJub3JtYWxpemVQYXJhbXMiLCJrZXlvZiIsInNjaGVtYSIsInNoYXBlIiwibGl0ZXJhbCIsIk9iamVjdCIsImtleXMiLCJab2RNaW5pT2JqZWN0IiwiJFpvZE9iamVjdCIsImRlZmluZUxhenkiLCJvYmplY3QiLCJhc3NpZ25Qcm9wIiwic3RyaWN0T2JqZWN0IiwiY2F0Y2hhbGwiLCJsb29zZU9iamVjdCIsImV4dGVuZCIsIm1lcmdlIiwicGljayIsIm1hc2siLCJvbWl0IiwicGFydGlhbCIsIlpvZE1pbmlPcHRpb25hbCIsInJlcXVpcmVkIiwiWm9kTWluaU5vbk9wdGlvbmFsIiwiWm9kTWluaVVuaW9uIiwiJFpvZFVuaW9uIiwidW5pb24iLCJvcHRpb25zIiwiWm9kTWluaURpc2NyaW1pbmF0ZWRVbmlvbiIsIiRab2REaXNjcmltaW5hdGVkVW5pb24iLCJkaXNjcmltaW5hdGVkVW5pb24iLCJkaXNjcmltaW5hdG9yIiwiWm9kTWluaUludGVyc2VjdGlvbiIsIiRab2RJbnRlcnNlY3Rpb24iLCJpbnRlcnNlY3Rpb24iLCJsZWZ0IiwicmlnaHQiLCJab2RNaW5pVHVwbGUiLCIkWm9kVHVwbGUiLCJ0dXBsZSIsIml0ZW1zIiwiX3BhcmFtc09yUmVzdCIsImhhc1Jlc3QiLCJyZXN0IiwiWm9kTWluaVJlY29yZCIsIiRab2RSZWNvcmQiLCJyZWNvcmQiLCJrZXlUeXBlIiwidmFsdWVUeXBlIiwicGFydGlhbFJlY29yZCIsIlpvZE1pbmlNYXAiLCIkWm9kTWFwIiwiWm9kTWluaVNldCIsIiRab2RTZXQiLCJzZXQiLCJab2RNaW5pRW51bSIsIiRab2RFbnVtIiwiX2VudW0iLCJ2YWx1ZXMiLCJlbnRyaWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiZnJvbUVudHJpZXMiLCJ2IiwiZW51bSIsIm5hdGl2ZUVudW0iLCJab2RNaW5pTGl0ZXJhbCIsIiRab2RMaXRlcmFsIiwidmFsdWUiLCJab2RNaW5pRmlsZSIsIiRab2RGaWxlIiwiZmlsZSIsIl9maWxlIiwiWm9kTWluaVRyYW5zZm9ybSIsIiRab2RUcmFuc2Zvcm0iLCJ0cmFuc2Zvcm0iLCJmbiIsIiRab2RPcHRpb25hbCIsIm9wdGlvbmFsIiwiaW5uZXJUeXBlIiwiWm9kTWluaU51bGxhYmxlIiwiJFpvZE51bGxhYmxlIiwibnVsbGFibGUiLCJudWxsaXNoIiwiWm9kTWluaURlZmF1bHQiLCIkWm9kRGVmYXVsdCIsIl9kZWZhdWx0IiwiZGVmYXVsdFZhbHVlIiwiWm9kTWluaVByZWZhdWx0IiwiJFpvZFByZWZhdWx0IiwicHJlZmF1bHQiLCIkWm9kTm9uT3B0aW9uYWwiLCJub25vcHRpb25hbCIsIlpvZE1pbmlTdWNjZXNzIiwiJFpvZFN1Y2Nlc3MiLCJzdWNjZXNzIiwiWm9kTWluaUNhdGNoIiwiJFpvZENhdGNoIiwiX2NhdGNoIiwiY2F0Y2hWYWx1ZSIsImNhdGNoIiwiWm9kTWluaU5hTiIsIiRab2ROYU4iLCJuYW4iLCJfbmFuIiwiWm9kTWluaVBpcGUiLCIkWm9kUGlwZSIsInBpcGUiLCJpbl8iLCJvdXQiLCJpbiIsIlpvZE1pbmlSZWFkb25seSIsIiRab2RSZWFkb25seSIsInJlYWRvbmx5IiwiWm9kTWluaVRlbXBsYXRlTGl0ZXJhbCIsIiRab2RUZW1wbGF0ZUxpdGVyYWwiLCJ0ZW1wbGF0ZUxpdGVyYWwiLCJwYXJ0cyIsIlpvZE1pbmlMYXp5IiwiJFpvZExhenkiLCJfbGF6eSIsImdldHRlciIsImxhenkiLCJab2RNaW5pUHJvbWlzZSIsIiRab2RQcm9taXNlIiwicHJvbWlzZSIsIlpvZE1pbmlDdXN0b20iLCIkWm9kQ3VzdG9tIiwiJFpvZENoZWNrIiwiY3VzdG9tIiwiX2N1c3RvbSIsInJlZmluZSIsIl9yZWZpbmUiLCJDbGFzcyIsIl9hcmdzIiwiX2luc3RhbmNlb2YiLCJjbHMiLCJlcnJvciIsIm5hbWUiLCJiYWciLCJpbnN0YW5jZW9mIiwic3RyaW5nYm9vbCIsImFyZ3MiLCJfc3RyaW5nYm9vbCIsIlBpcGUiLCJCb29sZWFuIiwiU3RyaW5nIiwiVHJhbnNmb3JtIiwianNvbiIsImpzb25TY2hlbWEiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v4/mini/schemas.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js":
|
||
/*!************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js ***!
|
||
\************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodError: () => (/* binding */ ZodError),\n/* harmony export */ ZodIssueCode: () => (/* binding */ ZodIssueCode),\n/* harmony export */ quotelessJson: () => (/* binding */ quotelessJson)\n/* harmony export */ });\n/* harmony import */ var _helpers_util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/util.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js\");\n\nconst ZodIssueCode = _helpers_util_js__WEBPACK_IMPORTED_MODULE_0__.util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\"\n]);\nconst quotelessJson = (obj)=>{\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues){\n super();\n this.issues = [];\n this.addIssue = (sub)=>{\n this.issues = [\n ...this.issues,\n sub\n ];\n };\n this.addIssues = (subs = [])=>{\n this.issues = [\n ...this.issues,\n ...subs\n ];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n } else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper || function(issue) {\n return issue.message;\n };\n const fieldErrors = {\n _errors: []\n };\n const processError = (error)=>{\n for (const issue of error.issues){\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n } else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n } else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n } else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n } else {\n let curr = fieldErrors;\n let i = 0;\n while(i < issue.path.length){\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || {\n _errors: []\n };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n } else {\n curr[el] = curr[el] || {\n _errors: []\n };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, _helpers_util_js__WEBPACK_IMPORTED_MODULE_0__.util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue)=>issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues){\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n } else {\n formErrors.push(mapper(sub));\n }\n }\n return {\n formErrors,\n fieldErrors\n };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues)=>{\n const error = new ZodError(issues);\n return error;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9ab2RFcnJvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXlDO0FBQ2xDLE1BQU1DLGVBQWVELGtEQUFJQSxDQUFDRSxXQUFXLENBQUM7SUFDekM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDSCxFQUFFO0FBQ0ksTUFBTUMsZ0JBQWdCLENBQUNDO0lBQzFCLE1BQU1DLE9BQU9DLEtBQUtDLFNBQVMsQ0FBQ0gsS0FBSyxNQUFNO0lBQ3ZDLE9BQU9DLEtBQUtHLE9BQU8sQ0FBQyxlQUFlO0FBQ3ZDLEVBQUU7QUFDSyxNQUFNQyxpQkFBaUJDO0lBQzFCLElBQUlDLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQ0MsTUFBTTtJQUN0QjtJQUNBLFlBQVlBLE1BQU0sQ0FBRTtRQUNoQixLQUFLO1FBQ0wsSUFBSSxDQUFDQSxNQUFNLEdBQUcsRUFBRTtRQUNoQixJQUFJLENBQUNDLFFBQVEsR0FBRyxDQUFDQztZQUNiLElBQUksQ0FBQ0YsTUFBTSxHQUFHO21CQUFJLElBQUksQ0FBQ0EsTUFBTTtnQkFBRUU7YUFBSTtRQUN2QztRQUNBLElBQUksQ0FBQ0MsU0FBUyxHQUFHLENBQUNDLE9BQU8sRUFBRTtZQUN2QixJQUFJLENBQUNKLE1BQU0sR0FBRzttQkFBSSxJQUFJLENBQUNBLE1BQU07bUJBQUtJO2FBQUs7UUFDM0M7UUFDQSxNQUFNQyxjQUFjLFdBQVdDLFNBQVM7UUFDeEMsSUFBSUMsT0FBT0MsY0FBYyxFQUFFO1lBQ3ZCLG1DQUFtQztZQUNuQ0QsT0FBT0MsY0FBYyxDQUFDLElBQUksRUFBRUg7UUFDaEMsT0FDSztZQUNELElBQUksQ0FBQ0ksU0FBUyxHQUFHSjtRQUNyQjtRQUNBLElBQUksQ0FBQ0ssSUFBSSxHQUFHO1FBQ1osSUFBSSxDQUFDVixNQUFNLEdBQUdB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QUFDZCxPQUFPWDtZQUMzQjtRQUNKO1FBQ0EsT0FBTztZQUFFb0M7WUFBWXRCO1FBQVk7SUFDckM7SUFDQSxJQUFJc0IsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDRCxPQUFPO0lBQ3ZCO0FBQ0o7QUFDQXhDLFNBQVMyQyxNQUFNLEdBQUcsQ0FBQ3hDO0lBQ2YsTUFBTW1CLFFBQVEsSUFBSXRCLFNBQVNHO0lBQzNCLE9BQU9tQjtBQUNYIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvWm9kRXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbCB9IGZyb20gXCIuL2hlbHBlcnMvdXRpbC5qc1wiO1xuZXhwb3J0IGNvbnN0IFpvZElzc3VlQ29kZSA9IHV0aWwuYXJyYXlUb0VudW0oW1xuICAgIFwiaW52YWxpZF90eXBlXCIsXG4gICAgXCJpbnZhbGlkX2xpdGVyYWxcIixcbiAgICBcImN1c3RvbVwiLFxuICAgIFwiaW52YWxpZF91bmlvblwiLFxuICAgIFwiaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yXCIsXG4gICAgXCJpbnZhbGlkX2VudW1fdmFsdWVcIixcbiAgICBcInVucmVjb2duaXplZF9rZXlzXCIsXG4gICAgXCJpbnZhbGlkX2FyZ3VtZW50c1wiLFxuICAgIFwiaW52YWxpZF9yZXR1cm5fdHlwZVwiLFxuICAgIFwiaW52YWxpZF9kYXRlXCIsXG4gICAgXCJpbnZhbGlkX3N0cmluZ1wiLFxuICAgIFwidG9vX3NtYWxsXCIsXG4gICAgXCJ0b29fYmlnXCIsXG4gICAgXCJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlc1wiLFxuICAgIFwibm90X211bHRpcGxlX29mXCIsXG4gICAgXCJub3RfZmluaXRlXCIsXG5dKTtcbmV4cG9ydCBjb25zdCBxdW90ZWxlc3NKc29uID0gKG9iaikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpO1xuICAgIHJldHVybiBqc29uLnJlcGxhY2UoL1wiKFteXCJdKylcIjovZywgXCIkMTpcIik7XG59O1xuZXhwb3J0IGNsYXNzIFpvZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGdldCBlcnJvcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzc3VlcztcbiAgICB9XG4gICAgY29uc3RydWN0b3IoaXNzdWVzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaXNzdWVzID0gW107XG4gICAgICAgIHRoaXMuYWRkSXNzdWUgPSAoc3ViKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzc3VlcyA9IFsuLi50aGlzLmlzc3Vlcywgc3ViXTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5hZGRJc3N1ZXMgPSAoc3VicyA9IFtdKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzc3VlcyA9IFsuLi50aGlzLmlzc3VlcywgLi4uc3Vic107XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFjdHVhbFByb3RvID0gbmV3LnRhcmdldC5wcm90b3R5cGU7XG4gICAgICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBiYW4vYmFuXG4gICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgYWN0dWFsUHJvdG8pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fX3Byb3RvX18gPSBhY3R1YWxQcm90bztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm5hbWUgPSBcIlpvZEVycm9yXCI7XG4gICAgICAgIHRoaXMuaXNzdWVzID0gaXNzdWVzO1xuICAgIH1cbiAgICBmb3JtYXQoX21hcHBlcikge1xuICAgICAgICBjb25zdCBtYXBwZXIgPSBfbWFwcGVyIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoaXNzdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNzdWUubWVzc2FnZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0geyBfZXJyb3JzOiBbXSB9O1xuICAgICAgICBjb25zdCBwcm9jZXNzRXJyb3IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXNzdWUgb2YgZXJyb3IuaXNzdWVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzc3VlLmNvZGUgPT09IFwiaW52YWxpZF91bmlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlzc3VlLnVuaW9uRXJyb3JzLm1hcChwcm9jZXNzRXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS5jb2RlID09PSBcImludmFsaWRfcmV0dXJuX3R5cGVcIikge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRXJyb3IoaXNzdWUucmV0dXJuVHlwZUVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUuY29kZSA9PT0gXCJpbnZhbGlkX2FyZ3VtZW50c1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3NFcnJvcihpc3N1ZS5hcmd1bWVudHNFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnBhdGgubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkRXJyb3JzLl9lcnJvcnMucHVzaChtYXBwZXIoaXNzdWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjdXJyID0gZmllbGRFcnJvcnM7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBpc3N1ZS5wYXRoLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWwgPSBpc3N1ZS5wYXRoW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVybWluYWwgPSBpID09PSBpc3N1ZS5wYXRoLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlcm1pbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHR5cGVvZiBlbCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSBlbHNlIGlmICh0eXBlb2YgZWwgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnN0IGVycm9yQXJyYXk6IGFueSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgZXJyb3JBcnJheS5fZXJyb3JzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICBjdXJyW2VsXSA9IGN1cnJbZWxdIHx8IGVycm9yQXJyYXk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0gPSBjdXJyW2VsXSB8fCB7IF9lcnJvcnM6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycltlbF0uX2Vycm9ycy5wdXNoKG1hcHBlcihpc3N1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY3VyciA9IGN1cnJbZWxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBwcm9jZXNzRXJyb3IodGhpcyk7XG4gICAgICAgIHJldHVybiBmaWVsZEVycm9ycztcbiAgICB9XG4gICAgc3RhdGljIGFzc2VydCh2YWx1ZSkge1xuICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIFpvZEVycm9yKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgYSBab2RFcnJvcjogJHt2YWx1ZX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZTtcbiAgICB9XG4gICAgZ2V0IG1lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmlzc3VlcywgdXRpbC5qc29uU3RyaW5naWZ5UmVwbGFjZXIsIDIpO1xuICAgIH1cbiAgICBnZXQgaXNFbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNzdWVzLmxlbmd0aCA9PT0gMDtcbiAgICB9XG4gICAgZmxhdHRlbihtYXBwZXIgPSAoaXNzdWUpID0+IGlzc3VlLm1lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSB7fTtcbiAgICAgICAgY29uc3QgZm9ybUVycm9ycyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHN1YiBvZiB0aGlzLmlzc3Vlcykge1xuICAgICAgICAgICAgaWYgKHN1Yi5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEVsID0gc3ViLnBhdGhbMF07XG4gICAgICAgICAgICAgICAgZmllbGRFcnJvcnNbZmlyc3RFbF0gPSBmaWVsZEVycm9yc1tmaXJzdEVsXSB8fCBbXTtcbiAgICAgICAgICAgICAgICBmaWVsZEVycm9yc1tmaXJzdEVsXS5wdXNoKG1hcHBlcihzdWIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGZvcm1FcnJvcnMucHVzaChtYXBwZXIoc3ViKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgZm9ybUVycm9ycywgZmllbGRFcnJvcnMgfTtcbiAgICB9XG4gICAgZ2V0IGZvcm1FcnJvcnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZsYXR0ZW4oKTtcbiAgICB9XG59XG5ab2RFcnJvci5jcmVhdGUgPSAoaXNzdWVzKSA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgWm9kRXJyb3IoaXNzdWVzKTtcbiAgICByZXR1cm4gZXJyb3I7XG59O1xuIl0sIm5hbWVzIjpbInV0aWwiLCJab2RJc3N1ZUNvZGUiLCJhcnJheVRvRW51bSIsInF1b3RlbGVzc0pzb24iLCJvYmoiLCJqc29uIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlcGxhY2UiLCJab2RFcnJvciIsIkVycm9yIiwiZXJyb3JzIiwiaXNzdWVzIiwiYWRkSXNzdWUiLCJzdWIiLCJhZGRJc3N1ZXMiLCJzdWJzIiwiYWN0dWFsUHJvdG8iLCJwcm90b3R5cGUiLCJPYmplY3QiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIm5hbWUiLCJmb3JtYXQiLCJfbWFwcGVyIiwibWFwcGVyIiwiaXNzdWUiLCJtZXNzYWdlIiwiZmllbGRFcnJvcnMiLCJfZXJyb3JzIiwicHJvY2Vzc0Vycm9yIiwiZXJyb3IiLCJjb2RlIiwidW5pb25FcnJvcnMiLCJtYXAiLCJyZXR1cm5UeXBlRXJyb3IiLCJhcmd1bWVudHNFcnJvciIsInBhdGgiLCJsZW5ndGgiLCJwdXNoIiwiY3VyciIsImkiLCJlbCIsInRlcm1pbmFsIiwiYXNzZXJ0IiwidmFsdWUiLCJ0b1N0cmluZyIsImpzb25TdHJpbmdpZnlSZXBsYWNlciIsImlzRW1wdHkiLCJmbGF0dGVuIiwiZm9ybUVycm9ycyIsImZpcnN0RWwiLCJjcmVhdGUiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js":
|
||
/*!**********************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js ***!
|
||
\**********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ defaultErrorMap: () => (/* reexport safe */ _locales_en_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"]),\n/* harmony export */ getErrorMap: () => (/* binding */ getErrorMap),\n/* harmony export */ setErrorMap: () => (/* binding */ setErrorMap)\n/* harmony export */ });\n/* harmony import */ var _locales_en_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./locales/en.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js\");\n\nlet overrideErrorMap = _locales_en_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9lcnJvcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUE4QztBQUM5QyxJQUFJQyxtQkFBbUJELHNEQUFlQTtBQUNYO0FBQ3BCLFNBQVNFLFlBQVlDLEdBQUc7SUFDM0JGLG1CQUFtQkU7QUFDdkI7QUFDTyxTQUFTQztJQUNaLE9BQU9IO0FBQ1giLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9lcnJvcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRlZmF1bHRFcnJvck1hcCBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzXCI7XG5sZXQgb3ZlcnJpZGVFcnJvck1hcCA9IGRlZmF1bHRFcnJvck1hcDtcbmV4cG9ydCB7IGRlZmF1bHRFcnJvck1hcCB9O1xuZXhwb3J0IGZ1bmN0aW9uIHNldEVycm9yTWFwKG1hcCkge1xuICAgIG92ZXJyaWRlRXJyb3JNYXAgPSBtYXA7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JNYXAoKSB7XG4gICAgcmV0dXJuIG92ZXJyaWRlRXJyb3JNYXA7XG59XG4iXSwibmFtZXMiOlsiZGVmYXVsdEVycm9yTWFwIiwib3ZlcnJpZGVFcnJvck1hcCIsInNldEVycm9yTWFwIiwibWFwIiwiZ2V0RXJyb3JNYXAiXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ errorUtil: () => (/* binding */ errorUtil)\n/* harmony export */ });\nvar errorUtil;\n(function(errorUtil) {\n errorUtil.errToObj = (message)=>typeof message === \"string\" ? {\n message\n } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message)=>typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9oZWxwZXJzL2Vycm9yVXRpbC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQU8sSUFBSUEsVUFBVTtBQUNwQixVQUFVQSxTQUFTO0lBQ2hCQSxVQUFVQyxRQUFRLEdBQUcsQ0FBQ0MsVUFBWSxPQUFPQSxZQUFZLFdBQVc7WUFBRUE7UUFBUSxJQUFJQSxXQUFXLENBQUM7SUFDMUYscUJBQXFCO0lBQ3JCRixVQUFVRyxRQUFRLEdBQUcsQ0FBQ0QsVUFBWSxPQUFPQSxZQUFZLFdBQVdBLFVBQVVBLFNBQVNBO0FBQ3ZGLEdBQUdGLGFBQWNBLENBQUFBLFlBQVksQ0FBQyIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3YzL2hlbHBlcnMvZXJyb3JVdGlsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB2YXIgZXJyb3JVdGlsO1xuKGZ1bmN0aW9uIChlcnJvclV0aWwpIHtcbiAgICBlcnJvclV0aWwuZXJyVG9PYmogPSAobWVzc2FnZSkgPT4gdHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgPyB7IG1lc3NhZ2UgfSA6IG1lc3NhZ2UgfHwge307XG4gICAgLy8gYmlvbWUtaWdub3JlIGxpbnQ6XG4gICAgZXJyb3JVdGlsLnRvU3RyaW5nID0gKG1lc3NhZ2UpID0+IHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiID8gbWVzc2FnZSA6IG1lc3NhZ2U/Lm1lc3NhZ2U7XG59KShlcnJvclV0aWwgfHwgKGVycm9yVXRpbCA9IHt9KSk7XG4iXSwibmFtZXMiOlsiZXJyb3JVdGlsIiwiZXJyVG9PYmoiLCJtZXNzYWdlIiwidG9TdHJpbmciXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js":
|
||
/*!*********************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js ***!
|
||
\*********************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DIRTY: () => (/* binding */ DIRTY),\n/* harmony export */ EMPTY_PATH: () => (/* binding */ EMPTY_PATH),\n/* harmony export */ INVALID: () => (/* binding */ INVALID),\n/* harmony export */ OK: () => (/* binding */ OK),\n/* harmony export */ ParseStatus: () => (/* binding */ ParseStatus),\n/* harmony export */ addIssueToContext: () => (/* binding */ addIssueToContext),\n/* harmony export */ isAborted: () => (/* binding */ isAborted),\n/* harmony export */ isAsync: () => (/* binding */ isAsync),\n/* harmony export */ isDirty: () => (/* binding */ isDirty),\n/* harmony export */ isValid: () => (/* binding */ isValid),\n/* harmony export */ makeIssue: () => (/* binding */ makeIssue)\n/* harmony export */ });\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../errors.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js\");\n/* harmony import */ var _locales_en_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../locales/en.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js\");\n\n\nconst makeIssue = (params)=>{\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [\n ...path,\n ...issueData.path || []\n ];\n const fullIssue = {\n ...issueData,\n path: fullPath\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps.filter((m)=>!!m).slice().reverse();\n for (const map of maps){\n errorMessage = map(fullIssue, {\n data,\n defaultError: errorMessage\n }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const overrideMap = (0,_errors_js__WEBPACK_IMPORTED_MODULE_0__.getErrorMap)();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n overrideMap,\n overrideMap === _locales_en_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"] ? undefined : _locales_en_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n ].filter((x)=>!!x)\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor(){\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\") this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\") this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results){\n if (s.status === \"aborted\") return INVALID;\n if (s.status === \"dirty\") status.dirty();\n arrayValue.push(s.value);\n }\n return {\n status: status.value,\n value: arrayValue\n };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs){\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs){\n const { key, value } = pair;\n if (key.status === \"aborted\") return INVALID;\n if (value.status === \"aborted\") return INVALID;\n if (key.status === \"dirty\") status.dirty();\n if (value.status === \"dirty\") status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return {\n status: status.value,\n value: finalObject\n };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\"\n});\nconst DIRTY = (value)=>({\n status: \"dirty\",\n value\n });\nconst OK = (value)=>({\n status: \"valid\",\n value\n });\nconst isAborted = (x)=>x.status === \"aborted\";\nconst isDirty = (x)=>x.status === \"dirty\";\nconst isValid = (x)=>x.status === \"valid\";\nconst isAsync = (x)=>typeof Promise !== \"undefined\" && x instanceof Promise;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9oZWxwZXJzL3BhcnNlVXRpbC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQTJDO0FBQ0k7QUFDeEMsTUFBTUUsWUFBWSxDQUFDQztJQUN0QixNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRSxHQUFHSjtJQUM3QyxNQUFNSyxXQUFXO1dBQUlIO1dBQVVFLFVBQVVGLElBQUksSUFBSSxFQUFFO0tBQUU7SUFDckQsTUFBTUksWUFBWTtRQUNkLEdBQUdGLFNBQVM7UUFDWkYsTUFBTUc7SUFDVjtJQUNBLElBQUlELFVBQVVHLE9BQU8sS0FBS0MsV0FBVztRQUNqQyxPQUFPO1lBQ0gsR0FBR0osU0FBUztZQUNaRixNQUFNRztZQUNORSxTQUFTSCxVQUFVRyxPQUFPO1FBQzlCO0lBQ0o7SUFDQSxJQUFJRSxlQUFlO0lBQ25CLE1BQU1DLE9BQU9QLFVBQ1JRLE1BQU0sQ0FBQyxDQUFDQyxJQUFNLENBQUMsQ0FBQ0EsR0FDaEJDLEtBQUssR0FDTEMsT0FBTztJQUNaLEtBQUssTUFBTUMsT0FBT0wsS0FBTTtRQUNwQkQsZUFBZU0sSUFBSVQsV0FBVztZQUFFTDtZQUFNZSxjQUFjUDtRQUFhLEdBQUdGLE9BQU87SUFDL0U7SUFDQSxPQUFPO1FBQ0gsR0FBR0gsU0FBUztRQUNaRixNQUFNRztRQUNORSxTQUFTRTtJQUNiO0FBQ0osRUFBRTtBQUNLLE1BQU1RLGFBQWEsRUFBRSxDQUFDO0FBQ3RCLFNBQVNDLGtCQUFrQkMsR0FBRyxFQUFFZixTQUFTO0lBQzVDLE1BQU1nQixjQUFjdkIsdURBQVdBO0lBQy9CLE1BQU13QixRQUFRdEIsVUFBVTtRQUNwQkssV0FBV0E7UUFDWEgsTUFBTWtCLElBQUlsQixJQUFJO1FBQ2RDLE1BQU1pQixJQUFJakIsSUFBSTtRQUNkQyxXQUFXO1lBQ1BnQixJQUFJRyxNQUFNLENB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bWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvaGVscGVycy9wYXJzZVV0aWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RXJyb3JNYXAgfSBmcm9tIFwiLi4vZXJyb3JzLmpzXCI7XG5pbXBvcnQgZGVmYXVsdEVycm9yTWFwIGZyb20gXCIuLi9sb2NhbGVzL2VuLmpzXCI7XG5leHBvcnQgY29uc3QgbWFrZUlzc3VlID0gKHBhcmFtcykgPT4ge1xuICAgIGNvbnN0IHsgZGF0YSwgcGF0aCwgZXJyb3JNYXBzLCBpc3N1ZURhdGEgfSA9IHBhcmFtcztcbiAgICBjb25zdCBmdWxsUGF0aCA9IFsuLi5wYXRoLCAuLi4oaXNzdWVEYXRhLnBhdGggfHwgW10pXTtcbiAgICBjb25zdCBmdWxsSXNzdWUgPSB7XG4gICAgICAgIC4uLmlzc3VlRGF0YSxcbiAgICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgfTtcbiAgICBpZiAoaXNzdWVEYXRhLm1lc3NhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uaXNzdWVEYXRhLFxuICAgICAgICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgICAgICAgICBtZXNzYWdlOiBpc3N1ZURhdGEubWVzc2FnZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9IFwiXCI7XG4gICAgY29uc3QgbWFwcyA9IGVycm9yTWFwc1xuICAgICAgICAuZmlsdGVyKChtKSA9PiAhIW0pXG4gICAgICAgIC5zbGljZSgpXG4gICAgICAgIC5yZXZlcnNlKCk7XG4gICAgZm9yIChjb25zdCBtYXAgb2YgbWFwcykge1xuICAgICAgICBlcnJvck1lc3NhZ2UgPSBtYXAoZnVsbElzc3VlLCB7IGRhdGEsIGRlZmF1bHRFcnJvcjogZXJyb3JNZXNzYWdlIH0pLm1lc3NhZ2U7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmlzc3VlRGF0YSxcbiAgICAgICAgcGF0aDogZnVsbFBhdGgsXG4gICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICB9O1xufTtcbmV4cG9ydCBjb25zdCBFTVBUWV9QQVRIID0gW107XG5leHBvcnQgZnVuY3Rpb24gYWRkSXNzdWVUb0NvbnRleHQoY3R4LCBpc3N1ZURhdGEpIHtcbiAgICBjb25zdCBvdmVycmlkZU1hcCA9IGdldEVycm9yTWFwKCk7XG4gICAgY29uc3QgaXNzdWUgPSBtYWtlSXNzdWUoe1xuICAgICAgICBpc3N1ZURhdGE6IGlzc3VlRGF0YSxcbiAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICBlcnJvck1hcHM6IFtcbiAgICAgICAgICAgIGN0eC5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLCAvLyBjb250ZXh0dWFsIGVycm9yIG1hcCBpcyBmaXJzdCBwcmlvcml0eVxuICAgICAgICAgICAgY3R4LnNjaGVtYUVycm9yTWFwLCAvLyB0aGVuIHNjaGVtYS1ib3VuZCBtYXAgaWYgYXZhaWxhYmxlXG4gICAgICAgICAgICBvdmVycmlkZU1hcCwgLy8gdGhlbiBnbG9iYWwgb3ZlcnJpZGUgbWFwXG4gICAgICAgICAgICBvdmVycmlkZU1hcCA9PT0gZGVmYXVsdEVycm9yTWFwID8gdW5kZWZpbmVkIDogZGVmYXVsdEVycm9yTWFwLCAvLyB0aGVuIGdsb2JhbCBkZWZhdWx0IG1hcFxuICAgICAgICBdLmZpbHRlcigoeCkgPT4gISF4KSxcbiAgICB9KTtcbiAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKGlzc3VlKTtcbn1cbmV4cG9ydCBjbGFzcyBQYXJzZVN0YXR1cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBcInZhbGlkXCI7XG4gICAgfVxuICAgIGRpcnR5KCkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gXCJ2YWxpZFwiKVxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IFwiZGlydHlcIjtcbiAgICB9XG4gICAgYWJvcnQoKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlICE9PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBcImFib3J0ZWRcIjtcbiAgICB9XG4gICAgc3RhdGljIG1lcmdlQXJyYXkoc3RhdHVzLCByZXN1bHRzKSB7XG4gICAgICAgIGNvbnN0IGFycmF5VmFsdWUgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBzIG9mIHJlc3VsdHMpIHtcbiAgICAgICAgICAgIGlmIChzLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICBpZiAocy5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIGFycmF5VmFsdWUucHVzaChzLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGFycmF5VmFsdWUgfTtcbiAgICB9XG4gICAgc3RhdGljIGFzeW5jIG1lcmdlT2JqZWN0QXN5bmMoc3RhdHVzLCBwYWlycykge1xuICAgICAgICBjb25zdCBzeW5jUGFpcnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIHBhaXJzKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBwYWlyLmtleTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcGFpci52YWx1ZTtcbiAgICAgICAgICAgIHN5bmNQYWlycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHN0YXR1cywgc3luY1BhaXJzKTtcbiAgICB9XG4gICAgc3RhdGljIG1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHBhaXJzKSB7XG4gICAgICAgIGNvbnN0IGZpbmFsT2JqZWN0ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgY29uc3QgeyBrZXksIHZhbHVlIH0gPSBwYWlyO1xuICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgaWYgKHZhbHVlLnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgaWYgKGtleS52YWx1ZSAhPT0gXCJfX3Byb3RvX19cIiAmJiAodHlwZW9mIHZhbHVlLnZhbHVlICE9PSBcInVuZGVmaW5lZFwiIHx8IHBhaXIuYWx3YXlzU2V0KSkge1xuICAgICAgICAgICAgICAgIGZpbmFsT2JqZWN0W2tleS52YWx1ZV0gPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGZpbmFsT2JqZWN0IH07XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IElOVkFMSUQgPSBPYmplY3QuZnJlZXplKHtcbiAgICBzdGF0dXM6IFwiYWJvcnRlZFwiLFxufSk7XG5leHBvcnQgY29uc3QgRElSVFkgPSAodmFsdWUpID0+ICh7IHN0YXR1czogXCJkaXJ0eVwiLCB2YWx1ZSB9KTtcbmV4cG9ydCBjb25zdCBPSyA9ICh2YWx1ZSkgPT4gKHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlIH0pO1xuZXhwb3J0IGNvbnN0IGlzQWJvcnRlZCA9ICh4KSA9PiB4LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCI7XG5leHBvcnQgY29uc3QgaXNEaXJ0eSA9ICh4KSA9PiB4LnN0YXR1cyA9PT0gXCJkaXJ0eVwiO1xuZXhwb3J0IGNvbnN0IGlzVmFsaWQgPSAoeCkgPT4geC5zdGF0dXMgPT09IFwidmFsaWRcIjtcbmV4cG9ydCBjb25zdCBpc0FzeW5jID0gKHgpID0+IHR5cGVvZiBQcm9taXNlICE9PSBcInVuZGVmaW5lZFwiICYmIHggaW5zdGFuY2VvZiBQcm9taXNlO1xuIl0sIm5hbWVzIjpbImdldEVycm9yTWFwIiwiZGVmYXVsdEVycm9yTWFwIiwibWFrZUlzc3VlIiwicGFyYW1zIiwiZGF0YSIsInBhdGgiLCJlcnJvck1hcHMiLCJpc3N1ZURhdGEiLCJmdWxsUGF0aCIsImZ1bGxJc3N1ZSIsIm1lc3NhZ2UiLCJ1bmRlZmluZWQiLCJlcnJvck1lc3NhZ2UiLCJtYXBzIiwiZmlsdGVyIiwibSIsInNsaWNlIiwicmV2ZXJzZSIsIm1hcCIsImRlZmF1bHRFcnJvciIsIkVNUFRZX1BBVEgiLCJhZGRJc3N1ZVRvQ29udGV4dCIsImN0eCIsIm92ZXJyaWRlTWFwIiwiaXNzdWUiLCJjb21tb24iLCJjb250ZXh0dWFsRXJyb3JNYXAiLCJzY2hlbWFFcnJvck1hcCIsIngiLCJpc3N1ZXMiLCJwdXNoIiwiUGFyc2VTdGF0dXMiLCJ2YWx1ZSIsImRpcnR5IiwiYWJvcnQiLCJtZXJnZUFycmF5Iiwic3RhdHVzIiwicmVzdWx0cyIsImFycmF5VmFsdWUiLCJzIiwiSU5WQUxJRCIsIm1lcmdlT2JqZWN0QXN5bmMiLCJwYWlycyIsInN5bmNQYWlycyIsInBhaXIiLCJrZXkiLCJtZXJnZU9iamVjdFN5bmMiLCJmaW5hbE9iamVjdCIsImFsd2F5c1NldCIsIk9iamVjdCIsImZyZWV6ZSIsIkRJUlRZIiwiT0siLCJpc0Fib3J0ZWQiLCJpc0RpcnR5IiwiaXNWYWxpZCIsImlzQXN5bmMiLCJQcm9taXNlIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js":
|
||
/*!****************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js ***!
|
||
\****************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ZodParsedType: () => (/* binding */ ZodParsedType),\n/* harmony export */ getParsedType: () => (/* binding */ getParsedType),\n/* harmony export */ objectUtil: () => (/* binding */ objectUtil),\n/* harmony export */ util: () => (/* binding */ util)\n/* harmony export */ });\nvar util;\n(function(util) {\n util.assertEqual = (_)=>{};\n function assertIs(_arg) {}\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items)=>{\n const obj = {};\n for (const item of items){\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj)=>{\n const validKeys = util.objectKeys(obj).filter((k)=>typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys){\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj)=>{\n return util.objectKeys(obj).map(function(e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj)=>Object.keys(obj) // eslint-disable-line ban/ban\n : (object)=>{\n const keys = [];\n for(const key in object){\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker)=>{\n for (const item of arr){\n if (checker(item)) return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\" ? (val)=>Number.isInteger(val) // eslint-disable-line ban/ban\n : (val)=>typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val)=>typeof val === \"string\" ? `'${val}'` : val).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value)=>{\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function(objectUtil) {\n objectUtil.mergeShapes = (first, second)=>{\n return {\n ...first,\n ...second\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\"\n]);\nconst getParsedType = (data)=>{\n const t = typeof data;\n switch(t){\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9oZWxwZXJzL3V0aWwuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFPLElBQUlBLEtBQUs7QUFDZixVQUFVQSxJQUFJO0lBQ1hBLEtBQUtDLFdBQVcsR0FBRyxDQUFDQyxLQUFRO0lBQzVCLFNBQVNDLFNBQVNDLElBQUksR0FBSTtJQUMxQkosS0FBS0csUUFBUSxHQUFHQTtJQUNoQixTQUFTRSxZQUFZQyxFQUFFO1FBQ25CLE1BQU0sSUFBSUM7SUFDZDtJQUNBUCxLQUFLSyxXQUFXLEdBQUdBO0lBQ25CTCxLQUFLUSxXQUFXLEdBQUcsQ0FBQ0M7UUFDaEIsTUFBTUMsTUFBTSxDQUFDO1FBQ2IsS0FBSyxNQUFNQyxRQUFRRixNQUFPO1lBQ3RCQyxHQUFHLENBQUNDLEtBQUssR0FBR0E7UUFDaEI7UUFDQSxPQUFPRDtJQUNYO0lBQ0FWLEtBQUtZLGtCQUFrQixHQUFHLENBQUNGO1FBQ3ZCLE1BQU1HLFlBQVliLEtBQUtjLFVBQVUsQ0FBQ0osS0FBS0ssTUFBTSxDQUFDLENBQUNDLElBQU0sT0FBT04sR0FBRyxDQUFDQSxHQUFHLENBQUNNLEVBQUUsQ0FBQyxLQUFLO1FBQzVFLE1BQU1DLFdBQVcsQ0FBQztRQUNsQixLQUFLLE1BQU1ELEtBQUtILFVBQVc7WUFDdkJJLFFBQVEsQ0FBQ0QsRUFBRSxHQUFHTixHQUFHLENBQUNNLEVBQUU7UUFDeEI7UUFDQSxPQUFPaEIsS0FBS2tCLFlBQVksQ0FBQ0Q7SUFDN0I7SUFDQWpCLEtBQUtrQixZQUFZLEdBQUcsQ0FBQ1I7UUFDakIsT0FBT1YsS0FBS2MsVUFBVSxDQUFDSixLQUFLUyxHQUFHLENBQUMsU0FBVUMsQ0FBQztZQUN2QyxPQUFPVixHQUFHLENBQUNVLEVBQUU7UUFDakI7SUFDSjtJQUNBcEIsS0FBS2MsVUFBVSxHQUFHLE9BQU9PLE9BQU9DLElBQUksS0FBSyxXQUFXLDhCQUE4QjtPQUM1RSxDQUFDWixNQUFR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T2tELFFBQVEsZUFBZWpCLGdCQUFnQmlCLEtBQUs7Z0JBQ25ELE9BQU9uQixjQUFjb0IsR0FBRztZQUM1QjtZQUNBLElBQUksT0FBT0MsU0FBUyxlQUFlbkIsZ0JBQWdCbUIsTUFBTTtnQkFDckQsT0FBT3JCLGNBQWNzQixJQUFJO1lBQzdCO1lBQ0EsT0FBT3RCLGNBQWMzQixNQUFNO1FBQy9CO1lBQ0ksT0FBTzJCLGNBQWN1QixPQUFPO0lBQ3BDO0FBQ0osRUFBRSIsInNvdXJjZXMiOlsiL1VzZXJzL21hcmNtaW50ZWwvUHJvamVjdHMvZS10aWIuY29tL25vZGVfbW9kdWxlcy8ucG5wbS96b2RAMy4yNS43Ni9ub2RlX21vZHVsZXMvem9kL3YzL2hlbHBlcnMvdXRpbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdmFyIHV0aWw7XG4oZnVuY3Rpb24gKHV0aWwpIHtcbiAgICB1dGlsLmFzc2VydEVxdWFsID0gKF8pID0+IHsgfTtcbiAgICBmdW5jdGlvbiBhc3NlcnRJcyhfYXJnKSB7IH1cbiAgICB1dGlsLmFzc2VydElzID0gYXNzZXJ0SXM7XG4gICAgZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoX3gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCk7XG4gICAgfVxuICAgIHV0aWwuYXNzZXJ0TmV2ZXIgPSBhc3NlcnROZXZlcjtcbiAgICB1dGlsLmFycmF5VG9FbnVtID0gKGl0ZW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIG9ialtpdGVtXSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICB9O1xuICAgIHV0aWwuZ2V0VmFsaWRFbnVtVmFsdWVzID0gKG9iaikgPT4ge1xuICAgICAgICBjb25zdCB2YWxpZEtleXMgPSB1dGlsLm9iamVjdEtleXMob2JqKS5maWx0ZXIoKGspID0+IHR5cGVvZiBvYmpbb2JqW2tdXSAhPT0gXCJudW1iZXJcIik7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0ge307XG4gICAgICAgIGZvciAoY29uc3QgayBvZiB2YWxpZEtleXMpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkW2tdID0gb2JqW2tdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1dGlsLm9iamVjdFZhbHVlcyhmaWx0ZXJlZCk7XG4gICAgfTtcbiAgICB1dGlsLm9iamVjdFZhbHVlcyA9IChvYmopID0+IHtcbiAgICAgICAgcmV0dXJuIHV0aWwub2JqZWN0S2V5cyhvYmopLm1hcChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIG9ialtlXTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICB1dGlsLm9iamVjdEtleXMgPSB0eXBlb2YgT2JqZWN0LmtleXMgPT09IFwiZnVuY3Rpb25cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGJhbi9iYW5cbiAgICAgICAgPyAob2JqKSA9PiBPYmplY3Qua2V5cyhvYmopIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgYmFuL2JhblxuICAgICAgICA6IChvYmplY3QpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iamVjdCkge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9O1xuICAgIHV0aWwuZmluZCA9IChhcnIsIGNoZWNrZXIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGFycikge1xuICAgICAgICAgICAgaWYgKGNoZWNrZXIoaXRlbSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9O1xuICAgIHV0aWwuaXNJbnRlZ2VyID0gdHlwZW9mIE51bWJlci5pc0ludGVnZXIgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICA/ICh2YWwpID0+IE51bWJlci5pc0ludGVnZXIodmFsKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGJhbi9iYW5cbiAgICAgICAgOiAodmFsKSA9PiB0eXBlb2YgdmFsID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZSh2YWwpICYmIE1hdGguZmxvb3IodmFsKSA9PT0gdmFsO1xuICAgIGZ1bmN0aW9uIGpvaW5WYWx1ZXMoYXJyYXksIHNlcGFyYXRvciA9IFwiIHwgXCIpIHtcbiAgICAgICAgcmV0dXJuIGFycmF5Lm1hcCgodmFsKSA9PiAodHlwZW9mIHZhbCA9PT0gXCJzdHJpbmdcIiA/IGAnJHt2YWx9J2AgOiB2YWwpKS5qb2luKHNlcGFyYXRvcik7XG4gICAgfVxuICAgIHV0aWwuam9pblZhbHVlcyA9IGpvaW5WYWx1ZXM7XG4gICAgdXRpbC5qc29uU3RyaW5naWZ5UmVwbGFjZXIgPSAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJiaWdpbnRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG59KSh1dGlsIHx8ICh1dGlsID0ge30pKTtcbmV4cG9ydCB2YXIgb2JqZWN0VXRpbDtcbihmdW5jdGlvbiAob2JqZWN0VXRpbCkge1xuICAgIG9iamVjdFV0aWwubWVyZ2VTaGFwZXMgPSAoZmlyc3QsIHNlY29uZCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZmlyc3QsXG4gICAgICAgICAgICAuLi5zZWNvbmQsIC8vIHNlY29uZCBvdmVyd3JpdGVzIGZpcnN0XG4gICAgICAgIH07XG4gICAgfTtcbn0pKG9iamVjdFV0aWwgfHwgKG9iamVjdFV0aWwgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IFpvZFBhcnNlZFR5cGUgPSB1dGlsLmFycmF5VG9FbnVtKFtcbiAgICBcInN0cmluZ1wiLFxuICAgIFwibmFuXCIsXG4gICAgXCJudW1iZXJcIixcbiAgICBcImludGVnZXJcIixcbiAgICBcImZsb2F0XCIsXG4gICAgXCJib29sZWFuXCIsXG4gICAgXCJkYXRlXCIsXG4gICAgXCJiaWdpbnRcIixcbiAgICBcInN5bWJvbFwiLFxuICAgIFwiZnVuY3Rpb25cIixcbiAgICBcInVuZGVmaW5lZFwiLFxuICAgIFwibnVsbFwiLFxuICAgIFwiYXJyYXlcIixcbiAgICBcIm9iamVjdFwiLFxuICAgIFwidW5rbm93blwiLFxuICAgIFwicHJvbWlzZVwiLFxuICAgIFwidm9pZFwiLFxuICAgIFwibmV2ZXJcIixcbiAgICBcIm1hcFwiLFxuICAgIFwic2V0XCIsXG5dKTtcbmV4cG9ydCBjb25zdCBnZXRQYXJzZWRUeXBlID0gKGRhdGEpID0+IHtcbiAgICBjb25zdCB0ID0gdHlwZW9mIGRhdGE7XG4gICAgc3dpdGNoICh0KSB7XG4gICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnVuZGVmaW5lZDtcbiAgICAgICAgY2FzZSBcInN0cmluZ1wiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc3RyaW5nO1xuICAgICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyLmlzTmFOKGRhdGEpID8gWm9kUGFyc2VkVHlwZS5uYW4gOiBab2RQYXJzZWRUeXBlLm51bWJlcjtcbiAgICAgICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmJvb2xlYW47XG4gICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuZnVuY3Rpb247XG4gICAgICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmJpZ2ludDtcbiAgICAgICAgY2FzZSBcInN5bWJvbFwiOlxuICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc3ltYm9sO1xuICAgICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLmFycmF5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5udWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRhdGEudGhlbiAmJiB0eXBlb2YgZGF0YS50aGVuID09PSBcImZ1bmN0aW9uXCIgJiYgZGF0YS5jYXRjaCAmJiB0eXBlb2YgZGF0YS5jYXRjaCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUucHJvbWlzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgTWFwICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWm9kUGFyc2VkVHlwZS5tYXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIFNldCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBkYXRhIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuc2V0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBEYXRlICE9PSBcInVuZGVmaW5lZFwiICYmIGRhdGEgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFpvZFBhcnNlZFR5cGUuZGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLm9iamVjdDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBab2RQYXJzZWRUeXBlLnVua25vd247XG4gICAgfVxufTtcbiJdLCJuYW1lcyI6WyJ1dGlsIiwiYXNzZXJ0RXF1YWwiLCJfIiwiYXNzZXJ0SXMiLCJfYXJnIiwiYXNzZXJ0TmV2ZXIiLCJfeCIsIkVycm9yIiwiYXJyYXlUb0VudW0iLCJpdGVtcyIsIm9iaiIsIml0ZW0iLCJnZXRWYWxpZEVudW1WYWx1ZXMiLCJ2YWxpZEtleXMiLCJvYmplY3RLZXlzIiwiZmlsdGVyIiwiayIsImZpbHRlcmVkIiwib2JqZWN0VmFsdWVzIiwibWFwIiwiZSIsIk9iamVjdCIsImtleXMiLCJvYmplY3QiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJwdXNoIiwiZmluZCIsImFyciIsImNoZWNrZXIiLCJ1bmRlZmluZWQiLCJpc0ludGVnZXIiLCJOdW1iZXIiLCJ2YWwiLCJpc0Zpbml0ZSIsIk1hdGgiLCJmbG9vciIsImpvaW5WYWx1ZXMiLCJhcnJheSIsInNlcGFyYXRvciIsImpvaW4iLCJqc29uU3RyaW5naWZ5UmVwbGFjZXIiLCJ2YWx1ZSIsInRvU3RyaW5nIiwib2JqZWN0VXRpbCIsIm1lcmdlU2hhcGVzIiwiZmlyc3QiLCJzZWNvbmQiLCJab2RQYXJzZWRUeXBlIiwiZ2V0UGFyc2VkVHlwZSIsImRhdGEiLCJ0Iiwic3RyaW5nIiwiaXNOYU4iLCJuYW4iLCJudW1iZXIiLCJib29sZWFuIiwiZnVuY3Rpb24iLCJiaWdpbnQiLCJzeW1ib2wiLCJBcnJheSIsImlzQXJyYXkiLCJudWxsIiwidGhlbiIsImNhdGNoIiwicHJvbWlzZSIsIk1hcCIsIlNldCIsInNldCIsIkRhdGUiLCJkYXRlIiwidW5rbm93biJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js":
|
||
/*!**************************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js ***!
|
||
\**************************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _ZodError_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ZodError.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js\");\n/* harmony import */ var _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../helpers/util.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js\");\n\n\nconst errorMap = (issue, _ctx)=>{\n let message;\n switch(issue.code){\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_type:\n if (issue.received === _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.ZodParsedType.undefined) {\n message = \"Required\";\n } else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.jsonStringifyReplacer)}`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${_helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.joinValues(issue.keys, \", \")}`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${_helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.joinValues(issue.options)}`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${_helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n } else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n } else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.assertNever(issue.validation);\n }\n } else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n } else {\n message = \"Invalid\";\n }\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.too_small:\n if (issue.type === \"array\") message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\") message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\") message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\") message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\") message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else message = \"Invalid input\";\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.too_big:\n if (issue.type === \"array\") message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\") message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\") message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\") message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\") message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else message = \"Invalid input\";\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case _ZodError_js__WEBPACK_IMPORTED_MODULE_0__.ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_1__.util.assertNever(issue);\n }\n return {\n message\n };\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (errorMap);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9sb2NhbGVzL2VuLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUE4QztBQUNXO0FBQ3pELE1BQU1HLFdBQVcsQ0FBQ0MsT0FBT0M7SUFDckIsSUFBSUM7SUFDSixPQUFRRixNQUFNRyxJQUFJO1FBQ2QsS0FBS1Asc0RBQVlBLENBQUNRLFlBQVk7WUFDMUIsSUFBSUosTUFBTUssUUFBUSxLQUFLUCwyREFBYUEsQ0FBQ1EsU0FBUyxFQUFFO2dCQUM1Q0osVUFBVTtZQUNkLE9BQ0s7Z0JBQ0RBLFVBQVUsQ0FBQyxTQUFTLEVBQUVGLE1BQU1PLFFBQVEsQ0FBQyxXQUFXLEVBQUVQLE1BQU1LLFFBQVEsRUFBRTtZQUN0RTtZQUNBO1FBQ0osS0FBS1Qsc0RBQVlBLENBQUNZLGVBQWU7WUFDN0JOLFVBQVUsQ0FBQyxnQ0FBZ0MsRUFBRU8sS0FBS0MsU0FBUyxDQUFDVixNQUFNTyxRQUFRLEVBQUVWLGtEQUFJQSxDQUFDYyxxQkFBcUIsR0FBRztZQUN6RztRQUNKLEtBQUtmLHNEQUFZQSxDQUFDZ0IsaUJBQWlCO1lBQy9CVixVQUFVLENBQUMsK0JBQStCLEVBQUVMLGtEQUFJQSxDQUFDZ0IsVUFBVSxDQUFDYixNQUFNYyxJQUFJLEVBQUUsT0FBTztZQUMvRTtRQUNKLEtBQUtsQixzREFBWUEsQ0FBQ21CLGFBQWE7WUFDM0JiLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDekI7UUFDSixLQUFLTixzREFBWUEsQ0FBQ29CLDJCQUEyQjtZQUN6Q2QsVUFBVSxDQUFDLHNDQUFzQyxFQUFFTCxrREFBSUEsQ0FBQ2dCLFVBQVUsQ0FBQ2IsTUFBTWlCLE9BQU8sR0FBRztZQUNuRjtRQUNKLEtBQUtyQixzREFBWUEsQ0FBQ3NCLGtCQUFrQjtZQUNoQ2hCLFVBQVUsQ0FBQyw2QkFBNkIsRUFBRUwsa0RBQUlBLENBQUNnQixVQUFVLENBQUNiLE1BQU1pQixPQUFPLEVBQUUsWUFBWSxFQUFF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RUFBRTtpQkFDL0gsSUFBSXJDLE1BQU04QixJQUFJLEtBQUssUUFDcEI1QixVQUFVLENBQUMsYUFBYSxFQUFFRixNQUFNK0IsS0FBSyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcvQixNQUFNZ0MsU0FBUyxHQUFHLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJRSxLQUFLQyxPQUFPbkMsTUFBTXFDLE9BQU8sSUFBSTtpQkFFdEpuQyxVQUFVO1lBQ2Q7UUFDSixLQUFLTixzREFBWUEsQ0FBQzBDLE1BQU07WUFDcEJwQyxVQUFVLENBQUMsYUFBYSxDQUFDO1lBQ3pCO1FBQ0osS0FBS04sc0RBQVlBLENBQUMyQywwQkFBMEI7WUFDeENyQyxVQUFVLENBQUMsd0NBQXdDLENBQUM7WUFDcEQ7UUFDSixLQUFLTixzREFBWUEsQ0FBQzRDLGVBQWU7WUFDN0J0QyxVQUFVLENBQUMsNkJBQTZCLEVBQUVGLE1BQU15QyxVQUFVLEVBQUU7WUFDNUQ7UUFDSixLQUFLN0Msc0RBQVlBLENBQUM4QyxVQUFVO1lBQ3hCeEMsVUFBVTtZQUNWO1FBQ0o7WUFDSUEsVUFBVUQsS0FBSzBDLFlBQVk7WUFDM0I5QyxrREFBSUEsQ0FBQytCLFdBQVcsQ0FBQzVCO0lBQ3pCO0lBQ0EsT0FBTztRQUFFRTtJQUFRO0FBQ3JCO0FBQ0EsaUVBQWVILFFBQVFBLEVBQUMiLCJzb3VyY2VzIjpbIi9Vc2Vycy9tYXJjbWludGVsL1Byb2plY3RzL2UtdGliLmNvbS9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My9sb2NhbGVzL2VuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFpvZElzc3VlQ29kZSB9IGZyb20gXCIuLi9ab2RFcnJvci5qc1wiO1xuaW1wb3J0IHsgdXRpbCwgWm9kUGFyc2VkVHlwZSB9IGZyb20gXCIuLi9oZWxwZXJzL3V0aWwuanNcIjtcbmNvbnN0IGVycm9yTWFwID0gKGlzc3VlLCBfY3R4KSA9PiB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgc3dpdGNoIChpc3N1ZS5jb2RlKSB7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZTpcbiAgICAgICAgICAgIGlmIChpc3N1ZS5yZWNlaXZlZCA9PT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJSZXF1aXJlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBFeHBlY3RlZCAke2lzc3VlLmV4cGVjdGVkfSwgcmVjZWl2ZWQgJHtpc3N1ZS5yZWNlaXZlZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfbGl0ZXJhbDpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBsaXRlcmFsIHZhbHVlLCBleHBlY3RlZCAke0pTT04uc3RyaW5naWZ5KGlzc3VlLmV4cGVjdGVkLCB1dGlsLmpzb25TdHJpbmdpZnlSZXBsYWNlcil9YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS51bnJlY29nbml6ZWRfa2V5czpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgVW5yZWNvZ25pemVkIGtleShzKSBpbiBvYmplY3Q6ICR7dXRpbC5qb2luVmFsdWVzKGlzc3VlLmtleXMsIFwiLCBcIil9YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uX2Rpc2NyaW1pbmF0b3I6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUub3B0aW9ucyl9YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWU6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZW51bSB2YWx1ZS4gRXhwZWN0ZWQgJHt1dGlsLmpvaW5WYWx1ZXMoaXNzdWUub3B0aW9ucyl9LCByZWNlaXZlZCAnJHtpc3N1ZS5yZWNlaXZlZH0nYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2FyZ3VtZW50czpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBmdW5jdGlvbiBhcmd1bWVudHNgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfcmV0dXJuX3R5cGU6XG4gICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgZnVuY3Rpb24gcmV0dXJuIHR5cGVgO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLmludmFsaWRfZGF0ZTpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW52YWxpZCBkYXRlYDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZzpcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaXNzdWUudmFsaWRhdGlvbiA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgICAgIGlmIChcImluY2x1ZGVzXCIgaW4gaXNzdWUudmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgaW5wdXQ6IG11c3QgaW5jbHVkZSBcIiR7aXNzdWUudmFsaWRhdGlvbi5pbmNsdWRlc31cImA7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXNzdWUudmFsaWRhdGlvbi5wb3NpdGlvbiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGAke21lc3NhZ2V9IGF0IG9uZSBvciBtb3JlIHBvc2l0aW9ucyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJHtpc3N1ZS52YWxpZGF0aW9uLnBvc2l0aW9ufWA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoXCJzdGFydHNXaXRoXCIgaW4gaXNzdWUudmFsaWRhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEludmFsaWQgaW5wdXQ6IG11c3Qgc3RhcnQgd2l0aCBcIiR7aXNzdWUudmFsaWRhdGlvbi5zdGFydHNXaXRofVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoXCJlbmRzV2l0aFwiIGluIGlzc3VlLnZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0OiBtdXN0IGVuZCB3aXRoIFwiJHtpc3N1ZS52YWxpZGF0aW9uLmVuZHNXaXRofVwiYDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoaXNzdWUudmFsaWRhdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudmFsaWRhdGlvbiAhPT0gXCJyZWdleFwiKSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkICR7aXNzdWUudmFsaWRhdGlvbn1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiSW52YWxpZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLnRvb19zbWFsbDpcbiAgICAgICAgICAgIGlmIChpc3N1ZS50eXBlID09PSBcImFycmF5XCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBBcnJheSBtdXN0IGNvbnRhaW4gJHtpc3N1ZS5leGFjdCA/IFwiZXhhY3RseVwiIDogaXNzdWUuaW5jbHVzaXZlID8gYGF0IGxlYXN0YCA6IGBtb3JlIHRoYW5gfSAke2lzc3VlLm1pbmltdW19IGVsZW1lbnQocylgO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJzdHJpbmdcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYFN0cmluZyBtdXN0IGNvbnRhaW4gJHtpc3N1ZS5leGFjdCA/IFwiZXhhY3RseVwiIDogaXNzdWUuaW5jbHVzaXZlID8gYGF0IGxlYXN0YCA6IGBvdmVyYH0gJHtpc3N1ZS5taW5pbXVtfSBjaGFyYWN0ZXIocylgO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJudW1iZXJcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYE51bWJlciBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseSBlcXVhbCB0byBgIDogaXNzdWUuaW5jbHVzaXZlID8gYGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgIDogYGdyZWF0ZXIgdGhhbiBgfSR7aXNzdWUubWluaW11bX1gO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJiaWdpbnRcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYE51bWJlciBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseSBlcXVhbCB0byBgIDogaXNzdWUuaW5jbHVzaXZlID8gYGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgIDogYGdyZWF0ZXIgdGhhbiBgfSR7aXNzdWUubWluaW11bX1gO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJkYXRlXCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBEYXRlIG11c3QgYmUgJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5IGVxdWFsIHRvIGAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGAgOiBgZ3JlYXRlciB0aGFuIGB9JHtuZXcgRGF0ZShOdW1iZXIoaXNzdWUubWluaW11bSkpfWA7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiSW52YWxpZCBpbnB1dFwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLnRvb19iaWc6XG4gICAgICAgICAgICBpZiAoaXNzdWUudHlwZSA9PT0gXCJhcnJheVwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgQXJyYXkgbXVzdCBjb250YWluICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseWAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbW9zdGAgOiBgbGVzcyB0aGFuYH0gJHtpc3N1ZS5tYXhpbXVtfSBlbGVtZW50KHMpYDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwic3RyaW5nXCIpXG4gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGBTdHJpbmcgbXVzdCBjb250YWluICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseWAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgYXQgbW9zdGAgOiBgdW5kZXJgfSAke2lzc3VlLm1heGltdW19IGNoYXJhY3RlcihzKWA7XG4gICAgICAgICAgICBlbHNlIGlmIChpc3N1ZS50eXBlID09PSBcIm51bWJlclwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgTnVtYmVyIG11c3QgYmUgJHtpc3N1ZS5leGFjdCA/IGBleGFjdGx5YCA6IGlzc3VlLmluY2x1c2l2ZSA/IGBsZXNzIHRoYW4gb3IgZXF1YWwgdG9gIDogYGxlc3MgdGhhbmB9ICR7aXNzdWUubWF4aW11bX1gO1xuICAgICAgICAgICAgZWxzZSBpZiAoaXNzdWUudHlwZSA9PT0gXCJiaWdpbnRcIilcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gYEJpZ0ludCBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseWAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgbGVzcyB0aGFuIG9yIGVxdWFsIHRvYCA6IGBsZXNzIHRoYW5gfSAke2lzc3VlLm1heGltdW19YDtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzc3VlLnR5cGUgPT09IFwiZGF0ZVwiKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBgRGF0ZSBtdXN0IGJlICR7aXNzdWUuZXhhY3QgPyBgZXhhY3RseWAgOiBpc3N1ZS5pbmNsdXNpdmUgPyBgc21hbGxlciB0aGFuIG9yIGVxdWFsIHRvYCA6IGBzbWFsbGVyIHRoYW5gfSAke25ldyBEYXRlKE51bWJlcihpc3N1ZS5tYXhpbXVtKSl9YDtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJJbnZhbGlkIGlucHV0XCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUuY3VzdG9tOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBJbnZhbGlkIGlucHV0YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFpvZElzc3VlQ29kZS5pbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlczpcbiAgICAgICAgICAgIG1lc3NhZ2UgPSBgSW50ZXJzZWN0aW9uIHJlc3VsdHMgY291bGQgbm90IGJlIG1lcmdlZGA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBab2RJc3N1ZUNvZGUubm90X211bHRpcGxlX29mOlxuICAgICAgICAgICAgbWVzc2FnZSA9IGBOdW1iZXIgbXVzdCBiZSBhIG11bHRpcGxlIG9mICR7aXNzdWUubXVsdGlwbGVPZn1gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgWm9kSXNzdWVDb2RlLm5vdF9maW5pdGU6XG4gICAgICAgICAgICBtZXNzYWdlID0gXCJOdW1iZXIgbXVzdCBiZSBmaW5pdGVcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgbWVzc2FnZSA9IF9jdHguZGVmYXVsdEVycm9yO1xuICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihpc3N1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IG1lc3NhZ2UgfTtcbn07XG5leHBvcnQgZGVmYXVsdCBlcnJvck1hcDtcbiJdLCJuYW1lcyI6WyJab2RJc3N1ZUNvZGUiLCJ1dGlsIiwiWm9kUGFyc2VkVHlwZSIsImVycm9yTWFwIiwiaXNzdWUiLCJfY3R4IiwibWVzc2FnZSIsImNvZGUiLCJpbnZhbGlkX3R5cGUiLCJyZWNlaXZlZCIsInVuZGVmaW5lZCIsImV4cGVjdGVkIiwiaW52YWxpZF9saXRlcmFsIiwiSlNPTiIsInN0cmluZ2lmeSIsImpzb25TdHJpbmdpZnlSZXBsYWNlciIsInVucmVjb2duaXplZF9rZXlzIiwiam9pblZhbHVlcyIsImtleXMiLCJpbnZhbGlkX3VuaW9uIiwiaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yIiwib3B0aW9ucyIsImludmFsaWRfZW51bV92YWx1ZSIsImludmFsaWRfYXJndW1lbnRzIiwiaW52YWxpZF9yZXR1cm5fdHlwZSIsImludmFsaWRfZGF0ZSIsImludmFsaWRfc3RyaW5nIiwidmFsaWRhdGlvbiIsImluY2x1ZGVzIiwicG9zaXRpb24iLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJhc3NlcnROZXZlciIsInRvb19zbWFsbCIsInR5cGUiLCJleGFjdCIsImluY2x1c2l2ZSIsIm1pbmltdW0iLCJEYXRlIiwiTnVtYmVyIiwidG9vX2JpZyIsIm1heGltdW0iLCJjdXN0b20iLCJpbnZhbGlkX2ludGVyc2VjdGlvbl90eXBlcyIsIm5vdF9tdWx0aXBsZV9vZiIsIm11bHRpcGxlT2YiLCJub3RfZmluaXRlIiwiZGVmYXVsdEVycm9yIl0sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js\n");
|
||
|
||
/***/ }),
|
||
|
||
/***/ "(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js":
|
||
/*!*********************************************************************!*\
|
||
!*** ./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js ***!
|
||
\*********************************************************************/
|
||
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
||
|
||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BRAND: () => (/* binding */ BRAND),\n/* harmony export */ NEVER: () => (/* binding */ NEVER),\n/* harmony export */ Schema: () => (/* binding */ ZodType),\n/* harmony export */ ZodAny: () => (/* binding */ ZodAny),\n/* harmony export */ ZodArray: () => (/* binding */ ZodArray),\n/* harmony export */ ZodBigInt: () => (/* binding */ ZodBigInt),\n/* harmony export */ ZodBoolean: () => (/* binding */ ZodBoolean),\n/* harmony export */ ZodBranded: () => (/* binding */ ZodBranded),\n/* harmony export */ ZodCatch: () => (/* binding */ ZodCatch),\n/* harmony export */ ZodDate: () => (/* binding */ ZodDate),\n/* harmony export */ ZodDefault: () => (/* binding */ ZodDefault),\n/* harmony export */ ZodDiscriminatedUnion: () => (/* binding */ ZodDiscriminatedUnion),\n/* harmony export */ ZodEffects: () => (/* binding */ ZodEffects),\n/* harmony export */ ZodEnum: () => (/* binding */ ZodEnum),\n/* harmony export */ ZodFirstPartyTypeKind: () => (/* binding */ ZodFirstPartyTypeKind),\n/* harmony export */ ZodFunction: () => (/* binding */ ZodFunction),\n/* harmony export */ ZodIntersection: () => (/* binding */ ZodIntersection),\n/* harmony export */ ZodLazy: () => (/* binding */ ZodLazy),\n/* harmony export */ ZodLiteral: () => (/* binding */ ZodLiteral),\n/* harmony export */ ZodMap: () => (/* binding */ ZodMap),\n/* harmony export */ ZodNaN: () => (/* binding */ ZodNaN),\n/* harmony export */ ZodNativeEnum: () => (/* binding */ ZodNativeEnum),\n/* harmony export */ ZodNever: () => (/* binding */ ZodNever),\n/* harmony export */ ZodNull: () => (/* binding */ ZodNull),\n/* harmony export */ ZodNullable: () => (/* binding */ ZodNullable),\n/* harmony export */ ZodNumber: () => (/* binding */ ZodNumber),\n/* harmony export */ ZodObject: () => (/* binding */ ZodObject),\n/* harmony export */ ZodOptional: () => (/* binding */ ZodOptional),\n/* harmony export */ ZodPipeline: () => (/* binding */ ZodPipeline),\n/* harmony export */ ZodPromise: () => (/* binding */ ZodPromise),\n/* harmony export */ ZodReadonly: () => (/* binding */ ZodReadonly),\n/* harmony export */ ZodRecord: () => (/* binding */ ZodRecord),\n/* harmony export */ ZodSchema: () => (/* binding */ ZodType),\n/* harmony export */ ZodSet: () => (/* binding */ ZodSet),\n/* harmony export */ ZodString: () => (/* binding */ ZodString),\n/* harmony export */ ZodSymbol: () => (/* binding */ ZodSymbol),\n/* harmony export */ ZodTransformer: () => (/* binding */ ZodEffects),\n/* harmony export */ ZodTuple: () => (/* binding */ ZodTuple),\n/* harmony export */ ZodType: () => (/* binding */ ZodType),\n/* harmony export */ ZodUndefined: () => (/* binding */ ZodUndefined),\n/* harmony export */ ZodUnion: () => (/* binding */ ZodUnion),\n/* harmony export */ ZodUnknown: () => (/* binding */ ZodUnknown),\n/* harmony export */ ZodVoid: () => (/* binding */ ZodVoid),\n/* harmony export */ any: () => (/* binding */ anyType),\n/* harmony export */ array: () => (/* binding */ arrayType),\n/* harmony export */ bigint: () => (/* binding */ bigIntType),\n/* harmony export */ boolean: () => (/* binding */ booleanType),\n/* harmony export */ coerce: () => (/* binding */ coerce),\n/* harmony export */ custom: () => (/* binding */ custom),\n/* harmony export */ date: () => (/* binding */ dateType),\n/* harmony export */ datetimeRegex: () => (/* binding */ datetimeRegex),\n/* harmony export */ discriminatedUnion: () => (/* binding */ discriminatedUnionType),\n/* harmony export */ effect: () => (/* binding */ effectsType),\n/* harmony export */ \"enum\": () => (/* binding */ enumType),\n/* harmony export */ \"function\": () => (/* binding */ functionType),\n/* harmony export */ \"instanceof\": () => (/* binding */ instanceOfType),\n/* harmony export */ intersection: () => (/* binding */ intersectionType),\n/* harmony export */ late: () => (/* binding */ late),\n/* harmony export */ lazy: () => (/* binding */ lazyType),\n/* harmony export */ literal: () => (/* binding */ literalType),\n/* harmony export */ map: () => (/* binding */ mapType),\n/* harmony export */ nan: () => (/* binding */ nanType),\n/* harmony export */ nativeEnum: () => (/* binding */ nativeEnumType),\n/* harmony export */ never: () => (/* binding */ neverType),\n/* harmony export */ \"null\": () => (/* binding */ nullType),\n/* harmony export */ nullable: () => (/* binding */ nullableType),\n/* harmony export */ number: () => (/* binding */ numberType),\n/* harmony export */ object: () => (/* binding */ objectType),\n/* harmony export */ oboolean: () => (/* binding */ oboolean),\n/* harmony export */ onumber: () => (/* binding */ onumber),\n/* harmony export */ optional: () => (/* binding */ optionalType),\n/* harmony export */ ostring: () => (/* binding */ ostring),\n/* harmony export */ pipeline: () => (/* binding */ pipelineType),\n/* harmony export */ preprocess: () => (/* binding */ preprocessType),\n/* harmony export */ promise: () => (/* binding */ promiseType),\n/* harmony export */ record: () => (/* binding */ recordType),\n/* harmony export */ set: () => (/* binding */ setType),\n/* harmony export */ strictObject: () => (/* binding */ strictObjectType),\n/* harmony export */ string: () => (/* binding */ stringType),\n/* harmony export */ symbol: () => (/* binding */ symbolType),\n/* harmony export */ transformer: () => (/* binding */ effectsType),\n/* harmony export */ tuple: () => (/* binding */ tupleType),\n/* harmony export */ undefined: () => (/* binding */ undefinedType),\n/* harmony export */ union: () => (/* binding */ unionType),\n/* harmony export */ unknown: () => (/* binding */ unknownType),\n/* harmony export */ \"void\": () => (/* binding */ voidType)\n/* harmony export */ });\n/* harmony import */ var _ZodError_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ZodError.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./errors.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js\");\n/* harmony import */ var _errors_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./errors.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js\");\n/* harmony import */ var _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers/errorUtil.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js\");\n/* harmony import */ var _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/parseUtil.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js\");\n/* harmony import */ var _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers/util.js */ \"(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js\");\n\n\n\n\n\nclass ParseInputLazyPath {\n constructor(parent, value, path, key){\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n } else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result)=>{\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(result)) {\n return {\n success: true,\n data: result.value\n };\n } else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error () {\n if (this._error) return this._error;\n const error = new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n }\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params) return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap) return {\n errorMap: errorMap,\n description\n };\n const customMap = (iss, ctx)=>{\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return {\n message: message ?? ctx.defaultError\n };\n }\n if (typeof ctx.data === \"undefined\") {\n return {\n message: message ?? required_error ?? ctx.defaultError\n };\n }\n if (iss.code !== \"invalid_type\") return {\n message: ctx.defaultError\n };\n return {\n message: message ?? invalid_type_error ?? ctx.defaultError\n };\n };\n return {\n errorMap: customMap,\n description\n };\n}\nclass ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n };\n }\n _processInputParams(input) {\n return {\n status: new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent\n }\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAsync)(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success) return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(data)\n };\n const result = this._parseSync({\n data,\n path: ctx.path,\n parent: ctx\n });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(data)\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({\n data,\n path: [],\n parent: ctx\n });\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(result) ? {\n value: result.value\n } : {\n issues: ctx.common.issues\n };\n } catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true\n };\n }\n }\n return this._parseAsync({\n data,\n path: [],\n parent: ctx\n }).then((result)=>(0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(result) ? {\n value: result.value\n } : {\n issues: ctx.common.issues\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success) return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(data)\n };\n const maybeAsyncResult = this._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n const result = await ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAsync)(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val)=>{\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return {\n message\n };\n } else if (typeof message === \"function\") {\n return message(val);\n } else {\n return message;\n }\n };\n return this._refinement((val, ctx)=>{\n const result = check(val);\n const setError = ()=>ctx.addIssue({\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.custom,\n ...getIssueProperties(val)\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data)=>{\n if (!data) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n } else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx)=>{\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n } else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: {\n type: \"refinement\",\n refinement\n }\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def){\n /** Alias of safeParseAsync */ this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data)=>this[\"~validate\"](data)\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([\n this,\n option\n ], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: {\n type: \"transform\",\n transform\n }\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : ()=>def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def)\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : ()=>def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n } else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nfunction datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset) opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt)) return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header) return false;\n // Convert base64url to base64\n const base64 = header.replace(/-/g, \"+\").replace(/_/g, \"/\").padEnd(header.length + (4 - header.length % 4) % 4, \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null) return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\") return false;\n if (!decoded.alg) return false;\n if (alg && decoded.alg !== alg) return false;\n return true;\n } catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.string,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const status = new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks){\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message\n });\n } else if (tooSmall) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message\n });\n }\n status.dirty();\n }\n } else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"email\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"emoji\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"uuid\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"nanoid\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"cuid\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"cuid2\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"ulid\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n } catch {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"url\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"regex\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n } else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: {\n includes: check.value,\n position: check.position\n },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n } else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n } else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: {\n startsWith: check.value\n },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: {\n endsWith: check.value\n },\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"duration\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"ip\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"jwt\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"cidr\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"base64\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n validation: \"base64url\",\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n message: check.message\n });\n status.dirty();\n }\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: input.data\n };\n }\n _regex(regex, validation, message) {\n return this.refinement((data)=>regex.test(data), {\n validation,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_string,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n email(message) {\n return this._addCheck({\n kind: \"email\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n url(message) {\n return this._addCheck({\n kind: \"url\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n emoji(message) {\n return this._addCheck({\n kind: \"emoji\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n uuid(message) {\n return this._addCheck({\n kind: \"uuid\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n nanoid(message) {\n return this._addCheck({\n kind: \"nanoid\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n cuid(message) {\n return this._addCheck({\n kind: \"cuid\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n cuid2(message) {\n return this._addCheck({\n kind: \"cuid2\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n ulid(message) {\n return this._addCheck({\n kind: \"ulid\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n base64(message) {\n return this._addCheck({\n kind: \"base64\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n jwt(options) {\n return this._addCheck({\n kind: \"jwt\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options)\n });\n }\n ip(options) {\n return this._addCheck({\n kind: \"ip\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options)\n });\n }\n cidr(options) {\n return this._addCheck({\n kind: \"cidr\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options)\n });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options?.message)\n });\n }\n date(message) {\n return this._addCheck({\n kind: \"date\",\n message\n });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options?.message)\n });\n }\n duration(message) {\n return this._addCheck({\n kind: \"duration\",\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(options?.message)\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ..._helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message)\n });\n }\n /**\n * Equivalent to `.min(1)`\n */ nonempty(message) {\n return this.min(1, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind: \"trim\"\n }\n ]\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind: \"toLowerCase\"\n }\n ]\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind: \"toUpperCase\"\n }\n ]\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch)=>ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch)=>ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch)=>ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch)=>ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch)=>ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch)=>ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch)=>ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch)=>ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch)=>ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch)=>ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch)=>ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch)=>ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch)=>ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params)=>{\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params)\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return valInt % stepInt / 10 ** decCount;\n}\nclass ZodNumber extends ZodType {\n constructor(){\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.number,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n let ctx = undefined;\n const status = new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus();\n for (const check of this._def.checks){\n if (check.kind === \"int\") {\n if (!_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.not_finite,\n message: check.message\n });\n status.dirty();\n }\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: input.data\n };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n ]\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch)=>ch.kind === \"int\" || ch.kind === \"multipleOf\" && _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.isInteger(ch.value));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n } else if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n } else if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params)=>{\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params)\n });\n};\nclass ZodBigInt extends ZodType {\n constructor(){\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n } catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus();\n for (const check of this._def.checks){\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message\n });\n status.dirty();\n }\n } else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message\n });\n status.dirty();\n }\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: input.data\n };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.bigint,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n ]\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params)=>{\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params)\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.boolean,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodBoolean.create = (params)=>{\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params)\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.date,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_date\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const status = new _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks){\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\"\n });\n status.dirty();\n }\n } else {\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime())\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [\n ...this._def.checks,\n check\n ]\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min) min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks){\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max) max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params)=>{\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params)\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.symbol,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodSymbol.create = (params)=>{\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params)\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodUndefined.create = (params)=>{\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params)\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.null,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodNull.create = (params)=>{\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params)\n });\n};\nclass ZodAny extends ZodType {\n constructor(){\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodAny.create = (params)=>{\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params)\n });\n};\nclass ZodUnknown extends ZodType {\n constructor(){\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodUnknown.create = (params)=>{\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params)\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.never,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n}\nZodNever.create = (params)=>{\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params)\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.void,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n}\nZodVoid.create = (params)=>{\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params)\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: tooBig ? _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big : _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: tooSmall ? def.exactLength.value : undefined,\n maximum: tooBig ? def.exactLength.value : undefined,\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([\n ...ctx.data\n ].map((item, i)=>{\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result)=>{\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeArray(status, result);\n });\n }\n const result = [\n ...ctx.data\n ].map((item, i)=>{\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: {\n value: minLength,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: {\n value: maxLength,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: {\n value: len,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params)=>{\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params)\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for(const key in schema.shape){\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: ()=>newShape\n });\n } else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element)\n });\n } else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n } else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item)=>deepPartialify(item)));\n } else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor(){\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */ this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */ this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null) return this._cached;\n const shape = this._def.shape();\n const keys = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(shape);\n this._cached = {\n shape,\n keys\n };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for(const key in ctx.data){\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys){\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: {\n status: \"valid\",\n value: key\n },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys){\n pairs.push({\n key: {\n status: \"valid\",\n value: key\n },\n value: {\n status: \"valid\",\n value: ctx.data[key]\n }\n });\n }\n } else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.unrecognized_keys,\n keys: extraKeys\n });\n status.dirty();\n }\n } else if (unknownKeys === \"strip\") {} else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n } else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys){\n const value = ctx.data[key];\n pairs.push({\n key: {\n status: \"valid\",\n value: key\n },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve().then(async ()=>{\n const syncPairs = [];\n for (const pair of pairs){\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet\n });\n }\n return syncPairs;\n }).then((syncPairs)=>{\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeObjectSync(status, syncPairs);\n });\n } else {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...message !== undefined ? {\n errorMap: (issue, ctx)=>{\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\") return {\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.errToObj(message).message ?? defaultError\n };\n return {\n message: defaultError\n };\n }\n } : {}\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\"\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\"\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: ()=>({\n ...this._def.shape(),\n ...augmentation\n })\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */ merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: ()=>({\n ...this._def.shape(),\n ...merging._def.shape()\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({\n [key]: schema\n });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(mask)){\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>shape\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(this.shape)){\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>shape\n });\n }\n /**\n * @deprecated\n */ deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(this.shape)){\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n } else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>newShape\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(this.shape)){\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n } else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while(newField instanceof ZodOptional){\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: ()=>newShape\n });\n }\n keyof() {\n return createZodEnum(_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params)=>{\n return new ZodObject({\n shape: ()=>shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nZodObject.strictCreate = (shape, params)=>{\n return new ZodObject({\n shape: ()=>shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nZodObject.lazycreate = (shape, params)=>{\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params)\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results){\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results){\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result)=>new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(result.ctx.common.issues));\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_union,\n unionErrors\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option)=>{\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n }),\n ctx: childCtx\n };\n })).then(handleResults);\n } else {\n let dirty = undefined;\n const issues = [];\n for (const option of options){\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n },\n parent: null\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx\n });\n if (result.status === \"valid\") {\n return result;\n } else if (result.status === \"dirty\" && !dirty) {\n dirty = {\n result,\n ctx: childCtx\n };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues)=>new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(issues));\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_union,\n unionErrors\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params)=>{\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params)\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type)=>{\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n } else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n } else if (type instanceof ZodLiteral) {\n return [\n type.value\n ];\n } else if (type instanceof ZodEnum) {\n return type.options;\n } else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectValues(type.enum);\n } else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n } else if (type instanceof ZodUndefined) {\n return [\n undefined\n ];\n } else if (type instanceof ZodNull) {\n return [\n null\n ];\n } else if (type instanceof ZodOptional) {\n return [\n undefined,\n ...getDiscriminator(type.unwrap())\n ];\n } else if (type instanceof ZodNullable) {\n return [\n null,\n ...getDiscriminator(type.unwrap())\n ];\n } else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n } else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n } else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n } else {\n return [];\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [\n discriminator\n ]\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n } else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */ static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options){\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues){\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params)\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(a);\n const bType = (0,_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.getParsedType)(b);\n if (a === b) {\n return {\n valid: true,\n data: a\n };\n } else if (aType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object && bType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object) {\n const bKeys = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(b);\n const sharedKeys = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectKeys(a).filter((key)=>bKeys.indexOf(key) !== -1);\n const newObj = {\n ...a,\n ...b\n };\n for (const key of sharedKeys){\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return {\n valid: false\n };\n }\n newObj[key] = sharedValue.data;\n }\n return {\n valid: true,\n data: newObj\n };\n } else if (aType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array && bType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array) {\n if (a.length !== b.length) {\n return {\n valid: false\n };\n }\n const newArray = [];\n for(let index = 0; index < a.length; index++){\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return {\n valid: false\n };\n }\n newArray.push(sharedValue.data);\n }\n return {\n valid: true,\n data: newArray\n };\n } else if (aType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.date && bType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.date && +a === +b) {\n return {\n valid: true,\n data: a\n };\n } else {\n return {\n valid: false\n };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight)=>{\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAborted)(parsedLeft) || (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAborted)(parsedRight)) {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_intersection_types\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isDirty)(parsedLeft) || (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isDirty)(parsedRight)) {\n status.dirty();\n }\n return {\n status: status.value,\n value: merged.data\n };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n })\n ]).then(([left, right])=>handleParsed(left, right));\n } else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params)=>{\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params)\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.array,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\"\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\"\n });\n status.dirty();\n }\n const items = [\n ...ctx.data\n ].map((item, itemIndex)=>{\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema) return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n }).filter((x)=>!!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results)=>{\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeArray(status, results);\n });\n } else {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest\n });\n }\n}\nZodTuple.create = (schemas, params)=>{\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params)\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.object,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for(const key in ctx.data){\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data\n });\n }\n if (ctx.common.async) {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeObjectAsync(status, pairs);\n } else {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third)\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second)\n });\n }\n}\nclass ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.map) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.map,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [\n ...ctx.data.entries()\n ].map(([key, value], index)=>{\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [\n index,\n \"key\"\n ])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [\n index,\n \"value\"\n ]))\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async ()=>{\n for (const pair of pairs){\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return {\n status: status.value,\n value: finalMap\n };\n });\n } else {\n const finalMap = new Map();\n for (const pair of pairs){\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return {\n status: status.value,\n value: finalMap\n };\n }\n }\n}\nZodMap.create = (keyType, valueType, params)=>{\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params)\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.set) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.set,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements){\n if (element.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (element.status === \"dirty\") status.dirty();\n parsedSet.add(element.value);\n }\n return {\n status: status.value,\n value: parsedSet\n };\n }\n const elements = [\n ...ctx.data.values()\n ].map((item, i)=>valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements)=>finalizeSet(elements));\n } else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: {\n value: minSize,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: {\n value: maxSize,\n message: _helpers_errorUtil_js__WEBPACK_IMPORTED_MODULE_3__.errorUtil.toString(message)\n }\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params)=>{\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params)\n });\n};\nclass ZodFunction extends ZodType {\n constructor(){\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.function) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.function,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n function makeArgsIssue(args, error) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.makeIssue)({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n (0,_errors_js__WEBPACK_IMPORTED_MODULE_4__.getErrorMap)(),\n _errors_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n ].filter((x)=>!!x),\n issueData: {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_arguments,\n argumentsError: error\n }\n });\n }\n function makeReturnsIssue(returns, error) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.makeIssue)({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n (0,_errors_js__WEBPACK_IMPORTED_MODULE_4__.getErrorMap)(),\n _errors_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n ].filter((x)=>!!x),\n issueData: {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_return_type,\n returnTypeError: error\n }\n });\n }\n const params = {\n errorMap: ctx.common.contextualErrorMap\n };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(async function(...args) {\n const error = new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e)=>{\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type.parseAsync(result, params).catch((e)=>{\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n } else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(function(...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError([\n makeArgsIssue(args, parsedArgs.error)\n ]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError([\n makeReturnsIssue(result, parsedReturns.error)\n ]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create())\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: args ? args : ZodTuple.create([]).rest(ZodUnknown.create()),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params)\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n }\n}\nZodLazy.create = (getter, params)=>{\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params)\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n received: ctx.data,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_literal,\n expected: this._def.value\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return {\n status: \"valid\",\n value: input.data\n };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params)=>{\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params)\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params)\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n received: ctx.data,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_enum_value,\n options: expectedValues\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values){\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values){\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values){\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt)=>!values.includes(opt)), {\n ...this._def,\n ...newDef\n });\n }\n}\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.string && ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.number) {\n const expectedValues = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectValues(nativeEnumValues);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(_helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.objectValues(nativeEnumValues);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n received: ctx.data,\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_enum_value,\n options: expectedValues\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params)=>{\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params)\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.promise && ctx.common.async === false) {\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.promise,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n const promisified = ctx.parsedType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(promisified.then((data)=>{\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap\n });\n }));\n }\n}\nZodPromise.create = (schema, params)=>{\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params)\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects ? this._def.schema.sourceType() : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg)=>{\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, arg);\n if (arg.fatal) {\n status.abort();\n } else {\n status.dirty();\n }\n },\n get path () {\n return ctx.path;\n }\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed)=>{\n if (status.value === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx\n });\n if (result.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (result.status === \"dirty\") return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(result.value);\n if (status.value === \"dirty\") return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(result.value);\n return result;\n });\n } else {\n if (status.value === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx\n });\n if (result.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (result.status === \"dirty\") return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(result.value);\n if (status.value === \"dirty\") return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc)=>{\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inner.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (inner.status === \"dirty\") status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return {\n status: status.value,\n value: inner.value\n };\n } else {\n return this._def.schema._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }).then((inner)=>{\n if (inner.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (inner.status === \"dirty\") status.dirty();\n return executeRefinement(inner.value).then(()=>{\n return {\n status: status.value,\n value: inner.value\n };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (!(0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(base)) return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return {\n status: status.value,\n value: result\n };\n } else {\n return this._def.schema._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n }).then((base)=>{\n if (!(0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(base)) return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result)=>({\n status: status.value,\n value: result\n }));\n });\n }\n }\n _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params)=>{\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params)\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params)=>{\n return new ZodEffects({\n schema,\n effect: {\n type: \"preprocess\",\n transform: preprocess\n },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params)\n });\n};\n\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params)=>{\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params)\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.null) {\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.OK)(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params)=>{\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params)\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params)=>{\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : ()=>params.default,\n ...processCreateParams(params)\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: []\n }\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx\n }\n });\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAsync)(result)) {\n return result.then((result)=>{\n return {\n status: \"valid\",\n value: result.status === \"valid\" ? result.value : this._def.catchValue({\n get error () {\n return new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(newCtx.common.issues);\n },\n input: newCtx.data\n })\n };\n });\n } else {\n return {\n status: \"valid\",\n value: result.status === \"valid\" ? result.value : this._def.catchValue({\n get error () {\n return new _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodError(newCtx.common.issues);\n },\n input: newCtx.data\n })\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params)=>{\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : ()=>params.catch,\n ...processCreateParams(params)\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.addIssueToContext)(ctx, {\n code: _ZodError_js__WEBPACK_IMPORTED_MODULE_1__.ZodIssueCode.invalid_type,\n expected: _helpers_util_js__WEBPACK_IMPORTED_MODULE_2__.ZodParsedType.nan,\n received: ctx.parsedType\n });\n return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n }\n return {\n status: \"valid\",\n value: input.data\n };\n }\n}\nZodNaN.create = (params)=>{\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params)\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async ()=>{\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inResult.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.DIRTY)(inResult.value);\n } else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx\n });\n }\n };\n return handleAsync();\n } else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx\n });\n if (inResult.status === \"aborted\") return _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value\n };\n } else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline\n });\n }\n}\nclass ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data)=>{\n if ((0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isValid)(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return (0,_helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.isAsync)(result) ? result.then((data)=>freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params)=>{\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params)\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? {\n message: params\n } : params;\n const p2 = typeof p === \"string\" ? {\n message: p\n } : p;\n return p2;\n}\nfunction custom(check, _params = {}, /**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */ fatal) {\n if (check) return ZodAny.create().superRefine((data, ctx)=>{\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r)=>{\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({\n code: \"custom\",\n ...params,\n fatal: _fatal\n });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({\n code: \"custom\",\n ...params,\n fatal: _fatal\n });\n }\n return;\n });\n return ZodAny.create();\n}\n\nconst late = {\n object: ZodObject.lazycreate\n};\nvar ZodFirstPartyTypeKind;\n(function(ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._){}\n}\nconst instanceOfType = (// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`\n})=>custom((data)=>data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = ()=>stringType().optional();\nconst onumber = ()=>numberType().optional();\nconst oboolean = ()=>booleanType().optional();\nconst coerce = {\n string: (arg)=>ZodString.create({\n ...arg,\n coerce: true\n }),\n number: (arg)=>ZodNumber.create({\n ...arg,\n coerce: true\n }),\n boolean: (arg)=>ZodBoolean.create({\n ...arg,\n coerce: true\n }),\n bigint: (arg)=>ZodBigInt.create({\n ...arg,\n coerce: true\n }),\n date: (arg)=>ZodDate.create({\n ...arg,\n coerce: true\n })\n};\n\nconst NEVER = _helpers_parseUtil_js__WEBPACK_IMPORTED_MODULE_0__.INVALID;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvLnBucG0vem9kQDMuMjUuNzYvbm9kZV9tb2R1bGVzL3pvZC92My90eXBlcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF3RDtBQUNHO0FBQ1I7QUFDMkY7QUFDdkU7QUFDdkUsTUFBTWtCO0lBQ0YsWUFBWUMsTUFBTSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsR0FBRyxDQUFFO1FBQ2xDLElBQUksQ0FBQ0MsV0FBVyxHQUFHLEVBQUU7UUFDckIsSUFBSSxDQUFDSixNQUFNLEdBQUdBO1FBQ2QsSUFBSSxDQUFDSyxJQUFJLEdBQUdKO1FBQ1osSUFBSSxDQUFDSyxLQUFLLEdBQUdKO1FBQ2IsSUFBSSxDQUFDSyxJQUFJLEdBQUdKO0lBQ2hCO0lBQ0EsSUFBSUQsT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUNFLFdBQVcsQ0FBQ0ksTUFBTSxFQUFFO1lBQzFCLElBQUlDLE1BQU1DLE9BQU8sQ0FBQyxJQUFJLENBQUNILElBQUksR0FBRztnQkFDMUIsSUFBSSxDQUFDSCxXQUFXLENBQUNPLElBQUksSUFBSSxJQUFJLENBQUNMLEtBQUssS0FBSyxJQUFJLENBQUNDLElBQUk7WUFDckQsT0FDSztnQkFDRCxJQUFJLENBQUNILFdBQVcsQ0FBQ08sSUFBSSxJQUFJLElBQUksQ0FBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQ0MsSUFBSTtZQUNsRDtRQUNKO1FBQ0EsT0FBTyxJQUFJLENBQUNILFdBQVc7SUFDM0I7QUFDSjtBQUNBLE1BQU1RLGVBQWUsQ0FBQ0MsS0FBS0M7SUFDdkIsSUFBSXBCLDhEQUFPQSxDQUFDb0IsU0FBUztRQUNqQixPQUFPO1lBQUVDLFNBQVM7WUFBTVYsTUFBTVMsT0FBT2IsS0FBSztRQUFDO0lBQy9DLE9BQ0s7UUFDRCxJQUFJLENBQUNZLElB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UyxRQUFRO1FBQUs7SUFDMURnSCxTQUFVLENBQUM4TCxNQUFRaE0sV0FBV25MLE1BQU0sQ0FBQztZQUNqQyxHQUFHbVgsR0FBRztZQUNOOVMsUUFBUTtRQUNaO0lBQ0E2RyxRQUFTLENBQUNpTSxNQUFRcE0sVUFBVS9LLE1BQU0sQ0FBQztZQUFFLEdBQUdtWCxHQUFHO1lBQUU5UyxRQUFRO1FBQUs7SUFDMUQyQyxNQUFPLENBQUNtUSxNQUFRN0wsUUFBUXRMLE1BQU0sQ0FBQztZQUFFLEdBQUdtWCxHQUFHO1lBQUU5UyxRQUFRO1FBQUs7QUFDMUQsRUFBRTtBQUNzM0I7QUFDajNCLE1BQU11WSxRQUFRMWpCLDBEQUFPQSxDQUFDIiwic291cmNlcyI6WyIvVXNlcnMvbWFyY21pbnRlbC9Qcm9qZWN0cy9lLXRpYi5jb20vbm9kZV9tb2R1bGVzLy5wbnBtL3pvZEAzLjI1Ljc2L25vZGVfbW9kdWxlcy96b2QvdjMvdHlwZXMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWm9kRXJyb3IsIFpvZElzc3VlQ29kZSwgfSBmcm9tIFwiLi9ab2RFcnJvci5qc1wiO1xuaW1wb3J0IHsgZGVmYXVsdEVycm9yTWFwLCBnZXRFcnJvck1hcCB9IGZyb20gXCIuL2Vycm9ycy5qc1wiO1xuaW1wb3J0IHsgZXJyb3JVdGlsIH0gZnJvbSBcIi4vaGVscGVycy9lcnJvclV0aWwuanNcIjtcbmltcG9ydCB7IERJUlRZLCBJTlZBTElELCBPSywgUGFyc2VTdGF0dXMsIGFkZElzc3VlVG9Db250ZXh0LCBpc0Fib3J0ZWQsIGlzQXN5bmMsIGlzRGlydHksIGlzVmFsaWQsIG1ha2VJc3N1ZSwgfSBmcm9tIFwiLi9oZWxwZXJzL3BhcnNlVXRpbC5qc1wiO1xuaW1wb3J0IHsgdXRpbCwgWm9kUGFyc2VkVHlwZSwgZ2V0UGFyc2VkVHlwZSB9IGZyb20gXCIuL2hlbHBlcnMvdXRpbC5qc1wiO1xuY2xhc3MgUGFyc2VJbnB1dExhenlQYXRoIHtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnQsIHZhbHVlLCBwYXRoLCBrZXkpIHtcbiAgICAgICAgdGhpcy5fY2FjaGVkUGF0aCA9IFtdO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgdGhpcy5kYXRhID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX3BhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG4gICAgfVxuICAgIGdldCBwYXRoKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFBhdGgubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl9rZXkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkUGF0aC5wdXNoKC4uLnRoaXMuX3BhdGgsIC4uLnRoaXMuX2tleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRQYXRoLnB1c2goLi4udGhpcy5fcGF0aCwgdGhpcy5fa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkUGF0aDtcbiAgICB9XG59XG5jb25zdCBoYW5kbGVSZXN1bHQgPSAoY3R4LCByZXN1bHQpID0+IHtcbiAgICBpZiAoaXNWYWxpZChyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IHJlc3VsdC52YWx1ZSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaWYgKCFjdHguY29tbW9uLmlzc3Vlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlZhbGlkYXRpb24gZmFpbGVkIGJ1dCBubyBpc3N1ZXMgZGV0ZWN0ZWQuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIGdldCBlcnJvcigpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9lcnJvcjtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihjdHguY29tbW9uLmlzc3Vlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3IgPSBlcnJvcjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZXJyb3I7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn07XG5mdW5jdGlvbiBwcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcykge1xuICAgIGlmICghcGFyYW1zKVxuICAgICAgICByZXR1cm4ge307XG4gICAgY29uc3QgeyBlcnJvck1hcCwgaW52YWxpZF90eXBlX2Vycm9yLCByZXF1aXJlZF9lcnJvciwgZGVzY3JpcHRpb24gfSA9IHBhcmFtcztcbiAgICBpZiAoZXJyb3JNYXAgJiYgKGludmFsaWRfdHlwZV9lcnJvciB8fCByZXF1aXJlZF9lcnJvcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW4ndCB1c2UgXCJpbnZhbGlkX3R5cGVfZXJyb3JcIiBvciBcInJlcXVpcmVkX2Vycm9yXCIgaW4gY29uanVuY3Rpb24gd2l0aCBjdXN0b20gZXJyb3IgbWFwLmApO1xuICAgIH1cbiAgICBpZiAoZXJyb3JNYXApXG4gICAgICAgIHJldHVybiB7IGVycm9yTWFwOiBlcnJvck1hcCwgZGVzY3JpcHRpb24gfTtcbiAgICBjb25zdCBjdXN0b21NYXAgPSAoaXNzLCBjdHgpID0+IHtcbiAgICAgICAgY29uc3QgeyBtZXNzYWdlIH0gPSBwYXJhbXM7XG4gICAgICAgIGlmIChpc3MuY29kZSA9PT0gXCJpbnZhbGlkX2VudW1fdmFsdWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogbWVzc2FnZSA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjdHguZGF0YSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogbWVzc2FnZSA/PyByZXF1aXJlZF9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzcy5jb2RlICE9PSBcImludmFsaWRfdHlwZVwiKVxuICAgICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogY3R4LmRlZmF1bHRFcnJvciB9O1xuICAgICAgICByZXR1cm4geyBtZXNzYWdlOiBtZXNzYWdlID8/IGludmFsaWRfdHlwZV9lcnJvciA/PyBjdHguZGVmYXVsdEVycm9yIH07XG4gICAgfTtcbiAgICByZXR1cm4geyBlcnJvck1hcDogY3VzdG9tTWFwLCBkZXNjcmlwdGlvbiB9O1xufVxuZXhwb3J0IGNsYXNzIFpvZFR5cGUge1xuICAgIGdldCBkZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5kZXNjcmlwdGlvbjtcbiAgICB9XG4gICAgX2dldFR5cGUoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIGdldFBhcnNlZFR5cGUoaW5wdXQuZGF0YSk7XG4gICAgfVxuICAgIF9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KSB7XG4gICAgICAgIHJldHVybiAoY3R4IHx8IHtcbiAgICAgICAgICAgIGNvbW1vbjogaW5wdXQucGFyZW50LmNvbW1vbixcbiAgICAgICAgICAgIGRhdGE6IGlucHV0LmRhdGEsXG4gICAgICAgICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpLFxuICAgICAgICAgICAgc2NoZW1hRXJyb3JNYXA6IHRoaXMuX2RlZi5lcnJvck1hcCxcbiAgICAgICAgICAgIHBhdGg6IGlucHV0LnBhdGgsXG4gICAgICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXR1czogbmV3IFBhcnNlU3RhdHVzKCksXG4gICAgICAgICAgICBjdHg6IHtcbiAgICAgICAgICAgICAgICBjb21tb246IGlucHV0LnBhcmVudC5jb21tb24sXG4gICAgICAgICAgICAgICAgZGF0YTogaW5wdXQuZGF0YSxcbiAgICAgICAgICAgICAgICBwYXJzZWRUeXBlOiBnZXRQYXJzZWRUeXBlKGlucHV0LmRhdGEpLFxuICAgICAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICAgICAgcGF0aDogaW5wdXQucGF0aCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGlucHV0LnBhcmVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9wYXJzZVN5bmMoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2UoaW5wdXQpO1xuICAgICAgICBpZiAoaXNBc3luYyhyZXN1bHQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jaHJvbm91cyBwYXJzZSBlbmNvdW50ZXJlZCBwcm9taXNlLlwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICBfcGFyc2VBc3luYyhpbnB1dCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9wYXJzZShpbnB1dCk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICB9XG4gICAgcGFyc2UoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2FmZVBhcnNlKGRhdGEsIHBhcmFtcyk7XG4gICAgICAgIGlmIChyZXN1bHQuc3VjY2VzcylcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICAgICAgdGhyb3cgcmVzdWx0LmVycm9yO1xuICAgIH1cbiAgICBzYWZlUGFyc2UoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgYXN5bmM6IHBhcmFtcz8uYXN5bmMgPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgY29udGV4dHVhbEVycm9yTWFwOiBwYXJhbXM/LmVycm9yTWFwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhdGg6IHBhcmFtcz8ucGF0aCB8fCBbXSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fcGFyc2VTeW5jKHsgZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pO1xuICAgICAgICByZXR1cm4gaGFuZGxlUmVzdWx0KGN0eCwgcmVzdWx0KTtcbiAgICB9XG4gICAgXCJ+dmFsaWRhdGVcIihkYXRhKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgYXN5bmM6ICEhdGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luYyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYXRoOiBbXSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCF0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX3BhcnNlU3luYyh7IGRhdGEsIHBhdGg6IFtdLCBwYXJlbnQ6IGN0eCB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNWYWxpZChyZXN1bHQpXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlczogY3R4LmNvbW1vbi5pc3N1ZXMsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycj8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoXCJlbmNvdW50ZXJlZFwiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzW1wifnN0YW5kYXJkXCJdLmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3R4LmNvbW1vbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmM6IHRydWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcGFyc2VBc3luYyh7IGRhdGEsIHBhdGg6IFtdLCBwYXJlbnQ6IGN0eCB9KS50aGVuKChyZXN1bHQpID0+IGlzVmFsaWQocmVzdWx0KVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogY3R4LmNvbW1vbi5pc3N1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICB9XG4gICAgYXN5bmMgcGFyc2VBc3luYyhkYXRhLCBwYXJhbXMpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zYWZlUGFyc2VBc3luYyhkYXRhLCBwYXJhbXMpO1xuICAgICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgICB9XG4gICAgYXN5bmMgc2FmZVBhcnNlQXN5bmMoZGF0YSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgY29udGV4dHVhbEVycm9yTWFwOiBwYXJhbXM/LmVycm9yTWFwLFxuICAgICAgICAgICAgICAgIGFzeW5jOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhdGg6IHBhcmFtcz8ucGF0aCB8fCBbXSxcbiAgICAgICAgICAgIHNjaGVtYUVycm9yTWFwOiB0aGlzLl9kZWYuZXJyb3JNYXAsXG4gICAgICAgICAgICBwYXJlbnQ6IG51bGwsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyc2VkVHlwZTogZ2V0UGFyc2VkVHlwZShkYXRhKSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbWF5YmVBc3luY1Jlc3VsdCA9IHRoaXMuX3BhcnNlKHsgZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoaXNBc3luYyhtYXliZUFzeW5jUmVzdWx0KSA/IG1heWJlQXN5bmNSZXN1bHQgOiBQcm9taXNlLnJlc29sdmUobWF5YmVBc3luY1Jlc3VsdCkpO1xuICAgICAgICByZXR1cm4gaGFuZGxlUmVzdWx0KGN0eCwgcmVzdWx0KTtcbiAgICB9XG4gICAgcmVmaW5lKGNoZWNrLCBtZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IGdldElzc3VlUHJvcGVydGllcyA9ICh2YWwpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlb2YgbWVzc2FnZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IG1lc3NhZ2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZSh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWZpbmVtZW50KCh2YWwsIGN0eCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2hlY2sodmFsKTtcbiAgICAgICAgICAgIGNvbnN0IHNldEVycm9yID0gKCkgPT4gY3R4LmFkZElzc3VlKHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuY3VzdG9tLFxuICAgICAgICAgICAgICAgIC4uLmdldElzc3VlUHJvcGVydGllcyh2YWwpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIFByb21pc2UgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEVycm9yKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcigpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVmaW5lbWVudChjaGVjaywgcmVmaW5lbWVudERhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZmluZW1lbnQoKHZhbCwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNoZWNrKHZhbCkpIHtcbiAgICAgICAgICAgICAgICBjdHguYWRkSXNzdWUodHlwZW9mIHJlZmluZW1lbnREYXRhID09PSBcImZ1bmN0aW9uXCIgPyByZWZpbmVtZW50RGF0YSh2YWwsIGN0eCkgOiByZWZpbmVtZW50RGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfcmVmaW5lbWVudChyZWZpbmVtZW50KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kRWZmZWN0cyh7XG4gICAgICAgICAgICBzY2hlbWE6IHRoaXMsXG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXG4gICAgICAgICAgICBlZmZlY3Q6IHsgdHlwZTogXCJyZWZpbmVtZW50XCIsIHJlZmluZW1lbnQgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHN1cGVyUmVmaW5lKHJlZmluZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZmluZW1lbnQocmVmaW5lbWVudCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGRlZikge1xuICAgICAgICAvKiogQWxpYXMgb2Ygc2FmZVBhcnNlQXN5bmMgKi9cbiAgICAgICAgdGhpcy5zcGEgPSB0aGlzLnNhZmVQYXJzZUFzeW5jO1xuICAgICAgICB0aGlzLl9kZWYgPSBkZWY7XG4gICAgICAgIHRoaXMucGFyc2UgPSB0aGlzLnBhcnNlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2FmZVBhcnNlID0gdGhpcy5zYWZlUGFyc2UuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5wYXJzZUFzeW5jID0gdGhpcy5wYXJzZUFzeW5jLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc2FmZVBhcnNlQXN5bmMgPSB0aGlzLnNhZmVQYXJzZUFzeW5jLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuc3BhID0gdGhpcy5zcGEuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5yZWZpbmUgPSB0aGlzLnJlZmluZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnJlZmluZW1lbnQgPSB0aGlzLnJlZmluZW1lbnQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5zdXBlclJlZmluZSA9IHRoaXMuc3VwZXJSZWZpbmUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5vcHRpb25hbCA9IHRoaXMub3B0aW9uYWwuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5udWxsYWJsZSA9IHRoaXMubnVsbGFibGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5udWxsaXNoID0gdGhpcy5udWxsaXNoLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuYXJyYXkgPSB0aGlzLmFycmF5LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IHRoaXMucHJvbWlzZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLm9yID0gdGhpcy5vci5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmFuZCA9IHRoaXMuYW5kLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy50cmFuc2Zvcm0uYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5icmFuZCA9IHRoaXMuYnJhbmQuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5kZWZhdWx0ID0gdGhpcy5kZWZhdWx0LmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuY2F0Y2ggPSB0aGlzLmNhdGNoLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMuZGVzY3JpYmUgPSB0aGlzLmRlc2NyaWJlLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXMucGlwZSA9IHRoaXMucGlwZS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gdGhpcy5yZWFkb25seS5iaW5kKHRoaXMpO1xuICAgICAgICB0aGlzLmlzTnVsbGFibGUgPSB0aGlzLmlzTnVsbGFibGUuYmluZCh0aGlzKTtcbiAgICAgICAgdGhpcy5pc09wdGlvbmFsID0gdGhpcy5pc09wdGlvbmFsLmJpbmQodGhpcyk7XG4gICAgICAgIHRoaXNbXCJ+c3RhbmRhcmRcIl0gPSB7XG4gICAgICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICAgICAgdmVuZG9yOiBcInpvZFwiLFxuICAgICAgICAgICAgdmFsaWRhdGU6IChkYXRhKSA9PiB0aGlzW1wifnZhbGlkYXRlXCJdKGRhdGEpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBvcHRpb25hbCgpIHtcbiAgICAgICAgcmV0dXJuIFpvZE9wdGlvbmFsLmNyZWF0ZSh0aGlzLCB0aGlzLl9kZWYpO1xuICAgIH1cbiAgICBudWxsYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIFpvZE51bGxhYmxlLmNyZWF0ZSh0aGlzLCB0aGlzLl9kZWYpO1xuICAgIH1cbiAgICBudWxsaXNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5udWxsYWJsZSgpLm9wdGlvbmFsKCk7XG4gICAgfVxuICAgIGFycmF5KCkge1xuICAgICAgICByZXR1cm4gWm9kQXJyYXkuY3JlYXRlKHRoaXMpO1xuICAgIH1cbiAgICBwcm9taXNlKCkge1xuICAgICAgICByZXR1cm4gWm9kUHJvbWlzZS5jcmVhdGUodGhpcywgdGhpcy5fZGVmKTtcbiAgICB9XG4gICAgb3Iob3B0aW9uKSB7XG4gICAgICAgIHJldHVybiBab2RVbmlvbi5jcmVhdGUoW3RoaXMsIG9wdGlvbl0sIHRoaXMuX2RlZik7XG4gICAgfVxuICAgIGFuZChpbmNvbWluZykge1xuICAgICAgICByZXR1cm4gWm9kSW50ZXJzZWN0aW9uLmNyZWF0ZSh0aGlzLCBpbmNvbWluZywgdGhpcy5fZGVmKTtcbiAgICB9XG4gICAgdHJhbnNmb3JtKHRyYW5zZm9ybSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyh0aGlzLl9kZWYpLFxuICAgICAgICAgICAgc2NoZW1hOiB0aGlzLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzLFxuICAgICAgICAgICAgZWZmZWN0OiB7IHR5cGU6IFwidHJhbnNmb3JtXCIsIHRyYW5zZm9ybSB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZGVmYXVsdChkZWYpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlRnVuYyA9IHR5cGVvZiBkZWYgPT09IFwiZnVuY3Rpb25cIiA/IGRlZiA6ICgpID0+IGRlZjtcbiAgICAgICAgcmV0dXJuIG5ldyBab2REZWZhdWx0KHtcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcy5fZGVmKSxcbiAgICAgICAgICAgIGlubmVyVHlwZTogdGhpcyxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZGVmYXVsdFZhbHVlRnVuYyxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGVmYXVsdCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGJyYW5kKCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEJyYW5kZWQoe1xuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCcmFuZGVkLFxuICAgICAgICAgICAgdHlwZTogdGhpcyxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXModGhpcy5fZGVmKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNhdGNoKGRlZikge1xuICAgICAgICBjb25zdCBjYXRjaFZhbHVlRnVuYyA9IHR5cGVvZiBkZWYgPT09IFwiZnVuY3Rpb25cIiA/IGRlZiA6ICgpID0+IGRlZjtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RDYXRjaCh7XG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHRoaXMuX2RlZiksXG4gICAgICAgICAgICBpbm5lclR5cGU6IHRoaXMsXG4gICAgICAgICAgICBjYXRjaFZhbHVlOiBjYXRjaFZhbHVlRnVuYyxcbiAgICAgICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQ2F0Y2gsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkZXNjcmliZShkZXNjcmlwdGlvbikge1xuICAgICAgICBjb25zdCBUaGlzID0gdGhpcy5jb25zdHJ1Y3RvcjtcbiAgICAgICAgcmV0dXJuIG5ldyBUaGlzKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcGlwZSh0YXJnZXQpIHtcbiAgICAgICAgcmV0dXJuIFpvZFBpcGVsaW5lLmNyZWF0ZSh0aGlzLCB0YXJnZXQpO1xuICAgIH1cbiAgICByZWFkb25seSgpIHtcbiAgICAgICAgcmV0dXJuIFpvZFJlYWRvbmx5LmNyZWF0ZSh0aGlzKTtcbiAgICB9XG4gICAgaXNPcHRpb25hbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVBhcnNlKHVuZGVmaW5lZCkuc3VjY2VzcztcbiAgICB9XG4gICAgaXNOdWxsYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZVBhcnNlKG51bGwpLnN1Y2Nlc3M7XG4gICAgfVxufVxuY29uc3QgY3VpZFJlZ2V4ID0gL15jW15cXHMtXXs4LH0kL2k7XG5jb25zdCBjdWlkMlJlZ2V4ID0gL15bMC05YS16XSskLztcbmNvbnN0IHVsaWRSZWdleCA9IC9eWzAtOUEtSEpLTU5QLVRWLVpdezI2fSQvaTtcbi8vIGNvbnN0IHV1aWRSZWdleCA9XG4vLyAgIC9eKFthLWYwLTldezh9LVthLWYwLTldezR9LVsxLTVdW2EtZjAtOV17M30tW2EtZjAtOV17NH0tW2EtZjAtOV17MTJ9fDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMCkkL2k7XG5jb25zdCB1dWlkUmVnZXggPSAvXlswLTlhLWZBLUZdezh9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezR9XFxiLVswLTlhLWZBLUZdezEyfSQvaTtcbmNvbnN0IG5hbm9pZFJlZ2V4ID0gL15bYS16MC05Xy1dezIxfSQvaTtcbmNvbnN0IGp3dFJlZ2V4ID0gL15bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10rXFwuW0EtWmEtejAtOS1fXSokLztcbmNvbnN0IGR1cmF0aW9uUmVnZXggPSAvXlstK10/UCg/ISQpKD86KD86Wy0rXT9cXGQrWSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtZJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzooPzpbLStdP1xcZCtXKXwoPzpbLStdP1xcZCtbLixdXFxkK1ckKSk/KD86KD86Wy0rXT9cXGQrRCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtEJCkpPyg/OlQoPz1bXFxkKy1dKSg/Oig/OlstK10/XFxkK0gpfCg/OlstK10/XFxkK1suLF1cXGQrSCQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86Wy0rXT9cXGQrKD86Wy4sXVxcZCspP1MpPyk/PyQvO1xuLy8gZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDYxODEvMTU1MDE1NVxuLy8gb2xkIHZlcnNpb246IHRvbyBzbG93LCBkaWRuJ3Qgc3VwcG9ydCB1bmljb2RlXG4vLyBjb25zdCBlbWFpbFJlZ2V4ID0gL14oKChbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKFxcLihbYS16XXxcXGR8WyEjXFwkJSYnXFwqXFwrXFwtXFwvPVxcP1xcXl9ge1xcfH1+XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkrKSopfCgoXFx4MjIpKCgoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oKFtcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDdmXXxcXHgyMXxbXFx4MjMtXFx4NWJdfFtcXHg1ZC1cXHg3ZV18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pfChcXFxcKFtcXHgwMS1cXHgwOVxceDBiXFx4MGNcXHgwZC1cXHg3Zl18W1xcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl0pKSkpKigoKFxceDIwfFxceDA5KSooXFx4MGRcXHgwYSkpPyhcXHgyMHxcXHgwOSkrKT8oXFx4MjIpKSlAKCgoW2Etel18XFxkfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKXwoKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFxcZHxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkpKVxcLikrKChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSl8KChbYS16XXxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkoW2Etel18XFxkfC18XFwufF98fnxbXFx1MDBBMC1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkVGXSkqKFthLXpdfFtcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdKSkpJC9pO1xuLy9vbGQgZW1haWwgcmVnZXhcbi8vIGNvbnN0IGVtYWlsUmVnZXggPSAvXigoW148PigpW1xcXS4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKD8hLSkoW148PigpW1xcXS4sOzpcXHNAXCJdK1xcLikrW148PigpW1xcXS4sOzpcXHNAXCJdezEsfSlbXi08PigpW1xcXS4sOzpcXHNAXCJdJC9pO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4vLyBjb25zdCBlbWFpbFJlZ2V4ID1cbi8vICAgL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcXFwiXSsoXFwuW148PigpW1xcXVxcXFwuLDs6XFxzQFxcXCJdKykqKXwoXFxcIi4rXFxcIikpQCgoXFxbKCgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpXFwuKXszfSgoMjVbMC01XSl8KDJbMC00XVswLTldKXwoMVswLTldezJ9KXwoWzAtOV17MSwyfSkpXFxdKXwoXFxbSVB2NjooKFthLWYwLTldezEsNH06KXs3fXw6OihbYS1mMC05XXsxLDR9Oil7MCw2fXwoW2EtZjAtOV17MSw0fTopezF9OihbYS1mMC05XXsxLDR9Oil7MCw1fXwoW2EtZjAtOV17MSw0fTopezJ9OihbYS1mMC05XXsxLDR9Oil7MCw0fXwoW2EtZjAtOV17MSw0fTopezN9OihbYS1mMC05XXsxLDR9Oil7MCwzfXwoW2EtZjAtOV17MSw0fTopezR9OihbYS1mMC05XXsxLDR9Oil7MCwyfXwoW2EtZjAtOV17MSw0fTopezV9OihbYS1mMC05XXsxLDR9Oil7MCwxfSkoW2EtZjAtOV17MSw0fXwoKCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSlcXC4pezN9KCgyNVswLTVdKXwoMlswLTRdWzAtOV0pfCgxWzAtOV17Mn0pfChbMC05XXsxLDJ9KSkpXFxdKXwoW0EtWmEtejAtOV0oW0EtWmEtejAtOS1dKltBLVphLXowLTldKSooXFwuW0EtWmEtel17Mix9KSspKSQvO1xuLy8gY29uc3QgZW1haWxSZWdleCA9XG4vLyAgIC9eW2EtekEtWjAtOVxcLlxcIVxcI1xcJFxcJVxcJlxcJ1xcKlxcK1xcL1xcPVxcP1xcXlxcX1xcYFxce1xcfFxcfVxcflxcLV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlxcLlthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPykqJC87XG4vLyBjb25zdCBlbWFpbFJlZ2V4ID1cbi8vICAgL14oPzpbYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKD86XFwuW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKykqfFwiKD86W1xceDAxLVxceDA4XFx4MGJcXHgwY1xceDBlLVxceDFmXFx4MjFcXHgyMy1cXHg1YlxceDVkLVxceDdmXXxcXFxcW1xceDAxLVxceDA5XFx4MGJcXHgwY1xceDBlLVxceDdmXSkqXCIpQCg/Oig/OlthLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT9cXC4pK1thLXowLTldKD86W2EtejAtOS1dKlthLXowLTldKT98XFxbKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXxbMDFdP1swLTldWzAtOV0/KVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT98W2EtejAtOS1dKlthLXowLTldOig/OltcXHgwMS1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZlxceDIxLVxceDVhXFx4NTMtXFx4N2ZdfFxcXFxbXFx4MDEtXFx4MDlcXHgwYlxceDBjXFx4MGUtXFx4N2ZdKSspXFxdKSQvaTtcbmNvbnN0IGVtYWlsUmVnZXggPSAvXig/IVxcLikoPyEuKlxcLlxcLikoW0EtWjAtOV8nK1xcLVxcLl0qKVtBLVowLTlfKy1dQChbQS1aMC05XVtBLVowLTlcXC1dKlxcLikrW0EtWl17Mix9JC9pO1xuLy8gY29uc3QgZW1haWxSZWdleCA9XG4vLyAgIC9eW2EtejAtOS4hIyQlJuKAmSorLz0/Xl9ge3x9fi1dK0BbYS16MC05LV0rKD86XFwuW2EtejAtOVxcLV0rKSokL2k7XG4vLyBmcm9tIGh0dHBzOi8vdGhla2V2aW5zY290dC5jb20vZW1vamlzLWluLWphdmFzY3JpcHQvI3dyaXRpbmctYS1yZWd1bGFyLWV4cHJlc3Npb25cbmNvbnN0IF9lbW9qaVJlZ2V4ID0gYF4oXFxcXHB7RXh0ZW5kZWRfUGljdG9ncmFwaGljfXxcXFxccHtFbW9qaV9Db21wb25lbnR9KSskYDtcbmxldCBlbW9qaVJlZ2V4O1xuLy8gZmFzdGVyLCBzaW1wbGVyLCBzYWZlclxuY29uc3QgaXB2NFJlZ2V4ID0gL14oPzooPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pXFwuKXszfSg/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSkkLztcbmNvbnN0IGlwdjRDaWRyUmVnZXggPSAvXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLygzWzAtMl18WzEyXT9bMC05XSkkLztcbi8vIGNvbnN0IGlwdjZSZWdleCA9XG4vLyAvXigoW2EtZjAtOV17MSw0fTopezd9fDo6KFthLWYwLTldezEsNH06KXswLDZ9fChbYS1mMC05XXsxLDR9Oil7MX06KFthLWYwLTldezEsNH06KXswLDV9fChbYS1mMC05XXsxLDR9Oil7Mn06KFthLWYwLTldezEsNH06KXswLDR9fChbYS1mMC05XXsxLDR9Oil7M306KFthLWYwLTldezEsNH06KXswLDN9fChbYS1mMC05XXsxLDR9Oil7NH06KFthLWYwLTldezEsNH06KXswLDJ9fChbYS1mMC05XXsxLDR9Oil7NX06KFthLWYwLTldezEsNH06KXswLDF9KShbYS1mMC05XXsxLDR9fCgoKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKVxcLil7M30oKDI1WzAtNV0pfCgyWzAtNF1bMC05XSl8KDFbMC05XXsyfSl8KFswLTldezEsMn0pKSkkLztcbmNvbnN0IGlwdjZSZWdleCA9IC9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKSQvO1xuY29uc3QgaXB2NkNpZHJSZWdleCA9IC9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKVxcLygxMlswLThdfDFbMDFdWzAtOV18WzEtOV0/WzAtOV0pJC87XG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83ODYwMzkyL2RldGVybWluZS1pZi1zdHJpbmctaXMtaW4tYmFzZTY0LXVzaW5nLWphdmFzY3JpcHRcbmNvbnN0IGJhc2U2NFJlZ2V4ID0gL14oWzAtOWEtekEtWisvXXs0fSkqKChbMC05YS16QS1aKy9dezJ9PT0pfChbMC05YS16QS1aKy9dezN9PSkpPyQvO1xuLy8gaHR0cHM6Ly9iYXNlNjQuZ3VydS9zdGFuZGFyZHMvYmFzZTY0dXJsXG5jb25zdCBiYXNlNjR1cmxSZWdleCA9IC9eKFswLTlhLXpBLVotX117NH0pKigoWzAtOWEtekEtWi1fXXsyfSg9PSk/KXwoWzAtOWEtekEtWi1fXXszfSg9KT8pKT8kLztcbi8vIHNpbXBsZVxuLy8gY29uc3QgZGF0ZVJlZ2V4U291cmNlID0gYFxcXFxkezR9LVxcXFxkezJ9LVxcXFxkezJ9YDtcbi8vIG5vIGxlYXAgeWVhciB2YWxpZGF0aW9uXG4vLyBjb25zdCBkYXRlUmVnZXhTb3VyY2UgPSBgXFxcXGR7NH0tKCgwWzEzNTc4XXwxMHwxMiktMzF8KDBbMTMtOV18MVswLTJdKS0zMHwoMFsxLTldfDFbMC0yXSktKDBbMS05XXwxXFxcXGR8MlxcXFxkKSlgO1xuLy8gd2l0aCBsZWFwIHllYXIgdmFsaWRhdGlvblxuY29uc3QgZGF0ZVJlZ2V4U291cmNlID0gYCgoXFxcXGRcXFxcZFsyNDY4XVswNDhdfFxcXFxkXFxcXGRbMTM1NzldWzI2XXxcXFxcZFxcXFxkMFs0OF18WzAyNDY4XVswNDhdMDB8WzEzNTc5XVsyNl0wMCktMDItMjl8XFxcXGR7NH0tKCgwWzEzNTc4XXwxWzAyXSktKDBbMS05XXxbMTJdXFxcXGR8M1swMV0pfCgwWzQ2OV18MTEpLSgwWzEtOV18WzEyXVxcXFxkfDMwKXwoMDIpLSgwWzEtOV18MVxcXFxkfDJbMC04XSkpKWA7XG5jb25zdCBkYXRlUmVnZXggPSBuZXcgUmVnRXhwKGBeJHtkYXRlUmVnZXhTb3VyY2V9JGApO1xuZnVuY3Rpb24gdGltZVJlZ2V4U291cmNlKGFyZ3MpIHtcbiAgICBsZXQgc2Vjb25kc1JlZ2V4U291cmNlID0gYFswLTVdXFxcXGRgO1xuICAgIGlmIChhcmdzLnByZWNpc2lvbikge1xuICAgICAgICBzZWNvbmRzUmVnZXhTb3VyY2UgPSBgJHtzZWNvbmRzUmVnZXhTb3VyY2V9XFxcXC5cXFxcZHske2FyZ3MucHJlY2lzaW9ufX1gO1xuICAgIH1cbiAgICBlbHNlIGlmIChhcmdzLnByZWNpc2lvbiA9PSBudWxsKSB7XG4gICAgICAgIHNlY29uZHNSZWdleFNvdXJjZSA9IGAke3NlY29uZHNSZWdleFNvdXJjZX0oXFxcXC5cXFxcZCspP2A7XG4gICAgfVxuICAgIGNvbnN0IHNlY29uZHNRdWFudGlmaWVyID0gYXJncy5wcmVjaXNpb24gPyBcIitcIiA6IFwiP1wiOyAvLyByZXF1aXJlIHNlY29uZHMgaWYgcHJlY2lzaW9uIGlzIG5vbnplcm9cbiAgICByZXR1cm4gYChbMDFdXFxcXGR8MlswLTNdKTpbMC01XVxcXFxkKDoke3NlY29uZHNSZWdleFNvdXJjZX0pJHtzZWNvbmRzUXVhbnRpZmllcn1gO1xufVxuZnVuY3Rpb24gdGltZVJlZ2V4KGFyZ3MpIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXiR7dGltZVJlZ2V4U291cmNlKGFyZ3MpfSRgKTtcbn1cbi8vIEFkYXB0ZWQgZnJvbSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzE0MzIzMVxuZXhwb3J0IGZ1bmN0aW9uIGRhdGV0aW1lUmVnZXgoYXJncykge1xuICAgIGxldCByZWdleCA9IGAke2RhdGVSZWdleFNvdXJjZX1UJHt0aW1lUmVnZXhTb3VyY2UoYXJncyl9YDtcbiAgICBjb25zdCBvcHRzID0gW107XG4gICAgb3B0cy5wdXNoKGFyZ3MubG9jYWwgPyBgWj9gIDogYFpgKTtcbiAgICBpZiAoYXJncy5vZmZzZXQpXG4gICAgICAgIG9wdHMucHVzaChgKFsrLV1cXFxcZHsyfTo/XFxcXGR7Mn0pYCk7XG4gICAgcmVnZXggPSBgJHtyZWdleH0oJHtvcHRzLmpvaW4oXCJ8XCIpfSlgO1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeJHtyZWdleH0kYCk7XG59XG5mdW5jdGlvbiBpc1ZhbGlkSVAoaXAsIHZlcnNpb24pIHtcbiAgICBpZiAoKHZlcnNpb24gPT09IFwidjRcIiB8fCAhdmVyc2lvbikgJiYgaXB2NFJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoKHZlcnNpb24gPT09IFwidjZcIiB8fCAhdmVyc2lvbikgJiYgaXB2NlJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBpc1ZhbGlkSldUKGp3dCwgYWxnKSB7XG4gICAgaWYgKCFqd3RSZWdleC50ZXN0KGp3dCkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBbaGVhZGVyXSA9IGp3dC5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICghaGVhZGVyKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBDb252ZXJ0IGJhc2U2NHVybCB0byBiYXNlNjRcbiAgICAgICAgY29uc3QgYmFzZTY0ID0gaGVhZGVyXG4gICAgICAgICAgICAucmVwbGFjZSgvLS9nLCBcIitcIilcbiAgICAgICAgICAgIC5yZXBsYWNlKC9fL2csIFwiL1wiKVxuICAgICAgICAgICAgLnBhZEVuZChoZWFkZXIubGVuZ3RoICsgKCg0IC0gKGhlYWRlci5sZW5ndGggJSA0KSkgJSA0KSwgXCI9XCIpO1xuICAgICAgICBjb25zdCBkZWNvZGVkID0gSlNPTi5wYXJzZShhdG9iKGJhc2U2NCkpO1xuICAgICAgICBpZiAodHlwZW9mIGRlY29kZWQgIT09IFwib2JqZWN0XCIgfHwgZGVjb2RlZCA9PT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKFwidHlwXCIgaW4gZGVjb2RlZCAmJiBkZWNvZGVkPy50eXAgIT09IFwiSldUXCIpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghZGVjb2RlZC5hbGcpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmIChhbGcgJiYgZGVjb2RlZC5hbGcgIT09IGFsZylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGlzVmFsaWRDaWRyKGlwLCB2ZXJzaW9uKSB7XG4gICAgaWYgKCh2ZXJzaW9uID09PSBcInY0XCIgfHwgIXZlcnNpb24pICYmIGlwdjRDaWRyUmVnZXgudGVzdChpcCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmICgodmVyc2lvbiA9PT0gXCJ2NlwiIHx8ICF2ZXJzaW9uKSAmJiBpcHY2Q2lkclJlZ2V4LnRlc3QoaXApKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnQgY2xhc3MgWm9kU3RyaW5nIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICBpbnB1dC5kYXRhID0gU3RyaW5nKGlucHV0LmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuc3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnN0cmluZyxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgICAgICBsZXQgY3R4ID0gdW5kZWZpbmVkO1xuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEubGVuZ3RoIDwgY2hlY2sudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEubGVuZ3RoID4gY2hlY2sudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJsZW5ndGhcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGlucHV0LmRhdGEubGVuZ3RoID4gY2hlY2sudmFsdWU7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBpbnB1dC5kYXRhLmxlbmd0aCA8IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29CaWcgfHwgdG9vU21hbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b29CaWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJlbWFpbFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlbWFpbFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJlbWFpbFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZW1vamlcIikge1xuICAgICAgICAgICAgICAgIGlmICghZW1vamlSZWdleCkge1xuICAgICAgICAgICAgICAgICAgICBlbW9qaVJlZ2V4ID0gbmV3IFJlZ0V4cChfZW1vamlSZWdleCwgXCJ1XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIWVtb2ppUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImVtb2ppXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ1dWlkXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXV1aWRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwidXVpZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibmFub2lkXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW5hbm9pZFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJuYW5vaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImN1aWRcIikge1xuICAgICAgICAgICAgICAgIGlmICghY3VpZFJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJjdWlkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJjdWlkMlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFjdWlkMlJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJjdWlkMlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidWxpZFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1bGlkUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInVsaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInVybFwiKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3IFVSTChpbnB1dC5kYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2gge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwicmVnZXhcIikge1xuICAgICAgICAgICAgICAgIGNoZWNrLnJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgdGVzdFJlc3VsdCA9IGNoZWNrLnJlZ2V4LnRlc3QoaW5wdXQuZGF0YSk7XG4gICAgICAgICAgICAgICAgaWYgKCF0ZXN0UmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwicmVnZXhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInRyaW1cIikge1xuICAgICAgICAgICAgICAgIGlucHV0LmRhdGEgPSBpbnB1dC5kYXRhLnRyaW0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiaW5jbHVkZXNcIikge1xuICAgICAgICAgICAgICAgIGlmICghaW5wdXQuZGF0YS5pbmNsdWRlcyhjaGVjay52YWx1ZSwgY2hlY2sucG9zaXRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHsgaW5jbHVkZXM6IGNoZWNrLnZhbHVlLCBwb3NpdGlvbjogY2hlY2sucG9zaXRpb24gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcInRvTG93ZXJDYXNlXCIpIHtcbiAgICAgICAgICAgICAgICBpbnB1dC5kYXRhID0gaW5wdXQuZGF0YS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJ0b1VwcGVyQ2FzZVwiKSB7XG4gICAgICAgICAgICAgICAgaW5wdXQuZGF0YSA9IGlucHV0LmRhdGEudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwic3RhcnRzV2l0aFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbnB1dC5kYXRhLnN0YXJ0c1dpdGgoY2hlY2sudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHsgc3RhcnRzV2l0aDogY2hlY2sudmFsdWUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImVuZHNXaXRoXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlucHV0LmRhdGEuZW5kc1dpdGgoY2hlY2sudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHsgZW5kc1dpdGg6IGNoZWNrLnZhbHVlIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSBkYXRldGltZVJlZ2V4KGNoZWNrKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlZ2V4LnRlc3QoaW5wdXQuZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJkYXRldGltZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSBkYXRlUmVnZXg7XG4gICAgICAgICAgICAgICAgaWYgKCFyZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwidGltZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVnZXggPSB0aW1lUmVnZXgoY2hlY2spO1xuICAgICAgICAgICAgICAgIGlmICghcmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcInRpbWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImR1cmF0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWR1cmF0aW9uUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImR1cmF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJpcFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkSVAoaW5wdXQuZGF0YSwgY2hlY2sudmVyc2lvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbjogXCJpcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiand0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzVmFsaWRKV1QoaW5wdXQuZGF0YSwgY2hlY2suYWxnKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImp3dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiY2lkclwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ2lkcihpbnB1dC5kYXRhLCBjaGVjay52ZXJzaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImNpZHJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcImJhc2U2NFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFiYXNlNjRSZWdleC50ZXN0KGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IFwiYmFzZTY0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJiYXNlNjR1cmxcIikge1xuICAgICAgICAgICAgICAgIGlmICghYmFzZTY0dXJsUmVnZXgudGVzdChpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBcImJhc2U2NHVybFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoY2hlY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLnZhbHVlLCB2YWx1ZTogaW5wdXQuZGF0YSB9O1xuICAgIH1cbiAgICBfcmVnZXgocmVnZXgsIHZhbGlkYXRpb24sIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmaW5lbWVudCgoZGF0YSkgPT4gcmVnZXgudGVzdChkYXRhKSwge1xuICAgICAgICAgICAgdmFsaWRhdGlvbixcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9hZGRDaGVjayhjaGVjaykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZFN0cmluZyh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbWFpbChtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiZW1haWxcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICB1cmwobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcInVybFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIGVtb2ppKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJlbW9qaVwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIHV1aWQobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcInV1aWRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBuYW5vaWQobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcIm5hbm9pZFwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkgfSk7XG4gICAgfVxuICAgIGN1aWQobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImN1aWRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBjdWlkMihtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiY3VpZDJcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICB1bGlkKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJ1bGlkXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgYmFzZTY0KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJiYXNlNjRcIiwgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpIH0pO1xuICAgIH1cbiAgICBiYXNlNjR1cmwobWVzc2FnZSkge1xuICAgICAgICAvLyBiYXNlNjR1cmwgZW5jb2RpbmcgaXMgYSBtb2RpZmljYXRpb24gb2YgYmFzZTY0IHRoYXQgY2FuIHNhZmVseSBiZSB1c2VkIGluIFVSTHMgYW5kIGZpbGVuYW1lc1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJiYXNlNjR1cmxcIixcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGp3dChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiand0XCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihvcHRpb25zKSB9KTtcbiAgICB9XG4gICAgaXAob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImlwXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihvcHRpb25zKSB9KTtcbiAgICB9XG4gICAgY2lkcihvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7IGtpbmQ6IFwiY2lkclwiLCAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucykgfSk7XG4gICAgfVxuICAgIGRhdGV0aW1lKG9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAgICAgIGtpbmQ6IFwiZGF0ZXRpbWVcIixcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IG51bGwsXG4gICAgICAgICAgICAgICAgb2Zmc2V0OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb2NhbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImRhdGV0aW1lXCIsXG4gICAgICAgICAgICBwcmVjaXNpb246IHR5cGVvZiBvcHRpb25zPy5wcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIgPyBudWxsIDogb3B0aW9ucz8ucHJlY2lzaW9uLFxuICAgICAgICAgICAgb2Zmc2V0OiBvcHRpb25zPy5vZmZzZXQgPz8gZmFsc2UsXG4gICAgICAgICAgICBsb2NhbDogb3B0aW9ucz8ubG9jYWwgPz8gZmFsc2UsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucz8ubWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBkYXRlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHsga2luZDogXCJkYXRlXCIsIG1lc3NhZ2UgfSk7XG4gICAgfVxuICAgIHRpbWUob3B0aW9ucykge1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICAgICAga2luZDogXCJ0aW1lXCIsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiBudWxsLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJ0aW1lXCIsXG4gICAgICAgICAgICBwcmVjaXNpb246IHR5cGVvZiBvcHRpb25zPy5wcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIgPyBudWxsIDogb3B0aW9ucz8ucHJlY2lzaW9uLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG9wdGlvbnM/Lm1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZHVyYXRpb24obWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soeyBraW5kOiBcImR1cmF0aW9uXCIsIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSB9KTtcbiAgICB9XG4gICAgcmVnZXgocmVnZXgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwicmVnZXhcIixcbiAgICAgICAgICAgIHJlZ2V4OiByZWdleCxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGluY2x1ZGVzKHZhbHVlLCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImluY2x1ZGVzXCIsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICBwb3NpdGlvbjogb3B0aW9ucz8ucG9zaXRpb24sXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoob3B0aW9ucz8ubWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdGFydHNXaXRoKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcInN0YXJ0c1dpdGhcIixcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVuZHNXaXRoKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcImVuZHNXaXRoXCIsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtaW4obWluTGVuZ3RoLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IG1pbkxlbmd0aCxcbiAgICAgICAgICAgIC4uLmVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhMZW5ndGgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWF4XCIsXG4gICAgICAgICAgICB2YWx1ZTogbWF4TGVuZ3RoLFxuICAgICAgICAgICAgLi4uZXJyb3JVdGlsLmVyclRvT2JqKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbGVuZ3RoKGxlbiwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJsZW5ndGhcIixcbiAgICAgICAgICAgIHZhbHVlOiBsZW4sXG4gICAgICAgICAgICAuLi5lcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFcXVpdmFsZW50IHRvIGAubWluKDEpYFxuICAgICAqL1xuICAgIG5vbmVtcHR5KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluKDEsIGVycm9yVXRpbC5lcnJUb09iaihtZXNzYWdlKSk7XG4gICAgfVxuICAgIHRyaW0oKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kU3RyaW5nKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogWy4uLnRoaXMuX2RlZi5jaGVja3MsIHsga2luZDogXCJ0cmltXCIgfV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0b0xvd2VyQ2FzZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgeyBraW5kOiBcInRvTG93ZXJDYXNlXCIgfV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICB0b1VwcGVyQ2FzZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTdHJpbmcoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgeyBraW5kOiBcInRvVXBwZXJDYXNlXCIgfV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBnZXQgaXNEYXRldGltZSgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJkYXRldGltZVwiKTtcbiAgICB9XG4gICAgZ2V0IGlzRGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJkYXRlXCIpO1xuICAgIH1cbiAgICBnZXQgaXNUaW1lKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcInRpbWVcIik7XG4gICAgfVxuICAgIGdldCBpc0R1cmF0aW9uKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcImR1cmF0aW9uXCIpO1xuICAgIH1cbiAgICBnZXQgaXNFbWFpbCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJlbWFpbFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzVVJMKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcInVybFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzRW1vamkoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiZW1vamlcIik7XG4gICAgfVxuICAgIGdldCBpc1VVSUQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwidXVpZFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzTkFOT0lEKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoKGNoKSA9PiBjaC5raW5kID09PSBcIm5hbm9pZFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzQ1VJRCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjdWlkXCIpO1xuICAgIH1cbiAgICBnZXQgaXNDVUlEMigpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjdWlkMlwiKTtcbiAgICB9XG4gICAgZ2V0IGlzVUxJRCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJ1bGlkXCIpO1xuICAgIH1cbiAgICBnZXQgaXNJUCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJpcFwiKTtcbiAgICB9XG4gICAgZ2V0IGlzQ0lEUigpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKChjaCkgPT4gY2gua2luZCA9PT0gXCJjaWRyXCIpO1xuICAgIH1cbiAgICBnZXQgaXNCYXNlNjQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiYmFzZTY0XCIpO1xuICAgIH1cbiAgICBnZXQgaXNCYXNlNjR1cmwoKSB7XG4gICAgICAgIC8vIGJhc2U2NHVybCBlbmNvZGluZyBpcyBhIG1vZGlmaWNhdGlvbiBvZiBiYXNlNjQgdGhhdCBjYW4gc2FmZWx5IGJlIHVzZWQgaW4gVVJMcyBhbmQgZmlsZW5hbWVzXG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiYmFzZTY0dXJsXCIpO1xuICAgIH1cbiAgICBnZXQgbWluTGVuZ3RoKCkge1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pXG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIGdldCBtYXhMZW5ndGgoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG59XG5ab2RTdHJpbmcuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kU3RyaW5nKHtcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RTdHJpbmcsXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgPz8gZmFsc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zOTY2NDg0L3doeS1kb2VzLW1vZHVsdXMtb3BlcmF0b3ItcmV0dXJuLWZyYWN0aW9uYWwtbnVtYmVyLWluLWphdmFzY3JpcHQvMzE3MTEwMzQjMzE3MTEwMzRcbmZ1bmN0aW9uIGZsb2F0U2FmZVJlbWFpbmRlcih2YWwsIHN0ZXApIHtcbiAgICBjb25zdCB2YWxEZWNDb3VudCA9ICh2YWwudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV0gfHwgXCJcIikubGVuZ3RoO1xuICAgIGNvbnN0IHN0ZXBEZWNDb3VudCA9IChzdGVwLnRvU3RyaW5nKCkuc3BsaXQoXCIuXCIpWzFdIHx8IFwiXCIpLmxlbmd0aDtcbiAgICBjb25zdCBkZWNDb3VudCA9IHZhbERlY0NvdW50ID4gc3RlcERlY0NvdW50ID8gdmFsRGVjQ291bnQgOiBzdGVwRGVjQ291bnQ7XG4gICAgY29uc3QgdmFsSW50ID0gTnVtYmVyLnBhcnNlSW50KHZhbC50b0ZpeGVkKGRlY0NvdW50KS5yZXBsYWNlKFwiLlwiLCBcIlwiKSk7XG4gICAgY29uc3Qgc3RlcEludCA9IE51bWJlci5wYXJzZUludChzdGVwLnRvRml4ZWQoZGVjQ291bnQpLnJlcGxhY2UoXCIuXCIsIFwiXCIpKTtcbiAgICByZXR1cm4gKHZhbEludCAlIHN0ZXBJbnQpIC8gMTAgKiogZGVjQ291bnQ7XG59XG5leHBvcnQgY2xhc3MgWm9kTnVtYmVyIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMubWluID0gdGhpcy5ndGU7XG4gICAgICAgIHRoaXMubWF4ID0gdGhpcy5sdGU7XG4gICAgICAgIHRoaXMuc3RlcCA9IHRoaXMubXVsdGlwbGVPZjtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICBpbnB1dC5kYXRhID0gTnVtYmVyKGlucHV0LmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubnVtYmVyKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm51bWJlcixcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjdHggPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcImludFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF1dGlsLmlzSW50ZWdlcihpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFwiaW50ZWdlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IFwiZmxvYXRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBjaGVjay5pbmNsdXNpdmUgPyBpbnB1dC5kYXRhIDwgY2hlY2sudmFsdWUgOiBpbnB1dC5kYXRhIDw9IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBjaGVjay5pbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGNoZWNrLmluY2x1c2l2ZSA/IGlucHV0LmRhdGEgPiBjaGVjay52YWx1ZSA6IGlucHV0LmRhdGEgPj0gY2hlY2sudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHRvb0JpZykge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJudW1iZXJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogY2hlY2suaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZsb2F0U2FmZVJlbWFpbmRlcihpbnB1dC5kYXRhLCBjaGVjay52YWx1ZSkgIT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQsIGN0eCk7XG4gICAgICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLm5vdF9tdWx0aXBsZV9vZixcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlT2Y6IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwiZmluaXRlXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUubm90X2Zpbml0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgICB9XG4gICAgZ3RlKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsIHZhbHVlLCB0cnVlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBndCh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLCB2YWx1ZSwgZmFsc2UsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIGx0ZSh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCB2YWx1ZSwgdHJ1ZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgbHQodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIiwgdmFsdWUsIGZhbHNlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBzZXRMaW1pdChraW5kLCB2YWx1ZSwgaW5jbHVzaXZlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kTnVtYmVyKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNoZWNrczogW1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2RlZi5jaGVja3MsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBraW5kLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBfYWRkQ2hlY2soY2hlY2spIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2ROdW1iZXIoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbLi4udGhpcy5fZGVmLmNoZWNrcywgY2hlY2tdLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaW50KG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwiaW50XCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IGZhbHNlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbmVnYXRpdmUobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtYXhcIixcbiAgICAgICAgICAgIHZhbHVlOiAwLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vbnBvc2l0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWF4XCIsXG4gICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vbm5lZ2F0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG11bHRpcGxlT2YodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibXVsdGlwbGVPZlwiLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZmluaXRlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwiZmluaXRlXCIsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzYWZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgdmFsdWU6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IG1pblZhbHVlKCkge1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChtaW4gPT09IG51bGwgfHwgY2gudmFsdWUgPiBtaW4pXG4gICAgICAgICAgICAgICAgICAgIG1pbiA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgfVxuICAgIGdldCBtYXhWYWx1ZSgpIHtcbiAgICAgICAgbGV0IG1heCA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWF4ID09PSBudWxsIHx8IGNoLnZhbHVlIDwgbWF4KVxuICAgICAgICAgICAgICAgICAgICBtYXggPSBjaC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgIH1cbiAgICBnZXQgaXNJbnQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuX2RlZi5jaGVja3MuZmluZCgoY2gpID0+IGNoLmtpbmQgPT09IFwiaW50XCIgfHwgKGNoLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiICYmIHV0aWwuaXNJbnRlZ2VyKGNoLnZhbHVlKSkpO1xuICAgIH1cbiAgICBnZXQgaXNGaW5pdGUoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBsZXQgbWluID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJmaW5pdGVcIiB8fCBjaC5raW5kID09PSBcImludFwiIHx8IGNoLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaC5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1pbiA9PT0gbnVsbCB8fCBjaC52YWx1ZSA+IG1pbilcbiAgICAgICAgICAgICAgICAgICAgbWluID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZShtaW4pICYmIE51bWJlci5pc0Zpbml0ZShtYXgpO1xuICAgIH1cbn1cblpvZE51bWJlci5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROdW1iZXIoe1xuICAgICAgICBjaGVja3M6IFtdLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bWJlcixcbiAgICAgICAgY29lcmNlOiBwYXJhbXM/LmNvZXJjZSB8fCBmYWxzZSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RCaWdJbnQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5taW4gPSB0aGlzLmd0ZTtcbiAgICAgICAgdGhpcy5tYXggPSB0aGlzLmx0ZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0aGlzLl9kZWYuY29lcmNlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlucHV0LmRhdGEgPSBCaWdJbnQoaW5wdXQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2dldEludmFsaWRJbnB1dChpbnB1dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5iaWdpbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9nZXRJbnZhbGlkSW5wdXQoaW5wdXQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjdHggPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHN0YXR1cyA9IG5ldyBQYXJzZVN0YXR1cygpO1xuICAgICAgICBmb3IgKGNvbnN0IGNoZWNrIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaGVjay5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBjaGVjay5pbmNsdXNpdmUgPyBpbnB1dC5kYXRhIDwgY2hlY2sudmFsdWUgOiBpbnB1dC5kYXRhIDw9IGNoZWNrLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh0b29TbWFsbCkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJiaWdpbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGNoZWNrLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiBjaGVjay5pbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY2hlY2sua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvb0JpZyA9IGNoZWNrLmluY2x1c2l2ZSA/IGlucHV0LmRhdGEgPiBjaGVjay52YWx1ZSA6IGlucHV0LmRhdGEgPj0gY2hlY2sudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKHRvb0JpZykge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYmlnaW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogY2hlY2suaW5jbHVzaXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogY2hlY2subWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibXVsdGlwbGVPZlwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRhdGEgJSBjaGVjay52YWx1ZSAhPT0gQmlnSW50KDApKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2YsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZU9mOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB1dGlsLmFzc2VydE5ldmVyKGNoZWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IGlucHV0LmRhdGEgfTtcbiAgICB9XG4gICAgX2dldEludmFsaWRJbnB1dChpbnB1dCkge1xuICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmJpZ2ludCxcbiAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbiAgICBndGUodmFsdWUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIiwgdmFsdWUsIHRydWUsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIGd0KHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsIHZhbHVlLCBmYWxzZSwgZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpKTtcbiAgICB9XG4gICAgbHRlKHZhbHVlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsIHZhbHVlLCB0cnVlLCBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkpO1xuICAgIH1cbiAgICBsdCh2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLCB2YWx1ZSwgZmFsc2UsIGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSk7XG4gICAgfVxuICAgIHNldExpbWl0KGtpbmQsIHZhbHVlLCBpbmNsdXNpdmUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RCaWdJbnQoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgY2hlY2tzOiBbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLmNoZWNrcyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmUsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIF9hZGRDaGVjayhjaGVjaykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEJpZ0ludCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBwb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1pblwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuZWdhdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogZmFsc2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBub25wb3NpdGl2ZShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IEJpZ0ludCgwKSxcbiAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5vbm5lZ2F0aXZlKG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FkZENoZWNrKHtcbiAgICAgICAgICAgIGtpbmQ6IFwibWluXCIsXG4gICAgICAgICAgICB2YWx1ZTogQmlnSW50KDApLFxuICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbXVsdGlwbGVPZih2YWx1ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtdWx0aXBsZU9mXCIsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCBtaW5WYWx1ZSgpIHtcbiAgICAgICAgbGV0IG1pbiA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgY2ggb2YgdGhpcy5fZGVmLmNoZWNrcykge1xuICAgICAgICAgICAgaWYgKGNoLmtpbmQgPT09IFwibWluXCIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWluID09PSBudWxsIHx8IGNoLnZhbHVlID4gbWluKVxuICAgICAgICAgICAgICAgICAgICBtaW4gPSBjaC52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICBnZXQgbWF4VmFsdWUoKSB7XG4gICAgICAgIGxldCBtYXggPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1heFwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1heCA9PT0gbnVsbCB8fCBjaC52YWx1ZSA8IG1heClcbiAgICAgICAgICAgICAgICAgICAgbWF4ID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICB9XG59XG5ab2RCaWdJbnQuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQmlnSW50KHtcbiAgICAgICAgY2hlY2tzOiBbXSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCaWdJbnQsXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgPz8gZmFsc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kQm9vbGVhbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBpZiAodGhpcy5fZGVmLmNvZXJjZSkge1xuICAgICAgICAgICAgaW5wdXQuZGF0YSA9IEJvb2xlYW4oaW5wdXQuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5ib29sZWFuKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmJvb2xlYW4sXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxufVxuWm9kQm9vbGVhbi5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RCb29sZWFuKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RCb29sZWFuLFxuICAgICAgICBjb2VyY2U6IHBhcmFtcz8uY29lcmNlIHx8IGZhbHNlLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZERhdGUgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgaWYgKHRoaXMuX2RlZi5jb2VyY2UpIHtcbiAgICAgICAgICAgIGlucHV0LmRhdGEgPSBuZXcgRGF0ZShpbnB1dC5kYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuZGF0ZSxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oaW5wdXQuZGF0YS5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9kYXRlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGF0dXMgPSBuZXcgUGFyc2VTdGF0dXMoKTtcbiAgICAgICAgbGV0IGN0eCA9IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBjaGVjayBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2hlY2sua2luZCA9PT0gXCJtaW5cIikge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5kYXRhLmdldFRpbWUoKSA8IGNoZWNrLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0LCBjdHgpO1xuICAgICAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBjaGVjay5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhhY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWluaW11bTogY2hlY2sudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImRhdGVcIixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrLmtpbmQgPT09IFwibWF4XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuZGF0YS5nZXRUaW1lKCkgPiBjaGVjay52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCwgY3R4KTtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGNoZWNrLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBjaGVjay52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiZGF0ZVwiLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdXRpbC5hc3NlcnROZXZlcihjaGVjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgdmFsdWU6IG5ldyBEYXRlKGlucHV0LmRhdGEuZ2V0VGltZSgpKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2FkZENoZWNrKGNoZWNrKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kRGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBjaGVja3M6IFsuLi50aGlzLl9kZWYuY2hlY2tzLCBjaGVja10sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBtaW4obWluRGF0ZSwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkQ2hlY2soe1xuICAgICAgICAgICAga2luZDogXCJtaW5cIixcbiAgICAgICAgICAgIHZhbHVlOiBtaW5EYXRlLmdldFRpbWUoKSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhEYXRlLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZGRDaGVjayh7XG4gICAgICAgICAgICBraW5kOiBcIm1heFwiLFxuICAgICAgICAgICAgdmFsdWU6IG1heERhdGUuZ2V0VGltZSgpLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IG1pbkRhdGUoKSB7XG4gICAgICAgIGxldCBtaW4gPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGNoIG9mIHRoaXMuX2RlZi5jaGVja3MpIHtcbiAgICAgICAgICAgIGlmIChjaC5raW5kID09PSBcIm1pblwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1pbiA9PT0gbnVsbCB8fCBjaC52YWx1ZSA+IG1pbilcbiAgICAgICAgICAgICAgICAgICAgbWluID0gY2gudmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbiAhPSBudWxsID8gbmV3IERhdGUobWluKSA6IG51bGw7XG4gICAgfVxuICAgIGdldCBtYXhEYXRlKCkge1xuICAgICAgICBsZXQgbWF4ID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBjaCBvZiB0aGlzLl9kZWYuY2hlY2tzKSB7XG4gICAgICAgICAgICBpZiAoY2gua2luZCA9PT0gXCJtYXhcIikge1xuICAgICAgICAgICAgICAgIGlmIChtYXggPT09IG51bGwgfHwgY2gudmFsdWUgPCBtYXgpXG4gICAgICAgICAgICAgICAgICAgIG1heCA9IGNoLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXggIT0gbnVsbCA/IG5ldyBEYXRlKG1heCkgOiBudWxsO1xuICAgIH1cbn1cblpvZERhdGUuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kRGF0ZSh7XG4gICAgICAgIGNoZWNrczogW10sXG4gICAgICAgIGNvZXJjZTogcGFyYW1zPy5jb2VyY2UgfHwgZmFsc2UsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRGF0ZSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RTeW1ib2wgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5zeW1ib2wpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuc3ltYm9sLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZFN5bWJvbC5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RTeW1ib2woe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFN5bWJvbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RVbmRlZmluZWQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZFVuZGVmaW5lZC5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmRlZmluZWQoe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuZGVmaW5lZCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2ROdWxsIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubnVsbCkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5udWxsLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9LKGlucHV0LmRhdGEpO1xuICAgIH1cbn1cblpvZE51bGwuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTnVsbCh7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTnVsbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RBbnkgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgLy8gdG8gcHJldmVudCBpbnN0YW5jZXMgb2Ygb3RoZXIgY2xhc3NlcyBmcm9tIGV4dGVuZGluZyBab2RBbnkuIHRoaXMgY2F1c2VzIGlzc3VlcyB3aXRoIGNhdGNoYWxsIGluIFpvZE9iamVjdC5cbiAgICAgICAgdGhpcy5fYW55ID0gdHJ1ZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG59XG5ab2RBbnkuY3JlYXRlID0gKHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQW55KHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RBbnksXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kVW5rbm93biBleHRlbmRzIFpvZFR5cGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICAvLyByZXF1aXJlZFxuICAgICAgICB0aGlzLl91bmtub3duID0gdHJ1ZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG59XG5ab2RVbmtub3duLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZFVua25vd24oe1xuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVua25vd24sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kTmV2ZXIgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5uZXZlcixcbiAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgIH1cbn1cblpvZE5ldmVyLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5ldmVyKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2ROZXZlcixcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RWb2lkIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFR5cGUgPSB0aGlzLl9nZXRUeXBlKGlucHV0KTtcbiAgICAgICAgaWYgKHBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBjdHggPSB0aGlzLl9nZXRPclJldHVybkN0eChpbnB1dCk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLnZvaWQsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gT0soaW5wdXQuZGF0YSk7XG4gICAgfVxufVxuWm9kVm9pZC5jcmVhdGUgPSAocGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RWb2lkKHtcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RWb2lkLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZEFycmF5IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4LCBzdGF0dXMgfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGRlZiA9IHRoaXMuX2RlZjtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmFycmF5LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5leGFjdExlbmd0aCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uc3QgdG9vQmlnID0gY3R4LmRhdGEubGVuZ3RoID4gZGVmLmV4YWN0TGVuZ3RoLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgdG9vU21hbGwgPSBjdHguZGF0YS5sZW5ndGggPCBkZWYuZXhhY3RMZW5ndGgudmFsdWU7XG4gICAgICAgICAgICBpZiAodG9vQmlnIHx8IHRvb1NtYWxsKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IHRvb0JpZyA/IFpvZElzc3VlQ29kZS50b29fYmlnIDogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgbWluaW11bTogKHRvb1NtYWxsID8gZGVmLmV4YWN0TGVuZ3RoLnZhbHVlIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgICAgICAgICAgbWF4aW11bTogKHRvb0JpZyA/IGRlZi5leGFjdExlbmd0aC52YWx1ZSA6IHVuZGVmaW5lZCksXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZGVmLmV4YWN0TGVuZ3RoLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5taW5MZW5ndGggIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChjdHguZGF0YS5sZW5ndGggPCBkZWYubWluTGVuZ3RoLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fc21hbGwsXG4gICAgICAgICAgICAgICAgICAgIG1pbmltdW06IGRlZi5taW5MZW5ndGgudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5taW5MZW5ndGgubWVzc2FnZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVmLm1heExlbmd0aCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGN0eC5kYXRhLmxlbmd0aCA+IGRlZi5tYXhMZW5ndGgudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19iaWcsXG4gICAgICAgICAgICAgICAgICAgIG1heGltdW06IGRlZi5tYXhMZW5ndGgudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiYXJyYXlcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5tYXhMZW5ndGgubWVzc2FnZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5jdHguZGF0YV0ubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlZi50eXBlLl9wYXJzZUFzeW5jKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSkpO1xuICAgICAgICAgICAgfSkpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5jdHguZGF0YV0ubWFwKChpdGVtLCBpKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZGVmLnR5cGUuX3BhcnNlU3luYyhuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwgaXRlbSwgY3R4LnBhdGgsIGkpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0KTtcbiAgICB9XG4gICAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZTtcbiAgICB9XG4gICAgbWluKG1pbkxlbmd0aCwgbWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIG1pbkxlbmd0aDogeyB2YWx1ZTogbWluTGVuZ3RoLCBtZXNzYWdlOiBlcnJvclV0aWwudG9TdHJpbmcobWVzc2FnZSkgfSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG1heChtYXhMZW5ndGgsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RBcnJheSh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBtYXhMZW5ndGg6IHsgdmFsdWU6IG1heExlbmd0aCwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBsZW5ndGgobGVuLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgZXhhY3RMZW5ndGg6IHsgdmFsdWU6IGxlbiwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBub25lbXB0eShtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbigxLCBtZXNzYWdlKTtcbiAgICB9XG59XG5ab2RBcnJheS5jcmVhdGUgPSAoc2NoZW1hLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEFycmF5KHtcbiAgICAgICAgdHlwZTogc2NoZW1hLFxuICAgICAgICBtaW5MZW5ndGg6IG51bGwsXG4gICAgICAgIG1heExlbmd0aDogbnVsbCxcbiAgICAgICAgZXhhY3RMZW5ndGg6IG51bGwsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQXJyYXksXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5mdW5jdGlvbiBkZWVwUGFydGlhbGlmeShzY2hlbWEpIHtcbiAgICBpZiAoc2NoZW1hIGluc3RhbmNlb2YgWm9kT2JqZWN0KSB7XG4gICAgICAgIGNvbnN0IG5ld1NoYXBlID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHNjaGVtYS5zaGFwZSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSBzY2hlbWEuc2hhcGVba2V5XTtcbiAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSBab2RPcHRpb25hbC5jcmVhdGUoZGVlcFBhcnRpYWxpZnkoZmllbGRTY2hlbWEpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi5zY2hlbWEuX2RlZixcbiAgICAgICAgICAgIHNoYXBlOiAoKSA9PiBuZXdTaGFwZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHNjaGVtYSBpbnN0YW5jZW9mIFpvZEFycmF5KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kQXJyYXkoe1xuICAgICAgICAgICAgLi4uc2NoZW1hLl9kZWYsXG4gICAgICAgICAgICB0eXBlOiBkZWVwUGFydGlhbGlmeShzY2hlbWEuZWxlbWVudCksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2RPcHRpb25hbCkge1xuICAgICAgICByZXR1cm4gWm9kT3B0aW9uYWwuY3JlYXRlKGRlZXBQYXJ0aWFsaWZ5KHNjaGVtYS51bndyYXAoKSkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2ROdWxsYWJsZSkge1xuICAgICAgICByZXR1cm4gWm9kTnVsbGFibGUuY3JlYXRlKGRlZXBQYXJ0aWFsaWZ5KHNjaGVtYS51bndyYXAoKSkpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzY2hlbWEgaW5zdGFuY2VvZiBab2RUdXBsZSkge1xuICAgICAgICByZXR1cm4gWm9kVHVwbGUuY3JlYXRlKHNjaGVtYS5pdGVtcy5tYXAoKGl0ZW0pID0+IGRlZXBQYXJ0aWFsaWZ5KGl0ZW0pKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RPYmplY3QgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5fY2FjaGVkID0gbnVsbDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIEluIG1vc3QgY2FzZXMsIHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCAtIHVua25vd24gcHJvcGVydGllcyBhcmUgbm93IHNpbGVudGx5IHN0cmlwcGVkLlxuICAgICAgICAgKiBJZiB5b3Ugd2FudCB0byBwYXNzIHRocm91Z2ggdW5rbm93biBwcm9wZXJ0aWVzLCB1c2UgYC5wYXNzdGhyb3VnaCgpYCBpbnN0ZWFkLlxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5ub25zdHJpY3QgPSB0aGlzLnBhc3N0aHJvdWdoO1xuICAgICAgICAvLyBleHRlbmQ8XG4gICAgICAgIC8vICAgQXVnbWVudGF0aW9uIGV4dGVuZHMgWm9kUmF3U2hhcGUsXG4gICAgICAgIC8vICAgTmV3T3V0cHV0IGV4dGVuZHMgdXRpbC5mbGF0dGVuPHtcbiAgICAgICAgLy8gICAgIFtrIGluIGtleW9mIEF1Z21lbnRhdGlvbiB8IGtleW9mIE91dHB1dF06IGsgZXh0ZW5kcyBrZXlvZiBBdWdtZW50YXRpb25cbiAgICAgICAgLy8gICAgICAgPyBBdWdtZW50YXRpb25ba11bXCJfb3V0cHV0XCJdXG4gICAgICAgIC8vICAgICAgIDogayBleHRlbmRzIGtleW9mIE91dHB1dFxuICAgICAgICAvLyAgICAgICA/IE91dHB1dFtrXVxuICAgICAgICAvLyAgICAgICA6IG5ldmVyO1xuICAgICAgICAvLyAgIH0+LFxuICAgICAgICAvLyAgIE5ld0lucHV0IGV4dGVuZHMgdXRpbC5mbGF0dGVuPHtcbiAgICAgICAgLy8gICAgIFtrIGluIGtleW9mIEF1Z21lbnRhdGlvbiB8IGtleW9mIElucHV0XTogayBleHRlbmRzIGtleW9mIEF1Z21lbnRhdGlvblxuICAgICAgICAvLyAgICAgICA/IEF1Z21lbnRhdGlvbltrXVtcIl9pbnB1dFwiXVxuICAgICAgICAvLyAgICAgICA6IGsgZXh0ZW5kcyBrZXlvZiBJbnB1dFxuICAgICAgICAvLyAgICAgICA/IElucHV0W2tdXG4gICAgICAgIC8vICAgICAgIDogbmV2ZXI7XG4gICAgICAgIC8vICAgfT5cbiAgICAgICAgLy8gPihcbiAgICAgICAgLy8gICBhdWdtZW50YXRpb246IEF1Z21lbnRhdGlvblxuICAgICAgICAvLyApOiBab2RPYmplY3Q8XG4gICAgICAgIC8vICAgZXh0ZW5kU2hhcGU8VCwgQXVnbWVudGF0aW9uPixcbiAgICAgICAgLy8gICBVbmtub3duS2V5cyxcbiAgICAgICAgLy8gICBDYXRjaGFsbCxcbiAgICAgICAgLy8gICBOZXdPdXRwdXQsXG4gICAgICAgIC8vICAgTmV3SW5wdXRcbiAgICAgICAgLy8gPiB7XG4gICAgICAgIC8vICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAvLyAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAvLyAgICAgc2hhcGU6ICgpID0+ICh7XG4gICAgICAgIC8vICAgICAgIC4uLnRoaXMuX2RlZi5zaGFwZSgpLFxuICAgICAgICAvLyAgICAgICAuLi5hdWdtZW50YXRpb24sXG4gICAgICAgIC8vICAgICB9KSxcbiAgICAgICAgLy8gICB9KSBhcyBhbnk7XG4gICAgICAgIC8vIH1cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSBgLmV4dGVuZGAgaW5zdGVhZFxuICAgICAgICAgKiAgKi9cbiAgICAgICAgdGhpcy5hdWdtZW50ID0gdGhpcy5leHRlbmQ7XG4gICAgfVxuICAgIF9nZXRDYWNoZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9jYWNoZWQgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkO1xuICAgICAgICBjb25zdCBzaGFwZSA9IHRoaXMuX2RlZi5zaGFwZSgpO1xuICAgICAgICBjb25zdCBrZXlzID0gdXRpbC5vYmplY3RLZXlzKHNoYXBlKTtcbiAgICAgICAgdGhpcy5fY2FjaGVkID0geyBzaGFwZSwga2V5cyB9O1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FjaGVkO1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5vYmplY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgY29uc3QgeyBzaGFwZSwga2V5czogc2hhcGVLZXlzIH0gPSB0aGlzLl9nZXRDYWNoZWQoKTtcbiAgICAgICAgY29uc3QgZXh0cmFLZXlzID0gW107XG4gICAgICAgIGlmICghKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIFpvZE5ldmVyICYmIHRoaXMuX2RlZi51bmtub3duS2V5cyA9PT0gXCJzdHJpcFwiKSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gY3R4LmRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXNoYXBlS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhS2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhaXJzID0gW107XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHNoYXBlS2V5cykge1xuICAgICAgICAgICAgY29uc3Qga2V5VmFsaWRhdG9yID0gc2hhcGVba2V5XTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY3R4LmRhdGFba2V5XTtcbiAgICAgICAgICAgIHBhaXJzLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGtleSB9LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBrZXlWYWxpZGF0b3IuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCB2YWx1ZSwgY3R4LnBhdGgsIGtleSkpLFxuICAgICAgICAgICAgICAgIGFsd2F5c1NldDoga2V5IGluIGN0eC5kYXRhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIFpvZE5ldmVyKSB7XG4gICAgICAgICAgICBjb25zdCB1bmtub3duS2V5cyA9IHRoaXMuX2RlZi51bmtub3duS2V5cztcbiAgICAgICAgICAgIGlmICh1bmtub3duS2V5cyA9PT0gXCJwYXNzdGhyb3VnaFwiKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgZXh0cmFLZXlzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhaXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZToga2V5IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogeyBzdGF0dXM6IFwidmFsaWRcIiwgdmFsdWU6IGN0eC5kYXRhW2tleV0gfSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodW5rbm93bktleXMgPT09IFwic3RyaWN0XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXh0cmFLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudW5yZWNvZ25pemVkX2tleXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlzOiBleHRyYUtleXMsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh1bmtub3duS2V5cyA9PT0gXCJzdHJpcFwiKSB7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIFpvZE9iamVjdCBlcnJvcjogaW52YWxpZCB1bmtub3duS2V5cyB2YWx1ZS5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJ1biBjYXRjaGFsbCB2YWxpZGF0aW9uXG4gICAgICAgICAgICBjb25zdCBjYXRjaGFsbCA9IHRoaXMuX2RlZi5jYXRjaGFsbDtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4dHJhS2V5cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY3R4LmRhdGFba2V5XTtcbiAgICAgICAgICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiB7IHN0YXR1czogXCJ2YWxpZFwiLCB2YWx1ZToga2V5IH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBjYXRjaGFsbC5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIHZhbHVlLCBjdHgucGF0aCwga2V5KSAvLywgY3R4LmNoaWxkKGtleSksIHZhbHVlLCBnZXRQYXJzZWRUeXBlKHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBhbHdheXNTZXQ6IGtleSBpbiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG4gICAgICAgICAgICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN5bmNQYWlycyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhd2FpdCBwYWlyLmtleTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBwYWlyLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBzeW5jUGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsd2F5c1NldDogcGFpci5hbHdheXNTZXQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3luY1BhaXJzO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoc3luY1BhaXJzKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFBhcnNlU3RhdHVzLm1lcmdlT2JqZWN0U3luYyhzdGF0dXMsIHN5bmNQYWlycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBwYWlycyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHNoYXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnNoYXBlKCk7XG4gICAgfVxuICAgIHN0cmljdChtZXNzYWdlKSB7XG4gICAgICAgIGVycm9yVXRpbC5lcnJUb09iajtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgdW5rbm93bktleXM6IFwic3RyaWN0XCIsXG4gICAgICAgICAgICAuLi4obWVzc2FnZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTWFwOiAoaXNzdWUsIGN0eCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZGVmYXVsdEVycm9yID0gdGhpcy5fZGVmLmVycm9yTWFwPy4oaXNzdWUsIGN0eCkubWVzc2FnZSA/PyBjdHguZGVmYXVsdEVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLmNvZGUgPT09IFwidW5yZWNvZ25pemVkX2tleXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBlcnJvclV0aWwuZXJyVG9PYmoobWVzc2FnZSkubWVzc2FnZSA/PyBkZWZhdWx0RXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogZGVmYXVsdEVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzdHJpcCgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgdW5rbm93bktleXM6IFwic3RyaXBcIixcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHBhc3N0aHJvdWdoKCkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICB1bmtub3duS2V5czogXCJwYXNzdGhyb3VnaFwiLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLy8gY29uc3QgQXVnbWVudEZhY3RvcnkgPVxuICAgIC8vICAgPERlZiBleHRlbmRzIFpvZE9iamVjdERlZj4oZGVmOiBEZWYpID0+XG4gICAgLy8gICA8QXVnbWVudGF0aW9uIGV4dGVuZHMgWm9kUmF3U2hhcGU+KFxuICAgIC8vICAgICBhdWdtZW50YXRpb246IEF1Z21lbnRhdGlvblxuICAgIC8vICAgKTogWm9kT2JqZWN0PFxuICAgIC8vICAgICBleHRlbmRTaGFwZTxSZXR1cm5UeXBlPERlZltcInNoYXBlXCJdPiwgQXVnbWVudGF0aW9uPixcbiAgICAvLyAgICAgRGVmW1widW5rbm93bktleXNcIl0sXG4gICAgLy8gICAgIERlZltcImNhdGNoYWxsXCJdXG4gICAgLy8gICA+ID0+IHtcbiAgICAvLyAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgIC8vICAgICAgIC4uLmRlZixcbiAgICAvLyAgICAgICBzaGFwZTogKCkgPT4gKHtcbiAgICAvLyAgICAgICAgIC4uLmRlZi5zaGFwZSgpLFxuICAgIC8vICAgICAgICAgLi4uYXVnbWVudGF0aW9uLFxuICAgIC8vICAgICAgIH0pLFxuICAgIC8vICAgICB9KSBhcyBhbnk7XG4gICAgLy8gICB9O1xuICAgIGV4dGVuZChhdWdtZW50YXRpb24pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fZGVmLnNoYXBlKCksXG4gICAgICAgICAgICAgICAgLi4uYXVnbWVudGF0aW9uLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQcmlvciB0byB6b2RAMS4wLjEyIHRoZXJlIHdhcyBhIGJ1ZyBpbiB0aGVcbiAgICAgKiBpbmZlcnJlZCB0eXBlIG9mIG1lcmdlZCBvYmplY3RzLiBQbGVhc2VcbiAgICAgKiB1cGdyYWRlIGlmIHlvdSBhcmUgZXhwZXJpZW5jaW5nIGlzc3Vlcy5cbiAgICAgKi9cbiAgICBtZXJnZShtZXJnaW5nKSB7XG4gICAgICAgIGNvbnN0IG1lcmdlZCA9IG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAgICAgICAgIGNhdGNoYWxsOiBtZXJnaW5nLl9kZWYuY2F0Y2hhbGwsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gKHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9kZWYuc2hhcGUoKSxcbiAgICAgICAgICAgICAgICAuLi5tZXJnaW5nLl9kZWYuc2hhcGUoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gbWVyZ2VkO1xuICAgIH1cbiAgICAvLyBtZXJnZTxcbiAgICAvLyAgIEluY29taW5nIGV4dGVuZHMgQW55Wm9kT2JqZWN0LFxuICAgIC8vICAgQXVnbWVudGF0aW9uIGV4dGVuZHMgSW5jb21pbmdbXCJzaGFwZVwiXSxcbiAgICAvLyAgIE5ld091dHB1dCBleHRlbmRzIHtcbiAgICAvLyAgICAgW2sgaW4ga2V5b2YgQXVnbWVudGF0aW9uIHwga2V5b2YgT3V0cHV0XTogayBleHRlbmRzIGtleW9mIEF1Z21lbnRhdGlvblxuICAgIC8vICAgICAgID8gQXVnbWVudGF0aW9uW2tdW1wiX291dHB1dFwiXVxuICAgIC8vICAgICAgIDogayBleHRlbmRzIGtleW9mIE91dHB1dFxuICAgIC8vICAgICAgID8gT3V0cHV0W2tdXG4gICAgLy8gICAgICAgOiBuZXZlcjtcbiAgICAvLyAgIH0sXG4gICAgLy8gICBOZXdJbnB1dCBleHRlbmRzIHtcbiAgICAvLyAgICAgW2sgaW4ga2V5b2YgQXVnbWVudGF0aW9uIHwga2V5b2YgSW5wdXRdOiBrIGV4dGVuZHMga2V5b2YgQXVnbWVudGF0aW9uXG4gICAgLy8gICAgICAgPyBBdWdtZW50YXRpb25ba11bXCJfaW5wdXRcIl1cbiAgICAvLyAgICAgICA6IGsgZXh0ZW5kcyBrZXlvZiBJbnB1dFxuICAgIC8vICAgICAgID8gSW5wdXRba11cbiAgICAvLyAgICAgICA6IG5ldmVyO1xuICAgIC8vICAgfVxuICAgIC8vID4oXG4gICAgLy8gICBtZXJnaW5nOiBJbmNvbWluZ1xuICAgIC8vICk6IFpvZE9iamVjdDxcbiAgICAvLyAgIGV4dGVuZFNoYXBlPFQsIFJldHVyblR5cGU8SW5jb21pbmdbXCJfZGVmXCJdW1wic2hhcGVcIl0+PixcbiAgICAvLyAgIEluY29taW5nW1wiX2RlZlwiXVtcInVua25vd25LZXlzXCJdLFxuICAgIC8vICAgSW5jb21pbmdbXCJfZGVmXCJdW1wiY2F0Y2hhbGxcIl0sXG4gICAgLy8gICBOZXdPdXRwdXQsXG4gICAgLy8gICBOZXdJbnB1dFxuICAgIC8vID4ge1xuICAgIC8vICAgY29uc3QgbWVyZ2VkOiBhbnkgPSBuZXcgWm9kT2JqZWN0KHtcbiAgICAvLyAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAvLyAgICAgY2F0Y2hhbGw6IG1lcmdpbmcuX2RlZi5jYXRjaGFsbCxcbiAgICAvLyAgICAgc2hhcGU6ICgpID0+XG4gICAgLy8gICAgICAgb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyh0aGlzLl9kZWYuc2hhcGUoKSwgbWVyZ2luZy5fZGVmLnNoYXBlKCkpLFxuICAgIC8vICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcbiAgICAvLyAgIH0pIGFzIGFueTtcbiAgICAvLyAgIHJldHVybiBtZXJnZWQ7XG4gICAgLy8gfVxuICAgIHNldEtleShrZXksIHNjaGVtYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hdWdtZW50KHsgW2tleV06IHNjaGVtYSB9KTtcbiAgICB9XG4gICAgLy8gbWVyZ2U8SW5jb21pbmcgZXh0ZW5kcyBBbnlab2RPYmplY3Q+KFxuICAgIC8vICAgbWVyZ2luZzogSW5jb21pbmdcbiAgICAvLyApOiAvL1pvZE9iamVjdDxUICYgSW5jb21pbmdbXCJfc2hhcGVcIl0sIFVua25vd25LZXlzLCBDYXRjaGFsbD4gPSAobWVyZ2luZykgPT4ge1xuICAgIC8vIFpvZE9iamVjdDxcbiAgICAvLyAgIGV4dGVuZFNoYXBlPFQsIFJldHVyblR5cGU8SW5jb21pbmdbXCJfZGVmXCJdW1wic2hhcGVcIl0+PixcbiAgICAvLyAgIEluY29taW5nW1wiX2RlZlwiXVtcInVua25vd25LZXlzXCJdLFxuICAgIC8vICAgSW5jb21pbmdbXCJfZGVmXCJdW1wiY2F0Y2hhbGxcIl1cbiAgICAvLyA+IHtcbiAgICAvLyAgIC8vIGNvbnN0IG1lcmdlZFNoYXBlID0gb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyhcbiAgICAvLyAgIC8vICAgdGhpcy5fZGVmLnNoYXBlKCksXG4gICAgLy8gICAvLyAgIG1lcmdpbmcuX2RlZi5zaGFwZSgpXG4gICAgLy8gICAvLyApO1xuICAgIC8vICAgY29uc3QgbWVyZ2VkOiBhbnkgPSBuZXcgWm9kT2JqZWN0KHtcbiAgICAvLyAgICAgdW5rbm93bktleXM6IG1lcmdpbmcuX2RlZi51bmtub3duS2V5cyxcbiAgICAvLyAgICAgY2F0Y2hhbGw6IG1lcmdpbmcuX2RlZi5jYXRjaGFsbCxcbiAgICAvLyAgICAgc2hhcGU6ICgpID0+XG4gICAgLy8gICAgICAgb2JqZWN0VXRpbC5tZXJnZVNoYXBlcyh0aGlzLl9kZWYuc2hhcGUoKSwgbWVyZ2luZy5fZGVmLnNoYXBlKCkpLFxuICAgIC8vICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcbiAgICAvLyAgIH0pIGFzIGFueTtcbiAgICAvLyAgIHJldHVybiBtZXJnZWQ7XG4gICAgLy8gfVxuICAgIGNhdGNoYWxsKGluZGV4KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kT2JqZWN0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGNhdGNoYWxsOiBpbmRleCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHBpY2sobWFzaykge1xuICAgICAgICBjb25zdCBzaGFwZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiB1dGlsLm9iamVjdEtleXMobWFzaykpIHtcbiAgICAgICAgICAgIGlmIChtYXNrW2tleV0gJiYgdGhpcy5zaGFwZVtrZXldKSB7XG4gICAgICAgICAgICAgICAgc2hhcGVba2V5XSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBvbWl0KG1hc2spIHtcbiAgICAgICAgY29uc3Qgc2hhcGUgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKSB7XG4gICAgICAgICAgICBpZiAoIW1hc2tba2V5XSkge1xuICAgICAgICAgICAgICAgIHNoYXBlW2tleV0gPSB0aGlzLnNoYXBlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+IHNoYXBlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKi9cbiAgICBkZWVwUGFydGlhbCgpIHtcbiAgICAgICAgcmV0dXJuIGRlZXBQYXJ0aWFsaWZ5KHRoaXMpO1xuICAgIH1cbiAgICBwYXJ0aWFsKG1hc2spIHtcbiAgICAgICAgY29uc3QgbmV3U2hhcGUgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgdXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgICAgIGlmIChtYXNrICYmICFtYXNrW2tleV0pIHtcbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gZmllbGRTY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gZmllbGRTY2hlbWEub3B0aW9uYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICBzaGFwZTogKCkgPT4gbmV3U2hhcGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXF1aXJlZChtYXNrKSB7XG4gICAgICAgIGNvbnN0IG5ld1NoYXBlID0ge307XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSkge1xuICAgICAgICAgICAgaWYgKG1hc2sgJiYgIW1hc2tba2V5XSkge1xuICAgICAgICAgICAgICAgIG5ld1NoYXBlW2tleV0gPSB0aGlzLnNoYXBlW2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFNjaGVtYSA9IHRoaXMuc2hhcGVba2V5XTtcbiAgICAgICAgICAgICAgICBsZXQgbmV3RmllbGQgPSBmaWVsZFNjaGVtYTtcbiAgICAgICAgICAgICAgICB3aGlsZSAobmV3RmllbGQgaW5zdGFuY2VvZiBab2RPcHRpb25hbCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdGaWVsZCA9IG5ld0ZpZWxkLl9kZWYuaW5uZXJUeXBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXdTaGFwZVtrZXldID0gbmV3RmllbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgc2hhcGU6ICgpID0+IG5ld1NoYXBlLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAga2V5b2YoKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVab2RFbnVtKHV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSk7XG4gICAgfVxufVxuWm9kT2JqZWN0LmNyZWF0ZSA9IChzaGFwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICBzaGFwZTogKCkgPT4gc2hhcGUsXG4gICAgICAgIHVua25vd25LZXlzOiBcInN0cmlwXCIsXG4gICAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5ab2RPYmplY3Quc3RyaWN0Q3JlYXRlID0gKHNoYXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE9iamVjdCh7XG4gICAgICAgIHNoYXBlOiAoKSA9PiBzaGFwZSxcbiAgICAgICAgdW5rbm93bktleXM6IFwic3RyaWN0XCIsXG4gICAgICAgIGNhdGNoYWxsOiBab2ROZXZlci5jcmVhdGUoKSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPYmplY3QsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5ab2RPYmplY3QubGF6eWNyZWF0ZSA9IChzaGFwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPYmplY3Qoe1xuICAgICAgICBzaGFwZSxcbiAgICAgICAgdW5rbm93bktleXM6IFwic3RyaXBcIixcbiAgICAgICAgY2F0Y2hhbGw6IFpvZE5ldmVyLmNyZWF0ZSgpLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE9iamVjdCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RVbmlvbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2RlZi5vcHRpb25zO1xuICAgICAgICBmdW5jdGlvbiBoYW5kbGVSZXN1bHRzKHJlc3VsdHMpIHtcbiAgICAgICAgICAgIC8vIHJldHVybiBmaXJzdCBpc3N1ZS1mcmVlIHZhbGlkYXRpb24gaWYgaXQgZXhpc3RzXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5yZXN1bHQuc3RhdHVzID09PSBcInZhbGlkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChjb25zdCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQucmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZCBpc3N1ZXMgZnJvbSBkaXJ0eSBvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgY3R4LmNvbW1vbi5pc3N1ZXMucHVzaCguLi5yZXN1bHQuY3R4LmNvbW1vbi5pc3N1ZXMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByZXR1cm4gaW52YWxpZFxuICAgICAgICAgICAgY29uc3QgdW5pb25FcnJvcnMgPSByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiBuZXcgWm9kRXJyb3IocmVzdWx0LmN0eC5jb21tb24uaXNzdWVzKSk7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbixcbiAgICAgICAgICAgICAgICB1bmlvbkVycm9ycyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcHRpb25zLm1hcChhc3luYyAob3B0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRDdHggPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmN0eCxcbiAgICAgICAgICAgICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jdHguY29tbW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNzdWVzOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBudWxsLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBhd2FpdCBvcHRpb24uX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY2hpbGRDdHgsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBjdHg6IGNoaWxkQ3R4LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSkudGhlbihoYW5kbGVSZXN1bHRzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBkaXJ0eSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGlzc3VlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkQ3R4ID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jdHgsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1vbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY3R4LmNvbW1vbixcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzc3VlczogW10sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogbnVsbCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IG9wdGlvbi5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGNoaWxkQ3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInZhbGlkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiICYmICFkaXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICBkaXJ0eSA9IHsgcmVzdWx0LCBjdHg6IGNoaWxkQ3R4IH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjaGlsZEN0eC5jb21tb24uaXNzdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpc3N1ZXMucHVzaChjaGlsZEN0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICBjdHguY29tbW9uLmlzc3Vlcy5wdXNoKC4uLmRpcnR5LmN0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlydHkucmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdW5pb25FcnJvcnMgPSBpc3N1ZXMubWFwKChpc3N1ZXMpID0+IG5ldyBab2RFcnJvcihpc3N1ZXMpKTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uLFxuICAgICAgICAgICAgICAgIHVuaW9uRXJyb3JzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zO1xuICAgIH1cbn1cblpvZFVuaW9uLmNyZWF0ZSA9ICh0eXBlcywgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RVbmlvbih7XG4gICAgICAgIG9wdGlvbnM6IHR5cGVzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFVuaW9uLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vLy8vL1xuLy8vLy8vLy8vLyAgICAgIFpvZERpc2NyaW1pbmF0ZWRVbmlvbiAgICAgIC8vLy8vLy8vLy9cbi8vLy8vLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbmNvbnN0IGdldERpc2NyaW1pbmF0b3IgPSAodHlwZSkgPT4ge1xuICAgIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTGF6eSkge1xuICAgICAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRvcih0eXBlLnNjaGVtYSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RFZmZlY3RzKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNjcmltaW5hdG9yKHR5cGUuaW5uZXJUeXBlKCkpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTGl0ZXJhbCkge1xuICAgICAgICByZXR1cm4gW3R5cGUudmFsdWVdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kRW51bSkge1xuICAgICAgICByZXR1cm4gdHlwZS5vcHRpb25zO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTmF0aXZlRW51bSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYmFuL2JhblxuICAgICAgICByZXR1cm4gdXRpbC5vYmplY3RWYWx1ZXModHlwZS5lbnVtKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZERlZmF1bHQpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc2NyaW1pbmF0b3IodHlwZS5fZGVmLmlubmVyVHlwZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RVbmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTnVsbCkge1xuICAgICAgICByZXR1cm4gW251bGxdO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kT3B0aW9uYWwpIHtcbiAgICAgICAgcmV0dXJuIFt1bmRlZmluZWQsIC4uLmdldERpc2NyaW1pbmF0b3IodHlwZS51bndyYXAoKSldO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlIGluc3RhbmNlb2YgWm9kTnVsbGFibGUpIHtcbiAgICAgICAgcmV0dXJuIFtudWxsLCAuLi5nZXREaXNjcmltaW5hdG9yKHR5cGUudW53cmFwKCkpXTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZEJyYW5kZWQpIHtcbiAgICAgICAgcmV0dXJuIGdldERpc2NyaW1pbmF0b3IodHlwZS51bndyYXAoKSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHR5cGUgaW5zdGFuY2VvZiBab2RSZWFkb25seSkge1xuICAgICAgICByZXR1cm4gZ2V0RGlzY3JpbWluYXRvcih0eXBlLnVud3JhcCgpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodHlwZSBpbnN0YW5jZW9mIFpvZENhdGNoKSB7XG4gICAgICAgIHJldHVybiBnZXREaXNjcmltaW5hdG9yKHR5cGUuX2RlZi5pbm5lclR5cGUpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn07XG5leHBvcnQgY2xhc3MgWm9kRGlzY3JpbWluYXRlZFVuaW9uIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUub2JqZWN0KSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm9iamVjdCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3IgPSB0aGlzLmRpc2NyaW1pbmF0b3I7XG4gICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZSA9IGN0eC5kYXRhW2Rpc2NyaW1pbmF0b3JdO1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnNNYXAuZ2V0KGRpc2NyaW1pbmF0b3JWYWx1ZSk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IEFycmF5LmZyb20odGhpcy5vcHRpb25zTWFwLmtleXMoKSksXG4gICAgICAgICAgICAgICAgcGF0aDogW2Rpc2NyaW1pbmF0b3JdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb24uX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgZGlzY3JpbWluYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5kaXNjcmltaW5hdG9yO1xuICAgIH1cbiAgICBnZXQgb3B0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zO1xuICAgIH1cbiAgICBnZXQgb3B0aW9uc01hcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zTWFwO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgY29uc3RydWN0b3Igb2YgdGhlIGRpc2NyaW1pbmF0ZWQgdW5pb24gc2NoZW1hLiBJdHMgYmVoYXZpb3VyIGlzIHZlcnkgc2ltaWxhciB0byB0aGF0IG9mIHRoZSBub3JtYWwgei51bmlvbigpIGNvbnN0cnVjdG9yLlxuICAgICAqIEhvd2V2ZXIsIGl0IG9ubHkgYWxsb3dzIGEgdW5pb24gb2Ygb2JqZWN0cywgYWxsIG9mIHdoaWNoIG5lZWQgdG8gc2hhcmUgYSBkaXNjcmltaW5hdG9yIHByb3BlcnR5LiBUaGlzIHByb3BlcnR5IG11c3RcbiAgICAgKiBoYXZlIGEgZGlmZmVyZW50IHZhbHVlIGZvciBlYWNoIG9iamVjdCBpbiB0aGUgdW5pb24uXG4gICAgICogQHBhcmFtIGRpc2NyaW1pbmF0b3IgdGhlIG5hbWUgb2YgdGhlIGRpc2NyaW1pbmF0b3IgcHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdHlwZXMgYW4gYXJyYXkgb2Ygb2JqZWN0IHNjaGVtYXNcbiAgICAgKiBAcGFyYW0gcGFyYW1zXG4gICAgICovXG4gICAgc3RhdGljIGNyZWF0ZShkaXNjcmltaW5hdG9yLCBvcHRpb25zLCBwYXJhbXMpIHtcbiAgICAgICAgLy8gR2V0IGFsbCB0aGUgdmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZXNcbiAgICAgICAgY29uc3Qgb3B0aW9uc01hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgLy8gdHJ5IHtcbiAgICAgICAgZm9yIChjb25zdCB0eXBlIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc2NyaW1pbmF0b3JWYWx1ZXMgPSBnZXREaXNjcmltaW5hdG9yKHR5cGUuc2hhcGVbZGlzY3JpbWluYXRvcl0pO1xuICAgICAgICAgICAgaWYgKCFkaXNjcmltaW5hdG9yVmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQSBkaXNjcmltaW5hdG9yIHZhbHVlIGZvciBrZXkgXFxgJHtkaXNjcmltaW5hdG9yfVxcYCBjb3VsZCBub3QgYmUgZXh0cmFjdGVkIGZyb20gYWxsIHNjaGVtYSBvcHRpb25zYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGRpc2NyaW1pbmF0b3JWYWx1ZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uc01hcC5oYXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY3JpbWluYXRvciBwcm9wZXJ0eSAke1N0cmluZyhkaXNjcmltaW5hdG9yKX0gaGFzIGR1cGxpY2F0ZSB2YWx1ZSAke1N0cmluZyh2YWx1ZSl9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9wdGlvbnNNYXAuc2V0KHZhbHVlLCB0eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZERpc2NyaW1pbmF0ZWRVbmlvbih7XG4gICAgICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERpc2NyaW1pbmF0ZWRVbmlvbixcbiAgICAgICAgICAgIGRpc2NyaW1pbmF0b3IsXG4gICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9uc01hcCxcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZnVuY3Rpb24gbWVyZ2VWYWx1ZXMoYSwgYikge1xuICAgIGNvbnN0IGFUeXBlID0gZ2V0UGFyc2VkVHlwZShhKTtcbiAgICBjb25zdCBiVHlwZSA9IGdldFBhcnNlZFR5cGUoYik7XG4gICAgaWYgKGEgPT09IGIpIHtcbiAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IHRydWUsIGRhdGE6IGEgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYVR5cGUgPT09IFpvZFBhcnNlZFR5cGUub2JqZWN0ICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLm9iamVjdCkge1xuICAgICAgICBjb25zdCBiS2V5cyA9IHV0aWwub2JqZWN0S2V5cyhiKTtcbiAgICAgICAgY29uc3Qgc2hhcmVkS2V5cyA9IHV0aWwub2JqZWN0S2V5cyhhKS5maWx0ZXIoKGtleSkgPT4gYktleXMuaW5kZXhPZihrZXkpICE9PSAtMSk7XG4gICAgICAgIGNvbnN0IG5ld09iaiA9IHsgLi4uYSwgLi4uYiB9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBzaGFyZWRLZXlzKSB7XG4gICAgICAgICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGFba2V5XSwgYltrZXldKTtcbiAgICAgICAgICAgIGlmICghc2hhcmVkVmFsdWUudmFsaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld09ialtrZXldID0gc2hhcmVkVmFsdWUuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyB2YWxpZDogdHJ1ZSwgZGF0YTogbmV3T2JqIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKGFUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5ICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLmFycmF5KSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0FycmF5ID0gW107XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbUEgPSBhW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1CID0gYltpbmRleF07XG4gICAgICAgICAgICBjb25zdCBzaGFyZWRWYWx1ZSA9IG1lcmdlVmFsdWVzKGl0ZW1BLCBpdGVtQik7XG4gICAgICAgICAgICBpZiAoIXNoYXJlZFZhbHVlLnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgdmFsaWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdBcnJheS5wdXNoKHNoYXJlZFZhbHVlLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBuZXdBcnJheSB9O1xuICAgIH1cbiAgICBlbHNlIGlmIChhVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS5kYXRlICYmIGJUeXBlID09PSBab2RQYXJzZWRUeXBlLmRhdGUgJiYgK2EgPT09ICtiKSB7XG4gICAgICAgIHJldHVybiB7IHZhbGlkOiB0cnVlLCBkYXRhOiBhIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4geyB2YWxpZDogZmFsc2UgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgWm9kSW50ZXJzZWN0aW9uIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGhhbmRsZVBhcnNlZCA9IChwYXJzZWRMZWZ0LCBwYXJzZWRSaWdodCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzQWJvcnRlZChwYXJzZWRMZWZ0KSB8fCBpc0Fib3J0ZWQocGFyc2VkUmlnaHQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtZXJnZWQgPSBtZXJnZVZhbHVlcyhwYXJzZWRMZWZ0LnZhbHVlLCBwYXJzZWRSaWdodC52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIW1lcmdlZC52YWxpZCkge1xuICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNEaXJ0eShwYXJzZWRMZWZ0KSB8fCBpc0RpcnR5KHBhcnNlZFJpZ2h0KSkge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBtZXJnZWQuZGF0YSB9O1xuICAgICAgICB9O1xuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgICAgICAgICAgICB0aGlzLl9kZWYubGVmdC5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGhpcy5fZGVmLnJpZ2h0Ll9wYXJzZUFzeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0pLnRoZW4oKFtsZWZ0LCByaWdodF0pID0+IGhhbmRsZVBhcnNlZChsZWZ0LCByaWdodCkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVBhcnNlZCh0aGlzLl9kZWYubGVmdC5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgICAgIH0pLCB0aGlzLl9kZWYucmlnaHQuX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgZGF0YTogY3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5ab2RJbnRlcnNlY3Rpb24uY3JlYXRlID0gKGxlZnQsIHJpZ2h0LCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEludGVyc2VjdGlvbih7XG4gICAgICAgIGxlZnQ6IGxlZnQsXG4gICAgICAgIHJpZ2h0OiByaWdodCxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RJbnRlcnNlY3Rpb24sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG4vLyB0eXBlIFpvZFR1cGxlSXRlbXMgPSBbWm9kVHlwZUFueSwgLi4uWm9kVHlwZUFueVtdXTtcbmV4cG9ydCBjbGFzcyBab2RUdXBsZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuYXJyYXkpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUuYXJyYXksXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY3R4LmRhdGEubGVuZ3RoIDwgdGhpcy5fZGVmLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxcbiAgICAgICAgICAgICAgICBtaW5pbXVtOiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN0ID0gdGhpcy5fZGVmLnJlc3Q7XG4gICAgICAgIGlmICghcmVzdCAmJiBjdHguZGF0YS5sZW5ndGggPiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX2JpZyxcbiAgICAgICAgICAgICAgICBtYXhpbXVtOiB0aGlzLl9kZWYuaXRlbXMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGluY2x1c2l2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpdGVtcyA9IFsuLi5jdHguZGF0YV1cbiAgICAgICAgICAgIC5tYXAoKGl0ZW0sIGl0ZW1JbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NoZW1hID0gdGhpcy5fZGVmLml0ZW1zW2l0ZW1JbmRleF0gfHwgdGhpcy5fZGVmLnJlc3Q7XG4gICAgICAgICAgICBpZiAoIXNjaGVtYSlcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBzY2hlbWEuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaXRlbUluZGV4KSk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiAhIXgpOyAvLyBmaWx0ZXIgbnVsbHNcbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChpdGVtcykudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgcmVzdWx0cyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZUFycmF5KHN0YXR1cywgaXRlbXMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBpdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pdGVtcztcbiAgICB9XG4gICAgcmVzdChyZXN0KSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kVHVwbGUoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgcmVzdCxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuWm9kVHVwbGUuY3JlYXRlID0gKHNjaGVtYXMsIHBhcmFtcykgPT4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShzY2hlbWFzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJZb3UgbXVzdCBwYXNzIGFuIGFycmF5IG9mIHNjaGVtYXMgdG8gei50dXBsZShbIC4uLiBdKVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBab2RUdXBsZSh7XG4gICAgICAgIGl0ZW1zOiBzY2hlbWFzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFR1cGxlLFxuICAgICAgICByZXN0OiBudWxsLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZFJlY29yZCBleHRlbmRzIFpvZFR5cGUge1xuICAgIGdldCBrZXlTY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYua2V5VHlwZTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICB9XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgc3RhdHVzLCBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5vYmplY3QpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUub2JqZWN0LFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFpcnMgPSBbXTtcbiAgICAgICAgY29uc3Qga2V5VHlwZSA9IHRoaXMuX2RlZi5rZXlUeXBlO1xuICAgICAgICBjb25zdCB2YWx1ZVR5cGUgPSB0aGlzLl9kZWYudmFsdWVUeXBlO1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBjdHguZGF0YSkge1xuICAgICAgICAgICAgcGFpcnMucHVzaCh7XG4gICAgICAgICAgICAgICAga2V5OiBrZXlUeXBlLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwga2V5LCBjdHgucGF0aCwga2V5KSksXG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlVHlwZS5fcGFyc2UobmV3IFBhcnNlSW5wdXRMYXp5UGF0aChjdHgsIGN0eC5kYXRhW2tleV0sIGN0eC5wYXRoLCBrZXkpKSxcbiAgICAgICAgICAgICAgICBhbHdheXNTZXQ6IGtleSBpbiBjdHguZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RBc3luYyhzdGF0dXMsIHBhaXJzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBQYXJzZVN0YXR1cy5tZXJnZU9iamVjdFN5bmMoc3RhdHVzLCBwYWlycyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlO1xuICAgIH1cbiAgICBzdGF0aWMgY3JlYXRlKGZpcnN0LCBzZWNvbmQsIHRoaXJkKSB7XG4gICAgICAgIGlmIChzZWNvbmQgaW5zdGFuY2VvZiBab2RUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgICAgICAgICAga2V5VHlwZTogZmlyc3QsXG4gICAgICAgICAgICAgICAgdmFsdWVUeXBlOiBzZWNvbmQsXG4gICAgICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXG4gICAgICAgICAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyh0aGlyZCksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFpvZFJlY29yZCh7XG4gICAgICAgICAgICBrZXlUeXBlOiBab2RTdHJpbmcuY3JlYXRlKCksXG4gICAgICAgICAgICB2YWx1ZVR5cGU6IGZpcnN0LFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RSZWNvcmQsXG4gICAgICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHNlY29uZCksXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RNYXAgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBnZXQga2V5U2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmtleVR5cGU7XG4gICAgfVxuICAgIGdldCB2YWx1ZVNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZVR5cGU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUubWFwKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLm1hcCxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleVR5cGUgPSB0aGlzLl9kZWYua2V5VHlwZTtcbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICAgICAgY29uc3QgcGFpcnMgPSBbLi4uY3R4LmRhdGEuZW50cmllcygpXS5tYXAoKFtrZXksIHZhbHVlXSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAga2V5OiBrZXlUeXBlLl9wYXJzZShuZXcgUGFyc2VJbnB1dExhenlQYXRoKGN0eCwga2V5LCBjdHgucGF0aCwgW2luZGV4LCBcImtleVwiXSkpLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCB2YWx1ZSwgY3R4LnBhdGgsIFtpbmRleCwgXCJ2YWx1ZVwiXSkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jKSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbE1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgcGFpcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYXdhaXQgcGFpci5rZXk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcGFpci52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiYWJvcnRlZFwiIHx8IHZhbHVlLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChrZXkuc3RhdHVzID09PSBcImRpcnR5XCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsTWFwLnNldChrZXkudmFsdWUsIHZhbHVlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBmaW5hbE1hcCB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmaW5hbE1hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFpciBvZiBwYWlycykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHBhaXIua2V5O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFpci52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIgfHwgdmFsdWUuc3RhdHVzID09PSBcImFib3J0ZWRcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGtleS5zdGF0dXMgPT09IFwiZGlydHlcIiB8fCB2YWx1ZS5zdGF0dXMgPT09IFwiZGlydHlcIikge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxNYXAuc2V0KGtleS52YWx1ZSwgdmFsdWUudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBmaW5hbE1hcCB9O1xuICAgICAgICB9XG4gICAgfVxufVxuWm9kTWFwLmNyZWF0ZSA9IChrZXlUeXBlLCB2YWx1ZVR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kTWFwKHtcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICBrZXlUeXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE1hcCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RTZXQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBzdGF0dXMsIGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnNldCkge1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxcbiAgICAgICAgICAgICAgICBleHBlY3RlZDogWm9kUGFyc2VkVHlwZS5zZXQsXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWYgPSB0aGlzLl9kZWY7XG4gICAgICAgIGlmIChkZWYubWluU2l6ZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKGN0eC5kYXRhLnNpemUgPCBkZWYubWluU2l6ZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUudG9vX3NtYWxsLFxuICAgICAgICAgICAgICAgICAgICBtaW5pbXVtOiBkZWYubWluU2l6ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5taW5TaXplLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlZi5tYXhTaXplICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAoY3R4LmRhdGEuc2l6ZSA+IGRlZi5tYXhTaXplLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS50b29fYmlnLFxuICAgICAgICAgICAgICAgICAgICBtYXhpbXVtOiBkZWYubWF4U2l6ZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXRcIixcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVzaXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBleGFjdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGRlZi5tYXhTaXplLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWVUeXBlID0gdGhpcy5fZGVmLnZhbHVlVHlwZTtcbiAgICAgICAgZnVuY3Rpb24gZmluYWxpemVTZXQoZWxlbWVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZGlydHkoKTtcbiAgICAgICAgICAgICAgICBwYXJzZWRTZXQuYWRkKGVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBwYXJzZWRTZXQgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFsuLi5jdHguZGF0YS52YWx1ZXMoKV0ubWFwKChpdGVtLCBpKSA9PiB2YWx1ZVR5cGUuX3BhcnNlKG5ldyBQYXJzZUlucHV0TGF6eVBhdGgoY3R4LCBpdGVtLCBjdHgucGF0aCwgaSkpKTtcbiAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChlbGVtZW50cykudGhlbigoZWxlbWVudHMpID0+IGZpbmFsaXplU2V0KGVsZW1lbnRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmluYWxpemVTZXQoZWxlbWVudHMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIG1pbihtaW5TaXplLCBtZXNzYWdlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWm9kU2V0KHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIG1pblNpemU6IHsgdmFsdWU6IG1pblNpemUsIG1lc3NhZ2U6IGVycm9yVXRpbC50b1N0cmluZyhtZXNzYWdlKSB9LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgbWF4KG1heFNpemUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RTZXQoe1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgbWF4U2l6ZTogeyB2YWx1ZTogbWF4U2l6ZSwgbWVzc2FnZTogZXJyb3JVdGlsLnRvU3RyaW5nKG1lc3NhZ2UpIH0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBzaXplKHNpemUsIG1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluKHNpemUsIG1lc3NhZ2UpLm1heChzaXplLCBtZXNzYWdlKTtcbiAgICB9XG4gICAgbm9uZW1wdHkobWVzc2FnZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5taW4oMSwgbWVzc2FnZSk7XG4gICAgfVxufVxuWm9kU2V0LmNyZWF0ZSA9ICh2YWx1ZVR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kU2V0KHtcbiAgICAgICAgdmFsdWVUeXBlLFxuICAgICAgICBtaW5TaXplOiBudWxsLFxuICAgICAgICBtYXhTaXplOiBudWxsLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFNldCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RGdW5jdGlvbiBleHRlbmRzIFpvZFR5cGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnZhbGlkYXRlID0gdGhpcy5pbXBsZW1lbnQ7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLmZ1bmN0aW9uKSB7XG4gICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIHtcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiBab2RQYXJzZWRUeXBlLmZ1bmN0aW9uLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gbWFrZUFyZ3NJc3N1ZShhcmdzLCBlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG1ha2VJc3N1ZSh7XG4gICAgICAgICAgICAgICAgZGF0YTogYXJncyxcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBlcnJvck1hcHM6IFtjdHguY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCwgY3R4LnNjaGVtYUVycm9yTWFwLCBnZXRFcnJvck1hcCgpLCBkZWZhdWx0RXJyb3JNYXBdLmZpbHRlcigoeCkgPT4gISF4KSxcbiAgICAgICAgICAgICAgICBpc3N1ZURhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgY29kZTogWm9kSXNzdWVDb2RlLmludmFsaWRfYXJndW1lbnRzLFxuICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNFcnJvcjogZXJyb3IsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG1ha2VSZXR1cm5zSXNzdWUocmV0dXJucywgZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybiBtYWtlSXNzdWUoe1xuICAgICAgICAgICAgICAgIGRhdGE6IHJldHVybnMsXG4gICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgZXJyb3JNYXBzOiBbY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsIGN0eC5zY2hlbWFFcnJvck1hcCwgZ2V0RXJyb3JNYXAoKSwgZGVmYXVsdEVycm9yTWFwXS5maWx0ZXIoKHgpID0+ICEheCksXG4gICAgICAgICAgICAgICAgaXNzdWVEYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3JldHVybl90eXBlLFxuICAgICAgICAgICAgICAgICAgICByZXR1cm5UeXBlRXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7IGVycm9yTWFwOiBjdHguY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCB9O1xuICAgICAgICBjb25zdCBmbiA9IGN0eC5kYXRhO1xuICAgICAgICBpZiAodGhpcy5fZGVmLnJldHVybnMgaW5zdGFuY2VvZiBab2RQcm9taXNlKSB7XG4gICAgICAgICAgICAvLyBXb3VsZCBsb3ZlIGEgd2F5IHRvIGF2b2lkIGRpc2FibGluZyB0aGlzIHJ1bGUsIGJ1dCB3ZSBuZWVkXG4gICAgICAgICAgICAvLyBhbiBhbGlhcyAodXNpbmcgYW4gYXJyb3cgZnVuY3Rpb24gd2FzIHdoYXQgY2F1c2VkIDI2NTEpLlxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG4gICAgICAgICAgICBjb25zdCBtZSA9IHRoaXM7XG4gICAgICAgICAgICByZXR1cm4gT0soYXN5bmMgZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBab2RFcnJvcihbXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkQXJncyA9IGF3YWl0IG1lLl9kZWYuYXJncy5wYXJzZUFzeW5jKGFyZ3MsIHBhcmFtcykuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IuYWRkSXNzdWUobWFrZUFyZ3NJc3N1ZShhcmdzLCBlKSk7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFJlZmxlY3QuYXBwbHkoZm4sIHRoaXMsIHBhcnNlZEFyZ3MpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZFJldHVybnMgPSBhd2FpdCBtZS5fZGVmLnJldHVybnMuX2RlZi50eXBlXG4gICAgICAgICAgICAgICAgICAgIC5wYXJzZUFzeW5jKHJlc3VsdCwgcGFyYW1zKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IuYWRkSXNzdWUobWFrZVJldHVybnNJc3N1ZShyZXN1bHQsIGUpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlZFJldHVybnM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFdvdWxkIGxvdmUgYSB3YXkgdG8gYXZvaWQgZGlzYWJsaW5nIHRoaXMgcnVsZSwgYnV0IHdlIG5lZWRcbiAgICAgICAgICAgIC8vIGFuIGFsaWFzICh1c2luZyBhbiBhcnJvdyBmdW5jdGlvbiB3YXMgd2hhdCBjYXVzZWQgMjY1MSkuXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXRoaXMtYWxpYXNcbiAgICAgICAgICAgIGNvbnN0IG1lID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBPSyhmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZEFyZ3MgPSBtZS5fZGVmLmFyZ3Muc2FmZVBhcnNlKGFyZ3MsIHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRBcmdzLnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFpvZEVycm9yKFttYWtlQXJnc0lzc3VlKGFyZ3MsIHBhcnNlZEFyZ3MuZXJyb3IpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFJlZmxlY3QuYXBwbHkoZm4sIHRoaXMsIHBhcnNlZEFyZ3MuZGF0YSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmV0dXJucyA9IG1lLl9kZWYucmV0dXJucy5zYWZlUGFyc2UocmVzdWx0LCBwYXJhbXMpO1xuICAgICAgICAgICAgICAgIGlmICghcGFyc2VkUmV0dXJucy5zdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBab2RFcnJvcihbbWFrZVJldHVybnNJc3N1ZShyZXN1bHQsIHBhcnNlZFJldHVybnMuZXJyb3IpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZWRSZXR1cm5zLmRhdGE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwYXJhbWV0ZXJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmFyZ3M7XG4gICAgfVxuICAgIHJldHVyblR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYucmV0dXJucztcbiAgICB9XG4gICAgYXJncyguLi5pdGVtcykge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEZ1bmN0aW9uKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIGFyZ3M6IFpvZFR1cGxlLmNyZWF0ZShpdGVtcykucmVzdChab2RVbmtub3duLmNyZWF0ZSgpKSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybnMocmV0dXJuVHlwZSkge1xuICAgICAgICByZXR1cm4gbmV3IFpvZEZ1bmN0aW9uKHtcbiAgICAgICAgICAgIC4uLnRoaXMuX2RlZixcbiAgICAgICAgICAgIHJldHVybnM6IHJldHVyblR5cGUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBpbXBsZW1lbnQoZnVuYykge1xuICAgICAgICBjb25zdCB2YWxpZGF0ZWRGdW5jID0gdGhpcy5wYXJzZShmdW5jKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlZEZ1bmM7XG4gICAgfVxuICAgIHN0cmljdEltcGxlbWVudChmdW5jKSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlZEZ1bmMgPSB0aGlzLnBhcnNlKGZ1bmMpO1xuICAgICAgICByZXR1cm4gdmFsaWRhdGVkRnVuYztcbiAgICB9XG4gICAgc3RhdGljIGNyZWF0ZShhcmdzLCByZXR1cm5zLCBwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBab2RGdW5jdGlvbih7XG4gICAgICAgICAgICBhcmdzOiAoYXJncyA/IGFyZ3MgOiBab2RUdXBsZS5jcmVhdGUoW10pLnJlc3QoWm9kVW5rbm93bi5jcmVhdGUoKSkpLFxuICAgICAgICAgICAgcmV0dXJuczogcmV0dXJucyB8fCBab2RVbmtub3duLmNyZWF0ZSgpLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RGdW5jdGlvbixcbiAgICAgICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFpvZExhenkgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBnZXQgc2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmdldHRlcigpO1xuICAgIH1cbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGxhenlTY2hlbWEgPSB0aGlzLl9kZWYuZ2V0dGVyKCk7XG4gICAgICAgIHJldHVybiBsYXp5U2NoZW1hLl9wYXJzZSh7IGRhdGE6IGN0eC5kYXRhLCBwYXRoOiBjdHgucGF0aCwgcGFyZW50OiBjdHggfSk7XG4gICAgfVxufVxuWm9kTGF6eS5jcmVhdGUgPSAoZ2V0dGVyLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZExhenkoe1xuICAgICAgICBnZXR0ZXI6IGdldHRlcixcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RMYXp5LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZExpdGVyYWwgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgaWYgKGlucHV0LmRhdGEgIT09IHRoaXMuX2RlZi52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2xpdGVyYWwsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IHRoaXMuX2RlZi52YWx1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi52YWx1ZTtcbiAgICB9XG59XG5ab2RMaXRlcmFsLmNyZWF0ZSA9ICh2YWx1ZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RMaXRlcmFsKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZExpdGVyYWwsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5mdW5jdGlvbiBjcmVhdGVab2RFbnVtKHZhbHVlcywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIG5ldyBab2RFbnVtKHtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVudW0sXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn1cbmV4cG9ydCBjbGFzcyBab2RFbnVtIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGlmICh0eXBlb2YgaW5wdXQuZGF0YSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB0aGlzLl9kZWYudmFsdWVzO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IHV0aWwuam9pblZhbHVlcyhleHBlY3RlZFZhbHVlcyksXG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5wYXJzZWRUeXBlLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fY2FjaGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NhY2hlID0gbmV3IFNldCh0aGlzLl9kZWYudmFsdWVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlLmhhcyhpbnB1dC5kYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB0aGlzLl9kZWYudmFsdWVzO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZXhwZWN0ZWRWYWx1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG4gICAgZ2V0IG9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVzO1xuICAgIH1cbiAgICBnZXQgZW51bSgpIHtcbiAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKSB7XG4gICAgICAgICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudW1WYWx1ZXM7XG4gICAgfVxuICAgIGdldCBWYWx1ZXMoKSB7XG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSB7fTtcbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgdGhpcy5fZGVmLnZhbHVlcykge1xuICAgICAgICAgICAgZW51bVZhbHVlc1t2YWxdID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbnVtVmFsdWVzO1xuICAgIH1cbiAgICBnZXQgRW51bSgpIHtcbiAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB0aGlzLl9kZWYudmFsdWVzKSB7XG4gICAgICAgICAgICBlbnVtVmFsdWVzW3ZhbF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudW1WYWx1ZXM7XG4gICAgfVxuICAgIGV4dHJhY3QodmFsdWVzLCBuZXdEZWYgPSB0aGlzLl9kZWYpIHtcbiAgICAgICAgcmV0dXJuIFpvZEVudW0uY3JlYXRlKHZhbHVlcywge1xuICAgICAgICAgICAgLi4udGhpcy5fZGVmLFxuICAgICAgICAgICAgLi4ubmV3RGVmLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgZXhjbHVkZSh2YWx1ZXMsIG5ld0RlZiA9IHRoaXMuX2RlZikge1xuICAgICAgICByZXR1cm4gWm9kRW51bS5jcmVhdGUodGhpcy5vcHRpb25zLmZpbHRlcigob3B0KSA9PiAhdmFsdWVzLmluY2x1ZGVzKG9wdCkpLCB7XG4gICAgICAgICAgICAuLi50aGlzLl9kZWYsXG4gICAgICAgICAgICAuLi5uZXdEZWYsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblpvZEVudW0uY3JlYXRlID0gY3JlYXRlWm9kRW51bTtcbmV4cG9ydCBjbGFzcyBab2ROYXRpdmVFbnVtIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZUVudW1WYWx1ZXMgPSB1dGlsLmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl9kZWYudmFsdWVzKTtcbiAgICAgICAgY29uc3QgY3R4ID0gdGhpcy5fZ2V0T3JSZXR1cm5DdHgoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LnBhcnNlZFR5cGUgIT09IFpvZFBhcnNlZFR5cGUuc3RyaW5nICYmIGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLm51bWJlcikge1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSB1dGlsLm9iamVjdFZhbHVlcyhuYXRpdmVFbnVtVmFsdWVzKTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGV4cGVjdGVkOiB1dGlsLmpvaW5WYWx1ZXMoZXhwZWN0ZWRWYWx1ZXMpLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgICAgICBjb2RlOiBab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2NhY2hlKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWNoZSA9IG5ldyBTZXQodXRpbC5nZXRWYWxpZEVudW1WYWx1ZXModGhpcy5fZGVmLnZhbHVlcykpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fY2FjaGUuaGFzKGlucHV0LmRhdGEpKSB7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IHV0aWwub2JqZWN0VmFsdWVzKG5hdGl2ZUVudW1WYWx1ZXMpO1xuICAgICAgICAgICAgYWRkSXNzdWVUb0NvbnRleHQoY3R4LCB7XG4gICAgICAgICAgICAgICAgcmVjZWl2ZWQ6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogZXhwZWN0ZWRWYWx1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPSyhpbnB1dC5kYXRhKTtcbiAgICB9XG4gICAgZ2V0IGVudW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYudmFsdWVzO1xuICAgIH1cbn1cblpvZE5hdGl2ZUVudW0uY3JlYXRlID0gKHZhbHVlcywgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2ROYXRpdmVFbnVtKHtcbiAgICAgICAgdmFsdWVzOiB2YWx1ZXMsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmF0aXZlRW51bSxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2RQcm9taXNlIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgdW53cmFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLnR5cGU7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IGN0eCB9ID0gdGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGlucHV0KTtcbiAgICAgICAgaWYgKGN0eC5wYXJzZWRUeXBlICE9PSBab2RQYXJzZWRUeXBlLnByb21pc2UgJiYgY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUucHJvbWlzZSxcbiAgICAgICAgICAgICAgICByZWNlaXZlZDogY3R4LnBhcnNlZFR5cGUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb21pc2lmaWVkID0gY3R4LnBhcnNlZFR5cGUgPT09IFpvZFBhcnNlZFR5cGUucHJvbWlzZSA/IGN0eC5kYXRhIDogUHJvbWlzZS5yZXNvbHZlKGN0eC5kYXRhKTtcbiAgICAgICAgcmV0dXJuIE9LKHByb21pc2lmaWVkLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWYudHlwZS5wYXJzZUFzeW5jKGRhdGEsIHtcbiAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICBlcnJvck1hcDogY3R4LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgIH1cbn1cblpvZFByb21pc2UuY3JlYXRlID0gKHNjaGVtYSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RQcm9taXNlKHtcbiAgICAgICAgdHlwZTogc2NoZW1hLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZFByb21pc2UsXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG5leHBvcnQgY2xhc3MgWm9kRWZmZWN0cyBleHRlbmRzIFpvZFR5cGUge1xuICAgIGlubmVyVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWE7XG4gICAgfVxuICAgIHNvdXJjZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuc2NoZW1hLl9kZWYudHlwZU5hbWUgPT09IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RFZmZlY3RzXG4gICAgICAgICAgICA/IHRoaXMuX2RlZi5zY2hlbWEuc291cmNlVHlwZSgpXG4gICAgICAgICAgICA6IHRoaXMuX2RlZi5zY2hlbWE7XG4gICAgfVxuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBjb25zdCBlZmZlY3QgPSB0aGlzLl9kZWYuZWZmZWN0IHx8IG51bGw7XG4gICAgICAgIGNvbnN0IGNoZWNrQ3R4ID0ge1xuICAgICAgICAgICAgYWRkSXNzdWU6IChhcmcpID0+IHtcbiAgICAgICAgICAgICAgICBhZGRJc3N1ZVRvQ29udGV4dChjdHgsIGFyZyk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZy5mYXRhbCkge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuYWJvcnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcGF0aCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhdGg7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBjaGVja0N0eC5hZGRJc3N1ZSA9IGNoZWNrQ3R4LmFkZElzc3VlLmJpbmQoY2hlY2tDdHgpO1xuICAgICAgICBpZiAoZWZmZWN0LnR5cGUgPT09IFwicHJlcHJvY2Vzc1wiKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9jZXNzZWQgPSBlZmZlY3QudHJhbnNmb3JtKGN0eC5kYXRhLCBjaGVja0N0eCk7XG4gICAgICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocHJvY2Vzc2VkKS50aGVuKGFzeW5jIChwcm9jZXNzZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy52YWx1ZSA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBwcm9jZXNzZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcImRpcnR5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRElSVFkocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy52YWx1ZSA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERJUlRZKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnZhbHVlID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcHJvY2Vzc2VkLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJkaXJ0eVwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gRElSVFkocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnZhbHVlID09PSBcImRpcnR5XCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBESVJUWShyZXN1bHQudmFsdWUpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVmZmVjdC50eXBlID09PSBcInJlZmluZW1lbnRcIikge1xuICAgICAgICAgICAgY29uc3QgZXhlY3V0ZVJlZmluZW1lbnQgPSAoYWNjKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZWZmZWN0LnJlZmluZW1lbnQoYWNjLCBjaGVja0N0eCk7XG4gICAgICAgICAgICAgICAgaWYgKGN0eC5jb21tb24uYXN5bmMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBc3luYyByZWZpbmVtZW50IGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbm5lciA9IHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyLnN0YXR1cyA9PT0gXCJhYm9ydGVkXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEO1xuICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIHZhbHVlIGlzIGlnbm9yZWRcbiAgICAgICAgICAgICAgICBleGVjdXRlUmVmaW5lbWVudChpbm5lci52YWx1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbm5lci52YWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoeyBkYXRhOiBjdHguZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pLnRoZW4oKGlubmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbm5lci5zdGF0dXMgPT09IFwiZGlydHlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhlY3V0ZVJlZmluZW1lbnQoaW5uZXIudmFsdWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBzdGF0dXMudmFsdWUsIHZhbHVlOiBpbm5lci52YWx1ZSB9O1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZWZmZWN0LnR5cGUgPT09IFwidHJhbnNmb3JtXCIpIHtcbiAgICAgICAgICAgIGlmIChjdHguY29tbW9uLmFzeW5jID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmICghaXNWYWxpZChiYXNlKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZWZmZWN0LnRyYW5zZm9ybShiYXNlLnZhbHVlLCBjaGVja0N0eCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBc3luY2hyb25vdXMgdHJhbnNmb3JtIGVuY291bnRlcmVkIGR1cmluZyBzeW5jaHJvbm91cyBwYXJzZSBvcGVyYXRpb24uIFVzZSAucGFyc2VBc3luYyBpbnN0ZWFkLmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdGF0dXM6IHN0YXR1cy52YWx1ZSwgdmFsdWU6IHJlc3VsdCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoeyBkYXRhOiBjdHguZGF0YSwgcGF0aDogY3R4LnBhdGgsIHBhcmVudDogY3R4IH0pLnRoZW4oKGJhc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkKGJhc2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZWZmZWN0LnRyYW5zZm9ybShiYXNlLnZhbHVlLCBjaGVja0N0eCkpLnRoZW4oKHJlc3VsdCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHV0aWwuYXNzZXJ0TmV2ZXIoZWZmZWN0KTtcbiAgICB9XG59XG5ab2RFZmZlY3RzLmNyZWF0ZSA9IChzY2hlbWEsIGVmZmVjdCwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RFZmZlY3RzKHtcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZEVmZmVjdHMsXG4gICAgICAgIGVmZmVjdCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcblpvZEVmZmVjdHMuY3JlYXRlV2l0aFByZXByb2Nlc3MgPSAocHJlcHJvY2Vzcywgc2NoZW1hLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZEVmZmVjdHMoe1xuICAgICAgICBzY2hlbWEsXG4gICAgICAgIGVmZmVjdDogeyB0eXBlOiBcInByZXByb2Nlc3NcIiwgdHJhbnNmb3JtOiBwcmVwcm9jZXNzIH0sXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kRWZmZWN0cyxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCB7IFpvZEVmZmVjdHMgYXMgWm9kVHJhbnNmb3JtZXIgfTtcbmV4cG9ydCBjbGFzcyBab2RPcHRpb25hbCBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlID09PSBab2RQYXJzZWRUeXBlLnVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIE9LKHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGlucHV0KTtcbiAgICB9XG4gICAgdW53cmFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZTtcbiAgICB9XG59XG5ab2RPcHRpb25hbC5jcmVhdGUgPSAodHlwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2RPcHRpb25hbCh7XG4gICAgICAgIGlubmVyVHlwZTogdHlwZSxcbiAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RPcHRpb25hbCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2ROdWxsYWJsZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCBwYXJzZWRUeXBlID0gdGhpcy5fZ2V0VHlwZShpbnB1dCk7XG4gICAgICAgIGlmIChwYXJzZWRUeXBlID09PSBab2RQYXJzZWRUeXBlLm51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBPSyhudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2UoaW5wdXQpO1xuICAgIH1cbiAgICB1bndyYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlO1xuICAgIH1cbn1cblpvZE51bGxhYmxlLmNyZWF0ZSA9ICh0eXBlLCBwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE51bGxhYmxlKHtcbiAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZE51bGxhYmxlLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZERlZmF1bHQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGxldCBkYXRhID0gY3R4LmRhdGE7XG4gICAgICAgIGlmIChjdHgucGFyc2VkVHlwZSA9PT0gWm9kUGFyc2VkVHlwZS51bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLl9kZWYuZGVmYXVsdFZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBwYXRoOiBjdHgucGF0aCxcbiAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmVtb3ZlRGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kRGVmYXVsdC5jcmVhdGUgPSAodHlwZSwgcGFyYW1zKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBab2REZWZhdWx0KHtcbiAgICAgICAgaW5uZXJUeXBlOiB0eXBlLFxuICAgICAgICB0eXBlTmFtZTogWm9kRmlyc3RQYXJ0eVR5cGVLaW5kLlpvZERlZmF1bHQsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdHlwZW9mIHBhcmFtcy5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgPyBwYXJhbXMuZGVmYXVsdCA6ICgpID0+IHBhcmFtcy5kZWZhdWx0LFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNsYXNzIFpvZENhdGNoIGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICAvLyBuZXdDdHggaXMgdXNlZCB0byBub3QgY29sbGVjdCBpc3N1ZXMgZnJvbSBpbm5lciB0eXBlcyBpbiBjdHhcbiAgICAgICAgY29uc3QgbmV3Q3R4ID0ge1xuICAgICAgICAgICAgLi4uY3R4LFxuICAgICAgICAgICAgY29tbW9uOiB7XG4gICAgICAgICAgICAgICAgLi4uY3R4LmNvbW1vbixcbiAgICAgICAgICAgICAgICBpc3N1ZXM6IFtdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2Uoe1xuICAgICAgICAgICAgZGF0YTogbmV3Q3R4LmRhdGEsXG4gICAgICAgICAgICBwYXRoOiBuZXdDdHgucGF0aCxcbiAgICAgICAgICAgIHBhcmVudDoge1xuICAgICAgICAgICAgICAgIC4uLm5ld0N0eCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNBc3luYyhyZXN1bHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogXCJ2YWxpZFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcmVzdWx0LnN0YXR1cyA9PT0gXCJ2YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHJlc3VsdC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGVycm9yKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFpvZEVycm9yKG5ld0N0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiBuZXdDdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc3RhdHVzOiBcInZhbGlkXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJlc3VsdC5zdGF0dXMgPT09IFwidmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICA/IHJlc3VsdC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2RlZi5jYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldCBlcnJvcigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFpvZEVycm9yKG5ld0N0eC5jb21tb24uaXNzdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dDogbmV3Q3R4LmRhdGEsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZW1vdmVDYXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kQ2F0Y2guY3JlYXRlID0gKHR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kQ2F0Y2goe1xuICAgICAgICBpbm5lclR5cGU6IHR5cGUsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kQ2F0Y2gsXG4gICAgICAgIGNhdGNoVmFsdWU6IHR5cGVvZiBwYXJhbXMuY2F0Y2ggPT09IFwiZnVuY3Rpb25cIiA/IHBhcmFtcy5jYXRjaCA6ICgpID0+IHBhcmFtcy5jYXRjaCxcbiAgICAgICAgLi4ucHJvY2Vzc0NyZWF0ZVBhcmFtcyhwYXJhbXMpLFxuICAgIH0pO1xufTtcbmV4cG9ydCBjbGFzcyBab2ROYU4gZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkVHlwZSA9IHRoaXMuX2dldFR5cGUoaW5wdXQpO1xuICAgICAgICBpZiAocGFyc2VkVHlwZSAhPT0gWm9kUGFyc2VkVHlwZS5uYW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGN0eCA9IHRoaXMuX2dldE9yUmV0dXJuQ3R4KGlucHV0KTtcbiAgICAgICAgICAgIGFkZElzc3VlVG9Db250ZXh0KGN0eCwge1xuICAgICAgICAgICAgICAgIGNvZGU6IFpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IFpvZFBhcnNlZFR5cGUubmFuLFxuICAgICAgICAgICAgICAgIHJlY2VpdmVkOiBjdHgucGFyc2VkVHlwZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIElOVkFMSUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBcInZhbGlkXCIsIHZhbHVlOiBpbnB1dC5kYXRhIH07XG4gICAgfVxufVxuWm9kTmFOLmNyZWF0ZSA9IChwYXJhbXMpID0+IHtcbiAgICByZXR1cm4gbmV3IFpvZE5hTih7XG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kTmFOLFxuICAgICAgICAuLi5wcm9jZXNzQ3JlYXRlUGFyYW1zKHBhcmFtcyksXG4gICAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IEJSQU5EID0gU3ltYm9sKFwiem9kX2JyYW5kXCIpO1xuZXhwb3J0IGNsYXNzIFpvZEJyYW5kZWQgZXh0ZW5kcyBab2RUeXBlIHtcbiAgICBfcGFyc2UoaW5wdXQpIHtcbiAgICAgICAgY29uc3QgeyBjdHggfSA9IHRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhpbnB1dCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBjdHguZGF0YTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi50eXBlLl9wYXJzZSh7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICBwYXJlbnQ6IGN0eCxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi50eXBlO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBab2RQaXBlbGluZSBleHRlbmRzIFpvZFR5cGUge1xuICAgIF9wYXJzZShpbnB1dCkge1xuICAgICAgICBjb25zdCB7IHN0YXR1cywgY3R4IH0gPSB0aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoaW5wdXQpO1xuICAgICAgICBpZiAoY3R4LmNvbW1vbi5hc3luYykge1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQXN5bmMgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5SZXN1bHQgPSBhd2FpdCB0aGlzLl9kZWYuaW4uX3BhcnNlQXN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBjdHguZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChpblJlc3VsdC5zdGF0dXMgPT09IFwiYWJvcnRlZFwiKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgICAgICBpZiAoaW5SZXN1bHQuc3RhdHVzID09PSBcImRpcnR5XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmRpcnR5KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBESVJUWShpblJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVmLm91dC5fcGFyc2VBc3luYyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBpblJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50OiBjdHgsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gaGFuZGxlQXN5bmMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGluUmVzdWx0ID0gdGhpcy5fZGVmLmluLl9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgIGRhdGE6IGN0eC5kYXRhLFxuICAgICAgICAgICAgICAgIHBhdGg6IGN0eC5wYXRoLFxuICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoaW5SZXN1bHQuc3RhdHVzID09PSBcImFib3J0ZWRcIilcbiAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRDtcbiAgICAgICAgICAgIGlmIChpblJlc3VsdC5zdGF0dXMgPT09IFwiZGlydHlcIikge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5kaXJ0eSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogXCJkaXJ0eVwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogaW5SZXN1bHQudmFsdWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kZWYub3V0Ll9wYXJzZVN5bmMoe1xuICAgICAgICAgICAgICAgICAgICBkYXRhOiBpblJlc3VsdC52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgcGF0aDogY3R4LnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudDogY3R4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHN0YXRpYyBjcmVhdGUoYSwgYikge1xuICAgICAgICByZXR1cm4gbmV3IFpvZFBpcGVsaW5lKHtcbiAgICAgICAgICAgIGluOiBhLFxuICAgICAgICAgICAgb3V0OiBiLFxuICAgICAgICAgICAgdHlwZU5hbWU6IFpvZEZpcnN0UGFydHlUeXBlS2luZC5ab2RQaXBlbGluZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFpvZFJlYWRvbmx5IGV4dGVuZHMgWm9kVHlwZSB7XG4gICAgX3BhcnNlKGlucHV0KSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGlucHV0KTtcbiAgICAgICAgY29uc3QgZnJlZXplID0gKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChpc1ZhbGlkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgZGF0YS52YWx1ZSA9IE9iamVjdC5mcmVlemUoZGF0YS52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGlzQXN5bmMocmVzdWx0KSA/IHJlc3VsdC50aGVuKChkYXRhKSA9PiBmcmVlemUoZGF0YSkpIDogZnJlZXplKHJlc3VsdCk7XG4gICAgfVxuICAgIHVud3JhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGU7XG4gICAgfVxufVxuWm9kUmVhZG9ubHkuY3JlYXRlID0gKHR5cGUsIHBhcmFtcykgPT4ge1xuICAgIHJldHVybiBuZXcgWm9kUmVhZG9ubHkoe1xuICAgICAgICBpbm5lclR5cGU6IHR5cGUsXG4gICAgICAgIHR5cGVOYW1lOiBab2RGaXJzdFBhcnR5VHlwZUtpbmQuWm9kUmVhZG9ubHksXG4gICAgICAgIC4uLnByb2Nlc3NDcmVhdGVQYXJhbXMocGFyYW1zKSxcbiAgICB9KTtcbn07XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgei5jdXN0b20gICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vICAgICAgICAgICAgICAgICAgICAvLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5mdW5jdGlvbiBjbGVhblBhcmFtcyhwYXJhbXMsIGRhdGEpIHtcbiAgICBjb25zdCBwID0gdHlwZW9mIHBhcmFtcyA9PT0gXCJmdW5jdGlvblwiID8gcGFyYW1zKGRhdGEpIDogdHlwZW9mIHBhcmFtcyA9PT0gXCJzdHJpbmdcIiA/IHsgbWVzc2FnZTogcGFyYW1zIH0gOiBwYXJhbXM7XG4gICAgY29uc3QgcDIgPSB0eXBlb2YgcCA9PT0gXCJzdHJpbmdcIiA/IHsgbWVzc2FnZTogcCB9IDogcDtcbiAgICByZXR1cm4gcDI7XG59XG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tKGNoZWNrLCBfcGFyYW1zID0ge30sIFxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICpcbiAqIFBhc3MgYGZhdGFsYCBpbnRvIHRoZSBwYXJhbXMgb2JqZWN0IGluc3RlYWQ6XG4gKlxuICogYGBgdHNcbiAqIHouc3RyaW5nKCkuY3VzdG9tKCh2YWwpID0+IHZhbC5sZW5ndGggPiA1LCB7IGZhdGFsOiBmYWxzZSB9KVxuICogYGBgXG4gKlxuICovXG5mYXRhbCkge1xuICAgIGlmIChjaGVjaylcbiAgICAgICAgcmV0dXJuIFpvZEFueS5jcmVhdGUoKS5zdXBlclJlZmluZSgoZGF0YSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByID0gY2hlY2soZGF0YSk7XG4gICAgICAgICAgICBpZiAociBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gci50aGVuKChyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gY2xlYW5QYXJhbXMoX3BhcmFtcywgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfZmF0YWwgPSBwYXJhbXMuZmF0YWwgPz8gZmF0YWwgPz8gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5hZGRJc3N1ZSh7IGNvZGU6IFwiY3VzdG9tXCIsIC4uLnBhcmFtcywgZmF0YWw6IF9mYXRhbCB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gY2xlYW5QYXJhbXMoX3BhcmFtcywgZGF0YSk7XG4gICAgICAgICAgICAgICAgY29uc3QgX2ZhdGFsID0gcGFyYW1zLmZhdGFsID8/IGZhdGFsID8/IHRydWU7XG4gICAgICAgICAgICAgICAgY3R4LmFkZElzc3VlKHsgY29kZTogXCJjdXN0b21cIiwgLi4ucGFyYW1zLCBmYXRhbDogX2ZhdGFsIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9KTtcbiAgICByZXR1cm4gWm9kQW55LmNyZWF0ZSgpO1xufVxuZXhwb3J0IHsgWm9kVHlwZSBhcyBTY2hlbWEsIFpvZFR5cGUgYXMgWm9kU2NoZW1hIH07XG5leHBvcnQgY29uc3QgbGF0ZSA9IHtcbiAgICBvYmplY3Q6IFpvZE9iamVjdC5sYXp5Y3JlYXRlLFxufTtcbmV4cG9ydCB2YXIgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kO1xuKGZ1bmN0aW9uIChab2RGaXJzdFBhcnR5VHlwZUtpbmQpIHtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RTdHJpbmdcIl0gPSBcIlpvZFN0cmluZ1wiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE51bWJlclwiXSA9IFwiWm9kTnVtYmVyXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kTmFOXCJdID0gXCJab2ROYU5cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RCaWdJbnRcIl0gPSBcIlpvZEJpZ0ludFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEJvb2xlYW5cIl0gPSBcIlpvZEJvb2xlYW5cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2REYXRlXCJdID0gXCJab2REYXRlXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kU3ltYm9sXCJdID0gXCJab2RTeW1ib2xcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RVbmRlZmluZWRcIl0gPSBcIlpvZFVuZGVmaW5lZFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE51bGxcIl0gPSBcIlpvZE51bGxcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RBbnlcIl0gPSBcIlpvZEFueVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFVua25vd25cIl0gPSBcIlpvZFVua25vd25cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2ROZXZlclwiXSA9IFwiWm9kTmV2ZXJcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RWb2lkXCJdID0gXCJab2RWb2lkXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kQXJyYXlcIl0gPSBcIlpvZEFycmF5XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kT2JqZWN0XCJdID0gXCJab2RPYmplY3RcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RVbmlvblwiXSA9IFwiWm9kVW5pb25cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2REaXNjcmltaW5hdGVkVW5pb25cIl0gPSBcIlpvZERpc2NyaW1pbmF0ZWRVbmlvblwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEludGVyc2VjdGlvblwiXSA9IFwiWm9kSW50ZXJzZWN0aW9uXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kVHVwbGVcIl0gPSBcIlpvZFR1cGxlXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kUmVjb3JkXCJdID0gXCJab2RSZWNvcmRcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RNYXBcIl0gPSBcIlpvZE1hcFwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZFNldFwiXSA9IFwiWm9kU2V0XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRnVuY3Rpb25cIl0gPSBcIlpvZEZ1bmN0aW9uXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kTGF6eVwiXSA9IFwiWm9kTGF6eVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZExpdGVyYWxcIl0gPSBcIlpvZExpdGVyYWxcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RFbnVtXCJdID0gXCJab2RFbnVtXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kRWZmZWN0c1wiXSA9IFwiWm9kRWZmZWN0c1wiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZE5hdGl2ZUVudW1cIl0gPSBcIlpvZE5hdGl2ZUVudW1cIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RPcHRpb25hbFwiXSA9IFwiWm9kT3B0aW9uYWxcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2ROdWxsYWJsZVwiXSA9IFwiWm9kTnVsbGFibGVcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2REZWZhdWx0XCJdID0gXCJab2REZWZhdWx0XCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kQ2F0Y2hcIl0gPSBcIlpvZENhdGNoXCI7XG4gICAgWm9kRmlyc3RQYXJ0eVR5cGVLaW5kW1wiWm9kUHJvbWlzZVwiXSA9IFwiWm9kUHJvbWlzZVwiO1xuICAgIFpvZEZpcnN0UGFydHlUeXBlS2luZFtcIlpvZEJyYW5kZWRcIl0gPSBcIlpvZEJyYW5kZWRcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RQaXBlbGluZVwiXSA9IFwiWm9kUGlwZWxpbmVcIjtcbiAgICBab2RGaXJzdFBhcnR5VHlwZUtpbmRbXCJab2RSZWFkb25seVwiXSA9IFwiWm9kUmVhZG9ubHlcIjtcbn0pKFpvZEZpcnN0UGFydHlUeXBlS2luZCB8fCAoWm9kRmlyc3RQYXJ0eVR5cGVLaW5kID0ge30pKTtcbi8vIHJlcXVpcmVzIFRTIDQuNCtcbmNsYXNzIENsYXNzIHtcbiAgICBjb25zdHJ1Y3RvciguLi5fKSB7IH1cbn1cbmNvbnN0IGluc3RhbmNlT2ZUeXBlID0gKFxuLy8gY29uc3QgaW5zdGFuY2VPZlR5cGUgPSA8VCBleHRlbmRzIG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueT4oXG5jbHMsIHBhcmFtcyA9IHtcbiAgICBtZXNzYWdlOiBgSW5wdXQgbm90IGluc3RhbmNlIG9mICR7Y2xzLm5hbWV9YCxcbn0pID0+IGN1c3RvbSgoZGF0YSkgPT4gZGF0YSBpbnN0YW5jZW9mIGNscywgcGFyYW1zKTtcbmNvbnN0IHN0cmluZ1R5cGUgPSBab2RTdHJpbmcuY3JlYXRlO1xuY29uc3QgbnVtYmVyVHlwZSA9IFpvZE51bWJlci5jcmVhdGU7XG5jb25zdCBuYW5UeXBlID0gWm9kTmFOLmNyZWF0ZTtcbmNvbnN0IGJpZ0ludFR5cGUgPSBab2RCaWdJbnQuY3JlYXRlO1xuY29uc3QgYm9vbGVhblR5cGUgPSBab2RCb29sZWFuLmNyZWF0ZTtcbmNvbnN0IGRhdGVUeXBlID0gWm9kRGF0ZS5jcmVhdGU7XG5jb25zdCBzeW1ib2xUeXBlID0gWm9kU3ltYm9sLmNyZWF0ZTtcbmNvbnN0IHVuZGVmaW5lZFR5cGUgPSBab2RVbmRlZmluZWQuY3JlYXRlO1xuY29uc3QgbnVsbFR5cGUgPSBab2ROdWxsLmNyZWF0ZTtcbmNvbnN0IGFueVR5cGUgPSBab2RBbnkuY3JlYXRlO1xuY29uc3QgdW5rbm93blR5cGUgPSBab2RVbmtub3duLmNyZWF0ZTtcbmNvbnN0IG5ldmVyVHlwZSA9IFpvZE5ldmVyLmNyZWF0ZTtcbmNvbnN0IHZvaWRUeXBlID0gWm9kVm9pZC5jcmVhdGU7XG5jb25zdCBhcnJheVR5cGUgPSBab2RBcnJheS5jcmVhdGU7XG5jb25zdCBvYmplY3RUeXBlID0gWm9kT2JqZWN0LmNyZWF0ZTtcbmNvbnN0IHN0cmljdE9iamVjdFR5cGUgPSBab2RPYmplY3Quc3RyaWN0Q3JlYXRlO1xuY29uc3QgdW5pb25UeXBlID0gWm9kVW5pb24uY3JlYXRlO1xuY29uc3QgZGlzY3JpbWluYXRlZFVuaW9uVHlwZSA9IFpvZERpc2NyaW1pbmF0ZWRVbmlvbi5jcmVhdGU7XG5jb25zdCBpbnRlcnNlY3Rpb25UeXBlID0gWm9kSW50ZXJzZWN0aW9uLmNyZWF0ZTtcbmNvbnN0IHR1cGxlVHlwZSA9IFpvZFR1cGxlLmNyZWF0ZTtcbmNvbnN0IHJlY29yZFR5cGUgPSBab2RSZWNvcmQuY3JlYXRlO1xuY29uc3QgbWFwVHlwZSA9IFpvZE1hcC5jcmVhdGU7XG5jb25zdCBzZXRUeXBlID0gWm9kU2V0LmNyZWF0ZTtcbmNvbnN0IGZ1bmN0aW9uVHlwZSA9IFpvZEZ1bmN0aW9uLmNyZWF0ZTtcbmNvbnN0IGxhenlUeXBlID0gWm9kTGF6eS5jcmVhdGU7XG5jb25zdCBsaXRlcmFsVHlwZSA9IFpvZExpdGVyYWwuY3JlYXRlO1xuY29uc3QgZW51bVR5cGUgPSBab2RFbnVtLmNyZWF0ZTtcbmNvbnN0IG5hdGl2ZUVudW1UeXBlID0gWm9kTmF0aXZlRW51bS5jcmVhdGU7XG5jb25zdCBwcm9taXNlVHlwZSA9IFpvZFByb21pc2UuY3JlYXRlO1xuY29uc3QgZWZmZWN0c1R5cGUgPSBab2RFZmZlY3RzLmNyZWF0ZTtcbmNvbnN0IG9wdGlvbmFsVHlwZSA9IFpvZE9wdGlvbmFsLmNyZWF0ZTtcbmNvbnN0IG51bGxhYmxlVHlwZSA9IFpvZE51bGxhYmxlLmNyZWF0ZTtcbmNvbnN0IHByZXByb2Nlc3NUeXBlID0gWm9kRWZmZWN0cy5jcmVhdGVXaXRoUHJlcHJvY2VzcztcbmNvbnN0IHBpcGVsaW5lVHlwZSA9IFpvZFBpcGVsaW5lLmNyZWF0ZTtcbmNvbnN0IG9zdHJpbmcgPSAoKSA9PiBzdHJpbmdUeXBlKCkub3B0aW9uYWwoKTtcbmNvbnN0IG9udW1iZXIgPSAoKSA9PiBudW1iZXJUeXBlKCkub3B0aW9uYWwoKTtcbmNvbnN0IG9ib29sZWFuID0gKCkgPT4gYm9vbGVhblR5cGUoKS5vcHRpb25hbCgpO1xuZXhwb3J0IGNvbnN0IGNvZXJjZSA9IHtcbiAgICBzdHJpbmc6ICgoYXJnKSA9PiBab2RTdHJpbmcuY3JlYXRlKHsgLi4uYXJnLCBjb2VyY2U6IHRydWUgfSkpLFxuICAgIG51bWJlcjogKChhcmcpID0+IFpvZE51bWJlci5jcmVhdGUoeyAuLi5hcmcsIGNvZXJjZTogdHJ1ZSB9KSksXG4gICAgYm9vbGVhbjogKChhcmcpID0+IFpvZEJvb2xlYW4uY3JlYXRlKHtcbiAgICAgICAgLi4uYXJnLFxuICAgICAgICBjb2VyY2U6IHRydWUsXG4gICAgfSkpLFxuICAgIGJpZ2ludDogKChhcmcpID0+IFpvZEJpZ0ludC5jcmVhdGUoeyAuLi5hcmcsIGNvZXJjZTogdHJ1ZSB9KSksXG4gICAgZGF0ZTogKChhcmcpID0+IFpvZERhdGUuY3JlYXRlKHsgLi4uYXJnLCBjb2VyY2U6IHRydWUgfSkpLFxufTtcbmV4cG9ydCB7IGFueVR5cGUgYXMgYW55LCBhcnJheVR5cGUgYXMgYXJyYXksIGJpZ0ludFR5cGUgYXMgYmlnaW50LCBib29sZWFuVHlwZSBhcyBib29sZWFuLCBkYXRlVHlwZSBhcyBkYXRlLCBkaXNjcmltaW5hdGVkVW5pb25UeXBlIGFzIGRpc2NyaW1pbmF0ZWRVbmlvbiwgZWZmZWN0c1R5cGUgYXMgZWZmZWN0LCBlbnVtVHlwZSBhcyBlbnVtLCBmdW5jdGlvblR5cGUgYXMgZnVuY3Rpb24sIGluc3RhbmNlT2ZUeXBlIGFzIGluc3RhbmNlb2YsIGludGVyc2VjdGlvblR5cGUgYXMgaW50ZXJzZWN0aW9uLCBsYXp5VHlwZSBhcyBsYXp5LCBsaXRlcmFsVHlwZSBhcyBsaXRlcmFsLCBtYXBUeXBlIGFzIG1hcCwgbmFuVHlwZSBhcyBuYW4sIG5hdGl2ZUVudW1UeXBlIGFzIG5hdGl2ZUVudW0sIG5ldmVyVHlwZSBhcyBuZXZlciwgbnVsbFR5cGUgYXMgbnVsbCwgbnVsbGFibGVUeXBlIGFzIG51bGxhYmxlLCBudW1iZXJUeXBlIGFzIG51bWJlciwgb2JqZWN0VHlwZSBhcyBvYmplY3QsIG9ib29sZWFuLCBvbnVtYmVyLCBvcHRpb25hbFR5cGUgYXMgb3B0aW9uYWwsIG9zdHJpbmcsIHBpcGVsaW5lVHlwZSBhcyBwaXBlbGluZSwgcHJlcHJvY2Vzc1R5cGUgYXMgcHJlcHJvY2VzcywgcHJvbWlzZVR5cGUgYXMgcHJvbWlzZSwgcmVjb3JkVHlwZSBhcyByZWNvcmQsIHNldFR5cGUgYXMgc2V0LCBzdHJpY3RPYmplY3RUeXBlIGFzIHN0cmljdE9iamVjdCwgc3RyaW5nVHlwZSBhcyBzdHJpbmcsIHN5bWJvbFR5cGUgYXMgc3ltYm9sLCBlZmZlY3RzVHlwZSBhcyB0cmFuc2Zvcm1lciwgdHVwbGVUeXBlIGFzIHR1cGxlLCB1bmRlZmluZWRUeXBlIGFzIHVuZGVmaW5lZCwgdW5pb25UeXBlIGFzIHVuaW9uLCB1bmtub3duVHlwZSBhcyB1bmtub3duLCB2b2lkVHlwZSBhcyB2b2lkLCB9O1xuZXhwb3J0IGNvbnN0IE5FVkVSID0gSU5WQUxJRDtcbiJdLCJuYW1lcyI6WyJab2RFcnJvciIsIlpvZElzc3VlQ29kZSIsImRlZmF1bHRFcnJvck1hcCIsImdldEVycm9yTWFwIiwiZXJyb3JVdGlsIiwiRElSVFkiLCJJTlZBTElEIiwiT0siLCJQYXJzZVN0YXR1cyIsImFkZElzc3VlVG9Db250ZXh0IiwiaXNBYm9ydGVkIiwiaXNBc3luYyIsImlzRGlydHkiLCJpc1ZhbGlkIiwibWFrZUlzc3VlIiwidXRpbCIsIlpvZFBhcnNlZFR5cGUiLCJnZXRQYXJzZWRUeXBlIiwiUGFyc2VJbnB1dExhenlQYXRoIiwicGFyZW50IiwidmFsdWUiLCJwYXRoIiwia2V5IiwiX2NhY2hlZFBhdGgiLCJkYXRhIiwiX3BhdGgiLCJfa2V5IiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsImhhbmRsZVJlc3VsdCIsImN0eCIsInJlc3VsdCIsInN1Y2Nlc3MiLCJjb21tb24iLCJpc3N1ZXMiLCJFcnJvciIsImVycm9yIiwiX2Vycm9yIiwicHJvY2Vzc0NyZWF0ZVBhcmFtcyIsInBhcmFtcyIsImVycm9yTWFwIiwiaW52YWxpZF90eXBlX2Vycm9yIiwicmVxdWlyZWRfZXJyb3IiLCJkZXNjcmlwdGlvbiIsImN1c3RvbU1hcCIsImlzcyIsIm1lc3NhZ2UiLCJjb2RlIiwiZGVmYXVsdEVycm9yIiwiWm9kVHlwZSIsIl9kZWYiLCJfZ2V0VHlwZSIsImlucHV0IiwiX2dldE9yUmV0dXJuQ3R4IiwicGFyc2VkVHlwZSIsInNjaGVtYUVycm9yTWFwIiwiX3Byb2Nlc3NJbnB1dFBhcmFtcyIsInN0YXR1cyIsIl9wYXJzZVN5bmMiLCJfcGFyc2UiLCJfcGFyc2VBc3luYyIsIlByb21pc2UiLCJyZXNvbHZlIiwicGFyc2UiLCJzYWZlUGFyc2UiLCJhc3luYyIsImNvbnRleHR1YWxFcnJvck1hcCIsImVyciIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJ0aGVuIiwicGFyc2VBc3luYyIsInNhZmVQYXJzZUFzeW5jIiwibWF5YmVBc3luY1Jlc3VsdCIsInJlZmluZSIsImNoZWNrIiwiZ2V0SXNzdWVQcm9wZXJ0aWVzIiwidmFsIiwiX3JlZmluZW1lbnQiLCJzZXRFcnJvciIsImFkZElzc3VlIiwiY3VzdG9tIiwicmVmaW5lbWVudCIsInJlZmluZW1lbnREYXRhIiwiWm9kRWZmZWN0cyIsInNjaGVtYSIsInR5cGVOYW1lIiwiWm9kRmlyc3RQYXJ0eVR5cGVLaW5kIiwiZWZmZWN0IiwidHlwZSIsInN1cGVyUmVmaW5lIiwiZGVmIiwic3BhIiwiYmluZCIsIm9wdGlvbmFsIiwibnVsbGFibGUiLCJudWxsaXNoIiwiYXJyYXkiLCJwcm9taXNlIiwib3IiLCJhbmQiLCJ0cmFuc2Zvcm0iLCJicmFuZCIsImRlZmF1bHQiLCJjYXRjaCIsImRlc2NyaWJlIiwicGlwZSIsInJlYWRvbmx5IiwiaXNOdWxsYWJsZSIsImlzT3B0aW9uYWwiLCJ2ZXJzaW9uIiwidmVuZG9yIiwidmFsaWRhdGUiLCJab2RPcHRpb25hbCIsImNyZWF0ZSIsIlpvZE51bGxhYmxlIiwiWm9kQXJyYXkiLCJab2RQcm9taXNlIiwib3B0aW9uIiwiWm9kVW5pb24iLCJpbmNvbWluZyIsIlpvZEludGVyc2VjdGlvbiIsImRlZmF1bHRWYWx1ZUZ1bmMiLCJab2REZWZhdWx0IiwiaW5uZXJUeXBlIiwiZGVmYXVsdFZhbHVlIiwiWm9kQnJhbmRlZCIsImNhdGNoVmFsdWVGdW5jIiwiWm9kQ2F0Y2giLCJjYXRjaFZhbHVlIiwiVGhpcyIsInRhcmdldCIsIlpvZFBpcGVsaW5lIiwiWm9kUmVhZG9ubHkiLCJ1bmRlZmluZWQiLCJjdWlkUmVnZXgiLCJjdWlkMlJlZ2V4IiwidWxpZFJlZ2V4IiwidXVpZFJlZ2V4IiwibmFub2lkUmVnZXgiLCJqd3RSZWdleCIsImR1cmF0aW9uUmVnZXgiLCJlbWFpbFJlZ2V4IiwiX2Vtb2ppUmVnZXgiLCJlbW9qaVJlZ2V4IiwiaXB2NFJlZ2V4IiwiaXB2NENpZHJSZWdleCIsImlwdjZSZWdleCIsImlwdjZDaWRyUmVnZXgiLCJiYXNlNjRSZWdleCIsImJhc2U2NHVybFJlZ2V4IiwiZGF0ZVJlZ2V4U291cmNlIiwiZGF0ZVJlZ2V4IiwiUmVnRXhwIiwidGltZVJlZ2V4U291cmNlIiwiYXJncyIsInNlY29uZHNSZWdleFNvdXJjZSIsInByZWNpc2lvbiIsInNlY29uZHNRdWFudGlmaWVyIiwidGltZVJlZ2V4IiwiZGF0ZXRpbWVSZWdleCIsInJlZ2V4Iiwib3B0cyIsImxvY2FsIiwib2Zmc2V0Iiwiam9pbiIsImlzVmFsaWRJUCIsImlwIiwidGVzdCIsImlzVmFsaWRKV1QiLCJqd3QiLCJhbGciLCJoZWFkZXIiLCJzcGxpdCIsImJhc2U2NCIsInJlcGxhY2UiLCJwYWRFbmQiLCJkZWNvZGVkIiwiSlNPTiIsImF0b2IiLCJ0eXAiLCJpc1ZhbGlkQ2lkciIsIlpvZFN0cmluZyIsImNvZXJjZSIsIlN0cmluZyIsInN0cmluZyIsImludmFsaWRfdHlwZSIsImV4cGVjdGVkIiwicmVjZWl2ZWQiLCJjaGVja3MiLCJraW5kIiwidG9vX3NtYWxsIiwibWluaW11bSIsImluY2x1c2l2ZSIsImV4YWN0IiwiZGlydHkiLCJ0b29fYmlnIiwibWF4aW11bSIsInRvb0JpZyIsInRvb1NtYWxsIiwidmFsaWRhdGlvbiIsImludmFsaWRfc3RyaW5nIiwiVVJMIiwibGFzdEluZGV4IiwidGVzdFJlc3VsdCIsInRyaW0iLCJwb3NpdGlvbiIsInRvVXBwZXJDYXNlIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwiYXNzZXJ0TmV2ZXIiLCJfcmVnZXgiLCJlcnJUb09iaiIsIl9hZGRDaGVjayIsImVtYWlsIiwidXJsIiwiZW1vamkiLCJ1dWlkIiwibmFub2lkIiwiY3VpZCIsImN1aWQyIiwidWxpZCIsImJhc2U2NHVybCIsIm9wdGlvbnMiLCJjaWRyIiwiZGF0ZXRpbWUiLCJkYXRlIiwidGltZSIsImR1cmF0aW9uIiwibWluIiwibWluTGVuZ3RoIiwibWF4IiwibWF4TGVuZ3RoIiwibGVuIiwibm9uZW1wdHkiLCJpc0RhdGV0aW1lIiwiZmluZCIsImNoIiwiaXNEYXRlIiwiaXNUaW1lIiwiaXNEdXJhdGlvbiIsImlzRW1haWwiLCJpc1VSTCIsImlzRW1vamkiLCJpc1VVSUQiLCJpc05BTk9JRCIsImlzQ1VJRCIsImlzQ1VJRDIiLCJpc1VMSUQiLCJpc0lQIiwiaXNDSURSIiwiaXNCYXNlNjQiLCJpc0Jhc2U2NHVybCIsImZsb2F0U2FmZVJlbWFpbmRlciIsInN0ZXAiLCJ2YWxEZWNDb3VudCIsInRvU3RyaW5nIiwic3RlcERlY0NvdW50IiwiZGVjQ291bnQiLCJ2YWxJbnQiLCJOdW1iZXIiLCJwYXJzZUludCIsInRvRml4ZWQiLCJzdGVwSW50IiwiWm9kTnVtYmVyIiwiYXJndW1lbnRzIiwiZ3RlIiwibHRlIiwibXVsdGlwbGVPZiIsIm51bWJlciIsImlzSW50ZWdlciIsIm5vdF9tdWx0aXBsZV9vZiIsImlzRmluaXRlIiwibm90X2Zpbml0ZSIsInNldExpbWl0IiwiZ3QiLCJsdCIsImludCIsInBvc2l0aXZlIiwibmVnYXRpdmUiLCJub25wb3NpdGl2ZSIsIm5vbm5lZ2F0aXZlIiwiZmluaXRlIiwic2FmZSIsIk1JTl9TQUZFX0lOVEVHRVIiLCJNQVhfU0FGRV9JTlRFR0VSIiwibWluVmFsdWUiLCJtYXhWYWx1ZSIsImlzSW50IiwiWm9kQmlnSW50IiwiQmlnSW50IiwiX2dldEludmFsaWRJbnB1dCIsImJpZ2ludCIsIlpvZEJvb2xlYW4iLCJCb29sZWFuIiwiYm9vbGVhbiIsIlpvZERhdGUiLCJEYXRlIiwiaXNOYU4iLCJnZXRUaW1lIiwiaW52YWxpZF9kYXRlIiwibWluRGF0ZSIsIm1heERhdGUiLCJab2RTeW1ib2wiLCJzeW1ib2wiLCJab2RVbmRlZmluZWQiLCJab2ROdWxsIiwibnVsbCIsIlpvZEFueSIsIl9hbnkiLCJab2RVbmtub3duIiwiX3Vua25vd24iLCJab2ROZXZlciIsIm5ldmVyIiwiWm9kVm9pZCIsInZvaWQiLCJleGFjdExlbmd0aCIsImFsbCIsIm1hcCIsIml0ZW0iLCJpIiwibWVyZ2VBcnJheSIsImVsZW1lbnQiLCJkZWVwUGFydGlhbGlmeSIsIlpvZE9iamVjdCIsIm5ld1NoYXBlIiwic2hhcGUiLCJmaWVsZFNjaGVtYSIsInVud3JhcCIsIlpvZFR1cGxlIiwiaXRlbXMiLCJfY2FjaGVkIiwibm9uc3RyaWN0IiwicGFzc3Rocm91Z2giLCJhdWdtZW50IiwiZXh0ZW5kIiwiX2dldENhY2hlZCIsImtleXMiLCJvYmplY3RLZXlzIiwib2JqZWN0Iiwic2hhcGVLZXlzIiwiZXh0cmFLZXlzIiwiY2F0Y2hhbGwiLCJ1bmtub3duS2V5cyIsInBhaXJzIiwia2V5VmFsaWRhdG9yIiwiYWx3YXlzU2V0IiwidW5yZWNvZ25pemVkX2tleXMiLCJzeW5jUGFpcnMiLCJwYWlyIiwibWVyZ2VPYmplY3RTeW5jIiwic3RyaWN0IiwiaXNzdWUiLCJzdHJpcCIsImF1Z21lbnRhdGlvbiIsIm1lcmdlIiwibWVyZ2luZyIsIm1lcmdlZCIsInNldEtleSIsImluZGV4IiwicGljayIsIm1hc2siLCJvbWl0IiwiZGVlcFBhcnRpYWwiLCJwYXJ0aWFsIiwicmVxdWlyZWQiLCJuZXdGaWVsZCIsImtleW9mIiwiY3JlYXRlWm9kRW51bSIsInN0cmljdENyZWF0ZSIsImxhenljcmVhdGUiLCJoYW5kbGVSZXN1bHRzIiwicmVzdWx0cyIsInVuaW9uRXJyb3JzIiwiaW52YWxpZF91bmlvbiIsImNoaWxkQ3R4IiwidHlwZXMiLCJnZXREaXNjcmltaW5hdG9yIiwiWm9kTGF6eSIsIlpvZExpdGVyYWwiLCJab2RFbnVtIiwiWm9kTmF0aXZlRW51bSIsIm9iamVjdFZhbHVlcyIsImVudW0iLCJab2REaXNjcmltaW5hdGVkVW5pb24iLCJkaXNjcmltaW5hdG9yIiwiZGlzY3JpbWluYXRvclZhbHVlIiwib3B0aW9uc01hcCIsImdldCIsImludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvciIsImZyb20iLCJNYXAiLCJkaXNjcmltaW5hdG9yVmFsdWVzIiwiaGFzIiwic2V0IiwibWVyZ2VWYWx1ZXMiLCJhIiwiYiIsImFUeXBlIiwiYlR5cGUiLCJ2YWxpZCIsImJLZXlzIiwic2hhcmVkS2V5cyIsImZpbHRlciIsImluZGV4T2YiLCJuZXdPYmoiLCJzaGFyZWRWYWx1ZSIsIm5ld0FycmF5IiwiaXRlbUEiLCJpdGVtQiIsImhhbmRsZVBhcnNlZCIsInBhcnNlZExlZnQiLCJwYXJzZWRSaWdodCIsImludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzIiwibGVmdCIsInJpZ2h0IiwicmVzdCIsIml0ZW1JbmRleCIsIngiLCJzY2hlbWFzIiwiWm9kUmVjb3JkIiwia2V5U2NoZW1hIiwia2V5VHlwZSIsInZhbHVlU2NoZW1hIiwidmFsdWVUeXBlIiwibWVyZ2VPYmplY3RBc3luYyIsImZpcnN0Iiwic2Vjb25kIiwidGhpcmQiLCJab2RNYXAiLCJlbnRyaWVzIiwiZmluYWxNYXAiLCJab2RTZXQiLCJtaW5TaXplIiwic2l6ZSIsIm1heFNpemUiLCJmaW5hbGl6ZVNldCIsImVsZW1lbnRzIiwicGFyc2VkU2V0IiwiU2V0IiwiYWRkIiwidmFsdWVzIiwiWm9kRnVuY3Rpb24iLCJpbXBsZW1lbnQiLCJmdW5jdGlvbiIsIm1ha2VBcmdzSXNzdWUiLCJlcnJvck1hcHMiLCJpc3N1ZURhdGEiLCJpbnZhbGlkX2FyZ3VtZW50cyIsImFyZ3VtZW50c0Vycm9yIiwibWFrZVJldHVybnNJc3N1ZSIsInJldHVybnMiLCJpbnZhbGlkX3JldHVybl90eXBlIiwicmV0dXJuVHlwZUVycm9yIiwiZm4iLCJtZSIsInBhcnNlZEFyZ3MiLCJlIiwiUmVmbGVjdCIsImFwcGx5IiwicGFyc2VkUmV0dXJucyIsInBhcmFtZXRlcnMiLCJyZXR1cm5UeXBlIiwiZnVuYyIsInZhbGlkYXRlZEZ1bmMiLCJzdHJpY3RJbXBsZW1lbnQiLCJnZXR0ZXIiLCJsYXp5U2NoZW1hIiwiaW52YWxpZF9saXRlcmFsIiwiZXhwZWN0ZWRWYWx1ZXMiLCJqb2luVmFsdWVzIiwiX2NhY2hlIiwiaW52YWxpZF9lbnVtX3ZhbHVlIiwiZW51bVZhbHVlcyIsIlZhbHVlcyIsIkVudW0iLCJleHRyYWN0IiwibmV3RGVmIiwiZXhjbHVkZSIsIm9wdCIsIm5hdGl2ZUVudW1WYWx1ZXMiLCJnZXRWYWxpZEVudW1WYWx1ZXMiLCJwcm9taXNpZmllZCIsInNvdXJjZVR5cGUiLCJjaGVja0N0eCIsImFyZyIsImZhdGFsIiwiYWJvcnQiLCJwcm9jZXNzZWQiLCJleGVjdXRlUmVmaW5lbWVudCIsImFjYyIsImlubmVyIiwiYmFzZSIsImNyZWF0ZVdpdGhQcmVwcm9jZXNzIiwicHJlcHJvY2VzcyIsIlpvZFRyYW5zZm9ybWVyIiwicmVtb3ZlRGVmYXVsdCIsIm5ld0N0eCIsInJlbW92ZUNhdGNoIiwiWm9kTmFOIiwibmFuIiwiQlJBTkQiLCJTeW1ib2wiLCJoYW5kbGVBc3luYyIsImluUmVzdWx0IiwiaW4iLCJvdXQiLCJmcmVlemUiLCJPYmplY3QiLCJjbGVhblBhcmFtcyIsInAiLCJwMiIsIl9wYXJhbXMiLCJyIiwiX2ZhdGFsIiwiU2NoZW1hIiwiWm9kU2NoZW1hIiwibGF0ZSIsIkNsYXNzIiwiXyIsImluc3RhbmNlT2ZUeXBlIiwiY2xzIiwibmFtZSIsInN0cmluZ1R5cGUiLCJudW1iZXJUeXBlIiwibmFuVHlwZSIsImJpZ0ludFR5cGUiLCJib29sZWFuVHlwZSIsImRhdGVUeXBlIiwic3ltYm9sVHlwZSIsInVuZGVmaW5lZFR5cGUiLCJudWxsVHlwZSIsImFueVR5cGUiLCJ1bmtub3duVHlwZSIsIm5ldmVyVHlwZSIsInZvaWRUeXBlIiwiYXJyYXlUeXBlIiwib2JqZWN0VHlwZSIsInN0cmljdE9iamVjdFR5cGUiLCJ1bmlvblR5cGUiLCJkaXNjcmltaW5hdGVkVW5pb25UeXBlIiwiaW50ZXJzZWN0aW9uVHlwZSIsInR1cGxlVHlwZSIsInJlY29yZFR5cGUiLCJtYXBUeXBlIiwic2V0VHlwZSIsImZ1bmN0aW9uVHlwZSIsImxhenlUeXBlIiwibGl0ZXJhbFR5cGUiLCJlbnVtVHlwZSIsIm5hdGl2ZUVudW1UeXBlIiwicHJvbWlzZVR5cGUiLCJlZmZlY3RzVHlwZSIsIm9wdGlvbmFsVHlwZSIsIm51bGxhYmxlVHlwZSIsInByZXByb2Nlc3NUeXBlIiwicGlwZWxpbmVUeXBlIiwib3N0cmluZyIsIm9udW1iZXIiLCJvYm9vbGVhbiIsImFueSIsImRpc2NyaW1pbmF0ZWRVbmlvbiIsImluc3RhbmNlb2YiLCJpbnRlcnNlY3Rpb24iLCJsYXp5IiwibGl0ZXJhbCIsIm5hdGl2ZUVudW0iLCJwaXBlbGluZSIsInJlY29yZCIsInN0cmljdE9iamVjdCIsInRyYW5zZm9ybWVyIiwidHVwbGUiLCJ1bmlvbiIsInVua25vd24iLCJORVZFUiJdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js\n");
|
||
|
||
/***/ })
|
||
|
||
};
|
||
; |