@excalidraw/excalidraw
Version:
Excalidraw as a React component
84 lines (67 loc) • 4.42 MB
JavaScript
/*
* 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/).
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("react"), require("react-dom"));
else if(typeof define === 'function' && define.amd)
define(["react", "react-dom"], factory);
else if(typeof exports === 'object')
exports["Excalidraw"] = factory(require("react"), require("react-dom"));
else
root["Excalidraw"] = factory(root["React"], root["ReactDOM"]);
})(globalThis, function(__WEBPACK_EXTERNAL_MODULE_react__, __WEBPACK_EXTERNAL_MODULE_react_dom__) {
return /******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "../../../node_modules/clsx/dist/clsx.m.js":
/*!*************************************************!*\
!*** ../../../node_modules/clsx/dist/clsx.m.js ***!
\*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction toVal(mix) {\n\tvar k, y, str='';\n\n\tif (typeof mix === 'string' || typeof mix === 'number') {\n\t\tstr += mix;\n\t} else if (typeof mix === 'object') {\n\t\tif (Array.isArray(mix)) {\n\t\t\tfor (k=0; k < mix.length; k++) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tif (y = toVal(mix[k])) {\n\t\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\t\tstr += y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (k in mix) {\n\t\t\t\tif (mix[k]) {\n\t\t\t\t\tstr && (str += ' ');\n\t\t\t\t\tstr += k;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn str;\n}\n\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__() {\n\tvar i=0, tmp, x, str='';\n\twhile (i < arguments.length) {\n\t\tif (tmp = arguments[i++]) {\n\t\t\tif (x = toVal(tmp)) {\n\t\t\t\tstr && (str += ' ');\n\t\t\t\tstr += x\n\t\t\t}\n\t\t}\n\t}\n\treturn str;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nsc3gvZGlzdC9jbHN4Lm0uanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLGFBQWEsZ0JBQWdCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw2QkFBZSxzQ0FBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jbHN4L2Rpc3QvY2xzeC5tLmpzPzMwZjYiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gdG9WYWwobWl4KSB7XG5cdHZhciBrLCB5LCBzdHI9Jyc7XG5cblx0aWYgKHR5cGVvZiBtaXggPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBtaXggPT09ICdudW1iZXInKSB7XG5cdFx0c3RyICs9IG1peDtcblx0fSBlbHNlIGlmICh0eXBlb2YgbWl4ID09PSAnb2JqZWN0Jykge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KG1peCkpIHtcblx0XHRcdGZvciAoaz0wOyBrIDwgbWl4Lmxlbmd0aDsgaysrKSB7XG5cdFx0XHRcdGlmIChtaXhba10pIHtcblx0XHRcdFx0XHRpZiAoeSA9IHRvVmFsKG1peFtrXSkpIHtcblx0XHRcdFx0XHRcdHN0ciAmJiAoc3RyICs9ICcgJyk7XG5cdFx0XHRcdFx0XHRzdHIgKz0geTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yIChrIGluIG1peCkge1xuXHRcdFx0XHRpZiAobWl4W2tdKSB7XG5cdFx0XHRcdFx0c3RyICYmIChzdHIgKz0gJyAnKTtcblx0XHRcdFx0XHRzdHIgKz0gaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiBzdHI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcblx0dmFyIGk9MCwgdG1wLCB4LCBzdHI9Jyc7XG5cdHdoaWxlIChpIDwgYXJndW1lbnRzLmxlbmd0aCkge1xuXHRcdGlmICh0bXAgPSBhcmd1bWVudHNbaSsrXSkge1xuXHRcdFx0aWYgKHggPSB0b1ZhbCh0bXApKSB7XG5cdFx0XHRcdHN0ciAmJiAoc3RyICs9ICcgJyk7XG5cdFx0XHRcdHN0ciArPSB4XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzdHI7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/clsx/dist/clsx.m.js\n");
/***/ }),
/***/ "../../../node_modules/object-assign/index.js":
/*!****************************************************!*\
!*** ../../../node_modules/object-assign/index.js ***!
\****************************************************/
/***/ ((module) => {
"use strict";
eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL29iamVjdC1hc3NpZ24vaW5kZXguanMuanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFYTtBQUNiO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esa0JBQWtCLFFBQVE7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILGtDQUFrQztBQUNsQztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUJBQWlCLHNCQUFzQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsb0JBQW9CO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9vYmplY3QtYXNzaWduL2luZGV4LmpzPzNlMTMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiovXG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/object-assign/index.js\n");
/***/ }),
/***/ "../../../node_modules/path-data-parser/lib/absolutize.js":
/*!****************************************************************!*\
!*** ../../../node_modules/path-data-parser/lib/absolutize.js ***!
\****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"absolutize\": () => (/* binding */ absolutize)\n/* harmony export */ });\n// Translate relative commands to absolute commands\nfunction absolutize(segments) {\n let cx = 0, cy = 0;\n let subx = 0, suby = 0;\n const out = [];\n for (const { key, data } of segments) {\n switch (key) {\n case 'M':\n out.push({ key: 'M', data: [...data] });\n [cx, cy] = data;\n [subx, suby] = data;\n break;\n case 'm':\n cx += data[0];\n cy += data[1];\n out.push({ key: 'M', data: [cx, cy] });\n subx = cx;\n suby = cy;\n break;\n case 'L':\n out.push({ key: 'L', data: [...data] });\n [cx, cy] = data;\n break;\n case 'l':\n cx += data[0];\n cy += data[1];\n out.push({ key: 'L', data: [cx, cy] });\n break;\n case 'C':\n out.push({ key: 'C', data: [...data] });\n cx = data[4];\n cy = data[5];\n break;\n case 'c': {\n const newdata = data.map((d, i) => (i % 2) ? (d + cy) : (d + cx));\n out.push({ key: 'C', data: newdata });\n cx = newdata[4];\n cy = newdata[5];\n break;\n }\n case 'Q':\n out.push({ key: 'Q', data: [...data] });\n cx = data[2];\n cy = data[3];\n break;\n case 'q': {\n const newdata = data.map((d, i) => (i % 2) ? (d + cy) : (d + cx));\n out.push({ key: 'Q', data: newdata });\n cx = newdata[2];\n cy = newdata[3];\n break;\n }\n case 'A':\n out.push({ key: 'A', data: [...data] });\n cx = data[5];\n cy = data[6];\n break;\n case 'a':\n cx += data[5];\n cy += data[6];\n out.push({ key: 'A', data: [data[0], data[1], data[2], data[3], data[4], cx, cy] });\n break;\n case 'H':\n out.push({ key: 'H', data: [...data] });\n cx = data[0];\n break;\n case 'h':\n cx += data[0];\n out.push({ key: 'H', data: [cx] });\n break;\n case 'V':\n out.push({ key: 'V', data: [...data] });\n cy = data[0];\n break;\n case 'v':\n cy += data[0];\n out.push({ key: 'V', data: [cy] });\n break;\n case 'S':\n out.push({ key: 'S', data: [...data] });\n cx = data[2];\n cy = data[3];\n break;\n case 's': {\n const newdata = data.map((d, i) => (i % 2) ? (d + cy) : (d + cx));\n out.push({ key: 'S', data: newdata });\n cx = newdata[2];\n cy = newdata[3];\n break;\n }\n case 'T':\n out.push({ key: 'T', data: [...data] });\n cx = data[0];\n cy = data[1];\n break;\n case 't':\n cx += data[0];\n cy += data[1];\n out.push({ key: 'T', data: [cx, cy] });\n break;\n case 'Z':\n case 'z':\n out.push({ key: 'Z', data: [] });\n cx = subx;\n cy = suby;\n break;\n }\n }\n return out;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BhdGgtZGF0YS1wYXJzZXIvbGliL2Fic29sdXRpemUuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsWUFBWTtBQUM3QjtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsMEJBQTBCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDBCQUEwQjtBQUNyRDtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHlCQUF5QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHlCQUF5QjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsdUVBQXVFO0FBQ2xHO0FBQ0E7QUFDQSwyQkFBMkIsMkJBQTJCO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQjtBQUNqRDtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixzQkFBc0I7QUFDakQ7QUFDQTtBQUNBLDJCQUEyQiwyQkFBMkI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQix5QkFBeUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiwyQkFBMkI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDBCQUEwQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsb0JBQW9CO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYXRoLWRhdGEtcGFyc2VyL2xpYi9hYnNvbHV0aXplLmpzPzQwM2UiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVHJhbnNsYXRlIHJlbGF0aXZlIGNvbW1hbmRzIHRvIGFic29sdXRlIGNvbW1hbmRzXG5leHBvcnQgZnVuY3Rpb24gYWJzb2x1dGl6ZShzZWdtZW50cykge1xuICAgIGxldCBjeCA9IDAsIGN5ID0gMDtcbiAgICBsZXQgc3VieCA9IDAsIHN1YnkgPSAwO1xuICAgIGNvbnN0IG91dCA9IFtdO1xuICAgIGZvciAoY29uc3QgeyBrZXksIGRhdGEgfSBvZiBzZWdtZW50cykge1xuICAgICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgb3V0LnB1c2goeyBrZXk6ICdNJywgZGF0YTogWy4uLmRhdGFdIH0pO1xuICAgICAgICAgICAgICAgIFtjeCwgY3ldID0gZGF0YTtcbiAgICAgICAgICAgICAgICBbc3VieCwgc3VieV0gPSBkYXRhO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICAgICAgY3ggKz0gZGF0YVswXTtcbiAgICAgICAgICAgICAgICBjeSArPSBkYXRhWzFdO1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnTScsIGRhdGE6IFtjeCwgY3ldIH0pO1xuICAgICAgICAgICAgICAgIHN1YnggPSBjeDtcbiAgICAgICAgICAgICAgICBzdWJ5ID0gY3k7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdMJzpcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7IGtleTogJ0wnLCBkYXRhOiBbLi4uZGF0YV0gfSk7XG4gICAgICAgICAgICAgICAgW2N4LCBjeV0gPSBkYXRhO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbCc6XG4gICAgICAgICAgICAgICAgY3ggKz0gZGF0YVswXTtcbiAgICAgICAgICAgICAgICBjeSArPSBkYXRhWzFdO1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnTCcsIGRhdGE6IFtjeCwgY3ldIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQyc6XG4gICAgICAgICAgICAgICAgb3V0LnB1c2goeyBrZXk6ICdDJywgZGF0YTogWy4uLmRhdGFdIH0pO1xuICAgICAgICAgICAgICAgIGN4ID0gZGF0YVs0XTtcbiAgICAgICAgICAgICAgICBjeSA9IGRhdGFbNV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld2RhdGEgPSBkYXRhLm1hcCgoZCwgaSkgPT4gKGkgJSAyKSA/IChkICsgY3kpIDogKGQgKyBjeCkpO1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnQycsIGRhdGE6IG5ld2RhdGEgfSk7XG4gICAgICAgICAgICAgICAgY3ggPSBuZXdkYXRhWzRdO1xuICAgICAgICAgICAgICAgIGN5ID0gbmV3ZGF0YVs1XTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ1EnOlxuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnUScsIGRhdGE6IFsuLi5kYXRhXSB9KTtcbiAgICAgICAgICAgICAgICBjeCA9IGRhdGFbMl07XG4gICAgICAgICAgICAgICAgY3kgPSBkYXRhWzNdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncSc6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdkYXRhID0gZGF0YS5tYXAoKGQsIGkpID0+IChpICUgMikgPyAoZCArIGN5KSA6IChkICsgY3gpKTtcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7IGtleTogJ1EnLCBkYXRhOiBuZXdkYXRhIH0pO1xuICAgICAgICAgICAgICAgIGN4ID0gbmV3ZGF0YVsyXTtcbiAgICAgICAgICAgICAgICBjeSA9IG5ld2RhdGFbM107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdBJzpcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7IGtleTogJ0EnLCBkYXRhOiBbLi4uZGF0YV0gfSk7XG4gICAgICAgICAgICAgICAgY3ggPSBkYXRhWzVdO1xuICAgICAgICAgICAgICAgIGN5ID0gZGF0YVs2XTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2EnOlxuICAgICAgICAgICAgICAgIGN4ICs9IGRhdGFbNV07XG4gICAgICAgICAgICAgICAgY3kgKz0gZGF0YVs2XTtcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7IGtleTogJ0EnLCBkYXRhOiBbZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSwgZGF0YVszXSwgZGF0YVs0XSwgY3gsIGN5XSB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnSCcsIGRhdGE6IFsuLi5kYXRhXSB9KTtcbiAgICAgICAgICAgICAgICBjeCA9IGRhdGFbMF07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdoJzpcbiAgICAgICAgICAgICAgICBjeCArPSBkYXRhWzBdO1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnSCcsIGRhdGE6IFtjeF0gfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7IGtleTogJ1YnLCBkYXRhOiBbLi4uZGF0YV0gfSk7XG4gICAgICAgICAgICAgICAgY3kgPSBkYXRhWzBdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndic6XG4gICAgICAgICAgICAgICAgY3kgKz0gZGF0YVswXTtcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7IGtleTogJ1YnLCBkYXRhOiBbY3ldIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUyc6XG4gICAgICAgICAgICAgICAgb3V0LnB1c2goeyBrZXk6ICdTJywgZGF0YTogWy4uLmRhdGFdIH0pO1xuICAgICAgICAgICAgICAgIGN4ID0gZGF0YVsyXTtcbiAgICAgICAgICAgICAgICBjeSA9IGRhdGFbM107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld2RhdGEgPSBkYXRhLm1hcCgoZCwgaSkgPT4gKGkgJSAyKSA/IChkICsgY3kpIDogKGQgKyBjeCkpO1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnUycsIGRhdGE6IG5ld2RhdGEgfSk7XG4gICAgICAgICAgICAgICAgY3ggPSBuZXdkYXRhWzJdO1xuICAgICAgICAgICAgICAgIGN5ID0gbmV3ZGF0YVszXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ1QnOlxuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnVCcsIGRhdGE6IFsuLi5kYXRhXSB9KTtcbiAgICAgICAgICAgICAgICBjeCA9IGRhdGFbMF07XG4gICAgICAgICAgICAgICAgY3kgPSBkYXRhWzFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndCc6XG4gICAgICAgICAgICAgICAgY3ggKz0gZGF0YVswXTtcbiAgICAgICAgICAgICAgICBjeSArPSBkYXRhWzFdO1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnVCcsIGRhdGE6IFtjeCwgY3ldIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnWic6XG4gICAgICAgICAgICBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7IGtleTogJ1onLCBkYXRhOiBbXSB9KTtcbiAgICAgICAgICAgICAgICBjeCA9IHN1Yng7XG4gICAgICAgICAgICAgICAgY3kgPSBzdWJ5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/absolutize.js\n");
/***/ }),
/***/ "../../../node_modules/path-data-parser/lib/index.js":
/*!***********************************************************!*\
!*** ../../../node_modules/path-data-parser/lib/index.js ***!
\***********************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parsePath\": () => (/* reexport safe */ _parser_js__WEBPACK_IMPORTED_MODULE_0__.parsePath),\n/* harmony export */ \"serialize\": () => (/* reexport safe */ _parser_js__WEBPACK_IMPORTED_MODULE_0__.serialize),\n/* harmony export */ \"absolutize\": () => (/* reexport safe */ _absolutize_js__WEBPACK_IMPORTED_MODULE_1__.absolutize),\n/* harmony export */ \"normalize\": () => (/* reexport safe */ _normalize_js__WEBPACK_IMPORTED_MODULE_2__.normalize)\n/* harmony export */ });\n/* harmony import */ var _parser_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parser.js */ \"../../../node_modules/path-data-parser/lib/parser.js\");\n/* harmony import */ var _absolutize_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./absolutize.js */ \"../../../node_modules/path-data-parser/lib/absolutize.js\");\n/* harmony import */ var _normalize_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./normalize.js */ \"../../../node_modules/path-data-parser/lib/normalize.js\");\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BhdGgtZGF0YS1wYXJzZXIvbGliL2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBbUQ7QUFDTjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYXRoLWRhdGEtcGFyc2VyL2xpYi9pbmRleC5qcz8wOGM0Il0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IHBhcnNlUGF0aCwgc2VyaWFsaXplIH0gZnJvbSAnLi9wYXJzZXIuanMnO1xuZXhwb3J0IHsgYWJzb2x1dGl6ZSB9IGZyb20gJy4vYWJzb2x1dGl6ZS5qcyc7XG5leHBvcnQgeyBub3JtYWxpemUgfSBmcm9tICcuL25vcm1hbGl6ZS5qcyc7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/index.js\n");
/***/ }),
/***/ "../../../node_modules/path-data-parser/lib/normalize.js":
/*!***************************************************************!*\
!*** ../../../node_modules/path-data-parser/lib/normalize.js ***!
\***************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"normalize\": () => (/* binding */ normalize)\n/* harmony export */ });\n// Normalize path to include only M, L, C, and Z commands\nfunction normalize(segments) {\n const out = [];\n let lastType = '';\n let cx = 0, cy = 0;\n let subx = 0, suby = 0;\n let lcx = 0, lcy = 0;\n for (const { key, data } of segments) {\n switch (key) {\n case 'M':\n out.push({ key: 'M', data: [...data] });\n [cx, cy] = data;\n [subx, suby] = data;\n break;\n case 'C':\n out.push({ key: 'C', data: [...data] });\n cx = data[4];\n cy = data[5];\n lcx = data[2];\n lcy = data[3];\n break;\n case 'L':\n out.push({ key: 'L', data: [...data] });\n [cx, cy] = data;\n break;\n case 'H':\n cx = data[0];\n out.push({ key: 'L', data: [cx, cy] });\n break;\n case 'V':\n cy = data[0];\n out.push({ key: 'L', data: [cx, cy] });\n break;\n case 'S': {\n let cx1 = 0, cy1 = 0;\n if (lastType === 'C' || lastType === 'S') {\n cx1 = cx + (cx - lcx);\n cy1 = cy + (cy - lcy);\n }\n else {\n cx1 = cx;\n cy1 = cy;\n }\n out.push({ key: 'C', data: [cx1, cy1, ...data] });\n lcx = data[0];\n lcy = data[1];\n cx = data[2];\n cy = data[3];\n break;\n }\n case 'T': {\n const [x, y] = data;\n let x1 = 0, y1 = 0;\n if (lastType === 'Q' || lastType === 'T') {\n x1 = cx + (cx - lcx);\n y1 = cy + (cy - lcy);\n }\n else {\n x1 = cx;\n y1 = cy;\n }\n const cx1 = cx + 2 * (x1 - cx) / 3;\n const cy1 = cy + 2 * (y1 - cy) / 3;\n const cx2 = x + 2 * (x1 - x) / 3;\n const cy2 = y + 2 * (y1 - y) / 3;\n out.push({ key: 'C', data: [cx1, cy1, cx2, cy2, x, y] });\n lcx = x1;\n lcy = y1;\n cx = x;\n cy = y;\n break;\n }\n case 'Q': {\n const [x1, y1, x, y] = data;\n const cx1 = cx + 2 * (x1 - cx) / 3;\n const cy1 = cy + 2 * (y1 - cy) / 3;\n const cx2 = x + 2 * (x1 - x) / 3;\n const cy2 = y + 2 * (y1 - y) / 3;\n out.push({ key: 'C', data: [cx1, cy1, cx2, cy2, x, y] });\n lcx = x1;\n lcy = y1;\n cx = x;\n cy = y;\n break;\n }\n case 'A': {\n const r1 = Math.abs(data[0]);\n const r2 = Math.abs(data[1]);\n const angle = data[2];\n const largeArcFlag = data[3];\n const sweepFlag = data[4];\n const x = data[5];\n const y = data[6];\n if (r1 === 0 || r2 === 0) {\n out.push({ key: 'C', data: [cx, cy, x, y, x, y] });\n cx = x;\n cy = y;\n }\n else {\n if (cx !== x || cy !== y) {\n const curves = arcToCubicCurves(cx, cy, x, y, r1, r2, angle, largeArcFlag, sweepFlag);\n curves.forEach(function (curve) {\n out.push({ key: 'C', data: curve });\n });\n cx = x;\n cy = y;\n }\n }\n break;\n }\n case 'Z':\n out.push({ key: 'Z', data: [] });\n cx = subx;\n cy = suby;\n break;\n }\n lastType = key;\n }\n return out;\n}\nfunction degToRad(degrees) {\n return (Math.PI * degrees) / 180;\n}\nfunction rotate(x, y, angleRad) {\n const X = x * Math.cos(angleRad) - y * Math.sin(angleRad);\n const Y = x * Math.sin(angleRad) + y * Math.cos(angleRad);\n return [X, Y];\n}\nfunction arcToCubicCurves(x1, y1, x2, y2, r1, r2, angle, largeArcFlag, sweepFlag, recursive) {\n const angleRad = degToRad(angle);\n let params = [];\n let f1 = 0, f2 = 0, cx = 0, cy = 0;\n if (recursive) {\n [f1, f2, cx, cy] = recursive;\n }\n else {\n [x1, y1] = rotate(x1, y1, -angleRad);\n [x2, y2] = rotate(x2, y2, -angleRad);\n const x = (x1 - x2) / 2;\n const y = (y1 - y2) / 2;\n let h = (x * x) / (r1 * r1) + (y * y) / (r2 * r2);\n if (h > 1) {\n h = Math.sqrt(h);\n r1 = h * r1;\n r2 = h * r2;\n }\n const sign = (largeArcFlag === sweepFlag) ? -1 : 1;\n const r1Pow = r1 * r1;\n const r2Pow = r2 * r2;\n const left = r1Pow * r2Pow - r1Pow * y * y - r2Pow * x * x;\n const right = r1Pow * y * y + r2Pow * x * x;\n const k = sign * Math.sqrt(Math.abs(left / right));\n cx = k * r1 * y / r2 + (x1 + x2) / 2;\n cy = k * -r2 * x / r1 + (y1 + y2) / 2;\n f1 = Math.asin(parseFloat(((y1 - cy) / r2).toFixed(9)));\n f2 = Math.asin(parseFloat(((y2 - cy) / r2).toFixed(9)));\n if (x1 < cx) {\n f1 = Math.PI - f1;\n }\n if (x2 < cx) {\n f2 = Math.PI - f2;\n }\n if (f1 < 0) {\n f1 = Math.PI * 2 + f1;\n }\n if (f2 < 0) {\n f2 = Math.PI * 2 + f2;\n }\n if (sweepFlag && f1 > f2) {\n f1 = f1 - Math.PI * 2;\n }\n if (!sweepFlag && f2 > f1) {\n f2 = f2 - Math.PI * 2;\n }\n }\n let df = f2 - f1;\n if (Math.abs(df) > (Math.PI * 120 / 180)) {\n const f2old = f2;\n const x2old = x2;\n const y2old = y2;\n if (sweepFlag && f2 > f1) {\n f2 = f1 + (Math.PI * 120 / 180) * (1);\n }\n else {\n f2 = f1 + (Math.PI * 120 / 180) * (-1);\n }\n x2 = cx + r1 * Math.cos(f2);\n y2 = cy + r2 * Math.sin(f2);\n params = arcToCubicCurves(x2, y2, x2old, y2old, r1, r2, angle, 0, sweepFlag, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n const c1 = Math.cos(f1);\n const s1 = Math.sin(f1);\n const c2 = Math.cos(f2);\n const s2 = Math.sin(f2);\n const t = Math.tan(df / 4);\n const hx = 4 / 3 * r1 * t;\n const hy = 4 / 3 * r2 * t;\n const m1 = [x1, y1];\n const m2 = [x1 + hx * s1, y1 - hy * c1];\n const m3 = [x2 + hx * s2, y2 - hy * c2];\n const m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(params);\n }\n else {\n params = [m2, m3, m4].concat(params);\n const curves = [];\n for (let i = 0; i < params.length; i += 3) {\n const r1 = rotate(params[i][0], params[i][1], angleRad);\n const r2 = rotate(params[i + 1][0], params[i + 1][1], angleRad);\n const r3 = rotate(params[i + 2][0], params[i + 2][1], angleRad);\n curves.push([r1[0], r1[1], r2[0], r2[1], r3[0], r3[1]]);\n }\n return curves;\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BhdGgtZGF0YS1wYXJzZXIvbGliL25vcm1hbGl6ZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsWUFBWTtBQUM3QjtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiwyQkFBMkI7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDJCQUEyQjtBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiwwQkFBMEI7QUFDckQ7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLDBCQUEwQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHFDQUFxQztBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsNENBQTRDO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQiw0Q0FBNEM7QUFDdkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLHNDQUFzQztBQUNyRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1Qyx1QkFBdUI7QUFDOUQseUJBQXlCO0FBQ3pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLG9CQUFvQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1CQUFtQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9wYXRoLWRhdGEtcGFyc2VyL2xpYi9ub3JtYWxpemUuanM/MjJkYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOb3JtYWxpemUgcGF0aCB0byBpbmNsdWRlIG9ubHkgTSwgTCwgQywgYW5kIFogY29tbWFuZHNcbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoc2VnbWVudHMpIHtcbiAgICBjb25zdCBvdXQgPSBbXTtcbiAgICBsZXQgbGFzdFR5cGUgPSAnJztcbiAgICBsZXQgY3ggPSAwLCBjeSA9IDA7XG4gICAgbGV0IHN1YnggPSAwLCBzdWJ5ID0gMDtcbiAgICBsZXQgbGN4ID0gMCwgbGN5ID0gMDtcbiAgICBmb3IgKGNvbnN0IHsga2V5LCBkYXRhIH0gb2Ygc2VnbWVudHMpIHtcbiAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnTScsIGRhdGE6IFsuLi5kYXRhXSB9KTtcbiAgICAgICAgICAgICAgICBbY3gsIGN5XSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgW3N1YngsIHN1YnldID0gZGF0YTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnQycsIGRhdGE6IFsuLi5kYXRhXSB9KTtcbiAgICAgICAgICAgICAgICBjeCA9IGRhdGFbNF07XG4gICAgICAgICAgICAgICAgY3kgPSBkYXRhWzVdO1xuICAgICAgICAgICAgICAgIGxjeCA9IGRhdGFbMl07XG4gICAgICAgICAgICAgICAgbGN5ID0gZGF0YVszXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0wnOlxuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnTCcsIGRhdGE6IFsuLi5kYXRhXSB9KTtcbiAgICAgICAgICAgICAgICBbY3gsIGN5XSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdIJzpcbiAgICAgICAgICAgICAgICBjeCA9IGRhdGFbMF07XG4gICAgICAgICAgICAgICAgb3V0LnB1c2goeyBrZXk6ICdMJywgZGF0YTogW2N4LCBjeV0gfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdWJzpcbiAgICAgICAgICAgICAgICBjeSA9IGRhdGFbMF07XG4gICAgICAgICAgICAgICAgb3V0LnB1c2goeyBrZXk6ICdMJywgZGF0YTogW2N4LCBjeV0gfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTJzoge1xuICAgICAgICAgICAgICAgIGxldCBjeDEgPSAwLCBjeTEgPSAwO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0VHlwZSA9PT0gJ0MnIHx8IGxhc3RUeXBlID09PSAnUycpIHtcbiAgICAgICAgICAgICAgICAgICAgY3gxID0gY3ggKyAoY3ggLSBsY3gpO1xuICAgICAgICAgICAgICAgICAgICBjeTEgPSBjeSArIChjeSAtIGxjeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjeDEgPSBjeDtcbiAgICAgICAgICAgICAgICAgICAgY3kxID0gY3k7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnQycsIGRhdGE6IFtjeDEsIGN5MSwgLi4uZGF0YV0gfSk7XG4gICAgICAgICAgICAgICAgbGN4ID0gZGF0YVswXTtcbiAgICAgICAgICAgICAgICBsY3kgPSBkYXRhWzFdO1xuICAgICAgICAgICAgICAgIGN4ID0gZGF0YVsyXTtcbiAgICAgICAgICAgICAgICBjeSA9IGRhdGFbM107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdUJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IGRhdGE7XG4gICAgICAgICAgICAgICAgbGV0IHgxID0gMCwgeTEgPSAwO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0VHlwZSA9PT0gJ1EnIHx8IGxhc3RUeXBlID09PSAnVCcpIHtcbiAgICAgICAgICAgICAgICAgICAgeDEgPSBjeCArIChjeCAtIGxjeCk7XG4gICAgICAgICAgICAgICAgICAgIHkxID0gY3kgKyAoY3kgLSBsY3kpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgeDEgPSBjeDtcbiAgICAgICAgICAgICAgICAgICAgeTEgPSBjeTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgY3gxID0gY3ggKyAyICogKHgxIC0gY3gpIC8gMztcbiAgICAgICAgICAgICAgICBjb25zdCBjeTEgPSBjeSArIDIgKiAoeTEgLSBjeSkgLyAzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN4MiA9IHggKyAyICogKHgxIC0geCkgLyAzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN5MiA9IHkgKyAyICogKHkxIC0geSkgLyAzO1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnQycsIGRhdGE6IFtjeDEsIGN5MSwgY3gyLCBjeTIsIHgsIHldIH0pO1xuICAgICAgICAgICAgICAgIGxjeCA9IHgxO1xuICAgICAgICAgICAgICAgIGxjeSA9IHkxO1xuICAgICAgICAgICAgICAgIGN4ID0geDtcbiAgICAgICAgICAgICAgICBjeSA9IHk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdRJzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IFt4MSwgeTEsIHgsIHldID0gZGF0YTtcbiAgICAgICAgICAgICAgICBjb25zdCBjeDEgPSBjeCArIDIgKiAoeDEgLSBjeCkgLyAzO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN5MSA9IGN5ICsgMiAqICh5MSAtIGN5KSAvIDM7XG4gICAgICAgICAgICAgICAgY29uc3QgY3gyID0geCArIDIgKiAoeDEgLSB4KSAvIDM7XG4gICAgICAgICAgICAgICAgY29uc3QgY3kyID0geSArIDIgKiAoeTEgLSB5KSAvIDM7XG4gICAgICAgICAgICAgICAgb3V0LnB1c2goeyBrZXk6ICdDJywgZGF0YTogW2N4MSwgY3kxLCBjeDIsIGN5MiwgeCwgeV0gfSk7XG4gICAgICAgICAgICAgICAgbGN4ID0geDE7XG4gICAgICAgICAgICAgICAgbGN5ID0geTE7XG4gICAgICAgICAgICAgICAgY3ggPSB4O1xuICAgICAgICAgICAgICAgIGN5ID0geTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ0EnOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcjEgPSBNYXRoLmFicyhkYXRhWzBdKTtcbiAgICAgICAgICAgICAgICBjb25zdCByMiA9IE1hdGguYWJzKGRhdGFbMV0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFuZ2xlID0gZGF0YVsyXTtcbiAgICAgICAgICAgICAgICBjb25zdCBsYXJnZUFyY0ZsYWcgPSBkYXRhWzNdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHN3ZWVwRmxhZyA9IGRhdGFbNF07XG4gICAgICAgICAgICAgICAgY29uc3QgeCA9IGRhdGFbNV07XG4gICAgICAgICAgICAgICAgY29uc3QgeSA9IGRhdGFbNl07XG4gICAgICAgICAgICAgICAgaWYgKHIxID09PSAwIHx8IHIyID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnQycsIGRhdGE6IFtjeCwgY3ksIHgsIHksIHgsIHldIH0pO1xuICAgICAgICAgICAgICAgICAgICBjeCA9IHg7XG4gICAgICAgICAgICAgICAgICAgIGN5ID0geTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjeCAhPT0geCB8fCBjeSAhPT0geSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VydmVzID0gYXJjVG9DdWJpY0N1cnZlcyhjeCwgY3ksIHgsIHksIHIxLCByMiwgYW5nbGUsIGxhcmdlQXJjRmxhZywgc3dlZXBGbGFnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnZlcy5mb3JFYWNoKGZ1bmN0aW9uIChjdXJ2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dC5wdXNoKHsga2V5OiAnQycsIGRhdGE6IGN1cnZlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjeCA9IHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjeSA9IHk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICBvdXQucHVzaCh7IGtleTogJ1onLCBkYXRhOiBbXSB9KTtcbiAgICAgICAgICAgICAgICBjeCA9IHN1Yng7XG4gICAgICAgICAgICAgICAgY3kgPSBzdWJ5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RUeXBlID0ga2V5O1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gZGVnVG9SYWQoZGVncmVlcykge1xuICAgIHJldHVybiAoTWF0aC5QSSAqIGRlZ3JlZXMpIC8gMTgwO1xufVxuZnVuY3Rpb24gcm90YXRlKHgsIHksIGFuZ2xlUmFkKSB7XG4gICAgY29uc3QgWCA9IHggKiBNYXRoLmNvcyhhbmdsZVJhZCkgLSB5ICogTWF0aC5zaW4oYW5nbGVSYWQpO1xuICAgIGNvbnN0IFkgPSB4ICogTWF0aC5zaW4oYW5nbGVSYWQpICsgeSAqIE1hdGguY29zKGFuZ2xlUmFkKTtcbiAgICByZXR1cm4gW1gsIFldO1xufVxuZnVuY3Rpb24gYXJjVG9DdWJpY0N1cnZlcyh4MSwgeTEsIHgyLCB5MiwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcsIHJlY3Vyc2l2ZSkge1xuICAgIGNvbnN0IGFuZ2xlUmFkID0gZGVnVG9SYWQoYW5nbGUpO1xuICAgIGxldCBwYXJhbXMgPSBbXTtcbiAgICBsZXQgZjEgPSAwLCBmMiA9IDAsIGN4ID0gMCwgY3kgPSAwO1xuICAgIGlmIChyZWN1cnNpdmUpIHtcbiAgICAgICAgW2YxLCBmMiwgY3gsIGN5XSA9IHJlY3Vyc2l2ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIFt4MSwgeTFdID0gcm90YXRlKHgxLCB5MSwgLWFuZ2xlUmFkKTtcbiAgICAgICAgW3gyLCB5Ml0gPSByb3RhdGUoeDIsIHkyLCAtYW5nbGVSYWQpO1xuICAgICAgICBjb25zdCB4ID0gKHgxIC0geDIpIC8gMjtcbiAgICAgICAgY29uc3QgeSA9ICh5MSAtIHkyKSAvIDI7XG4gICAgICAgIGxldCBoID0gKHggKiB4KSAvIChyMSAqIHIxKSArICh5ICogeSkgLyAocjIgKiByMik7XG4gICAgICAgIGlmIChoID4gMSkge1xuICAgICAgICAgICAgaCA9IE1hdGguc3FydChoKTtcbiAgICAgICAgICAgIHIxID0gaCAqIHIxO1xuICAgICAgICAgICAgcjIgPSBoICogcjI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2lnbiA9IChsYXJnZUFyY0ZsYWcgPT09IHN3ZWVwRmxhZykgPyAtMSA6IDE7XG4gICAgICAgIGNvbnN0IHIxUG93ID0gcjEgKiByMTtcbiAgICAgICAgY29uc3QgcjJQb3cgPSByMiAqIHIyO1xuICAgICAgICBjb25zdCBsZWZ0ID0gcjFQb3cgKiByMlBvdyAtIHIxUG93ICogeSAqIHkgLSByMlBvdyAqIHggKiB4O1xuICAgICAgICBjb25zdCByaWdodCA9IHIxUG93ICogeSAqIHkgKyByMlBvdyAqIHggKiB4O1xuICAgICAgICBjb25zdCBrID0gc2lnbiAqIE1hdGguc3FydChNYXRoLmFicyhsZWZ0IC8gcmlnaHQpKTtcbiAgICAgICAgY3ggPSBrICogcjEgKiB5IC8gcjIgKyAoeDEgKyB4MikgLyAyO1xuICAgICAgICBjeSA9IGsgKiAtcjIgKiB4IC8gcjEgKyAoeTEgKyB5MikgLyAyO1xuICAgICAgICBmMSA9IE1hdGguYXNpbihwYXJzZUZsb2F0KCgoeTEgLSBjeSkgLyByMikudG9GaXhlZCg5KSkpO1xuICAgICAgICBmMiA9IE1hdGguYXNpbihwYXJzZUZsb2F0KCgoeTIgLSBjeSkgLyByMikudG9GaXhlZCg5KSkpO1xuICAgICAgICBpZiAoeDEgPCBjeCkge1xuICAgICAgICAgICAgZjEgPSBNYXRoLlBJIC0gZjE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHgyIDwgY3gpIHtcbiAgICAgICAgICAgIGYyID0gTWF0aC5QSSAtIGYyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmMSA8IDApIHtcbiAgICAgICAgICAgIGYxID0gTWF0aC5QSSAqIDIgKyBmMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZjIgPCAwKSB7XG4gICAgICAgICAgICBmMiA9IE1hdGguUEkgKiAyICsgZjI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN3ZWVwRmxhZyAmJiBmMSA+IGYyKSB7XG4gICAgICAgICAgICBmMSA9IGYxIC0gTWF0aC5QSSAqIDI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzd2VlcEZsYWcgJiYgZjIgPiBmMSkge1xuICAgICAgICAgICAgZjIgPSBmMiAtIE1hdGguUEkgKiAyO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBkZiA9IGYyIC0gZjE7XG4gICAgaWYgKE1hdGguYWJzKGRmKSA+IChNYXRoLlBJICogMTIwIC8gMTgwKSkge1xuICAgICAgICBjb25zdCBmMm9sZCA9IGYyO1xuICAgICAgICBjb25zdCB4Mm9sZCA9IHgyO1xuICAgICAgICBjb25zdCB5Mm9sZCA9IHkyO1xuICAgICAgICBpZiAoc3dlZXBGbGFnICYmIGYyID4gZjEpIHtcbiAgICAgICAgICAgIGYyID0gZjEgKyAoTWF0aC5QSSAqIDEyMCAvIDE4MCkgKiAoMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmMiA9IGYxICsgKE1hdGguUEkgKiAxMjAgLyAxODApICogKC0xKTtcbiAgICAgICAgfVxuICAgICAgICB4MiA9IGN4ICsgcjEgKiBNYXRoLmNvcyhmMik7XG4gICAgICAgIHkyID0gY3kgKyByMiAqIE1hdGguc2luKGYyKTtcbiAgICAgICAgcGFyYW1zID0gYXJjVG9DdWJpY0N1cnZlcyh4MiwgeTIsIHgyb2xkLCB5Mm9sZCwgcjEsIHIyLCBhbmdsZSwgMCwgc3dlZXBGbGFnLCBbZjIsIGYyb2xkLCBjeCwgY3ldKTtcbiAgICB9XG4gICAgZGYgPSBmMiAtIGYxO1xuICAgIGNvbnN0IGMxID0gTWF0aC5jb3MoZjEpO1xuICAgIGNvbnN0IHMxID0gTWF0aC5zaW4oZjEpO1xuICAgIGNvbnN0IGMyID0gTWF0aC5jb3MoZjIpO1xuICAgIGNvbnN0IHMyID0gTWF0aC5zaW4oZjIpO1xuICAgIGNvbnN0IHQgPSBNYXRoLnRhbihkZiAvIDQpO1xuICAgIGNvbnN0IGh4ID0gNCAvIDMgKiByMSAqIHQ7XG4gICAgY29uc3QgaHkgPSA0IC8gMyAqIHIyICogdDtcbiAgICBjb25zdCBtMSA9IFt4MSwgeTFdO1xuICAgIGNvbnN0IG0yID0gW3gxICsgaHggKiBzMSwgeTEgLSBoeSAqIGMxXTtcbiAgICBjb25zdCBtMyA9IFt4MiArIGh4ICogczIsIHkyIC0gaHkgKiBjMl07XG4gICAgY29uc3QgbTQgPSBbeDIsIHkyXTtcbiAgICBtMlswXSA9IDIgKiBtMVswXSAtIG0yWzBdO1xuICAgIG0yWzFdID0gMiAqIG0xWzFdIC0gbTJbMV07XG4gICAgaWYgKHJlY3Vyc2l2ZSkge1xuICAgICAgICByZXR1cm4gW20yLCBtMywgbTRdLmNvbmNhdChwYXJhbXMpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcGFyYW1zID0gW20yLCBtMywgbTRdLmNvbmNhdChwYXJhbXMpO1xuICAgICAgICBjb25zdCBjdXJ2ZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgICAgIGNvbnN0IHIxID0gcm90YXRlKHBhcmFtc1tpXVswXSwgcGFyYW1zW2ldWzFdLCBhbmdsZVJhZCk7XG4gICAgICAgICAgICBjb25zdCByMiA9IHJvdGF0ZShwYXJhbXNbaSArIDFdWzBdLCBwYXJhbXNbaSArIDFdWzFdLCBhbmdsZVJhZCk7XG4gICAgICAgICAgICBjb25zdCByMyA9IHJvdGF0ZShwYXJhbXNbaSArIDJdWzBdLCBwYXJhbXNbaSArIDJdWzFdLCBhbmdsZVJhZCk7XG4gICAgICAgICAgICBjdXJ2ZXMucHVzaChbcjFbMF0sIHIxWzFdLCByMlswXSwgcjJbMV0sIHIzWzBdLCByM1sxXV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJ2ZXM7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/path-data-parser/lib/normalize.js\n");
/***/ }),
/***/ "../../../node_modules/path-data-parser/lib/parser.js":
/*!************************************************************!*\
!*** ../../../node_modules/path-data-parser/lib/parser.js ***!
\************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parsePath\": () => (/* binding */ parsePath),\n/* harmony export */ \"serialize\": () => (/* binding */ serialize)\n/* harmony export */ });\nconst COMMAND = 0;\nconst NUMBER = 1;\nconst EOD = 2;\nconst PARAMS = { A: 7, a: 7, C: 6, c: 6, H: 1, h: 1, L: 2, l: 2, M: 2, m: 2, Q: 4, q: 4, S: 4, s: 4, T: 2, t: 2, V: 1, v: 1, Z: 0, z: 0 };\nfunction tokenize(d) {\n const tokens = new Array();\n while (d !== '') {\n if (d.match(/^([ \\t\\r\\n,]+)/)) {\n d = d.substr(RegExp.$1.length);\n }\n else if (d.match(/^([aAcChHlLmMqQsStTvVzZ])/)) {\n tokens[tokens.length] = { type: COMMAND, text: RegExp.$1 };\n d = d.substr(RegExp.$1.length);\n }\n else if (d.match(/^(([-+]?[0-9]+(\\.[0-9]*)?|[-+]?\\.[0-9]+)([eE][-+]?[0-9]+)?)/)) {\n tokens[tokens.length] = { type: NUMBER, text: `${parseFloat(RegExp.$1)}` };\n d = d.substr(RegExp.$1.length);\n }\n else {\n return [];\n }\n }\n tokens[tokens.length] = { type: EOD, text: '' };\n return tokens;\n}\nfunction isType(token, type) {\n return token.type === type;\n}\nfunction parsePath(d) {\n const segments = [];\n const tokens = tokenize(d);\n let mode = 'BOD';\n let index = 0;\n let token = tokens[index];\n while (!isType(token, EOD)) {\n let paramsCount = 0;\n const params = [];\n if (mode === 'BOD') {\n if (token.text === 'M' || token.text === 'm') {\n index++;\n paramsCount = PARAMS[token.text];\n mode = token.text;\n }\n else {\n return parsePath('M0,0' + d);\n }\n }\n else if (isType(token, NUMBER)) {\n paramsCount = PARAMS[mode];\n }\n else {\n index++;\n paramsCount = PARAMS[token.text];\n mode = token.text;\n }\n if ((index + paramsCount) < tokens.length) {\n for (let i = index; i < index + paramsCount; i++) {\n const numbeToken = tokens[i];\n if (isType(numbeToken, NUMBER)) {\n params[params.length] = +numbeToken.text;\n }\n else {\n throw new Error('Param not a number: ' + mode + ',' + numbeToken.text);\n }\n }\n if (typeof PARAMS[mode] === 'number') {\n const segment = { key: mode, data: params };\n segments.push(segment);\n index += paramsCount;\n token = tokens[index];\n if (mode === 'M')\n mode = 'L';\n if (mode === 'm')\n mode = 'l';\n }\n else {\n throw new Error('Bad segment: ' + mode);\n }\n }\n else {\n throw new Error('Path data ended short');\n }\n }\n return segments;\n}\nfunction serialize(segments) {\n const tokens = [];\n for (const { key, data } of segments) {\n tokens.push(key);\n switch (key) {\n case 'C':\n case 'c':\n tokens.push(data[0], `${data[1]},`, data[2], `${data[3]},`, data[4], data[5]);\n break;\n case 'S':\n case 's':\n case 'Q':\n case 'q':\n tokens.push(data[0], `${data[1]},`, data[2], data[3]);\n break;\n default:\n tokens.push(...data);\n break;\n }\n }\n return tokens.join(' ');\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3BhdGgtZGF0YS1wYXJzZXIvbGliL3BhcnNlci5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsdUJBQXVCLHNCQUFzQjtBQUNuRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEI7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0NBQWdDLHlCQUF5QjtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLGlCQUFpQixZQUFZO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLFFBQVEsZ0JBQWdCLFFBQVE7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxRQUFRO0FBQ2hEO0FBQ0E7Q