@rster/info
Advanced tools
Comparing version 0.1.5 to 0.1.6
# Changelog for @rster/info | ||
## 0.1.6 | ||
### Patch Changes | ||
- some small type-related patches | ||
- Updated dependencies | ||
- @rster/types@0.1.6 | ||
## v0.1.5 | ||
@@ -4,0 +12,0 @@ |
@@ -12,3 +12,3 @@ "use strict"; | ||
enumerable: true, | ||
get: function get() { | ||
get: function () { | ||
return _info[key]; | ||
@@ -18,2 +18,2 @@ } | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5mbyIsInJlcXVpcmUiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImV4cG9ydHMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vaW5mb1wiO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUgsS0FBQSxFQUFBSSxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUEsR0FBQSxJQUFBQyxPQUFBLElBQUFBLE9BQUEsQ0FBQUQsR0FBQSxNQUFBTCxLQUFBLENBQUFLLEdBQUE7RUFBQUgsTUFBQSxDQUFBSyxjQUFBLENBQUFELE9BQUEsRUFBQUQsR0FBQTtJQUFBRyxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFULEtBQUEsQ0FBQUssR0FBQTtJQUFBO0VBQUE7QUFBQSJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5mbyIsInJlcXVpcmUiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImV4cG9ydHMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vaW5mb1wiO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSCxLQUFBLEVBQUFJLE9BQUEsV0FBQUMsR0FBQTtFQUFBLElBQUFBLEdBQUEsa0JBQUFBLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFDLE9BQUEsSUFBQUEsT0FBQSxDQUFBRCxHQUFBLE1BQUFMLEtBQUEsQ0FBQUssR0FBQTtFQUFBSCxNQUFBLENBQUFLLGNBQUEsQ0FBQUQsT0FBQSxFQUFBRCxHQUFBO0lBQUFHLFVBQUE7SUFBQUMsR0FBQSxXQUFBQSxDQUFBO01BQUEsT0FBQVQsS0FBQSxDQUFBSyxHQUFBO0lBQUE7RUFBQTtBQUFBIn0= |
@@ -1,2 +0,2 @@ | ||
import { TypeInformation } from "@rster/types"; | ||
import { AllowAnyTypeInformation } from "@rster/types"; | ||
export interface Declaration { | ||
@@ -6,3 +6,3 @@ name: string; | ||
[key: string]: { | ||
type: TypeInformation<unknown>; | ||
type: AllowAnyTypeInformation; | ||
required: boolean; | ||
@@ -13,3 +13,3 @@ }; | ||
[key: string]: { | ||
type: TypeInformation<unknown>; | ||
type: AllowAnyTypeInformation; | ||
required: boolean; | ||
@@ -20,7 +20,7 @@ }; | ||
[key: string]: { | ||
type: TypeInformation<unknown>; | ||
type: AllowAnyTypeInformation; | ||
required: boolean; | ||
}; | ||
}; | ||
returnBody: TypeInformation<unknown>; | ||
returnBody: AllowAnyTypeInformation; | ||
} | ||
@@ -27,0 +27,0 @@ declare module "@rster/basic" { |
178
lib/info.js
"use strict"; | ||
var _basic = require("@rster/basic"); | ||
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } | ||
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; } | ||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } | ||
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } | ||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } | ||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } | ||
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } | ||
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } | ||
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } | ||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } // import { declaration } from "../generator/index"; | ||
var version = "0.1.4"; | ||
_basic.Context.prototype.description = function () { | ||
var _this$data, _this$data2; | ||
for (var _len = arguments.length, description = new Array(_len), _key = 0; _key < _len; _key++) { | ||
description[_key] = arguments[_key]; | ||
} | ||
if (description.length == 0) return (_this$data = this.data("@info/description")) !== null && _this$data !== void 0 ? _this$data : []; | ||
// import { declaration } from "../generator/index"; | ||
const version = "0.1.4"; | ||
_basic.Context.prototype.description = function (...description) { | ||
if (description.length == 0) return this.data("@info/description") ?? []; | ||
if (description[0] instanceof _basic.Context) { | ||
var _description$0$data; | ||
if (description.length !== 1) throw new Error("Cannot add description to another context"); | ||
return (_description$0$data = description[0].data("@info/description")) !== null && _description$0$data !== void 0 ? _description$0$data : []; | ||
return description[0].data("@info/description") ?? []; | ||
} | ||
this.setData("@info/description", [].concat(_toConsumableArray((_this$data2 = this.data("@info/description")) !== null && _this$data2 !== void 0 ? _this$data2 : []), description)); | ||
this.setData("@info/description", [...(this.data("@info/description") ?? []), ...description]); | ||
}; | ||
_basic.Context.prototype.field = function (arg0, arg1, arg2) { | ||
if (typeof arg0 === "string") { | ||
var _this$data3; | ||
if (typeof arg1 === "undefined") { | ||
var _fields = this.data("@info/fields"); | ||
if (!_fields) return undefined; | ||
return _fields[arg0]; | ||
const fields = this.data(`@info/fields`); | ||
if (!fields) return undefined; | ||
return fields[arg0]; | ||
} | ||
var _fields2 = (_this$data3 = this.data("@info/fields")) !== null && _this$data3 !== void 0 ? _this$data3 : {}; | ||
_fields2[arg0] = arg1; | ||
this.setData("@info/fields", _fields2); | ||
const fields = this.data(`@info/fields`) ?? {}; | ||
fields[arg0] = arg1; | ||
this.setData(`@info/fields`, fields); | ||
return this; | ||
} | ||
if (typeof arg1 === "string") { | ||
var _arg0$data; | ||
if (typeof arg2 === "undefined") { | ||
var _fields3 = arg0.data("@info/fields"); | ||
if (!_fields3) return undefined; | ||
return _fields3[arg1]; | ||
const fields = arg0.data(`@info/fields`); | ||
if (!fields) return undefined; | ||
return fields[arg1]; | ||
} | ||
var _fields4 = (_arg0$data = arg0.data("@info/fields")) !== null && _arg0$data !== void 0 ? _arg0$data : {}; | ||
_fields4[arg1] = arg2; | ||
arg0.setData("@info/fields", _fields4); | ||
const fields = arg0.data(`@info/fields`) ?? {}; | ||
fields[arg1] = arg2; | ||
arg0.setData(`@info/fields`, fields); | ||
return arg0; | ||
@@ -56,74 +41,41 @@ } | ||
_basic.Context.prototype.fields = function (ctx) { | ||
var _this$data4, _ctx$data; | ||
if (typeof ctx === "undefined") return (_this$data4 = this.data("@info/fields")) !== null && _this$data4 !== void 0 ? _this$data4 : {}; | ||
return (_ctx$data = ctx.data("@info/fields")) !== null && _ctx$data !== void 0 ? _ctx$data : {}; | ||
if (typeof ctx === "undefined") return this.data("@info/fields") ?? {}; | ||
return ctx.data("@info/fields") ?? {}; | ||
}; | ||
_basic.Context.prototype.useInfo = function (options) { | ||
var _options, _options$path; | ||
options = (_options = options) !== null && _options !== void 0 ? _options : {}; | ||
var path = (_options$path = options.path) !== null && _options$path !== void 0 ? _options$path : "/info"; | ||
options = options ?? {}; | ||
const path = options.path ?? "/info"; | ||
this.any(path, function (ctx) { | ||
var _this = this; | ||
this.description("This module can be used to get information about the API"); | ||
this.description("Just call /info/[path] to get information about this module"); | ||
this.field("version", version); | ||
this.use( /*#__PURE__*/function () { | ||
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(req, res, _next) { | ||
var _stack, _context, _context2, _context3; | ||
var stack, context, decl; | ||
return _regeneratorRuntime().wrap(function _callee$(_context4) { | ||
while (1) switch (_context4.prev = _context4.next) { | ||
case 0: | ||
_context4.next = 2; | ||
return ctx.api.contextStack(req, res); | ||
case 2: | ||
stack = _context4.sent; | ||
context = (_stack = stack[stack.length - 2]) === null || _stack === void 0 || (_stack = _stack.filter( | ||
// TODO: stack[stack.length - 1] normally should be the action / use function. But it could be a condition. If it is a condition, the context is useless as it does nothing. How to handle this? | ||
// TODO: Generally think about criteria what context to choose if multiple routes match which should theoretically be possible | ||
function (e) { | ||
return e.type === "condition"; | ||
})[0]) === null || _stack === void 0 ? void 0 : _stack.context; | ||
if (req.path == "/" || req.path == "") { | ||
context = ctx.api; | ||
} | ||
if (!(!context || req.path !== ((_context = context) === null || _context === void 0 ? void 0 : _context.getPath()) && req.path !== ((_context2 = context) === null || _context2 === void 0 ? void 0 : _context2.getPath()) + "/")) { | ||
_context4.next = 7; | ||
break; | ||
} | ||
throw (0, _basic.$404)("No context found for path \"".concat(req.path, "\"")); | ||
case 7: | ||
decl = context.declaration(); | ||
res.status(200).json({ | ||
path: context.getPath(), | ||
method: context.getMethod(), | ||
description: _this.description(context), | ||
map: (_context3 = context) === null || _context3 === void 0 ? void 0 : _context3.info().map(function (e) { | ||
var _e$condition$method; | ||
return { | ||
path: e.condition.path, | ||
method: (_e$condition$method = e.condition.method) !== null && _e$condition$method !== void 0 ? _e$condition$method : "any", | ||
description: _this.description(e.context) | ||
}; | ||
}), | ||
fields: function (fields) { | ||
return Object.keys(fields).map(function (field) { | ||
return { | ||
name: field, | ||
value: fields[field] | ||
}; | ||
}); | ||
}(_this.fields(context)), | ||
declaration: decl | ||
}).end(); | ||
case 9: | ||
case "end": | ||
return _context4.stop(); | ||
} | ||
}, _callee); | ||
})); | ||
return function (_x, _x2, _x3) { | ||
return _ref.apply(this, arguments); | ||
}; | ||
}()); | ||
this.use(async (req, res, _next) => { | ||
const stack = await ctx.api.contextStack(req, res); | ||
let context = stack[stack.length - 2]?.filter( | ||
// TODO: stack[stack.length - 1] normally should be the action / use function. But it could be a condition. If it is a condition, the context is useless as it does nothing. How to handle this? | ||
// TODO: Generally think about criteria what context to choose if multiple routes match which should theoretically be possible | ||
e => e.type === "condition")[0]?.context; | ||
if (req.path == "/" || req.path == "") { | ||
context = ctx.api; | ||
} | ||
if (!context || req.path !== context?.getPath() && req.path !== context?.getPath() + "/") { | ||
throw (0, _basic.$404)(`No context found for path "${req.path}"`); | ||
} | ||
const decl = context.declaration(); | ||
res.status(200).json({ | ||
path: context.getPath(), | ||
method: context.getMethod(), | ||
description: this.description(context), | ||
map: context?.info().map(e => ({ | ||
path: e.condition.path, | ||
method: e.condition.method ?? "any", | ||
description: this.description(e.context) | ||
})), | ||
fields: (fields => Object.keys(fields).map(field => ({ | ||
name: field, | ||
value: fields[field] | ||
})))(this.fields(context)), | ||
declaration: decl | ||
}).end(); | ||
}); | ||
}); | ||
@@ -133,11 +85,11 @@ }; | ||
if (typeof context === "undefined") return this.data("@info/declaration"); | ||
if (_typeof(context) === "object" && context instanceof _basic.Context) { | ||
if (typeof context === "object" && context instanceof _basic.Context) { | ||
if (typeof decl === "undefined") { | ||
return context.data("@info/declaration"); | ||
} | ||
if (_typeof(decl) !== "object") throw new Error("Invalid arguments"); | ||
if (typeof decl !== "object") throw new Error("Invalid arguments"); | ||
this.setData("@info/declaration", decl); | ||
return context; | ||
} | ||
if (_typeof(context) === "object") { | ||
if (typeof context === "object") { | ||
this.setData("@info/declaration", context); | ||
@@ -153,15 +105,9 @@ return this; | ||
_basic.Context.prototype.collectDeclarations = function (ctx) { | ||
var _ctx, | ||
_this2 = this; | ||
ctx = (_ctx = ctx) !== null && _ctx !== void 0 ? _ctx : this; | ||
var contexts = ctx.collect(); | ||
return contexts.map(function (c) { | ||
return { | ||
declaration: _this2.declaration(c), | ||
ctx: c | ||
}; | ||
}).filter(function (d) { | ||
return !!d.declaration; | ||
}); | ||
ctx = ctx ?? this; | ||
const contexts = ctx.collect(); | ||
return contexts.map(c => ({ | ||
declaration: this.declaration(c), | ||
ctx: c | ||
})).filter(d => !!d.declaration); | ||
}; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzaWMiLCJyZXF1aXJlIiwiX3R5cGVvZiIsIm8iLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImUiLCJ0IiwiciIsIk9iamVjdCIsIm4iLCJoYXNPd25Qcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiYSIsImMiLCJhc3luY0l0ZXJhdG9yIiwidSIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiY2FsbCIsImgiLCJsIiwiZiIsInMiLCJ5IiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsInAiLCJkIiwiZ2V0UHJvdG90eXBlT2YiLCJ2IiwidmFsdWVzIiwiZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsImZvckVhY2giLCJfaW52b2tlIiwiQXN5bmNJdGVyYXRvciIsImludm9rZSIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibmFtZSIsIm1hcmsiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImF3cmFwIiwiYXN5bmMiLCJQcm9taXNlIiwia2V5cyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImhhbmRsZSIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsImdlbiIsInJlamVjdCIsIl9uZXh0IiwiX3Rocm93Iiwia2V5IiwiaW5mbyIsImVycm9yIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJmbiIsInNlbGYiLCJhcmdzIiwiYXJndW1lbnRzIiwiYXBwbHkiLCJlcnIiLCJ1bmRlZmluZWQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpdGVyIiwiaXNBcnJheSIsImxlbiIsImFycjIiLCJ2ZXJzaW9uIiwiZGVzY3JpcHRpb24iLCJfdGhpcyRkYXRhIiwiX3RoaXMkZGF0YTIiLCJfbGVuIiwiX2tleSIsImRhdGEiLCJfZGVzY3JpcHRpb24kMCRkYXRhIiwic2V0RGF0YSIsImNvbmNhdCIsImZpZWxkIiwiYXJnMCIsImFyZzEiLCJhcmcyIiwiX3RoaXMkZGF0YTMiLCJmaWVsZHMiLCJfYXJnMCRkYXRhIiwiY3R4IiwiX3RoaXMkZGF0YTQiLCJfY3R4JGRhdGEiLCJ1c2VJbmZvIiwib3B0aW9ucyIsIl9vcHRpb25zIiwiX29wdGlvbnMkcGF0aCIsInBhdGgiLCJhbnkiLCJfdGhpcyIsInVzZSIsIl9yZWYiLCJfY2FsbGVlIiwicmVxIiwicmVzIiwiX3N0YWNrIiwiX2NvbnRleHQiLCJfY29udGV4dDIiLCJfY29udGV4dDMiLCJzdGFjayIsImNvbnRleHQiLCJkZWNsIiwiX2NhbGxlZSQiLCJfY29udGV4dDQiLCJhcGkiLCJjb250ZXh0U3RhY2siLCJmaWx0ZXIiLCJnZXRQYXRoIiwiJDQwNCIsImRlY2xhcmF0aW9uIiwic3RhdHVzIiwianNvbiIsImdldE1ldGhvZCIsIm1hcCIsIl9lJGNvbmRpdGlvbiRtZXRob2QiLCJjb25kaXRpb24iLCJlbmQiLCJfeCIsIl94MiIsIl94MyIsImhhc0RlY2xhcmF0aW9uIiwiY29sbGVjdERlY2xhcmF0aW9ucyIsIl9jdHgiLCJfdGhpczIiLCJjb250ZXh0cyIsImNvbGxlY3QiXSwic291cmNlcyI6WyIuLi9zcmMvaW5mby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBkZWNsYXJhdGlvbiB9IGZyb20gXCIuLi9nZW5lcmF0b3IvaW5kZXhcIjtcbmltcG9ydCB7ICQ0MDQsIENvbnRleHQsIENvbnRleHRDaGlsZENvbmRpdGlvbiB9IGZyb20gXCJAcnN0ZXIvYmFzaWNcIjtcbmltcG9ydCB7IFR5cGVJbmZvcm1hdGlvbiB9IGZyb20gXCJAcnN0ZXIvdHlwZXNcIjtcblxuY29uc3QgdmVyc2lvbiA9IFwiMC4xLjRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEZWNsYXJhdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZXhwZWN0Qm9keT86IHtcbiAgICBba2V5OiBzdHJpbmddOiB7IHR5cGU6IFR5cGVJbmZvcm1hdGlvbjx1bmtub3duPjsgcmVxdWlyZWQ6IGJvb2xlYW4gfTtcbiAgfTtcbiAgZXhwZWN0UXVlcnk/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyB0eXBlOiBUeXBlSW5mb3JtYXRpb248dW5rbm93bj47IHJlcXVpcmVkOiBib29sZWFuIH07XG4gIH07XG4gIGV4cGVjdFBhcmFtcz86IHtcbiAgICBba2V5OiBzdHJpbmddOiB7IHR5cGU6IFR5cGVJbmZvcm1hdGlvbjx1bmtub3duPjsgcmVxdWlyZWQ6IGJvb2xlYW4gfTtcbiAgfTtcbiAgcmV0dXJuQm9keTogVHlwZUluZm9ybWF0aW9uPHVua25vd24+O1xufVxuXG5kZWNsYXJlIG1vZHVsZSBcIkByc3Rlci9iYXNpY1wiIHtcbiAgaW50ZXJmYWNlIENvbnRleHQge1xuICAgIGRlc2NyaXB0aW9uKCk6IHN0cmluZ1tdO1xuICAgIGRlc2NyaXB0aW9uKC4uLmRlc2NyaXB0aW9uOiBzdHJpbmdbXSk6IENvbnRleHQ7XG4gICAgZGVzY3JpcHRpb24oY29udGV4dDogQ29udGV4dCk6IHN0cmluZ1tdO1xuXG4gICAgZmllbGQobmFtZTogc3RyaW5nKTogYW55O1xuICAgIGZpZWxkKG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IENvbnRleHQ7XG4gICAgZmllbGQoY3R4OiBDb250ZXh0LCBuYW1lOiBzdHJpbmcpOiBhbnk7XG4gICAgZmllbGQoY3R4OiBDb250ZXh0LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBDb250ZXh0O1xuXG4gICAgZmllbGRzKCk6IEZpZWxkTWFwO1xuICAgIGZpZWxkcyhjdHg6IENvbnRleHQpOiBGaWVsZE1hcDtcblxuICAgIHVzZUluZm8ob3B0aW9ucz86IHsgcGF0aD86IHN0cmluZyB9KTogdm9pZDtcblxuICAgIGRlY2xhcmF0aW9uKCk6IERlY2xhcmF0aW9uO1xuICAgIGRlY2xhcmF0aW9uKGRlY2w6IERlY2xhcmF0aW9uKTogQ29udGV4dDtcbiAgICBkZWNsYXJhdGlvbihjb250ZXh0OiBDb250ZXh0KTogRGVjbGFyYXRpb24gfCB1bmRlZmluZWQ7XG4gICAgZGVjbGFyYXRpb24oY29udGV4dDogQ29udGV4dCwgZGVjbDogRGVjbGFyYXRpb24pOiBDb250ZXh0O1xuICAgIGRlY2xhcmF0aW9uKFxuICAgICAgY29udGV4dD86IENvbnRleHQgfCBEZWNsYXJhdGlvbixcbiAgICAgIGRlY2w/OiBEZWNsYXJhdGlvblxuICAgICk6IENvbnRleHQgfCBEZWNsYXJhdGlvbiB8IHVuZGVmaW5lZCB8IHN0cmluZ1tdO1xuXG4gICAgaGFzRGVjbGFyYXRpb24oKTogYm9vbGVhbjtcbiAgICBoYXNEZWNsYXJhdGlvbihjb250ZXh0OiBDb250ZXh0KTogYm9vbGVhbjtcbiAgICBoYXNEZWNsYXJhdGlvbihjb250ZXh0PzogQ29udGV4dCk6IGJvb2xlYW47XG5cbiAgICBjb2xsZWN0RGVjbGFyYXRpb25zKFxuICAgICAgY3R4PzogQ29udGV4dFxuICAgICk6IHsgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uOyBjdHg6IENvbnRleHQgfVtdO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRNYXAge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbkNvbnRleHQucHJvdG90eXBlLmRlc2NyaXB0aW9uID0gZnVuY3Rpb24gKC4uLmRlc2NyaXB0aW9uOiBhbnlbXSk6IGFueSB7XG4gIGlmIChkZXNjcmlwdGlvbi5sZW5ndGggPT0gMCkgcmV0dXJuIHRoaXMuZGF0YShcIkBpbmZvL2Rlc2NyaXB0aW9uXCIpID8/IFtdO1xuICBpZiAoZGVzY3JpcHRpb25bMF0gaW5zdGFuY2VvZiBDb250ZXh0KSB7XG4gICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCAhPT0gMSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBhZGQgZGVzY3JpcHRpb24gdG8gYW5vdGhlciBjb250ZXh0XCIpO1xuICAgIHJldHVybiBkZXNjcmlwdGlvblswXS5kYXRhKFwiQGluZm8vZGVzY3JpcHRpb25cIikgPz8gW107XG4gIH1cblxuICB0aGlzLnNldERhdGEoXCJAaW5mby9kZXNjcmlwdGlvblwiLCBbXG4gICAgLi4uKHRoaXMuZGF0YShcIkBpbmZvL2Rlc2NyaXB0aW9uXCIpID8/IFtdKSxcbiAgICAuLi5kZXNjcmlwdGlvbixcbiAgXSk7XG59O1xuXG5Db250ZXh0LnByb3RvdHlwZS5maWVsZCA9IGZ1bmN0aW9uIChhcmcwOiBhbnksIGFyZzE/OiBhbnksIGFyZzI/OiBhbnkpOiBhbnkge1xuICBpZiAodHlwZW9mIGFyZzAgPT09IFwic3RyaW5nXCIpIHtcbiAgICBpZiAodHlwZW9mIGFyZzEgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZGF0YShgQGluZm8vZmllbGRzYCk7XG4gICAgICBpZiAoIWZpZWxkcykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiBmaWVsZHNbYXJnMF07XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5kYXRhKGBAaW5mby9maWVsZHNgKSA/PyB7fTtcbiAgICBmaWVsZHNbYXJnMF0gPSBhcmcxO1xuICAgIHRoaXMuc2V0RGF0YShgQGluZm8vZmllbGRzYCwgZmllbGRzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmICh0eXBlb2YgYXJnMSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmICh0eXBlb2YgYXJnMiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY29uc3QgZmllbGRzID0gYXJnMC5kYXRhKGBAaW5mby9maWVsZHNgKTtcbiAgICAgIGlmICghZmllbGRzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGZpZWxkc1thcmcxXTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZHMgPSBhcmcwLmRhdGEoYEBpbmZvL2ZpZWxkc2ApID8/IHt9O1xuICAgIGZpZWxkc1thcmcxXSA9IGFyZzI7XG4gICAgYXJnMC5zZXREYXRhKGBAaW5mby9maWVsZHNgLCBmaWVsZHMpO1xuICAgIHJldHVybiBhcmcwO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudHNcIik7XG59O1xuXG5Db250ZXh0LnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoY3R4PzogQ29udGV4dCk6IEZpZWxkTWFwIHtcbiAgaWYgKHR5cGVvZiBjdHggPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiB0aGlzLmRhdGEoXCJAaW5mby9maWVsZHNcIikgPz8ge307XG4gIHJldHVybiBjdHguZGF0YShcIkBpbmZvL2ZpZWxkc1wiKSA/PyB7fTtcbn07XG5cbkNvbnRleHQucHJvdG90eXBlLnVzZUluZm8gPSBmdW5jdGlvbiAob3B0aW9ucz86IHsgcGF0aD86IHN0cmluZyB9KSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zID8/IHt9O1xuICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IFwiL2luZm9cIjtcblxuICB0aGlzLmFueShwYXRoLCBmdW5jdGlvbiAoY3R4KSB7XG4gICAgdGhpcy5kZXNjcmlwdGlvbihcbiAgICAgIFwiVGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBBUElcIlxuICAgICk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbihcbiAgICAgIFwiSnVzdCBjYWxsIC9pbmZvL1twYXRoXSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBtb2R1bGVcIlxuICAgICk7XG5cbiAgICB0aGlzLmZpZWxkKFwidmVyc2lvblwiLCB2ZXJzaW9uKTtcblxuICAgIHRoaXMudXNlKGFzeW5jIChyZXEsIHJlcywgX25leHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YWNrID0gYXdhaXQgY3R4LmFwaS5jb250ZXh0U3RhY2socmVxLCByZXMpO1xuICAgICAgbGV0IGNvbnRleHQgPSAoXG4gICAgICAgIHN0YWNrW3N0YWNrLmxlbmd0aCAtIDJdPy5maWx0ZXIoXG4gICAgICAgICAgLy8gVE9ETzogc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0gbm9ybWFsbHkgc2hvdWxkIGJlIHRoZSBhY3Rpb24gLyB1c2UgZnVuY3Rpb24uIEJ1dCBpdCBjb3VsZCBiZSBhIGNvbmRpdGlvbi4gSWYgaXQgaXMgYSBjb25kaXRpb24sIHRoZSBjb250ZXh0IGlzIHVzZWxlc3MgYXMgaXQgZG9lcyBub3RoaW5nLiBIb3cgdG8gaGFuZGxlIHRoaXM/XG4gICAgICAgICAgLy8gVE9ETzogR2VuZXJhbGx5IHRoaW5rIGFib3V0IGNyaXRlcmlhIHdoYXQgY29udGV4dCB0byBjaG9vc2UgaWYgbXVsdGlwbGUgcm91dGVzIG1hdGNoIHdoaWNoIHNob3VsZCB0aGVvcmV0aWNhbGx5IGJlIHBvc3NpYmxlXG4gICAgICAgICAgKGUpID0+IGUudHlwZSA9PT0gXCJjb25kaXRpb25cIlxuICAgICAgICApWzBdIGFzIENvbnRleHRDaGlsZENvbmRpdGlvblxuICAgICAgKT8uY29udGV4dCBhcyBDb250ZXh0O1xuXG4gICAgICBpZiAocmVxLnBhdGggPT0gXCIvXCIgfHwgcmVxLnBhdGggPT0gXCJcIikge1xuICAgICAgICBjb250ZXh0ID0gY3R4LmFwaTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhY29udGV4dCB8fFxuICAgICAgICAocmVxLnBhdGggIT09IGNvbnRleHQ/LmdldFBhdGgoKSAmJlxuICAgICAgICAgIHJlcS5wYXRoICE9PSBjb250ZXh0Py5nZXRQYXRoKCkgKyBcIi9cIilcbiAgICAgICkge1xuICAgICAgICB0aHJvdyAkNDA0KGBObyBjb250ZXh0IGZvdW5kIGZvciBwYXRoIFwiJHtyZXEucGF0aH1cImApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZWNsID0gY29udGV4dC5kZWNsYXJhdGlvbigpO1xuXG4gICAgICByZXNcbiAgICAgICAgLnN0YXR1cygyMDApXG4gICAgICAgIC5qc29uKHtcbiAgICAgICAgICBwYXRoOiBjb250ZXh0LmdldFBhdGgoKSxcbiAgICAgICAgICBtZXRob2Q6IGNvbnRleHQuZ2V0TWV0aG9kKCksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24oY29udGV4dCksXG4gICAgICAgICAgbWFwOiBjb250ZXh0Py5pbmZvKCkubWFwKChlKSA9PiAoe1xuICAgICAgICAgICAgcGF0aDogZS5jb25kaXRpb24ucGF0aCxcbiAgICAgICAgICAgIG1ldGhvZDogZS5jb25kaXRpb24ubWV0aG9kID8/IFwiYW55XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbihlLmNvbnRleHQpLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBmaWVsZHM6ICgoZmllbGRzKSA9PlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzKS5tYXAoKGZpZWxkKSA9PiAoe1xuICAgICAgICAgICAgICBuYW1lOiBmaWVsZCxcbiAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkc1tmaWVsZF0sXG4gICAgICAgICAgICB9KSkpKHRoaXMuZmllbGRzKGNvbnRleHQpKSxcbiAgICAgICAgICBkZWNsYXJhdGlvbjogZGVjbCxcbiAgICAgICAgfSlcbiAgICAgICAgLmVuZCgpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbkNvbnRleHQucHJvdG90eXBlLmRlY2xhcmF0aW9uID0gZnVuY3Rpb24gKFxuICBjb250ZXh0PzogQ29udGV4dCB8IERlY2xhcmF0aW9uLFxuICBkZWNsPzogRGVjbGFyYXRpb25cbikge1xuICBpZiAodHlwZW9mIGNvbnRleHQgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiB0aGlzLmRhdGEoXCJAaW5mby9kZWNsYXJhdGlvblwiKTtcblxuICBpZiAodHlwZW9mIGNvbnRleHQgPT09IFwib2JqZWN0XCIgJiYgY29udGV4dCBpbnN0YW5jZW9mIENvbnRleHQpIHtcbiAgICBpZiAodHlwZW9mIGRlY2wgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LmRhdGEoXCJAaW5mby9kZWNsYXJhdGlvblwiKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRlY2wgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXJndW1lbnRzXCIpO1xuICAgIHRoaXMuc2V0RGF0YShcIkBpbmZvL2RlY2xhcmF0aW9uXCIsIGRlY2wpO1xuICAgIHJldHVybiBjb250ZXh0O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBjb250ZXh0ID09PSBcIm9iamVjdFwiKSB7XG4gICAgdGhpcy5zZXREYXRhKFwiQGluZm8vZGVjbGFyYXRpb25cIiwgY29udGV4dCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50c1wiKTtcbn07XG5cbkNvbnRleHQucHJvdG90eXBlLmhhc0RlY2xhcmF0aW9uID0gZnVuY3Rpb24gKGNvbnRleHQ/OiBDb250ZXh0KTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgY29udGV4dCA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuZGF0YShcIkBpbmZvL2RlY2xhcmF0aW9uXCIpICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gIHJldHVybiB0eXBlb2YgY29udGV4dC5kYXRhKFwiQGluZm8vZGVjbGFyYXRpb25cIikgIT09IFwidW5kZWZpbmVkXCI7XG59O1xuXG5Db250ZXh0LnByb3RvdHlwZS5jb2xsZWN0RGVjbGFyYXRpb25zID0gZnVuY3Rpb24gKFxuICBjdHg/OiBDb250ZXh0XG4pOiB7IGRlY2xhcmF0aW9uOiBEZWNsYXJhdGlvbjsgY3R4OiBDb250ZXh0IH1bXSB7XG4gIGN0eCA9IGN0eCA/PyB0aGlzO1xuICBjb25zdCBjb250ZXh0cyA9IGN0eC5jb2xsZWN0KCk7XG4gIHJldHVybiBjb250ZXh0c1xuICAgIC5tYXAoKGMpID0+ICh7IGRlY2xhcmF0aW9uOiB0aGlzLmRlY2xhcmF0aW9uKGMpLCBjdHg6IGMgfSkpXG4gICAgLmZpbHRlcigoZCkgPT4gISFkLmRlY2xhcmF0aW9uKSBhcyB7XG4gICAgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uO1xuICAgIGN0eDogQ29udGV4dDtcbiAgfVtdO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFBb0UsU0FBQUMsUUFBQUMsQ0FBQSxzQ0FBQUQsT0FBQSx3QkFBQUUsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLENBQUEsa0JBQUFBLENBQUEsZ0JBQUFBLENBQUEsV0FBQUEsQ0FBQSx5QkFBQUMsTUFBQSxJQUFBRCxDQUFBLENBQUFHLFdBQUEsS0FBQUYsTUFBQSxJQUFBRCxDQUFBLEtBQUFDLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQUosQ0FBQSxLQUFBRCxPQUFBLENBQUFDLENBQUE7QUFBQSxTQUFBSyxvQkFBQSxrQkFBcEUscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBTCxTQUFBLEVBQUFNLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxjQUFBLEVBQUFYLENBQUEsR0FBQVMsTUFBQSxDQUFBRyxjQUFBLGNBQUFMLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFLLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQWIsTUFBQSxHQUFBQSxNQUFBLE9BQUFjLENBQUEsR0FBQUQsQ0FBQSxDQUFBWixRQUFBLGtCQUFBYyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsYUFBQSx1QkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLFdBQUEsOEJBQUFDLE9BQUFiLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUcsY0FBQSxDQUFBTCxDQUFBLEVBQUFELENBQUEsSUFBQU8sS0FBQSxFQUFBTCxDQUFBLEVBQUFhLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFoQixDQUFBLENBQUFELENBQUEsV0FBQWMsTUFBQSxtQkFBQWIsQ0FBQSxJQUFBYSxNQUFBLFlBQUFBLE9BQUFiLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLGdCQUFBZ0IsS0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsUUFBQUksQ0FBQSxHQUFBUixDQUFBLElBQUFBLENBQUEsQ0FBQUYsU0FBQSxZQUFBcUIsU0FBQSxHQUFBbkIsQ0FBQSxHQUFBbUIsU0FBQSxFQUFBVixDQUFBLEdBQUFOLE1BQUEsQ0FBQWlCLE1BQUEsQ0FBQVosQ0FBQSxDQUFBVixTQUFBLEdBQUFZLENBQUEsT0FBQVcsT0FBQSxDQUFBakIsQ0FBQSxnQkFBQVYsQ0FBQSxDQUFBZSxDQUFBLGVBQUFGLEtBQUEsRUFBQWUsZ0JBQUEsQ0FBQXJCLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxDQUFBLE1BQUFELENBQUEsYUFBQWMsU0FBQXRCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLG1CQUFBc0IsSUFBQSxZQUFBQyxHQUFBLEVBQUF4QixDQUFBLENBQUF5QixJQUFBLENBQUExQixDQUFBLEVBQUFFLENBQUEsY0FBQUQsQ0FBQSxhQUFBdUIsSUFBQSxXQUFBQyxHQUFBLEVBQUF4QixDQUFBLFFBQUFELENBQUEsQ0FBQWtCLElBQUEsR0FBQUEsSUFBQSxNQUFBUyxDQUFBLHFCQUFBQyxDQUFBLHFCQUFBQyxDQUFBLGdCQUFBQyxDQUFBLGdCQUFBQyxDQUFBLGdCQUFBWixVQUFBLGNBQUFhLGtCQUFBLGNBQUFDLDJCQUFBLFNBQUFDLENBQUEsT0FBQXBCLE1BQUEsQ0FBQW9CLENBQUEsRUFBQXpCLENBQUEscUNBQUEwQixDQUFBLEdBQUFoQyxNQUFBLENBQUFpQyxjQUFBLEVBQUFDLENBQUEsR0FBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFBLENBQUEsQ0FBQUcsTUFBQSxRQUFBRCxDQUFBLElBQUFBLENBQUEsS0FBQW5DLENBQUEsSUFBQUUsQ0FBQSxDQUFBc0IsSUFBQSxDQUFBVyxDQUFBLEVBQUE1QixDQUFBLE1BQUF5QixDQUFBLEdBQUFHLENBQUEsT0FBQUUsQ0FBQSxHQUFBTiwwQkFBQSxDQUFBbkMsU0FBQSxHQUFBcUIsU0FBQSxDQUFBckIsU0FBQSxHQUFBSyxNQUFBLENBQUFpQixNQUFBLENBQUFjLENBQUEsWUFBQU0sc0JBQUF2QyxDQUFBLGdDQUFBd0MsT0FBQSxXQUFBekMsQ0FBQSxJQUFBYyxNQUFBLENBQUFiLENBQUEsRUFBQUQsQ0FBQSxZQUFBQyxDQUFBLGdCQUFBeUMsT0FBQSxDQUFBMUMsQ0FBQSxFQUFBQyxDQUFBLHNCQUFBMEMsY0FBQTFDLENBQUEsRUFBQUQsQ0FBQSxhQUFBNEMsT0FBQTFDLENBQUEsRUFBQVIsQ0FBQSxFQUFBYyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBYSxRQUFBLENBQUF0QixDQUFBLENBQUFDLENBQUEsR0FBQUQsQ0FBQSxFQUFBUCxDQUFBLG1CQUFBZ0IsQ0FBQSxDQUFBYyxJQUFBLFFBQUFaLENBQUEsR0FBQUYsQ0FBQSxDQUFBZSxHQUFBLEVBQUFFLENBQUEsR0FBQWYsQ0FBQSxDQUFBTCxLQUFBLFNBQUFvQixDQUFBLGdCQUFBbEMsT0FBQSxDQUFBa0MsQ0FBQSxLQUFBdkIsQ0FBQSxDQUFBc0IsSUFBQSxDQUFBQyxDQUFBLGVBQUEzQixDQUFBLENBQUE2QyxPQUFBLENBQUFsQixDQUFBLENBQUFtQixPQUFBLEVBQUFDLElBQUEsV0FBQTlDLENBQUEsSUFBQTJDLE1BQUEsU0FBQTNDLENBQUEsRUFBQU8sQ0FBQSxFQUFBQyxDQUFBLGdCQUFBUixDQUFBLElBQUEyQyxNQUFBLFVBQUEzQyxDQUFBLEVBQUFPLENBQUEsRUFBQUMsQ0FBQSxRQUFBVCxDQUFBLENBQUE2QyxPQUFBLENBQUFsQixDQUFBLEVBQUFvQixJQUFBLFdBQUE5QyxDQUFBLElBQUFXLENBQUEsQ0FBQUwsS0FBQSxHQUFBTixDQUFBLEVBQUFPLENBQUEsQ0FBQUksQ0FBQSxnQkFBQVgsQ0FBQSxXQUFBMkMsTUFBQSxVQUFBM0MsQ0FBQSxFQUFBTyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxDQUFBQyxDQUFBLENBQUFlLEdBQUEsU0FBQXZCLENBQUEsRUFBQVIsQ0FBQSxvQkFBQWEsS0FBQSxXQUFBQSxNQUFBTixDQUFBLEVBQUFHLENBQUEsYUFBQTRDLDJCQUFBLGVBQUFoRCxDQUFBLFdBQUFBLENBQUEsRUFBQUUsQ0FBQSxJQUFBMEMsTUFBQSxDQUFBM0MsQ0FBQSxFQUFBRyxDQUFBLEVBQUFKLENBQUEsRUFBQUUsQ0FBQSxnQkFBQUEsQ0FBQSxHQUFBQSxDQUFBLEdBQUFBLENBQUEsQ0FBQTZDLElBQUEsQ0FBQUMsMEJBQUEsRUFBQUEsMEJBQUEsSUFBQUEsMEJBQUEscUJBQUExQixpQkFBQXRCLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLFFBQUFWLENBQUEsR0FBQWlDLENBQUEsbUJBQUFuQixDQUFBLEVBQUFDLENBQUEsUUFBQWYsQ0FBQSxLQUFBbUMsQ0FBQSxZQUFBb0IsS0FBQSxzQ0FBQXZELENBQUEsS0FBQW9DLENBQUEsb0JBQUF0QixDQUFBLFFBQUFDLENBQUEsV0FBQUYsS0FBQSxFQUFBTixDQUFBLEVBQUFpRCxJQUFBLGVBQUE5QyxDQUFBLENBQUErQyxNQUFBLEdBQUEzQyxDQUFBLEVBQUFKLENBQUEsQ0FBQXFCLEdBQUEsR0FBQWhCLENBQUEsVUFBQUMsQ0FBQSxHQUFBTixDQUFBLENBQUFnRCxRQUFBLE1BQUExQyxDQUFBLFFBQUFFLENBQUEsR0FBQXlDLG1CQUFBLENBQUEzQyxDQUFBLEVBQUFOLENBQUEsT0FBQVEsQ0FBQSxRQUFBQSxDQUFBLEtBQUFtQixDQUFBLG1CQUFBbkIsQ0FBQSxxQkFBQVIsQ0FBQSxDQUFBK0MsTUFBQSxFQUFBL0MsQ0FBQSxDQUFBa0QsSUFBQSxHQUFBbEQsQ0FBQSxDQUFBbUQsS0FBQSxHQUFBbkQsQ0FBQSxDQUFBcUIsR0FBQSxzQkFBQXJCLENBQUEsQ0FBQStDLE1BQUEsUUFBQXpELENBQUEsS0FBQWlDLENBQUEsUUFBQWpDLENBQUEsR0FBQW9DLENBQUEsRUFBQTFCLENBQUEsQ0FBQXFCLEdBQUEsRUFBQXJCLENBQUEsQ0FBQW9ELGlCQUFBLENBQUFwRCxDQUFBLENBQUFxQixHQUFBLHVCQUFBckIsQ0FBQSxDQUFBK0MsTUFBQSxJQUFBL0MsQ0FBQSxDQUFBcUQsTUFBQSxXQUFBckQsQ0FBQSxDQUFBcUIsR0FBQSxHQUFBL0IsQ0FBQSxHQUFBbUMsQ0FBQSxNQUFBSyxDQUFBLEdBQUFYLFFBQUEsQ0FBQXZCLENBQUEsRUFBQUUsQ0FBQSxFQUFBRSxDQUFBLG9CQUFBOEIsQ0FBQSxDQUFBVixJQUFBLFFBQUE5QixDQUFBLEdBQUFVLENBQUEsQ0FBQThDLElBQUEsR0FBQXBCLENBQUEsR0FBQUYsQ0FBQSxFQUFBTSxDQUFBLENBQUFULEdBQUEsS0FBQU0sQ0FBQSxxQkFBQXhCLEtBQUEsRUFBQTJCLENBQUEsQ0FBQVQsR0FBQSxFQUFBeUIsSUFBQSxFQUFBOUMsQ0FBQSxDQUFBOEMsSUFBQSxrQkFBQWhCLENBQUEsQ0FBQVYsSUFBQSxLQUFBOUIsQ0FBQSxHQUFBb0MsQ0FBQSxFQUFBMUIsQ0FBQSxDQUFBK0MsTUFBQSxZQUFBL0MsQ0FBQSxDQUFBcUIsR0FBQSxHQUFBUyxDQUFBLENBQUFULEdBQUEsbUJBQUE0QixvQkFBQXJELENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEdBQUFGLENBQUEsQ0FBQWlELE1BQUEsRUFBQXpELENBQUEsR0FBQU0sQ0FBQSxDQUFBSixRQUFBLENBQUFRLENBQUEsT0FBQVYsQ0FBQSxLQUFBTyxDQUFBLFNBQUFDLENBQUEsQ0FBQWtELFFBQUEscUJBQUFoRCxDQUFBLElBQUFKLENBQUEsQ0FBQUosUUFBQSxlQUFBTSxDQUFBLENBQUFpRCxNQUFBLGFBQUFqRCxDQUFBLENBQUF1QixHQUFBLEdBQUF4QixDQUFBLEVBQUFvRCxtQkFBQSxDQUFBckQsQ0FBQSxFQUFBRSxDQUFBLGVBQUFBLENBQUEsQ0FBQWlELE1BQUEsa0JBQUEvQyxDQUFBLEtBQUFGLENBQUEsQ0FBQWlELE1BQUEsWUFBQWpELENBQUEsQ0FBQXVCLEdBQUEsT0FBQWlDLFNBQUEsdUNBQUF0RCxDQUFBLGlCQUFBMkIsQ0FBQSxNQUFBdkIsQ0FBQSxHQUFBZSxRQUFBLENBQUE3QixDQUFBLEVBQUFNLENBQUEsQ0FBQUosUUFBQSxFQUFBTSxDQUFBLENBQUF1QixHQUFBLG1CQUFBakIsQ0FBQSxDQUFBZ0IsSUFBQSxTQUFBdEIsQ0FBQSxDQUFBaUQsTUFBQSxZQUFBakQsQ0FBQSxDQUFBdUIsR0FBQSxHQUFBakIsQ0FBQSxDQUFBaUIsR0FBQSxFQUFBdkIsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxNQUFBdEIsQ0FBQSxHQUFBRCxDQUFBLENBQUFpQixHQUFBLFNBQUFoQixDQUFBLEdBQUFBLENBQUEsQ0FBQXlDLElBQUEsSUFBQWhELENBQUEsQ0FBQUYsQ0FBQSxDQUFBMkQsVUFBQSxJQUFBbEQsQ0FBQSxDQUFBRixLQUFBLEVBQUFMLENBQUEsQ0FBQTBELElBQUEsR0FBQTVELENBQUEsQ0FBQTZELE9BQUEsZUFBQTNELENBQUEsQ0FBQWlELE1BQUEsS0FBQWpELENBQUEsQ0FBQWlELE1BQUEsV0FBQWpELENBQUEsQ0FBQXVCLEdBQUEsR0FBQXhCLENBQUEsR0FBQUMsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxJQUFBdEIsQ0FBQSxJQUFBUCxDQUFBLENBQUFpRCxNQUFBLFlBQUFqRCxDQUFBLENBQUF1QixHQUFBLE9BQUFpQyxTQUFBLHNDQUFBeEQsQ0FBQSxDQUFBa0QsUUFBQSxTQUFBckIsQ0FBQSxjQUFBK0IsYUFBQTdELENBQUEsUUFBQUQsQ0FBQSxLQUFBK0QsTUFBQSxFQUFBOUQsQ0FBQSxZQUFBQSxDQUFBLEtBQUFELENBQUEsQ0FBQWdFLFFBQUEsR0FBQS9ELENBQUEsV0FBQUEsQ0FBQSxLQUFBRCxDQUFBLENBQUFpRSxVQUFBLEdBQUFoRSxDQUFBLEtBQUFELENBQUEsQ0FBQWtFLFFBQUEsR0FBQWpFLENBQUEsV0FBQWtFLFVBQUEsQ0FBQUMsSUFBQSxDQUFBcEUsQ0FBQSxjQUFBcUUsY0FBQXBFLENBQUEsUUFBQUQsQ0FBQSxHQUFBQyxDQUFBLENBQUFxRSxVQUFBLFFBQUF0RSxDQUFBLENBQUF3QixJQUFBLG9CQUFBeEIsQ0FBQSxDQUFBeUIsR0FBQSxFQUFBeEIsQ0FBQSxDQUFBcUUsVUFBQSxHQUFBdEUsQ0FBQSxhQUFBcUIsUUFBQXBCLENBQUEsU0FBQWtFLFVBQUEsTUFBQUosTUFBQSxhQUFBOUQsQ0FBQSxDQUFBd0MsT0FBQSxDQUFBcUIsWUFBQSxjQUFBUyxLQUFBLGlCQUFBakMsT0FBQXRDLENBQUEsUUFBQUEsQ0FBQSxXQUFBQSxDQUFBLFFBQUFFLENBQUEsR0FBQUYsQ0FBQSxDQUFBUyxDQUFBLE9BQUFQLENBQUEsU0FBQUEsQ0FBQSxDQUFBd0IsSUFBQSxDQUFBMUIsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBNEQsSUFBQSxTQUFBNUQsQ0FBQSxPQUFBd0UsS0FBQSxDQUFBeEUsQ0FBQSxDQUFBeUUsTUFBQSxTQUFBL0UsQ0FBQSxPQUFBYyxDQUFBLFlBQUFvRCxLQUFBLGFBQUFsRSxDQUFBLEdBQUFNLENBQUEsQ0FBQXlFLE1BQUEsT0FBQXJFLENBQUEsQ0FBQXNCLElBQUEsQ0FBQTFCLENBQUEsRUFBQU4sQ0FBQSxVQUFBa0UsSUFBQSxDQUFBckQsS0FBQSxHQUFBUCxDQUFBLENBQUFOLENBQUEsR0FBQWtFLElBQUEsQ0FBQVYsSUFBQSxPQUFBVSxJQUFBLFNBQUFBLElBQUEsQ0FBQXJELEtBQUEsR0FBQU4sQ0FBQSxFQUFBMkQsSUFBQSxDQUFBVixJQUFBLE9BQUFVLElBQUEsWUFBQXBELENBQUEsQ0FBQW9ELElBQUEsR0FBQXBELENBQUEsZ0JBQUFrRCxTQUFBLENBQUFqRSxPQUFBLENBQUFPLENBQUEsa0NBQUFnQyxpQkFBQSxDQUFBbEMsU0FBQSxHQUFBbUMsMEJBQUEsRUFBQXZDLENBQUEsQ0FBQTZDLENBQUEsbUJBQUFoQyxLQUFBLEVBQUEwQiwwQkFBQSxFQUFBakIsWUFBQSxTQUFBdEIsQ0FBQSxDQUFBdUMsMEJBQUEsbUJBQUExQixLQUFBLEVBQUF5QixpQkFBQSxFQUFBaEIsWUFBQSxTQUFBZ0IsaUJBQUEsQ0FBQTBDLFdBQUEsR0FBQTVELE1BQUEsQ0FBQW1CLDBCQUFBLEVBQUFyQixDQUFBLHdCQUFBWixDQUFBLENBQUEyRSxtQkFBQSxhQUFBMUUsQ0FBQSxRQUFBRCxDQUFBLHdCQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUosV0FBQSxXQUFBRyxDQUFBLEtBQUFBLENBQUEsS0FBQWdDLGlCQUFBLDZCQUFBaEMsQ0FBQSxDQUFBMEUsV0FBQSxJQUFBMUUsQ0FBQSxDQUFBNEUsSUFBQSxPQUFBNUUsQ0FBQSxDQUFBNkUsSUFBQSxhQUFBNUUsQ0FBQSxXQUFBRSxNQUFBLENBQUEyRSxjQUFBLEdBQUEzRSxNQUFBLENBQUEyRSxjQUFBLENBQUE3RSxDQUFBLEVBQUFnQywwQkFBQSxLQUFBaEMsQ0FBQSxDQUFBOEUsU0FBQSxHQUFBOUMsMEJBQUEsRUFBQW5CLE1BQUEsQ0FBQWIsQ0FBQSxFQUFBVyxDQUFBLHlCQUFBWCxDQUFBLENBQUFILFNBQUEsR0FBQUssTUFBQSxDQUFBaUIsTUFBQSxDQUFBbUIsQ0FBQSxHQUFBdEMsQ0FBQSxLQUFBRCxDQUFBLENBQUFnRixLQUFBLGFBQUEvRSxDQUFBLGFBQUE2QyxPQUFBLEVBQUE3QyxDQUFBLE9BQUF1QyxxQkFBQSxDQUFBRyxhQUFBLENBQUE3QyxTQUFBLEdBQUFnQixNQUFBLENBQUE2QixhQUFBLENBQUE3QyxTQUFBLEVBQUFZLENBQUEsaUNBQUFWLENBQUEsQ0FBQTJDLGFBQUEsR0FBQUEsYUFBQSxFQUFBM0MsQ0FBQSxDQUFBaUYsS0FBQSxhQUFBaEYsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQVYsQ0FBQSxFQUFBYyxDQUFBLGVBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBMEUsT0FBQSxPQUFBekUsQ0FBQSxPQUFBa0MsYUFBQSxDQUFBekIsSUFBQSxDQUFBakIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLENBQUEsRUFBQVYsQ0FBQSxHQUFBYyxDQUFBLFVBQUFSLENBQUEsQ0FBQTJFLG1CQUFBLENBQUF6RSxDQUFBLElBQUFPLENBQUEsR0FBQUEsQ0FBQSxDQUFBbUQsSUFBQSxHQUFBYixJQUFBLFdBQUE5QyxDQUFBLFdBQUFBLENBQUEsQ0FBQWlELElBQUEsR0FBQWpELENBQUEsQ0FBQU0sS0FBQSxHQUFBRSxDQUFBLENBQUFtRCxJQUFBLFdBQUFwQixxQkFBQSxDQUFBRCxDQUFBLEdBQUF6QixNQUFBLENBQUF5QixDQUFBLEVBQUEzQixDQUFBLGdCQUFBRSxNQUFBLENBQUF5QixDQUFBLEVBQUE5QixDQUFBLGlDQUFBSyxNQUFBLENBQUF5QixDQUFBLDZEQUFBdkMsQ0FBQSxDQUFBbUYsSUFBQSxhQUFBbEYsQ0FBQSxRQUFBRCxDQUFBLEdBQUFHLE1BQUEsQ0FBQUYsQ0FBQSxHQUFBQyxDQUFBLGdCQUFBRSxDQUFBLElBQUFKLENBQUEsRUFBQUUsQ0FBQSxDQUFBa0UsSUFBQSxDQUFBaEUsQ0FBQSxVQUFBRixDQUFBLENBQUFrRixPQUFBLGFBQUF4QixLQUFBLFdBQUExRCxDQUFBLENBQUF1RSxNQUFBLFNBQUF4RSxDQUFBLEdBQUFDLENBQUEsQ0FBQW1GLEdBQUEsUUFBQXBGLENBQUEsSUFBQUQsQ0FBQSxTQUFBNEQsSUFBQSxDQUFBckQsS0FBQSxHQUFBTixDQUFBLEVBQUEyRCxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxXQUFBQSxJQUFBLENBQUFWLElBQUEsT0FBQVUsSUFBQSxRQUFBNUQsQ0FBQSxDQUFBc0MsTUFBQSxHQUFBQSxNQUFBLEVBQUFqQixPQUFBLENBQUF2QixTQUFBLEtBQUFELFdBQUEsRUFBQXdCLE9BQUEsRUFBQWtELEtBQUEsV0FBQUEsTUFBQXZFLENBQUEsYUFBQXNGLElBQUEsV0FBQTFCLElBQUEsV0FBQU4sSUFBQSxRQUFBQyxLQUFBLEdBQUF0RCxDQUFBLE9BQUFpRCxJQUFBLFlBQUFFLFFBQUEsY0FBQUQsTUFBQSxnQkFBQTFCLEdBQUEsR0FBQXhCLENBQUEsT0FBQWtFLFVBQUEsQ0FBQTFCLE9BQUEsQ0FBQTRCLGFBQUEsSUFBQXJFLENBQUEsV0FBQUUsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBcUYsTUFBQSxPQUFBbkYsQ0FBQSxDQUFBc0IsSUFBQSxPQUFBeEIsQ0FBQSxNQUFBc0UsS0FBQSxFQUFBdEUsQ0FBQSxDQUFBc0YsS0FBQSxjQUFBdEYsQ0FBQSxJQUFBRCxDQUFBLE1BQUF3RixJQUFBLFdBQUFBLEtBQUEsU0FBQXZDLElBQUEsV0FBQWpELENBQUEsUUFBQWtFLFVBQUEsSUFBQUcsVUFBQSxrQkFBQXJFLENBQUEsQ0FBQXVCLElBQUEsUUFBQXZCLENBQUEsQ0FBQXdCLEdBQUEsY0FBQWlFLElBQUEsS0FBQWxDLGlCQUFBLFdBQUFBLGtCQUFBeEQsQ0FBQSxhQUFBa0QsSUFBQSxRQUFBbEQsQ0FBQSxNQUFBRSxDQUFBLGtCQUFBeUYsT0FBQXZGLENBQUEsRUFBQVYsQ0FBQSxXQUFBZSxDQUFBLENBQUFlLElBQUEsWUFBQWYsQ0FBQSxDQUFBZ0IsR0FBQSxHQUFBekIsQ0FBQSxFQUFBRSxDQUFBLENBQUEwRCxJQUFBLEdBQUF4RCxDQUFBLEVBQUFWLENBQUEsS0FBQVEsQ0FBQSxDQUFBaUQsTUFBQSxXQUFBakQsQ0FBQSxDQUFBdUIsR0FBQSxHQUFBeEIsQ0FBQSxLQUFBUCxDQUFBLGFBQUFBLENBQUEsUUFBQXlFLFVBQUEsQ0FBQU0sTUFBQSxNQUFBL0UsQ0FBQSxTQUFBQSxDQUFBLFFBQUFjLENBQUEsUUFBQTJELFVBQUEsQ0FBQXpFLENBQUEsR0FBQWUsQ0FBQSxHQUFBRCxDQUFBLENBQUE4RCxVQUFBLGlCQUFBOUQsQ0FBQSxDQUFBdUQsTUFBQSxTQUFBNEIsTUFBQSxhQUFBbkYsQ0FBQSxDQUFBdUQsTUFBQSxTQUFBdUIsSUFBQSxRQUFBNUUsQ0FBQSxHQUFBTixDQUFBLENBQUFzQixJQUFBLENBQUFsQixDQUFBLGVBQUFJLENBQUEsR0FBQVIsQ0FBQSxDQUFBc0IsSUFBQSxDQUFBbEIsQ0FBQSxxQkFBQUUsQ0FBQSxJQUFBRSxDQUFBLGFBQUEwRSxJQUFBLEdBQUE5RSxDQUFBLENBQUF3RCxRQUFBLFNBQUEyQixNQUFBLENBQUFuRixDQUFBLENBQUF3RCxRQUFBLGdCQUFBc0IsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBeUQsVUFBQSxTQUFBMEIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBeUQsVUFBQSxjQUFBdkQsQ0FBQSxhQUFBNEUsSUFBQSxHQUFBOUUsQ0FBQSxDQUFBd0QsUUFBQSxTQUFBMkIsTUFBQSxDQUFBbkYsQ0FBQSxDQUFBd0QsUUFBQSxxQkFBQXBELENBQUEsWUFBQXFDLEtBQUEscURBQUFxQyxJQUFBLEdBQUE5RSxDQUFBLENBQUF5RCxVQUFBLFNBQUEwQixNQUFBLENBQUFuRixDQUFBLENBQUF5RCxVQUFBLFlBQUFSLE1BQUEsV0FBQUEsT0FBQXhELENBQUEsRUFBQUQsQ0FBQSxhQUFBRSxDQUFBLFFBQUFpRSxVQUFBLENBQUFNLE1BQUEsTUFBQXZFLENBQUEsU0FBQUEsQ0FBQSxRQUFBUixDQUFBLFFBQUF5RSxVQUFBLENBQUFqRSxDQUFBLE9BQUFSLENBQUEsQ0FBQXFFLE1BQUEsU0FBQXVCLElBQUEsSUFBQWxGLENBQUEsQ0FBQXNCLElBQUEsQ0FBQWhDLENBQUEsd0JBQUE0RixJQUFBLEdBQUE1RixDQUFBLENBQUF1RSxVQUFBLFFBQUF6RCxDQUFBLEdBQUFkLENBQUEsYUFBQWMsQ0FBQSxpQkFBQVAsQ0FBQSxtQkFBQUEsQ0FBQSxLQUFBTyxDQUFBLENBQUF1RCxNQUFBLElBQUEvRCxDQUFBLElBQUFBLENBQUEsSUFBQVEsQ0FBQSxDQUFBeUQsVUFBQSxLQUFBekQsQ0FBQSxjQUFBQyxDQUFBLEdBQUFELENBQUEsR0FBQUEsQ0FBQSxDQUFBOEQsVUFBQSxjQUFBN0QsQ0FBQSxDQUFBZSxJQUFBLEdBQUF2QixDQUFBLEVBQUFRLENBQUEsQ0FBQWdCLEdBQUEsR0FBQXpCLENBQUEsRUFBQVEsQ0FBQSxTQUFBMkMsTUFBQSxnQkFBQVMsSUFBQSxHQUFBcEQsQ0FBQSxDQUFBeUQsVUFBQSxFQUFBbEMsQ0FBQSxTQUFBNkQsUUFBQSxDQUFBbkYsQ0FBQSxNQUFBbUYsUUFBQSxXQUFBQSxTQUFBM0YsQ0FBQSxFQUFBRCxDQUFBLG9CQUFBQyxDQUFBLENBQUF1QixJQUFBLFFBQUF2QixDQUFBLENBQUF3QixHQUFBLHFCQUFBeEIsQ0FBQSxDQUFBdUIsSUFBQSxtQkFBQXZCLENBQUEsQ0FBQXVCLElBQUEsUUFBQW9DLElBQUEsR0FBQTNELENBQUEsQ0FBQXdCLEdBQUEsZ0JBQUF4QixDQUFBLENBQUF1QixJQUFBLFNBQUFrRSxJQUFBLFFBQUFqRSxHQUFBLEdBQUF4QixDQUFBLENBQUF3QixHQUFBLE9BQUEwQixNQUFBLGtCQUFBUyxJQUFBLHlCQUFBM0QsQ0FBQSxDQUFBdUIsSUFBQSxJQUFBeEIsQ0FBQSxVQUFBNEQsSUFBQSxHQUFBNUQsQ0FBQSxHQUFBK0IsQ0FBQSxLQUFBOEQsTUFBQSxXQUFBQSxPQUFBNUYsQ0FBQSxhQUFBRCxDQUFBLFFBQUFtRSxVQUFBLENBQUFNLE1BQUEsTUFBQXpFLENBQUEsU0FBQUEsQ0FBQSxRQUFBRSxDQUFBLFFBQUFpRSxVQUFBLENBQUFuRSxDQUFBLE9BQUFFLENBQUEsQ0FBQStELFVBQUEsS0FBQWhFLENBQUEsY0FBQTJGLFFBQUEsQ0FBQTFGLENBQUEsQ0FBQW9FLFVBQUEsRUFBQXBFLENBQUEsQ0FBQWdFLFFBQUEsR0FBQUcsYUFBQSxDQUFBbkUsQ0FBQSxHQUFBNkIsQ0FBQSx5QkFBQStELE9BQUE3RixDQUFBLGFBQUFELENBQUEsUUFBQW1FLFVBQUEsQ0FBQU0sTUFBQSxNQUFBekUsQ0FBQSxTQUFBQSxDQUFBLFFBQUFFLENBQUEsUUFBQWlFLFVBQUEsQ0FBQW5FLENBQUEsT0FBQUUsQ0FBQSxDQUFBNkQsTUFBQSxLQUFBOUQsQ0FBQSxRQUFBRyxDQUFBLEdBQUFGLENBQUEsQ0FBQW9FLFVBQUEsa0JBQUFsRSxDQUFBLENBQUFvQixJQUFBLFFBQUE5QixDQUFBLEdBQUFVLENBQUEsQ0FBQXFCLEdBQUEsRUFBQTRDLGFBQUEsQ0FBQW5FLENBQUEsWUFBQVIsQ0FBQSxnQkFBQXVELEtBQUEsOEJBQUE4QyxhQUFBLFdBQUFBLGNBQUEvRixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxnQkFBQWdELFFBQUEsS0FBQXhELFFBQUEsRUFBQTBDLE1BQUEsQ0FBQXRDLENBQUEsR0FBQTJELFVBQUEsRUFBQXpELENBQUEsRUFBQTJELE9BQUEsRUFBQXpELENBQUEsb0JBQUErQyxNQUFBLFVBQUExQixHQUFBLEdBQUF4QixDQUFBLEdBQUE4QixDQUFBLE9BQUEvQixDQUFBO0FBQUEsU0FBQWdHLG1CQUFBQyxHQUFBLEVBQUFwRCxPQUFBLEVBQUFxRCxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsTUFBQSxFQUFBQyxHQUFBLEVBQUE1RSxHQUFBLGNBQUE2RSxJQUFBLEdBQUFMLEdBQUEsQ0FBQUksR0FBQSxFQUFBNUUsR0FBQSxPQUFBbEIsS0FBQSxHQUFBK0YsSUFBQSxDQUFBL0YsS0FBQSxXQUFBZ0csS0FBQSxJQUFBTCxNQUFBLENBQUFLLEtBQUEsaUJBQUFELElBQUEsQ0FBQXBELElBQUEsSUFBQUwsT0FBQSxDQUFBdEMsS0FBQSxZQUFBMkUsT0FBQSxDQUFBckMsT0FBQSxDQUFBdEMsS0FBQSxFQUFBd0MsSUFBQSxDQUFBb0QsS0FBQSxFQUFBQyxNQUFBO0FBQUEsU0FBQUksa0JBQUFDLEVBQUEsNkJBQUFDLElBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLGFBQUExQixPQUFBLFdBQUFyQyxPQUFBLEVBQUFxRCxNQUFBLFFBQUFELEdBQUEsR0FBQVEsRUFBQSxDQUFBSSxLQUFBLENBQUFILElBQUEsRUFBQUMsSUFBQSxZQUFBUixNQUFBNUYsS0FBQSxJQUFBeUYsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBcEQsT0FBQSxFQUFBcUQsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsVUFBQTdGLEtBQUEsY0FBQTZGLE9BQUFVLEdBQUEsSUFBQWQsa0JBQUEsQ0FBQUMsR0FBQSxFQUFBcEQsT0FBQSxFQUFBcUQsTUFBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsV0FBQVUsR0FBQSxLQUFBWCxLQUFBLENBQUFZLFNBQUE7QUFBQSxTQUFBQyxtQkFBQUMsR0FBQSxXQUFBQyxrQkFBQSxDQUFBRCxHQUFBLEtBQUFFLGdCQUFBLENBQUFGLEdBQUEsS0FBQUcsMkJBQUEsQ0FBQUgsR0FBQSxLQUFBSSxrQkFBQTtBQUFBLFNBQUFBLG1CQUFBLGNBQUEzRCxTQUFBO0FBQUEsU0FBQTBELDRCQUFBMUgsQ0FBQSxFQUFBNEgsTUFBQSxTQUFBNUgsQ0FBQSxxQkFBQUEsQ0FBQSxzQkFBQTZILGlCQUFBLENBQUE3SCxDQUFBLEVBQUE0SCxNQUFBLE9BQUFsSCxDQUFBLEdBQUFELE1BQUEsQ0FBQUwsU0FBQSxDQUFBMEgsUUFBQSxDQUFBOUYsSUFBQSxDQUFBaEMsQ0FBQSxFQUFBOEYsS0FBQSxhQUFBcEYsQ0FBQSxpQkFBQVYsQ0FBQSxDQUFBRyxXQUFBLEVBQUFPLENBQUEsR0FBQVYsQ0FBQSxDQUFBRyxXQUFBLENBQUErRSxJQUFBLE1BQUF4RSxDQUFBLGNBQUFBLENBQUEsbUJBQUFxSCxLQUFBLENBQUFDLElBQUEsQ0FBQWhJLENBQUEsT0FBQVUsQ0FBQSwrREFBQXVILElBQUEsQ0FBQXZILENBQUEsVUFBQW1ILGlCQUFBLENBQUE3SCxDQUFBLEVBQUE0SCxNQUFBO0FBQUEsU0FBQUgsaUJBQUFTLElBQUEsZUFBQWpJLE1BQUEsb0JBQUFpSSxJQUFBLENBQUFqSSxNQUFBLENBQUFDLFFBQUEsYUFBQWdJLElBQUEsK0JBQUFILEtBQUEsQ0FBQUMsSUFBQSxDQUFBRSxJQUFBO0FBQUEsU0FBQVYsbUJBQUFELEdBQUEsUUFBQVEsS0FBQSxDQUFBSSxPQUFBLENBQUFaLEdBQUEsVUFBQU0saUJBQUEsQ0FBQU4sR0FBQTtBQUFBLFNBQUFNLGtCQUFBTixHQUFBLEVBQUFhLEdBQUEsUUFBQUEsR0FBQSxZQUFBQSxHQUFBLEdBQUFiLEdBQUEsQ0FBQXhDLE1BQUEsRUFBQXFELEdBQUEsR0FBQWIsR0FBQSxDQUFBeEMsTUFBQSxXQUFBakUsQ0FBQSxNQUFBdUgsSUFBQSxPQUFBTixLQUFBLENBQUFLLEdBQUEsR0FBQXRILENBQUEsR0FBQXNILEdBQUEsRUFBQXRILENBQUEsSUFBQXVILElBQUEsQ0FBQXZILENBQUEsSUFBQXlHLEdBQUEsQ0FBQXpHLENBQUEsVUFBQXVILElBQUEsSUFEQTtBQUlBLElBQU1DLE9BQU8sR0FBRyxPQUFPO0FBdUR2QjNHLGNBQU8sQ0FBQ3ZCLFNBQVMsQ0FBQ21JLFdBQVcsR0FBRyxZQUFzQztFQUFBLElBQUFDLFVBQUEsRUFBQUMsV0FBQTtFQUFBLFNBQUFDLElBQUEsR0FBQXhCLFNBQUEsQ0FBQW5DLE1BQUEsRUFBekJ3RCxXQUFXLE9BQUFSLEtBQUEsQ0FBQVcsSUFBQSxHQUFBQyxJQUFBLE1BQUFBLElBQUEsR0FBQUQsSUFBQSxFQUFBQyxJQUFBO0lBQVhKLFdBQVcsQ0FBQUksSUFBQSxJQUFBekIsU0FBQSxDQUFBeUIsSUFBQTtFQUFBO0VBQ3RELElBQUlKLFdBQVcsQ0FBQ3hELE1BQU0sSUFBSSxDQUFDLEVBQUUsUUFBQXlELFVBQUEsR0FBTyxJQUFJLENBQUNJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFBSixVQUFBLGNBQUFBLFVBQUEsR0FBSSxFQUFFO0VBQ3hFLElBQUlELFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWTVHLGNBQU8sRUFBRTtJQUFBLElBQUFrSCxtQkFBQTtJQUNyQyxJQUFJTixXQUFXLENBQUN4RCxNQUFNLEtBQUssQ0FBQyxFQUMxQixNQUFNLElBQUl4QixLQUFLLENBQUMsMkNBQTJDLENBQUM7SUFDOUQsUUFBQXNGLG1CQUFBLEdBQU9OLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ0ssSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQUFDLG1CQUFBLGNBQUFBLG1CQUFBLEdBQUksRUFBRTtFQUN2RDtFQUVBLElBQUksQ0FBQ0MsT0FBTyxDQUFDLG1CQUFtQixLQUFBQyxNQUFBLENBQUF6QixrQkFBQSxFQUFBbUIsV0FBQSxHQUMxQixJQUFJLENBQUNHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFBSCxXQUFBLGNBQUFBLFdBQUEsR0FBSSxFQUFFLEdBQ3JDRixXQUFXLENBQ2YsQ0FBQztBQUNKLENBQUM7QUFFRDVHLGNBQU8sQ0FBQ3ZCLFNBQVMsQ0FBQzRJLEtBQUssR0FBRyxVQUFVQyxJQUFTLEVBQUVDLElBQVUsRUFBRUMsSUFBVSxFQUFPO0VBQzFFLElBQUksT0FBT0YsSUFBSSxLQUFLLFFBQVEsRUFBRTtJQUFBLElBQUFHLFdBQUE7SUFDNUIsSUFBSSxPQUFPRixJQUFJLEtBQUssV0FBVyxFQUFFO01BQy9CLElBQU1HLE9BQU0sR0FBRyxJQUFJLENBQUNULElBQUksZUFBZSxDQUFDO01BQ3hDLElBQUksQ0FBQ1MsT0FBTSxFQUFFLE9BQU9oQyxTQUFTO01BQzdCLE9BQU9nQyxPQUFNLENBQUNKLElBQUksQ0FBQztJQUNyQjtJQUVBLElBQU1JLFFBQU0sSUFBQUQsV0FBQSxHQUFHLElBQUksQ0FBQ1IsSUFBSSxlQUFlLENBQUMsY0FBQVEsV0FBQSxjQUFBQSxXQUFBLEdBQUksQ0FBQyxDQUFDO0lBQzlDQyxRQUFNLENBQUNKLElBQUksQ0FBQyxHQUFHQyxJQUFJO0lBQ25CLElBQUksQ0FBQ0osT0FBTyxpQkFBaUJPLFFBQU0sQ0FBQztJQUNwQyxPQUFPLElBQUk7RUFDYjtFQUVBLElBQUksT0FBT0gsSUFBSSxLQUFLLFFBQVEsRUFBRTtJQUFBLElBQUFJLFVBQUE7SUFDNUIsSUFBSSxPQUFPSCxJQUFJLEtBQUssV0FBVyxFQUFFO01BQy9CLElBQU1FLFFBQU0sR0FBR0osSUFBSSxDQUFDTCxJQUFJLGVBQWUsQ0FBQztNQUN4QyxJQUFJLENBQUNTLFFBQU0sRUFBRSxPQUFPaEMsU0FBUztNQUM3QixPQUFPZ0MsUUFBTSxDQUFDSCxJQUFJLENBQUM7SUFDckI7SUFFQSxJQUFNRyxRQUFNLElBQUFDLFVBQUEsR0FBR0wsSUFBSSxDQUFDTCxJQUFJLGVBQWUsQ0FBQyxjQUFBVSxVQUFBLGNBQUFBLFVBQUEsR0FBSSxDQUFDLENBQUM7SUFDOUNELFFBQU0sQ0FBQ0gsSUFBSSxDQUFDLEdBQUdDLElBQUk7SUFDbkJGLElBQUksQ0FBQ0gsT0FBTyxpQkFBaUJPLFFBQU0sQ0FBQztJQUNwQyxPQUFPSixJQUFJO0VBQ2I7RUFFQSxNQUFNLElBQUkxRixLQUFLLENBQUMsbUJBQW1CLENBQUM7QUFDdEMsQ0FBQztBQUVENUIsY0FBTyxDQUFDdkIsU0FBUyxDQUFDaUosTUFBTSxHQUFHLFVBQVVFLEdBQWEsRUFBWTtFQUFBLElBQUFDLFdBQUEsRUFBQUMsU0FBQTtFQUM1RCxJQUFJLE9BQU9GLEdBQUcsS0FBSyxXQUFXLEVBQUUsUUFBQUMsV0FBQSxHQUFPLElBQUksQ0FBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFBWSxXQUFBLGNBQUFBLFdBQUEsR0FBSSxDQUFDLENBQUM7RUFDdEUsUUFBQUMsU0FBQSxHQUFPRixHQUFHLENBQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBQWEsU0FBQSxjQUFBQSxTQUFBLEdBQUksQ0FBQyxDQUFDO0FBQ3ZDLENBQUM7QUFFRDlILGNBQU8sQ0FBQ3ZCLFNBQVMsQ0FBQ3NKLE9BQU8sR0FBRyxVQUFVQyxPQUEyQixFQUFFO0VBQUEsSUFBQUMsUUFBQSxFQUFBQyxhQUFBO0VBQ2pFRixPQUFPLElBQUFDLFFBQUEsR0FBR0QsT0FBTyxjQUFBQyxRQUFBLGNBQUFBLFFBQUEsR0FBSSxDQUFDLENBQUM7RUFDdkIsSUFBTUUsSUFBSSxJQUFBRCxhQUFBLEdBQUdGLE9BQU8sQ0FBQ0csSUFBSSxjQUFBRCxhQUFBLGNBQUFBLGFBQUEsR0FBSSxPQUFPO0VBRXBDLElBQUksQ0FBQ0UsR0FBRyxDQUFDRCxJQUFJLEVBQUUsVUFBVVAsR0FBRyxFQUFFO0lBQUEsSUFBQVMsS0FBQTtJQUM1QixJQUFJLENBQUN6QixXQUFXLENBQ2QsMERBQ0YsQ0FBQztJQUNELElBQUksQ0FBQ0EsV0FBVyxDQUNkLDZEQUNGLENBQUM7SUFFRCxJQUFJLENBQUNTLEtBQUssQ0FBQyxTQUFTLEVBQUVWLE9BQU8sQ0FBQztJQUU5QixJQUFJLENBQUMyQixHQUFHO01BQUEsSUFBQUMsSUFBQSxHQUFBcEQsaUJBQUEsZUFBQXpHLG1CQUFBLEdBQUE4RSxJQUFBLENBQUMsU0FBQWdGLFFBQU9DLEdBQUcsRUFBRUMsR0FBRyxFQUFFNUQsS0FBSztRQUFBLElBQUE2RCxNQUFBLEVBQUFDLFFBQUEsRUFBQUMsU0FBQSxFQUFBQyxTQUFBO1FBQUEsSUFBQUMsS0FBQSxFQUFBQyxPQUFBLEVBQUFDLElBQUE7UUFBQSxPQUFBdkssbUJBQUEsR0FBQW1CLElBQUEsVUFBQXFKLFNBQUFDLFNBQUE7VUFBQSxrQkFBQUEsU0FBQSxDQUFBbEYsSUFBQSxHQUFBa0YsU0FBQSxDQUFBNUcsSUFBQTtZQUFBO2NBQUE0RyxTQUFBLENBQUE1RyxJQUFBO2NBQUEsT0FDVHFGLEdBQUcsQ0FBQ3dCLEdBQUcsQ0FBQ0MsWUFBWSxDQUFDWixHQUFHLEVBQUVDLEdBQUcsQ0FBQztZQUFBO2NBQTVDSyxLQUFLLEdBQUFJLFNBQUEsQ0FBQWxILElBQUE7Y0FDUCtHLE9BQU8sSUFBQUwsTUFBQSxHQUNUSSxLQUFLLENBQUNBLEtBQUssQ0FBQzNGLE1BQU0sR0FBRyxDQUFDLENBQUMsY0FBQXVGLE1BQUEsZ0JBQUFBLE1BQUEsR0FBdkJBLE1BQUEsQ0FBeUJXLE1BQU07Y0FDN0I7Y0FDQTtjQUNBLFVBQUMzSyxDQUFDO2dCQUFBLE9BQUtBLENBQUMsQ0FBQ3dCLElBQUksS0FBSyxXQUFXO2NBQUEsQ0FDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFBd0ksTUFBQSx1QkFMUUEsTUFBQSxDQU1YSyxPQUFPO2NBRVYsSUFBSVAsR0FBRyxDQUFDTixJQUFJLElBQUksR0FBRyxJQUFJTSxHQUFHLENBQUNOLElBQUksSUFBSSxFQUFFLEVBQUU7Z0JBQ3JDYSxPQUFPLEdBQUdwQixHQUFHLENBQUN3QixHQUFHO2NBQ25CO2NBQUMsTUFHQyxDQUFDSixPQUFPLElBQ1BQLEdBQUcsQ0FBQ04sSUFBSSxPQUFBUyxRQUFBLEdBQUtJLE9BQU8sY0FBQUosUUFBQSx1QkFBUEEsUUFBQSxDQUFTVyxPQUFPLENBQUMsQ0FBQyxLQUM5QmQsR0FBRyxDQUFDTixJQUFJLEtBQUssRUFBQVUsU0FBQSxHQUFBRyxPQUFPLGNBQUFILFNBQUEsdUJBQVBBLFNBQUEsQ0FBU1UsT0FBTyxDQUFDLENBQUMsSUFBRyxHQUFJO2dCQUFBSixTQUFBLENBQUE1RyxJQUFBO2dCQUFBO2NBQUE7Y0FBQSxNQUVsQyxJQUFBaUgsV0FBSSxpQ0FBQXBDLE1BQUEsQ0FBK0JxQixHQUFHLENBQUNOLElBQUksT0FBRyxDQUFDO1lBQUE7Y0FHakRjLElBQUksR0FBR0QsT0FBTyxDQUFDUyxXQUFXLENBQUMsQ0FBQztjQUVsQ2YsR0FBRyxDQUNBZ0IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUNYQyxJQUFJLENBQUM7Z0JBQ0p4QixJQUFJLEVBQUVhLE9BQU8sQ0FBQ08sT0FBTyxDQUFDLENBQUM7Z0JBQ3ZCekgsTUFBTSxFQUFFa0gsT0FBTyxDQUFDWSxTQUFTLENBQUMsQ0FBQztnQkFDM0JoRCxXQUFXLEVBQUV5QixLQUFJLENBQUN6QixXQUFXLENBQUNvQyxPQUFPLENBQUM7Z0JBQ3RDYSxHQUFHLEdBQUFmLFNBQUEsR0FBRUUsT0FBTyxjQUFBRixTQUFBLHVCQUFQQSxTQUFBLENBQVM3RCxJQUFJLENBQUMsQ0FBQyxDQUFDNEUsR0FBRyxDQUFDLFVBQUNsTCxDQUFDO2tCQUFBLElBQUFtTCxtQkFBQTtrQkFBQSxPQUFNO29CQUMvQjNCLElBQUksRUFBRXhKLENBQUMsQ0FBQ29MLFNBQVMsQ0FBQzVCLElBQUk7b0JBQ3RCckcsTUFBTSxHQUFBZ0ksbUJBQUEsR0FBRW5MLENBQUMsQ0FBQ29MLFNBQVMsQ0FBQ2pJLE1BQU0sY0FBQWdJLG1CQUFBLGNBQUFBLG1CQUFBLEdBQUksS0FBSztvQkFDbkNsRCxXQUFXLEVBQUV5QixLQUFJLENBQUN6QixXQUFXLENBQUNqSSxDQUFDLENBQUNxSyxPQUFPO2tCQUN6QyxDQUFDO2dCQUFBLENBQUMsQ0FBQztnQkFDSHRCLE1BQU0sRUFBRyxVQUFDQSxNQUFNO2tCQUFBLE9BQ2Q1SSxNQUFNLENBQUNnRixJQUFJLENBQUM0RCxNQUFNLENBQUMsQ0FBQ21DLEdBQUcsQ0FBQyxVQUFDeEMsS0FBSztvQkFBQSxPQUFNO3NCQUNsQzlELElBQUksRUFBRThELEtBQUs7c0JBQ1huSSxLQUFLLEVBQUV3SSxNQUFNLENBQUNMLEtBQUs7b0JBQ3JCLENBQUM7a0JBQUEsQ0FBQyxDQUFDO2dCQUFBLEVBQUVnQixLQUFJLENBQUNYLE1BQU0sQ0FBQ3NCLE9BQU8sQ0FBQyxDQUFDO2dCQUM1QlMsV0FBVyxFQUFFUjtjQUNmLENBQUMsQ0FBQyxDQUNEZSxHQUFHLENBQUMsQ0FBQztZQUFDO1lBQUE7Y0FBQSxPQUFBYixTQUFBLENBQUEvRSxJQUFBO1VBQUE7UUFBQSxHQUFBb0UsT0FBQTtNQUFBLENBQ1Y7TUFBQSxpQkFBQXlCLEVBQUEsRUFBQUMsR0FBQSxFQUFBQyxHQUFBO1FBQUEsT0FBQTVCLElBQUEsQ0FBQS9DLEtBQUEsT0FBQUQsU0FBQTtNQUFBO0lBQUEsSUFBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRHZGLGNBQU8sQ0FBQ3ZCLFNBQVMsQ0FBQ2dMLFdBQVcsR0FBRyxVQUM5QlQsT0FBK0IsRUFDL0JDLElBQWtCLEVBQ2xCO0VBQ0EsSUFBSSxPQUFPRCxPQUFPLEtBQUssV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0VBRXpFLElBQUk3SSxPQUFBLENBQU80SyxPQUFPLE1BQUssUUFBUSxJQUFJQSxPQUFPLFlBQVloSixjQUFPLEVBQUU7SUFDN0QsSUFBSSxPQUFPaUosSUFBSSxLQUFLLFdBQVcsRUFBRTtNQUMvQixPQUFPRCxPQUFPLENBQUMvQixJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDMUM7SUFFQSxJQUFJN0ksT0FBQSxDQUFPNkssSUFBSSxNQUFLLFFBQVEsRUFBRSxNQUFNLElBQUlySCxLQUFLLENBQUMsbUJBQW1CLENBQUM7SUFDbEUsSUFBSSxDQUFDdUYsT0FBTyxDQUFDLG1CQUFtQixFQUFFOEIsSUFBSSxDQUFDO0lBQ3ZDLE9BQU9ELE9BQU87RUFDaEI7RUFFQSxJQUFJNUssT0FBQSxDQUFPNEssT0FBTyxNQUFLLFFBQVEsRUFBRTtJQUMvQixJQUFJLENBQUM3QixPQUFPLENBQUMsbUJBQW1CLEVBQUU2QixPQUFPLENBQUM7SUFDMUMsT0FBTyxJQUFJO0VBQ2I7RUFFQSxNQUFNLElBQUlwSCxLQUFLLENBQUMsbUJBQW1CLENBQUM7QUFDdEMsQ0FBQztBQUVENUIsY0FBTyxDQUFDdkIsU0FBUyxDQUFDMkwsY0FBYyxHQUFHLFVBQVVwQixPQUFpQixFQUFXO0VBQ3ZFLElBQUksT0FBT0EsT0FBTyxLQUFLLFdBQVcsRUFDaEMsT0FBTyxPQUFPLElBQUksQ0FBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLFdBQVc7RUFFOUQsT0FBTyxPQUFPK0IsT0FBTyxDQUFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssV0FBVztBQUNqRSxDQUFDO0FBRURqSCxjQUFPLENBQUN2QixTQUFTLENBQUM0TCxtQkFBbUIsR0FBRyxVQUN0Q3pDLEdBQWEsRUFDaUM7RUFBQSxJQUFBMEMsSUFBQTtJQUFBQyxNQUFBO0VBQzlDM0MsR0FBRyxJQUFBMEMsSUFBQSxHQUFHMUMsR0FBRyxjQUFBMEMsSUFBQSxjQUFBQSxJQUFBLEdBQUksSUFBSTtFQUNqQixJQUFNRSxRQUFRLEdBQUc1QyxHQUFHLENBQUM2QyxPQUFPLENBQUMsQ0FBQztFQUM5QixPQUFPRCxRQUFRLENBQ1pYLEdBQUcsQ0FBQyxVQUFDeEssQ0FBQztJQUFBLE9BQU07TUFBRW9LLFdBQVcsRUFBRWMsTUFBSSxDQUFDZCxXQUFXLENBQUNwSyxDQUFDLENBQUM7TUFBRXVJLEdBQUcsRUFBRXZJO0lBQUUsQ0FBQztFQUFBLENBQUMsQ0FBQyxDQUMxRGlLLE1BQU0sQ0FBQyxVQUFDeEksQ0FBQztJQUFBLE9BQUssQ0FBQyxDQUFDQSxDQUFDLENBQUMySSxXQUFXO0VBQUEsRUFBQztBQUluQyxDQUFDIn0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzaWMiLCJyZXF1aXJlIiwidmVyc2lvbiIsIkNvbnRleHQiLCJwcm90b3R5cGUiLCJkZXNjcmlwdGlvbiIsImxlbmd0aCIsImRhdGEiLCJFcnJvciIsInNldERhdGEiLCJmaWVsZCIsImFyZzAiLCJhcmcxIiwiYXJnMiIsImZpZWxkcyIsInVuZGVmaW5lZCIsImN0eCIsInVzZUluZm8iLCJvcHRpb25zIiwicGF0aCIsImFueSIsInVzZSIsInJlcSIsInJlcyIsIl9uZXh0Iiwic3RhY2siLCJhcGkiLCJjb250ZXh0U3RhY2siLCJjb250ZXh0IiwiZmlsdGVyIiwiZSIsInR5cGUiLCJnZXRQYXRoIiwiJDQwNCIsImRlY2wiLCJkZWNsYXJhdGlvbiIsInN0YXR1cyIsImpzb24iLCJtZXRob2QiLCJnZXRNZXRob2QiLCJtYXAiLCJpbmZvIiwiY29uZGl0aW9uIiwiT2JqZWN0Iiwia2V5cyIsIm5hbWUiLCJ2YWx1ZSIsImVuZCIsImhhc0RlY2xhcmF0aW9uIiwiY29sbGVjdERlY2xhcmF0aW9ucyIsImNvbnRleHRzIiwiY29sbGVjdCIsImMiLCJkIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZm8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHsgZGVjbGFyYXRpb24gfSBmcm9tIFwiLi4vZ2VuZXJhdG9yL2luZGV4XCI7XG5pbXBvcnQgeyAkNDA0LCBDb250ZXh0LCBDb250ZXh0Q2hpbGRDb25kaXRpb24gfSBmcm9tIFwiQHJzdGVyL2Jhc2ljXCI7XG5pbXBvcnQgeyBBbGxvd0FueVR5cGVJbmZvcm1hdGlvbiB9IGZyb20gXCJAcnN0ZXIvdHlwZXNcIjtcblxuY29uc3QgdmVyc2lvbiA9IFwiMC4xLjRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBEZWNsYXJhdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZXhwZWN0Qm9keT86IHtcbiAgICBba2V5OiBzdHJpbmddOiB7IHR5cGU6IEFsbG93QW55VHlwZUluZm9ybWF0aW9uOyByZXF1aXJlZDogYm9vbGVhbiB9O1xuICB9O1xuICBleHBlY3RRdWVyeT86IHtcbiAgICBba2V5OiBzdHJpbmddOiB7IHR5cGU6IEFsbG93QW55VHlwZUluZm9ybWF0aW9uOyByZXF1aXJlZDogYm9vbGVhbiB9O1xuICB9O1xuICBleHBlY3RQYXJhbXM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogeyB0eXBlOiBBbGxvd0FueVR5cGVJbmZvcm1hdGlvbjsgcmVxdWlyZWQ6IGJvb2xlYW4gfTtcbiAgfTtcbiAgcmV0dXJuQm9keTogQWxsb3dBbnlUeXBlSW5mb3JtYXRpb247XG59XG5cbmRlY2xhcmUgbW9kdWxlIFwiQHJzdGVyL2Jhc2ljXCIge1xuICBpbnRlcmZhY2UgQ29udGV4dCB7XG4gICAgZGVzY3JpcHRpb24oKTogc3RyaW5nW107XG4gICAgZGVzY3JpcHRpb24oLi4uZGVzY3JpcHRpb246IHN0cmluZ1tdKTogQ29udGV4dDtcbiAgICBkZXNjcmlwdGlvbihjb250ZXh0OiBDb250ZXh0KTogc3RyaW5nW107XG5cbiAgICBmaWVsZChuYW1lOiBzdHJpbmcpOiBhbnk7XG4gICAgZmllbGQobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogQ29udGV4dDtcbiAgICBmaWVsZChjdHg6IENvbnRleHQsIG5hbWU6IHN0cmluZyk6IGFueTtcbiAgICBmaWVsZChjdHg6IENvbnRleHQsIG5hbWU6IHN0cmluZywgdmFsdWU6IGFueSk6IENvbnRleHQ7XG5cbiAgICBmaWVsZHMoKTogRmllbGRNYXA7XG4gICAgZmllbGRzKGN0eDogQ29udGV4dCk6IEZpZWxkTWFwO1xuXG4gICAgdXNlSW5mbyhvcHRpb25zPzogeyBwYXRoPzogc3RyaW5nIH0pOiB2b2lkO1xuXG4gICAgZGVjbGFyYXRpb24oKTogRGVjbGFyYXRpb247XG4gICAgZGVjbGFyYXRpb24oZGVjbDogRGVjbGFyYXRpb24pOiBDb250ZXh0O1xuICAgIGRlY2xhcmF0aW9uKGNvbnRleHQ6IENvbnRleHQpOiBEZWNsYXJhdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBkZWNsYXJhdGlvbihjb250ZXh0OiBDb250ZXh0LCBkZWNsOiBEZWNsYXJhdGlvbik6IENvbnRleHQ7XG4gICAgZGVjbGFyYXRpb24oXG4gICAgICBjb250ZXh0PzogQ29udGV4dCB8IERlY2xhcmF0aW9uLFxuICAgICAgZGVjbD86IERlY2xhcmF0aW9uXG4gICAgKTogQ29udGV4dCB8IERlY2xhcmF0aW9uIHwgdW5kZWZpbmVkIHwgc3RyaW5nW107XG5cbiAgICBoYXNEZWNsYXJhdGlvbigpOiBib29sZWFuO1xuICAgIGhhc0RlY2xhcmF0aW9uKGNvbnRleHQ6IENvbnRleHQpOiBib29sZWFuO1xuICAgIGhhc0RlY2xhcmF0aW9uKGNvbnRleHQ/OiBDb250ZXh0KTogYm9vbGVhbjtcblxuICAgIGNvbGxlY3REZWNsYXJhdGlvbnMoXG4gICAgICBjdHg/OiBDb250ZXh0XG4gICAgKTogeyBkZWNsYXJhdGlvbjogRGVjbGFyYXRpb247IGN0eDogQ29udGV4dCB9W107XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWVsZE1hcCB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuQ29udGV4dC5wcm90b3R5cGUuZGVzY3JpcHRpb24gPSBmdW5jdGlvbiAoLi4uZGVzY3JpcHRpb246IGFueVtdKTogYW55IHtcbiAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCA9PSAwKSByZXR1cm4gdGhpcy5kYXRhKFwiQGluZm8vZGVzY3JpcHRpb25cIikgPz8gW107XG4gIGlmIChkZXNjcmlwdGlvblswXSBpbnN0YW5jZW9mIENvbnRleHQpIHtcbiAgICBpZiAoZGVzY3JpcHRpb24ubGVuZ3RoICE9PSAxKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGFkZCBkZXNjcmlwdGlvbiB0byBhbm90aGVyIGNvbnRleHRcIik7XG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uWzBdLmRhdGEoXCJAaW5mby9kZXNjcmlwdGlvblwiKSA/PyBbXTtcbiAgfVxuXG4gIHRoaXMuc2V0RGF0YShcIkBpbmZvL2Rlc2NyaXB0aW9uXCIsIFtcbiAgICAuLi4oKHRoaXMuZGF0YShcIkBpbmZvL2Rlc2NyaXB0aW9uXCIpIGFzIHVua25vd25bXSkgPz8gW10pLFxuICAgIC4uLmRlc2NyaXB0aW9uLFxuICBdKTtcbn07XG5cbkNvbnRleHQucHJvdG90eXBlLmZpZWxkID0gZnVuY3Rpb24gKGFyZzA6IGFueSwgYXJnMT86IGFueSwgYXJnMj86IGFueSk6IGFueSB7XG4gIGlmICh0eXBlb2YgYXJnMCA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmICh0eXBlb2YgYXJnMSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5kYXRhKGBAaW5mby9maWVsZHNgKSBhcyBGaWVsZE1hcDtcbiAgICAgIGlmICghZmllbGRzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGZpZWxkc1thcmcwXTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZHMgPSAodGhpcy5kYXRhKGBAaW5mby9maWVsZHNgKSBhcyBGaWVsZE1hcCkgPz8gKHt9IGFzIEZpZWxkTWFwKTtcbiAgICBmaWVsZHNbYXJnMF0gPSBhcmcxO1xuICAgIHRoaXMuc2V0RGF0YShgQGluZm8vZmllbGRzYCwgZmllbGRzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmICh0eXBlb2YgYXJnMSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmICh0eXBlb2YgYXJnMiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgY29uc3QgZmllbGRzID0gYXJnMC5kYXRhKGBAaW5mby9maWVsZHNgKTtcbiAgICAgIGlmICghZmllbGRzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGZpZWxkc1thcmcxXTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWVsZHMgPSBhcmcwLmRhdGEoYEBpbmZvL2ZpZWxkc2ApID8/IHt9O1xuICAgIGZpZWxkc1thcmcxXSA9IGFyZzI7XG4gICAgYXJnMC5zZXREYXRhKGBAaW5mby9maWVsZHNgLCBmaWVsZHMpO1xuICAgIHJldHVybiBhcmcwO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudHNcIik7XG59O1xuXG5Db250ZXh0LnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbiAoY3R4PzogQ29udGV4dCk6IEZpZWxkTWFwIHtcbiAgaWYgKHR5cGVvZiBjdHggPT09IFwidW5kZWZpbmVkXCIpIHJldHVybiB0aGlzLmRhdGEoXCJAaW5mby9maWVsZHNcIikgPz8ge307XG4gIHJldHVybiBjdHguZGF0YShcIkBpbmZvL2ZpZWxkc1wiKSA/PyB7fTtcbn07XG5cbkNvbnRleHQucHJvdG90eXBlLnVzZUluZm8gPSBmdW5jdGlvbiAob3B0aW9ucz86IHsgcGF0aD86IHN0cmluZyB9KSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zID8/IHt9O1xuICBjb25zdCBwYXRoID0gb3B0aW9ucy5wYXRoID8/IFwiL2luZm9cIjtcblxuICB0aGlzLmFueShwYXRoLCBmdW5jdGlvbiAoY3R4KSB7XG4gICAgdGhpcy5kZXNjcmlwdGlvbihcbiAgICAgIFwiVGhpcyBtb2R1bGUgY2FuIGJlIHVzZWQgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBBUElcIlxuICAgICk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbihcbiAgICAgIFwiSnVzdCBjYWxsIC9pbmZvL1twYXRoXSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBtb2R1bGVcIlxuICAgICk7XG5cbiAgICB0aGlzLmZpZWxkKFwidmVyc2lvblwiLCB2ZXJzaW9uKTtcblxuICAgIHRoaXMudXNlKGFzeW5jIChyZXEsIHJlcywgX25leHQpID0+IHtcbiAgICAgIGNvbnN0IHN0YWNrID0gYXdhaXQgY3R4LmFwaS5jb250ZXh0U3RhY2socmVxLCByZXMpO1xuICAgICAgbGV0IGNvbnRleHQgPSAoXG4gICAgICAgIHN0YWNrW3N0YWNrLmxlbmd0aCAtIDJdPy5maWx0ZXIoXG4gICAgICAgICAgLy8gVE9ETzogc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0gbm9ybWFsbHkgc2hvdWxkIGJlIHRoZSBhY3Rpb24gLyB1c2UgZnVuY3Rpb24uIEJ1dCBpdCBjb3VsZCBiZSBhIGNvbmRpdGlvbi4gSWYgaXQgaXMgYSBjb25kaXRpb24sIHRoZSBjb250ZXh0IGlzIHVzZWxlc3MgYXMgaXQgZG9lcyBub3RoaW5nLiBIb3cgdG8gaGFuZGxlIHRoaXM/XG4gICAgICAgICAgLy8gVE9ETzogR2VuZXJhbGx5IHRoaW5rIGFib3V0IGNyaXRlcmlhIHdoYXQgY29udGV4dCB0byBjaG9vc2UgaWYgbXVsdGlwbGUgcm91dGVzIG1hdGNoIHdoaWNoIHNob3VsZCB0aGVvcmV0aWNhbGx5IGJlIHBvc3NpYmxlXG4gICAgICAgICAgKGUpID0+IGUudHlwZSA9PT0gXCJjb25kaXRpb25cIlxuICAgICAgICApWzBdIGFzIENvbnRleHRDaGlsZENvbmRpdGlvblxuICAgICAgKT8uY29udGV4dCBhcyBDb250ZXh0O1xuXG4gICAgICBpZiAocmVxLnBhdGggPT0gXCIvXCIgfHwgcmVxLnBhdGggPT0gXCJcIikge1xuICAgICAgICBjb250ZXh0ID0gY3R4LmFwaTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAhY29udGV4dCB8fFxuICAgICAgICAocmVxLnBhdGggIT09IGNvbnRleHQ/LmdldFBhdGgoKSAmJlxuICAgICAgICAgIHJlcS5wYXRoICE9PSBjb250ZXh0Py5nZXRQYXRoKCkgKyBcIi9cIilcbiAgICAgICkge1xuICAgICAgICB0aHJvdyAkNDA0KGBObyBjb250ZXh0IGZvdW5kIGZvciBwYXRoIFwiJHtyZXEucGF0aH1cImApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZWNsID0gY29udGV4dC5kZWNsYXJhdGlvbigpO1xuXG4gICAgICByZXNcbiAgICAgICAgLnN0YXR1cygyMDApXG4gICAgICAgIC5qc29uKHtcbiAgICAgICAgICBwYXRoOiBjb250ZXh0LmdldFBhdGgoKSxcbiAgICAgICAgICBtZXRob2Q6IGNvbnRleHQuZ2V0TWV0aG9kKCksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24oY29udGV4dCksXG4gICAgICAgICAgbWFwOiBjb250ZXh0Py5pbmZvKCkubWFwKChlKSA9PiAoe1xuICAgICAgICAgICAgcGF0aDogZS5jb25kaXRpb24ucGF0aCxcbiAgICAgICAgICAgIG1ldGhvZDogZS5jb25kaXRpb24ubWV0aG9kID8/IFwiYW55XCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5kZXNjcmlwdGlvbihlLmNvbnRleHQpLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgICBmaWVsZHM6ICgoZmllbGRzKSA9PlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzKS5tYXAoKGZpZWxkKSA9PiAoe1xuICAgICAgICAgICAgICBuYW1lOiBmaWVsZCxcbiAgICAgICAgICAgICAgdmFsdWU6IGZpZWxkc1tmaWVsZF0sXG4gICAgICAgICAgICB9KSkpKHRoaXMuZmllbGRzKGNvbnRleHQpKSxcbiAgICAgICAgICBkZWNsYXJhdGlvbjogZGVjbCxcbiAgICAgICAgfSlcbiAgICAgICAgLmVuZCgpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbkNvbnRleHQucHJvdG90eXBlLmRlY2xhcmF0aW9uID0gZnVuY3Rpb24gKFxuICB0aGlzOiBDb250ZXh0LFxuICBjb250ZXh0PzogQ29udGV4dCB8IERlY2xhcmF0aW9uLFxuICBkZWNsPzogRGVjbGFyYXRpb25cbikge1xuICBpZiAodHlwZW9mIGNvbnRleHQgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgcmV0dXJuIHRoaXMuZGF0YShcIkBpbmZvL2RlY2xhcmF0aW9uXCIpIGFzIERlY2xhcmF0aW9uO1xuXG4gIGlmICh0eXBlb2YgY29udGV4dCA9PT0gXCJvYmplY3RcIiAmJiBjb250ZXh0IGluc3RhbmNlb2YgQ29udGV4dCkge1xuICAgIGlmICh0eXBlb2YgZGVjbCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgcmV0dXJuIGNvbnRleHQuZGF0YShcIkBpbmZvL2RlY2xhcmF0aW9uXCIpIGFzIERlY2xhcmF0aW9uO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGVjbCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBhcmd1bWVudHNcIik7XG4gICAgdGhpcy5zZXREYXRhKFwiQGluZm8vZGVjbGFyYXRpb25cIiwgZGVjbCk7XG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH1cblxuICBpZiAodHlwZW9mIGNvbnRleHQgPT09IFwib2JqZWN0XCIpIHtcbiAgICB0aGlzLnNldERhdGEoXCJAaW5mby9kZWNsYXJhdGlvblwiLCBjb250ZXh0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXJndW1lbnRzXCIpO1xufSBhcyBhbnk7XG5cbkNvbnRleHQucHJvdG90eXBlLmhhc0RlY2xhcmF0aW9uID0gZnVuY3Rpb24gKGNvbnRleHQ/OiBDb250ZXh0KTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgY29udGV4dCA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuZGF0YShcIkBpbmZvL2RlY2xhcmF0aW9uXCIpICE9PSBcInVuZGVmaW5lZFwiO1xuXG4gIHJldHVybiB0eXBlb2YgY29udGV4dC5kYXRhKFwiQGluZm8vZGVjbGFyYXRpb25cIikgIT09IFwidW5kZWZpbmVkXCI7XG59O1xuXG5Db250ZXh0LnByb3RvdHlwZS5jb2xsZWN0RGVjbGFyYXRpb25zID0gZnVuY3Rpb24gKFxuICBjdHg/OiBDb250ZXh0XG4pOiB7IGRlY2xhcmF0aW9uOiBEZWNsYXJhdGlvbjsgY3R4OiBDb250ZXh0IH1bXSB7XG4gIGN0eCA9IGN0eCA/PyB0aGlzO1xuICBjb25zdCBjb250ZXh0cyA9IGN0eC5jb2xsZWN0KCk7XG4gIHJldHVybiBjb250ZXh0c1xuICAgIC5tYXAoKGMpID0+ICh7IGRlY2xhcmF0aW9uOiB0aGlzLmRlY2xhcmF0aW9uKGMpLCBjdHg6IGMgfSkpXG4gICAgLmZpbHRlcigoZCkgPT4gISFkLmRlY2xhcmF0aW9uKSBhcyB7XG4gICAgZGVjbGFyYXRpb246IERlY2xhcmF0aW9uO1xuICAgIGN0eDogQ29udGV4dDtcbiAgfVtdO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFEQTs7QUFJQSxNQUFNQyxPQUFPLEdBQUcsT0FBTztBQXVEdkJDLGNBQU8sQ0FBQ0MsU0FBUyxDQUFDQyxXQUFXLEdBQUcsVUFBVSxHQUFHQSxXQUFrQixFQUFPO0VBQ3BFLElBQUlBLFdBQVcsQ0FBQ0MsTUFBTSxJQUFJLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQ0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRTtFQUN4RSxJQUFJRixXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVlGLGNBQU8sRUFBRTtJQUNyQyxJQUFJRSxXQUFXLENBQUNDLE1BQU0sS0FBSyxDQUFDLEVBQzFCLE1BQU0sSUFBSUUsS0FBSyxDQUFDLDJDQUEyQyxDQUFDO0lBQzlELE9BQU9ILFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ0UsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRTtFQUN2RDtFQUVBLElBQUksQ0FBQ0UsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQ2hDLElBQUssSUFBSSxDQUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBa0IsRUFBRSxDQUFDLEVBQ3hELEdBQUdGLFdBQVcsQ0FDZixDQUFDO0FBQ0osQ0FBQztBQUVERixjQUFPLENBQUNDLFNBQVMsQ0FBQ00sS0FBSyxHQUFHLFVBQVVDLElBQVMsRUFBRUMsSUFBVSxFQUFFQyxJQUFVLEVBQU87RUFDMUUsSUFBSSxPQUFPRixJQUFJLEtBQUssUUFBUSxFQUFFO0lBQzVCLElBQUksT0FBT0MsSUFBSSxLQUFLLFdBQVcsRUFBRTtNQUMvQixNQUFNRSxNQUFNLEdBQUcsSUFBSSxDQUFDUCxJQUFJLENBQUUsY0FBYSxDQUFhO01BQ3BELElBQUksQ0FBQ08sTUFBTSxFQUFFLE9BQU9DLFNBQVM7TUFD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 |
{ | ||
"name": "@rster/info", | ||
"version": "0.1.5", | ||
"version": "0.1.6", | ||
"description": "RSTER is a toolset for REST Api creation", | ||
@@ -10,9 +10,25 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"@rster/basic": "^0.1.3", | ||
"@rster/common": "^0.1.1", | ||
"@rster/types": "^0.1.1", | ||
"@rster/basic": "^0.1.5", | ||
"@rster/common": "^0.1.2", | ||
"@rster/types": "^0.1.6", | ||
"debug": "^4.3.4" | ||
}, | ||
"devDependencies": { | ||
"@types/debug": "^4.1.8" | ||
"@babel/cli": "^7.23.0", | ||
"@babel/core": "^7.23.0", | ||
"@babel/plugin-proposal-class-properties": "^7.18.6", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.20.7", | ||
"@babel/preset-env": "^7.22.20", | ||
"@babel/preset-typescript": "^7.23.0", | ||
"@types/debug": "^4.1.8", | ||
"@types/jest": "^29.5.5", | ||
"@types/node": "^20.7.1", | ||
"@typescript-eslint/eslint-plugin": "^6.7.3", | ||
"@typescript-eslint/parser": "^6.7.3", | ||
"babel-jest": "^29.7.0", | ||
"eslint": "^8.50.0", | ||
"eslint-plugin-jest": "^27.4.0", | ||
"jest": "^29.7.0", | ||
"source-map-support": "^0.5.21", | ||
"typescript": "^5.2.2" | ||
}, | ||
@@ -25,3 +41,4 @@ "scripts": { | ||
"build:types": "tsc --emitDeclarationOnly", | ||
"build:js": "babel src --out-dir lib --extensions \".ts,.tsx\" --source-maps inline" | ||
"build:js": "babel src --out-dir lib --extensions \".ts,.tsx\" --source-maps inline", | ||
"upgrade": "npm install @rster/basic@latest @rster/common@latest @rster/types@latest" | ||
}, | ||
@@ -31,3 +48,6 @@ "repository": { | ||
"url": "https://github.com/nsc-de/rster" | ||
}, | ||
"publishConfig": { | ||
"access": "public" | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
29852
17
177
2
0
Updated@rster/basic@^0.1.5
Updated@rster/common@^0.1.2
Updated@rster/types@^0.1.6