@zsviczian/excalidraw 0.12.0-obsidian-7 → 0.12.0-obsidian-8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2719,7 +2719,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
2719
2719
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2720
2720
 
2721
2721
  "use strict";
2722
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"deepCopyElement\\\": () => (/* binding */ deepCopyElement),\\n/* harmony export */ \\\"duplicateElement\\\": () => (/* binding */ duplicateElement),\\n/* harmony export */ \\\"newElement\\\": () => (/* binding */ newElement),\\n/* harmony export */ \\\"newFreeDrawElement\\\": () => (/* binding */ newFreeDrawElement),\\n/* harmony export */ \\\"newImageElement\\\": () => (/* binding */ newImageElement),\\n/* harmony export */ \\\"newLinearElement\\\": () => (/* binding */ newLinearElement),\\n/* harmony export */ \\\"newTextElement\\\": () => (/* binding */ newTextElement),\\n/* harmony export */ \\\"updateTextElement\\\": () => (/* binding */ updateTextElement)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \\\"../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ \\\"../../utils.ts\\\");\\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../random */ \\\"../../random.ts\\\");\\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mutateElement */ \\\"../../element/mutateElement.ts\\\");\\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../groups */ \\\"../../groups.ts\\\");\\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! . */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../math */ \\\"../../math.ts\\\");\\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textElement */ \\\"../../element/textElement.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n\\r\\n\\r\\nconst _excluded = [\\\"x\\\", \\\"y\\\", \\\"strokeColor\\\", \\\"backgroundColor\\\", \\\"fillStyle\\\", \\\"strokeWidth\\\", \\\"strokeStyle\\\", \\\"roughness\\\", \\\"opacity\\\", \\\"width\\\", \\\"height\\\", \\\"angle\\\", \\\"groupIds\\\", \\\"strokeSharpness\\\", \\\"boundElements\\\", \\\"link\\\", \\\"locked\\\"];\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols);\\r\\n} return keys; }\\r\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\\r\\n var source = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst _newElementBase = function (type, _ref) {\\r\\n var _a, _b;\\r\\n let { x, y, strokeColor, backgroundColor, fillStyle, strokeWidth, strokeStyle, roughness, opacity, width = 0, height = 0, angle = 0, groupIds = [], strokeSharpness, boundElements = null, link = null, locked } = _ref, rest = (0,_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"])(_ref, _excluded);\\r\\n const element = {\\r\\n id: rest.id || (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)(),\\r\\n type,\\r\\n x,\\r\\n y,\\r\\n width,\\r\\n height,\\r\\n angle,\\r\\n strokeColor,\\r\\n backgroundColor,\\r\\n fillStyle,\\r\\n strokeWidth,\\r\\n strokeStyle,\\r\\n roughness,\\r\\n opacity,\\r\\n groupIds,\\r\\n strokeSharpness,\\r\\n seed: (_a = rest.seed) !== null && _a !== void 0 ? _a : (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomInteger)(),\\r\\n version: rest.version || 1,\\r\\n versionNonce: (_b = rest.versionNonce) !== null && _b !== void 0 ? _b : 0,\\r\\n isDeleted: false,\\r\\n boundElements,\\r\\n updated: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getUpdatedTimestamp)(),\\r\\n link,\\r\\n locked\\r\\n };\\r\\n return element;\\r\\n};\\r\\nconst newElement = function (opts) {\\r\\n return _newElementBase(opts.type, opts);\\r\\n};\\r\\n/** computes element x/y offset based on textAlign/verticalAlign */\\r\\nconst getTextElementPositionOffsets = function (opts, metrics) {\\r\\n return {\\r\\n x: opts.textAlign === \\\"center\\\" ? metrics.width / 2 : opts.textAlign === \\\"right\\\" ? metrics.width : 0,\\r\\n y: opts.verticalAlign === \\\"middle\\\" ? metrics.height / 2 : 0\\r\\n };\\r\\n};\\r\\nconst newTextElement = function (opts) {\\r\\n const metrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.measureText)(opts.text, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(opts));\\r\\n const offsets = getTextElementPositionOffsets(opts, metrics);\\r\\n const textElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(_objectSpread(_objectSpread({}, _newElementBase(\\\"text\\\", opts)), {}, {\\r\\n text: opts.text,\\r\\n rawText: opts.rawText,\\r\\n fontSize: opts.fontSize,\\r\\n fontFamily: opts.fontFamily,\\r\\n textAlign: opts.textAlign,\\r\\n verticalAlign: opts.verticalAlign,\\r\\n x: opts.x - offsets.x,\\r\\n y: opts.y - offsets.y,\\r\\n width: metrics.width,\\r\\n height: metrics.height,\\r\\n baseline: metrics.baseline,\\r\\n containerId: opts.containerId || null,\\r\\n originalText: opts.text\\r\\n }), {});\\r\\n return textElement;\\r\\n};\\r\\nconst getAdjustedDimensions = function (element, nextText) {\\r\\n let maxWidth = null;\\r\\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getContainerElement)(element);\\r\\n if (container) {\\r\\n maxWidth = container.width - _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2;\\r\\n }\\r\\n const { width: nextWidth, height: nextHeight, baseline: nextBaseline } = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.measureText)(nextText, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element), maxWidth);\\r\\n const { textAlign, verticalAlign } = element;\\r\\n let x;\\r\\n let y;\\r\\n if (textAlign === \\\"center\\\" && verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_10__.VERTICAL_ALIGN.MIDDLE && !element.containerId) {\\r\\n const prevMetrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.measureText)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element), maxWidth);\\r\\n const offsets = getTextElementPositionOffsets(element, {\\r\\n width: nextWidth - prevMetrics.width,\\r\\n height: nextHeight - prevMetrics.height\\r\\n });\\r\\n x = element.x - offsets.x;\\r\\n y = element.y - offsets.y;\\r\\n }\\r\\n else {\\r\\n const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_6__.getElementAbsoluteCoords)(element);\\r\\n const [nextX1, nextY1, nextX2, nextY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_8__.getResizedElementAbsoluteCoords)(element, nextWidth, nextHeight, false);\\r\\n const deltaX1 = (x1 - nextX1) / 2;\\r\\n const deltaY1 = (y1 - nextY1) / 2;\\r\\n const deltaX2 = (x2 - nextX2) / 2;\\r\\n const deltaY2 = (y2 - nextY2) / 2;\\r\\n [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_7__.adjustXYWithRotation)({\\r\\n s: true,\\r\\n e: textAlign === \\\"center\\\" || textAlign === \\\"left\\\",\\r\\n w: textAlign === \\\"center\\\" || textAlign === \\\"right\\\"\\r\\n }, element.x, element.y, element.angle, deltaX1, deltaY1, deltaX2, deltaY2);\\r\\n } // make sure container dimensions are set properly when\\r\\n // text editor overflows beyond viewport dimensions\\r\\n if (container) {\\r\\n let height = container.height;\\r\\n let width = container.width;\\r\\n if (nextHeight > height - _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2) {\\r\\n height = nextHeight + _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2;\\r\\n }\\r\\n if (nextWidth > width - _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2) {\\r\\n width = nextWidth + _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2;\\r\\n }\\r\\n if (height !== container.height || width !== container.width) {\\r\\n (0,_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(container, {\\r\\n height,\\r\\n width\\r\\n });\\r\\n }\\r\\n }\\r\\n return {\\r\\n width: nextWidth,\\r\\n height: nextHeight,\\r\\n x: Number.isFinite(x) ? x : element.x,\\r\\n y: Number.isFinite(y) ? y : element.y,\\r\\n baseline: nextBaseline\\r\\n };\\r\\n};\\r\\nconst updateTextElement = function (element, _ref2) {\\r\\n let { text, isDeleted, originalText, rawText, link } = _ref2;\\r\\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getContainerElement)(element);\\r\\n if (container) {\\r\\n text = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.wrapText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element), container.width);\\r\\n }\\r\\n const dimensions = getAdjustedDimensions(element, text);\\r\\n return (0,_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(element, _objectSpread(_objectSpread({\\r\\n text,\\r\\n rawText: rawText !== null && rawText !== void 0 ? rawText : originalText,\\r\\n //should this be rather originalText??\\r\\n originalText,\\r\\n isDeleted: isDeleted !== null && isDeleted !== void 0 ? isDeleted : element.isDeleted\\r\\n }, link ? {\\r\\n link\\r\\n } : {}), dimensions));\\r\\n};\\r\\nconst newFreeDrawElement = function (opts) {\\r\\n return _objectSpread(_objectSpread({}, _newElementBase(opts.type, opts)), {}, {\\r\\n points: opts.points || [],\\r\\n pressures: [],\\r\\n simulatePressure: opts.simulatePressure,\\r\\n lastCommittedPoint: null\\r\\n });\\r\\n};\\r\\nconst newLinearElement = function (opts) {\\r\\n return _objectSpread(_objectSpread({}, _newElementBase(opts.type, opts)), {}, {\\r\\n points: opts.points || [],\\r\\n lastCommittedPoint: null,\\r\\n startBinding: null,\\r\\n endBinding: null,\\r\\n startArrowhead: opts.startArrowhead,\\r\\n endArrowhead: opts.endArrowhead\\r\\n });\\r\\n};\\r\\nconst newImageElement = function (opts) {\\r\\n return _objectSpread(_objectSpread({}, _newElementBase(\\\"image\\\", opts)), {}, {\\r\\n // in the future we'll support changing stroke color for some SVG elements,\\r\\n // and `transparent` will likely mean \\\"use original colors of the image\\\"\\r\\n strokeColor: \\\"transparent\\\",\\r\\n status: \\\"pending\\\",\\r\\n fileId: null,\\r\\n scale: [1, 1]\\r\\n });\\r\\n}; // Simplified deep clone for the purpose of cloning ExcalidrawElement only\\r\\n// (doesn't clone Date, RegExp, Map, Set, Typed arrays etc.)\\r\\n//\\r\\n// Adapted from https://github.com/lukeed/klona\\r\\nconst deepCopyElement = function (val) {\\r\\n let depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\\r\\n if (val == null || typeof val !== \\\"object\\\") {\\r\\n return val;\\r\\n }\\r\\n if (Object.prototype.toString.call(val) === \\\"[object Object]\\\") {\\r\\n const tmp = typeof val.constructor === \\\"function\\\" ? Object.create(Object.getPrototypeOf(val)) : {};\\r\\n for (const key in val) {\\r\\n if (val.hasOwnProperty(key)) {\\r\\n // don't copy top-level shape property, which we want to regenerate\\r\\n if (depth === 0 && (key === \\\"shape\\\" || key === \\\"canvas\\\")) {\\r\\n continue;\\r\\n }\\r\\n tmp[key] = deepCopyElement(val[key], depth + 1);\\r\\n }\\r\\n }\\r\\n return tmp;\\r\\n }\\r\\n if (Array.isArray(val)) {\\r\\n let k = val.length;\\r\\n const arr = new Array(k);\\r\\n while (k--) {\\r\\n arr[k] = deepCopyElement(val[k], depth + 1);\\r\\n }\\r\\n return arr;\\r\\n }\\r\\n return val;\\r\\n};\\r\\n/**\\r\\n * Duplicate an element, often used in the alt-drag operation.\\r\\n * Note that this method has gotten a bit complicated since the\\r\\n * introduction of gruoping/ungrouping elements.\\r\\n * @param editingGroupId The current group being edited. The new\\r\\n * element will inherit this group and its\\r\\n * parents.\\r\\n * @param groupIdMapForOperation A Map that maps old group IDs to\\r\\n * duplicated ones. If you are duplicating\\r\\n * multiple elements at once, share this map\\r\\n * amongst all of them\\r\\n * @param element Element to duplicate\\r\\n * @param overrides Any element properties to override\\r\\n */\\r\\nconst duplicateElement = function (editingGroupId, groupIdMapForOperation, element, overrides) {\\r\\n var _a, _b;\\r\\n let copy = deepCopyElement(element);\\r\\n if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.isTestEnv)()) {\\r\\n copy.id = `${copy.id}_copy`; // `window.h` may not be defined in some unit tests\\r\\n if ((_b = (_a = window.h) === null || _a === void 0 ? void 0 : _a.app) === null || _b === void 0 ? void 0 : _b.getSceneElementsIncludingDeleted().find(function (el) {\\r\\n return el.id === copy.id;\\r\\n })) {\\r\\n copy.id += \\\"_copy\\\";\\r\\n }\\r\\n }\\r\\n else {\\r\\n copy.id = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)();\\r\\n }\\r\\n copy.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getUpdatedTimestamp)();\\r\\n copy.seed = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomInteger)();\\r\\n copy.groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_5__.getNewGroupIdsForDuplication)(copy.groupIds, editingGroupId, function (groupId) {\\r\\n if (!groupIdMapForOperation.has(groupId)) {\\r\\n groupIdMapForOperation.set(groupId, (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)());\\r\\n }\\r\\n return groupIdMapForOperation.get(groupId);\\r\\n });\\r\\n if (overrides) {\\r\\n copy = Object.assign(copy, overrides);\\r\\n }\\r\\n return copy;\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDckUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLEVBQUU7WUFDRixJQUFJLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQztTQUNwQjtLQUNGO1NBQU07UUFDTCxJQUFJLENBQUMsRUFBRSxHQUFHLGlEQUFRLEVBQUUsQ0FBQztLQUN0QjtJQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsMkRBQW1CLEVBQUUsQ0FBQztJQUNyQyxJQUFJLENBQUMsSUFBSSxHQUFHLHNEQUFhLEVBQUUsQ0FBQztJQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLHFFQUE0QixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFVBQVUsT0FBTztRQUMzRixJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3hDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsaURBQVEsRUFBRSxDQUFDLENBQUM7U0FDakQ7UUFFRCxPQUFPLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksU0FBUyxFQUFFO1FBQ2IsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0tBQ3ZDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vZWxlbWVudC9uZXdFbGVtZW50LnRzPzFhMjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wieFwiLCBcInlcIiwgXCJzdHJva2VDb2xvclwiLCBcImJhY2tncm91bmRDb2xvclwiLCBcImZpbGxTdHlsZVwiLCBcInN0cm9rZVdpZHRoXCIsIFwic3Ryb2tlU3R5bGVcIiwgXCJyb3VnaG5lc3NcIiwgXCJvcGFjaXR5XCIsIFwid2lkdGhcIiwgXCJoZWlnaHRcIiwgXCJhbmdsZVwiLCBcImdyb3VwSWRzXCIsIFwic3Ryb2tlU2hhcnBuZXNzXCIsIFwiYm91bmRFbGVtZW50c1wiLCBcImxpbmtcIiwgXCJsb2NrZWRcIl07XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGdldEZvbnRTdHJpbmcsIGdldFVwZGF0ZWRUaW1lc3RhbXAsIGlzVGVzdEVudiB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgcmFuZG9tSW50ZWdlciwgcmFuZG9tSWQgfSBmcm9tIFwiLi4vcmFuZG9tXCI7XG5pbXBvcnQgeyBtdXRhdGVFbGVtZW50LCBuZXdFbGVtZW50V2l0aCB9IGZyb20gXCIuL211dGF0ZUVsZW1lbnRcIjtcbmltcG9ydCB7IGdldE5ld0dyb3VwSWRzRm9yRHVwbGljYXRpb24gfSBmcm9tIFwiLi4vZ3JvdXBzXCI7XG5pbXBvcnQgeyBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMgfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHsgYWRqdXN0WFlXaXRoUm90YXRpb24gfSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHsgZ2V0UmVzaXplZEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyB9IGZyb20gXCIuL2JvdW5kc1wiO1xuaW1wb3J0IHsgZ2V0Q29udGFpbmVyRWxlbWVudCwgbWVhc3VyZVRleHQsIHdyYXBUZXh0IH0gZnJvbSBcIi4vdGV4dEVsZW1lbnRcIjtcbmltcG9ydCB7IEJPVU5EX1RFWFRfUEFERElORywgVkVSVElDQUxfQUxJR04gfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IF9uZXdFbGVtZW50QmFzZSA9IGZ1bmN0aW9uICh0eXBlLCBfcmVmKSB7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHN0cm9rZUNvbG9yLFxuICAgIGJhY2tncm91bmRDb2xvcixcbiAgICBmaWxsU3R5bGUsXG4gICAgc3Ryb2tlV2lkdGgsXG4gICAgc3Ryb2tlU3R5bGUsXG4gICAgcm91Z2huZXNzLFxuICAgIG9wYWNpdHksXG4gICAgd2lkdGggPSAwLFxuICAgIGhlaWdodCA9IDAsXG4gICAgYW5nbGUgPSAwLFxuICAgIGdyb3VwSWRzID0gW10sXG4gICAgc3Ryb2tlU2hhcnBuZXNzLFxuICAgIGJvdW5kRWxlbWVudHMgPSBudWxsLFxuICAgIGxpbmsgPSBudWxsLFxuICAgIGxvY2tlZFxuICB9ID0gX3JlZixcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICBjb25zdCBlbGVtZW50ID0ge1xuICAgIGlkOiByZXN0LmlkIHx8IHJhbmRvbUlkKCksXG4gICAgdHlwZSxcbiAgICB4LFxuICAgIHksXG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIGFuZ2xlLFxuICAgIHN0cm9rZUNvbG9yLFxuICAgIGJhY2tncm91bmRDb2xvcixcbiAgICBmaWxsU3R5bGUsXG4gICAgc3Ryb2tlV2lkdGgsXG4gICAgc3Ryb2tlU3R5bGUsXG4gICAgcm91Z2huZXNzLFxuICAgIG9wYWNpdHksXG4gICAgZ3JvdXBJZHMsXG4gICAgc3Ryb2tlU2hhcnBuZXNzLFxuICAgIHNlZWQ6IHJlc3Quc2VlZCA/PyByYW5kb21JbnRlZ2VyKCksXG4gICAgdmVyc2lvbjogcmVzdC52ZXJzaW9uIHx8IDEsXG4gICAgdmVyc2lvbk5vbmNlOiByZXN0LnZlcnNpb25Ob25jZSA/PyAwLFxuICAgIGlzRGVsZXRlZDogZmFsc2UsXG4gICAgYm91bmRFbGVtZW50cyxcbiAgICB1cGRhdGVkOiBnZXRVcGRhdGVkVGltZXN0YW1wKCksXG4gICAgbGluayxcbiAgICBsb2NrZWRcbiAgfTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgbmV3RWxlbWVudCA9IGZ1bmN0aW9uIChvcHRzKSB7XG4gIHJldHVybiBfbmV3RWxlbWVudEJhc2Uob3B0cy50eXBlLCBvcHRzKTtcbn07XG4vKiogY29tcHV0ZXMgZWxlbWVudCB4L3kgb2Zmc2V0IGJhc2VkIG9uIHRleHRBbGlnbi92ZXJ0aWNhbEFsaWduICovXG5cbmNvbnN0IGdldFRleHRFbGVtZW50UG9zaXRpb25PZmZzZXRzID0gZnVuY3Rpb24gKG9wdHMsIG1ldHJpY3MpIHtcbiAgcmV0dXJuIHtcbiAgICB4OiBvcHRzLnRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIiA/IG1ldHJpY3Mud2lkdGggLyAyIDogb3B0cy50ZXh0QWxpZ24gPT09IFwicmlnaHRcIiA/IG1ldHJpY3Mud2lkdGggOiAwLFxuICAgIHk6IG9wdHMudmVydGljYWxBbGlnbiA9PT0gXCJtaWRkbGVcIiA/IG1ldHJpY3MuaGVpZ2h0IC8gMiA6IDBcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBuZXdUZXh0RWxlbWVudCA9IGZ1bmN0aW9uIChvcHRzKSB7XG4gIGNvbnN0IG1ldHJpY3MgPSBtZWFzdXJlVGV4dChvcHRzLnRleHQsIGdldEZvbnRTdHJpbmcob3B0cykpO1xuICBjb25zdCBvZmZzZXRzID0gZ2V0VGV4dEVsZW1lbnRQb3NpdGlvbk9mZnNldHMob3B0cywgbWV0cmljcyk7XG4gIGNvbnN0IHRleHRFbGVtZW50ID0gbmV3RWxlbWVudFdpdGgoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfbmV3RWxlbWVudEJhc2UoXCJ0ZXh0XCIsIG9wdHMpKSwge30sIHtcbiAgICB0ZXh0OiBvcHRzLnRleHQsXG4gICAgcmF3VGV4dDogb3B0cy5yYXdUZXh0LFxuICAgIGZvbnRTaXplOiBvcHRzLmZvbnRTaXplLFxuICAgIGZvbnRGYW1pbHk6IG9wdHMuZm9udEZhbWlseSxcbiAgICB0ZXh0QWxpZ246IG9wdHMudGV4dEFsaWduLFxuICAgIHZlcnRpY2FsQWxpZ246IG9wdHMudmVydGljYWxBbGlnbixcbiAgICB4OiBvcHRzLnggLSBvZmZzZXRzLngsXG4gICAgeTogb3B0cy55IC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiBtZXRyaWNzLndpZHRoLFxuICAgIGhlaWdodDogbWV0cmljcy5oZWlnaHQsXG4gICAgYmFzZWxpbmU6IG1ldHJpY3MuYmFzZWxpbmUsXG4gICAgY29udGFpbmVySWQ6IG9wdHMuY29udGFpbmVySWQgfHwgbnVsbCxcbiAgICBvcmlnaW5hbFRleHQ6IG9wdHMudGV4dFxuICB9KSwge30pO1xuICByZXR1cm4gdGV4dEVsZW1lbnQ7XG59O1xuXG5jb25zdCBnZXRBZGp1c3RlZERpbWVuc2lvbnMgPSBmdW5jdGlvbiAoZWxlbWVudCwgbmV4dFRleHQpIHtcbiAgbGV0IG1heFdpZHRoID0gbnVsbDtcbiAgY29uc3QgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyRWxlbWVudChlbGVtZW50KTtcblxuICBpZiAoY29udGFpbmVyKSB7XG4gICAgbWF4V2lkdGggPSBjb250YWluZXIud2lkdGggLSBCT1VORF9URVhUX1BBRERJTkcgKiAyO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIHdpZHRoOiBuZXh0V2lkdGgsXG4gICAgaGVpZ2h0OiBuZXh0SGVpZ2h0LFxuICAgIGJhc2VsaW5lOiBuZXh0QmFzZWxpbmVcbiAgfSA9IG1lYXN1cmVUZXh0KG5leHRUZXh0LCBnZXRGb250U3RyaW5nKGVsZW1lbnQpLCBtYXhXaWR0aCk7XG4gIGNvbnN0IHtcbiAgICB0ZXh0QWxpZ24sXG4gICAgdmVydGljYWxBbGlnblxuICB9ID0gZWxlbWVudDtcbiAgbGV0IHg7XG4gIGxldCB5O1xuXG4gIGlmICh0ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgJiYgdmVydGljYWxBbGlnbiA9PT0gVkVSVElDQUxfQUxJR04uTUlERExFICYmICFlbGVtZW50LmNvbnRhaW5lcklkKSB7XG4gICAgY29uc3QgcHJldk1ldHJpY3MgPSBtZWFzdXJlVGV4dChlbGVtZW50LnRleHQsIGdldEZvbnRTdHJpbmcoZWxlbWVudCksIG1heFdpZHRoKTtcbiAgICBjb25zdCBvZmZzZXRzID0gZ2V0VGV4dEVsZW1lbnRQb3NpdGlvbk9mZnNldHMoZWxlbWVudCwge1xuICAgICAgd2lkdGg6IG5leHRXaWR0aCAtIHByZXZNZXRyaWNzLndpZHRoLFxuICAgICAgaGVpZ2h0OiBuZXh0SGVpZ2h0IC0gcHJldk1ldHJpY3MuaGVpZ2h0XG4gICAgfSk7XG4gICAgeCA9IGVsZW1lbnQueCAtIG9mZnNldHMueDtcbiAgICB5ID0gZWxlbWVudC55IC0gb2Zmc2V0cy55O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG4gICAgY29uc3QgW25leHRYMSwgbmV4dFkxLCBuZXh0WDIsIG5leHRZMl0gPSBnZXRSZXNpemVkRWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQsIG5leHRXaWR0aCwgbmV4dEhlaWdodCwgZmFsc2UpO1xuICAgIGNvbnN0IGRlbHRhWDEgPSAoeDEgLSBuZXh0WDEpIC8gMjtcbiAgICBjb25zdCBkZWx0YVkxID0gKHkxIC0gbmV4dFkxKSAvIDI7XG4gICAgY29uc3QgZGVsdGFYMiA9ICh4MiAtIG5leHRYMikgLyAyO1xuICAgIGNvbnN0IGRlbHRhWTIgPSAoeTIgLSBuZXh0WTIpIC8gMjtcbiAgICBbeCwgeV0gPSBhZGp1c3RYWVdpdGhSb3RhdGlvbih7XG4gICAgICBzOiB0cnVlLFxuICAgICAgZTogdGV4dEFsaWduID09PSBcImNlbnRlclwiIHx8IHRleHRBbGlnbiA9PT0gXCJsZWZ0XCIsXG4gICAgICB3OiB0ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgfHwgdGV4dEFsaWduID09PSBcInJpZ2h0XCJcbiAgICB9LCBlbGVtZW50LngsIGVsZW1lbnQueSwgZWxlbWVudC5hbmdsZSwgZGVsdGFYMSwgZGVsdGFZMSwgZGVsdGFYMiwgZGVsdGFZMik7XG4gIH0gLy8gbWFrZSBzdXJlIGNvbnRhaW5lciBkaW1lbnNpb25zIGFyZSBzZXQgcHJvcGVybHkgd2hlblxuICAvLyB0ZXh0IGVkaXRvciBvdmVyZmxvd3MgYmV5b25kIHZpZXdwb3J0IGRpbWVuc2lvbnNcblxuXG4gIGlmIChjb250YWluZXIpIHtcbiAgICBsZXQgaGVpZ2h0ID0gY29udGFpbmVyLmhlaWdodDtcbiAgICBsZXQgd2lkdGggPSBjb250YWluZXIud2lkdGg7XG5cbiAgICBpZiAobmV4dEhlaWdodCA+IGhlaWdodCAtIEJPVU5EX1RFWFRfUEFERElORyAqIDIpIHtcbiAgICAgIGhlaWdodCA9IG5leHRIZWlnaHQgKyBCT1VORF9URVhUX1BBRERJTkcgKiAyO1xuICAgIH1cblxuICAgIGlmIChuZXh0V2lkdGggPiB3aWR0aCAtIEJPVU5EX1RFWFRfUEFERElORyAqIDIpIHtcbiAgICAgIHdpZHRoID0gbmV4dFdpZHRoICsgQk9VTkRfVEVYVF9QQURESU5HICogMjtcbiAgICB9XG5cbiAgICBpZiAoaGVpZ2h0ICE9PSBjb250YWluZXIuaGVpZ2h0IHx8IHdpZHRoICE9PSBjb250YWluZXIud2lkdGgpIHtcbiAgICAgIG11dGF0ZUVsZW1lbnQoY29udGFpbmVyLCB7XG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgd2lkdGhcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IG5leHRXaWR0aCxcbiAgICBoZWlnaHQ6IG5leHRIZWlnaHQsXG4gICAgeDogTnVtYmVyLmlzRmluaXRlKHgpID8geCA6IGVsZW1lbnQueCxcbiAgICB5OiBOdW1iZXIuaXNGaW5pdGUoeSkgPyB5IDogZWxlbWVudC55LFxuICAgIGJhc2VsaW5lOiBuZXh0QmFzZWxpbmVcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUZXh0RWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBfcmVmMikge1xuICBsZXQge1xuICAgIHRleHQsXG4gICAgaXNEZWxldGVkLFxuICAgIG9yaWdpbmFsVGV4dCxcbiAgICByYXdUZXh0LFxuICAgIGxpbmtcbiAgfSA9IF9yZWYyO1xuICBjb25zdCBjb250YWluZXIgPSBnZXRDb250YWluZXJFbGVtZW50KGVsZW1lbnQpO1xuXG4gIGlmIChjb250YWluZXIpIHtcbiAgICB0ZXh0ID0gd3JhcFRleHQodGV4dCwgZ2V0Rm9udFN0cmluZyhlbGVtZW50KSwgY29udGFpbmVyLndpZHRoKTtcbiAgfVxuXG4gIGNvbnN0IGRpbWVuc2lvbnMgPSBnZXRBZGp1c3RlZERpbWVuc2lvbnMoZWxlbWVudCwgdGV4dCk7XG4gIHJldHVybiBuZXdFbGVtZW50V2l0aChlbGVtZW50LCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgIHRleHQsXG4gICAgcmF3VGV4dDogcmF3VGV4dCA/PyBvcmlnaW5hbFRleHQsXG4gICAgLy9zaG91bGQgdGhpcyBiZSByYXRoZXIgb3JpZ2luYWxUZXh0Pz9cbiAgICBvcmlnaW5hbFRleHQsXG4gICAgaXNEZWxldGVkOiBpc0RlbGV0ZWQgPz8gZWxlbWVudC5pc0RlbGV0ZWRcbiAgfSwgbGluayA/IHtcbiAgICBsaW5rXG4gIH0gOiB7fSksIGRpbWVuc2lvbnMpKTtcbn07XG5leHBvcnQgY29uc3QgbmV3RnJlZURyYXdFbGVtZW50ID0gZnVuY3Rpb24gKG9wdHMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX25ld0VsZW1lbnRCYXNlKG9wdHMudHlwZSwgb3B0cykpLCB7fSwge1xuICAgIHBvaW50czogb3B0cy5wb2ludHMgfHwgW10sXG4gICAgcHJlc3N1cmVzOiBbXSxcbiAgICBzaW11bGF0ZVByZXNzdXJlOiBvcHRzLnNpbXVsYXRlUHJlc3N1cmUsXG4gICAgbGFzdENvbW1pdHRlZFBvaW50OiBudWxsXG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBuZXdMaW5lYXJFbGVtZW50ID0gZnVuY3Rpb24gKG9wdHMpIHtcbiAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX25ld0VsZW1lbnRCYXNlKG9wdHMudHlwZSwgb3B0cykpLCB7fSwge1xuICAgIHBvaW50czogb3B0cy5wb2ludHMgfHwgW10sXG4gICAgbGFzdENvbW1pdHRlZFBvaW50OiBudWxsLFxuICAgIHN0YXJ0QmluZGluZzogbnVsbCxcbiAgICBlbmRCaW5kaW5nOiBudWxsLFxuICAgIHN0YXJ0QXJyb3doZWFkOiBvcHRzLnN0YXJ0QXJyb3doZWFkLFxuICAgIGVuZEFycm93aGVhZDogb3B0cy5lbmRBcnJvd2hlYWRcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IG5ld0ltYWdlRWxlbWVudCA9IGZ1bmN0aW9uIChvcHRzKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF9uZXdFbGVtZW50QmFzZShcImltYWdlXCIsIG9wdHMpKSwge30sIHtcbiAgICAvLyBpbiB0aGUgZnV0dXJlIHdlJ2xsIHN1cHBvcnQgY2hhbmdpbmcgc3Ryb2tlIGNvbG9yIGZvciBzb21lIFNWRyBlbGVtZW50cyxcbiAgICAvLyBhbmQgYHRyYW5zcGFyZW50YCB3aWxsIGxpa2VseSBtZWFuIFwidXNlIG9yaWdpbmFsIGNvbG9ycyBvZiB0aGUgaW1hZ2VcIlxuICAgIHN0cm9rZUNvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgc3RhdHVzOiBcInBlbmRpbmdcIixcbiAgICBmaWxlSWQ6IG51bGwsXG4gICAgc2NhbGU6IFsxLCAxXVxuICB9KTtcbn07IC8vIFNpbXBsaWZpZWQgZGVlcCBjbG9uZSBmb3IgdGhlIHB1cnBvc2Ugb2YgY2xvbmluZyBFeGNhbGlkcmF3RWxlbWVudCBvbmx5XG4vLyAoZG9lc24ndCBjbG9uZSBEYXRlLCBSZWdFeHAsIE1hcCwgU2V0LCBUeXBlZCBhcnJheXMgZXRjLilcbi8vXG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2x1a2VlZC9rbG9uYVxuXG5leHBvcnQgY29uc3QgZGVlcENvcHlFbGVtZW50ID0gZnVuY3Rpb24gKHZhbCkge1xuICBsZXQgZGVwdGggPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7XG5cbiAgaWYgKHZhbCA9PSBudWxsIHx8IHR5cGVvZiB2YWwgIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgT2JqZWN0XVwiKSB7XG4gICAgY29uc3QgdG1wID0gdHlwZW9mIHZhbC5jb25zdHJ1Y3RvciA9PT0gXCJmdW5jdGlvblwiID8gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsKSkgOiB7fTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIHZhbCkge1xuICAgICAgaWYgKHZhbC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIC8vIGRvbid0IGNvcHkgdG9wLWxldmVsIHNoYXBlIHByb3BlcnR5LCB3aGljaCB3ZSB3YW50IHRvIHJlZ2VuZXJhdGVcbiAgICAgICAgaWYgKGRlcHRoID09PSAwICYmIChrZXkgPT09IFwic2hhcGVcIiB8fCBrZXkgPT09IFwiY2FudmFzXCIpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0bXBba2V5XSA9IGRlZXBDb3B5RWxlbWVudCh2YWxba2V5XSwgZGVwdGggKyAxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG1wO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgIGxldCBrID0gdmFsLmxlbmd0aDtcbiAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkoayk7XG5cbiAgICB3aGlsZSAoay0tKSB7XG4gICAgICBhcnJba10gPSBkZWVwQ29weUVsZW1lbnQodmFsW2tdLCBkZXB0aCArIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBhcnI7XG4gIH1cblxuICByZXR1cm4gdmFsO1xufTtcbi8qKlxuICogRHVwbGljYXRlIGFuIGVsZW1lbnQsIG9mdGVuIHVzZWQgaW4gdGhlIGFsdC1kcmFnIG9wZXJhdGlvbi5cbiAqIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBoYXMgZ290dGVuIGEgYml0IGNvbXBsaWNhdGVkIHNpbmNlIHRoZVxuICogaW50cm9kdWN0aW9uIG9mIGdydW9waW5nL3VuZ3JvdXBpbmcgZWxlbWVudHMuXG4gKiBAcGFyYW0gZWRpdGluZ0dyb3VwSWQgVGhlIGN1cnJlbnQgZ3JvdXAgYmVpbmcgZWRpdGVkLiBUaGUgbmV3XG4gKiAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCB3aWxsIGluaGVyaXQgdGhpcyBncm91cCBhbmQgaXRzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50cy5cbiAqIEBwYXJhbSBncm91cElkTWFwRm9yT3BlcmF0aW9uIEEgTWFwIHRoYXQgbWFwcyBvbGQgZ3JvdXAgSURzIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVkIG9uZXMuIElmIHlvdSBhcmUgZHVwbGljYXRpbmdcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlIGVsZW1lbnRzIGF0IG9uY2UsIHNoYXJlIHRoaXMgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW9uZ3N0IGFsbCBvZiB0aGVtXG4gKiBAcGFyYW0gZWxlbWVudCBFbGVtZW50IHRvIGR1cGxpY2F0ZVxuICogQHBhcmFtIG92ZXJyaWRlcyBBbnkgZWxlbWVudCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlXG4gKi9cblxuZXhwb3J0IGNvbnN0IGR1cGxpY2F0ZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWRpdGluZ0dyb3VwSWQsIGdyb3VwSWRNYXBGb3JPcGVyYXRpb24sIGVsZW1lbnQsIG92ZXJyaWRlcykge1xuICBsZXQgY29weSA9IGRlZXBDb3B5RWxlbWVudChlbGVtZW50KTtcblxuICBpZiAoaXNUZXN0RW52KCkpIHtcbiAgICBjb3B5LmlkID0gYCR7Y29weS5pZH1fY29weWA7IC8vIGB3aW5kb3cuaGAgbWF5IG5vdCBiZSBkZWZpbmVkIGluIHNvbWUgdW5pdCB0ZXN0c1xuXG4gICAgaWYgKHdpbmRvdy5oPy5hcHA/LmdldFNjZW5lRWxlbWVudHNJbmNsdWRpbmdEZWxldGVkKCkuZmluZChmdW5jdGlvbiAoZWwpIHtcbiAgICAgIHJldHVybiBlbC5pZCA9PT0gY29weS5pZDtcbiAgICB9KSkge1xuICAgICAgY29weS5pZCArPSBcIl9jb3B5XCI7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvcHkuaWQgPSByYW5kb21JZCgpO1xuICB9XG5cbiAgY29weS51cGRhdGVkID0gZ2V0VXBkYXRlZFRpbWVzdGFtcCgpO1xuICBjb3B5LnNlZWQgPSByYW5kb21JbnRlZ2VyKCk7XG4gIGNvcHkuZ3JvdXBJZHMgPSBnZXROZXdHcm91cElkc0ZvckR1cGxpY2F0aW9uKGNvcHkuZ3JvdXBJZHMsIGVkaXRpbmdHcm91cElkLCBmdW5jdGlvbiAoZ3JvdXBJZCkge1xuICAgIGlmICghZ3JvdXBJZE1hcEZvck9wZXJhdGlvbi5oYXMoZ3JvdXBJZCkpIHtcbiAgICAgIGdyb3VwSWRNYXBGb3JPcGVyYXRpb24uc2V0KGdyb3VwSWQsIHJhbmRvbUlkKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cElkTWFwRm9yT3BlcmF0aW9uLmdldChncm91cElkKTtcbiAgfSk7XG5cbiAgaWYgKG92ZXJyaWRlcykge1xuICAgIGNvcHkgPSBPYmplY3QuYXNzaWduKGNvcHksIG92ZXJyaWRlcyk7XG4gIH1cblxuICByZXR1cm4gY29weTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../../element/newElement.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../element/newElement.ts?");
2722
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"deepCopyElement\\\": () => (/* binding */ deepCopyElement),\\n/* harmony export */ \\\"duplicateElement\\\": () => (/* binding */ duplicateElement),\\n/* harmony export */ \\\"newElement\\\": () => (/* binding */ newElement),\\n/* harmony export */ \\\"newFreeDrawElement\\\": () => (/* binding */ newFreeDrawElement),\\n/* harmony export */ \\\"newImageElement\\\": () => (/* binding */ newImageElement),\\n/* harmony export */ \\\"newLinearElement\\\": () => (/* binding */ newLinearElement),\\n/* harmony export */ \\\"newTextElement\\\": () => (/* binding */ newTextElement),\\n/* harmony export */ \\\"updateTextElement\\\": () => (/* binding */ updateTextElement)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \\\"../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils */ \\\"../../utils.ts\\\");\\n/* harmony import */ var _random__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../random */ \\\"../../random.ts\\\");\\n/* harmony import */ var _mutateElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mutateElement */ \\\"../../element/mutateElement.ts\\\");\\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../groups */ \\\"../../groups.ts\\\");\\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! . */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../math */ \\\"../../math.ts\\\");\\n/* harmony import */ var _bounds__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./textElement */ \\\"../../element/textElement.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n\\r\\n\\r\\nconst _excluded = [\\\"x\\\", \\\"y\\\", \\\"strokeColor\\\", \\\"backgroundColor\\\", \\\"fillStyle\\\", \\\"strokeWidth\\\", \\\"strokeStyle\\\", \\\"roughness\\\", \\\"opacity\\\", \\\"width\\\", \\\"height\\\", \\\"angle\\\", \\\"groupIds\\\", \\\"strokeSharpness\\\", \\\"boundElements\\\", \\\"link\\\", \\\"locked\\\"];\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols);\\r\\n} return keys; }\\r\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\\r\\n var source = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n //zsviczian\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst _newElementBase = function (type, _ref) {\\r\\n var _a, _b;\\r\\n let { x, y, strokeColor, backgroundColor, fillStyle, strokeWidth, strokeStyle, roughness, opacity, width = 0, height = 0, angle = 0, groupIds = [], strokeSharpness, boundElements = null, link = null, locked } = _ref, rest = (0,_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"])(_ref, _excluded);\\r\\n const element = {\\r\\n id: rest.id || (type === \\\"text\\\" ? (0,_random__WEBPACK_IMPORTED_MODULE_3__.obsidianId)() : (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)()),\\r\\n //zsviczian \\r\\n type,\\r\\n x,\\r\\n y,\\r\\n width,\\r\\n height,\\r\\n angle,\\r\\n strokeColor,\\r\\n backgroundColor,\\r\\n fillStyle,\\r\\n strokeWidth,\\r\\n strokeStyle,\\r\\n roughness,\\r\\n opacity,\\r\\n groupIds,\\r\\n strokeSharpness,\\r\\n seed: (_a = rest.seed) !== null && _a !== void 0 ? _a : (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomInteger)(),\\r\\n version: rest.version || 1,\\r\\n versionNonce: (_b = rest.versionNonce) !== null && _b !== void 0 ? _b : 0,\\r\\n isDeleted: false,\\r\\n boundElements,\\r\\n updated: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getUpdatedTimestamp)(),\\r\\n link,\\r\\n locked\\r\\n };\\r\\n return element;\\r\\n};\\r\\nconst newElement = function (opts) {\\r\\n return _newElementBase(opts.type, opts);\\r\\n};\\r\\n/** computes element x/y offset based on textAlign/verticalAlign */\\r\\nconst getTextElementPositionOffsets = function (opts, metrics) {\\r\\n return {\\r\\n x: opts.textAlign === \\\"center\\\" ? metrics.width / 2 : opts.textAlign === \\\"right\\\" ? metrics.width : 0,\\r\\n y: opts.verticalAlign === \\\"middle\\\" ? metrics.height / 2 : 0\\r\\n };\\r\\n};\\r\\nconst newTextElement = function (opts) {\\r\\n const metrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.measureText)(opts.text, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(opts));\\r\\n const offsets = getTextElementPositionOffsets(opts, metrics);\\r\\n const textElement = (0,_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(_objectSpread(_objectSpread({}, _newElementBase(\\\"text\\\", opts)), {}, {\\r\\n text: opts.text,\\r\\n rawText: opts.rawText,\\r\\n fontSize: opts.fontSize,\\r\\n fontFamily: opts.fontFamily,\\r\\n textAlign: opts.textAlign,\\r\\n verticalAlign: opts.verticalAlign,\\r\\n x: opts.x - offsets.x,\\r\\n y: opts.y - offsets.y,\\r\\n width: metrics.width,\\r\\n height: metrics.height,\\r\\n baseline: metrics.baseline,\\r\\n containerId: opts.containerId || null,\\r\\n originalText: opts.text\\r\\n }), {});\\r\\n return textElement;\\r\\n};\\r\\nconst getAdjustedDimensions = function (element, nextText) {\\r\\n let maxWidth = null;\\r\\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getContainerElement)(element);\\r\\n if (container) {\\r\\n maxWidth = container.width - _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2;\\r\\n }\\r\\n const { width: nextWidth, height: nextHeight, baseline: nextBaseline } = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.measureText)(nextText, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element), maxWidth);\\r\\n const { textAlign, verticalAlign } = element;\\r\\n let x;\\r\\n let y;\\r\\n if (textAlign === \\\"center\\\" && verticalAlign === _constants__WEBPACK_IMPORTED_MODULE_10__.VERTICAL_ALIGN.MIDDLE && !element.containerId) {\\r\\n const prevMetrics = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.measureText)(element.text, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element), maxWidth);\\r\\n const offsets = getTextElementPositionOffsets(element, {\\r\\n width: nextWidth - prevMetrics.width,\\r\\n height: nextHeight - prevMetrics.height\\r\\n });\\r\\n x = element.x - offsets.x;\\r\\n y = element.y - offsets.y;\\r\\n }\\r\\n else {\\r\\n const [x1, y1, x2, y2] = (0,___WEBPACK_IMPORTED_MODULE_6__.getElementAbsoluteCoords)(element);\\r\\n const [nextX1, nextY1, nextX2, nextY2] = (0,_bounds__WEBPACK_IMPORTED_MODULE_8__.getResizedElementAbsoluteCoords)(element, nextWidth, nextHeight, false);\\r\\n const deltaX1 = (x1 - nextX1) / 2;\\r\\n const deltaY1 = (y1 - nextY1) / 2;\\r\\n const deltaX2 = (x2 - nextX2) / 2;\\r\\n const deltaY2 = (y2 - nextY2) / 2;\\r\\n [x, y] = (0,_math__WEBPACK_IMPORTED_MODULE_7__.adjustXYWithRotation)({\\r\\n s: true,\\r\\n e: textAlign === \\\"center\\\" || textAlign === \\\"left\\\",\\r\\n w: textAlign === \\\"center\\\" || textAlign === \\\"right\\\"\\r\\n }, element.x, element.y, element.angle, deltaX1, deltaY1, deltaX2, deltaY2);\\r\\n } // make sure container dimensions are set properly when\\r\\n // text editor overflows beyond viewport dimensions\\r\\n if (container) {\\r\\n let height = container.height;\\r\\n let width = container.width;\\r\\n if (nextHeight > height - _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2) {\\r\\n height = nextHeight + _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2;\\r\\n }\\r\\n if (nextWidth > width - _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2) {\\r\\n width = nextWidth + _constants__WEBPACK_IMPORTED_MODULE_10__.BOUND_TEXT_PADDING * 2;\\r\\n }\\r\\n if (height !== container.height || width !== container.width) {\\r\\n (0,_mutateElement__WEBPACK_IMPORTED_MODULE_4__.mutateElement)(container, {\\r\\n height,\\r\\n width\\r\\n });\\r\\n }\\r\\n }\\r\\n return {\\r\\n width: nextWidth,\\r\\n height: nextHeight,\\r\\n x: Number.isFinite(x) ? x : element.x,\\r\\n y: Number.isFinite(y) ? y : element.y,\\r\\n baseline: nextBaseline\\r\\n };\\r\\n};\\r\\nconst updateTextElement = function (element, _ref2) {\\r\\n let { text, isDeleted, originalText, rawText, link } = _ref2;\\r\\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.getContainerElement)(element);\\r\\n if (container) {\\r\\n text = (0,_textElement__WEBPACK_IMPORTED_MODULE_9__.wrapText)(text, (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFontString)(element), container.width);\\r\\n }\\r\\n const dimensions = getAdjustedDimensions(element, text);\\r\\n return (0,_mutateElement__WEBPACK_IMPORTED_MODULE_4__.newElementWith)(element, _objectSpread(_objectSpread({\\r\\n text,\\r\\n rawText: rawText !== null && rawText !== void 0 ? rawText : originalText,\\r\\n //should this be rather originalText??\\r\\n originalText,\\r\\n isDeleted: isDeleted !== null && isDeleted !== void 0 ? isDeleted : element.isDeleted\\r\\n }, link ? {\\r\\n link\\r\\n } : {}), dimensions));\\r\\n};\\r\\nconst newFreeDrawElement = function (opts) {\\r\\n return _objectSpread(_objectSpread({}, _newElementBase(opts.type, opts)), {}, {\\r\\n points: opts.points || [],\\r\\n pressures: [],\\r\\n simulatePressure: opts.simulatePressure,\\r\\n lastCommittedPoint: null\\r\\n });\\r\\n};\\r\\nconst newLinearElement = function (opts) {\\r\\n return _objectSpread(_objectSpread({}, _newElementBase(opts.type, opts)), {}, {\\r\\n points: opts.points || [],\\r\\n lastCommittedPoint: null,\\r\\n startBinding: null,\\r\\n endBinding: null,\\r\\n startArrowhead: opts.startArrowhead,\\r\\n endArrowhead: opts.endArrowhead\\r\\n });\\r\\n};\\r\\nconst newImageElement = function (opts) {\\r\\n return _objectSpread(_objectSpread({}, _newElementBase(\\\"image\\\", opts)), {}, {\\r\\n // in the future we'll support changing stroke color for some SVG elements,\\r\\n // and `transparent` will likely mean \\\"use original colors of the image\\\"\\r\\n strokeColor: \\\"transparent\\\",\\r\\n status: \\\"pending\\\",\\r\\n fileId: null,\\r\\n scale: [1, 1]\\r\\n });\\r\\n}; // Simplified deep clone for the purpose of cloning ExcalidrawElement only\\r\\n// (doesn't clone Date, RegExp, Map, Set, Typed arrays etc.)\\r\\n//\\r\\n// Adapted from https://github.com/lukeed/klona\\r\\nconst deepCopyElement = function (val) {\\r\\n let depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\\r\\n if (val == null || typeof val !== \\\"object\\\") {\\r\\n return val;\\r\\n }\\r\\n if (Object.prototype.toString.call(val) === \\\"[object Object]\\\") {\\r\\n const tmp = typeof val.constructor === \\\"function\\\" ? Object.create(Object.getPrototypeOf(val)) : {};\\r\\n for (const key in val) {\\r\\n if (val.hasOwnProperty(key)) {\\r\\n // don't copy top-level shape property, which we want to regenerate\\r\\n if (depth === 0 && (key === \\\"shape\\\" || key === \\\"canvas\\\")) {\\r\\n continue;\\r\\n }\\r\\n tmp[key] = deepCopyElement(val[key], depth + 1);\\r\\n }\\r\\n }\\r\\n return tmp;\\r\\n }\\r\\n if (Array.isArray(val)) {\\r\\n let k = val.length;\\r\\n const arr = new Array(k);\\r\\n while (k--) {\\r\\n arr[k] = deepCopyElement(val[k], depth + 1);\\r\\n }\\r\\n return arr;\\r\\n }\\r\\n return val;\\r\\n};\\r\\n/**\\r\\n * Duplicate an element, often used in the alt-drag operation.\\r\\n * Note that this method has gotten a bit complicated since the\\r\\n * introduction of gruoping/ungrouping elements.\\r\\n * @param editingGroupId The current group being edited. The new\\r\\n * element will inherit this group and its\\r\\n * parents.\\r\\n * @param groupIdMapForOperation A Map that maps old group IDs to\\r\\n * duplicated ones. If you are duplicating\\r\\n * multiple elements at once, share this map\\r\\n * amongst all of them\\r\\n * @param element Element to duplicate\\r\\n * @param overrides Any element properties to override\\r\\n */\\r\\nconst duplicateElement = function (editingGroupId, groupIdMapForOperation, element, overrides) {\\r\\n var _a, _b;\\r\\n let copy = deepCopyElement(element);\\r\\n if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.isTestEnv)()) {\\r\\n copy.id = `${copy.id}_copy`; // `window.h` may not be defined in some unit tests\\r\\n if ((_b = (_a = window.h) === null || _a === void 0 ? void 0 : _a.app) === null || _b === void 0 ? void 0 : _b.getSceneElementsIncludingDeleted().find(function (el) {\\r\\n return el.id === copy.id;\\r\\n })) {\\r\\n copy.id += \\\"_copy\\\";\\r\\n }\\r\\n }\\r\\n else {\\r\\n copy.id = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)();\\r\\n }\\r\\n copy.updated = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getUpdatedTimestamp)();\\r\\n copy.seed = (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomInteger)();\\r\\n copy.groupIds = (0,_groups__WEBPACK_IMPORTED_MODULE_5__.getNewGroupIdsForDuplication)(copy.groupIds, editingGroupId, function (groupId) {\\r\\n if (!groupIdMapForOperation.has(groupId)) {\\r\\n groupIdMapForOperation.set(groupId, (0,_random__WEBPACK_IMPORTED_MODULE_3__.randomId)());\\r\\n }\\r\\n return groupIdMapForOperation.get(groupId);\\r\\n });\\r\\n if (overrides) {\\r\\n copy = Object.assign(copy, overrides);\\r\\n }\\r\\n return copy;\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxtREFBbUQ7UUFFaEYsSUFBSSxrQkFBTSxDQUFDLENBQUMsMENBQUUsR0FBRywwQ0FBRSxnQ0FBZ0MsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3JFLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxFQUFFO1lBQ0YsSUFBSSxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUM7U0FDcEI7S0FDRjtTQUFNO1FBQ0wsSUFBSSxDQUFDLEVBQUUsR0FBRyxpREFBUSxFQUFFLENBQUM7S0FDdEI7SUFFRCxJQUFJLENBQUMsT0FBTyxHQUFHLDJEQUFtQixFQUFFLENBQUM7SUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxzREFBYSxFQUFFLENBQUM7SUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxxRUFBNEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxVQUFVLE9BQU87UUFDM0YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN4QyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGlEQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsT0FBTyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLFNBQVMsRUFBRTtRQUNiLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztLQUN2QztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2VsZW1lbnQvbmV3RWxlbWVudC50cz8xYTIwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcInhcIiwgXCJ5XCIsIFwic3Ryb2tlQ29sb3JcIiwgXCJiYWNrZ3JvdW5kQ29sb3JcIiwgXCJmaWxsU3R5bGVcIiwgXCJzdHJva2VXaWR0aFwiLCBcInN0cm9rZVN0eWxlXCIsIFwicm91Z2huZXNzXCIsIFwib3BhY2l0eVwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwiYW5nbGVcIiwgXCJncm91cElkc1wiLCBcInN0cm9rZVNoYXJwbmVzc1wiLCBcImJvdW5kRWxlbWVudHNcIiwgXCJsaW5rXCIsIFwibG9ja2VkXCJdO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgZW51bWVyYWJsZU9ubHkgJiYgKHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KSksIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gbnVsbCAhPSBhcmd1bWVudHNbaV0gPyBhcmd1bWVudHNbaV0gOiB7fTsgaSAlIDIgPyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCAhMCkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKSA6IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBnZXRGb250U3RyaW5nLCBnZXRVcGRhdGVkVGltZXN0YW1wLCBpc1Rlc3RFbnYgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IHJhbmRvbUludGVnZXIsIHJhbmRvbUlkLCBvYnNpZGlhbklkIH0gZnJvbSBcIi4uL3JhbmRvbVwiOyAvL3pzdmljemlhblxuXG5pbXBvcnQgeyBtdXRhdGVFbGVtZW50LCBuZXdFbGVtZW50V2l0aCB9IGZyb20gXCIuL211dGF0ZUVsZW1lbnRcIjtcbmltcG9ydCB7IGdldE5ld0dyb3VwSWRzRm9yRHVwbGljYXRpb24gfSBmcm9tIFwiLi4vZ3JvdXBzXCI7XG5pbXBvcnQgeyBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMgfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHsgYWRqdXN0WFlXaXRoUm90YXRpb24gfSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHsgZ2V0UmVzaXplZEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyB9IGZyb20gXCIuL2JvdW5kc1wiO1xuaW1wb3J0IHsgZ2V0Q29udGFpbmVyRWxlbWVudCwgbWVhc3VyZVRleHQsIHdyYXBUZXh0IH0gZnJvbSBcIi4vdGV4dEVsZW1lbnRcIjtcbmltcG9ydCB7IEJPVU5EX1RFWFRfUEFERElORywgVkVSVElDQUxfQUxJR04gfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IF9uZXdFbGVtZW50QmFzZSA9IGZ1bmN0aW9uICh0eXBlLCBfcmVmKSB7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHN0cm9rZUNvbG9yLFxuICAgIGJhY2tncm91bmRDb2xvcixcbiAgICBmaWxsU3R5bGUsXG4gICAgc3Ryb2tlV2lkdGgsXG4gICAgc3Ryb2tlU3R5bGUsXG4gICAgcm91Z2huZXNzLFxuICAgIG9wYWNpdHksXG4gICAgd2lkdGggPSAwLFxuICAgIGhlaWdodCA9IDAsXG4gICAgYW5nbGUgPSAwLFxuICAgIGdyb3VwSWRzID0gW10sXG4gICAgc3Ryb2tlU2hhcnBuZXNzLFxuICAgIGJvdW5kRWxlbWVudHMgPSBudWxsLFxuICAgIGxpbmsgPSBudWxsLFxuICAgIGxvY2tlZFxuICB9ID0gX3JlZixcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICBjb25zdCBlbGVtZW50ID0ge1xuICAgIGlkOiByZXN0LmlkIHx8ICh0eXBlID09PSBcInRleHRcIiA/IG9ic2lkaWFuSWQoKSA6IHJhbmRvbUlkKCkpLFxuICAgIC8venN2aWN6aWFuIFxuICAgIHR5cGUsXG4gICAgeCxcbiAgICB5LFxuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBhbmdsZSxcbiAgICBzdHJva2VDb2xvcixcbiAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgZmlsbFN0eWxlLFxuICAgIHN0cm9rZVdpZHRoLFxuICAgIHN0cm9rZVN0eWxlLFxuICAgIHJvdWdobmVzcyxcbiAgICBvcGFjaXR5LFxuICAgIGdyb3VwSWRzLFxuICAgIHN0cm9rZVNoYXJwbmVzcyxcbiAgICBzZWVkOiByZXN0LnNlZWQgPz8gcmFuZG9tSW50ZWdlcigpLFxuICAgIHZlcnNpb246IHJlc3QudmVyc2lvbiB8fCAxLFxuICAgIHZlcnNpb25Ob25jZTogcmVzdC52ZXJzaW9uTm9uY2UgPz8gMCxcbiAgICBpc0RlbGV0ZWQ6IGZhbHNlLFxuICAgIGJvdW5kRWxlbWVudHMsXG4gICAgdXBkYXRlZDogZ2V0VXBkYXRlZFRpbWVzdGFtcCgpLFxuICAgIGxpbmssXG4gICAgbG9ja2VkXG4gIH07XG4gIHJldHVybiBlbGVtZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IG5ld0VsZW1lbnQgPSBmdW5jdGlvbiAob3B0cykge1xuICByZXR1cm4gX25ld0VsZW1lbnRCYXNlKG9wdHMudHlwZSwgb3B0cyk7XG59O1xuLyoqIGNvbXB1dGVzIGVsZW1lbnQgeC95IG9mZnNldCBiYXNlZCBvbiB0ZXh0QWxpZ24vdmVydGljYWxBbGlnbiAqL1xuXG5jb25zdCBnZXRUZXh0RWxlbWVudFBvc2l0aW9uT2Zmc2V0cyA9IGZ1bmN0aW9uIChvcHRzLCBtZXRyaWNzKSB7XG4gIHJldHVybiB7XG4gICAgeDogb3B0cy50ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgPyBtZXRyaWNzLndpZHRoIC8gMiA6IG9wdHMudGV4dEFsaWduID09PSBcInJpZ2h0XCIgPyBtZXRyaWNzLndpZHRoIDogMCxcbiAgICB5OiBvcHRzLnZlcnRpY2FsQWxpZ24gPT09IFwibWlkZGxlXCIgPyBtZXRyaWNzLmhlaWdodCAvIDIgOiAwXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgbmV3VGV4dEVsZW1lbnQgPSBmdW5jdGlvbiAob3B0cykge1xuICBjb25zdCBtZXRyaWNzID0gbWVhc3VyZVRleHQob3B0cy50ZXh0LCBnZXRGb250U3RyaW5nKG9wdHMpKTtcbiAgY29uc3Qgb2Zmc2V0cyA9IGdldFRleHRFbGVtZW50UG9zaXRpb25PZmZzZXRzKG9wdHMsIG1ldHJpY3MpO1xuICBjb25zdCB0ZXh0RWxlbWVudCA9IG5ld0VsZW1lbnRXaXRoKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX25ld0VsZW1lbnRCYXNlKFwidGV4dFwiLCBvcHRzKSksIHt9LCB7XG4gICAgdGV4dDogb3B0cy50ZXh0LFxuICAgIHJhd1RleHQ6IG9wdHMucmF3VGV4dCxcbiAgICBmb250U2l6ZTogb3B0cy5mb250U2l6ZSxcbiAgICBmb250RmFtaWx5OiBvcHRzLmZvbnRGYW1pbHksXG4gICAgdGV4dEFsaWduOiBvcHRzLnRleHRBbGlnbixcbiAgICB2ZXJ0aWNhbEFsaWduOiBvcHRzLnZlcnRpY2FsQWxpZ24sXG4gICAgeDogb3B0cy54IC0gb2Zmc2V0cy54LFxuICAgIHk6IG9wdHMueSAtIG9mZnNldHMueSxcbiAgICB3aWR0aDogbWV0cmljcy53aWR0aCxcbiAgICBoZWlnaHQ6IG1ldHJpY3MuaGVpZ2h0LFxuICAgIGJhc2VsaW5lOiBtZXRyaWNzLmJhc2VsaW5lLFxuICAgIGNvbnRhaW5lcklkOiBvcHRzLmNvbnRhaW5lcklkIHx8IG51bGwsXG4gICAgb3JpZ2luYWxUZXh0OiBvcHRzLnRleHRcbiAgfSksIHt9KTtcbiAgcmV0dXJuIHRleHRFbGVtZW50O1xufTtcblxuY29uc3QgZ2V0QWRqdXN0ZWREaW1lbnNpb25zID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5leHRUZXh0KSB7XG4gIGxldCBtYXhXaWR0aCA9IG51bGw7XG4gIGNvbnN0IGNvbnRhaW5lciA9IGdldENvbnRhaW5lckVsZW1lbnQoZWxlbWVudCk7XG5cbiAgaWYgKGNvbnRhaW5lcikge1xuICAgIG1heFdpZHRoID0gY29udGFpbmVyLndpZHRoIC0gQk9VTkRfVEVYVF9QQURESU5HICogMjtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICB3aWR0aDogbmV4dFdpZHRoLFxuICAgIGhlaWdodDogbmV4dEhlaWdodCxcbiAgICBiYXNlbGluZTogbmV4dEJhc2VsaW5lXG4gIH0gPSBtZWFzdXJlVGV4dChuZXh0VGV4dCwgZ2V0Rm9udFN0cmluZyhlbGVtZW50KSwgbWF4V2lkdGgpO1xuICBjb25zdCB7XG4gICAgdGV4dEFsaWduLFxuICAgIHZlcnRpY2FsQWxpZ25cbiAgfSA9IGVsZW1lbnQ7XG4gIGxldCB4O1xuICBsZXQgeTtcblxuICBpZiAodGV4dEFsaWduID09PSBcImNlbnRlclwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFZFUlRJQ0FMX0FMSUdOLk1JRERMRSAmJiAhZWxlbWVudC5jb250YWluZXJJZCkge1xuICAgIGNvbnN0IHByZXZNZXRyaWNzID0gbWVhc3VyZVRleHQoZWxlbWVudC50ZXh0LCBnZXRGb250U3RyaW5nKGVsZW1lbnQpLCBtYXhXaWR0aCk7XG4gICAgY29uc3Qgb2Zmc2V0cyA9IGdldFRleHRFbGVtZW50UG9zaXRpb25PZmZzZXRzKGVsZW1lbnQsIHtcbiAgICAgIHdpZHRoOiBuZXh0V2lkdGggLSBwcmV2TWV0cmljcy53aWR0aCxcbiAgICAgIGhlaWdodDogbmV4dEhlaWdodCAtIHByZXZNZXRyaWNzLmhlaWdodFxuICAgIH0pO1xuICAgIHggPSBlbGVtZW50LnggLSBvZmZzZXRzLng7XG4gICAgeSA9IGVsZW1lbnQueSAtIG9mZnNldHMueTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICAgIGNvbnN0IFtuZXh0WDEsIG5leHRZMSwgbmV4dFgyLCBuZXh0WTJdID0gZ2V0UmVzaXplZEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50LCBuZXh0V2lkdGgsIG5leHRIZWlnaHQsIGZhbHNlKTtcbiAgICBjb25zdCBkZWx0YVgxID0gKHgxIC0gbmV4dFgxKSAvIDI7XG4gICAgY29uc3QgZGVsdGFZMSA9ICh5MSAtIG5leHRZMSkgLyAyO1xuICAgIGNvbnN0IGRlbHRhWDIgPSAoeDIgLSBuZXh0WDIpIC8gMjtcbiAgICBjb25zdCBkZWx0YVkyID0gKHkyIC0gbmV4dFkyKSAvIDI7XG4gICAgW3gsIHldID0gYWRqdXN0WFlXaXRoUm90YXRpb24oe1xuICAgICAgczogdHJ1ZSxcbiAgICAgIGU6IHRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIiB8fCB0ZXh0QWxpZ24gPT09IFwibGVmdFwiLFxuICAgICAgdzogdGV4dEFsaWduID09PSBcImNlbnRlclwiIHx8IHRleHRBbGlnbiA9PT0gXCJyaWdodFwiXG4gICAgfSwgZWxlbWVudC54LCBlbGVtZW50LnksIGVsZW1lbnQuYW5nbGUsIGRlbHRhWDEsIGRlbHRhWTEsIGRlbHRhWDIsIGRlbHRhWTIpO1xuICB9IC8vIG1ha2Ugc3VyZSBjb250YWluZXIgZGltZW5zaW9ucyBhcmUgc2V0IHByb3Blcmx5IHdoZW5cbiAgLy8gdGV4dCBlZGl0b3Igb3ZlcmZsb3dzIGJleW9uZCB2aWV3cG9ydCBkaW1lbnNpb25zXG5cblxuICBpZiAoY29udGFpbmVyKSB7XG4gICAgbGV0IGhlaWdodCA9IGNvbnRhaW5lci5oZWlnaHQ7XG4gICAgbGV0IHdpZHRoID0gY29udGFpbmVyLndpZHRoO1xuXG4gICAgaWYgKG5leHRIZWlnaHQgPiBoZWlnaHQgLSBCT1VORF9URVhUX1BBRERJTkcgKiAyKSB7XG4gICAgICBoZWlnaHQgPSBuZXh0SGVpZ2h0ICsgQk9VTkRfVEVYVF9QQURESU5HICogMjtcbiAgICB9XG5cbiAgICBpZiAobmV4dFdpZHRoID4gd2lkdGggLSBCT1VORF9URVhUX1BBRERJTkcgKiAyKSB7XG4gICAgICB3aWR0aCA9IG5leHRXaWR0aCArIEJPVU5EX1RFWFRfUEFERElORyAqIDI7XG4gICAgfVxuXG4gICAgaWYgKGhlaWdodCAhPT0gY29udGFpbmVyLmhlaWdodCB8fCB3aWR0aCAhPT0gY29udGFpbmVyLndpZHRoKSB7XG4gICAgICBtdXRhdGVFbGVtZW50KGNvbnRhaW5lciwge1xuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHdpZHRoXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiBuZXh0V2lkdGgsXG4gICAgaGVpZ2h0OiBuZXh0SGVpZ2h0LFxuICAgIHg6IE51bWJlci5pc0Zpbml0ZSh4KSA/IHggOiBlbGVtZW50LngsXG4gICAgeTogTnVtYmVyLmlzRmluaXRlKHkpID8geSA6IGVsZW1lbnQueSxcbiAgICBiYXNlbGluZTogbmV4dEJhc2VsaW5lXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlVGV4dEVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgX3JlZjIpIHtcbiAgbGV0IHtcbiAgICB0ZXh0LFxuICAgIGlzRGVsZXRlZCxcbiAgICBvcmlnaW5hbFRleHQsXG4gICAgcmF3VGV4dCxcbiAgICBsaW5rXG4gIH0gPSBfcmVmMjtcbiAgY29uc3QgY29udGFpbmVyID0gZ2V0Q29udGFpbmVyRWxlbWVudChlbGVtZW50KTtcblxuICBpZiAoY29udGFpbmVyKSB7XG4gICAgdGV4dCA9IHdyYXBUZXh0KHRleHQsIGdldEZvbnRTdHJpbmcoZWxlbWVudCksIGNvbnRhaW5lci53aWR0aCk7XG4gIH1cblxuICBjb25zdCBkaW1lbnNpb25zID0gZ2V0QWRqdXN0ZWREaW1lbnNpb25zKGVsZW1lbnQsIHRleHQpO1xuICByZXR1cm4gbmV3RWxlbWVudFdpdGgoZWxlbWVudCwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICB0ZXh0LFxuICAgIHJhd1RleHQ6IHJhd1RleHQgPz8gb3JpZ2luYWxUZXh0LFxuICAgIC8vc2hvdWxkIHRoaXMgYmUgcmF0aGVyIG9yaWdpbmFsVGV4dD8/XG4gICAgb3JpZ2luYWxUZXh0LFxuICAgIGlzRGVsZXRlZDogaXNEZWxldGVkID8/IGVsZW1lbnQuaXNEZWxldGVkXG4gIH0sIGxpbmsgPyB7XG4gICAgbGlua1xuICB9IDoge30pLCBkaW1lbnNpb25zKSk7XG59O1xuZXhwb3J0IGNvbnN0IG5ld0ZyZWVEcmF3RWxlbWVudCA9IGZ1bmN0aW9uIChvcHRzKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF9uZXdFbGVtZW50QmFzZShvcHRzLnR5cGUsIG9wdHMpKSwge30sIHtcbiAgICBwb2ludHM6IG9wdHMucG9pbnRzIHx8IFtdLFxuICAgIHByZXNzdXJlczogW10sXG4gICAgc2ltdWxhdGVQcmVzc3VyZTogb3B0cy5zaW11bGF0ZVByZXNzdXJlLFxuICAgIGxhc3RDb21taXR0ZWRQb2ludDogbnVsbFxuICB9KTtcbn07XG5leHBvcnQgY29uc3QgbmV3TGluZWFyRWxlbWVudCA9IGZ1bmN0aW9uIChvcHRzKSB7XG4gIHJldHVybiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF9uZXdFbGVtZW50QmFzZShvcHRzLnR5cGUsIG9wdHMpKSwge30sIHtcbiAgICBwb2ludHM6IG9wdHMucG9pbnRzIHx8IFtdLFxuICAgIGxhc3RDb21taXR0ZWRQb2ludDogbnVsbCxcbiAgICBzdGFydEJpbmRpbmc6IG51bGwsXG4gICAgZW5kQmluZGluZzogbnVsbCxcbiAgICBzdGFydEFycm93aGVhZDogb3B0cy5zdGFydEFycm93aGVhZCxcbiAgICBlbmRBcnJvd2hlYWQ6IG9wdHMuZW5kQXJyb3doZWFkXG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBuZXdJbWFnZUVsZW1lbnQgPSBmdW5jdGlvbiAob3B0cykge1xuICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfbmV3RWxlbWVudEJhc2UoXCJpbWFnZVwiLCBvcHRzKSksIHt9LCB7XG4gICAgLy8gaW4gdGhlIGZ1dHVyZSB3ZSdsbCBzdXBwb3J0IGNoYW5naW5nIHN0cm9rZSBjb2xvciBmb3Igc29tZSBTVkcgZWxlbWVudHMsXG4gICAgLy8gYW5kIGB0cmFuc3BhcmVudGAgd2lsbCBsaWtlbHkgbWVhbiBcInVzZSBvcmlnaW5hbCBjb2xvcnMgb2YgdGhlIGltYWdlXCJcbiAgICBzdHJva2VDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICAgIHN0YXR1czogXCJwZW5kaW5nXCIsXG4gICAgZmlsZUlkOiBudWxsLFxuICAgIHNjYWxlOiBbMSwgMV1cbiAgfSk7XG59OyAvLyBTaW1wbGlmaWVkIGRlZXAgY2xvbmUgZm9yIHRoZSBwdXJwb3NlIG9mIGNsb25pbmcgRXhjYWxpZHJhd0VsZW1lbnQgb25seVxuLy8gKGRvZXNuJ3QgY2xvbmUgRGF0ZSwgUmVnRXhwLCBNYXAsIFNldCwgVHlwZWQgYXJyYXlzIGV0Yy4pXG4vL1xuLy8gQWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sdWtlZWQva2xvbmFcblxuZXhwb3J0IGNvbnN0IGRlZXBDb3B5RWxlbWVudCA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgbGV0IGRlcHRoID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiAwO1xuXG4gIGlmICh2YWwgPT0gbnVsbCB8fCB0eXBlb2YgdmFsICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIikge1xuICAgIGNvbnN0IHRtcCA9IHR5cGVvZiB2YWwuY29uc3RydWN0b3IgPT09IFwiZnVuY3Rpb25cIiA/IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbCkpIDoge307XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB2YWwpIHtcbiAgICAgIGlmICh2YWwuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAvLyBkb24ndCBjb3B5IHRvcC1sZXZlbCBzaGFwZSBwcm9wZXJ0eSwgd2hpY2ggd2Ugd2FudCB0byByZWdlbmVyYXRlXG4gICAgICAgIGlmIChkZXB0aCA9PT0gMCAmJiAoa2V5ID09PSBcInNoYXBlXCIgfHwga2V5ID09PSBcImNhbnZhc1wiKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdG1wW2tleV0gPSBkZWVwQ29weUVsZW1lbnQodmFsW2tleV0sIGRlcHRoICsgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRtcDtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICBsZXQgayA9IHZhbC5sZW5ndGg7XG4gICAgY29uc3QgYXJyID0gbmV3IEFycmF5KGspO1xuXG4gICAgd2hpbGUgKGstLSkge1xuICAgICAgYXJyW2tdID0gZGVlcENvcHlFbGVtZW50KHZhbFtrXSwgZGVwdGggKyAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJyO1xuICB9XG5cbiAgcmV0dXJuIHZhbDtcbn07XG4vKipcbiAqIER1cGxpY2F0ZSBhbiBlbGVtZW50LCBvZnRlbiB1c2VkIGluIHRoZSBhbHQtZHJhZyBvcGVyYXRpb24uXG4gKiBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaGFzIGdvdHRlbiBhIGJpdCBjb21wbGljYXRlZCBzaW5jZSB0aGVcbiAqIGludHJvZHVjdGlvbiBvZiBncnVvcGluZy91bmdyb3VwaW5nIGVsZW1lbnRzLlxuICogQHBhcmFtIGVkaXRpbmdHcm91cElkIFRoZSBjdXJyZW50IGdyb3VwIGJlaW5nIGVkaXRlZC4gVGhlIG5ld1xuICogICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgd2lsbCBpbmhlcml0IHRoaXMgZ3JvdXAgYW5kIGl0c1xuICogICAgICAgICAgICAgICAgICAgICAgIHBhcmVudHMuXG4gKiBAcGFyYW0gZ3JvdXBJZE1hcEZvck9wZXJhdGlvbiBBIE1hcCB0aGF0IG1hcHMgb2xkIGdyb3VwIElEcyB0b1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlZCBvbmVzLiBJZiB5b3UgYXJlIGR1cGxpY2F0aW5nXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZSBlbGVtZW50cyBhdCBvbmNlLCBzaGFyZSB0aGlzIG1hcFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vbmdzdCBhbGwgb2YgdGhlbVxuICogQHBhcmFtIGVsZW1lbnQgRWxlbWVudCB0byBkdXBsaWNhdGVcbiAqIEBwYXJhbSBvdmVycmlkZXMgQW55IGVsZW1lbnQgcHJvcGVydGllcyB0byBvdmVycmlkZVxuICovXG5cbmV4cG9ydCBjb25zdCBkdXBsaWNhdGVFbGVtZW50ID0gZnVuY3Rpb24gKGVkaXRpbmdHcm91cElkLCBncm91cElkTWFwRm9yT3BlcmF0aW9uLCBlbGVtZW50LCBvdmVycmlkZXMpIHtcbiAgbGV0IGNvcHkgPSBkZWVwQ29weUVsZW1lbnQoZWxlbWVudCk7XG5cbiAgaWYgKGlzVGVzdEVudigpKSB7XG4gICAgY29weS5pZCA9IGAke2NvcHkuaWR9X2NvcHlgOyAvLyBgd2luZG93LmhgIG1heSBub3QgYmUgZGVmaW5lZCBpbiBzb21lIHVuaXQgdGVzdHNcblxuICAgIGlmICh3aW5kb3cuaD8uYXBwPy5nZXRTY2VuZUVsZW1lbnRzSW5jbHVkaW5nRGVsZXRlZCgpLmZpbmQoZnVuY3Rpb24gKGVsKSB7XG4gICAgICByZXR1cm4gZWwuaWQgPT09IGNvcHkuaWQ7XG4gICAgfSkpIHtcbiAgICAgIGNvcHkuaWQgKz0gXCJfY29weVwiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb3B5LmlkID0gcmFuZG9tSWQoKTtcbiAgfVxuXG4gIGNvcHkudXBkYXRlZCA9IGdldFVwZGF0ZWRUaW1lc3RhbXAoKTtcbiAgY29weS5zZWVkID0gcmFuZG9tSW50ZWdlcigpO1xuICBjb3B5Lmdyb3VwSWRzID0gZ2V0TmV3R3JvdXBJZHNGb3JEdXBsaWNhdGlvbihjb3B5Lmdyb3VwSWRzLCBlZGl0aW5nR3JvdXBJZCwgZnVuY3Rpb24gKGdyb3VwSWQpIHtcbiAgICBpZiAoIWdyb3VwSWRNYXBGb3JPcGVyYXRpb24uaGFzKGdyb3VwSWQpKSB7XG4gICAgICBncm91cElkTWFwRm9yT3BlcmF0aW9uLnNldChncm91cElkLCByYW5kb21JZCgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ3JvdXBJZE1hcEZvck9wZXJhdGlvbi5nZXQoZ3JvdXBJZCk7XG4gIH0pO1xuXG4gIGlmIChvdmVycmlkZXMpIHtcbiAgICBjb3B5ID0gT2JqZWN0LmFzc2lnbihjb3B5LCBvdmVycmlkZXMpO1xuICB9XG5cbiAgcmV0dXJuIGNvcHk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../element/newElement.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../element/newElement.ts?");
2723
2723
 
2724
2724
  /***/ }),
2725
2725
 
@@ -3005,7 +3005,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */
3005
3005
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3006
3006
 
3007
3007
  "use strict";
3008
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"MIME_TYPES\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES),\\n/* harmony export */ \\\"determineFocusDistance\\\": () => (/* reexport safe */ _element_collision__WEBPACK_IMPORTED_MODULE_14__.determineFocusDistance),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* binding */ exportToBlob),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* binding */ exportToCanvas),\\n/* harmony export */ \\\"exportToClipboard\\\": () => (/* binding */ exportToClipboard),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* binding */ exportToSvg),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _element_bounds__WEBPACK_IMPORTED_MODULE_12__.getCommonBoundingBox),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _renderer_renderElement__WEBPACK_IMPORTED_MODULE_11__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _groups__WEBPACK_IMPORTED_MODULE_13__.getMaximumGroups),\\n/* harmony export */ \\\"intersectElementWithLine\\\": () => (/* reexport safe */ _element_collision__WEBPACK_IMPORTED_MODULE_14__.intersectElementWithLine),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_10__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_10__.loadLibraryFromBlob),\\n/* harmony export */ \\\"loadSceneOrLibraryFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_10__.loadSceneOrLibraryFromBlob),\\n/* harmony export */ \\\"measureText\\\": () => (/* reexport safe */ _element_textElement__WEBPACK_IMPORTED_MODULE_15__.measureText),\\n/* harmony export */ \\\"mergeLibraryItems\\\": () => (/* reexport safe */ _data_library__WEBPACK_IMPORTED_MODULE_16__.mergeLibraryItems),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_8__.serializeAsJSON),\\n/* harmony export */ \\\"serializeLibraryAsJSON\\\": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_8__.serializeLibraryAsJSON)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \\\"../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/export */ \\\"../../scene/export.ts\\\");\\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../appState */ \\\"../../appState.ts\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../data/restore */ \\\"../../data/restore.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var _data_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/image */ \\\"../../data/image.ts\\\");\\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/json */ \\\"../../data/json.ts\\\");\\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../clipboard */ \\\"../../clipboard.ts\\\");\\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../data/blob */ \\\"../../data/blob.ts\\\");\\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../renderer/renderElement */ \\\"../../renderer/renderElement.ts\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../groups */ \\\"../../groups.ts\\\");\\n/* harmony import */ var _element_collision__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../element/collision */ \\\"../../element/collision.ts\\\");\\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../element/textElement */ \\\"../../element/textElement.ts\\\");\\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../data/library */ \\\"../../data/library.ts\\\");\\n\\r\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols);\\r\\n} return keys; }\\r\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\\r\\n var source = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst exportToCanvas = function (_ref) {\\r\\n let { elements, appState, files, maxWidthOrHeight, getDimensions } = _ref;\\r\\n const { elements: restoredElements, appState: restoredAppState } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_5__.restore)({\\r\\n elements,\\r\\n appState\\r\\n }, null, null);\\r\\n const { exportBackground, viewBackgroundColor } = restoredAppState;\\r\\n return (0,_scene_export__WEBPACK_IMPORTED_MODULE_2__.exportToCanvas)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(restoredElements), _objectSpread(_objectSpread({}, restoredAppState), {}, {\\r\\n offsetTop: 0,\\r\\n offsetLeft: 0,\\r\\n width: 0,\\r\\n height: 0\\r\\n }), files || {}, {\\r\\n exportBackground,\\r\\n viewBackgroundColor\\r\\n }, function (width, height) {\\r\\n var _a;\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n if (maxWidthOrHeight) {\\r\\n if (typeof getDimensions === \\\"function\\\") {\\r\\n console.warn(\\\"`getDimensions()` is ignored when `maxWidthOrHeight` is supplied.\\\");\\r\\n }\\r\\n const max = Math.max(width, height);\\r\\n const scale = maxWidthOrHeight / max;\\r\\n canvas.width = width * scale;\\r\\n canvas.height = height * scale;\\r\\n return {\\r\\n canvas,\\r\\n scale\\r\\n };\\r\\n }\\r\\n const ret = (getDimensions === null || getDimensions === void 0 ? void 0 : getDimensions(width, height)) || {\\r\\n width,\\r\\n height\\r\\n };\\r\\n canvas.width = ret.width;\\r\\n canvas.height = ret.height;\\r\\n return {\\r\\n canvas,\\r\\n scale: (_a = ret.scale) !== null && _a !== void 0 ? _a : 1\\r\\n };\\r\\n });\\r\\n};\\r\\nconst exportToBlob = /*#__PURE__*/ function () {\\r\\n var _ref2 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (opts) {\\r\\n var _a;\\r\\n let { mimeType = _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png, quality } = opts;\\r\\n if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png && typeof quality === \\\"number\\\") {\\r\\n console.warn(`\\\"quality\\\" will be ignored for \\\"${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png}\\\" mimeType`);\\r\\n } // typo in MIME type (should be \\\"jpeg\\\")\\r\\n if (mimeType === \\\"image/jpg\\\") {\\r\\n mimeType = _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg;\\r\\n }\\r\\n if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg && !((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportBackground)) {\\r\\n console.warn(`Defaulting \\\"exportBackground\\\" to \\\"true\\\" for \\\"${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg}\\\" mimeType`);\\r\\n opts = _objectSpread(_objectSpread({}, opts), {}, {\\r\\n appState: _objectSpread(_objectSpread({}, opts.appState), {}, {\\r\\n exportBackground: true\\r\\n })\\r\\n });\\r\\n }\\r\\n const canvas = yield exportToCanvas(opts);\\r\\n quality = quality ? quality : /image\\\\/jpe?g/.test(mimeType) ? 0.92 : 0.8;\\r\\n return new Promise(function (resolve, reject) {\\r\\n canvas.toBlob(/*#__PURE__*/ function () {\\r\\n var _ref3 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (blob) {\\r\\n var _a;\\r\\n if (!blob) {\\r\\n return reject(new Error(\\\"couldn't export to blob\\\"));\\r\\n }\\r\\n if (blob && mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png && ((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportEmbedScene)) {\\r\\n blob = yield (0,_data_image__WEBPACK_IMPORTED_MODULE_7__.encodePngMetadata)({\\r\\n blob,\\r\\n metadata: (0,_data_json__WEBPACK_IMPORTED_MODULE_8__.serializeAsJSON)(opts.elements, opts.appState, opts.files || {}, \\\"local\\\")\\r\\n });\\r\\n }\\r\\n resolve(blob);\\r\\n });\\r\\n return function (_x2) {\\r\\n return _ref3.apply(this, arguments);\\r\\n };\\r\\n }(), mimeType, quality);\\r\\n });\\r\\n });\\r\\n return function exportToBlob(_x) {\\r\\n return _ref2.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\nconst exportToSvg = /*#__PURE__*/ function () {\\r\\n var _ref4 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (_ref5) {\\r\\n let { elements, appState = (0,_appState__WEBPACK_IMPORTED_MODULE_3__.getDefaultAppState)(), files = {}, exportPadding } = _ref5;\\r\\n const { elements: restoredElements, appState: restoredAppState } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_5__.restore)({\\r\\n elements,\\r\\n appState\\r\\n }, null, null);\\r\\n return (0,_scene_export__WEBPACK_IMPORTED_MODULE_2__.exportToSvg)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(restoredElements), _objectSpread(_objectSpread({}, restoredAppState), {}, {\\r\\n exportPadding\\r\\n }), files);\\r\\n });\\r\\n return function exportToSvg(_x3) {\\r\\n return _ref4.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\nconst exportToClipboard = /*#__PURE__*/ function () {\\r\\n var _ref6 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (opts) {\\r\\n if (opts.type === \\\"svg\\\") {\\r\\n const svg = yield exportToSvg(opts);\\r\\n yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_9__.copyTextToSystemClipboard)(svg.outerHTML);\\r\\n }\\r\\n else if (opts.type === \\\"png\\\") {\\r\\n yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_9__.copyBlobToClipboardAsPng)(exportToBlob(opts));\\r\\n }\\r\\n else if (opts.type === \\\"json\\\") {\\r\\n const appState = _objectSpread(_objectSpread({\\r\\n offsetTop: 0,\\r\\n offsetLeft: 0,\\r\\n width: 0,\\r\\n height: 0\\r\\n }, (0,_appState__WEBPACK_IMPORTED_MODULE_3__.getDefaultAppState)()), opts.appState);\\r\\n yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_9__.copyToClipboard)(opts.elements, appState, opts.files);\\r\\n }\\r\\n else {\\r\\n throw new Error(\\\"Invalid export type\\\");\\r\\n }\\r\\n });\\r\\n return function exportToClipboard(_x4) {\\r\\n return _ref6.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\n\\r\\n\\r\\n\\r\\n //zsviczian\\r\\n //zsviczian\\r\\n //zsviczian\\r\\n //zsviczian\\r\\n //zsviczian\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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NkRBQWtCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV6QyxNQUFNLDJEQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVEO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sU0FBUyxpQkFBaUIsQ0FBQyxHQUFHO1FBQ25DLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFQUFFLENBQUM7QUFDbUU7QUFDc0I7QUFDOUI7QUFDTixDQUFDLFdBQVc7QUFFeEIsQ0FBQyxXQUFXO0FBRU8sQ0FBQyxXQUFXO0FBRWQsQ0FBQyxXQUFXO0FBRXJCLENBQUMsV0FBVztBQUViIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL3V0aWxzLnRzP2IxYjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGVudW1lcmFibGVPbmx5ICYmIChzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSkpLCBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IG51bGwgIT0gYXJndW1lbnRzW2ldID8gYXJndW1lbnRzW2ldIDoge307IGkgJSAyID8gb3duS2V5cyhPYmplY3Qoc291cmNlKSwgITApLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSkgOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSkgOiBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgZXhwb3J0VG9DYW52YXMgYXMgX2V4cG9ydFRvQ2FudmFzLCBleHBvcnRUb1N2ZyBhcyBfZXhwb3J0VG9TdmcgfSBmcm9tIFwiLi4vc2NlbmUvZXhwb3J0XCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0QXBwU3RhdGUgfSBmcm9tIFwiLi4vYXBwU3RhdGVcIjtcbmltcG9ydCB7IGdldE5vbkRlbGV0ZWRFbGVtZW50cyB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5pbXBvcnQgeyByZXN0b3JlIH0gZnJvbSBcIi4uL2RhdGEvcmVzdG9yZVwiO1xuaW1wb3J0IHsgTUlNRV9UWVBFUyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGVuY29kZVBuZ01ldGFkYXRhIH0gZnJvbSBcIi4uL2RhdGEvaW1hZ2VcIjtcbmltcG9ydCB7IHNlcmlhbGl6ZUFzSlNPTiB9IGZyb20gXCIuLi9kYXRhL2pzb25cIjtcbmltcG9ydCB7IGNvcHlCbG9iVG9DbGlwYm9hcmRBc1BuZywgY29weVRleHRUb1N5c3RlbUNsaXBib2FyZCwgY29weVRvQ2xpcGJvYXJkIH0gZnJvbSBcIi4uL2NsaXBib2FyZFwiO1xuZXhwb3J0IHsgTUlNRV9UWVBFUyB9O1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQ2FudmFzID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICBhcHBTdGF0ZSxcbiAgICBmaWxlcyxcbiAgICBtYXhXaWR0aE9ySGVpZ2h0LFxuICAgIGdldERpbWVuc2lvbnNcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50czogcmVzdG9yZWRFbGVtZW50cyxcbiAgICBhcHBTdGF0ZTogcmVzdG9yZWRBcHBTdGF0ZVxuICB9ID0gcmVzdG9yZSh7XG4gICAgZWxlbWVudHMsXG4gICAgYXBwU3RhdGVcbiAgfSwgbnVsbCwgbnVsbCk7XG4gIGNvbnN0IHtcbiAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3JcbiAgfSA9IHJlc3RvcmVkQXBwU3RhdGU7XG4gIHJldHVybiBfZXhwb3J0VG9DYW52YXMoZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzKHJlc3RvcmVkRWxlbWVudHMpLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RvcmVkQXBwU3RhdGUpLCB7fSwge1xuICAgIG9mZnNldFRvcDogMCxcbiAgICBvZmZzZXRMZWZ0OiAwLFxuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMFxuICB9KSwgZmlsZXMgfHwge30sIHtcbiAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3JcbiAgfSwgZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuXG4gICAgaWYgKG1heFdpZHRoT3JIZWlnaHQpIHtcbiAgICAgIGlmICh0eXBlb2YgZ2V0RGltZW5zaW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcImBnZXREaW1lbnNpb25zKClgIGlzIGlnbm9yZWQgd2hlbiBgbWF4V2lkdGhPckhlaWdodGAgaXMgc3VwcGxpZWQuXCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXggPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGNvbnN0IHNjYWxlID0gbWF4V2lkdGhPckhlaWdodCAvIG1heDtcbiAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoICogc2NhbGU7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0ICogc2NhbGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjYW52YXMsXG4gICAgICAgIHNjYWxlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IGdldERpbWVuc2lvbnM/Lih3aWR0aCwgaGVpZ2h0KSB8fCB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH07XG4gICAgY2FudmFzLndpZHRoID0gcmV0LndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSByZXQuaGVpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICBjYW52YXMsXG4gICAgICBzY2FsZTogcmV0LnNjYWxlID8/IDFcbiAgICB9O1xuICB9KTtcbn07XG5leHBvcnQgY29uc3QgZXhwb3J0VG9CbG9iID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qIChvcHRzKSB7XG4gICAgbGV0IHtcbiAgICAgIG1pbWVUeXBlID0gTUlNRV9UWVBFUy5wbmcsXG4gICAgICBxdWFsaXR5XG4gICAgfSA9IG9wdHM7XG5cbiAgICBpZiAobWltZVR5cGUgPT09IE1JTUVfVFlQRVMucG5nICYmIHR5cGVvZiBxdWFsaXR5ID09PSBcIm51bWJlclwiKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFwicXVhbGl0eVwiIHdpbGwgYmUgaWdub3JlZCBmb3IgXCIke01JTUVfVFlQRVMucG5nfVwiIG1pbWVUeXBlYCk7XG4gICAgfSAvLyB0eXBvIGluIE1JTUUgdHlwZSAoc2hvdWxkIGJlIFwianBlZ1wiKVxuXG5cbiAgICBpZiAobWltZVR5cGUgPT09IFwiaW1hZ2UvanBnXCIpIHtcbiAgICAgIG1pbWVUeXBlID0gTUlNRV9UWVBFUy5qcGc7XG4gICAgfVxuXG4gICAgaWYgKG1pbWVUeXBlID09PSBNSU1FX1RZUEVTLmpwZyAmJiAhb3B0cy5hcHBTdGF0ZT8uZXhwb3J0QmFja2dyb3VuZCkge1xuICAgICAgY29uc29sZS53YXJuKGBEZWZhdWx0aW5nIFwiZXhwb3J0QmFja2dyb3VuZFwiIHRvIFwidHJ1ZVwiIGZvciBcIiR7TUlNRV9UWVBFUy5qcGd9XCIgbWltZVR5cGVgKTtcbiAgICAgIG9wdHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9wdHMpLCB7fSwge1xuICAgICAgICBhcHBTdGF0ZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvcHRzLmFwcFN0YXRlKSwge30sIHtcbiAgICAgICAgICBleHBvcnRCYWNrZ3JvdW5kOiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjYW52YXMgPSB5aWVsZCBleHBvcnRUb0NhbnZhcyhvcHRzKTtcbiAgICBxdWFsaXR5ID0gcXVhbGl0eSA/IHF1YWxpdHkgOiAvaW1hZ2VcXC9qcGU/Zy8udGVzdChtaW1lVHlwZSkgPyAwLjkyIDogMC44O1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBjYW52YXMudG9CbG9iKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3JlZjMgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKGJsb2IpIHtcbiAgICAgICAgICBpZiAoIWJsb2IpIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKFwiY291bGRuJ3QgZXhwb3J0IHRvIGJsb2JcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChibG9iICYmIG1pbWVUeXBlID09PSBNSU1FX1RZUEVTLnBuZyAmJiBvcHRzLmFwcFN0YXRlPy5leHBvcnRFbWJlZFNjZW5lKSB7XG4gICAgICAgICAgICBibG9iID0geWllbGQgZW5jb2RlUG5nTWV0YWRhdGEoe1xuICAgICAgICAgICAgICBibG9iLFxuICAgICAgICAgICAgICBtZXRhZGF0YTogc2VyaWFsaXplQXNKU09OKG9wdHMuZWxlbWVudHMsIG9wdHMuYXBwU3RhdGUsIG9wdHMuZmlsZXMgfHwge30sIFwibG9jYWxcIilcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUoYmxvYik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gyKSB7XG4gICAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KCksIG1pbWVUeXBlLCBxdWFsaXR5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGV4cG9ydFRvQmxvYihfeCkge1xuICAgIHJldHVybiBfcmVmMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSgpO1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvU3ZnID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWY0ID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qIChfcmVmNSkge1xuICAgIGxldCB7XG4gICAgICBlbGVtZW50cyxcbiAgICAgIGFwcFN0YXRlID0gZ2V0RGVmYXVsdEFwcFN0YXRlKCksXG4gICAgICBmaWxlcyA9IHt9LFxuICAgICAgZXhwb3J0UGFkZGluZ1xuICAgIH0gPSBfcmVmNTtcbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50czogcmVzdG9yZWRFbGVtZW50cyxcbiAgICAgIGFwcFN0YXRlOiByZXN0b3JlZEFwcFN0YXRlXG4gICAgfSA9IHJlc3RvcmUoe1xuICAgICAgZWxlbWVudHMsXG4gICAgICBhcHBTdGF0ZVxuICAgIH0sIG51bGwsIG51bGwpO1xuICAgIHJldHVybiBfZXhwb3J0VG9TdmcoZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzKHJlc3RvcmVkRWxlbWVudHMpLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RvcmVkQXBwU3RhdGUpLCB7fSwge1xuICAgICAgZXhwb3J0UGFkZGluZ1xuICAgIH0pLCBmaWxlcyk7XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbiBleHBvcnRUb1N2ZyhfeDMpIHtcbiAgICByZXR1cm4gX3JlZjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn0oKTtcbmV4cG9ydCBjb25zdCBleHBvcnRUb0NsaXBib2FyZCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIHZhciBfcmVmNiA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKiAob3B0cykge1xuICAgIGlmIChvcHRzLnR5cGUgPT09IFwic3ZnXCIpIHtcbiAgICAgIGNvbnN0IHN2ZyA9IHlpZWxkIGV4cG9ydFRvU3ZnKG9wdHMpO1xuICAgICAgeWllbGQgY29weVRleHRUb1N5c3RlbUNsaXBib2FyZChzdmcub3V0ZXJIVE1MKTtcbiAgICB9IGVsc2UgaWYgKG9wdHMudHlwZSA9PT0gXCJwbmdcIikge1xuICAgICAgeWllbGQgY29weUJsb2JUb0NsaXBib2FyZEFzUG5nKGV4cG9ydFRvQmxvYihvcHRzKSk7XG4gICAgfSBlbHNlIGlmIChvcHRzLnR5cGUgPT09IFwianNvblwiKSB7XG4gICAgICBjb25zdCBhcHBTdGF0ZSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7XG4gICAgICAgIG9mZnNldFRvcDogMCxcbiAgICAgICAgb2Zmc2V0TGVmdDogMCxcbiAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgIGhlaWdodDogMFxuICAgICAgfSwgZ2V0RGVmYXVsdEFwcFN0YXRlKCkpLCBvcHRzLmFwcFN0YXRlKTtcblxuICAgICAgeWllbGQgY29weVRvQ2xpcGJvYXJkKG9wdHMuZWxlbWVudHMsIGFwcFN0YXRlLCBvcHRzLmZpbGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBleHBvcnQgdHlwZVwiKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbiBleHBvcnRUb0NsaXBib2FyZChfeDQpIHtcbiAgICByZXR1cm4gX3JlZjYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn0oKTtcbmV4cG9ydCB7IHNlcmlhbGl6ZUFzSlNPTiwgc2VyaWFsaXplTGlicmFyeUFzSlNPTiB9IGZyb20gXCIuLi9kYXRhL2pzb25cIjtcbmV4cG9ydCB7IGxvYWRGcm9tQmxvYiwgbG9hZFNjZW5lT3JMaWJyYXJ5RnJvbUJsb2IsIGxvYWRMaWJyYXJ5RnJvbUJsb2IgfSBmcm9tIFwiLi4vZGF0YS9ibG9iXCI7XG5leHBvcnQgeyBnZXRGcmVlRHJhd1N2Z1BhdGggfSBmcm9tIFwiLi4vcmVuZGVyZXIvcmVuZGVyRWxlbWVudFwiO1xuZXhwb3J0IHsgZ2V0Q29tbW9uQm91bmRpbmdCb3ggfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjsgLy96c3ZpY3ppYW5cblxuZXhwb3J0IHsgZ2V0TWF4aW11bUdyb3VwcyB9IGZyb20gXCIuLi9ncm91cHNcIjsgLy96c3ZpY3ppYW5cblxuZXhwb3J0IHsgaW50ZXJzZWN0RWxlbWVudFdpdGhMaW5lIH0gZnJvbSBcIi4uL2VsZW1lbnQvY29sbGlzaW9uXCI7IC8venN2aWN6aWFuXG5cbmV4cG9ydCB7IGRldGVybWluZUZvY3VzRGlzdGFuY2UgfSBmcm9tIFwiLi4vZWxlbWVudC9jb2xsaXNpb25cIjsgLy96c3ZpY3ppYW5cblxuZXhwb3J0IHsgbWVhc3VyZVRleHQgfSBmcm9tIFwiLi4vZWxlbWVudC90ZXh0RWxlbWVudFwiOyAvL3pzdmljemlhblxuXG5leHBvcnQgeyBtZXJnZUxpYnJhcnlJdGVtcyB9IGZyb20gXCIuLi9kYXRhL2xpYnJhcnlcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///../utils.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../utils.ts?");
3008
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"MIME_TYPES\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES),\\n/* harmony export */ \\\"determineFocusDistance\\\": () => (/* reexport safe */ _element_collision__WEBPACK_IMPORTED_MODULE_14__.determineFocusDistance),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* binding */ exportToBlob),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* binding */ exportToCanvas),\\n/* harmony export */ \\\"exportToClipboard\\\": () => (/* binding */ exportToClipboard),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* binding */ exportToSvg),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _element_bounds__WEBPACK_IMPORTED_MODULE_12__.getCommonBoundingBox),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _renderer_renderElement__WEBPACK_IMPORTED_MODULE_11__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _groups__WEBPACK_IMPORTED_MODULE_13__.getMaximumGroups),\\n/* harmony export */ \\\"intersectElementWithLine\\\": () => (/* reexport safe */ _element_collision__WEBPACK_IMPORTED_MODULE_14__.intersectElementWithLine),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_10__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_10__.loadLibraryFromBlob),\\n/* harmony export */ \\\"loadSceneOrLibraryFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_10__.loadSceneOrLibraryFromBlob),\\n/* harmony export */ \\\"measureText\\\": () => (/* reexport safe */ _element_textElement__WEBPACK_IMPORTED_MODULE_15__.measureText),\\n/* harmony export */ \\\"mergeLibraryItems\\\": () => (/* reexport safe */ _data_library__WEBPACK_IMPORTED_MODULE_16__.mergeLibraryItems),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_8__.serializeAsJSON),\\n/* harmony export */ \\\"serializeLibraryAsJSON\\\": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_8__.serializeLibraryAsJSON)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ \\\"../../../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js\\\");\\n/* harmony import */ var _scene_export__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scene/export */ \\\"../../scene/export.ts\\\");\\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../appState */ \\\"../../appState.ts\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../data/restore */ \\\"../../data/restore.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var _data_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/image */ \\\"../../data/image.ts\\\");\\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/json */ \\\"../../data/json.ts\\\");\\n/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../clipboard */ \\\"../../clipboard.ts\\\");\\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../data/blob */ \\\"../../data/blob.ts\\\");\\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../renderer/renderElement */ \\\"../../renderer/renderElement.ts\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _groups__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../groups */ \\\"../../groups.ts\\\");\\n/* harmony import */ var _element_collision__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../element/collision */ \\\"../../element/collision.ts\\\");\\n/* harmony import */ var _element_textElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../element/textElement */ \\\"../../element/textElement.ts\\\");\\n/* harmony import */ var _data_library__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../data/library */ \\\"../../data/library.ts\\\");\\n\\r\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols);\\r\\n} return keys; }\\r\\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) {\\r\\n var source = null != arguments[i] ? arguments[i] : {};\\r\\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst exportToCanvas = function (_ref) {\\r\\n let { elements, appState, files, maxWidthOrHeight, getDimensions, exportPadding //zsviczian\\r\\n } = _ref;\\r\\n const { elements: restoredElements, appState: restoredAppState } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_5__.restore)({\\r\\n elements,\\r\\n appState\\r\\n }, null, null);\\r\\n const { exportBackground, viewBackgroundColor } = restoredAppState;\\r\\n return (0,_scene_export__WEBPACK_IMPORTED_MODULE_2__.exportToCanvas)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(restoredElements), _objectSpread(_objectSpread({}, restoredAppState), {}, {\\r\\n offsetTop: 0,\\r\\n offsetLeft: 0,\\r\\n width: 0,\\r\\n height: 0\\r\\n }), files || {}, {\\r\\n exportBackground,\\r\\n exportPadding,\\r\\n viewBackgroundColor\\r\\n }, function (width, height) {\\r\\n var _a;\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n if (maxWidthOrHeight) {\\r\\n if (typeof getDimensions === \\\"function\\\") {\\r\\n console.warn(\\\"`getDimensions()` is ignored when `maxWidthOrHeight` is supplied.\\\");\\r\\n }\\r\\n const max = Math.max(width, height);\\r\\n const scale = maxWidthOrHeight / max;\\r\\n canvas.width = width * scale;\\r\\n canvas.height = height * scale;\\r\\n return {\\r\\n canvas,\\r\\n scale\\r\\n };\\r\\n }\\r\\n const ret = (getDimensions === null || getDimensions === void 0 ? void 0 : getDimensions(width, height)) || {\\r\\n width,\\r\\n height\\r\\n };\\r\\n canvas.width = ret.width;\\r\\n canvas.height = ret.height;\\r\\n return {\\r\\n canvas,\\r\\n scale: (_a = ret.scale) !== null && _a !== void 0 ? _a : 1\\r\\n };\\r\\n });\\r\\n};\\r\\nconst exportToBlob = /*#__PURE__*/ function () {\\r\\n var _ref2 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (opts) {\\r\\n var _a;\\r\\n let { mimeType = _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png, quality } = opts;\\r\\n if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png && typeof quality === \\\"number\\\") {\\r\\n console.warn(`\\\"quality\\\" will be ignored for \\\"${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png}\\\" mimeType`);\\r\\n } // typo in MIME type (should be \\\"jpeg\\\")\\r\\n if (mimeType === \\\"image/jpg\\\") {\\r\\n mimeType = _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg;\\r\\n }\\r\\n if (mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg && !((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportBackground)) {\\r\\n console.warn(`Defaulting \\\"exportBackground\\\" to \\\"true\\\" for \\\"${_constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.jpg}\\\" mimeType`);\\r\\n opts = _objectSpread(_objectSpread({}, opts), {}, {\\r\\n appState: _objectSpread(_objectSpread({}, opts.appState), {}, {\\r\\n exportBackground: true\\r\\n })\\r\\n });\\r\\n }\\r\\n const canvas = yield exportToCanvas(opts);\\r\\n quality = quality ? quality : /image\\\\/jpe?g/.test(mimeType) ? 0.92 : 0.8;\\r\\n return new Promise(function (resolve, reject) {\\r\\n canvas.toBlob(/*#__PURE__*/ function () {\\r\\n var _ref3 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (blob) {\\r\\n var _a;\\r\\n if (!blob) {\\r\\n return reject(new Error(\\\"couldn't export to blob\\\"));\\r\\n }\\r\\n if (blob && mimeType === _constants__WEBPACK_IMPORTED_MODULE_6__.MIME_TYPES.png && ((_a = opts.appState) === null || _a === void 0 ? void 0 : _a.exportEmbedScene)) {\\r\\n blob = yield (0,_data_image__WEBPACK_IMPORTED_MODULE_7__.encodePngMetadata)({\\r\\n blob,\\r\\n metadata: (0,_data_json__WEBPACK_IMPORTED_MODULE_8__.serializeAsJSON)(opts.elements, opts.appState, opts.files || {}, \\\"local\\\")\\r\\n });\\r\\n }\\r\\n resolve(blob);\\r\\n });\\r\\n return function (_x2) {\\r\\n return _ref3.apply(this, arguments);\\r\\n };\\r\\n }(), mimeType, quality);\\r\\n });\\r\\n });\\r\\n return function exportToBlob(_x) {\\r\\n return _ref2.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\nconst exportToSvg = /*#__PURE__*/ function () {\\r\\n var _ref4 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (_ref5) {\\r\\n let { elements, appState = (0,_appState__WEBPACK_IMPORTED_MODULE_3__.getDefaultAppState)(), files = {}, exportPadding } = _ref5;\\r\\n const { elements: restoredElements, appState: restoredAppState } = (0,_data_restore__WEBPACK_IMPORTED_MODULE_5__.restore)({\\r\\n elements,\\r\\n appState\\r\\n }, null, null);\\r\\n return (0,_scene_export__WEBPACK_IMPORTED_MODULE_2__.exportToSvg)((0,_element__WEBPACK_IMPORTED_MODULE_4__.getNonDeletedElements)(restoredElements), _objectSpread(_objectSpread({}, restoredAppState), {}, {\\r\\n exportPadding\\r\\n }), files);\\r\\n });\\r\\n return function exportToSvg(_x3) {\\r\\n return _ref4.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\nconst exportToClipboard = /*#__PURE__*/ function () {\\r\\n var _ref6 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (opts) {\\r\\n if (opts.type === \\\"svg\\\") {\\r\\n const svg = yield exportToSvg(opts);\\r\\n yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_9__.copyTextToSystemClipboard)(svg.outerHTML);\\r\\n }\\r\\n else if (opts.type === \\\"png\\\") {\\r\\n yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_9__.copyBlobToClipboardAsPng)(exportToBlob(opts));\\r\\n }\\r\\n else if (opts.type === \\\"json\\\") {\\r\\n const appState = _objectSpread(_objectSpread({\\r\\n offsetTop: 0,\\r\\n offsetLeft: 0,\\r\\n width: 0,\\r\\n height: 0\\r\\n }, (0,_appState__WEBPACK_IMPORTED_MODULE_3__.getDefaultAppState)()), opts.appState);\\r\\n yield (0,_clipboard__WEBPACK_IMPORTED_MODULE_9__.copyToClipboard)(opts.elements, appState, opts.files);\\r\\n }\\r\\n else {\\r\\n throw new Error(\\\"Invalid export type\\\");\\r\\n }\\r\\n });\\r\\n return function exportToClipboard(_x4) {\\r\\n return _ref6.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\n\\r\\n\\r\\n\\r\\n //zsviczian\\r\\n //zsviczian\\r\\n //zsviczian\\r\\n //zsviczian\\r\\n //zsviczian\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Z0JBQ1IsTUFBTSxFQUFFLENBQUM7YUFDVixFQUFFLDZEQUFrQixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFekMsTUFBTSwyREFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1RDthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFNBQVMsaUJBQWlCLENBQUMsR0FBRztRQUNuQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztBQUNKLENBQUMsRUFBRSxDQUFDO0FBQ21FO0FBQ3NCO0FBQzlCO0FBQ04sQ0FBQyxXQUFXO0FBRXhCLENBQUMsV0FBVztBQUVPLENBQUMsV0FBVztBQUVkLENBQUMsV0FBVztBQUVyQixDQUFDLFdBQVc7QUFFYiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi91dGlscy50cz9iMWI4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yXCI7XG5pbXBvcnQgX2RlZmluZVByb3BlcnR5IGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCI7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBlbnVtZXJhYmxlT25seSAmJiAoc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pKSwga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBudWxsICE9IGFyZ3VtZW50c1tpXSA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpICUgMiA/IG93bktleXMoT2JqZWN0KHNvdXJjZSksICEwKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pIDogT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpIDogb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGV4cG9ydFRvQ2FudmFzIGFzIF9leHBvcnRUb0NhbnZhcywgZXhwb3J0VG9TdmcgYXMgX2V4cG9ydFRvU3ZnIH0gZnJvbSBcIi4uL3NjZW5lL2V4cG9ydFwiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEFwcFN0YXRlIH0gZnJvbSBcIi4uL2FwcFN0YXRlXCI7XG5pbXBvcnQgeyBnZXROb25EZWxldGVkRWxlbWVudHMgfSBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IHsgcmVzdG9yZSB9IGZyb20gXCIuLi9kYXRhL3Jlc3RvcmVcIjtcbmltcG9ydCB7IE1JTUVfVFlQRVMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBlbmNvZGVQbmdNZXRhZGF0YSB9IGZyb20gXCIuLi9kYXRhL2ltYWdlXCI7XG5pbXBvcnQgeyBzZXJpYWxpemVBc0pTT04gfSBmcm9tIFwiLi4vZGF0YS9qc29uXCI7XG5pbXBvcnQgeyBjb3B5QmxvYlRvQ2xpcGJvYXJkQXNQbmcsIGNvcHlUZXh0VG9TeXN0ZW1DbGlwYm9hcmQsIGNvcHlUb0NsaXBib2FyZCB9IGZyb20gXCIuLi9jbGlwYm9hcmRcIjtcbmV4cG9ydCB7IE1JTUVfVFlQRVMgfTtcbmV4cG9ydCBjb25zdCBleHBvcnRUb0NhbnZhcyA9IGZ1bmN0aW9uIChfcmVmKSB7XG4gIGxldCB7XG4gICAgZWxlbWVudHMsXG4gICAgYXBwU3RhdGUsXG4gICAgZmlsZXMsXG4gICAgbWF4V2lkdGhPckhlaWdodCxcbiAgICBnZXREaW1lbnNpb25zLFxuICAgIGV4cG9ydFBhZGRpbmcgLy96c3ZpY3ppYW5cblxuICB9ID0gX3JlZjtcbiAgY29uc3Qge1xuICAgIGVsZW1lbnRzOiByZXN0b3JlZEVsZW1lbnRzLFxuICAgIGFwcFN0YXRlOiByZXN0b3JlZEFwcFN0YXRlXG4gIH0gPSByZXN0b3JlKHtcbiAgICBlbGVtZW50cyxcbiAgICBhcHBTdGF0ZVxuICB9LCBudWxsLCBudWxsKTtcbiAgY29uc3Qge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgdmlld0JhY2tncm91bmRDb2xvclxuICB9ID0gcmVzdG9yZWRBcHBTdGF0ZTtcbiAgcmV0dXJuIF9leHBvcnRUb0NhbnZhcyhnZXROb25EZWxldGVkRWxlbWVudHMocmVzdG9yZWRFbGVtZW50cyksIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdG9yZWRBcHBTdGF0ZSksIHt9LCB7XG4gICAgb2Zmc2V0VG9wOiAwLFxuICAgIG9mZnNldExlZnQ6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH0pLCBmaWxlcyB8fCB7fSwge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgZXhwb3J0UGFkZGluZyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yXG4gIH0sIGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcblxuICAgIGlmIChtYXhXaWR0aE9ySGVpZ2h0KSB7XG4gICAgICBpZiAodHlwZW9mIGdldERpbWVuc2lvbnMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLndhcm4oXCJgZ2V0RGltZW5zaW9ucygpYCBpcyBpZ25vcmVkIHdoZW4gYG1heFdpZHRoT3JIZWlnaHRgIGlzIHN1cHBsaWVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWF4ID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7XG4gICAgICBjb25zdCBzY2FsZSA9IG1heFdpZHRoT3JIZWlnaHQgLyBtYXg7XG4gICAgICBjYW52YXMud2lkdGggPSB3aWR0aCAqIHNjYWxlO1xuICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodCAqIHNjYWxlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY2FudmFzLFxuICAgICAgICBzY2FsZVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByZXQgPSBnZXREaW1lbnNpb25zPy4od2lkdGgsIGhlaWdodCkgfHwge1xuICAgICAgd2lkdGgsXG4gICAgICBoZWlnaHRcbiAgICB9O1xuICAgIGNhbnZhcy53aWR0aCA9IHJldC53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcmV0LmhlaWdodDtcbiAgICByZXR1cm4ge1xuICAgICAgY2FudmFzLFxuICAgICAgc2NhbGU6IHJldC5zY2FsZSA/PyAxXG4gICAgfTtcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQmxvYiA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKiAob3B0cykge1xuICAgIGxldCB7XG4gICAgICBtaW1lVHlwZSA9IE1JTUVfVFlQRVMucG5nLFxuICAgICAgcXVhbGl0eVxuICAgIH0gPSBvcHRzO1xuXG4gICAgaWYgKG1pbWVUeXBlID09PSBNSU1FX1RZUEVTLnBuZyAmJiB0eXBlb2YgcXVhbGl0eSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgY29uc29sZS53YXJuKGBcInF1YWxpdHlcIiB3aWxsIGJlIGlnbm9yZWQgZm9yIFwiJHtNSU1FX1RZUEVTLnBuZ31cIiBtaW1lVHlwZWApO1xuICAgIH0gLy8gdHlwbyBpbiBNSU1FIHR5cGUgKHNob3VsZCBiZSBcImpwZWdcIilcblxuXG4gICAgaWYgKG1pbWVUeXBlID09PSBcImltYWdlL2pwZ1wiKSB7XG4gICAgICBtaW1lVHlwZSA9IE1JTUVfVFlQRVMuanBnO1xuICAgIH1cblxuICAgIGlmIChtaW1lVHlwZSA9PT0gTUlNRV9UWVBFUy5qcGcgJiYgIW9wdHMuYXBwU3RhdGU/LmV4cG9ydEJhY2tncm91bmQpIHtcbiAgICAgIGNvbnNvbGUud2FybihgRGVmYXVsdGluZyBcImV4cG9ydEJhY2tncm91bmRcIiB0byBcInRydWVcIiBmb3IgXCIke01JTUVfVFlQRVMuanBnfVwiIG1pbWVUeXBlYCk7XG4gICAgICBvcHRzID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvcHRzKSwge30sIHtcbiAgICAgICAgYXBwU3RhdGU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3B0cy5hcHBTdGF0ZSksIHt9LCB7XG4gICAgICAgICAgZXhwb3J0QmFja2dyb3VuZDogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgY2FudmFzID0geWllbGQgZXhwb3J0VG9DYW52YXMob3B0cyk7XG4gICAgcXVhbGl0eSA9IHF1YWxpdHkgPyBxdWFsaXR5IDogL2ltYWdlXFwvanBlP2cvLnRlc3QobWltZVR5cGUpID8gMC45MiA6IDAuODtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgY2FudmFzLnRvQmxvYiggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qIChibG9iKSB7XG4gICAgICAgICAgaWYgKCFibG9iKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihcImNvdWxkbid0IGV4cG9ydCB0byBibG9iXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYmxvYiAmJiBtaW1lVHlwZSA9PT0gTUlNRV9UWVBFUy5wbmcgJiYgb3B0cy5hcHBTdGF0ZT8uZXhwb3J0RW1iZWRTY2VuZSkge1xuICAgICAgICAgICAgYmxvYiA9IHlpZWxkIGVuY29kZVBuZ01ldGFkYXRhKHtcbiAgICAgICAgICAgICAgYmxvYixcbiAgICAgICAgICAgICAgbWV0YWRhdGE6IHNlcmlhbGl6ZUFzSlNPTihvcHRzLmVsZW1lbnRzLCBvcHRzLmFwcFN0YXRlLCBvcHRzLmZpbGVzIHx8IHt9LCBcImxvY2FsXCIpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKGJsb2IpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94Mikge1xuICAgICAgICAgIHJldHVybiBfcmVmMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfSgpLCBtaW1lVHlwZSwgcXVhbGl0eSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbiBleHBvcnRUb0Jsb2IoX3gpIHtcbiAgICByZXR1cm4gX3JlZjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn0oKTtcbmV4cG9ydCBjb25zdCBleHBvcnRUb1N2ZyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIHZhciBfcmVmNCA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKiAoX3JlZjUpIHtcbiAgICBsZXQge1xuICAgICAgZWxlbWVudHMsXG4gICAgICBhcHBTdGF0ZSA9IGdldERlZmF1bHRBcHBTdGF0ZSgpLFxuICAgICAgZmlsZXMgPSB7fSxcbiAgICAgIGV4cG9ydFBhZGRpbmdcbiAgICB9ID0gX3JlZjU7XG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudHM6IHJlc3RvcmVkRWxlbWVudHMsXG4gICAgICBhcHBTdGF0ZTogcmVzdG9yZWRBcHBTdGF0ZVxuICAgIH0gPSByZXN0b3JlKHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgYXBwU3RhdGVcbiAgICB9LCBudWxsLCBudWxsKTtcbiAgICByZXR1cm4gX2V4cG9ydFRvU3ZnKGdldE5vbkRlbGV0ZWRFbGVtZW50cyhyZXN0b3JlZEVsZW1lbnRzKSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0b3JlZEFwcFN0YXRlKSwge30sIHtcbiAgICAgIGV4cG9ydFBhZGRpbmdcbiAgICB9KSwgZmlsZXMpO1xuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gZXhwb3J0VG9TdmcoX3gzKSB7XG4gICAgcmV0dXJuIF9yZWY0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7XG5leHBvcnQgY29uc3QgZXhwb3J0VG9DbGlwYm9hcmQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICB2YXIgX3JlZjYgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKG9wdHMpIHtcbiAgICBpZiAob3B0cy50eXBlID09PSBcInN2Z1wiKSB7XG4gICAgICBjb25zdCBzdmcgPSB5aWVsZCBleHBvcnRUb1N2ZyhvcHRzKTtcbiAgICAgIHlpZWxkIGNvcHlUZXh0VG9TeXN0ZW1DbGlwYm9hcmQoc3ZnLm91dGVySFRNTCk7XG4gICAgfSBlbHNlIGlmIChvcHRzLnR5cGUgPT09IFwicG5nXCIpIHtcbiAgICAgIHlpZWxkIGNvcHlCbG9iVG9DbGlwYm9hcmRBc1BuZyhleHBvcnRUb0Jsb2Iob3B0cykpO1xuICAgIH0gZWxzZSBpZiAob3B0cy50eXBlID09PSBcImpzb25cIikge1xuICAgICAgY29uc3QgYXBwU3RhdGUgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe1xuICAgICAgICBvZmZzZXRUb3A6IDAsXG4gICAgICAgIG9mZnNldExlZnQ6IDAsXG4gICAgICAgIHdpZHRoOiAwLFxuICAgICAgICBoZWlnaHQ6IDBcbiAgICAgIH0sIGdldERlZmF1bHRBcHBTdGF0ZSgpKSwgb3B0cy5hcHBTdGF0ZSk7XG5cbiAgICAgIHlpZWxkIGNvcHlUb0NsaXBib2FyZChvcHRzLmVsZW1lbnRzLCBhcHBTdGF0ZSwgb3B0cy5maWxlcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZXhwb3J0IHR5cGVcIik7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gZXhwb3J0VG9DbGlwYm9hcmQoX3g0KSB7XG4gICAgcmV0dXJuIF9yZWY2LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7XG5leHBvcnQgeyBzZXJpYWxpemVBc0pTT04sIHNlcmlhbGl6ZUxpYnJhcnlBc0pTT04gfSBmcm9tIFwiLi4vZGF0YS9qc29uXCI7XG5leHBvcnQgeyBsb2FkRnJvbUJsb2IsIGxvYWRTY2VuZU9yTGlicmFyeUZyb21CbG9iLCBsb2FkTGlicmFyeUZyb21CbG9iIH0gZnJvbSBcIi4uL2RhdGEvYmxvYlwiO1xuZXhwb3J0IHsgZ2V0RnJlZURyYXdTdmdQYXRoIH0gZnJvbSBcIi4uL3JlbmRlcmVyL3JlbmRlckVsZW1lbnRcIjtcbmV4cG9ydCB7IGdldENvbW1vbkJvdW5kaW5nQm94IH0gZnJvbSBcIi4uL2VsZW1lbnQvYm91bmRzXCI7IC8venN2aWN6aWFuXG5cbmV4cG9ydCB7IGdldE1heGltdW1Hcm91cHMgfSBmcm9tIFwiLi4vZ3JvdXBzXCI7IC8venN2aWN6aWFuXG5cbmV4cG9ydCB7IGludGVyc2VjdEVsZW1lbnRXaXRoTGluZSB9IGZyb20gXCIuLi9lbGVtZW50L2NvbGxpc2lvblwiOyAvL3pzdmljemlhblxuXG5leHBvcnQgeyBkZXRlcm1pbmVGb2N1c0Rpc3RhbmNlIH0gZnJvbSBcIi4uL2VsZW1lbnQvY29sbGlzaW9uXCI7IC8venN2aWN6aWFuXG5cbmV4cG9ydCB7IG1lYXN1cmVUZXh0IH0gZnJvbSBcIi4uL2VsZW1lbnQvdGV4dEVsZW1lbnRcIjsgLy96c3ZpY3ppYW5cblxuZXhwb3J0IHsgbWVyZ2VMaWJyYXJ5SXRlbXMgfSBmcm9tIFwiLi4vZGF0YS9saWJyYXJ5XCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../utils.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../utils.ts?");
3009
3009
 
3010
3010
  /***/ }),
3011
3011
 
@@ -3038,7 +3038,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
3038
3038
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3039
3039
 
3040
3040
  "use strict";
3041
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"randomId\\\": () => (/* binding */ randomId),\\n/* harmony export */ \\\"randomInteger\\\": () => (/* binding */ randomInteger),\\n/* harmony export */ \\\"reseed\\\": () => (/* binding */ reseed)\\n/* harmony export */ });\\n/* harmony import */ var roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/math */ \\\"../../../node_modules/roughjs/bin/math.js\\\");\\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ \\\"../../../node_modules/nanoid/index.browser.js\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \\\"../../utils.ts\\\");\\n\\r\\n\\r\\n\\r\\nlet random = new roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__.Random(Date.now());\\r\\nlet testIdBase = 0;\\r\\nconst randomInteger = function () {\\r\\n return Math.floor(random.next() * Math.pow(2, 31));\\r\\n};\\r\\nconst reseed = function (seed) {\\r\\n random = new roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__.Random(seed);\\r\\n testIdBase = 0;\\r\\n};\\r\\nconst randomId = function () {\\r\\n return (0,_utils__WEBPACK_IMPORTED_MODULE_1__.isTestEnv)() ? `id${testIdBase++}` : (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcmFuZG9tLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUEwQztBQUNWO0FBQ0k7QUFDcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxvREFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUNaLE1BQU0sYUFBYSxHQUFHO0lBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsVUFBQyxFQUFJLEVBQUUsRUFBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUNLLE1BQU0sTUFBTSxHQUFHLFVBQVUsSUFBSTtJQUNsQyxNQUFNLEdBQUcsSUFBSSxvREFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0ssTUFBTSxRQUFRLEdBQUc7SUFDdEIsT0FBTyxpREFBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsOENBQU0sRUFBRSxDQUFDO0FBQ3RELENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9yYW5kb20udHM/YWRlZCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYW5kb20gfSBmcm9tIFwicm91Z2hqcy9iaW4vbWF0aFwiO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIm5hbm9pZFwiO1xuaW1wb3J0IHsgaXNUZXN0RW52IH0gZnJvbSBcIi4vdXRpbHNcIjtcbmxldCByYW5kb20gPSBuZXcgUmFuZG9tKERhdGUubm93KCkpO1xubGV0IHRlc3RJZEJhc2UgPSAwO1xuZXhwb3J0IGNvbnN0IHJhbmRvbUludGVnZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbS5uZXh0KCkgKiAyICoqIDMxKTtcbn07XG5leHBvcnQgY29uc3QgcmVzZWVkID0gZnVuY3Rpb24gKHNlZWQpIHtcbiAgcmFuZG9tID0gbmV3IFJhbmRvbShzZWVkKTtcbiAgdGVzdElkQmFzZSA9IDA7XG59O1xuZXhwb3J0IGNvbnN0IHJhbmRvbUlkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gaXNUZXN0RW52KCkgPyBgaWQke3Rlc3RJZEJhc2UrK31gIDogbmFub2lkKCk7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../random.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../random.ts?");
3041
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"obsidianId\\\": () => (/* binding */ obsidianId),\\n/* harmony export */ \\\"randomId\\\": () => (/* binding */ randomId),\\n/* harmony export */ \\\"randomInteger\\\": () => (/* binding */ randomInteger),\\n/* harmony export */ \\\"reseed\\\": () => (/* binding */ reseed)\\n/* harmony export */ });\\n/* harmony import */ var roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/math */ \\\"../../../node_modules/roughjs/bin/math.js\\\");\\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ \\\"../../../node_modules/nanoid/index.browser.js\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils */ \\\"../../utils.ts\\\");\\n\\r\\n //zsviczian\\r\\n\\r\\nlet random = new roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__.Random(Date.now());\\r\\nlet testIdBase = 0;\\r\\nconst randomInteger = function () {\\r\\n return Math.floor(random.next() * Math.pow(2, 31));\\r\\n};\\r\\nconst reseed = function (seed) {\\r\\n random = new roughjs_bin_math__WEBPACK_IMPORTED_MODULE_0__.Random(seed);\\r\\n testIdBase = 0;\\r\\n};\\r\\nconst randomId = function () {\\r\\n return (0,_utils__WEBPACK_IMPORTED_MODULE_1__.isTestEnv)() ? `id${testIdBase++}` : (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\\r\\n};\\r\\nconst obsidianId = (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.customAlphabet)(\\\"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\\", 8); //zsviczian: added size\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vcmFuZG9tLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBMEM7QUFDTSxDQUFDLFdBQVc7QUFFeEI7QUFDcEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxvREFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3BDLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUNaLE1BQU0sYUFBYSxHQUFHO0lBQzNCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsVUFBQyxFQUFJLEVBQUUsRUFBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUNLLE1BQU0sTUFBTSxHQUFHLFVBQVUsSUFBSTtJQUNsQyxNQUFNLEdBQUcsSUFBSSxvREFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBQ0ssTUFBTSxRQUFRLEdBQUc7SUFDdEIsT0FBTyxpREFBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsOENBQU0sRUFBRSxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUNLLE1BQU0sVUFBVSxHQUFHLHNEQUFjLENBQUMsZ0VBQWdFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vcmFuZG9tLnRzP2FkZWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmFuZG9tIH0gZnJvbSBcInJvdWdoanMvYmluL21hdGhcIjtcbmltcG9ydCB7IG5hbm9pZCwgY3VzdG9tQWxwaGFiZXQgfSBmcm9tIFwibmFub2lkXCI7IC8venN2aWN6aWFuXG5cbmltcG9ydCB7IGlzVGVzdEVudiB9IGZyb20gXCIuL3V0aWxzXCI7XG5sZXQgcmFuZG9tID0gbmV3IFJhbmRvbShEYXRlLm5vdygpKTtcbmxldCB0ZXN0SWRCYXNlID0gMDtcbmV4cG9ydCBjb25zdCByYW5kb21JbnRlZ2VyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihyYW5kb20ubmV4dCgpICogMiAqKiAzMSk7XG59O1xuZXhwb3J0IGNvbnN0IHJlc2VlZCA9IGZ1bmN0aW9uIChzZWVkKSB7XG4gIHJhbmRvbSA9IG5ldyBSYW5kb20oc2VlZCk7XG4gIHRlc3RJZEJhc2UgPSAwO1xufTtcbmV4cG9ydCBjb25zdCByYW5kb21JZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGlzVGVzdEVudigpID8gYGlkJHt0ZXN0SWRCYXNlKyt9YCA6IG5hbm9pZCgpO1xufTtcbmV4cG9ydCBjb25zdCBvYnNpZGlhbklkID0gY3VzdG9tQWxwaGFiZXQoXCIxMjM0NTY3ODkwYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWlwiLCA4KTsgLy96c3ZpY3ppYW46IGFkZGVkIHNpemUiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///../../random.ts\\n\");\n\n//# sourceURL=webpack://ExcalidrawLib/../../random.ts?");
3042
3042
 
3043
3043
  /***/ }),
3044
3044