@zsviczian/excalidraw 0.10.0-obsidian-14 → 0.10.0-obsidian-15

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.
@@ -1402,7 +1402,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
1402
1402
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1403
1403
 
1404
1404
  "use strict";
1405
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__)\\n/* harmony export */ });\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \\\"./node_modules/css-loader/dist/runtime/sourceMaps.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \\\"./node_modules/css-loader/dist/runtime/api.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\\n// Imports\\n\\n\\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\\n// Module\\n___CSS_LOADER_EXPORT___.push([module.id, \\\".excalidraw .UserList {\\\\n pointer-events: none;\\\\n /*github corner*/\\\\n padding: var(--space-factor) var(--space-factor) var(--space-factor) var(--space-factor);\\\\n display: flex;\\\\n flex-wrap: wrap;\\\\n justify-content: flex-end;\\\\n}\\\\n.excalidraw .UserList > * {\\\\n pointer-events: all;\\\\n margin: 0 0 var(--space-factor) var(--space-factor);\\\\n}\\\\n.excalidraw .UserList_mobile {\\\\n padding: 0;\\\\n justify-content: normal;\\\\n}\\\\n.excalidraw .UserList_mobile > * {\\\\n margin: 0 var(--space-factor) var(--space-factor) 0;\\\\n}\\\", \\\"\\\",{\\\"version\\\":3,\\\"sources\\\":[\\\"webpack://./../../components/UserList.scss\\\"],\\\"names\\\":[],\\\"mappings\\\":\\\"AACE;EACE,oBAAA;EACA,gBAAA;EACA,wFAAA;EAEA,aAAA;EACA,eAAA;EACA,yBAAA;AADJ;AAIE;EACE,mBAAA;EACA,mDAAA;AAFJ;AAKE;EACE,UAAA;EACA,uBAAA;AAHJ;AAME;EACE,mDAAA;AAJJ\\\",\\\"sourcesContent\\\":[\\\".excalidraw {\\\\n .UserList {\\\\n pointer-events: none;\\\\n /*github corner*/\\\\n padding: var(--space-factor) var(--space-factor) var(--space-factor)\\\\n var(--space-factor);\\\\n display: flex;\\\\n flex-wrap: wrap;\\\\n justify-content: flex-end;\\\\n }\\\\n\\\\n .UserList > * {\\\\n pointer-events: all;\\\\n margin: 0 0 var(--space-factor) var(--space-factor);\\\\n }\\\\n\\\\n .UserList_mobile {\\\\n padding: 0;\\\\n justify-content: normal;\\\\n }\\\\n\\\\n .UserList_mobile > * {\\\\n margin: 0 var(--space-factor) var(--space-factor) 0;\\\\n }\\\\n}\\\\n\\\"],\\\"sourceRoot\\\":\\\"\\\"}]);\\n// Exports\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLGlFQUFpRSx5QkFBeUIsa0hBQWtILGtCQUFrQixvQkFBb0IsOEJBQThCLEdBQUcsNkJBQTZCLHdCQUF3Qix3REFBd0QsR0FBRyxnQ0FBZ0MsZUFBZSw0QkFBNEIsR0FBRyxvQ0FBb0Msd0RBQXdELEdBQUcsT0FBTyxpR0FBaUcsV0FBVyxXQUFXLFdBQVcsVUFBVSxVQUFVLFdBQVcsS0FBSyxLQUFLLFdBQVcsV0FBVyxLQUFLLEtBQUssVUFBVSxXQUFXLEtBQUssS0FBSyxXQUFXLHNDQUFzQyxlQUFlLDJCQUEyQiw2SEFBNkgsb0JBQW9CLHNCQUFzQixnQ0FBZ0MsS0FBSyxxQkFBcUIsMEJBQTBCLDBEQUEwRCxLQUFLLHdCQUF3QixpQkFBaUIsOEJBQThCLEtBQUssNEJBQTRCLDBEQUEwRCxLQUFLLEdBQUcscUJBQXFCO0FBQ3IzQztBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvVXNlckxpc3Quc2Nzcz9mM2U4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBcIi5leGNhbGlkcmF3IC5Vc2VyTGlzdCB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIC8qZ2l0aHViIGNvcm5lciovXFxuICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1mYWN0b3IpIHZhcigtLXNwYWNlLWZhY3RvcikgdmFyKC0tc3BhY2UtZmFjdG9yKSB2YXIoLS1zcGFjZS1mYWN0b3IpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtd3JhcDogd3JhcDtcXG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XFxufVxcbi5leGNhbGlkcmF3IC5Vc2VyTGlzdCA+ICoge1xcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG4gIG1hcmdpbjogMCAwIHZhcigtLXNwYWNlLWZhY3RvcikgdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLlVzZXJMaXN0X21vYmlsZSB7XFxuICBwYWRkaW5nOiAwO1xcbiAganVzdGlmeS1jb250ZW50OiBub3JtYWw7XFxufVxcbi5leGNhbGlkcmF3IC5Vc2VyTGlzdF9tb2JpbGUgPiAqIHtcXG4gIG1hcmdpbjogMCB2YXIoLS1zcGFjZS1mYWN0b3IpIHZhcigtLXNwYWNlLWZhY3RvcikgMDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNFO0VBQ0Usb0JBQUE7RUFDQSxnQkFBQTtFQUNBLHdGQUFBO0VBRUEsYUFBQTtFQUNBLGVBQUE7RUFDQSx5QkFBQTtBQURKO0FBSUU7RUFDRSxtQkFBQTtFQUNBLG1EQUFBO0FBRko7QUFLRTtFQUNFLFVBQUE7RUFDQSx1QkFBQTtBQUhKO0FBTUU7RUFDRSxtREFBQTtBQUpKXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5leGNhbGlkcmF3IHtcXG4gIC5Vc2VyTGlzdCB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICAvKmdpdGh1YiBjb3JuZXIqL1xcbiAgICBwYWRkaW5nOiB2YXIoLS1zcGFjZS1mYWN0b3IpIHZhcigtLXNwYWNlLWZhY3RvcikgdmFyKC0tc3BhY2UtZmFjdG9yKVxcbiAgICAgIHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG4gIH1cXG5cXG4gIC5Vc2VyTGlzdCA+ICoge1xcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xcbiAgICBtYXJnaW46IDAgMCB2YXIoLS1zcGFjZS1mYWN0b3IpIHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICB9XFxuXFxuICAuVXNlckxpc3RfbW9iaWxlIHtcXG4gICAgcGFkZGluZzogMDtcXG4gICAganVzdGlmeS1jb250ZW50OiBub3JtYWw7XFxuICB9XFxuXFxuICAuVXNlckxpc3RfbW9iaWxlID4gKiB7XFxuICAgIG1hcmdpbjogMCB2YXIoLS1zcGFjZS1mYWN0b3IpIHZhcigtLXNwYWNlLWZhY3RvcikgMDtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../components/UserList.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet%5B1%5D.rules%5B0%5D.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js");
1405
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__)\\n/* harmony export */ });\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \\\"./node_modules/css-loader/dist/runtime/sourceMaps.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \\\"./node_modules/css-loader/dist/runtime/api.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\\n// Imports\\n\\n\\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\\n// Module\\n___CSS_LOADER_EXPORT___.push([module.id, \\\".excalidraw .UserList {\\\\n pointer-events: none;\\\\n /*github corner*/\\\\n padding: var(--space-factor) var(--space-factor) var(--space-factor) var(--space-factor);\\\\n display: flex;\\\\n flex-wrap: wrap;\\\\n justify-content: flex-end;\\\\n}\\\\n.excalidraw .UserList:empty {\\\\n display: none;\\\\n}\\\\n.excalidraw .UserList > * {\\\\n pointer-events: all;\\\\n margin: 0 0 var(--space-factor) var(--space-factor);\\\\n}\\\\n.excalidraw .UserList_mobile {\\\\n padding: 0;\\\\n justify-content: normal;\\\\n}\\\\n.excalidraw .UserList_mobile > * {\\\\n margin: 0 var(--space-factor) var(--space-factor) 0;\\\\n}\\\", \\\"\\\",{\\\"version\\\":3,\\\"sources\\\":[\\\"webpack://./../../components/UserList.scss\\\"],\\\"names\\\":[],\\\"mappings\\\":\\\"AACE;EACE,oBAAA;EACA,gBAAA;EACA,wFAAA;EAEA,aAAA;EACA,eAAA;EACA,yBAAA;AADJ;AAGI;EACE,aAAA;AADN;AAKE;EACE,mBAAA;EACA,mDAAA;AAHJ;AAME;EACE,UAAA;EACA,uBAAA;AAJJ;AAOE;EACE,mDAAA;AALJ\\\",\\\"sourcesContent\\\":[\\\".excalidraw {\\\\n .UserList {\\\\n pointer-events: none;\\\\n /*github corner*/\\\\n padding: var(--space-factor) var(--space-factor) var(--space-factor)\\\\n var(--space-factor);\\\\n display: flex;\\\\n flex-wrap: wrap;\\\\n justify-content: flex-end;\\\\n\\\\n &:empty {\\\\n display: none;\\\\n }\\\\n }\\\\n\\\\n .UserList > * {\\\\n pointer-events: all;\\\\n margin: 0 0 var(--space-factor) var(--space-factor);\\\\n }\\\\n\\\\n .UserList_mobile {\\\\n padding: 0;\\\\n justify-content: normal;\\\\n }\\\\n\\\\n .UserList_mobile > * {\\\\n margin: 0 var(--space-factor) var(--space-factor) 0;\\\\n }\\\\n}\\\\n\\\"],\\\"sourceRoot\\\":\\\"\\\"}]);\\n// Exports\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDOEg7QUFDakI7QUFDN0csOEJBQThCLHVHQUEyQixDQUFDLGdIQUFxQztBQUMvRjtBQUNBLGlFQUFpRSx5QkFBeUIsa0hBQWtILGtCQUFrQixvQkFBb0IsOEJBQThCLEdBQUcsK0JBQStCLGtCQUFrQixHQUFHLDZCQUE2Qix3QkFBd0Isd0RBQXdELEdBQUcsZ0NBQWdDLGVBQWUsNEJBQTRCLEdBQUcsb0NBQW9DLHdEQUF3RCxHQUFHLE9BQU8saUdBQWlHLFdBQVcsV0FBVyxXQUFXLFVBQVUsVUFBVSxXQUFXLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLFdBQVcsS0FBSyxLQUFLLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxzQ0FBc0MsZUFBZSwyQkFBMkIsNkhBQTZILG9CQUFvQixzQkFBc0IsZ0NBQWdDLGlCQUFpQixzQkFBc0IsT0FBTyxLQUFLLHFCQUFxQiwwQkFBMEIsMERBQTBELEtBQUssd0JBQXdCLGlCQUFpQiw4QkFBOEIsS0FBSyw0QkFBNEIsMERBQTBELEtBQUssR0FBRyxxQkFBcUI7QUFDMytDO0FBQ0EsaUVBQWUsdUJBQXVCLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC5zY3NzP2YzZTgiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uL3BhY2thZ2VzL2V4Y2FsaWRyYXcvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLmV4Y2FsaWRyYXcgLlVzZXJMaXN0IHtcXG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgLypnaXRodWIgY29ybmVyKi9cXG4gIHBhZGRpbmc6IHZhcigtLXNwYWNlLWZhY3RvcikgdmFyKC0tc3BhY2UtZmFjdG9yKSB2YXIoLS1zcGFjZS1mYWN0b3IpIHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC13cmFwOiB3cmFwO1xcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcXG59XFxuLmV4Y2FsaWRyYXcgLlVzZXJMaXN0OmVtcHR5IHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5Vc2VyTGlzdCA+ICoge1xcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG4gIG1hcmdpbjogMCAwIHZhcigtLXNwYWNlLWZhY3RvcikgdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLlVzZXJMaXN0X21vYmlsZSB7XFxuICBwYWRkaW5nOiAwO1xcbiAganVzdGlmeS1jb250ZW50OiBub3JtYWw7XFxufVxcbi5leGNhbGlkcmF3IC5Vc2VyTGlzdF9tb2JpbGUgPiAqIHtcXG4gIG1hcmdpbjogMCB2YXIoLS1zcGFjZS1mYWN0b3IpIHZhcigtLXNwYWNlLWZhY3RvcikgMDtcXG59XCIsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vLi4vLi4vY29tcG9uZW50cy9Vc2VyTGlzdC5zY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUNFO0VBQ0Usb0JBQUE7RUFDQSxnQkFBQTtFQUNBLHdGQUFBO0VBRUEsYUFBQTtFQUNBLGVBQUE7RUFDQSx5QkFBQTtBQURKO0FBR0k7RUFDRSxhQUFBO0FBRE47QUFLRTtFQUNFLG1CQUFBO0VBQ0EsbURBQUE7QUFISjtBQU1FO0VBQ0UsVUFBQTtFQUNBLHVCQUFBO0FBSko7QUFPRTtFQUNFLG1EQUFBO0FBTEpcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmV4Y2FsaWRyYXcge1xcbiAgLlVzZXJMaXN0IHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgIC8qZ2l0aHViIGNvcm5lciovXFxuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlLWZhY3RvcikgdmFyKC0tc3BhY2UtZmFjdG9yKSB2YXIoLS1zcGFjZS1mYWN0b3IpXFxuICAgICAgdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC13cmFwOiB3cmFwO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xcblxcbiAgICAmOmVtcHR5IHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAuVXNlckxpc3QgPiAqIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG4gICAgbWFyZ2luOiAwIDAgdmFyKC0tc3BhY2UtZmFjdG9yKSB2YXIoLS1zcGFjZS1mYWN0b3IpO1xcbiAgfVxcblxcbiAgLlVzZXJMaXN0X21vYmlsZSB7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIGp1c3RpZnktY29udGVudDogbm9ybWFsO1xcbiAgfVxcblxcbiAgLlVzZXJMaXN0X21vYmlsZSA+ICoge1xcbiAgICBtYXJnaW46IDAgdmFyKC0tc3BhY2UtZmFjdG9yKSB2YXIoLS1zcGFjZS1mYWN0b3IpIDA7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../components/UserList.scss\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../components/UserList.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet%5B1%5D.rules%5B0%5D.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js");
1406
1406
 
1407
1407
  /***/ }),
1408
1408
 
@@ -1424,7 +1424,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
1424
1424
  /***/ ((module, __webpack_exports__, __webpack_require__) => {
1425
1425
 
1426
1426
  "use strict";
1427
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__)\\n/* harmony export */ });\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \\\"./node_modules/css-loader/dist/runtime/sourceMaps.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \\\"./node_modules/css-loader/dist/runtime/api.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ \\\"./node_modules/css-loader/dist/runtime/getUrl.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\\n// Imports\\n\\n\\n\\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg> */ \\\"data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>\\\"), __webpack_require__.b);\\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path fill=\\\"%23ced4da\\\" d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg> */ \\\"data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path fill=\\\\\\\"%23ced4da\\\\\\\" d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>\\\"), __webpack_require__.b);\\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\\n// Module\\n___CSS_LOADER_EXPORT___.push([module.id, \\\":export {\\\\n themeFilter: invert(93%) hue-rotate(180deg);\\\\n}\\\\n\\\\n:export {\\\\n themeFilter: invert(93%) hue-rotate(180deg);\\\\n}\\\\n\\\\n.excalidraw {\\\\n --theme-filter: none;\\\\n --button-destructive-bg-color: #ffe3e3;\\\\n --button-destructive-color: #c92a2a;\\\\n --button-gray-1: #e9ecef;\\\\n --button-gray-2: #ced4da;\\\\n --button-gray-3: #adb5bd;\\\\n --button-special-active-bg-color: #ebfbee;\\\\n --dialog-border-color: #868e96;\\\\n --dropdown-icon: url(\\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\\");\\\\n --focus-highlight-color: #a5d8ff;\\\\n --icon-fill-color: #000000;\\\\n --icon-green-fill-color: #2b8a3e;\\\\n --default-bg-color: #ffffff;\\\\n --input-bg-color: #ffffff;\\\\n --input-border-color: #ced4da;\\\\n --input-hover-bg-color: #f1f3f5;\\\\n --input-label-color: #495057;\\\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\\\n --keybinding-color: #adb5bd;\\\\n --link-color: #1c7ed6;\\\\n --overlay-bg-color: rgba(255, 255, 255, 0.88);\\\\n --popup-bg-color: #ffffff;\\\\n --popup-secondary-bg-color: #f1f3f5;\\\\n --popup-text-color: #000000;\\\\n --popup-text-inverted-color: #ffffff;\\\\n --sab: env(safe-area-inset-bottom);\\\\n --sal: env(safe-area-inset-left);\\\\n --sar: env(safe-area-inset-right);\\\\n --sat: env(safe-area-inset-top);\\\\n --select-highlight-color: #339af0;\\\\n --shadow-island: 0 1px 5px rgba(0, 0, 0, 0.15);\\\\n --space-factor: 0.25rem;\\\\n --text-primary-color: #343a40;\\\\n}\\\\n.excalidraw.theme--dark {\\\\n background: #000000;\\\\n}\\\\n.excalidraw.theme--dark.theme--dark-background-none {\\\\n background: none;\\\\n}\\\\n.excalidraw.theme--dark {\\\\n --theme-filter: invert(93%) hue-rotate(180deg);\\\\n --button-destructive-bg-color: #5a0000;\\\\n --button-destructive-color: #ffa8a8;\\\\n --button-gray-1: #363636;\\\\n --button-gray-2: #272727;\\\\n --button-gray-3: #222;\\\\n --button-special-active-bg-color: #204624;\\\\n --dialog-border-color: #212529;\\\\n --dropdown-icon: url(\\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\\");\\\\n --focus-highlight-color: #228be6;\\\\n --icon-fill-color: #ced4da;\\\\n --icon-green-fill-color: #69db7c;\\\\n --default-bg-color: #121212;\\\\n --input-bg-color: #121212;\\\\n --input-border-color: #2e2e2e;\\\\n --input-hover-bg-color: #181818;\\\\n --input-label-color: #e9ecef;\\\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\\\n --keybinding-color: #868e96;\\\\n --link-color: #4dabf7;\\\\n --overlay-bg-color: rgba(52, 58, 64, 0.12);\\\\n --popup-bg-color: #2c2c2c;\\\\n --popup-secondary-bg-color: #222;\\\\n --popup-text-color: #ced4da;\\\\n --popup-text-inverted-color: #2c2c2c;\\\\n --select-highlight-color: #4dabf7;\\\\n --shadow-island: 0 1px 5px rgba(0, 0, 0, 0.3);\\\\n --text-primary-color: #ced4da;\\\\n}\\\\n\\\\n:root {\\\\n --zIndex-canvas: 1;\\\\n --zIndex-wysiwyg: 2;\\\\n --zIndex-layerUI: 3;\\\\n}\\\\n\\\\n.excalidraw {\\\\n position: relative;\\\\n overflow: hidden;\\\\n color: var(--text-primary-color);\\\\n display: flex;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n height: 100%;\\\\n width: 100%;\\\\n user-select: none;\\\\n}\\\\n.excalidraw:focus {\\\\n outline: none;\\\\n}\\\\n.excalidraw a {\\\\n font-weight: 500;\\\\n text-decoration: none;\\\\n color: var(--link-color);\\\\n}\\\\n.excalidraw a:hover {\\\\n text-decoration: underline;\\\\n}\\\\n.excalidraw canvas {\\\\n touch-action: none;\\\\n image-rendering: pixelated;\\\\n image-rendering: -moz-crisp-edges;\\\\n z-index: var(--zIndex-canvas);\\\\n}\\\\n.excalidraw__canvas {\\\\n position: absolute;\\\\n}\\\\n.excalidraw.theme--dark canvas {\\\\n filter: var(--theme-filter);\\\\n}\\\\n.excalidraw .FixedSideContainer {\\\\n padding-top: var(--sat, 0);\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n}\\\\n.excalidraw .panelRow {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n}\\\\n.excalidraw .panelColumn {\\\\n display: flex;\\\\n flex-direction: column;\\\\n}\\\\n.excalidraw .panelColumn h3,\\\\n.excalidraw .panelColumn legend,\\\\n.excalidraw .panelColumn .control-label {\\\\n margin-top: 0.333rem;\\\\n margin-bottom: 0.333rem;\\\\n font-size: 0.75rem;\\\\n color: var(--text-primary-color);\\\\n font-weight: bold;\\\\n display: block;\\\\n}\\\\n.excalidraw .panelColumn .control-label input {\\\\n display: block;\\\\n width: 100%;\\\\n}\\\\n.excalidraw .panelColumn h3:first-child,\\\\n.excalidraw .panelColumn legend:first-child,\\\\n.excalidraw .panelColumn .control-label:first-child {\\\\n margin-top: 0;\\\\n}\\\\n.excalidraw .panelColumn legend {\\\\n padding: 0;\\\\n}\\\\n.excalidraw .panelColumn .iconSelectList {\\\\n flex-wrap: wrap;\\\\n position: relative;\\\\n}\\\\n.excalidraw .panelColumn .buttonList {\\\\n flex-wrap: wrap;\\\\n}\\\\n.excalidraw .panelColumn .buttonList label {\\\\n margin-right: 0.25rem;\\\\n font-size: 0.75rem;\\\\n display: inline-block;\\\\n}\\\\n.excalidraw .panelColumn .buttonList input[type=radio],\\\\n.excalidraw .panelColumn .buttonList input[type=button] {\\\\n opacity: 0;\\\\n position: absolute;\\\\n pointer-events: none;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .iconRow {\\\\n margin-top: 8px;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:disabled {\\\\n cursor: not-allowed;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon__icon {\\\\n width: 28px;\\\\n height: 28px;\\\\n}\\\\n.excalidraw .panelColumn fieldset {\\\\n margin: 0;\\\\n margin-top: 0.333rem;\\\\n padding: 0;\\\\n border: none;\\\\n}\\\\n.excalidraw .divider {\\\\n width: 1px;\\\\n background-color: #e9ecef;\\\\n margin: 1px;\\\\n}\\\\n.excalidraw .buttonList label:focus-within,\\\\n.excalidraw input:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw button,\\\\n.excalidraw .buttonList label {\\\\n user-select: none;\\\\n background-color: var(--button-gray-1);\\\\n border: 0;\\\\n border-radius: 4px;\\\\n margin: 0.125rem 0;\\\\n padding: 0.25rem;\\\\n white-space: nowrap;\\\\n cursor: pointer;\\\\n}\\\\n.excalidraw button:focus,\\\\n.excalidraw .buttonList label:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw button:hover,\\\\n.excalidraw .buttonList label:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw button:active,\\\\n.excalidraw .buttonList label:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw button:disabled,\\\\n.excalidraw .buttonList label:disabled {\\\\n cursor: not-allowed;\\\\n}\\\\n.excalidraw .active,\\\\n.excalidraw .buttonList label.active {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .active:hover,\\\\n.excalidraw .buttonList label.active:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .active:active,\\\\n.excalidraw .buttonList label.active:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label {\\\\n display: inline-flex;\\\\n justify-content: center;\\\\n align-items: center;\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label svg {\\\\n width: 36px;\\\\n height: 14px;\\\\n padding: 2px;\\\\n opacity: 0.6;\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label.active svg {\\\\n opacity: 1;\\\\n}\\\\n.excalidraw .App-top-bar {\\\\n z-index: var(--zIndex-layerUI);\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n}\\\\n.excalidraw .App-bottom-bar {\\\\n position: absolute;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n --bar-padding: calc(4 * var(--space-factor));\\\\n padding-top: max(var(--bar-padding), var(--sat,0));\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n z-index: 4;\\\\n display: flex;\\\\n align-items: flex-end;\\\\n pointer-events: none;\\\\n}\\\\n.excalidraw .App-bottom-bar > .Island {\\\\n width: 100%;\\\\n max-width: 100%;\\\\n min-width: 100%;\\\\n box-sizing: border-box;\\\\n max-height: 100%;\\\\n display: flex;\\\\n flex-direction: column;\\\\n pointer-events: initial;\\\\n}\\\\n.excalidraw .App-bottom-bar > .Island .panelColumn {\\\\n padding: 8px 8px 0 8px;\\\\n}\\\\n.excalidraw .App-toolbar {\\\\n width: 100%;\\\\n box-sizing: border-box;\\\\n}\\\\n.excalidraw .App-toolbar-content {\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: space-between;\\\\n padding: 8px;\\\\n}\\\\n.excalidraw .App-mobile-menu {\\\\n width: 100%;\\\\n overflow-x: visible;\\\\n overflow-y: auto;\\\\n box-sizing: border-box;\\\\n margin-bottom: var(--bar-padding);\\\\n}\\\\n.excalidraw .App-menu {\\\\n display: grid;\\\\n color: var(--icon-fill-color);\\\\n}\\\\n.excalidraw .App-menu_top {\\\\n grid-template-columns: 1fr auto 1fr;\\\\n grid-gap: 4px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n}\\\\n.excalidraw .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\\\n pointer-events: all;\\\\n}\\\\n.excalidraw .App-menu_top > *:first-child {\\\\n justify-self: flex-start;\\\\n}\\\\n.excalidraw .App-menu_top > *:last-child {\\\\n justify-self: flex-end;\\\\n}\\\\n.excalidraw .App-menu_bottom {\\\\n position: absolute;\\\\n bottom: 0;\\\\n grid-template-columns: min-content auto min-content;\\\\n grid-gap: 15px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n z-index: 100;\\\\n}\\\\n:root[dir=ltr] .excalidraw .App-menu_bottom {\\\\n left: 0.25rem;\\\\n}\\\\n:root[dir=rtl] .excalidraw .App-menu_bottom {\\\\n right: 0.25rem;\\\\n}\\\\n.excalidraw .App-menu_bottom--transition-left section {\\\\n width: 185px;\\\\n}\\\\n.excalidraw .App-menu_bottom section {\\\\n display: flex;\\\\n}\\\\n.excalidraw .App-menu_bottom > *:first-child {\\\\n justify-self: flex-start;\\\\n}\\\\n.excalidraw .App-menu_bottom > *:last-child {\\\\n justify-self: flex-end;\\\\n}\\\\n.excalidraw .App-menu_left {\\\\n grid-template-rows: 1fr auto 1fr;\\\\n height: 100%;\\\\n}\\\\n.excalidraw .App-menu_right {\\\\n grid-template-rows: 1fr;\\\\n height: 100%;\\\\n}\\\\n.excalidraw .App-menu__left {\\\\n overflow-y: auto;\\\\n}\\\\n.excalidraw .dropdown-select {\\\\n height: 1.5rem;\\\\n padding: 0;\\\\n padding-inline-start: 0.5rem;\\\\n padding-inline-end: 1.5rem;\\\\n color: var(--icon-fill-color);\\\\n background-color: var(--button-gray-1);\\\\n border-radius: var(--space-factor);\\\\n border: 1px solid var(--button-gray-2);\\\\n font-size: 0.8rem;\\\\n outline: none;\\\\n appearance: none;\\\\n background-image: var(--dropdown-icon);\\\\n background-repeat: no-repeat;\\\\n background-position: right 0.7rem top 50%, 0 0;\\\\n background-size: 0.65em auto, 100%;\\\\n}\\\\n:root[dir=rtl] .excalidraw .dropdown-select {\\\\n background-position: left 0.7rem top 50%, 0 0;\\\\n}\\\\n.excalidraw .dropdown-select:focus {\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw .dropdown-select:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .dropdown-select:active {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .zIndexButton {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n padding: 5px;\\\\n display: inline-flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n}\\\\n.excalidraw .zIndexButton svg {\\\\n width: 18px;\\\\n height: 18px;\\\\n}\\\\n.excalidraw .scroll-back-to-content {\\\\n color: var(--popup-text-color);\\\\n position: absolute;\\\\n left: 50%;\\\\n bottom: 30px;\\\\n transform: translateX(-50%);\\\\n padding: 10px 20px;\\\\n}\\\\n.excalidraw .help-icon {\\\\n display: flex;\\\\n cursor: pointer;\\\\n fill: #868e96;\\\\n padding: 0;\\\\n margin: 0;\\\\n background: none;\\\\n color: var(--icon-fill-color);\\\\n}\\\\n.excalidraw .help-icon svg {\\\\n width: 1.5rem;\\\\n height: 1.5rem;\\\\n}\\\\n.excalidraw .help-icon:hover {\\\\n background: none;\\\\n}\\\\n.excalidraw .reset-zoom-button {\\\\n padding: 0.2em;\\\\n background: transparent;\\\\n color: var(--text-primary-color);\\\\n font-family: var(--ui-font);\\\\n}\\\\n.excalidraw .undo-redo-buttons {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n}\\\\n.excalidraw--mobile.excalidraw aside {\\\\n display: none;\\\\n}\\\\n.excalidraw--mobile.excalidraw .scroll-back-to-content {\\\\n bottom: calc(80px + var(--sab, 0));\\\\n z-index: -1;\\\\n}\\\\n\\\\n:root[dir=rtl] .excalidraw .rtl-mirror {\\\\n transform: scaleX(-1);\\\\n}\\\\n.excalidraw .zen-mode-visibility {\\\\n visibility: visible;\\\\n opacity: 1;\\\\n height: auto;\\\\n width: auto;\\\\n transition: opacity 0.5s;\\\\n}\\\\n.excalidraw .zen-mode-visibility.zen-mode-visibility--hidden {\\\\n visibility: hidden;\\\\n opacity: 0;\\\\n height: 0;\\\\n width: 0;\\\\n transition: opacity 0.5s;\\\\n}\\\\n.excalidraw .disable-pointerEvents {\\\\n pointer-events: none !important;\\\\n}\\\\n.excalidraw.excalidraw--view-mode .App-menu {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n}\\\\n.excalidraw input[type=text],\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg) {\\\\n color: var(--text-primary-color);\\\\n border: 1.5px solid var(--input-border-color);\\\\n padding: 0.75rem;\\\\n white-space: nowrap;\\\\n border-radius: var(--space-factor);\\\\n background-color: var(--input-bg-color);\\\\n}\\\\n.excalidraw input[type=text]:not(:focus):hover,\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg):not(:focus):hover {\\\\n background-color: var(--input-hover-bg-color);\\\\n}\\\\n.excalidraw input[type=text]:focus,\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg):focus {\\\\n outline: none;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n@media print {\\\\n .excalidraw .App-bottom-bar,\\\\n.excalidraw .FixedSideContainer,\\\\n.excalidraw .layer-ui__wrapper {\\\\n display: none;\\\\n }\\\\n}\\\\n\\\\n.ErrorSplash.excalidraw {\\\\n min-height: 100vh;\\\\n padding: 20px 0;\\\\n overflow: auto;\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n user-select: text;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-messageContainer {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n justify-content: center;\\\\n padding: 40px;\\\\n background-color: #ffe3e3;\\\\n border: 3px solid #c92a2a;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph {\\\\n margin: 15px 0;\\\\n max-width: 600px;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph.align-center {\\\\n text-align: center;\\\\n}\\\\n.ErrorSplash.excalidraw .bigger,\\\\n.ErrorSplash.excalidraw .bigger button {\\\\n font-size: 1.1em;\\\\n}\\\\n.ErrorSplash.excalidraw .smaller,\\\\n.ErrorSplash.excalidraw .smaller button {\\\\n font-size: 0.9em;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-details {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: flex-start;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-details textarea {\\\\n width: 100%;\\\\n margin: 10px 0;\\\\n font-family: \\\\\\\"Cascadia\\\\\\\";\\\\n font-size: 0.8em;\\\\n}\\\", \\\"\\\",{\\\"version\\\":3,\\\"sources\\\":[\\\"webpack://./../../css/variables.module.scss\\\",\\\"webpack://./../../css/styles.scss\\\",\\\"webpack://./../../css/theme.scss\\\",\\\"webpack://./../../../node_modules/open-color/open-color.scss\\\"],\\\"names\\\":[],\\\"mappings\\\":\\\"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\\\",\\\"sourcesContent\\\":[\\\"@import \\\\\\\"open-color/open-color.scss\\\\\\\";\\\\n\\\\n@mixin isMobile() {\\\\n @at-root .excalidraw--mobile#{&} {\\\\n @content;\\\\n }\\\\n}\\\\n\\\\n$theme-filter: \\\\\\\"invert(93%) hue-rotate(180deg)\\\\\\\";\\\\n\\\\n:export {\\\\n themeFilter: unquote($theme-filter);\\\\n}\\\\n\\\",\\\"@import \\\\\\\"./variables.module\\\\\\\";\\\\n@import \\\\\\\"./theme\\\\\\\";\\\\n\\\\n:root {\\\\n --zIndex-canvas: 1;\\\\n --zIndex-wysiwyg: 2;\\\\n --zIndex-layerUI: 3;\\\\n}\\\\n\\\\n.excalidraw {\\\\n position: relative;\\\\n overflow: hidden;\\\\n color: var(--text-primary-color);\\\\n display: flex;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n height: 100%;\\\\n width: 100%;\\\\n\\\\n &:focus {\\\\n outline: none;\\\\n }\\\\n\\\\n // serves 2 purposes:\\\\n // 1. prevent selecting text outside the component when double-clicking or\\\\n // dragging inside it (e.g. on canvas)\\\\n // 2. prevent selecting UI, both from the inside, and from outside the\\\\n // component (e.g. if you select text in a sidebar)\\\\n user-select: none;\\\\n\\\\n a {\\\\n font-weight: 500;\\\\n text-decoration: none;\\\\n color: var(--link-color);\\\\n\\\\n &:hover {\\\\n text-decoration: underline;\\\\n }\\\\n }\\\\n\\\\n canvas {\\\\n touch-action: none;\\\\n\\\\n // following props improve blurriness at certain devicePixelRatios.\\\\n // AFAIK it doesn't affect export (in fact, export seems sharp either way).\\\\n\\\\n image-rendering: pixelated; // chromium\\\\n // NOTE: must be declared *after* the above\\\\n image-rendering: -moz-crisp-edges; // FF\\\\n\\\\n z-index: var(--zIndex-canvas);\\\\n\\\\n // Remove the main canvas from document flow to avoid resizeObserver\\\\n // feedback loop (see https://github.com/excalidraw/excalidraw/pull/3379)\\\\n }\\\\n\\\\n &__canvas {\\\\n position: absolute;\\\\n }\\\\n\\\\n &.theme--dark {\\\\n // The percentage is inspired by\\\\n // https://material.io/design/color/dark-theme.html#properties, which\\\\n // recommends surface color of #121212, 93% yields #111111 for #FFF\\\\n\\\\n canvas {\\\\n filter: var(--theme-filter);\\\\n }\\\\n }\\\\n\\\\n .FixedSideContainer {\\\\n padding-top: var(--sat, 0);\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n }\\\\n\\\\n .panelRow {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n }\\\\n\\\\n .panelColumn {\\\\n display: flex;\\\\n flex-direction: column;\\\\n\\\\n h3,\\\\n legend,\\\\n .control-label {\\\\n margin-top: 0.333rem;\\\\n margin-bottom: 0.333rem;\\\\n font-size: 0.75rem;\\\\n color: var(--text-primary-color);\\\\n font-weight: bold;\\\\n display: block;\\\\n }\\\\n\\\\n .control-label input {\\\\n display: block;\\\\n width: 100%;\\\\n }\\\\n\\\\n h3:first-child,\\\\n legend:first-child,\\\\n .control-label:first-child {\\\\n margin-top: 0;\\\\n }\\\\n\\\\n legend {\\\\n padding: 0;\\\\n }\\\\n\\\\n .iconSelectList {\\\\n flex-wrap: wrap;\\\\n position: relative;\\\\n }\\\\n\\\\n .buttonList {\\\\n flex-wrap: wrap;\\\\n\\\\n label {\\\\n margin-right: 0.25rem;\\\\n font-size: 0.75rem;\\\\n display: inline-block;\\\\n }\\\\n\\\\n input[type=\\\\\\\"radio\\\\\\\"],\\\\n input[type=\\\\\\\"button\\\\\\\"] {\\\\n opacity: 0;\\\\n position: absolute;\\\\n pointer-events: none;\\\\n }\\\\n\\\\n .iconRow {\\\\n margin-top: 8px;\\\\n }\\\\n\\\\n .ToolIcon {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n\\\\n &:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n\\\\n &:disabled {\\\\n cursor: not-allowed;\\\\n }\\\\n }\\\\n\\\\n .ToolIcon__icon {\\\\n width: 28px;\\\\n height: 28px;\\\\n }\\\\n }\\\\n\\\\n fieldset {\\\\n margin: 0;\\\\n margin-top: 0.333rem;\\\\n padding: 0;\\\\n border: none;\\\\n }\\\\n }\\\\n\\\\n .divider {\\\\n width: 1px;\\\\n background-color: $oc-gray-2;\\\\n margin: 1px;\\\\n }\\\\n\\\\n .buttonList label:focus-within,\\\\n input:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n button,\\\\n .buttonList label {\\\\n user-select: none;\\\\n background-color: var(--button-gray-1);\\\\n border: 0;\\\\n border-radius: 4px;\\\\n margin: 0.125rem 0;\\\\n padding: 0.25rem;\\\\n white-space: nowrap;\\\\n\\\\n cursor: pointer;\\\\n\\\\n &:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n\\\\n &:disabled {\\\\n cursor: not-allowed;\\\\n }\\\\n }\\\\n\\\\n .active,\\\\n .buttonList label.active {\\\\n background-color: var(--button-gray-2);\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n }\\\\n\\\\n .buttonList.buttonListIcon {\\\\n label {\\\\n display: inline-flex;\\\\n justify-content: center;\\\\n align-items: center;\\\\n svg {\\\\n width: 36px;\\\\n height: 14px;\\\\n padding: 2px;\\\\n opacity: 0.6;\\\\n }\\\\n &.active svg {\\\\n opacity: 1;\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-top-bar {\\\\n z-index: var(--zIndex-layerUI);\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n }\\\\n\\\\n .App-bottom-bar {\\\\n position: absolute;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n --bar-padding: calc(4 * var(--space-factor));\\\\n padding-top: #{\\\\\\\"max(var(--bar-padding), var(--sat,0))\\\\\\\"};\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n z-index: 4;\\\\n display: flex;\\\\n align-items: flex-end;\\\\n pointer-events: none;\\\\n\\\\n > .Island {\\\\n width: 100%;\\\\n max-width: 100%;\\\\n min-width: 100%;\\\\n box-sizing: border-box;\\\\n max-height: 100%;\\\\n display: flex;\\\\n flex-direction: column;\\\\n pointer-events: initial;\\\\n\\\\n .panelColumn {\\\\n padding: 8px 8px 0 8px;\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-toolbar {\\\\n width: 100%;\\\\n\\\\n box-sizing: border-box;\\\\n }\\\\n\\\\n .App-toolbar-content {\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: space-between;\\\\n padding: 8px;\\\\n }\\\\n\\\\n .App-mobile-menu {\\\\n width: 100%;\\\\n overflow-x: visible;\\\\n overflow-y: auto;\\\\n box-sizing: border-box;\\\\n margin-bottom: var(--bar-padding);\\\\n }\\\\n\\\\n .App-menu {\\\\n display: grid;\\\\n color: var(--icon-fill-color);\\\\n }\\\\n\\\\n .App-menu_top {\\\\n grid-template-columns: 1fr auto 1fr;\\\\n grid-gap: 4px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n }\\\\n\\\\n .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\\\n pointer-events: all;\\\\n }\\\\n\\\\n .App-menu_top > *:first-child {\\\\n justify-self: flex-start;\\\\n }\\\\n\\\\n .App-menu_top > *:last-child {\\\\n justify-self: flex-end;\\\\n }\\\\n\\\\n .App-menu_bottom {\\\\n position: absolute;\\\\n bottom: 0;\\\\n grid-template-columns: min-content auto min-content;\\\\n grid-gap: 15px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n z-index: 100;\\\\n\\\\n :root[dir=\\\\\\\"ltr\\\\\\\"] & {\\\\n left: 0.25rem;\\\\n }\\\\n\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n right: 0.25rem;\\\\n }\\\\n\\\\n &--transition-left {\\\\n section {\\\\n width: 185px;\\\\n }\\\\n }\\\\n\\\\n section {\\\\n display: flex;\\\\n }\\\\n }\\\\n\\\\n .App-menu_bottom > *:first-child {\\\\n justify-self: flex-start;\\\\n }\\\\n\\\\n .App-menu_bottom > *:last-child {\\\\n justify-self: flex-end;\\\\n }\\\\n\\\\n .App-menu_left {\\\\n grid-template-rows: 1fr auto 1fr;\\\\n height: 100%;\\\\n }\\\\n\\\\n .App-menu_right {\\\\n grid-template-rows: 1fr;\\\\n height: 100%;\\\\n }\\\\n\\\\n .App-menu__left {\\\\n overflow-y: auto;\\\\n }\\\\n\\\\n .dropdown-select {\\\\n height: 1.5rem;\\\\n padding: 0;\\\\n padding-inline-start: 0.5rem;\\\\n padding-inline-end: 1.5rem;\\\\n color: var(--icon-fill-color);\\\\n background-color: var(--button-gray-1);\\\\n border-radius: var(--space-factor);\\\\n border: 1px solid var(--button-gray-2);\\\\n font-size: 0.8rem;\\\\n outline: none;\\\\n appearance: none;\\\\n background-image: var(--dropdown-icon);\\\\n background-repeat: no-repeat;\\\\n background-position: right 0.7rem top 50%, 0 0;\\\\n\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n background-position: left 0.7rem top 50%, 0 0;\\\\n }\\\\n\\\\n background-size: 0.65em auto, 100%;\\\\n\\\\n &:focus {\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n }\\\\n\\\\n .zIndexButton {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n padding: 5px;\\\\n display: inline-flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n\\\\n svg {\\\\n width: 18px;\\\\n height: 18px;\\\\n }\\\\n }\\\\n\\\\n .scroll-back-to-content {\\\\n color: var(--popup-text-color);\\\\n position: absolute;\\\\n left: 50%;\\\\n bottom: 30px;\\\\n transform: translateX(-50%);\\\\n padding: 10px 20px;\\\\n }\\\\n\\\\n .help-icon {\\\\n display: flex;\\\\n cursor: pointer;\\\\n fill: $oc-gray-6;\\\\n padding: 0;\\\\n margin: 0;\\\\n background: none;\\\\n color: var(--icon-fill-color);\\\\n\\\\n svg {\\\\n width: 1.5rem;\\\\n height: 1.5rem;\\\\n }\\\\n\\\\n &:hover {\\\\n background: none;\\\\n }\\\\n }\\\\n\\\\n .reset-zoom-button {\\\\n padding: 0.2em;\\\\n background: transparent;\\\\n color: var(--text-primary-color);\\\\n font-family: var(--ui-font);\\\\n }\\\\n\\\\n .undo-redo-buttons {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n }\\\\n\\\\n @include isMobile {\\\\n aside {\\\\n display: none;\\\\n }\\\\n .scroll-back-to-content {\\\\n bottom: calc(80px + var(--sab, 0));\\\\n z-index: -1;\\\\n }\\\\n }\\\\n\\\\n .rtl-mirror {\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n transform: scaleX(-1);\\\\n }\\\\n }\\\\n\\\\n .zen-mode-visibility {\\\\n visibility: visible;\\\\n opacity: 1;\\\\n height: auto;\\\\n width: auto;\\\\n transition: opacity 0.5s;\\\\n\\\\n &.zen-mode-visibility--hidden {\\\\n visibility: hidden;\\\\n opacity: 0;\\\\n height: 0;\\\\n width: 0;\\\\n transition: opacity 0.5s;\\\\n }\\\\n }\\\\n\\\\n .disable-pointerEvents {\\\\n pointer-events: none !important;\\\\n }\\\\n\\\\n &.excalidraw--view-mode {\\\\n .App-menu {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n }\\\\n }\\\\n\\\\n input[type=\\\\\\\"text\\\\\\\"],\\\\n textarea:not(.excalidraw-wysiwyg) {\\\\n color: var(--text-primary-color);\\\\n border: 1.5px solid var(--input-border-color);\\\\n padding: 0.75rem;\\\\n white-space: nowrap;\\\\n border-radius: var(--space-factor);\\\\n background-color: var(--input-bg-color);\\\\n\\\\n &:not(:focus) {\\\\n &:hover {\\\\n background-color: var(--input-hover-bg-color);\\\\n }\\\\n }\\\\n\\\\n &:focus {\\\\n outline: none;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n }\\\\n\\\\n @media print {\\\\n .App-bottom-bar,\\\\n .FixedSideContainer,\\\\n .layer-ui__wrapper {\\\\n display: none;\\\\n }\\\\n }\\\\n}\\\\n\\\\n.ErrorSplash.excalidraw {\\\\n min-height: 100vh;\\\\n padding: 20px 0;\\\\n overflow: auto;\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n user-select: text;\\\\n\\\\n .ErrorSplash-messageContainer {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n justify-content: center;\\\\n\\\\n padding: 40px;\\\\n background-color: $oc-red-1;\\\\n border: 3px solid $oc-red-9;\\\\n }\\\\n\\\\n .ErrorSplash-paragraph {\\\\n margin: 15px 0;\\\\n max-width: 600px;\\\\n\\\\n &.align-center {\\\\n text-align: center;\\\\n }\\\\n }\\\\n\\\\n .bigger,\\\\n .bigger button {\\\\n font-size: 1.1em;\\\\n }\\\\n\\\\n .smaller,\\\\n .smaller button {\\\\n font-size: 0.9em;\\\\n }\\\\n\\\\n .ErrorSplash-details {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: flex-start;\\\\n\\\\n textarea {\\\\n width: 100%;\\\\n margin: 10px 0;\\\\n font-family: \\\\\\\"Cascadia\\\\\\\";\\\\n font-size: 0.8em;\\\\n }\\\\n }\\\\n}\\\\n\\\",\\\"@import \\\\\\\"open-color/open-color.scss\\\\\\\";\\\\n@import \\\\\\\"./variables.module.scss\\\\\\\";\\\\n\\\\n.excalidraw {\\\\n --theme-filter: none;\\\\n --button-destructive-bg-color: #{$oc-red-1};\\\\n --button-destructive-color: #{$oc-red-9};\\\\n --button-gray-1: #{$oc-gray-2};\\\\n --button-gray-2: #{$oc-gray-4};\\\\n --button-gray-3: #{$oc-gray-5};\\\\n --button-special-active-bg-color: #{$oc-green-0};\\\\n --dialog-border-color: #{$oc-gray-6};\\\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>');\\\\n --focus-highlight-color: #{$oc-blue-2};\\\\n --icon-fill-color: #{$oc-black};\\\\n --icon-green-fill-color: #{$oc-green-9};\\\\n --default-bg-color: #{$oc-white};\\\\n --input-bg-color: #{$oc-white};\\\\n --input-border-color: #{$oc-gray-4};\\\\n --input-hover-bg-color: #{$oc-gray-1};\\\\n --input-label-color: #{$oc-gray-7};\\\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\\\n --keybinding-color: #{$oc-gray-5};\\\\n --link-color: #{$oc-blue-7};\\\\n --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\\\n --popup-bg-color: #{$oc-white};\\\\n --popup-secondary-bg-color: #{$oc-gray-1};\\\\n --popup-text-color: #{$oc-black};\\\\n --popup-text-inverted-color: #{$oc-white};\\\\n --sab: env(safe-area-inset-bottom);\\\\n --sal: env(safe-area-inset-left);\\\\n --sar: env(safe-area-inset-right);\\\\n --sat: env(safe-area-inset-top);\\\\n --select-highlight-color: #{$oc-blue-5};\\\\n --shadow-island: 0 1px 5px #{transparentize($oc-black, 0.85)};\\\\n --space-factor: 0.25rem;\\\\n --text-primary-color: #{$oc-gray-8};\\\\n\\\\n &.theme--dark {\\\\n background: $oc-black;\\\\n\\\\n &.theme--dark-background-none {\\\\n background: none;\\\\n }\\\\n }\\\\n\\\\n &.theme--dark {\\\\n --theme-filter: #{$theme-filter};\\\\n --button-destructive-bg-color: #5a0000;\\\\n --button-destructive-color: #{$oc-red-3};\\\\n --button-gray-1: #363636;\\\\n --button-gray-2: #272727;\\\\n --button-gray-3: #222;\\\\n --button-special-active-bg-color: #204624;\\\\n --dialog-border-color: #{$oc-gray-9};\\\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path fill=\\\\\\\"%23ced4da\\\\\\\" d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>');\\\\n --focus-highlight-color: #{$oc-blue-6};\\\\n --icon-fill-color: #{$oc-gray-4};\\\\n --icon-green-fill-color: #{$oc-green-4};\\\\n --default-bg-color: #121212;\\\\n --input-bg-color: #121212;\\\\n --input-border-color: #2e2e2e;\\\\n --input-hover-bg-color: #181818;\\\\n --input-label-color: #{$oc-gray-2};\\\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\\\n --keybinding-color: #{$oc-gray-6};\\\\n --link-color: #{$oc-blue-4};\\\\n --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\\\n --popup-bg-color: #2c2c2c;\\\\n --popup-secondary-bg-color: #222;\\\\n --popup-text-color: #{$oc-gray-4};\\\\n --popup-text-inverted-color: #2c2c2c;\\\\n --select-highlight-color: #{$oc-blue-4};\\\\n --shadow-island: 0 1px 5px #{transparentize($oc-black, 0.7)};\\\\n --text-primary-color: #{$oc-gray-4};\\\\n }\\\\n}\\\\n\\\",\\\"//\\\\n//\\\\n// 𝗖 𝗢 𝗟 𝗢 𝗥\\\\n// v 1.9.1\\\\n//\\\\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\\\n\\\\n\\\\n// General\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-white: #ffffff;\\\\n$oc-black: #000000;\\\\n\\\\n\\\\n// Gray\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-gray-list: (\\\\n \\\\\\\"0\\\\\\\": #f8f9fa,\\\\n \\\\\\\"1\\\\\\\": #f1f3f5,\\\\n \\\\\\\"2\\\\\\\": #e9ecef,\\\\n \\\\\\\"3\\\\\\\": #dee2e6,\\\\n \\\\\\\"4\\\\\\\": #ced4da,\\\\n \\\\\\\"5\\\\\\\": #adb5bd,\\\\n \\\\\\\"6\\\\\\\": #868e96,\\\\n \\\\\\\"7\\\\\\\": #495057,\\\\n \\\\\\\"8\\\\\\\": #343a40,\\\\n \\\\\\\"9\\\\\\\": #212529\\\\n);\\\\n\\\\n$oc-gray-0: map-get($oc-gray-list, \\\\\\\"0\\\\\\\");\\\\n$oc-gray-1: map-get($oc-gray-list, \\\\\\\"1\\\\\\\");\\\\n$oc-gray-2: map-get($oc-gray-list, \\\\\\\"2\\\\\\\");\\\\n$oc-gray-3: map-get($oc-gray-list, \\\\\\\"3\\\\\\\");\\\\n$oc-gray-4: map-get($oc-gray-list, \\\\\\\"4\\\\\\\");\\\\n$oc-gray-5: map-get($oc-gray-list, \\\\\\\"5\\\\\\\");\\\\n$oc-gray-6: map-get($oc-gray-list, \\\\\\\"6\\\\\\\");\\\\n$oc-gray-7: map-get($oc-gray-list, \\\\\\\"7\\\\\\\");\\\\n$oc-gray-8: map-get($oc-gray-list, \\\\\\\"8\\\\\\\");\\\\n$oc-gray-9: map-get($oc-gray-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Red\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-red-list: (\\\\n \\\\\\\"0\\\\\\\": #fff5f5,\\\\n \\\\\\\"1\\\\\\\": #ffe3e3,\\\\n \\\\\\\"2\\\\\\\": #ffc9c9,\\\\n \\\\\\\"3\\\\\\\": #ffa8a8,\\\\n \\\\\\\"4\\\\\\\": #ff8787,\\\\n \\\\\\\"5\\\\\\\": #ff6b6b,\\\\n \\\\\\\"6\\\\\\\": #fa5252,\\\\n \\\\\\\"7\\\\\\\": #f03e3e,\\\\n \\\\\\\"8\\\\\\\": #e03131,\\\\n \\\\\\\"9\\\\\\\": #c92a2a\\\\n);\\\\n\\\\n$oc-red-0: map-get($oc-red-list, \\\\\\\"0\\\\\\\");\\\\n$oc-red-1: map-get($oc-red-list, \\\\\\\"1\\\\\\\");\\\\n$oc-red-2: map-get($oc-red-list, \\\\\\\"2\\\\\\\");\\\\n$oc-red-3: map-get($oc-red-list, \\\\\\\"3\\\\\\\");\\\\n$oc-red-4: map-get($oc-red-list, \\\\\\\"4\\\\\\\");\\\\n$oc-red-5: map-get($oc-red-list, \\\\\\\"5\\\\\\\");\\\\n$oc-red-6: map-get($oc-red-list, \\\\\\\"6\\\\\\\");\\\\n$oc-red-7: map-get($oc-red-list, \\\\\\\"7\\\\\\\");\\\\n$oc-red-8: map-get($oc-red-list, \\\\\\\"8\\\\\\\");\\\\n$oc-red-9: map-get($oc-red-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Pink\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-pink-list: (\\\\n \\\\\\\"0\\\\\\\": #fff0f6,\\\\n \\\\\\\"1\\\\\\\": #ffdeeb,\\\\n \\\\\\\"2\\\\\\\": #fcc2d7,\\\\n \\\\\\\"3\\\\\\\": #faa2c1,\\\\n \\\\\\\"4\\\\\\\": #f783ac,\\\\n \\\\\\\"5\\\\\\\": #f06595,\\\\n \\\\\\\"6\\\\\\\": #e64980,\\\\n \\\\\\\"7\\\\\\\": #d6336c,\\\\n \\\\\\\"8\\\\\\\": #c2255c,\\\\n \\\\\\\"9\\\\\\\": #a61e4d\\\\n);\\\\n\\\\n$oc-pink-0: map-get($oc-pink-list, \\\\\\\"0\\\\\\\");\\\\n$oc-pink-1: map-get($oc-pink-list, \\\\\\\"1\\\\\\\");\\\\n$oc-pink-2: map-get($oc-pink-list, \\\\\\\"2\\\\\\\");\\\\n$oc-pink-3: map-get($oc-pink-list, \\\\\\\"3\\\\\\\");\\\\n$oc-pink-4: map-get($oc-pink-list, \\\\\\\"4\\\\\\\");\\\\n$oc-pink-5: map-get($oc-pink-list, \\\\\\\"5\\\\\\\");\\\\n$oc-pink-6: map-get($oc-pink-list, \\\\\\\"6\\\\\\\");\\\\n$oc-pink-7: map-get($oc-pink-list, \\\\\\\"7\\\\\\\");\\\\n$oc-pink-8: map-get($oc-pink-list, \\\\\\\"8\\\\\\\");\\\\n$oc-pink-9: map-get($oc-pink-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Grape\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-grape-list: (\\\\n \\\\\\\"0\\\\\\\": #f8f0fc,\\\\n \\\\\\\"1\\\\\\\": #f3d9fa,\\\\n \\\\\\\"2\\\\\\\": #eebefa,\\\\n \\\\\\\"3\\\\\\\": #e599f7,\\\\n \\\\\\\"4\\\\\\\": #da77f2,\\\\n \\\\\\\"5\\\\\\\": #cc5de8,\\\\n \\\\\\\"6\\\\\\\": #be4bdb,\\\\n \\\\\\\"7\\\\\\\": #ae3ec9,\\\\n \\\\\\\"8\\\\\\\": #9c36b5,\\\\n \\\\\\\"9\\\\\\\": #862e9c\\\\n);\\\\n\\\\n$oc-grape-0: map-get($oc-grape-list, \\\\\\\"0\\\\\\\");\\\\n$oc-grape-1: map-get($oc-grape-list, \\\\\\\"1\\\\\\\");\\\\n$oc-grape-2: map-get($oc-grape-list, \\\\\\\"2\\\\\\\");\\\\n$oc-grape-3: map-get($oc-grape-list, \\\\\\\"3\\\\\\\");\\\\n$oc-grape-4: map-get($oc-grape-list, \\\\\\\"4\\\\\\\");\\\\n$oc-grape-5: map-get($oc-grape-list, \\\\\\\"5\\\\\\\");\\\\n$oc-grape-6: map-get($oc-grape-list, \\\\\\\"6\\\\\\\");\\\\n$oc-grape-7: map-get($oc-grape-list, \\\\\\\"7\\\\\\\");\\\\n$oc-grape-8: map-get($oc-grape-list, \\\\\\\"8\\\\\\\");\\\\n$oc-grape-9: map-get($oc-grape-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Violet\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-violet-list: (\\\\n \\\\\\\"0\\\\\\\": #f3f0ff,\\\\n \\\\\\\"1\\\\\\\": #e5dbff,\\\\n \\\\\\\"2\\\\\\\": #d0bfff,\\\\n \\\\\\\"3\\\\\\\": #b197fc,\\\\n \\\\\\\"4\\\\\\\": #9775fa,\\\\n \\\\\\\"5\\\\\\\": #845ef7,\\\\n \\\\\\\"6\\\\\\\": #7950f2,\\\\n \\\\\\\"7\\\\\\\": #7048e8,\\\\n \\\\\\\"8\\\\\\\": #6741d9,\\\\n \\\\\\\"9\\\\\\\": #5f3dc4\\\\n);\\\\n\\\\n$oc-violet-0: map-get($oc-violet-list, \\\\\\\"0\\\\\\\");\\\\n$oc-violet-1: map-get($oc-violet-list, \\\\\\\"1\\\\\\\");\\\\n$oc-violet-2: map-get($oc-violet-list, \\\\\\\"2\\\\\\\");\\\\n$oc-violet-3: map-get($oc-violet-list, \\\\\\\"3\\\\\\\");\\\\n$oc-violet-4: map-get($oc-violet-list, \\\\\\\"4\\\\\\\");\\\\n$oc-violet-5: map-get($oc-violet-list, \\\\\\\"5\\\\\\\");\\\\n$oc-violet-6: map-get($oc-violet-list, \\\\\\\"6\\\\\\\");\\\\n$oc-violet-7: map-get($oc-violet-list, \\\\\\\"7\\\\\\\");\\\\n$oc-violet-8: map-get($oc-violet-list, \\\\\\\"8\\\\\\\");\\\\n$oc-violet-9: map-get($oc-violet-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Indigo\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-indigo-list: (\\\\n \\\\\\\"0\\\\\\\": #edf2ff,\\\\n \\\\\\\"1\\\\\\\": #dbe4ff,\\\\n \\\\\\\"2\\\\\\\": #bac8ff,\\\\n \\\\\\\"3\\\\\\\": #91a7ff,\\\\n \\\\\\\"4\\\\\\\": #748ffc,\\\\n \\\\\\\"5\\\\\\\": #5c7cfa,\\\\n \\\\\\\"6\\\\\\\": #4c6ef5,\\\\n \\\\\\\"7\\\\\\\": #4263eb,\\\\n \\\\\\\"8\\\\\\\": #3b5bdb,\\\\n \\\\\\\"9\\\\\\\": #364fc7\\\\n);\\\\n\\\\n$oc-indigo-0: map-get($oc-indigo-list, \\\\\\\"0\\\\\\\");\\\\n$oc-indigo-1: map-get($oc-indigo-list, \\\\\\\"1\\\\\\\");\\\\n$oc-indigo-2: map-get($oc-indigo-list, \\\\\\\"2\\\\\\\");\\\\n$oc-indigo-3: map-get($oc-indigo-list, \\\\\\\"3\\\\\\\");\\\\n$oc-indigo-4: map-get($oc-indigo-list, \\\\\\\"4\\\\\\\");\\\\n$oc-indigo-5: map-get($oc-indigo-list, \\\\\\\"5\\\\\\\");\\\\n$oc-indigo-6: map-get($oc-indigo-list, \\\\\\\"6\\\\\\\");\\\\n$oc-indigo-7: map-get($oc-indigo-list, \\\\\\\"7\\\\\\\");\\\\n$oc-indigo-8: map-get($oc-indigo-list, \\\\\\\"8\\\\\\\");\\\\n$oc-indigo-9: map-get($oc-indigo-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Blue\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-blue-list: (\\\\n \\\\\\\"0\\\\\\\": #e7f5ff,\\\\n \\\\\\\"1\\\\\\\": #d0ebff,\\\\n \\\\\\\"2\\\\\\\": #a5d8ff,\\\\n \\\\\\\"3\\\\\\\": #74c0fc,\\\\n \\\\\\\"4\\\\\\\": #4dabf7,\\\\n \\\\\\\"5\\\\\\\": #339af0,\\\\n \\\\\\\"6\\\\\\\": #228be6,\\\\n \\\\\\\"7\\\\\\\": #1c7ed6,\\\\n \\\\\\\"8\\\\\\\": #1971c2,\\\\n \\\\\\\"9\\\\\\\": #1864ab\\\\n);\\\\n\\\\n$oc-blue-0: map-get($oc-blue-list, \\\\\\\"0\\\\\\\");\\\\n$oc-blue-1: map-get($oc-blue-list, \\\\\\\"1\\\\\\\");\\\\n$oc-blue-2: map-get($oc-blue-list, \\\\\\\"2\\\\\\\");\\\\n$oc-blue-3: map-get($oc-blue-list, \\\\\\\"3\\\\\\\");\\\\n$oc-blue-4: map-get($oc-blue-list, \\\\\\\"4\\\\\\\");\\\\n$oc-blue-5: map-get($oc-blue-list, \\\\\\\"5\\\\\\\");\\\\n$oc-blue-6: map-get($oc-blue-list, \\\\\\\"6\\\\\\\");\\\\n$oc-blue-7: map-get($oc-blue-list, \\\\\\\"7\\\\\\\");\\\\n$oc-blue-8: map-get($oc-blue-list, \\\\\\\"8\\\\\\\");\\\\n$oc-blue-9: map-get($oc-blue-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Cyan\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-cyan-list: (\\\\n \\\\\\\"0\\\\\\\": #e3fafc,\\\\n \\\\\\\"1\\\\\\\": #c5f6fa,\\\\n \\\\\\\"2\\\\\\\": #99e9f2,\\\\n \\\\\\\"3\\\\\\\": #66d9e8,\\\\n \\\\\\\"4\\\\\\\": #3bc9db,\\\\n \\\\\\\"5\\\\\\\": #22b8cf,\\\\n \\\\\\\"6\\\\\\\": #15aabf,\\\\n \\\\\\\"7\\\\\\\": #1098ad,\\\\n \\\\\\\"8\\\\\\\": #0c8599,\\\\n \\\\\\\"9\\\\\\\": #0b7285\\\\n);\\\\n\\\\n$oc-cyan-0: map-get($oc-cyan-list, \\\\\\\"0\\\\\\\");\\\\n$oc-cyan-1: map-get($oc-cyan-list, \\\\\\\"1\\\\\\\");\\\\n$oc-cyan-2: map-get($oc-cyan-list, \\\\\\\"2\\\\\\\");\\\\n$oc-cyan-3: map-get($oc-cyan-list, \\\\\\\"3\\\\\\\");\\\\n$oc-cyan-4: map-get($oc-cyan-list, \\\\\\\"4\\\\\\\");\\\\n$oc-cyan-5: map-get($oc-cyan-list, \\\\\\\"5\\\\\\\");\\\\n$oc-cyan-6: map-get($oc-cyan-list, \\\\\\\"6\\\\\\\");\\\\n$oc-cyan-7: map-get($oc-cyan-list, \\\\\\\"7\\\\\\\");\\\\n$oc-cyan-8: map-get($oc-cyan-list, \\\\\\\"8\\\\\\\");\\\\n$oc-cyan-9: map-get($oc-cyan-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Teal\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-teal-list: (\\\\n \\\\\\\"0\\\\\\\": #e6fcf5,\\\\n \\\\\\\"1\\\\\\\": #c3fae8,\\\\n \\\\\\\"2\\\\\\\": #96f2d7,\\\\n \\\\\\\"3\\\\\\\": #63e6be,\\\\n \\\\\\\"4\\\\\\\": #38d9a9,\\\\n \\\\\\\"5\\\\\\\": #20c997,\\\\n \\\\\\\"6\\\\\\\": #12b886,\\\\n \\\\\\\"7\\\\\\\": #0ca678,\\\\n \\\\\\\"8\\\\\\\": #099268,\\\\n \\\\\\\"9\\\\\\\": #087f5b\\\\n);\\\\n\\\\n$oc-teal-0: map-get($oc-teal-list, \\\\\\\"0\\\\\\\");\\\\n$oc-teal-1: map-get($oc-teal-list, \\\\\\\"1\\\\\\\");\\\\n$oc-teal-2: map-get($oc-teal-list, \\\\\\\"2\\\\\\\");\\\\n$oc-teal-3: map-get($oc-teal-list, \\\\\\\"3\\\\\\\");\\\\n$oc-teal-4: map-get($oc-teal-list, \\\\\\\"4\\\\\\\");\\\\n$oc-teal-5: map-get($oc-teal-list, \\\\\\\"5\\\\\\\");\\\\n$oc-teal-6: map-get($oc-teal-list, \\\\\\\"6\\\\\\\");\\\\n$oc-teal-7: map-get($oc-teal-list, \\\\\\\"7\\\\\\\");\\\\n$oc-teal-8: map-get($oc-teal-list, \\\\\\\"8\\\\\\\");\\\\n$oc-teal-9: map-get($oc-teal-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Green\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-green-list: (\\\\n \\\\\\\"0\\\\\\\": #ebfbee,\\\\n \\\\\\\"1\\\\\\\": #d3f9d8,\\\\n \\\\\\\"2\\\\\\\": #b2f2bb,\\\\n \\\\\\\"3\\\\\\\": #8ce99a,\\\\n \\\\\\\"4\\\\\\\": #69db7c,\\\\n \\\\\\\"5\\\\\\\": #51cf66,\\\\n \\\\\\\"6\\\\\\\": #40c057,\\\\n \\\\\\\"7\\\\\\\": #37b24d,\\\\n \\\\\\\"8\\\\\\\": #2f9e44,\\\\n \\\\\\\"9\\\\\\\": #2b8a3e\\\\n);\\\\n\\\\n$oc-green-0: map-get($oc-green-list, \\\\\\\"0\\\\\\\");\\\\n$oc-green-1: map-get($oc-green-list, \\\\\\\"1\\\\\\\");\\\\n$oc-green-2: map-get($oc-green-list, \\\\\\\"2\\\\\\\");\\\\n$oc-green-3: map-get($oc-green-list, \\\\\\\"3\\\\\\\");\\\\n$oc-green-4: map-get($oc-green-list, \\\\\\\"4\\\\\\\");\\\\n$oc-green-5: map-get($oc-green-list, \\\\\\\"5\\\\\\\");\\\\n$oc-green-6: map-get($oc-green-list, \\\\\\\"6\\\\\\\");\\\\n$oc-green-7: map-get($oc-green-list, \\\\\\\"7\\\\\\\");\\\\n$oc-green-8: map-get($oc-green-list, \\\\\\\"8\\\\\\\");\\\\n$oc-green-9: map-get($oc-green-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Lime\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-lime-list: (\\\\n \\\\\\\"0\\\\\\\": #f4fce3,\\\\n \\\\\\\"1\\\\\\\": #e9fac8,\\\\n \\\\\\\"2\\\\\\\": #d8f5a2,\\\\n \\\\\\\"3\\\\\\\": #c0eb75,\\\\n \\\\\\\"4\\\\\\\": #a9e34b,\\\\n \\\\\\\"5\\\\\\\": #94d82d,\\\\n \\\\\\\"6\\\\\\\": #82c91e,\\\\n \\\\\\\"7\\\\\\\": #74b816,\\\\n \\\\\\\"8\\\\\\\": #66a80f,\\\\n \\\\\\\"9\\\\\\\": #5c940d\\\\n);\\\\n\\\\n$oc-lime-0: map-get($oc-lime-list, \\\\\\\"0\\\\\\\");\\\\n$oc-lime-1: map-get($oc-lime-list, \\\\\\\"1\\\\\\\");\\\\n$oc-lime-2: map-get($oc-lime-list, \\\\\\\"2\\\\\\\");\\\\n$oc-lime-3: map-get($oc-lime-list, \\\\\\\"3\\\\\\\");\\\\n$oc-lime-4: map-get($oc-lime-list, \\\\\\\"4\\\\\\\");\\\\n$oc-lime-5: map-get($oc-lime-list, \\\\\\\"5\\\\\\\");\\\\n$oc-lime-6: map-get($oc-lime-list, \\\\\\\"6\\\\\\\");\\\\n$oc-lime-7: map-get($oc-lime-list, \\\\\\\"7\\\\\\\");\\\\n$oc-lime-8: map-get($oc-lime-list, \\\\\\\"8\\\\\\\");\\\\n$oc-lime-9: map-get($oc-lime-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Yellow\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-yellow-list: (\\\\n \\\\\\\"0\\\\\\\": #fff9db,\\\\n \\\\\\\"1\\\\\\\": #fff3bf,\\\\n \\\\\\\"2\\\\\\\": #ffec99,\\\\n \\\\\\\"3\\\\\\\": #ffe066,\\\\n \\\\\\\"4\\\\\\\": #ffd43b,\\\\n \\\\\\\"5\\\\\\\": #fcc419,\\\\n \\\\\\\"6\\\\\\\": #fab005,\\\\n \\\\\\\"7\\\\\\\": #f59f00,\\\\n \\\\\\\"8\\\\\\\": #f08c00,\\\\n \\\\\\\"9\\\\\\\": #e67700\\\\n);\\\\n\\\\n$oc-yellow-0: map-get($oc-yellow-list, \\\\\\\"0\\\\\\\");\\\\n$oc-yellow-1: map-get($oc-yellow-list, \\\\\\\"1\\\\\\\");\\\\n$oc-yellow-2: map-get($oc-yellow-list, \\\\\\\"2\\\\\\\");\\\\n$oc-yellow-3: map-get($oc-yellow-list, \\\\\\\"3\\\\\\\");\\\\n$oc-yellow-4: map-get($oc-yellow-list, \\\\\\\"4\\\\\\\");\\\\n$oc-yellow-5: map-get($oc-yellow-list, \\\\\\\"5\\\\\\\");\\\\n$oc-yellow-6: map-get($oc-yellow-list, \\\\\\\"6\\\\\\\");\\\\n$oc-yellow-7: map-get($oc-yellow-list, \\\\\\\"7\\\\\\\");\\\\n$oc-yellow-8: map-get($oc-yellow-list, \\\\\\\"8\\\\\\\");\\\\n$oc-yellow-9: map-get($oc-yellow-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Orange\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-orange-list: (\\\\n \\\\\\\"0\\\\\\\": #fff4e6,\\\\n \\\\\\\"1\\\\\\\": #ffe8cc,\\\\n \\\\\\\"2\\\\\\\": #ffd8a8,\\\\n \\\\\\\"3\\\\\\\": #ffc078,\\\\n \\\\\\\"4\\\\\\\": #ffa94d,\\\\n \\\\\\\"5\\\\\\\": #ff922b,\\\\n \\\\\\\"6\\\\\\\": #fd7e14,\\\\n \\\\\\\"7\\\\\\\": #f76707,\\\\n \\\\\\\"8\\\\\\\": #e8590c,\\\\n \\\\\\\"9\\\\\\\": #d9480f\\\\n);\\\\n\\\\n$oc-orange-0: map-get($oc-orange-list, \\\\\\\"0\\\\\\\");\\\\n$oc-orange-1: map-get($oc-orange-list, \\\\\\\"1\\\\\\\");\\\\n$oc-orange-2: map-get($oc-orange-list, \\\\\\\"2\\\\\\\");\\\\n$oc-orange-3: map-get($oc-orange-list, \\\\\\\"3\\\\\\\");\\\\n$oc-orange-4: map-get($oc-orange-list, \\\\\\\"4\\\\\\\");\\\\n$oc-orange-5: map-get($oc-orange-list, \\\\\\\"5\\\\\\\");\\\\n$oc-orange-6: map-get($oc-orange-list, \\\\\\\"6\\\\\\\");\\\\n$oc-orange-7: map-get($oc-orange-list, \\\\\\\"7\\\\\\\");\\\\n$oc-orange-8: map-get($oc-orange-list, \\\\\\\"8\\\\\\\");\\\\n$oc-orange-9: map-get($oc-orange-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Color list\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-color-spectrum: 9;\\\\n\\\\n$oc-color-list: (\\\\n $oc-gray-list: \\\\\\\"gray\\\\\\\",\\\\n $oc-red-list: \\\\\\\"red\\\\\\\",\\\\n $oc-pink-list: \\\\\\\"pink\\\\\\\",\\\\n $oc-grape-list: \\\\\\\"grape\\\\\\\",\\\\n $oc-violet-list: \\\\\\\"violet\\\\\\\",\\\\n $oc-indigo-list: \\\\\\\"indigo\\\\\\\",\\\\n $oc-blue-list: \\\\\\\"blue\\\\\\\",\\\\n $oc-cyan-list: \\\\\\\"cyan\\\\\\\",\\\\n $oc-teal-list: \\\\\\\"teal\\\\\\\",\\\\n $oc-green-list: \\\\\\\"green\\\\\\\",\\\\n $oc-lime-list: \\\\\\\"lime\\\\\\\",\\\\n $oc-yellow-list: \\\\\\\"yellow\\\\\\\",\\\\n $oc-orange-list: \\\\\\\"orange\\\\\\\"\\\\n);\\\\n\\\"],\\\"sourceRoot\\\":\\\"\\\"}]);\\n// Exports\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL3N0eWxlcy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUNPO0FBQ3BILDRDQUE0Qyw2akJBQWtSO0FBQzlULDRDQUE0QyxpbUJBQXFTO0FBQ2pWLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0YseUNBQXlDLDBHQUErQjtBQUN4RSx5Q0FBeUMsMEdBQStCO0FBQ3hFO0FBQ0EsbURBQW1ELGdEQUFnRCxHQUFHLGFBQWEsZ0RBQWdELEdBQUcsaUJBQWlCLHlCQUF5QiwyQ0FBMkMsd0NBQXdDLDZCQUE2Qiw2QkFBNkIsNkJBQTZCLDhDQUE4QyxtQ0FBbUMscUVBQXFFLHFDQUFxQywrQkFBK0IscUNBQXFDLGdDQUFnQyw4QkFBOEIsa0NBQWtDLG9DQUFvQyxpQ0FBaUMsaURBQWlELGdDQUFnQywwQkFBMEIsa0RBQWtELDhCQUE4Qix3Q0FBd0MsZ0NBQWdDLHlDQUF5Qyx1Q0FBdUMscUNBQXFDLHNDQUFzQyxvQ0FBb0Msc0NBQXNDLG1EQUFtRCw0QkFBNEIsa0NBQWtDLEdBQUcsMkJBQTJCLHdCQUF3QixHQUFHLHVEQUF1RCxxQkFBcUIsR0FBRywyQkFBMkIsbURBQW1ELDJDQUEyQyx3Q0FBd0MsNkJBQTZCLDZCQUE2QiwwQkFBMEIsOENBQThDLG1DQUFtQyxxRUFBcUUscUNBQXFDLCtCQUErQixxQ0FBcUMsZ0NBQWdDLDhCQUE4QixrQ0FBa0Msb0NBQW9DLGlDQUFpQyw4Q0FBOEMsZ0NBQWdDLDBCQUEwQiwrQ0FBK0MsOEJBQThCLHFDQUFxQyxnQ0FBZ0MseUNBQXlDLHNDQUFzQyxrREFBa0Qsa0NBQWtDLEdBQUcsV0FBVyx1QkFBdUIs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QVUsV0FBVyxNQUFNLFFBQVEsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsTUFBTSxNQUFNLFVBQVUsVUFBVSxNQUFNLFFBQVEsVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxNQUFNLE9BQU8sVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxVQUFVLFVBQVUsTUFBTSxNQUFNLFVBQVUsWUFBWSxXQUFXLE1BQU0sT0FBTyxXQUFXLFdBQVcsTUFBTSxPQUFPLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxNQUFNLE9BQU8sV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxNQUFNLE1BQU0sVUFBVSxVQUFVLFVBQVUsVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sV0FBVyxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLFdBQVcsVUFBVSxNQUFNLEtBQUssVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sS0FBSyxVQUFVLFdBQVcsTUFBTSxLQUFLLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsS0FBSyxLQUFLLFdBQVcsVUFBVSxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsS0FBSyxLQUFLLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsV0FBVyxXQUFXLFdBQVcsS0FBSyxNQUFNLFVBQVUsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLEtBQUssTUFBTSxVQUFVLE1BQU0sTUFBTSxXQUFXLFVBQVUsT0FBTyxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVSxVQUFVLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFVBQVUsVUFBVSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxPQUFPLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxVQUFVLFdBQVcsTUFBTSxNQUFNLE9B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QUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELDRRQUE0USw4Q0FBOEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0UUFBNFEsOENBQThDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDhRQUE4USxnREFBZ0QsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0QyxnUkFBZ1Isa0RBQWtELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdSQUFnUixrREFBa0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QseUZBQXlGLHVkQUF1ZCxxQkFBcUI7QUFDcnYzQztBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Nzcy9zdHlsZXMuc2Nzcz8wZDU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyA9IG5ldyBVUkwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyOTIuNFxcXCIgaGVpZ2h0PVxcXCIyOTIuNFxcXCIgdmlld0JveD1cXFwiMCAwIDI5MiAyOTJcXFwiPjxwYXRoIGQ9XFxcIk0yODcgMTk3TDE1OSA2OWMtNC0zLTgtNS0xMy01cy05IDItMTMgNUw1IDE5N2MtMyA0LTUgOC01IDEzczIgOSA1IDEzYzQgNCA4IDUgMTMgNWgyNTZjNSAwIDktMSAxMy01czUtOCA1LTEzLTEtOS01LTEzelxcXCIvPjwvc3ZnPlwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI5Mi40XFxcIiBoZWlnaHQ9XFxcIjI5Mi40XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjkyIDI5MlxcXCI+PHBhdGggZmlsbD1cXFwiJTIzY2VkNGRhXFxcIiBkPVxcXCJNMjg3IDE5N0wxNTkgNjljLTQtMy04LTUtMTMtNXMtOSAyLTEzIDVMNSAxOTdjLTMgNC01IDgtNSAxM3MyIDkgNSAxM2M0IDQgOCA1IDEzIDVoMjU2YzUgMCA5LTEgMTMtNXM1LTggNS0xMy0xLTktNS0xM3pcXFwiLz48L3N2Zz5cIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMV9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzFfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbn1cXG5cXG46ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxufVxcblxcbi5leGNhbGlkcmF3IHtcXG4gIC0tdGhlbWUtZmlsdGVyOiBub25lO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtYmctY29sb3I6ICNmZmUzZTM7XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI2M5MmEyYTtcXG4gIC0tYnV0dG9uLWdyYXktMTogI2U5ZWNlZjtcXG4gIC0tYnV0dG9uLWdyYXktMjogI2NlZDRkYTtcXG4gIC0tYnV0dG9uLWdyYXktMzogI2FkYjViZDtcXG4gIC0tYnV0dG9uLXNwZWNpYWwtYWN0aXZlLWJnLWNvbG9yOiAjZWJmYmVlO1xcbiAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjODY4ZTk2O1xcbiAgLS1kcm9wZG93bi1pY29uOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpO1xcbiAgLS1mb2N1cy1oaWdobGlnaHQtY29sb3I6ICNhNWQ4ZmY7XFxuICAtLWljb24tZmlsbC1jb2xvcjogIzAwMDAwMDtcXG4gIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjMmI4YTNlO1xcbiAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjZmZmZmZmO1xcbiAgLS1pbnB1dC1iZy1jb2xvcjogI2ZmZmZmZjtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjY2VkNGRhO1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogI2YxZjNmNTtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICM0OTUwNTc7XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI2FkYjViZDtcXG4gIC0tbGluay1jb2xvcjogIzFjN2VkNjtcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg4KTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICNmZmZmZmY7XFxuICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogI2YxZjNmNTtcXG4gIC0tcG9wdXAtdGV4dC1jb2xvcjogIzAwMDAwMDtcXG4gIC0tcG9wdXAtdGV4dC1pbnZlcnRlZC1jb2xvcjogI2ZmZmZmZjtcXG4gIC0tc2FiOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XFxuICAtLXNhbDogZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTtcXG4gIC0tc2FyOiBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KTtcXG4gIC0tc2F0OiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCk7XFxuICAtLXNlbGVjdC1oaWdobGlnaHQtY29sb3I6ICMzMzlhZjA7XFxuICAtLXNoYWRvdy1pc2xhbmQ6IDAgMXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xcbiAgLS1zcGFjZS1mYWN0b3I6IDAuMjVyZW07XFxuICAtLXRleHQtcHJpbWFyeS1jb2xvcjogIzM0M2E0MDtcXG59XFxuLmV4Y2FsaWRyYXcudGhlbWUtLWRhcmsge1xcbiAgYmFja2dyb3VuZDogIzAwMDAwMDtcXG59XFxuLmV4Y2FsaWRyYXcudGhlbWUtLWRhcmsudGhlbWUtLWRhcmstYmFja2dyb3VuZC1ub25lIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIHtcXG4gIC0tdGhlbWUtZmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1iZy1jb2xvcjogIzVhMDAwMDtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWNvbG9yOiAjZmZhOGE4O1xcbiAgLS1idXR0b24tZ3JheS0xOiAjMzYzNjM2O1xcbiAgLS1idXR0b24tZ3JheS0yOiAjMjcyNzI3O1xcbiAgLS1idXR0b24tZ3JheS0zOiAjMjIyO1xcbiAgLS1idXR0b24tc3BlY2lhbC1hY3RpdmUtYmctY29sb3I6ICMyMDQ2MjQ7XFxuICAtLWRpYWxvZy1ib3JkZXItY29sb3I6ICMyMTI1Mjk7XFxuICAtLWRyb3Bkb3duLWljb246IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gKyBcIik7XFxuICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogIzIyOGJlNjtcXG4gIC0taWNvbi1maWxsLWNvbG9yOiAjY2VkNGRhO1xcbiAgLS1pY29uLWdyZWVuLWZpbGwtY29sb3I6ICM2OWRiN2M7XFxuICAtLWRlZmF1bHQtYmctY29sb3I6ICMxMjEyMTI7XFxuICAtLWlucHV0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgLS1pbnB1dC1ib3JkZXItY29sb3I6ICMyZTJlMmU7XFxuICAtLWlucHV0LWhvdmVyLWJnLWNvbG9yOiAjMTgxODE4O1xcbiAgLS1pbnB1dC1sYWJlbC1jb2xvcjogI2U5ZWNlZjtcXG4gIC0taXNsYW5kLWJnLWNvbG9yOiByZ2JhKDMwLCAzMCwgMzAsIDAuOTgpO1xcbiAgLS1rZXliaW5kaW5nLWNvbG9yOiAjODY4ZTk2O1xcbiAgLS1saW5rLWNvbG9yOiAjNGRhYmY3O1xcbiAgLS1vdmVybGF5LWJnLWNvbG9yOiByZ2JhKDUyLCA1OCwgNjQsIDAuMTIpO1xcbiAgLS1wb3B1cC1iZy1jb2xvcjogIzJjMmMyYztcXG4gIC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yOiAjMjIyO1xcbiAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjY2VkNGRhO1xcbiAgLS1wb3B1cC10ZXh0LWludmVydGVkLWNvbG9yOiAjMmMyYzJjO1xcbiAgLS1zZWxlY3QtaGlnaGxpZ2h0LWNvbG9yOiAjNGRhYmY3O1xcbiAgLS1zaGFkb3ctaXNsYW5kOiAwIDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xcbiAgLS10ZXh0LXByaW1hcnktY29sb3I6ICNjZWQ0ZGE7XFxufVxcblxcbjpyb290IHtcXG4gIC0tekluZGV4LWNhbnZhczogMTtcXG4gIC0tekluZGV4LXd5c2l3eWc6IDI7XFxuICAtLXpJbmRleC1sYXllclVJOiAzO1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXc6Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgYSB7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBhOmhvdmVyIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbn1cXG4uZXhjYWxpZHJhdyBjYW52YXMge1xcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7XFxuICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XFxuICB6LWluZGV4OiB2YXIoLS16SW5kZXgtY2FudmFzKTtcXG59XFxuLmV4Y2FsaWRyYXdfX2NhbnZhcyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIGNhbnZhcyB7XFxuICBmaWx0ZXI6IHZhcigtLXRoZW1lLWZpbHRlcik7XFxufVxcbi5leGNhbGlkcmF3IC5GaXhlZFNpZGVDb250YWluZXIge1xcbiAgcGFkZGluZy10b3A6IHZhcigtLXNhdCwgMCk7XFxuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbFJvdyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBoMyxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gbGVnZW5kLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuY29udHJvbC1sYWJlbCB7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuMzMzcmVtO1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmNvbnRyb2wtbGFiZWwgaW5wdXQge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIGgzOmZpcnN0LWNoaWxkLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQ6Zmlyc3QtY2hpbGQsXFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5jb250cm9sLWxhYmVsOmZpcnN0LWNoaWxkIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQge1xcbiAgcGFkZGluZzogMDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5pY29uU2VsZWN0TGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBpbnB1dFt0eXBlPXJhZGlvXSxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgaW5wdXRbdHlwZT1idXR0b25dIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5pY29uUm93IHtcXG4gIG1hcmdpbi10b3A6IDhweDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5Ub29sSWNvbiB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4taW5saW5lLWVuZDogOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmZvY3VzIHtcXG4gIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmRpc2FibGVkIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb25fX2ljb24ge1xcbiAgd2lkdGg6IDI4cHg7XFxuICBoZWlnaHQ6IDI4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBmaWVsZHNldCB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5kaXZpZGVyIHtcXG4gIHdpZHRoOiAxcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xcbiAgbWFyZ2luOiAxcHg7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmZvY3VzLXdpdGhpbixcXG4uZXhjYWxpZHJhdyBpbnB1dDpmb2N1cyB7XFxuICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b24sXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwge1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIG1hcmdpbjogMC4xMjVyZW0gMDtcXG4gIHBhZGRpbmc6IDAuMjVyZW07XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246Zm9jdXMsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6Zm9jdXMge1xcbiAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgYnV0dG9uOmhvdmVyLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246YWN0aXZlLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG59XFxuLmV4Y2FsaWRyYXcgYnV0dG9uOmRpc2FibGVkLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmRpc2FibGVkIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcbi5leGNhbGlkcmF3IC5hY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuYWN0aXZlOmhvdmVyLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsLmFjdGl2ZTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmFjdGl2ZTphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QuYnV0dG9uTGlzdEljb24gbGFiZWwge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIGxhYmVsIHN2ZyB7XFxuICB3aWR0aDogMzZweDtcXG4gIGhlaWdodDogMTRweDtcXG4gIHBhZGRpbmc6IDJweDtcXG4gIG9wYWNpdHk6IDAuNjtcXG59XFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QuYnV0dG9uTGlzdEljb24gbGFiZWwuYWN0aXZlIHN2ZyB7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvcC1iYXIge1xcbiAgei1pbmRleDogdmFyKC0tekluZGV4LWxheWVyVUkpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgLS1iYXItcGFkZGluZzogY2FsYyg0ICogdmFyKC0tc3BhY2UtZmFjdG9yKSk7XFxuICBwYWRkaW5nLXRvcDogbWF4KHZhcigtLWJhci1wYWRkaW5nKSwgdmFyKC0tc2F0LDApKTtcXG4gIHBhZGRpbmctcmlnaHQ6IHZhcigtLXNhciwgMCk7XFxuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2FiLCAwKTtcXG4gIHBhZGRpbmctbGVmdDogdmFyKC0tc2FsLCAwKTtcXG4gIHotaW5kZXg6IDQ7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtYm90dG9tLWJhciA+IC5Jc2xhbmQge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBtaW4td2lkdGg6IDEwMCU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgbWF4LWhlaWdodDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtYm90dG9tLWJhciA+IC5Jc2xhbmQgLnBhbmVsQ29sdW1uIHtcXG4gIHBhZGRpbmc6IDhweCA4cHggMCA4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtdG9vbGJhciB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtdG9vbGJhci1jb250ZW50IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgcGFkZGluZzogOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1vYmlsZS1tZW51IHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgb3ZlcmZsb3cteDogdmlzaWJsZTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tYmFyLXBhZGRpbmcpO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnUge1xcbiAgZGlzcGxheTogZ3JpZDtcXG4gIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfdG9wIHtcXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gMWZyO1xcbiAgZ3JpZC1nYXA6IDRweDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmV4Y2FsaWRyYXcgLmxheWVyLXVpX193cmFwcGVyOm5vdCguZGlzYWJsZS1wb2ludGVyRXZlbnRzKSAuQXBwLW1lbnVfdG9wID4gKiB7XFxuICBwb2ludGVyLWV2ZW50czogYWxsO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfdG9wID4gKjpmaXJzdC1jaGlsZCB7XFxuICBqdXN0aWZ5LXNlbGY6IGZsZXgtc3RhcnQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV90b3AgPiAqOmxhc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDA7XFxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG8gbWluLWNvbnRlbnQ7XFxuICBncmlkLWdhcDogMTVweDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6IDEwMDtcXG59XFxuOnJvb3RbZGlyPWx0cl0gLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSB7XFxuICBsZWZ0OiAwLjI1cmVtO1xcbn1cXG46cm9vdFtkaXI9cnRsXSAuZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tIHtcXG4gIHJpZ2h0OiAwLjI1cmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tLS10cmFuc2l0aW9uLWxlZnQgc2VjdGlvbiB7XFxuICB3aWR0aDogMTg1cHg7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20gc2VjdGlvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tID4gKjpmaXJzdC1jaGlsZCB7XFxuICBqdXN0aWZ5LXNlbGY6IGZsZXgtc3RhcnQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20gPiAqOmxhc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2xlZnQge1xcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnIgYXV0byAxZnI7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9yaWdodCB7XFxuICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X19sZWZ0IHtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Qge1xcbiAgaGVpZ2h0OiAxLjVyZW07XFxuICBwYWRkaW5nOiAwO1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuNXJlbTtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogMS41cmVtO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIGFwcGVhcmFuY2U6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1kcm9wZG93bi1pY29uKTtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjdyZW0gdG9wIDUwJSwgMCAwO1xcbiAgYmFja2dyb3VuZC1zaXplOiAwLjY1ZW0gYXV0bywgMTAwJTtcXG59XFxuOnJvb3RbZGlyPXJ0bF0gLmV4Y2FsaWRyYXcgLmRyb3Bkb3duLXNlbGVjdCB7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IDAuN3JlbSB0b3AgNTAlLCAwIDA7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6Zm9jdXMge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuekluZGV4QnV0dG9uIHtcXG4gIG1hcmdpbjogMDtcXG4gIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuICBwYWRkaW5nOiA1cHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgLnpJbmRleEJ1dHRvbiBzdmcge1xcbiAgd2lkdGg6IDE4cHg7XFxuICBoZWlnaHQ6IDE4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5zY3JvbGwtYmFjay10by1jb250ZW50IHtcXG4gIGNvbG9yOiB2YXIoLS1wb3B1cC10ZXh0LWNvbG9yKTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJvdHRvbTogMzBweDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcXG59XFxuLmV4Y2FsaWRyYXcgLmhlbHAtaWNvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZmlsbDogIzg2OGU5NjtcXG4gIHBhZGRpbmc6IDA7XFxuICBtYXJnaW46IDA7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5oZWxwLWljb24gc3ZnIHtcXG4gIHdpZHRoOiAxLjVyZW07XFxuICBoZWlnaHQ6IDEuNXJlbTtcXG59XFxuLmV4Y2FsaWRyYXcgLmhlbHAtaWNvbjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdyAucmVzZXQtem9vbS1idXR0b24ge1xcbiAgcGFkZGluZzogMC4yZW07XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgZm9udC1mYW1pbHk6IHZhcigtLXVpLWZvbnQpO1xcbn1cXG4uZXhjYWxpZHJhdyAudW5kby1yZWRvLWJ1dHRvbnMge1xcbiAgZGlzcGxheTogZ3JpZDtcXG4gIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XFxuICBnYXA6IDAuNGVtO1xcbiAgbWFyZ2luLXRvcDogYXV0bztcXG4gIG1hcmdpbi1ib3R0b206IGF1dG87XFxuICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwLjZlbTtcXG59XFxuLmV4Y2FsaWRyYXctLW1vYmlsZS5leGNhbGlkcmF3IGFzaWRlIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuc2Nyb2xsLWJhY2stdG8tY29udGVudCB7XFxuICBib3R0b206IGNhbGMoODBweCArIHZhcigtLXNhYiwgMCkpO1xcbiAgei1pbmRleDogLTE7XFxufVxcblxcbjpyb290W2Rpcj1ydGxdIC5leGNhbGlkcmF3IC5ydGwtbWlycm9yIHtcXG4gIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcXG59XFxuLmV4Y2FsaWRyYXcgLnplbi1tb2RlLXZpc2liaWxpdHkge1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIG9wYWNpdHk6IDE7XFxuICBoZWlnaHQ6IGF1dG87XFxuICB3aWR0aDogYXV0bztcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cztcXG59XFxuLmV4Y2FsaWRyYXcgLnplbi1tb2RlLXZpc2liaWxpdHkuemVuLW1vZGUtdmlzaWJpbGl0eS0taGlkZGVuIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICB3aWR0aDogMDtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cztcXG59XFxuLmV4Y2FsaWRyYXcgLmRpc2FibGUtcG9pbnRlckV2ZW50cyB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG4uZXhjYWxpZHJhdy5leGNhbGlkcmF3LS12aWV3LW1vZGUgLkFwcC1tZW51IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbi5leGNhbGlkcmF3IGlucHV0W3R5cGU9dGV4dF0sXFxuLmV4Y2FsaWRyYXcgdGV4dGFyZWE6bm90KC5leGNhbGlkcmF3LXd5c2l3eWcpIHtcXG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpO1xcbiAgcGFkZGluZzogMC43NXJlbTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zcGFjZS1mYWN0b3IpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtYmctY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdOm5vdCg6Zm9jdXMpOmhvdmVyLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKTpub3QoOmZvY3VzKTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pbnB1dC1ob3Zlci1iZy1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsXFxuLmV4Y2FsaWRyYXcgdGV4dGFyZWE6bm90KC5leGNhbGlkcmF3LXd5c2l3eWcpOmZvY3VzIHtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG59XFxuQG1lZGlhIHByaW50IHtcXG4gIC5leGNhbGlkcmF3IC5BcHAtYm90dG9tLWJhcixcXG4uZXhjYWxpZHJhdyAuRml4ZWRTaWRlQ29udGFpbmVyLFxcbi5leGNhbGlkcmF3IC5sYXllci11aV9fd3JhcHBlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxufVxcblxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IHtcXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xcbiAgcGFkZGluZzogMjBweCAwO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgdXNlci1zZWxlY3Q6IHRleHQ7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1tZXNzYWdlQ29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgcGFkZGluZzogNDBweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmUzZTM7XFxuICBib3JkZXI6IDNweCBzb2xpZCAjYzkyYTJhO1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtcGFyYWdyYXBoIHtcXG4gIG1hcmdpbjogMTVweCAwO1xcbiAgbWF4LXdpZHRoOiA2MDBweDtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLkVycm9yU3BsYXNoLXBhcmFncmFwaC5hbGlnbi1jZW50ZXIge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuYmlnZ2VyLFxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5iaWdnZXIgYnV0dG9uIHtcXG4gIGZvbnQtc2l6ZTogMS4xZW07XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5zbWFsbGVyLFxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5zbWFsbGVyIGJ1dHRvbiB7XFxuICBmb250LXNpemU6IDAuOWVtO1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtZGV0YWlscyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtZGV0YWlscyB0ZXh0YXJlYSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogMTBweCAwO1xcbiAgZm9udC1mYW1pbHk6IFxcXCJDYXNjYWRpYVxcXCI7XFxuICBmb250LXNpemU6IDAuOGVtO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jc3MvdmFyaWFibGVzLm1vZHVsZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jc3Mvc3R5bGVzLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy90aGVtZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvb3Blbi1jb2xvci9vcGVuLWNvbG9yLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBVUE7RUFDRSwyQ0FBQTtBQ1RGOztBRFFBO0VBQ0UsMkNBQUE7QUNMRjs7QUNIQTtFQUNFLG9CQUFBO0VBQ0Esc0NBQUE7RUFDQSxtQ0FBQTtFQUNBLHdCQUFBO0VBQ0Esd0JBQUE7RUFDQSx3QkFBQTtFQUNBLHlDQUFBO0VBQ0EsOEJBQUE7RUFDQSx3REFBQTtFQUNBLGdDQUFBO0VBQ0EsMEJBQUE7RUFDQSxnQ0FBQTtFQUNBLDJCQUFBO0VBQ0EseUJBQUE7RUFDQSw2QkFBQTtFQUNBLCtCQUFBO0VBQ0EsNEJBQUE7RUFDQSw0Q0FBQTtFQUNBLDJCQUFBO0VBQ0EscUJBQUE7RUFDQSw2Q0FBQTtFQUNBLHlCQUFBO0VBQ0EsbUNBQUE7RUFDQSwyQkFBQTtFQUNBLG9DQUFBO0VBQ0Esa0NBQUE7RUFDQSxnQ0FBQTtFQUNBLGlDQUFBO0VBQ0EsK0JBQUE7RUFDQSxpQ0FBQTtFQUNBLDhDQUFBO0VBQ0EsdUJBQUE7RUFDQSw2QkFBQTtBRE1GO0FDSkU7RUFDRSxtQkMzQmU7QUZpQ25CO0FDSkk7RUFDRSxnQkFBQTtBRE1OO0FDRkU7RUFDRSw4Q0FBQTtFQUNBLHNDQUFBO0VBQ0EsbUNBQUE7RUFDQSx3QkFBQTtFQUNBLHdCQUFBO0VBQ0EscUJBQUE7RUFDQSx5Q0FBQTtFQUNBLDhCQUFBO0VBQ0Esd0RBQUE7RUFDQSxnQ0FBQTtFQUNBLDBCQUFBO0VBQ0EsZ0NBQUE7RUFDQSwyQkFBQTtFQUNBLHlCQUFBO0VBQ0EsNkJBQUE7RUFDQSwrQkFBQTtFQUNBLDRCQUFBO0VBQ0EseUNBQUE7RUFDQSwyQkFBQTtFQUNBLHFCQUFBO0VBQ0EsMENBQUE7RUFDQSx5QkFBQTtFQUNBLGdDQUFBO0VBQ0EsMkJBQUE7RUFDQSxvQ0FBQTtFQUNBLGlDQUFBO0VBQ0EsNkNBQUE7RUFDQSw2QkFBQTtBRElKOztBQTNFQTtFQUNFLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtBQThFRjs7QUEzRUE7RUFDRSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0NBQUE7RUFDQSxhQUFBO0VBQ0EsTUFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBV0EsaUJBQUE7QUFvRUY7QUE3RUU7RUFDRSxhQUFBO0FBK0VKO0FBckVFO0VBQ0UsZ0JBQUE7RUFDQSxxQkFBQTtFQUNBLHdCQUFBO0FBdUVKO0FBckVJO0VBQ0UsMEJBQUE7QUF1RU47QUFuRUU7RUFDRSxrQkFBQTtFQUtBLDBCQUFBO0VBRUEsaUNBQUE7RUFFQSw2QkFBQTtBQStESjtBQXpERTtFQUNFLGtCQUFBO0FBMkRKO0FBbkRJO0VBQ0UsMkJBQUE7QUFxRE47QUFqREU7RUFDRSwwQkFBQTtFQUNBLDRCQUFBO0VBQ0EsNkJBQUE7RUFDQSwyQkFBQTtBQW1ESjtBQWhERTtFQUNFLGFBQUE7RUFDQSw4QkFBQTtBQWtESjtBQS9DRTtFQUNFLGFBQUE7RUFDQSxzQkFBQTtBQWlESjtBQS9DSTs7O0VBR0Usb0JBQUE7RUFDQSx1QkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0NBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7QUFpRE47QUE5Q0k7RUFDRSxjQUFBO0VBQ0EsV0FBQTtBQWdETjtBQTdDSTs7O0VBR0UsYUFBQTtBQStDTjtBQTVDSTtFQUNFLFVBQUE7QUE4Q047QUEzQ0k7RUFDRSxlQUFBO0VBQ0Esa0JBQUE7QUE2Q047QUExQ0k7RUFDRSxlQUFBO0FBNENOO0FBMUNNO0VBQ0UscUJBQUE7RUFDQSxrQkFBQTtFQUNBLHFCQUFBO0FBNENSO0FBekNNOztFQUVFLFVBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0FBMkNSO0FBeENNO0VBQ0UsZUFBQTtBQTBDUjtBQXZDTTtFQUNFLFNBQUE7RUFDQSxzQkFBQTtBQXlDUjtBQXZDUTtFQUNFLG9CQUFBO0VBQ0Esa0RBQUE7QUF5Q1Y7QUF0Q1E7RUFDRSxzQ0FBQTtBQXdDVjtBQXJDUTtFQUNFLHNDQUFBO0FBdUNWO0FBcENRO0VBQ0UsbUJBQUE7QUFzQ1Y7QUFsQ007RUFDRSxXQUFBO0VBQ0EsWUFBQTtBQW9DUjtBQWhDSTtFQUNFLFNBQUE7RUFDQSxvQkFBQTtFQUNBLFVBQUE7RUFDQSxZQUFBO0FBa0NOO0FBOUJFO0VBQ0UsVUFBQTtFQUNBLHlCRWhKUTtFRmlKUixXQUFBO0FBZ0NKO0FBN0JFOztFQUVFLG9CQUFBO0VBQ0Esa0RBQUE7QUErQko7QUE1QkU7O0VBRUUsaUJBQUE7RUFDQSxzQ0FBQTtFQUNBLFNBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUVBLGVBQUE7QUE2Qko7QUEzQkk7O0VBQ0Usb0JBQUE7RUFDQSxrREFBQTtBQThCTjtBQTNCSTs7RUFDRSxzQ0FBQTtBQThCTjtBQTNCSTs7RUFDRSxzQ0FBQTtBQThCTjtBQTNCSTs7RUFDRSxtQkFBQTtBQThCTjtBQTFCRTs7RUFFRSxzQ0FBQTtBQTRCSjtBQTFCSTs7RUFDRSxzQ0FBQTtBQTZCTjtBQTFCSTs7RUFDRSxzQ0FBQTtBQTZCTjtBQXhCSTtFQUNFLG9CQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtBQTBCTjtBQXpCTTtFQUNFLFdBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7QUEyQlI7QUF6Qk07RUFDRSxVQUFBO0FBMkJSO0FBdEJFO0VBQ0UsOEJBQUE7RUFDQSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxtQkFBQTtBQXdCSjtBQXJCRTtFQUNFLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtFQUNBLDRDQUFBO0VBQ0Esa0RBQUE7RUFDQSw0QkFBQTtFQUNBLDZCQUFBO0VBQ0EsMkJBQUE7RUFDQSxVQUFBO0VBQ0EsYUFBQTtFQUNBLHFCQUFBO0VBQ0Esb0JBQUE7QUF1Qko7QUFyQkk7RUFDRSxXQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7RUFDQSxzQkFBQTtFQUNBLGdCQUFBO0VBQ0EsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsdUJBQUE7QUF1Qk47QUFyQk07RUFDRSxzQkFBQTtBQXVCUjtBQWxCRTtFQUNFLFdBQUE7RUFFQSxzQkFBQTtBQW1CSjtBQWhCRTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtFQUNBLDhCQUFBO0VBQ0EsWUFBQTtBQWtCSjtBQWZFO0VBQ0UsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSxzQkFBQTtFQUNBLGlDQUFBO0FBaUJKO0FBZEU7RUFDRSxhQUFBO0VBQ0EsNkJBQUE7QUFnQko7QUFiRTtFQUNFLG1DQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsZUFBQTtFQUNBLCtCQUFBO0FBZUo7QUFaRTtFQUNFLG1CQUFBO0FBY0o7QUFYRTtFQUNFLHdCQUFBO0FBYUo7QUFWRTtFQUNFLHNCQUFBO0FBWUo7QUFURTtFQUNFLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLG1EQUFBO0VBQ0EsY0FBQTtFQUNBLHVCQUFBO0VBQ0EsZUFBQTtFQUNBLCtCQUFBO0VBQ0EsWUFBQTtBQVdKO0FBVEk7RUFDRSxhQUFBO0FBV047QUFSSTtFQUNFLGNBQUE7QUFVTjtBQU5NO0VBQ0UsWUFBQTtBQVFSO0FBSkk7RUFDRSxhQUFBO0FBTU47QUFGRTtFQUNFLHdCQUFBO0FBSUo7QUFERTtFQUNFLHNCQUFBO0FBR0o7QUFBRTtFQUNFLGdDQUFBO0VBQ0EsWUFBQTtBQUVKO0FBQ0U7RUFDRSx1QkFBQTtFQUNBLFlBQUE7QUFDSjtBQUVFO0VBQ0UsZ0JBQUE7QUFBSjtBQUdFO0VBQ0UsY0FBQTtFQUNBLFVBQUE7RUFDQSw0QkFBQTtFQUNBLDBCQUFBO0VBQ0EsNkJBQUE7RUFDQSxzQ0FBQTtFQUNBLGtDQUFBO0VBQ0Esc0NBQUE7RUFDQSxpQkFBQTtFQUNBLGFBQUE7RUFDQSxnQkFBQTtFQUNBLHNDQUFBO0VBQ0EsNEJBQUE7RUFDQSw4Q0FBQTtFQU1BLGtDQUFBO0FBTko7QUFFSTtFQUNFLDZDQUFBO0FBQU47QUFLSTtFQUNFLGtEQUFBO0FBSE47QUFNSTtFQUNFLHNDQUFBO0FBSk47QUFPSTtFQUNFLHNDQUFBO0FBTE47QUFTRTtFQUNFLFNBQUE7RUFDQSxzQkFBQTtFQUNBLFlBQUE7RUFDQSxvQkFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7QUFQSjtBQVNJO0VBQ0UsV0FBQTtFQUNBLFlBQUE7QUFQTjtBQVdFO0VBQ0UsOEJBQUE7RUFDQSxrQkFBQTtFQUNBLFNBQUE7RUFDQSxZQUFBO0VBQ0EsMkJBQUE7RUFDQSxrQkFBQTtBQVRKO0FBWUU7RUFDRSxhQUFBO0VBQ0EsZUFBQTtFQUNBLGFFdlpRO0VGd1pSLFVBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7RUFDQSw2QkFBQTtBQVZKO0FBWUk7RUFDRSxhQUFBO0VBQ0EsY0FBQTtBQVZOO0FBYUk7RUFDRSxnQkFBQTtBQVhOO0FBZUU7RUFDRSxjQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQ0FBQTtFQUNBLDJCQUFBO0FBYko7QUFnQkU7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLDBCQUFBO0FBZEo7QUFrQkk7RUFDRSxhQUFBO0FBaEJOO0FBa0JJO0VBQ0Usa0NBQUE7RUFDQSxXQUFBO0FBaEJOOztBQXFCSTtFQUNFLHFCQUFBO0FBbEJOO0FBc0JFO0VBQ0UsbUJBQUE7RUFDQSxVQUFBO0VBQ0EsWUFBQTtFQUNBLFdBQUE7RUFDQSx3QkFBQTtBQXBCSjtBQXNCSTtFQUNFLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7RUFDQSxRQUFBO0VBQ0Esd0JBQUE7QUFwQk47QUF3QkU7RUFDRSwrQkFBQTtBQXRCSjtBQTBCSTtFQUNFLGFBQUE7RUFDQSw4QkFBQTtBQXhCTjtBQTRCRTs7RUFFRSxnQ0FBQTtFQUNBLDZDQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtDQUFBO0VBQ0EsdUNBQUE7QUExQko7QUE2Qk07O0VBQ0UsNkNBQUE7QUExQlI7QUE4Qkk7O0VBQ0UsYUFBQTtFQUNBLGtEQUFBO0FBM0JOO0FBK0JFO0VBQ0U7OztJQUdFLGFBQUE7RUE3Qko7QUFDRjs7QUFpQ0E7RUFDRSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFDQSxpQkFBQTtBQTlCRjtBQWdDRTtFQUNFLGFBQUE7RUFDQSxzQkFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFFQSxhQUFBO0VBQ0EseUJFemZPO0VGMGZQLHlCQUFBO0FBL0JKO0FBa0NFO0VBQ0UsY0FBQTtFQUNBLGdCQUFBO0FBaENKO0FBa0NJO0VBQ0Usa0JBQUE7QUFoQ047QUFvQ0U7O0VBRUUsZ0JBQUE7QUFsQ0o7QUFxQ0U7O0VBRUUsZ0JBQUE7QUFuQ0o7QUFzQ0U7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSx1QkFBQTtBQXBDSjtBQXNDSTtFQUNFLFdBQUE7RUFDQSxjQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtBQXBDTlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuXFxuQG1peGluIGlzTW9iaWxlKCkge1xcbiAgQGF0LXJvb3QgLmV4Y2FsaWRyYXctLW1vYmlsZSN7Jn0ge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuJHRoZW1lLWZpbHRlcjogXFxcImludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKVxcXCI7XFxuXFxuOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogdW5xdW90ZSgkdGhlbWUtZmlsdGVyKTtcXG59XFxuXCIsXCJAaW1wb3J0IFxcXCIuL3ZhcmlhYmxlcy5tb2R1bGVcXFwiO1xcbkBpbXBvcnQgXFxcIi4vdGhlbWVcXFwiO1xcblxcbjpyb290IHtcXG4gIC0tekluZGV4LWNhbnZhczogMTtcXG4gIC0tekluZGV4LXd5c2l3eWc6IDI7XFxuICAtLXpJbmRleC1sYXllclVJOiAzO1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuXFxuICAmOmZvY3VzIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gIH1cXG5cXG4gIC8vIHNlcnZlcyAyIHB1cnBvc2VzOlxcbiAgLy8gMS4gcHJldmVudCBzZWxlY3RpbmcgdGV4dCBvdXRzaWRlIHRoZSBjb21wb25lbnQgd2hlbiBkb3VibGUtY2xpY2tpbmcgb3JcXG4gIC8vICAgIGRyYWdnaW5nIGluc2lkZSBpdCAoZS5nLiBvbiBjYW52YXMpXFxuICAvLyAyLiBwcmV2ZW50IHNlbGVjdGluZyBVSSwgYm90aCBmcm9tIHRoZSBpbnNpZGUsIGFuZCBmcm9tIG91dHNpZGUgdGhlXFxuICAvLyAgICBjb21wb25lbnQgKGUuZy4gaWYgeW91IHNlbGVjdCB0ZXh0IGluIGEgc2lkZWJhcilcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcblxcbiAgYSB7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpO1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXG4gICAgfVxcbiAgfVxcblxcbiAgY2FudmFzIHtcXG4gICAgdG91Y2gtYWN0aW9uOiBub25lO1xcblxcbiAgICAvLyBmb2xsb3dpbmcgcHJvcHMgaW1wcm92ZSBibHVycmluZXNzIGF0IGNlcnRhaW4gZGV2aWNlUGl4ZWxSYXRpb3MuXFxuICAgIC8vIEFGQUlLIGl0IGRvZXNuJ3QgYWZmZWN0IGV4cG9ydCAoaW4gZmFjdCwgZXhwb3J0IHNlZW1zIHNoYXJwIGVpdGhlciB3YXkpLlxcblxcbiAgICBpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsgLy8gY2hyb21pdW1cXG4gICAgLy8gTk9URTogbXVzdCBiZSBkZWNsYXJlZCAqYWZ0ZXIqIHRoZSBhYm92ZVxcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7IC8vIEZGXFxuXFxuICAgIHotaW5kZXg6IHZhcigtLXpJbmRleC1jYW52YXMpO1xcblxcbiAgICAvLyBSZW1vdmUgdGhlIG1haW4gY2FudmFzIGZyb20gZG9jdW1lbnQgZmxvdyB0byBhdm9pZCByZXNpemVPYnNlcnZlclxcbiAgICAvLyBmZWVkYmFjayBsb29wIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2V4Y2FsaWRyYXcvZXhjYWxpZHJhdy9wdWxsLzMzNzkpXFxuICB9XFxuXFxuICAmX19jYW52YXMge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB9XFxuXFxuICAmLnRoZW1lLS1kYXJrIHtcXG4gICAgLy8gVGhlIHBlcmNlbnRhZ2UgaXMgaW5zcGlyZWQgYnlcXG4gICAgLy8gaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29sb3IvZGFyay10aGVtZS5odG1sI3Byb3BlcnRpZXMsIHdoaWNoXFxuICAgIC8vIHJlY29tbWVuZHMgc3VyZmFjZSBjb2xvciBvZiAjMTIxMjEyLCA5MyUgeWllbGRzICMxMTExMTEgZm9yICNGRkZcXG5cXG4gICAgY2FudmFzIHtcXG4gICAgICBmaWx0ZXI6IHZhcigtLXRoZW1lLWZpbHRlcik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5GaXhlZFNpZGVDb250YWluZXIge1xcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc2F0LCAwKTtcXG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0tc2FyLCAwKTtcXG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc2FsLCAwKTtcXG4gIH1cXG5cXG4gIC5wYW5lbFJvdyB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIH1cXG5cXG4gIC5wYW5lbENvbHVtbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFxuICAgIGgzLFxcbiAgICBsZWdlbmQsXFxuICAgIC5jb250cm9sLWxhYmVsIHtcXG4gICAgICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwLjMzM3JlbTtcXG4gICAgICBmb250LXNpemU6IDAuNzVyZW07XFxuICAgICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG5cXG4gICAgLmNvbnRyb2wtbGFiZWwgaW5wdXQge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICB9XFxuXFxuICAgIGgzOmZpcnN0LWNoaWxkLFxcbiAgICBsZWdlbmQ6Zmlyc3QtY2hpbGQsXFxuICAgIC5jb250cm9sLWxhYmVsOmZpcnN0LWNoaWxkIHtcXG4gICAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICB9XFxuXFxuICAgIGxlZ2VuZCB7XFxuICAgICAgcGFkZGluZzogMDtcXG4gICAgfVxcblxcbiAgICAuaWNvblNlbGVjdExpc3Qge1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIH1cXG5cXG4gICAgLmJ1dHRvbkxpc3Qge1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcXG5cXG4gICAgICBsYWJlbCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgICAgfVxcblxcbiAgICAgIGlucHV0W3R5cGU9XFxcInJhZGlvXFxcIl0sXFxuICAgICAgaW5wdXRbdHlwZT1cXFwiYnV0dG9uXFxcIl0ge1xcbiAgICAgICAgb3BhY2l0eTogMDtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICAgIH1cXG5cXG4gICAgICAuaWNvblJvdyB7XFxuICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5Ub29sSWNvbiB7XFxuICAgICAgICBtYXJnaW46IDA7XFxuICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogOHB4O1xcblxcbiAgICAgICAgJjpmb2N1cyB7XFxuICAgICAgICAgIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICY6YWN0aXZlIHtcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmOmRpc2FibGVkIHtcXG4gICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICAgIHdpZHRoOiAyOHB4O1xcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBmaWVsZHNldCB7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIG1hcmdpbi10b3A6IDAuMzMzcmVtO1xcbiAgICAgIHBhZGRpbmc6IDA7XFxuICAgICAgYm9yZGVyOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAuZGl2aWRlciB7XFxuICAgIHdpZHRoOiAxcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRvYy1ncmF5LTI7XFxuICAgIG1hcmdpbjogMXB4O1xcbiAgfVxcblxcbiAgLmJ1dHRvbkxpc3QgbGFiZWw6Zm9jdXMtd2l0aGluLFxcbiAgaW5wdXQ6Zm9jdXMge1xcbiAgICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICB9XFxuXFxuICBidXR0b24sXFxuICAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIG1hcmdpbjogMC4xMjVyZW0gMDtcXG4gICAgcGFkZGluZzogMC4yNXJlbTtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgIH1cXG5cXG4gICAgJjpkaXNhYmxlZCB7XFxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmFjdGl2ZSxcXG4gIC5idXR0b25MaXN0IGxhYmVsLmFjdGl2ZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIHtcXG4gICAgbGFiZWwge1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgc3ZnIHtcXG4gICAgICAgIHdpZHRoOiAzNnB4O1xcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xcbiAgICAgICAgcGFkZGluZzogMnB4O1xcbiAgICAgICAgb3BhY2l0eTogMC42O1xcbiAgICAgIH1cXG4gICAgICAmLmFjdGl2ZSBzdmcge1xcbiAgICAgICAgb3BhY2l0eTogMTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5BcHAtdG9wLWJhciB7XFxuICAgIHotaW5kZXg6IHZhcigtLXpJbmRleC1sYXllclVJKTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIH1cXG5cXG4gIC5BcHAtYm90dG9tLWJhciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICAtLWJhci1wYWRkaW5nOiBjYWxjKDQgKiB2YXIoLS1zcGFjZS1mYWN0b3IpKTtcXG4gICAgcGFkZGluZy10b3A6ICN7XFxcIm1heCh2YXIoLS1iYXItcGFkZGluZyksIHZhcigtLXNhdCwwKSlcXFwifTtcXG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0tc2FyLCAwKTtcXG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc2FsLCAwKTtcXG4gICAgei1pbmRleDogNDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG5cXG4gICAgPiAuSXNsYW5kIHtcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XFxuICAgICAgbWluLXdpZHRoOiAxMDAlO1xcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgbWF4LWhlaWdodDogMTAwJTtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XFxuXFxuICAgICAgLnBhbmVsQ29sdW1uIHtcXG4gICAgICAgIHBhZGRpbmc6IDhweCA4cHggMCA4cHg7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAuQXBwLXRvb2xiYXIge1xcbiAgICB3aWR0aDogMTAwJTtcXG5cXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIH1cXG5cXG4gIC5BcHAtdG9vbGJhci1jb250ZW50IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBwYWRkaW5nOiA4cHg7XFxuICB9XFxuXFxuICAuQXBwLW1vYmlsZS1tZW51IHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIG92ZXJmbG93LXg6IHZpc2libGU7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWJhci1wYWRkaW5nKTtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudSB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X3RvcCB7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gMWZyO1xcbiAgICBncmlkLWdhcDogNHB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcblxcbiAgLmxheWVyLXVpX193cmFwcGVyOm5vdCguZGlzYWJsZS1wb2ludGVyRXZlbnRzKSAuQXBwLW1lbnVfdG9wID4gKiB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfdG9wID4gKjpmaXJzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV90b3AgPiAqOmxhc3QtY2hpbGQge1xcbiAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2JvdHRvbSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG8gbWluLWNvbnRlbnQ7XFxuICAgIGdyaWQtZ2FwOiAxNXB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbiAgICB6LWluZGV4OiAxMDA7XFxuXFxuICAgIDpyb290W2Rpcj1cXFwibHRyXFxcIl0gJiB7XFxuICAgICAgbGVmdDogMC4yNXJlbTtcXG4gICAgfVxcblxcbiAgICA6cm9vdFtkaXI9XFxcInJ0bFxcXCJdICYge1xcbiAgICAgIHJpZ2h0OiAwLjI1cmVtO1xcbiAgICB9XFxuXFxuICAgICYtLXRyYW5zaXRpb24tbGVmdCB7XFxuICAgICAgc2VjdGlvbiB7XFxuICAgICAgICB3aWR0aDogMTg1cHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIHNlY3Rpb24ge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5BcHAtbWVudV9ib3R0b20gPiAqOmZpcnN0LWNoaWxkIHtcXG4gICAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2JvdHRvbSA+ICo6bGFzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfbGVmdCB7XFxuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyIGF1dG8gMWZyO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfcmlnaHQge1xcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X19sZWZ0IHtcXG4gICAgb3ZlcmZsb3cteTogYXV0bztcXG4gIH1cXG5cXG4gIC5kcm9wZG93bi1zZWxlY3Qge1xcbiAgICBoZWlnaHQ6IDEuNXJlbTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuNXJlbTtcXG4gICAgcGFkZGluZy1pbmxpbmUtZW5kOiAxLjVyZW07XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgICBhcHBlYXJhbmNlOiBub25lO1xcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1kcm9wZG93bi1pY29uKTtcXG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMC43cmVtIHRvcCA1MCUsIDAgMDtcXG5cXG4gICAgOnJvb3RbZGlyPVxcXCJydGxcXFwiXSAmIHtcXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IDAuN3JlbSB0b3AgNTAlLCAwIDA7XFxuICAgIH1cXG5cXG4gICAgYmFja2dyb3VuZC1zaXplOiAwLjY1ZW0gYXV0bywgMTAwJTtcXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgIH1cXG5cXG4gICAgJjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuekluZGV4QnV0dG9uIHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBtYXJnaW4taW5saW5lLWVuZDogOHB4O1xcbiAgICBwYWRkaW5nOiA1cHg7XFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogMThweDtcXG4gICAgICBoZWlnaHQ6IDE4cHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5zY3JvbGwtYmFjay10by1jb250ZW50IHtcXG4gICAgY29sb3I6IHZhcigtLXBvcHVwLXRleHQtY29sb3IpO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGxlZnQ6IDUwJTtcXG4gICAgYm90dG9tOiAzMHB4O1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxuICAgIHBhZGRpbmc6IDEwcHggMjBweDtcXG4gIH1cXG5cXG4gIC5oZWxwLWljb24ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIGZpbGw6ICRvYy1ncmF5LTY7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IDEuNXJlbTtcXG4gICAgICBoZWlnaHQ6IDEuNXJlbTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAucmVzZXQtem9vbS1idXR0b24ge1xcbiAgICBwYWRkaW5nOiAwLjJlbTtcXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tdWktZm9udCk7XFxuICB9XFxuXFxuICAudW5kby1yZWRvLWJ1dHRvbnMge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgICBnYXA6IDAuNGVtO1xcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwLjZlbTtcXG4gIH1cXG5cXG4gIEBpbmNsdWRlIGlzTW9iaWxlIHtcXG4gICAgYXNpZGUge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG4gICAgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgICAgIGJvdHRvbTogY2FsYyg4MHB4ICsgdmFyKC0tc2FiLCAwKSk7XFxuICAgICAgei1pbmRleDogLTE7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5ydGwtbWlycm9yIHtcXG4gICAgOnJvb3RbZGlyPVxcXCJydGxcXFwiXSAmIHtcXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC56ZW4tbW9kZS12aXNpYmlsaXR5IHtcXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgaGVpZ2h0OiBhdXRvO1xcbiAgICB3aWR0aDogYXV0bztcXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xcblxcbiAgICAmLnplbi1tb2RlLXZpc2liaWxpdHktLWhpZGRlbiB7XFxuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgICAgIG9wYWNpdHk6IDA7XFxuICAgICAgaGVpZ2h0OiAwO1xcbiAgICAgIHdpZHRoOiAwO1xcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cztcXG4gICAgfVxcbiAgfVxcblxcbiAgLmRpc2FibGUtcG9pbnRlckV2ZW50cyB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxuICB9XFxuXFxuICAmLmV4Y2FsaWRyYXctLXZpZXctbW9kZSB7XFxuICAgIC5BcHAtbWVudSB7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIH1cXG4gIH1cXG5cXG4gIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXSxcXG4gIHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKSB7XFxuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlci1jb2xvcik7XFxuICAgIHBhZGRpbmc6IDAuNzVyZW07XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlucHV0LWJnLWNvbG9yKTtcXG5cXG4gICAgJjpub3QoOmZvY3VzKSB7XFxuICAgICAgJjpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pbnB1dC1ob3Zlci1iZy1jb2xvcik7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICY6Zm9jdXMge1xcbiAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBtZWRpYSBwcmludCB7XFxuICAgIC5BcHAtYm90dG9tLWJhcixcXG4gICAgLkZpeGVkU2lkZUNvbnRhaW5lcixcXG4gICAgLmxheWVyLXVpX193cmFwcGVyIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IHtcXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xcbiAgcGFkZGluZzogMjBweCAwO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgdXNlci1zZWxlY3Q6IHRleHQ7XFxuXFxuICAuRXJyb3JTcGxhc2gtbWVzc2FnZUNvbnRhaW5lciB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcbiAgICBwYWRkaW5nOiA0MHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2MtcmVkLTE7XFxuICAgIGJvcmRlcjogM3B4IHNvbGlkICRvYy1yZWQtOTtcXG4gIH1cXG5cXG4gIC5FcnJvclNwbGFzaC1wYXJhZ3JhcGgge1xcbiAgICBtYXJnaW46IDE1cHggMDtcXG4gICAgbWF4LXdpZHRoOiA2MDBweDtcXG5cXG4gICAgJi5hbGlnbi1jZW50ZXIge1xcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmJpZ2dlcixcXG4gIC5iaWdnZXIgYnV0dG9uIHtcXG4gICAgZm9udC1zaXplOiAxLjFlbTtcXG4gIH1cXG5cXG4gIC5zbWFsbGVyLFxcbiAgLnNtYWxsZXIgYnV0dG9uIHtcXG4gICAgZm9udC1zaXplOiAwLjllbTtcXG4gIH1cXG5cXG4gIC5FcnJvclNwbGFzaC1kZXRhaWxzIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxuXFxuICAgIHRleHRhcmVhIHtcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBtYXJnaW46IDEwcHggMDtcXG4gICAgICBmb250LWZhbWlseTogXFxcIkNhc2NhZGlhXFxcIjtcXG4gICAgICBmb250LXNpemU6IDAuOGVtO1xcbiAgICB9XFxuICB9XFxufVxcblwiLFwiQGltcG9ydCBcXFwib3Blbi1jb2xvci9vcGVuLWNvbG9yLnNjc3NcXFwiO1xcbkBpbXBvcnQgXFxcIi4vdmFyaWFibGVzLm1vZHVsZS5zY3NzXFxcIjtcXG5cXG4uZXhjYWxpZHJhdyB7XFxuICAtLXRoZW1lLWZpbHRlcjogbm9uZTtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjeyRvYy1yZWQtMX07XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI3skb2MtcmVkLTl9O1xcbiAgLS1idXR0b24tZ3JheS0xOiAjeyRvYy1ncmF5LTJ9O1xcbiAgLS1idXR0b24tZ3JheS0yOiAjeyRvYy1ncmF5LTR9O1xcbiAgLS1idXR0b24tZ3JheS0zOiAjeyRvYy1ncmF5LTV9O1xcbiAgLS1idXR0b24tc3BlY2lhbC1hY3RpdmUtYmctY29sb3I6ICN7JG9jLWdyZWVuLTB9O1xcbiAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTZ9O1xcbiAgLS1kcm9wZG93bi1pY29uOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI5Mi40XFxcIiBoZWlnaHQ9XFxcIjI5Mi40XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjkyIDI5MlxcXCI+PHBhdGggZD1cXFwiTTI4NyAxOTdMMTU5IDY5Yy00LTMtOC01LTEzLTVzLTkgMi0xMyA1TDUgMTk3Yy0zIDQtNSA4LTUgMTNzMiA5IDUgMTNjNCA0IDggNSAxMyA1aDI1NmM1IDAgOS0xIDEzLTVzNS04IDUtMTMtMS05LTUtMTN6XFxcIi8+PC9zdmc+Jyk7XFxuICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS0yfTtcXG4gIC0taWNvbi1maWxsLWNvbG9yOiAjeyRvYy1ibGFja307XFxuICAtLWljb24tZ3JlZW4tZmlsbC1jb2xvcjogI3skb2MtZ3JlZW4tOX07XFxuICAtLWRlZmF1bHQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogI3skb2MtZ3JheS0xfTtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICN7JG9jLWdyYXktN307XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS01fTtcXG4gIC0tbGluay1jb2xvcjogI3skb2MtYmx1ZS03fTtcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogI3t0cmFuc3BhcmVudGl6ZSgkb2Mtd2hpdGUsIDAuMTIpfTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yOiAjeyRvYy1ncmF5LTF9O1xcbiAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ibGFja307XFxuICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tc2FiOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XFxuICAtLXNhbDogZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTtcXG4gIC0tc2FyOiBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KTtcXG4gIC0tc2F0OiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCk7XFxuICAtLXNlbGVjdC1oaWdobGlnaHQtY29sb3I6ICN7JG9jLWJsdWUtNX07XFxuICAtLXNoYWRvdy1pc2xhbmQ6IDAgMXB4IDVweCAje3RyYW5zcGFyZW50aXplKCRvYy1ibGFjaywgMC44NSl9O1xcbiAgLS1zcGFjZS1mYWN0b3I6IDAuMjVyZW07XFxuICAtLXRleHQtcHJpbWFyeS1jb2xvcjogI3skb2MtZ3JheS04fTtcXG5cXG4gICYudGhlbWUtLWRhcmsge1xcbiAgICBiYWNrZ3JvdW5kOiAkb2MtYmxhY2s7XFxuXFxuICAgICYudGhlbWUtLWRhcmstYmFja2dyb3VuZC1ub25lIHtcXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAmLnRoZW1lLS1kYXJrIHtcXG4gICAgLS10aGVtZS1maWx0ZXI6ICN7JHRoZW1lLWZpbHRlcn07XFxuICAgIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjNWEwMDAwO1xcbiAgICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI3skb2MtcmVkLTN9O1xcbiAgICAtLWJ1dHRvbi1ncmF5LTE6ICMzNjM2MzY7XFxuICAgIC0tYnV0dG9uLWdyYXktMjogIzI3MjcyNztcXG4gICAgLS1idXR0b24tZ3JheS0zOiAjMjIyO1xcbiAgICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogIzIwNDYyNDtcXG4gICAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTl9O1xcbiAgICAtLWRyb3Bkb3duLWljb246IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBmaWxsPVxcXCIlMjNjZWQ0ZGFcXFwiIGQ9XFxcIk0yODcgMTk3TDE1OSA2OWMtNC0zLTgtNS0xMy01cy05IDItMTMgNUw1IDE5N2MtMyA0LTUgOC01IDEzczIgOSA1IDEzYzQgNCA4IDUgMTMgNWgyNTZjNSAwIDktMSAxMy01czUtOCA1LTEzLTEtOS01LTEzelxcXCIvPjwvc3ZnPicpO1xcbiAgICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS02fTtcXG4gICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLWdyYXktNH07XFxuICAgIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjeyRvYy1ncmVlbi00fTtcXG4gICAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJvcmRlci1jb2xvcjogIzJlMmUyZTtcXG4gICAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogIzE4MTgxODtcXG4gICAgLS1pbnB1dC1sYWJlbC1jb2xvcjogI3skb2MtZ3JheS0yfTtcXG4gICAgLS1pc2xhbmQtYmctY29sb3I6IHJnYmEoMzAsIDMwLCAzMCwgMC45OCk7XFxuICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS02fTtcXG4gICAgLS1saW5rLWNvbG9yOiAjeyRvYy1ibHVlLTR9O1xcbiAgICAtLW92ZXJsYXktYmctY29sb3I6ICN7dHJhbnNwYXJlbnRpemUoJG9jLWdyYXktOCwgMC44OCl9O1xcbiAgICAtLXBvcHVwLWJnLWNvbG9yOiAjMmMyYzJjO1xcbiAgICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogIzIyMjtcXG4gICAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICMyYzJjMmM7XFxuICAgIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS00fTtcXG4gICAgLS1zaGFkb3ctaXNsYW5kOiAwIDFweCA1cHggI3t0cmFuc3BhcmVudGl6ZSgkb2MtYmxhY2ssIDAuNyl9O1xcbiAgICAtLXRleHQtcHJpbWFyeS1jb2xvcjogI3skb2MtZ3JheS00fTtcXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vXFxuLy8gIPCdl5Yg8J2XoiDwnZefIPCdl6Ig8J2XpVxcbi8vICB2IDEuOS4xXFxuLy9cXG4vLyAg4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSBXFxuXFxuXFxuLy8gIEdlbmVyYWxcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXdoaXRlOiAgICAgICAgICNmZmZmZmY7XFxuJG9jLWJsYWNrOiAgICAgICAgICMwMDAwMDA7XFxuXFxuXFxuLy8gIEdyYXlcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyYXktbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZjhmOWZhLFxcbiAgXFxcIjFcXFwiOiAjZjFmM2Y1LFxcbiAgXFxcIjJcXFwiOiAjZTllY2VmLFxcbiAgXFxcIjNcXFwiOiAjZGVlMmU2LFxcbiAgXFxcIjRcXFwiOiAjY2VkNGRhLFxcbiAgXFxcIjVcXFwiOiAjYWRiNWJkLFxcbiAgXFxcIjZcXFwiOiAjODY4ZTk2LFxcbiAgXFxcIjdcXFwiOiAjNDk1MDU3LFxcbiAgXFxcIjhcXFwiOiAjMzQzYTQwLFxcbiAgXFxcIjlcXFwiOiAjMjEyNTI5XFxuKTtcXG5cXG4kb2MtZ3JheS0wOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyYXktMTogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1ncmF5LTI6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtZ3JheS0zOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyYXktNDogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1ncmF5LTU6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtZ3JheS02OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyYXktNzogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1ncmF5LTg6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtZ3JheS05OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFJlZFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtcmVkLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ZmZjVmNSxcXG4gIFxcXCIxXFxcIjogI2ZmZTNlMyxcXG4gIFxcXCIyXFxcIjogI2ZmYzljOSxcXG4gIFxcXCIzXFxcIjogI2ZmYThhOCxcXG4gIFxcXCI0XFxcIjogI2ZmODc4NyxcXG4gIFxcXCI1XFxcIjogI2ZmNmI2YixcXG4gIFxcXCI2XFxcIjogI2ZhNTI1MixcXG4gIFxcXCI3XFxcIjogI2YwM2UzZSxcXG4gIFxcXCI4XFxcIjogI2UwMzEzMSxcXG4gIFxcXCI5XFxcIjogI2M5MmEyYVxcbik7XFxuXFxuJG9jLXJlZC0wOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtcmVkLTE6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1yZWQtMjogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXJlZC0zOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtcmVkLTQ6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1yZWQtNTogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXJlZC02OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtcmVkLTc6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1yZWQtODogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXJlZC05OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgUGlua1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtcGluay1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmYwZjYsXFxuICBcXFwiMVxcXCI6ICNmZmRlZWIsXFxuICBcXFwiMlxcXCI6ICNmY2MyZDcsXFxuICBcXFwiM1xcXCI6ICNmYWEyYzEsXFxuICBcXFwiNFxcXCI6ICNmNzgzYWMsXFxuICBcXFwiNVxcXCI6ICNmMDY1OTUsXFxuICBcXFwiNlxcXCI6ICNlNjQ5ODAsXFxuICBcXFwiN1xcXCI6ICNkNjMzNmMsXFxuICBcXFwiOFxcXCI6ICNjMjI1NWMsXFxuICBcXFwiOVxcXCI6ICNhNjFlNGRcXG4pO1xcblxcbiRvYy1waW5rLTA6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtcGluay0xOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXBpbmstMjogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1waW5rLTM6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtcGluay00OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXBpbmstNTogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1waW5rLTY6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtcGluay03OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXBpbmstODogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1waW5rLTk6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgR3JhcGVcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyYXBlLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2Y4ZjBmYyxcXG4gIFxcXCIxXFxcIjogI2YzZDlmYSxcXG4gIFxcXCIyXFxcIjogI2VlYmVmYSxcXG4gIFxcXCIzXFxcIjogI2U1OTlmNyxcXG4gIFxcXCI0XFxcIjogI2RhNzdmMixcXG4gIFxcXCI1XFxcIjogI2NjNWRlOCxcXG4gIFxcXCI2XFxcIjogI2JlNGJkYixcXG4gIFxcXCI3XFxcIjogI2FlM2VjOSxcXG4gIFxcXCI4XFxcIjogIzljMzZiNSxcXG4gIFxcXCI5XFxcIjogIzg2MmU5Y1xcbik7XFxuXFxuJG9jLWdyYXBlLTA6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyYXBlLTE6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWdyYXBlLTI6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyYXBlLTM6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyYXBlLTQ6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWdyYXBlLTU6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyYXBlLTY6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyYXBlLTc6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWdyYXBlLTg6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyYXBlLTk6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFZpb2xldFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtdmlvbGV0LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2YzZjBmZixcXG4gIFxcXCIxXFxcIjogI2U1ZGJmZixcXG4gIFxcXCIyXFxcIjogI2QwYmZmZixcXG4gIFxcXCIzXFxcIjogI2IxOTdmYyxcXG4gIFxcXCI0XFxcIjogIzk3NzVmYSxcXG4gIFxcXCI1XFxcIjogIzg0NWVmNyxcXG4gIFxcXCI2XFxcIjogIzc5NTBmMixcXG4gIFxcXCI3XFxcIjogIzcwNDhlOCxcXG4gIFxcXCI4XFxcIjogIzY3NDFkOSxcXG4gIFxcXCI5XFxcIjogIzVmM2RjNFxcbik7XFxuXFxuJG9jLXZpb2xldC0wOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtdmlvbGV0LTE6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy12aW9sZXQtMjogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXZpb2xldC0zOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtdmlvbGV0LTQ6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy12aW9sZXQtNTogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXZpb2xldC02OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtdmlvbGV0LTc6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy12aW9sZXQtODogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXZpb2xldC05OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgSW5kaWdvXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1pbmRpZ28tbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZWRmMmZmLFxcbiAgXFxcIjFcXFwiOiAjZGJlNGZmLFxcbiAgXFxcIjJcXFwiOiAjYmFjOGZmLFxcbiAgXFxcIjNcXFwiOiAjOTFhN2ZmLFxcbiAgXFxcIjRcXFwiOiAjNzQ4ZmZjLFxcbiAgXFxcIjVcXFwiOiAjNWM3Y2ZhLFxcbiAgXFxcIjZcXFwiOiAjNGM2ZWY1LFxcbiAgXFxcIjdcXFwiOiAjNDI2M2ViLFxcbiAgXFxcIjhcXFwiOiAjM2I1YmRiLFxcbiAgXFxcIjlcXFwiOiAjMzY0ZmM3XFxuKTtcXG5cXG4kb2MtaW5kaWdvLTA6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1pbmRpZ28tMTogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWluZGlnby0yOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtaW5kaWdvLTM6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1pbmRpZ28tNDogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWluZGlnby01OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtaW5kaWdvLTY6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1pbmRpZ28tNzogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWluZGlnby04OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtaW5kaWdvLTk6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBCbHVlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ibHVlLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2U3ZjVmZixcXG4gIFxcXCIxXFxcIjogI2QwZWJmZixcXG4gIFxcXCIyXFxcIjogI2E1ZDhmZixcXG4gIFxcXCIzXFxcIjogIzc0YzBmYyxcXG4gIFxcXCI0XFxcIjogIzRkYWJmNyxcXG4gIFxcXCI1XFxcIjogIzMzOWFmMCxcXG4gIFxcXCI2XFxcIjogIzIyOGJlNixcXG4gIFxcXCI3XFxcIjogIzFjN2VkNixcXG4gIFxcXCI4XFxcIjogIzE5NzFjMixcXG4gIFxcXCI5XFxcIjogIzE4NjRhYlxcbik7XFxuXFxuJG9jLWJsdWUtMDogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ibHVlLTE6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtYmx1ZS0yOiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWJsdWUtMzogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ibHVlLTQ6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtYmx1ZS01OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWJsdWUtNjogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ibHVlLTc6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtYmx1ZS04OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWJsdWUtOTogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBDeWFuXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1jeWFuLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2UzZmFmYyxcXG4gIFxcXCIxXFxcIjogI2M1ZjZmYSxcXG4gIFxcXCIyXFxcIjogIzk5ZTlmMixcXG4gIFxcXCIzXFxcIjogIzY2ZDllOCxcXG4gIFxcXCI0XFxcIjogIzNiYzlkYixcXG4gIFxcXCI1XFxcIjogIzIyYjhjZixcXG4gIFxcXCI2XFxcIjogIzE1YWFiZixcXG4gIFxcXCI3XFxcIjogIzEwOThhZCxcXG4gIFxcXCI4XFxcIjogIzBjODU5OSxcXG4gIFxcXCI5XFxcIjogIzBiNzI4NVxcbik7XFxuXFxuJG9jLWN5YW4tMDogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1jeWFuLTE6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtY3lhbi0yOiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWN5YW4tMzogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1jeWFuLTQ6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtY3lhbi01OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWN5YW4tNjogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1jeWFuLTc6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtY3lhbi04OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWN5YW4tOTogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBUZWFsXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy10ZWFsLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2U2ZmNmNSxcXG4gIFxcXCIxXFxcIjogI2MzZmFlOCxcXG4gIFxcXCIyXFxcIjogIzk2ZjJkNyxcXG4gIFxcXCIzXFxcIjogIzYzZTZiZSxcXG4gIFxcXCI0XFxcIjogIzM4ZDlhOSxcXG4gIFxcXCI1XFxcIjogIzIwYzk5NyxcXG4gIFxcXCI2XFxcIjogIzEyYjg4NixcXG4gIFxcXCI3XFxcIjogIzBjYTY3OCxcXG4gIFxcXCI4XFxcIjogIzA5OTI2OCxcXG4gIFxcXCI5XFxcIjogIzA4N2Y1Ylxcbik7XFxuXFxuJG9jLXRlYWwtMDogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy10ZWFsLTE6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtdGVhbC0yOiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXRlYWwtMzogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy10ZWFsLTQ6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtdGVhbC01OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXRlYWwtNjogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy10ZWFsLTc6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtdGVhbC04OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXRlYWwtOTogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBHcmVlblxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtZ3JlZW4tbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZWJmYmVlLFxcbiAgXFxcIjFcXFwiOiAjZDNmOWQ4LFxcbiAgXFxcIjJcXFwiOiAjYjJmMmJiLFxcbiAgXFxcIjNcXFwiOiAjOGNlOTlhLFxcbiAgXFxcIjRcXFwiOiAjNjlkYjdjLFxcbiAgXFxcIjVcXFwiOiAjNTFjZjY2LFxcbiAgXFxcIjZcXFwiOiAjNDBjMDU3LFxcbiAgXFxcIjdcXFwiOiAjMzdiMjRkLFxcbiAgXFxcIjhcXFwiOiAjMmY5ZTQ0LFxcbiAgXFxcIjlcXFwiOiAjMmI4YTNlXFxuKTtcXG5cXG4kb2MtZ3JlZW4tMDogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtZ3JlZW4tMTogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtZ3JlZW4tMjogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtZ3JlZW4tMzogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtZ3JlZW4tNDogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtZ3JlZW4tNTogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtZ3JlZW4tNjogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtZ3JlZW4tNzogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtZ3JlZW4tODogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtZ3JlZW4tOTogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgTGltZVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtbGltZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmNGZjZTMsXFxuICBcXFwiMVxcXCI6ICNlOWZhYzgsXFxuICBcXFwiMlxcXCI6ICNkOGY1YTIsXFxuICBcXFwiM1xcXCI6ICNjMGViNzUsXFxuICBcXFwiNFxcXCI6ICNhOWUzNGIsXFxuICBcXFwiNVxcXCI6ICM5NGQ4MmQsXFxuICBcXFwiNlxcXCI6ICM4MmM5MWUsXFxuICBcXFwiN1xcXCI6ICM3NGI4MTYsXFxuICBcXFwiOFxcXCI6ICM2NmE4MGYsXFxuICBcXFwiOVxcXCI6ICM1Yzk0MGRcXG4pO1xcblxcbiRvYy1saW1lLTA6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtbGltZS0xOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWxpbWUtMjogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1saW1lLTM6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtbGltZS00OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWxpbWUtNTogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1saW1lLTY6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtbGltZS03OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWxpbWUtODogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1saW1lLTk6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgWWVsbG93XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy15ZWxsb3ctbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmOWRiLFxcbiAgXFxcIjFcXFwiOiAjZmZmM2JmLFxcbiAgXFxcIjJcXFwiOiAjZmZlYzk5LFxcbiAgXFxcIjNcXFwiOiAjZmZlMDY2LFxcbiAgXFxcIjRcXFwiOiAjZmZkNDNiLFxcbiAgXFxcIjVcXFwiOiAjZmNjNDE5LFxcbiAgXFxcIjZcXFwiOiAjZmFiMDA1LFxcbiAgXFxcIjdcXFwiOiAjZjU5ZjAwLFxcbiAgXFxcIjhcXFwiOiAjZjA4YzAwLFxcbiAgXFxcIjlcXFwiOiAjZTY3NzAwXFxuKTtcXG5cXG4kb2MteWVsbG93LTA6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy15ZWxsb3ctMTogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXllbGxvdy0yOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MteWVsbG93LTM6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy15ZWxsb3ctNDogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXllbGxvdy01OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MteWVsbG93LTY6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy15ZWxsb3ctNzogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXllbGxvdy04OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MteWVsbG93LTk6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBPcmFuZ2VcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLW9yYW5nZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmY0ZTYsXFxuICBcXFwiMVxcXCI6ICNmZmU4Y2MsXFxuICBcXFwiMlxcXCI6ICNmZmQ4YTgsXFxuICBcXFwiM1xcXCI6ICNmZmMwNzgsXFxuICBcXFwiNFxcXCI6ICNmZmE5NGQsXFxuICBcXFwiNVxcXCI6ICNmZjkyMmIsXFxuICBcXFwiNlxcXCI6ICNmZDdlMTQsXFxuICBcXFwiN1xcXCI6ICNmNzY3MDcsXFxuICBcXFwiOFxcXCI6ICNlODU5MGMsXFxuICBcXFwiOVxcXCI6ICNkOTQ4MGZcXG4pO1xcblxcbiRvYy1vcmFuZ2UtMDogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLW9yYW5nZS0xOiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2Mtb3JhbmdlLTI6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1vcmFuZ2UtMzogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLW9yYW5nZS00OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2Mtb3JhbmdlLTU6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1vcmFuZ2UtNjogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLW9yYW5nZS03OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2Mtb3JhbmdlLTg6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1vcmFuZ2UtOTogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIENvbG9yIGxpc3RcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWNvbG9yLXNwZWN0cnVtOiAgIDk7XFxuXFxuJG9jLWNvbG9yLWxpc3Q6IChcXG4gICRvYy1ncmF5LWxpc3Q6ICAgICAgXFxcImdyYXlcXFwiLFxcbiAgJG9jLXJlZC1saXN0OiAgICAgIFxcXCJyZWRcXFwiLFxcbiAgJG9jLXBpbmstbGlzdDogICAgICBcXFwicGlua1xcXCIsXFxuICAkb2MtZ3JhcGUtbGlzdDogICAgICBcXFwiZ3JhcGVcXFwiLFxcbiAgJG9jLXZpb2xldC1saXN0OiAgICAgIFxcXCJ2aW9sZXRcXFwiLFxcbiAgJG9jLWluZGlnby1saXN0OiAgICAgIFxcXCJpbmRpZ29cXFwiLFxcbiAgJG9jLWJsdWUtbGlzdDogICAgICBcXFwiYmx1ZVxcXCIsXFxuICAkb2MtY3lhbi1saXN0OiAgICAgIFxcXCJjeWFuXFxcIixcXG4gICRvYy10ZWFsLWxpc3Q6ICAgICAgXFxcInRlYWxcXFwiLFxcbiAgJG9jLWdyZWVuLWxpc3Q6ICAgICAgXFxcImdyZWVuXFxcIixcXG4gICRvYy1saW1lLWxpc3Q6ICAgICAgXFxcImxpbWVcXFwiLFxcbiAgJG9jLXllbGxvdy1saXN0OiAgICAgIFxcXCJ5ZWxsb3dcXFwiLFxcbiAgJG9jLW9yYW5nZS1saXN0OiAgICAgIFxcXCJvcmFuZ2VcXFwiXFxuKTtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../css/styles.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet%5B1%5D.rules%5B0%5D.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js");
1427
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__)\\n/* harmony export */ });\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/sourceMaps.js */ \\\"./node_modules/css-loader/dist/runtime/sourceMaps.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/api.js */ \\\"./node_modules/css-loader/dist/runtime/api.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../packages/excalidraw/node_modules/css-loader/dist/runtime/getUrl.js */ \\\"./node_modules/css-loader/dist/runtime/getUrl.js\\\");\\n/* harmony import */ var _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__);\\n// Imports\\n\\n\\n\\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg> */ \\\"data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>\\\"), __webpack_require__.b);\\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(/* asset import */ __webpack_require__(/*! data:image/svg+xml,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"292.4\\\" height=\\\"292.4\\\" viewBox=\\\"0 0 292 292\\\"><path fill=\\\"%23ced4da\\\" d=\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\"/></svg> */ \\\"data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path fill=\\\\\\\"%23ced4da\\\\\\\" d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>\\\"), __webpack_require__.b);\\nvar ___CSS_LOADER_EXPORT___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_packages_excalidraw_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_0___);\\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = _packages_excalidraw_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default()(___CSS_LOADER_URL_IMPORT_1___);\\n// Module\\n___CSS_LOADER_EXPORT___.push([module.id, \\\":export {\\\\n themeFilter: invert(93%) hue-rotate(180deg);\\\\n}\\\\n\\\\n:export {\\\\n themeFilter: invert(93%) hue-rotate(180deg);\\\\n}\\\\n\\\\n.excalidraw {\\\\n --theme-filter: none;\\\\n --button-destructive-bg-color: #ffe3e3;\\\\n --button-destructive-color: #c92a2a;\\\\n --button-gray-1: #e9ecef;\\\\n --button-gray-2: #ced4da;\\\\n --button-gray-3: #adb5bd;\\\\n --button-special-active-bg-color: #ebfbee;\\\\n --dialog-border-color: #868e96;\\\\n --dropdown-icon: url(\\\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \\\");\\\\n --focus-highlight-color: #a5d8ff;\\\\n --icon-fill-color: #000000;\\\\n --icon-green-fill-color: #2b8a3e;\\\\n --default-bg-color: #ffffff;\\\\n --input-bg-color: #ffffff;\\\\n --input-border-color: #ced4da;\\\\n --input-hover-bg-color: #f1f3f5;\\\\n --input-label-color: #495057;\\\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\\\n --keybinding-color: #adb5bd;\\\\n --link-color: #1c7ed6;\\\\n --overlay-bg-color: rgba(255, 255, 255, 0.88);\\\\n --popup-bg-color: #ffffff;\\\\n --popup-secondary-bg-color: #f1f3f5;\\\\n --popup-text-color: #000000;\\\\n --popup-text-inverted-color: #ffffff;\\\\n --sab: env(safe-area-inset-bottom);\\\\n --sal: env(safe-area-inset-left);\\\\n --sar: env(safe-area-inset-right);\\\\n --sat: env(safe-area-inset-top);\\\\n --select-highlight-color: #339af0;\\\\n --shadow-island: 0 1px 5px rgba(0, 0, 0, 0.15);\\\\n --space-factor: 0.25rem;\\\\n --text-primary-color: #343a40;\\\\n}\\\\n.excalidraw.theme--dark {\\\\n background: #000000;\\\\n}\\\\n.excalidraw.theme--dark.theme--dark-background-none {\\\\n background: none;\\\\n}\\\\n.excalidraw.theme--dark {\\\\n --theme-filter: invert(93%) hue-rotate(180deg);\\\\n --button-destructive-bg-color: #5a0000;\\\\n --button-destructive-color: #ffa8a8;\\\\n --button-gray-1: #363636;\\\\n --button-gray-2: #272727;\\\\n --button-gray-3: #222;\\\\n --button-special-active-bg-color: #204624;\\\\n --dialog-border-color: #212529;\\\\n --dropdown-icon: url(\\\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \\\");\\\\n --focus-highlight-color: #228be6;\\\\n --icon-fill-color: #ced4da;\\\\n --icon-green-fill-color: #69db7c;\\\\n --default-bg-color: #121212;\\\\n --input-bg-color: #121212;\\\\n --input-border-color: #2e2e2e;\\\\n --input-hover-bg-color: #181818;\\\\n --input-label-color: #e9ecef;\\\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\\\n --keybinding-color: #868e96;\\\\n --link-color: #4dabf7;\\\\n --overlay-bg-color: rgba(52, 58, 64, 0.12);\\\\n --popup-bg-color: #2c2c2c;\\\\n --popup-secondary-bg-color: #222;\\\\n --popup-text-color: #ced4da;\\\\n --popup-text-inverted-color: #2c2c2c;\\\\n --select-highlight-color: #4dabf7;\\\\n --shadow-island: 0 1px 5px rgba(0, 0, 0, 0.3);\\\\n --text-primary-color: #ced4da;\\\\n}\\\\n\\\\n:root {\\\\n --zIndex-canvas: 1;\\\\n --zIndex-wysiwyg: 2;\\\\n --zIndex-layerUI: 3;\\\\n}\\\\n\\\\n.excalidraw {\\\\n position: relative;\\\\n overflow: hidden;\\\\n color: var(--text-primary-color);\\\\n display: flex;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n height: 100%;\\\\n width: 100%;\\\\n user-select: none;\\\\n}\\\\n.excalidraw:focus {\\\\n outline: none;\\\\n}\\\\n.excalidraw a {\\\\n font-weight: 500;\\\\n text-decoration: none;\\\\n color: var(--link-color);\\\\n}\\\\n.excalidraw a:hover {\\\\n text-decoration: underline;\\\\n}\\\\n.excalidraw canvas {\\\\n touch-action: none;\\\\n image-rendering: pixelated;\\\\n image-rendering: -moz-crisp-edges;\\\\n z-index: var(--zIndex-canvas);\\\\n}\\\\n.excalidraw__canvas {\\\\n position: absolute;\\\\n}\\\\n.excalidraw.theme--dark canvas {\\\\n filter: var(--theme-filter);\\\\n}\\\\n.excalidraw .FixedSideContainer {\\\\n padding-top: var(--sat, 0);\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n}\\\\n.excalidraw .panelRow {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n}\\\\n.excalidraw .panelColumn {\\\\n display: flex;\\\\n flex-direction: column;\\\\n}\\\\n.excalidraw .panelColumn h3,\\\\n.excalidraw .panelColumn legend,\\\\n.excalidraw .panelColumn .control-label {\\\\n margin-top: 0.333rem;\\\\n margin-bottom: 0.333rem;\\\\n font-size: 0.75rem;\\\\n color: var(--text-primary-color);\\\\n font-weight: bold;\\\\n display: block;\\\\n}\\\\n.excalidraw .panelColumn .control-label input {\\\\n display: block;\\\\n width: 100%;\\\\n}\\\\n.excalidraw .panelColumn h3:first-child,\\\\n.excalidraw .panelColumn legend:first-child,\\\\n.excalidraw .panelColumn .control-label:first-child {\\\\n margin-top: 0;\\\\n}\\\\n.excalidraw .panelColumn legend {\\\\n padding: 0;\\\\n}\\\\n.excalidraw .panelColumn .iconSelectList {\\\\n flex-wrap: wrap;\\\\n position: relative;\\\\n}\\\\n.excalidraw .panelColumn .buttonList {\\\\n flex-wrap: wrap;\\\\n}\\\\n.excalidraw .panelColumn .buttonList label {\\\\n margin-right: 0.25rem;\\\\n font-size: 0.75rem;\\\\n display: inline-block;\\\\n}\\\\n.excalidraw .panelColumn .buttonList input[type=radio],\\\\n.excalidraw .panelColumn .buttonList input[type=button] {\\\\n opacity: 0;\\\\n position: absolute;\\\\n pointer-events: none;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .iconRow {\\\\n margin-top: 8px;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon:disabled {\\\\n cursor: not-allowed;\\\\n}\\\\n.excalidraw .panelColumn .buttonList .ToolIcon__icon {\\\\n width: 28px;\\\\n height: 28px;\\\\n}\\\\n.excalidraw .panelColumn fieldset {\\\\n margin: 0;\\\\n margin-top: 0.333rem;\\\\n padding: 0;\\\\n border: none;\\\\n}\\\\n.excalidraw .divider {\\\\n width: 1px;\\\\n background-color: #e9ecef;\\\\n margin: 1px;\\\\n}\\\\n.excalidraw .buttonList label:focus-within,\\\\n.excalidraw input:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw button,\\\\n.excalidraw .buttonList label {\\\\n user-select: none;\\\\n background-color: var(--button-gray-1);\\\\n border: 0;\\\\n border-radius: 4px;\\\\n margin: 0.125rem 0;\\\\n padding: 0.25rem;\\\\n white-space: nowrap;\\\\n cursor: pointer;\\\\n}\\\\n.excalidraw button:focus,\\\\n.excalidraw .buttonList label:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw button:hover,\\\\n.excalidraw .buttonList label:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw button:active,\\\\n.excalidraw .buttonList label:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw button:disabled,\\\\n.excalidraw .buttonList label:disabled {\\\\n cursor: not-allowed;\\\\n}\\\\n.excalidraw .active,\\\\n.excalidraw .buttonList label.active {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .active:hover,\\\\n.excalidraw .buttonList label.active:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .active:active,\\\\n.excalidraw .buttonList label.active:active {\\\\n background-color: var(--button-gray-3);\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label {\\\\n display: inline-flex;\\\\n justify-content: center;\\\\n align-items: center;\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label svg {\\\\n width: 36px;\\\\n height: 14px;\\\\n padding: 2px;\\\\n opacity: 0.6;\\\\n}\\\\n.excalidraw .buttonList.buttonListIcon label.active svg {\\\\n opacity: 1;\\\\n}\\\\n.excalidraw .App-top-bar {\\\\n z-index: var(--zIndex-layerUI);\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n}\\\\n.excalidraw .App-bottom-bar {\\\\n position: absolute;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n --bar-padding: calc(4 * var(--space-factor));\\\\n padding-top: max(var(--bar-padding), var(--sat,0));\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n z-index: 4;\\\\n display: flex;\\\\n align-items: flex-end;\\\\n pointer-events: none;\\\\n}\\\\n.excalidraw .App-bottom-bar > .Island {\\\\n width: 100%;\\\\n max-width: 100%;\\\\n min-width: 100%;\\\\n box-sizing: border-box;\\\\n max-height: 100%;\\\\n display: flex;\\\\n flex-direction: column;\\\\n pointer-events: initial;\\\\n}\\\\n.excalidraw .App-bottom-bar > .Island .panelColumn {\\\\n padding: 8px 8px 0 8px;\\\\n}\\\\n.excalidraw .App-toolbar {\\\\n width: 100%;\\\\n box-sizing: border-box;\\\\n}\\\\n.excalidraw .App-toolbar-content {\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: space-between;\\\\n padding: 8px;\\\\n}\\\\n.excalidraw .App-mobile-menu {\\\\n width: 100%;\\\\n overflow-x: visible;\\\\n overflow-y: auto;\\\\n box-sizing: border-box;\\\\n margin-bottom: var(--bar-padding);\\\\n}\\\\n.excalidraw .App-menu {\\\\n display: grid;\\\\n color: var(--icon-fill-color);\\\\n}\\\\n.excalidraw .App-menu_top {\\\\n grid-template-columns: auto max-content auto;\\\\n grid-gap: 4px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n}\\\\n.excalidraw .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\\\n pointer-events: all;\\\\n}\\\\n.excalidraw .App-menu_top > *:first-child {\\\\n justify-self: flex-start;\\\\n}\\\\n.excalidraw .App-menu_top > *:last-child {\\\\n justify-self: flex-end;\\\\n}\\\\n.excalidraw .App-menu_bottom {\\\\n position: absolute;\\\\n bottom: 0;\\\\n grid-template-columns: min-content auto min-content;\\\\n grid-gap: 15px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n z-index: 100;\\\\n}\\\\n:root[dir=ltr] .excalidraw .App-menu_bottom {\\\\n left: 0.25rem;\\\\n}\\\\n:root[dir=rtl] .excalidraw .App-menu_bottom {\\\\n right: 0.25rem;\\\\n}\\\\n.excalidraw .App-menu_bottom--transition-left section {\\\\n width: 185px;\\\\n}\\\\n.excalidraw .App-menu_bottom section {\\\\n display: flex;\\\\n}\\\\n.excalidraw .App-menu_bottom > *:first-child {\\\\n justify-self: flex-start;\\\\n}\\\\n.excalidraw .App-menu_bottom > *:last-child {\\\\n justify-self: flex-end;\\\\n}\\\\n.excalidraw .App-menu_left {\\\\n grid-template-rows: 1fr auto 1fr;\\\\n height: 100%;\\\\n}\\\\n.excalidraw .App-menu_right {\\\\n grid-template-rows: 1fr;\\\\n height: 100%;\\\\n}\\\\n.excalidraw .App-menu__left {\\\\n overflow-y: auto;\\\\n}\\\\n.excalidraw .dropdown-select {\\\\n height: 1.5rem;\\\\n padding: 0;\\\\n padding-inline-start: 0.5rem;\\\\n padding-inline-end: 1.5rem;\\\\n color: var(--icon-fill-color);\\\\n background-color: var(--button-gray-1);\\\\n border-radius: var(--space-factor);\\\\n border: 1px solid var(--button-gray-2);\\\\n font-size: 0.8rem;\\\\n outline: none;\\\\n appearance: none;\\\\n background-image: var(--dropdown-icon);\\\\n background-repeat: no-repeat;\\\\n background-position: right 0.7rem top 50%, 0 0;\\\\n background-size: 0.65em auto, 100%;\\\\n}\\\\n:root[dir=rtl] .excalidraw .dropdown-select {\\\\n background-position: left 0.7rem top 50%, 0 0;\\\\n}\\\\n.excalidraw .dropdown-select:focus {\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n.excalidraw .dropdown-select:hover {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .dropdown-select:active {\\\\n background-color: var(--button-gray-2);\\\\n}\\\\n.excalidraw .zIndexButton {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n padding: 5px;\\\\n display: inline-flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n}\\\\n.excalidraw .zIndexButton svg {\\\\n width: 18px;\\\\n height: 18px;\\\\n}\\\\n.excalidraw .scroll-back-to-content {\\\\n color: var(--popup-text-color);\\\\n position: absolute;\\\\n left: 50%;\\\\n bottom: 30px;\\\\n transform: translateX(-50%);\\\\n padding: 10px 20px;\\\\n}\\\\n.excalidraw .help-icon {\\\\n display: flex;\\\\n cursor: pointer;\\\\n fill: #868e96;\\\\n padding: 0;\\\\n margin: 0;\\\\n background: none;\\\\n color: var(--icon-fill-color);\\\\n}\\\\n.excalidraw .help-icon svg {\\\\n width: 1.5rem;\\\\n height: 1.5rem;\\\\n}\\\\n.excalidraw .help-icon:hover {\\\\n background: none;\\\\n}\\\\n.excalidraw .reset-zoom-button {\\\\n padding: 0.2em;\\\\n background: transparent;\\\\n color: var(--text-primary-color);\\\\n font-family: var(--ui-font);\\\\n}\\\\n.excalidraw .undo-redo-buttons {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n}\\\\n.excalidraw--mobile.excalidraw aside {\\\\n display: none;\\\\n}\\\\n.excalidraw--mobile.excalidraw .scroll-back-to-content {\\\\n bottom: calc(80px + var(--sab, 0));\\\\n z-index: -1;\\\\n}\\\\n\\\\n:root[dir=rtl] .excalidraw .rtl-mirror {\\\\n transform: scaleX(-1);\\\\n}\\\\n.excalidraw .zen-mode-visibility {\\\\n visibility: visible;\\\\n opacity: 1;\\\\n height: auto;\\\\n width: auto;\\\\n transition: opacity 0.5s;\\\\n}\\\\n.excalidraw .zen-mode-visibility.zen-mode-visibility--hidden {\\\\n visibility: hidden;\\\\n opacity: 0;\\\\n height: 0;\\\\n width: 0;\\\\n transition: opacity 0.5s;\\\\n}\\\\n.excalidraw .disable-pointerEvents {\\\\n pointer-events: none !important;\\\\n}\\\\n.excalidraw.excalidraw--view-mode .App-menu {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n}\\\\n.excalidraw input[type=text],\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg) {\\\\n color: var(--text-primary-color);\\\\n border: 1.5px solid var(--input-border-color);\\\\n padding: 0.75rem;\\\\n white-space: nowrap;\\\\n border-radius: var(--space-factor);\\\\n background-color: var(--input-bg-color);\\\\n}\\\\n.excalidraw input[type=text]:not(:focus):hover,\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg):not(:focus):hover {\\\\n background-color: var(--input-hover-bg-color);\\\\n}\\\\n.excalidraw input[type=text]:focus,\\\\n.excalidraw textarea:not(.excalidraw-wysiwyg):focus {\\\\n outline: none;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n}\\\\n@media print {\\\\n .excalidraw .App-bottom-bar,\\\\n.excalidraw .FixedSideContainer,\\\\n.excalidraw .layer-ui__wrapper {\\\\n display: none;\\\\n }\\\\n}\\\\n\\\\n.ErrorSplash.excalidraw {\\\\n min-height: 100vh;\\\\n padding: 20px 0;\\\\n overflow: auto;\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n user-select: text;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-messageContainer {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n justify-content: center;\\\\n padding: 40px;\\\\n background-color: #ffe3e3;\\\\n border: 3px solid #c92a2a;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph {\\\\n margin: 15px 0;\\\\n max-width: 600px;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-paragraph.align-center {\\\\n text-align: center;\\\\n}\\\\n.ErrorSplash.excalidraw .bigger,\\\\n.ErrorSplash.excalidraw .bigger button {\\\\n font-size: 1.1em;\\\\n}\\\\n.ErrorSplash.excalidraw .smaller,\\\\n.ErrorSplash.excalidraw .smaller button {\\\\n font-size: 0.9em;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-details {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: flex-start;\\\\n}\\\\n.ErrorSplash.excalidraw .ErrorSplash-details textarea {\\\\n width: 100%;\\\\n margin: 10px 0;\\\\n font-family: \\\\\\\"Cascadia\\\\\\\";\\\\n font-size: 0.8em;\\\\n}\\\", \\\"\\\",{\\\"version\\\":3,\\\"sources\\\":[\\\"webpack://./../../css/variables.module.scss\\\",\\\"webpack://./../../css/styles.scss\\\",\\\"webpack://./../../css/theme.scss\\\",\\\"webpack://./../../../node_modules/open-color/open-color.scss\\\"],\\\"names\\\":[],\\\"mappings\\\":\\\"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\\\",\\\"sourcesContent\\\":[\\\"@import \\\\\\\"open-color/open-color.scss\\\\\\\";\\\\n\\\\n@mixin isMobile() {\\\\n @at-root .excalidraw--mobile#{&} {\\\\n @content;\\\\n }\\\\n}\\\\n\\\\n$theme-filter: \\\\\\\"invert(93%) hue-rotate(180deg)\\\\\\\";\\\\n\\\\n:export {\\\\n themeFilter: unquote($theme-filter);\\\\n}\\\\n\\\",\\\"@import \\\\\\\"./variables.module\\\\\\\";\\\\n@import \\\\\\\"./theme\\\\\\\";\\\\n\\\\n:root {\\\\n --zIndex-canvas: 1;\\\\n --zIndex-wysiwyg: 2;\\\\n --zIndex-layerUI: 3;\\\\n}\\\\n\\\\n.excalidraw {\\\\n position: relative;\\\\n overflow: hidden;\\\\n color: var(--text-primary-color);\\\\n display: flex;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n height: 100%;\\\\n width: 100%;\\\\n\\\\n &:focus {\\\\n outline: none;\\\\n }\\\\n\\\\n // serves 2 purposes:\\\\n // 1. prevent selecting text outside the component when double-clicking or\\\\n // dragging inside it (e.g. on canvas)\\\\n // 2. prevent selecting UI, both from the inside, and from outside the\\\\n // component (e.g. if you select text in a sidebar)\\\\n user-select: none;\\\\n\\\\n a {\\\\n font-weight: 500;\\\\n text-decoration: none;\\\\n color: var(--link-color);\\\\n\\\\n &:hover {\\\\n text-decoration: underline;\\\\n }\\\\n }\\\\n\\\\n canvas {\\\\n touch-action: none;\\\\n\\\\n // following props improve blurriness at certain devicePixelRatios.\\\\n // AFAIK it doesn't affect export (in fact, export seems sharp either way).\\\\n\\\\n image-rendering: pixelated; // chromium\\\\n // NOTE: must be declared *after* the above\\\\n image-rendering: -moz-crisp-edges; // FF\\\\n\\\\n z-index: var(--zIndex-canvas);\\\\n\\\\n // Remove the main canvas from document flow to avoid resizeObserver\\\\n // feedback loop (see https://github.com/excalidraw/excalidraw/pull/3379)\\\\n }\\\\n\\\\n &__canvas {\\\\n position: absolute;\\\\n }\\\\n\\\\n &.theme--dark {\\\\n // The percentage is inspired by\\\\n // https://material.io/design/color/dark-theme.html#properties, which\\\\n // recommends surface color of #121212, 93% yields #111111 for #FFF\\\\n\\\\n canvas {\\\\n filter: var(--theme-filter);\\\\n }\\\\n }\\\\n\\\\n .FixedSideContainer {\\\\n padding-top: var(--sat, 0);\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n }\\\\n\\\\n .panelRow {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n }\\\\n\\\\n .panelColumn {\\\\n display: flex;\\\\n flex-direction: column;\\\\n\\\\n h3,\\\\n legend,\\\\n .control-label {\\\\n margin-top: 0.333rem;\\\\n margin-bottom: 0.333rem;\\\\n font-size: 0.75rem;\\\\n color: var(--text-primary-color);\\\\n font-weight: bold;\\\\n display: block;\\\\n }\\\\n\\\\n .control-label input {\\\\n display: block;\\\\n width: 100%;\\\\n }\\\\n\\\\n h3:first-child,\\\\n legend:first-child,\\\\n .control-label:first-child {\\\\n margin-top: 0;\\\\n }\\\\n\\\\n legend {\\\\n padding: 0;\\\\n }\\\\n\\\\n .iconSelectList {\\\\n flex-wrap: wrap;\\\\n position: relative;\\\\n }\\\\n\\\\n .buttonList {\\\\n flex-wrap: wrap;\\\\n\\\\n label {\\\\n margin-right: 0.25rem;\\\\n font-size: 0.75rem;\\\\n display: inline-block;\\\\n }\\\\n\\\\n input[type=\\\\\\\"radio\\\\\\\"],\\\\n input[type=\\\\\\\"button\\\\\\\"] {\\\\n opacity: 0;\\\\n position: absolute;\\\\n pointer-events: none;\\\\n }\\\\n\\\\n .iconRow {\\\\n margin-top: 8px;\\\\n }\\\\n\\\\n .ToolIcon {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n\\\\n &:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n\\\\n &:disabled {\\\\n cursor: not-allowed;\\\\n }\\\\n }\\\\n\\\\n .ToolIcon__icon {\\\\n width: 28px;\\\\n height: 28px;\\\\n }\\\\n }\\\\n\\\\n fieldset {\\\\n margin: 0;\\\\n margin-top: 0.333rem;\\\\n padding: 0;\\\\n border: none;\\\\n }\\\\n }\\\\n\\\\n .divider {\\\\n width: 1px;\\\\n background-color: $oc-gray-2;\\\\n margin: 1px;\\\\n }\\\\n\\\\n .buttonList label:focus-within,\\\\n input:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n button,\\\\n .buttonList label {\\\\n user-select: none;\\\\n background-color: var(--button-gray-1);\\\\n border: 0;\\\\n border-radius: 4px;\\\\n margin: 0.125rem 0;\\\\n padding: 0.25rem;\\\\n white-space: nowrap;\\\\n\\\\n cursor: pointer;\\\\n\\\\n &:focus {\\\\n outline: transparent;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n\\\\n &:disabled {\\\\n cursor: not-allowed;\\\\n }\\\\n }\\\\n\\\\n .active,\\\\n .buttonList label.active {\\\\n background-color: var(--button-gray-2);\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-3);\\\\n }\\\\n }\\\\n\\\\n .buttonList.buttonListIcon {\\\\n label {\\\\n display: inline-flex;\\\\n justify-content: center;\\\\n align-items: center;\\\\n svg {\\\\n width: 36px;\\\\n height: 14px;\\\\n padding: 2px;\\\\n opacity: 0.6;\\\\n }\\\\n &.active svg {\\\\n opacity: 1;\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-top-bar {\\\\n z-index: var(--zIndex-layerUI);\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n }\\\\n\\\\n .App-bottom-bar {\\\\n position: absolute;\\\\n top: 0;\\\\n bottom: 0;\\\\n left: 0;\\\\n right: 0;\\\\n --bar-padding: calc(4 * var(--space-factor));\\\\n padding-top: #{\\\\\\\"max(var(--bar-padding), var(--sat,0))\\\\\\\"};\\\\n padding-right: var(--sar, 0);\\\\n padding-bottom: var(--sab, 0);\\\\n padding-left: var(--sal, 0);\\\\n z-index: 4;\\\\n display: flex;\\\\n align-items: flex-end;\\\\n pointer-events: none;\\\\n\\\\n > .Island {\\\\n width: 100%;\\\\n max-width: 100%;\\\\n min-width: 100%;\\\\n box-sizing: border-box;\\\\n max-height: 100%;\\\\n display: flex;\\\\n flex-direction: column;\\\\n pointer-events: initial;\\\\n\\\\n .panelColumn {\\\\n padding: 8px 8px 0 8px;\\\\n }\\\\n }\\\\n }\\\\n\\\\n .App-toolbar {\\\\n width: 100%;\\\\n\\\\n box-sizing: border-box;\\\\n }\\\\n\\\\n .App-toolbar-content {\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: space-between;\\\\n padding: 8px;\\\\n }\\\\n\\\\n .App-mobile-menu {\\\\n width: 100%;\\\\n overflow-x: visible;\\\\n overflow-y: auto;\\\\n box-sizing: border-box;\\\\n margin-bottom: var(--bar-padding);\\\\n }\\\\n\\\\n .App-menu {\\\\n display: grid;\\\\n color: var(--icon-fill-color);\\\\n }\\\\n\\\\n .App-menu_top {\\\\n grid-template-columns: auto max-content auto;\\\\n grid-gap: 4px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n }\\\\n\\\\n .layer-ui__wrapper:not(.disable-pointerEvents) .App-menu_top > * {\\\\n pointer-events: all;\\\\n }\\\\n\\\\n .App-menu_top > *:first-child {\\\\n justify-self: flex-start;\\\\n }\\\\n\\\\n .App-menu_top > *:last-child {\\\\n justify-self: flex-end;\\\\n }\\\\n\\\\n .App-menu_bottom {\\\\n position: absolute;\\\\n bottom: 0;\\\\n grid-template-columns: min-content auto min-content;\\\\n grid-gap: 15px;\\\\n align-items: flex-start;\\\\n cursor: default;\\\\n pointer-events: none !important;\\\\n z-index: 100;\\\\n\\\\n :root[dir=\\\\\\\"ltr\\\\\\\"] & {\\\\n left: 0.25rem;\\\\n }\\\\n\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n right: 0.25rem;\\\\n }\\\\n\\\\n &--transition-left {\\\\n section {\\\\n width: 185px;\\\\n }\\\\n }\\\\n\\\\n section {\\\\n display: flex;\\\\n }\\\\n }\\\\n\\\\n .App-menu_bottom > *:first-child {\\\\n justify-self: flex-start;\\\\n }\\\\n\\\\n .App-menu_bottom > *:last-child {\\\\n justify-self: flex-end;\\\\n }\\\\n\\\\n .App-menu_left {\\\\n grid-template-rows: 1fr auto 1fr;\\\\n height: 100%;\\\\n }\\\\n\\\\n .App-menu_right {\\\\n grid-template-rows: 1fr;\\\\n height: 100%;\\\\n }\\\\n\\\\n .App-menu__left {\\\\n overflow-y: auto;\\\\n }\\\\n\\\\n .dropdown-select {\\\\n height: 1.5rem;\\\\n padding: 0;\\\\n padding-inline-start: 0.5rem;\\\\n padding-inline-end: 1.5rem;\\\\n color: var(--icon-fill-color);\\\\n background-color: var(--button-gray-1);\\\\n border-radius: var(--space-factor);\\\\n border: 1px solid var(--button-gray-2);\\\\n font-size: 0.8rem;\\\\n outline: none;\\\\n appearance: none;\\\\n background-image: var(--dropdown-icon);\\\\n background-repeat: no-repeat;\\\\n background-position: right 0.7rem top 50%, 0 0;\\\\n\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n background-position: left 0.7rem top 50%, 0 0;\\\\n }\\\\n\\\\n background-size: 0.65em auto, 100%;\\\\n\\\\n &:focus {\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n\\\\n &:hover {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n\\\\n &:active {\\\\n background-color: var(--button-gray-2);\\\\n }\\\\n }\\\\n\\\\n .zIndexButton {\\\\n margin: 0;\\\\n margin-inline-end: 8px;\\\\n padding: 5px;\\\\n display: inline-flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n\\\\n svg {\\\\n width: 18px;\\\\n height: 18px;\\\\n }\\\\n }\\\\n\\\\n .scroll-back-to-content {\\\\n color: var(--popup-text-color);\\\\n position: absolute;\\\\n left: 50%;\\\\n bottom: 30px;\\\\n transform: translateX(-50%);\\\\n padding: 10px 20px;\\\\n }\\\\n\\\\n .help-icon {\\\\n display: flex;\\\\n cursor: pointer;\\\\n fill: $oc-gray-6;\\\\n padding: 0;\\\\n margin: 0;\\\\n background: none;\\\\n color: var(--icon-fill-color);\\\\n\\\\n svg {\\\\n width: 1.5rem;\\\\n height: 1.5rem;\\\\n }\\\\n\\\\n &:hover {\\\\n background: none;\\\\n }\\\\n }\\\\n\\\\n .reset-zoom-button {\\\\n padding: 0.2em;\\\\n background: transparent;\\\\n color: var(--text-primary-color);\\\\n font-family: var(--ui-font);\\\\n }\\\\n\\\\n .undo-redo-buttons {\\\\n display: grid;\\\\n grid-auto-flow: column;\\\\n gap: 0.4em;\\\\n margin-top: auto;\\\\n margin-bottom: auto;\\\\n margin-inline-start: 0.6em;\\\\n }\\\\n\\\\n @include isMobile {\\\\n aside {\\\\n display: none;\\\\n }\\\\n .scroll-back-to-content {\\\\n bottom: calc(80px + var(--sab, 0));\\\\n z-index: -1;\\\\n }\\\\n }\\\\n\\\\n .rtl-mirror {\\\\n :root[dir=\\\\\\\"rtl\\\\\\\"] & {\\\\n transform: scaleX(-1);\\\\n }\\\\n }\\\\n\\\\n .zen-mode-visibility {\\\\n visibility: visible;\\\\n opacity: 1;\\\\n height: auto;\\\\n width: auto;\\\\n transition: opacity 0.5s;\\\\n\\\\n &.zen-mode-visibility--hidden {\\\\n visibility: hidden;\\\\n opacity: 0;\\\\n height: 0;\\\\n width: 0;\\\\n transition: opacity 0.5s;\\\\n }\\\\n }\\\\n\\\\n .disable-pointerEvents {\\\\n pointer-events: none !important;\\\\n }\\\\n\\\\n &.excalidraw--view-mode {\\\\n .App-menu {\\\\n display: flex;\\\\n justify-content: space-between;\\\\n }\\\\n }\\\\n\\\\n input[type=\\\\\\\"text\\\\\\\"],\\\\n textarea:not(.excalidraw-wysiwyg) {\\\\n color: var(--text-primary-color);\\\\n border: 1.5px solid var(--input-border-color);\\\\n padding: 0.75rem;\\\\n white-space: nowrap;\\\\n border-radius: var(--space-factor);\\\\n background-color: var(--input-bg-color);\\\\n\\\\n &:not(:focus) {\\\\n &:hover {\\\\n background-color: var(--input-hover-bg-color);\\\\n }\\\\n }\\\\n\\\\n &:focus {\\\\n outline: none;\\\\n box-shadow: 0 0 0 2px var(--focus-highlight-color);\\\\n }\\\\n }\\\\n\\\\n @media print {\\\\n .App-bottom-bar,\\\\n .FixedSideContainer,\\\\n .layer-ui__wrapper {\\\\n display: none;\\\\n }\\\\n }\\\\n}\\\\n\\\\n.ErrorSplash.excalidraw {\\\\n min-height: 100vh;\\\\n padding: 20px 0;\\\\n overflow: auto;\\\\n display: flex;\\\\n align-items: center;\\\\n justify-content: center;\\\\n user-select: text;\\\\n\\\\n .ErrorSplash-messageContainer {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: center;\\\\n justify-content: center;\\\\n\\\\n padding: 40px;\\\\n background-color: $oc-red-1;\\\\n border: 3px solid $oc-red-9;\\\\n }\\\\n\\\\n .ErrorSplash-paragraph {\\\\n margin: 15px 0;\\\\n max-width: 600px;\\\\n\\\\n &.align-center {\\\\n text-align: center;\\\\n }\\\\n }\\\\n\\\\n .bigger,\\\\n .bigger button {\\\\n font-size: 1.1em;\\\\n }\\\\n\\\\n .smaller,\\\\n .smaller button {\\\\n font-size: 0.9em;\\\\n }\\\\n\\\\n .ErrorSplash-details {\\\\n display: flex;\\\\n flex-direction: column;\\\\n align-items: flex-start;\\\\n\\\\n textarea {\\\\n width: 100%;\\\\n margin: 10px 0;\\\\n font-family: \\\\\\\"Cascadia\\\\\\\";\\\\n font-size: 0.8em;\\\\n }\\\\n }\\\\n}\\\\n\\\",\\\"@import \\\\\\\"open-color/open-color.scss\\\\\\\";\\\\n@import \\\\\\\"./variables.module.scss\\\\\\\";\\\\n\\\\n.excalidraw {\\\\n --theme-filter: none;\\\\n --button-destructive-bg-color: #{$oc-red-1};\\\\n --button-destructive-color: #{$oc-red-9};\\\\n --button-gray-1: #{$oc-gray-2};\\\\n --button-gray-2: #{$oc-gray-4};\\\\n --button-gray-3: #{$oc-gray-5};\\\\n --button-special-active-bg-color: #{$oc-green-0};\\\\n --dialog-border-color: #{$oc-gray-6};\\\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>');\\\\n --focus-highlight-color: #{$oc-blue-2};\\\\n --icon-fill-color: #{$oc-black};\\\\n --icon-green-fill-color: #{$oc-green-9};\\\\n --default-bg-color: #{$oc-white};\\\\n --input-bg-color: #{$oc-white};\\\\n --input-border-color: #{$oc-gray-4};\\\\n --input-hover-bg-color: #{$oc-gray-1};\\\\n --input-label-color: #{$oc-gray-7};\\\\n --island-bg-color: rgba(255, 255, 255, 0.96);\\\\n --keybinding-color: #{$oc-gray-5};\\\\n --link-color: #{$oc-blue-7};\\\\n --overlay-bg-color: #{transparentize($oc-white, 0.12)};\\\\n --popup-bg-color: #{$oc-white};\\\\n --popup-secondary-bg-color: #{$oc-gray-1};\\\\n --popup-text-color: #{$oc-black};\\\\n --popup-text-inverted-color: #{$oc-white};\\\\n --sab: env(safe-area-inset-bottom);\\\\n --sal: env(safe-area-inset-left);\\\\n --sar: env(safe-area-inset-right);\\\\n --sat: env(safe-area-inset-top);\\\\n --select-highlight-color: #{$oc-blue-5};\\\\n --shadow-island: 0 1px 5px #{transparentize($oc-black, 0.85)};\\\\n --space-factor: 0.25rem;\\\\n --text-primary-color: #{$oc-gray-8};\\\\n\\\\n &.theme--dark {\\\\n background: $oc-black;\\\\n\\\\n &.theme--dark-background-none {\\\\n background: none;\\\\n }\\\\n }\\\\n\\\\n &.theme--dark {\\\\n --theme-filter: #{$theme-filter};\\\\n --button-destructive-bg-color: #5a0000;\\\\n --button-destructive-color: #{$oc-red-3};\\\\n --button-gray-1: #363636;\\\\n --button-gray-2: #272727;\\\\n --button-gray-3: #222;\\\\n --button-special-active-bg-color: #204624;\\\\n --dialog-border-color: #{$oc-gray-9};\\\\n --dropdown-icon: url('data:image/svg+xml,<svg xmlns=\\\\\\\"http://www.w3.org/2000/svg\\\\\\\" width=\\\\\\\"292.4\\\\\\\" height=\\\\\\\"292.4\\\\\\\" viewBox=\\\\\\\"0 0 292 292\\\\\\\"><path fill=\\\\\\\"%23ced4da\\\\\\\" d=\\\\\\\"M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z\\\\\\\"/></svg>');\\\\n --focus-highlight-color: #{$oc-blue-6};\\\\n --icon-fill-color: #{$oc-gray-4};\\\\n --icon-green-fill-color: #{$oc-green-4};\\\\n --default-bg-color: #121212;\\\\n --input-bg-color: #121212;\\\\n --input-border-color: #2e2e2e;\\\\n --input-hover-bg-color: #181818;\\\\n --input-label-color: #{$oc-gray-2};\\\\n --island-bg-color: rgba(30, 30, 30, 0.98);\\\\n --keybinding-color: #{$oc-gray-6};\\\\n --link-color: #{$oc-blue-4};\\\\n --overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};\\\\n --popup-bg-color: #2c2c2c;\\\\n --popup-secondary-bg-color: #222;\\\\n --popup-text-color: #{$oc-gray-4};\\\\n --popup-text-inverted-color: #2c2c2c;\\\\n --select-highlight-color: #{$oc-blue-4};\\\\n --shadow-island: 0 1px 5px #{transparentize($oc-black, 0.7)};\\\\n --text-primary-color: #{$oc-gray-4};\\\\n }\\\\n}\\\\n\\\",\\\"//\\\\n//\\\\n// 𝗖 𝗢 𝗟 𝗢 𝗥\\\\n// v 1.9.1\\\\n//\\\\n// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\\\n\\\\n\\\\n// General\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-white: #ffffff;\\\\n$oc-black: #000000;\\\\n\\\\n\\\\n// Gray\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-gray-list: (\\\\n \\\\\\\"0\\\\\\\": #f8f9fa,\\\\n \\\\\\\"1\\\\\\\": #f1f3f5,\\\\n \\\\\\\"2\\\\\\\": #e9ecef,\\\\n \\\\\\\"3\\\\\\\": #dee2e6,\\\\n \\\\\\\"4\\\\\\\": #ced4da,\\\\n \\\\\\\"5\\\\\\\": #adb5bd,\\\\n \\\\\\\"6\\\\\\\": #868e96,\\\\n \\\\\\\"7\\\\\\\": #495057,\\\\n \\\\\\\"8\\\\\\\": #343a40,\\\\n \\\\\\\"9\\\\\\\": #212529\\\\n);\\\\n\\\\n$oc-gray-0: map-get($oc-gray-list, \\\\\\\"0\\\\\\\");\\\\n$oc-gray-1: map-get($oc-gray-list, \\\\\\\"1\\\\\\\");\\\\n$oc-gray-2: map-get($oc-gray-list, \\\\\\\"2\\\\\\\");\\\\n$oc-gray-3: map-get($oc-gray-list, \\\\\\\"3\\\\\\\");\\\\n$oc-gray-4: map-get($oc-gray-list, \\\\\\\"4\\\\\\\");\\\\n$oc-gray-5: map-get($oc-gray-list, \\\\\\\"5\\\\\\\");\\\\n$oc-gray-6: map-get($oc-gray-list, \\\\\\\"6\\\\\\\");\\\\n$oc-gray-7: map-get($oc-gray-list, \\\\\\\"7\\\\\\\");\\\\n$oc-gray-8: map-get($oc-gray-list, \\\\\\\"8\\\\\\\");\\\\n$oc-gray-9: map-get($oc-gray-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Red\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-red-list: (\\\\n \\\\\\\"0\\\\\\\": #fff5f5,\\\\n \\\\\\\"1\\\\\\\": #ffe3e3,\\\\n \\\\\\\"2\\\\\\\": #ffc9c9,\\\\n \\\\\\\"3\\\\\\\": #ffa8a8,\\\\n \\\\\\\"4\\\\\\\": #ff8787,\\\\n \\\\\\\"5\\\\\\\": #ff6b6b,\\\\n \\\\\\\"6\\\\\\\": #fa5252,\\\\n \\\\\\\"7\\\\\\\": #f03e3e,\\\\n \\\\\\\"8\\\\\\\": #e03131,\\\\n \\\\\\\"9\\\\\\\": #c92a2a\\\\n);\\\\n\\\\n$oc-red-0: map-get($oc-red-list, \\\\\\\"0\\\\\\\");\\\\n$oc-red-1: map-get($oc-red-list, \\\\\\\"1\\\\\\\");\\\\n$oc-red-2: map-get($oc-red-list, \\\\\\\"2\\\\\\\");\\\\n$oc-red-3: map-get($oc-red-list, \\\\\\\"3\\\\\\\");\\\\n$oc-red-4: map-get($oc-red-list, \\\\\\\"4\\\\\\\");\\\\n$oc-red-5: map-get($oc-red-list, \\\\\\\"5\\\\\\\");\\\\n$oc-red-6: map-get($oc-red-list, \\\\\\\"6\\\\\\\");\\\\n$oc-red-7: map-get($oc-red-list, \\\\\\\"7\\\\\\\");\\\\n$oc-red-8: map-get($oc-red-list, \\\\\\\"8\\\\\\\");\\\\n$oc-red-9: map-get($oc-red-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Pink\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-pink-list: (\\\\n \\\\\\\"0\\\\\\\": #fff0f6,\\\\n \\\\\\\"1\\\\\\\": #ffdeeb,\\\\n \\\\\\\"2\\\\\\\": #fcc2d7,\\\\n \\\\\\\"3\\\\\\\": #faa2c1,\\\\n \\\\\\\"4\\\\\\\": #f783ac,\\\\n \\\\\\\"5\\\\\\\": #f06595,\\\\n \\\\\\\"6\\\\\\\": #e64980,\\\\n \\\\\\\"7\\\\\\\": #d6336c,\\\\n \\\\\\\"8\\\\\\\": #c2255c,\\\\n \\\\\\\"9\\\\\\\": #a61e4d\\\\n);\\\\n\\\\n$oc-pink-0: map-get($oc-pink-list, \\\\\\\"0\\\\\\\");\\\\n$oc-pink-1: map-get($oc-pink-list, \\\\\\\"1\\\\\\\");\\\\n$oc-pink-2: map-get($oc-pink-list, \\\\\\\"2\\\\\\\");\\\\n$oc-pink-3: map-get($oc-pink-list, \\\\\\\"3\\\\\\\");\\\\n$oc-pink-4: map-get($oc-pink-list, \\\\\\\"4\\\\\\\");\\\\n$oc-pink-5: map-get($oc-pink-list, \\\\\\\"5\\\\\\\");\\\\n$oc-pink-6: map-get($oc-pink-list, \\\\\\\"6\\\\\\\");\\\\n$oc-pink-7: map-get($oc-pink-list, \\\\\\\"7\\\\\\\");\\\\n$oc-pink-8: map-get($oc-pink-list, \\\\\\\"8\\\\\\\");\\\\n$oc-pink-9: map-get($oc-pink-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Grape\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-grape-list: (\\\\n \\\\\\\"0\\\\\\\": #f8f0fc,\\\\n \\\\\\\"1\\\\\\\": #f3d9fa,\\\\n \\\\\\\"2\\\\\\\": #eebefa,\\\\n \\\\\\\"3\\\\\\\": #e599f7,\\\\n \\\\\\\"4\\\\\\\": #da77f2,\\\\n \\\\\\\"5\\\\\\\": #cc5de8,\\\\n \\\\\\\"6\\\\\\\": #be4bdb,\\\\n \\\\\\\"7\\\\\\\": #ae3ec9,\\\\n \\\\\\\"8\\\\\\\": #9c36b5,\\\\n \\\\\\\"9\\\\\\\": #862e9c\\\\n);\\\\n\\\\n$oc-grape-0: map-get($oc-grape-list, \\\\\\\"0\\\\\\\");\\\\n$oc-grape-1: map-get($oc-grape-list, \\\\\\\"1\\\\\\\");\\\\n$oc-grape-2: map-get($oc-grape-list, \\\\\\\"2\\\\\\\");\\\\n$oc-grape-3: map-get($oc-grape-list, \\\\\\\"3\\\\\\\");\\\\n$oc-grape-4: map-get($oc-grape-list, \\\\\\\"4\\\\\\\");\\\\n$oc-grape-5: map-get($oc-grape-list, \\\\\\\"5\\\\\\\");\\\\n$oc-grape-6: map-get($oc-grape-list, \\\\\\\"6\\\\\\\");\\\\n$oc-grape-7: map-get($oc-grape-list, \\\\\\\"7\\\\\\\");\\\\n$oc-grape-8: map-get($oc-grape-list, \\\\\\\"8\\\\\\\");\\\\n$oc-grape-9: map-get($oc-grape-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Violet\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-violet-list: (\\\\n \\\\\\\"0\\\\\\\": #f3f0ff,\\\\n \\\\\\\"1\\\\\\\": #e5dbff,\\\\n \\\\\\\"2\\\\\\\": #d0bfff,\\\\n \\\\\\\"3\\\\\\\": #b197fc,\\\\n \\\\\\\"4\\\\\\\": #9775fa,\\\\n \\\\\\\"5\\\\\\\": #845ef7,\\\\n \\\\\\\"6\\\\\\\": #7950f2,\\\\n \\\\\\\"7\\\\\\\": #7048e8,\\\\n \\\\\\\"8\\\\\\\": #6741d9,\\\\n \\\\\\\"9\\\\\\\": #5f3dc4\\\\n);\\\\n\\\\n$oc-violet-0: map-get($oc-violet-list, \\\\\\\"0\\\\\\\");\\\\n$oc-violet-1: map-get($oc-violet-list, \\\\\\\"1\\\\\\\");\\\\n$oc-violet-2: map-get($oc-violet-list, \\\\\\\"2\\\\\\\");\\\\n$oc-violet-3: map-get($oc-violet-list, \\\\\\\"3\\\\\\\");\\\\n$oc-violet-4: map-get($oc-violet-list, \\\\\\\"4\\\\\\\");\\\\n$oc-violet-5: map-get($oc-violet-list, \\\\\\\"5\\\\\\\");\\\\n$oc-violet-6: map-get($oc-violet-list, \\\\\\\"6\\\\\\\");\\\\n$oc-violet-7: map-get($oc-violet-list, \\\\\\\"7\\\\\\\");\\\\n$oc-violet-8: map-get($oc-violet-list, \\\\\\\"8\\\\\\\");\\\\n$oc-violet-9: map-get($oc-violet-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Indigo\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-indigo-list: (\\\\n \\\\\\\"0\\\\\\\": #edf2ff,\\\\n \\\\\\\"1\\\\\\\": #dbe4ff,\\\\n \\\\\\\"2\\\\\\\": #bac8ff,\\\\n \\\\\\\"3\\\\\\\": #91a7ff,\\\\n \\\\\\\"4\\\\\\\": #748ffc,\\\\n \\\\\\\"5\\\\\\\": #5c7cfa,\\\\n \\\\\\\"6\\\\\\\": #4c6ef5,\\\\n \\\\\\\"7\\\\\\\": #4263eb,\\\\n \\\\\\\"8\\\\\\\": #3b5bdb,\\\\n \\\\\\\"9\\\\\\\": #364fc7\\\\n);\\\\n\\\\n$oc-indigo-0: map-get($oc-indigo-list, \\\\\\\"0\\\\\\\");\\\\n$oc-indigo-1: map-get($oc-indigo-list, \\\\\\\"1\\\\\\\");\\\\n$oc-indigo-2: map-get($oc-indigo-list, \\\\\\\"2\\\\\\\");\\\\n$oc-indigo-3: map-get($oc-indigo-list, \\\\\\\"3\\\\\\\");\\\\n$oc-indigo-4: map-get($oc-indigo-list, \\\\\\\"4\\\\\\\");\\\\n$oc-indigo-5: map-get($oc-indigo-list, \\\\\\\"5\\\\\\\");\\\\n$oc-indigo-6: map-get($oc-indigo-list, \\\\\\\"6\\\\\\\");\\\\n$oc-indigo-7: map-get($oc-indigo-list, \\\\\\\"7\\\\\\\");\\\\n$oc-indigo-8: map-get($oc-indigo-list, \\\\\\\"8\\\\\\\");\\\\n$oc-indigo-9: map-get($oc-indigo-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Blue\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-blue-list: (\\\\n \\\\\\\"0\\\\\\\": #e7f5ff,\\\\n \\\\\\\"1\\\\\\\": #d0ebff,\\\\n \\\\\\\"2\\\\\\\": #a5d8ff,\\\\n \\\\\\\"3\\\\\\\": #74c0fc,\\\\n \\\\\\\"4\\\\\\\": #4dabf7,\\\\n \\\\\\\"5\\\\\\\": #339af0,\\\\n \\\\\\\"6\\\\\\\": #228be6,\\\\n \\\\\\\"7\\\\\\\": #1c7ed6,\\\\n \\\\\\\"8\\\\\\\": #1971c2,\\\\n \\\\\\\"9\\\\\\\": #1864ab\\\\n);\\\\n\\\\n$oc-blue-0: map-get($oc-blue-list, \\\\\\\"0\\\\\\\");\\\\n$oc-blue-1: map-get($oc-blue-list, \\\\\\\"1\\\\\\\");\\\\n$oc-blue-2: map-get($oc-blue-list, \\\\\\\"2\\\\\\\");\\\\n$oc-blue-3: map-get($oc-blue-list, \\\\\\\"3\\\\\\\");\\\\n$oc-blue-4: map-get($oc-blue-list, \\\\\\\"4\\\\\\\");\\\\n$oc-blue-5: map-get($oc-blue-list, \\\\\\\"5\\\\\\\");\\\\n$oc-blue-6: map-get($oc-blue-list, \\\\\\\"6\\\\\\\");\\\\n$oc-blue-7: map-get($oc-blue-list, \\\\\\\"7\\\\\\\");\\\\n$oc-blue-8: map-get($oc-blue-list, \\\\\\\"8\\\\\\\");\\\\n$oc-blue-9: map-get($oc-blue-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Cyan\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-cyan-list: (\\\\n \\\\\\\"0\\\\\\\": #e3fafc,\\\\n \\\\\\\"1\\\\\\\": #c5f6fa,\\\\n \\\\\\\"2\\\\\\\": #99e9f2,\\\\n \\\\\\\"3\\\\\\\": #66d9e8,\\\\n \\\\\\\"4\\\\\\\": #3bc9db,\\\\n \\\\\\\"5\\\\\\\": #22b8cf,\\\\n \\\\\\\"6\\\\\\\": #15aabf,\\\\n \\\\\\\"7\\\\\\\": #1098ad,\\\\n \\\\\\\"8\\\\\\\": #0c8599,\\\\n \\\\\\\"9\\\\\\\": #0b7285\\\\n);\\\\n\\\\n$oc-cyan-0: map-get($oc-cyan-list, \\\\\\\"0\\\\\\\");\\\\n$oc-cyan-1: map-get($oc-cyan-list, \\\\\\\"1\\\\\\\");\\\\n$oc-cyan-2: map-get($oc-cyan-list, \\\\\\\"2\\\\\\\");\\\\n$oc-cyan-3: map-get($oc-cyan-list, \\\\\\\"3\\\\\\\");\\\\n$oc-cyan-4: map-get($oc-cyan-list, \\\\\\\"4\\\\\\\");\\\\n$oc-cyan-5: map-get($oc-cyan-list, \\\\\\\"5\\\\\\\");\\\\n$oc-cyan-6: map-get($oc-cyan-list, \\\\\\\"6\\\\\\\");\\\\n$oc-cyan-7: map-get($oc-cyan-list, \\\\\\\"7\\\\\\\");\\\\n$oc-cyan-8: map-get($oc-cyan-list, \\\\\\\"8\\\\\\\");\\\\n$oc-cyan-9: map-get($oc-cyan-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Teal\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-teal-list: (\\\\n \\\\\\\"0\\\\\\\": #e6fcf5,\\\\n \\\\\\\"1\\\\\\\": #c3fae8,\\\\n \\\\\\\"2\\\\\\\": #96f2d7,\\\\n \\\\\\\"3\\\\\\\": #63e6be,\\\\n \\\\\\\"4\\\\\\\": #38d9a9,\\\\n \\\\\\\"5\\\\\\\": #20c997,\\\\n \\\\\\\"6\\\\\\\": #12b886,\\\\n \\\\\\\"7\\\\\\\": #0ca678,\\\\n \\\\\\\"8\\\\\\\": #099268,\\\\n \\\\\\\"9\\\\\\\": #087f5b\\\\n);\\\\n\\\\n$oc-teal-0: map-get($oc-teal-list, \\\\\\\"0\\\\\\\");\\\\n$oc-teal-1: map-get($oc-teal-list, \\\\\\\"1\\\\\\\");\\\\n$oc-teal-2: map-get($oc-teal-list, \\\\\\\"2\\\\\\\");\\\\n$oc-teal-3: map-get($oc-teal-list, \\\\\\\"3\\\\\\\");\\\\n$oc-teal-4: map-get($oc-teal-list, \\\\\\\"4\\\\\\\");\\\\n$oc-teal-5: map-get($oc-teal-list, \\\\\\\"5\\\\\\\");\\\\n$oc-teal-6: map-get($oc-teal-list, \\\\\\\"6\\\\\\\");\\\\n$oc-teal-7: map-get($oc-teal-list, \\\\\\\"7\\\\\\\");\\\\n$oc-teal-8: map-get($oc-teal-list, \\\\\\\"8\\\\\\\");\\\\n$oc-teal-9: map-get($oc-teal-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Green\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-green-list: (\\\\n \\\\\\\"0\\\\\\\": #ebfbee,\\\\n \\\\\\\"1\\\\\\\": #d3f9d8,\\\\n \\\\\\\"2\\\\\\\": #b2f2bb,\\\\n \\\\\\\"3\\\\\\\": #8ce99a,\\\\n \\\\\\\"4\\\\\\\": #69db7c,\\\\n \\\\\\\"5\\\\\\\": #51cf66,\\\\n \\\\\\\"6\\\\\\\": #40c057,\\\\n \\\\\\\"7\\\\\\\": #37b24d,\\\\n \\\\\\\"8\\\\\\\": #2f9e44,\\\\n \\\\\\\"9\\\\\\\": #2b8a3e\\\\n);\\\\n\\\\n$oc-green-0: map-get($oc-green-list, \\\\\\\"0\\\\\\\");\\\\n$oc-green-1: map-get($oc-green-list, \\\\\\\"1\\\\\\\");\\\\n$oc-green-2: map-get($oc-green-list, \\\\\\\"2\\\\\\\");\\\\n$oc-green-3: map-get($oc-green-list, \\\\\\\"3\\\\\\\");\\\\n$oc-green-4: map-get($oc-green-list, \\\\\\\"4\\\\\\\");\\\\n$oc-green-5: map-get($oc-green-list, \\\\\\\"5\\\\\\\");\\\\n$oc-green-6: map-get($oc-green-list, \\\\\\\"6\\\\\\\");\\\\n$oc-green-7: map-get($oc-green-list, \\\\\\\"7\\\\\\\");\\\\n$oc-green-8: map-get($oc-green-list, \\\\\\\"8\\\\\\\");\\\\n$oc-green-9: map-get($oc-green-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Lime\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-lime-list: (\\\\n \\\\\\\"0\\\\\\\": #f4fce3,\\\\n \\\\\\\"1\\\\\\\": #e9fac8,\\\\n \\\\\\\"2\\\\\\\": #d8f5a2,\\\\n \\\\\\\"3\\\\\\\": #c0eb75,\\\\n \\\\\\\"4\\\\\\\": #a9e34b,\\\\n \\\\\\\"5\\\\\\\": #94d82d,\\\\n \\\\\\\"6\\\\\\\": #82c91e,\\\\n \\\\\\\"7\\\\\\\": #74b816,\\\\n \\\\\\\"8\\\\\\\": #66a80f,\\\\n \\\\\\\"9\\\\\\\": #5c940d\\\\n);\\\\n\\\\n$oc-lime-0: map-get($oc-lime-list, \\\\\\\"0\\\\\\\");\\\\n$oc-lime-1: map-get($oc-lime-list, \\\\\\\"1\\\\\\\");\\\\n$oc-lime-2: map-get($oc-lime-list, \\\\\\\"2\\\\\\\");\\\\n$oc-lime-3: map-get($oc-lime-list, \\\\\\\"3\\\\\\\");\\\\n$oc-lime-4: map-get($oc-lime-list, \\\\\\\"4\\\\\\\");\\\\n$oc-lime-5: map-get($oc-lime-list, \\\\\\\"5\\\\\\\");\\\\n$oc-lime-6: map-get($oc-lime-list, \\\\\\\"6\\\\\\\");\\\\n$oc-lime-7: map-get($oc-lime-list, \\\\\\\"7\\\\\\\");\\\\n$oc-lime-8: map-get($oc-lime-list, \\\\\\\"8\\\\\\\");\\\\n$oc-lime-9: map-get($oc-lime-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Yellow\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-yellow-list: (\\\\n \\\\\\\"0\\\\\\\": #fff9db,\\\\n \\\\\\\"1\\\\\\\": #fff3bf,\\\\n \\\\\\\"2\\\\\\\": #ffec99,\\\\n \\\\\\\"3\\\\\\\": #ffe066,\\\\n \\\\\\\"4\\\\\\\": #ffd43b,\\\\n \\\\\\\"5\\\\\\\": #fcc419,\\\\n \\\\\\\"6\\\\\\\": #fab005,\\\\n \\\\\\\"7\\\\\\\": #f59f00,\\\\n \\\\\\\"8\\\\\\\": #f08c00,\\\\n \\\\\\\"9\\\\\\\": #e67700\\\\n);\\\\n\\\\n$oc-yellow-0: map-get($oc-yellow-list, \\\\\\\"0\\\\\\\");\\\\n$oc-yellow-1: map-get($oc-yellow-list, \\\\\\\"1\\\\\\\");\\\\n$oc-yellow-2: map-get($oc-yellow-list, \\\\\\\"2\\\\\\\");\\\\n$oc-yellow-3: map-get($oc-yellow-list, \\\\\\\"3\\\\\\\");\\\\n$oc-yellow-4: map-get($oc-yellow-list, \\\\\\\"4\\\\\\\");\\\\n$oc-yellow-5: map-get($oc-yellow-list, \\\\\\\"5\\\\\\\");\\\\n$oc-yellow-6: map-get($oc-yellow-list, \\\\\\\"6\\\\\\\");\\\\n$oc-yellow-7: map-get($oc-yellow-list, \\\\\\\"7\\\\\\\");\\\\n$oc-yellow-8: map-get($oc-yellow-list, \\\\\\\"8\\\\\\\");\\\\n$oc-yellow-9: map-get($oc-yellow-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Orange\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-orange-list: (\\\\n \\\\\\\"0\\\\\\\": #fff4e6,\\\\n \\\\\\\"1\\\\\\\": #ffe8cc,\\\\n \\\\\\\"2\\\\\\\": #ffd8a8,\\\\n \\\\\\\"3\\\\\\\": #ffc078,\\\\n \\\\\\\"4\\\\\\\": #ffa94d,\\\\n \\\\\\\"5\\\\\\\": #ff922b,\\\\n \\\\\\\"6\\\\\\\": #fd7e14,\\\\n \\\\\\\"7\\\\\\\": #f76707,\\\\n \\\\\\\"8\\\\\\\": #e8590c,\\\\n \\\\\\\"9\\\\\\\": #d9480f\\\\n);\\\\n\\\\n$oc-orange-0: map-get($oc-orange-list, \\\\\\\"0\\\\\\\");\\\\n$oc-orange-1: map-get($oc-orange-list, \\\\\\\"1\\\\\\\");\\\\n$oc-orange-2: map-get($oc-orange-list, \\\\\\\"2\\\\\\\");\\\\n$oc-orange-3: map-get($oc-orange-list, \\\\\\\"3\\\\\\\");\\\\n$oc-orange-4: map-get($oc-orange-list, \\\\\\\"4\\\\\\\");\\\\n$oc-orange-5: map-get($oc-orange-list, \\\\\\\"5\\\\\\\");\\\\n$oc-orange-6: map-get($oc-orange-list, \\\\\\\"6\\\\\\\");\\\\n$oc-orange-7: map-get($oc-orange-list, \\\\\\\"7\\\\\\\");\\\\n$oc-orange-8: map-get($oc-orange-list, \\\\\\\"8\\\\\\\");\\\\n$oc-orange-9: map-get($oc-orange-list, \\\\\\\"9\\\\\\\");\\\\n\\\\n\\\\n// Color list\\\\n// ───────────────────────────────────\\\\n\\\\n$oc-color-spectrum: 9;\\\\n\\\\n$oc-color-list: (\\\\n $oc-gray-list: \\\\\\\"gray\\\\\\\",\\\\n $oc-red-list: \\\\\\\"red\\\\\\\",\\\\n $oc-pink-list: \\\\\\\"pink\\\\\\\",\\\\n $oc-grape-list: \\\\\\\"grape\\\\\\\",\\\\n $oc-violet-list: \\\\\\\"violet\\\\\\\",\\\\n $oc-indigo-list: \\\\\\\"indigo\\\\\\\",\\\\n $oc-blue-list: \\\\\\\"blue\\\\\\\",\\\\n $oc-cyan-list: \\\\\\\"cyan\\\\\\\",\\\\n $oc-teal-list: \\\\\\\"teal\\\\\\\",\\\\n $oc-green-list: \\\\\\\"green\\\\\\\",\\\\n $oc-lime-list: \\\\\\\"lime\\\\\\\",\\\\n $oc-yellow-list: \\\\\\\"yellow\\\\\\\",\\\\n $oc-orange-list: \\\\\\\"orange\\\\\\\"\\\\n);\\\\n\\\"],\\\"sourceRoot\\\":\\\"\\\"}]);\\n// Exports\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL25vZGVfbW9kdWxlcy9wb3N0Y3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1swXS51c2VbMl0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvZGlzdC9janMuanMhLi4vLi4vY3NzL3N0eWxlcy5zY3NzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUM4SDtBQUNqQjtBQUNPO0FBQ3BILDRDQUE0Qyw2akJBQWtSO0FBQzlULDRDQUE0QyxpbUJBQXFTO0FBQ2pWLDhCQUE4Qix1R0FBMkIsQ0FBQyxnSEFBcUM7QUFDL0YseUNBQXlDLDBHQUErQjtBQUN4RSx5Q0FBeUMsMEdBQStCO0FBQ3hFO0FBQ0EsbURBQW1ELGdEQUFnRCxHQUFHLGFBQWEsZ0RBQWdELEdBQUcsaUJBQWlCLHlCQUF5QiwyQ0FBMkMsd0NBQXdDLDZCQUE2Qiw2QkFBNkIsNkJBQTZCLDhDQUE4QyxtQ0FBbUMscUVBQXFFLHFDQUFxQywrQkFBK0IscUNBQXFDLGdDQUFnQyw4QkFBOEIsa0NBQWtDLG9DQUFvQyxpQ0FBaUMsaURBQWlELGdDQUFnQywwQkFBMEIsa0RBQWtELDhCQUE4Qix3Q0FBd0MsZ0NBQWdDLHlDQUF5Qyx1Q0FBdUMscUNBQXFDLHNDQUFzQyxvQ0FBb0Msc0NBQXNDLG1EQUFtRCw0QkFBNEIsa0NBQWtDLEdBQUcsMkJBQTJCLHdCQUF3QixHQUFHLHVEQUF1RCxxQkFBcUIsR0FBRywyQkFBMkIsbURBQW1ELDJDQUEyQyx3Q0FBd0MsNkJBQTZCLDZCQUE2QiwwQkFBMEIsOENBQThDLG1DQUFtQyxxRUFBcUUscUNBQXFDLCtCQUErQixxQ0FBcUMsZ0NBQWdDLDhCQUE4QixrQ0FBa0Msb0NBQW9DLGlDQUFpQyw4Q0FBOEMsZ0NBQWdDLDBCQUEwQiwrQ0FBK0MsOEJBQThCLHFDQUFxQyxnQ0FBZ0MseUNBQXlDLHNDQUFzQyxrREFBa0Qsa0NBQWtDLEdBQUcsV0FBVyx1QkFBdUIs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QVUsV0FBVyxNQUFNLFFBQVEsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsTUFBTSxNQUFNLFVBQVUsVUFBVSxNQUFNLFFBQVEsVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sVUFBVSxXQUFXLE1BQU0sTUFBTSxVQUFVLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxNQUFNLE9BQU8sVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsTUFBTSxNQUFNLFVBQVUsV0FBVyxVQUFVLFVBQVUsTUFBTSxNQUFNLFVBQVUsWUFBWSxXQUFXLE1BQU0sT0FBTyxXQUFXLFdBQVcsTUFBTSxPQUFPLFdBQVcsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxNQUFNLE9BQU8sV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sTUFBTSxXQUFXLFdBQVcsV0FBVyxNQUFNLE1BQU0sVUFBVSxVQUFVLFVBQVUsVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLE1BQU0sV0FBVyxVQUFVLFdBQVcsV0FBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFVBQVUsVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLE1BQU0sTUFBTSxVQUFVLFVBQVUsVUFBVSxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsTUFBTSxNQUFNLFdBQVcsTUFBTSxNQUFNLFVBQVUsV0FBVyxNQUFNLE1BQU0sVUFBVSxXQUFXLFdBQVcsVUFBVSxNQUFNLEtBQUssVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sS0FBSyxVQUFVLFdBQVcsTUFBTSxLQUFLLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssV0FBVyxVQUFVLFdBQVcsVUFBVSxXQUFXLFVBQVUsV0FBVyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLEtBQUssS0FBSyxXQUFXLFVBQVUsS0FBSyxLQUFLLFdBQVcsVUFBVSxLQUFLLEtBQUssV0FBVyxLQUFLLEtBQUssVUFBVSxVQUFVLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsVUFBVSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsS0FBSyxLQUFLLFdBQVcsV0FBVyxVQUFVLFVBQVUsV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsV0FBVyxXQUFXLEtBQUssS0FBSyxVQUFVLFVBQVUsS0FBSyxLQUFLLFdBQVcsS0FBSyxLQUFLLFVBQVUsV0FBVyxXQUFXLFdBQVcsS0FBSyxNQUFNLFVBQVUsV0FBVyxVQUFVLFdBQVcsV0FBVyxXQUFXLEtBQUssTUFBTSxVQUFVLE1BQU0sTUFBTSxXQUFXLFVBQVUsT0FBTyxNQUFNLFdBQVcsTUFBTSxNQUFNLFdBQVcsVUFBVSxVQUFVLFVBQVUsV0FBVyxNQUFNLE1BQU0sV0FBVyxVQUFVLFVBQVUsVUFBVSxXQUFXLE1BQU0sTUFBTSxXQUFXLE1BQU0sTUFBTSxVQUFVLFdBQVcsTUFBTSxPQUFPLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLE1BQU0sT0FBTyxXQUFXLE1BQU0sT0FBTyxVQUFVLFdBQVcsTUFBTSxNQUFNLE9B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QUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELDRRQUE0USw4Q0FBOEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0UUFBNFEsOENBQThDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDhRQUE4USxnREFBZ0QsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsOENBQThDLDhDQUE4Qyw4Q0FBOEMsNFFBQTRRLDhDQUE4Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0Qyw0Q0FBNEMsNENBQTRDLDRDQUE0QyxnUkFBZ1Isa0RBQWtELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdSQUFnUixrREFBa0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QsZ0RBQWdELGdEQUFnRCxnREFBZ0QseUZBQXlGLHVkQUF1ZCxxQkFBcUI7QUFDdnczQztBQUNBLGlFQUFlLHVCQUF1QixFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2Nzcy9zdHlsZXMuc2Nzcz8wZDU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0dFVF9VUkxfSU1QT1JUX19fIGZyb20gXCIuLi9wYWNrYWdlcy9leGNhbGlkcmF3L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9nZXRVcmwuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyA9IG5ldyBVUkwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHdpZHRoPVxcXCIyOTIuNFxcXCIgaGVpZ2h0PVxcXCIyOTIuNFxcXCIgdmlld0JveD1cXFwiMCAwIDI5MiAyOTJcXFwiPjxwYXRoIGQ9XFxcIk0yODcgMTk3TDE1OSA2OWMtNC0zLTgtNS0xMy01cy05IDItMTMgNUw1IDE5N2MtMyA0LTUgOC01IDEzczIgOSA1IDEzYzQgNCA4IDUgMTMgNWgyNTZjNSAwIDktMSAxMy01czUtOCA1LTEzLTEtOS01LTEzelxcXCIvPjwvc3ZnPlwiLCBpbXBvcnQubWV0YS51cmwpO1xudmFyIF9fX0NTU19MT0FERVJfVVJMX0lNUE9SVF8xX19fID0gbmV3IFVSTChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI5Mi40XFxcIiBoZWlnaHQ9XFxcIjI5Mi40XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjkyIDI5MlxcXCI+PHBhdGggZmlsbD1cXFwiJTIzY2VkNGRhXFxcIiBkPVxcXCJNMjg3IDE5N0wxNTkgNjljLTQtMy04LTUtMTMtNXMtOSAyLTEzIDVMNSAxOTdjLTMgNC01IDgtNSAxM3MyIDkgNSAxM2M0IDQgOCA1IDEzIDVoMjU2YzUgMCA5LTEgMTMtNXM1LTggNS0xMy0xLTktNS0xM3pcXFwiLz48L3N2Zz5cIiwgaW1wb3J0Lm1ldGEudXJsKTtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbnZhciBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fID0gX19fQ1NTX0xPQURFUl9HRVRfVVJMX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX1VSTF9JTVBPUlRfMF9fXyk7XG52YXIgX19fQ1NTX0xPQURFUl9VUkxfUkVQTEFDRU1FTlRfMV9fXyA9IF9fX0NTU19MT0FERVJfR0VUX1VSTF9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9VUkxfSU1QT1JUXzFfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogaW52ZXJ0KDkzJSkgaHVlLXJvdGF0ZSgxODBkZWcpO1xcbn1cXG5cXG46ZXhwb3J0IHtcXG4gIHRoZW1lRmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxufVxcblxcbi5leGNhbGlkcmF3IHtcXG4gIC0tdGhlbWUtZmlsdGVyOiBub25lO1xcbiAgLS1idXR0b24tZGVzdHJ1Y3RpdmUtYmctY29sb3I6ICNmZmUzZTM7XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI2M5MmEyYTtcXG4gIC0tYnV0dG9uLWdyYXktMTogI2U5ZWNlZjtcXG4gIC0tYnV0dG9uLWdyYXktMjogI2NlZDRkYTtcXG4gIC0tYnV0dG9uLWdyYXktMzogI2FkYjViZDtcXG4gIC0tYnV0dG9uLXNwZWNpYWwtYWN0aXZlLWJnLWNvbG9yOiAjZWJmYmVlO1xcbiAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjODY4ZTk2O1xcbiAgLS1kcm9wZG93bi1pY29uOiB1cmwoXCIgKyBfX19DU1NfTE9BREVSX1VSTF9SRVBMQUNFTUVOVF8wX19fICsgXCIpO1xcbiAgLS1mb2N1cy1oaWdobGlnaHQtY29sb3I6ICNhNWQ4ZmY7XFxuICAtLWljb24tZmlsbC1jb2xvcjogIzAwMDAwMDtcXG4gIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjMmI4YTNlO1xcbiAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjZmZmZmZmO1xcbiAgLS1pbnB1dC1iZy1jb2xvcjogI2ZmZmZmZjtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjY2VkNGRhO1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogI2YxZjNmNTtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICM0OTUwNTc7XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI2FkYjViZDtcXG4gIC0tbGluay1jb2xvcjogIzFjN2VkNjtcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjg4KTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICNmZmZmZmY7XFxuICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogI2YxZjNmNTtcXG4gIC0tcG9wdXAtdGV4dC1jb2xvcjogIzAwMDAwMDtcXG4gIC0tcG9wdXAtdGV4dC1pbnZlcnRlZC1jb2xvcjogI2ZmZmZmZjtcXG4gIC0tc2FiOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XFxuICAtLXNhbDogZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTtcXG4gIC0tc2FyOiBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KTtcXG4gIC0tc2F0OiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCk7XFxuICAtLXNlbGVjdC1oaWdobGlnaHQtY29sb3I6ICMzMzlhZjA7XFxuICAtLXNoYWRvdy1pc2xhbmQ6IDAgMXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xcbiAgLS1zcGFjZS1mYWN0b3I6IDAuMjVyZW07XFxuICAtLXRleHQtcHJpbWFyeS1jb2xvcjogIzM0M2E0MDtcXG59XFxuLmV4Y2FsaWRyYXcudGhlbWUtLWRhcmsge1xcbiAgYmFja2dyb3VuZDogIzAwMDAwMDtcXG59XFxuLmV4Y2FsaWRyYXcudGhlbWUtLWRhcmsudGhlbWUtLWRhcmstYmFja2dyb3VuZC1ub25lIHtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIHtcXG4gIC0tdGhlbWUtZmlsdGVyOiBpbnZlcnQoOTMlKSBodWUtcm90YXRlKDE4MGRlZyk7XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1iZy1jb2xvcjogIzVhMDAwMDtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWNvbG9yOiAjZmZhOGE4O1xcbiAgLS1idXR0b24tZ3JheS0xOiAjMzYzNjM2O1xcbiAgLS1idXR0b24tZ3JheS0yOiAjMjcyNzI3O1xcbiAgLS1idXR0b24tZ3JheS0zOiAjMjIyO1xcbiAgLS1idXR0b24tc3BlY2lhbC1hY3RpdmUtYmctY29sb3I6ICMyMDQ2MjQ7XFxuICAtLWRpYWxvZy1ib3JkZXItY29sb3I6ICMyMTI1Mjk7XFxuICAtLWRyb3Bkb3duLWljb246IHVybChcIiArIF9fX0NTU19MT0FERVJfVVJMX1JFUExBQ0VNRU5UXzFfX18gKyBcIik7XFxuICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogIzIyOGJlNjtcXG4gIC0taWNvbi1maWxsLWNvbG9yOiAjY2VkNGRhO1xcbiAgLS1pY29uLWdyZWVuLWZpbGwtY29sb3I6ICM2OWRiN2M7XFxuICAtLWRlZmF1bHQtYmctY29sb3I6ICMxMjEyMTI7XFxuICAtLWlucHV0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgLS1pbnB1dC1ib3JkZXItY29sb3I6ICMyZTJlMmU7XFxuICAtLWlucHV0LWhvdmVyLWJnLWNvbG9yOiAjMTgxODE4O1xcbiAgLS1pbnB1dC1sYWJlbC1jb2xvcjogI2U5ZWNlZjtcXG4gIC0taXNsYW5kLWJnLWNvbG9yOiByZ2JhKDMwLCAzMCwgMzAsIDAuOTgpO1xcbiAgLS1rZXliaW5kaW5nLWNvbG9yOiAjODY4ZTk2O1xcbiAgLS1saW5rLWNvbG9yOiAjNGRhYmY3O1xcbiAgLS1vdmVybGF5LWJnLWNvbG9yOiByZ2JhKDUyLCA1OCwgNjQsIDAuMTIpO1xcbiAgLS1wb3B1cC1iZy1jb2xvcjogIzJjMmMyYztcXG4gIC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yOiAjMjIyO1xcbiAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjY2VkNGRhO1xcbiAgLS1wb3B1cC10ZXh0LWludmVydGVkLWNvbG9yOiAjMmMyYzJjO1xcbiAgLS1zZWxlY3QtaGlnaGxpZ2h0LWNvbG9yOiAjNGRhYmY3O1xcbiAgLS1zaGFkb3ctaXNsYW5kOiAwIDFweCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xcbiAgLS10ZXh0LXByaW1hcnktY29sb3I6ICNjZWQ0ZGE7XFxufVxcblxcbjpyb290IHtcXG4gIC0tekluZGV4LWNhbnZhczogMTtcXG4gIC0tekluZGV4LXd5c2l3eWc6IDI7XFxuICAtLXpJbmRleC1sYXllclVJOiAzO1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXc6Zm9jdXMge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgYSB7XFxuICBmb250LXdlaWdodDogNTAwO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBhOmhvdmVyIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbn1cXG4uZXhjYWxpZHJhdyBjYW52YXMge1xcbiAgdG91Y2gtYWN0aW9uOiBub25lO1xcbiAgaW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7XFxuICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7XFxuICB6LWluZGV4OiB2YXIoLS16SW5kZXgtY2FudmFzKTtcXG59XFxuLmV4Y2FsaWRyYXdfX2NhbnZhcyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxufVxcbi5leGNhbGlkcmF3LnRoZW1lLS1kYXJrIGNhbnZhcyB7XFxuICBmaWx0ZXI6IHZhcigtLXRoZW1lLWZpbHRlcik7XFxufVxcbi5leGNhbGlkcmF3IC5GaXhlZFNpZGVDb250YWluZXIge1xcbiAgcGFkZGluZy10b3A6IHZhcigtLXNhdCwgMCk7XFxuICBwYWRkaW5nLXJpZ2h0OiB2YXIoLS1zYXIsIDApO1xcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICBwYWRkaW5nLWxlZnQ6IHZhcigtLXNhbCwgMCk7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbFJvdyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBoMyxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gbGVnZW5kLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuY29udHJvbC1sYWJlbCB7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIG1hcmdpbi1ib3R0b206IDAuMzMzcmVtO1xcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmNvbnRyb2wtbGFiZWwgaW5wdXQge1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIGgzOmZpcnN0LWNoaWxkLFxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQ6Zmlyc3QtY2hpbGQsXFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5jb250cm9sLWxhYmVsOmZpcnN0LWNoaWxkIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBsZWdlbmQge1xcbiAgcGFkZGluZzogMDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5pY29uU2VsZWN0TGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCB7XFxuICBmbGV4LXdyYXA6IHdyYXA7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxuICBmb250LXNpemU6IDAuNzVyZW07XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCBpbnB1dFt0eXBlPXJhZGlvXSxcXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgaW5wdXRbdHlwZT1idXR0b25dIHtcXG4gIG9wYWNpdHk6IDA7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5pY29uUm93IHtcXG4gIG1hcmdpbi10b3A6IDhweDtcXG59XFxuLmV4Y2FsaWRyYXcgLnBhbmVsQ29sdW1uIC5idXR0b25MaXN0IC5Ub29sSWNvbiB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4taW5saW5lLWVuZDogOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmZvY3VzIHtcXG4gIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb246YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTMpO1xcbn1cXG4uZXhjYWxpZHJhdyAucGFuZWxDb2x1bW4gLmJ1dHRvbkxpc3QgLlRvb2xJY29uOmRpc2FibGVkIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiAuYnV0dG9uTGlzdCAuVG9vbEljb25fX2ljb24ge1xcbiAgd2lkdGg6IDI4cHg7XFxuICBoZWlnaHQ6IDI4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5wYW5lbENvbHVtbiBmaWVsZHNldCB7XFxuICBtYXJnaW46IDA7XFxuICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gIHBhZGRpbmc6IDA7XFxuICBib3JkZXI6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5kaXZpZGVyIHtcXG4gIHdpZHRoOiAxcHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmO1xcbiAgbWFyZ2luOiAxcHg7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmZvY3VzLXdpdGhpbixcXG4uZXhjYWxpZHJhdyBpbnB1dDpmb2N1cyB7XFxuICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCB2YXIoLS1mb2N1cy1oaWdobGlnaHQtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b24sXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwge1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gIGJvcmRlcjogMDtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIG1hcmdpbjogMC4xMjVyZW0gMDtcXG4gIHBhZGRpbmc6IDAuMjVyZW07XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246Zm9jdXMsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWw6Zm9jdXMge1xcbiAgb3V0bGluZTogdHJhbnNwYXJlbnQ7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG59XFxuLmV4Y2FsaWRyYXcgYnV0dG9uOmhvdmVyLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmhvdmVyIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyBidXR0b246YWN0aXZlLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG59XFxuLmV4Y2FsaWRyYXcgYnV0dG9uOmRpc2FibGVkLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsOmRpc2FibGVkIHtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcbi5leGNhbGlkcmF3IC5hY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuYWN0aXZlOmhvdmVyLFxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0IGxhYmVsLmFjdGl2ZTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmFjdGl2ZTphY3RpdmUsXFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QgbGFiZWwuYWN0aXZlOmFjdGl2ZSB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0zKTtcXG59XFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QuYnV0dG9uTGlzdEljb24gbGFiZWwge1xcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcbi5leGNhbGlkcmF3IC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIGxhYmVsIHN2ZyB7XFxuICB3aWR0aDogMzZweDtcXG4gIGhlaWdodDogMTRweDtcXG4gIHBhZGRpbmc6IDJweDtcXG4gIG9wYWNpdHk6IDAuNjtcXG59XFxuLmV4Y2FsaWRyYXcgLmJ1dHRvbkxpc3QuYnV0dG9uTGlzdEljb24gbGFiZWwuYWN0aXZlIHN2ZyB7XFxuICBvcGFjaXR5OiAxO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLXRvcC1iYXIge1xcbiAgei1pbmRleDogdmFyKC0tekluZGV4LWxheWVyVUkpO1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLWJvdHRvbS1iYXIge1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgLS1iYXItcGFkZGluZzogY2FsYyg0ICogdmFyKC0tc3BhY2UtZmFjdG9yKSk7XFxuICBwYWRkaW5nLXRvcDogbWF4KHZhcigtLWJhci1wYWRkaW5nKSwgdmFyKC0tc2F0LDApKTtcXG4gIHBhZGRpbmctcmlnaHQ6IHZhcigtLXNhciwgMCk7XFxuICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tc2FiLCAwKTtcXG4gIHBhZGRpbmctbGVmdDogdmFyKC0tc2FsLCAwKTtcXG4gIHotaW5kZXg6IDQ7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtYm90dG9tLWJhciA+IC5Jc2xhbmQge1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBtaW4td2lkdGg6IDEwMCU7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgbWF4LWhlaWdodDogMTAwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtYm90dG9tLWJhciA+IC5Jc2xhbmQgLnBhbmVsQ29sdW1uIHtcXG4gIHBhZGRpbmc6IDhweCA4cHggMCA4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtdG9vbGJhciB7XFxuICB3aWR0aDogMTAwJTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtdG9vbGJhci1jb250ZW50IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgcGFkZGluZzogOHB4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1vYmlsZS1tZW51IHtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgb3ZlcmZsb3cteDogdmlzaWJsZTtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgbWFyZ2luLWJvdHRvbTogdmFyKC0tYmFyLXBhZGRpbmcpO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnUge1xcbiAgZGlzcGxheTogZ3JpZDtcXG4gIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfdG9wIHtcXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtYXgtY29udGVudCBhdXRvO1xcbiAgZ3JpZC1nYXA6IDRweDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG59XFxuLmV4Y2FsaWRyYXcgLmxheWVyLXVpX193cmFwcGVyOm5vdCguZGlzYWJsZS1wb2ludGVyRXZlbnRzKSAuQXBwLW1lbnVfdG9wID4gKiB7XFxuICBwb2ludGVyLWV2ZW50czogYWxsO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfdG9wID4gKjpmaXJzdC1jaGlsZCB7XFxuICBqdXN0aWZ5LXNlbGY6IGZsZXgtc3RhcnQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV90b3AgPiAqOmxhc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICBib3R0b206IDA7XFxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG8gbWluLWNvbnRlbnQ7XFxuICBncmlkLWdhcDogMTVweDtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgcG9pbnRlci1ldmVudHM6IG5vbmUgIWltcG9ydGFudDtcXG4gIHotaW5kZXg6IDEwMDtcXG59XFxuOnJvb3RbZGlyPWx0cl0gLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2JvdHRvbSB7XFxuICBsZWZ0OiAwLjI1cmVtO1xcbn1cXG46cm9vdFtkaXI9cnRsXSAuZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tIHtcXG4gIHJpZ2h0OiAwLjI1cmVtO1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tLS10cmFuc2l0aW9uLWxlZnQgc2VjdGlvbiB7XFxuICB3aWR0aDogMTg1cHg7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20gc2VjdGlvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbn1cXG4uZXhjYWxpZHJhdyAuQXBwLW1lbnVfYm90dG9tID4gKjpmaXJzdC1jaGlsZCB7XFxuICBqdXN0aWZ5LXNlbGY6IGZsZXgtc3RhcnQ7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9ib3R0b20gPiAqOmxhc3QtY2hpbGQge1xcbiAganVzdGlmeS1zZWxmOiBmbGV4LWVuZDtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X2xlZnQge1xcbiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAxZnIgYXV0byAxZnI7XFxuICBoZWlnaHQ6IDEwMCU7XFxufVxcbi5leGNhbGlkcmF3IC5BcHAtbWVudV9yaWdodCB7XFxuICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuLmV4Y2FsaWRyYXcgLkFwcC1tZW51X19sZWZ0IHtcXG4gIG92ZXJmbG93LXk6IGF1dG87XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Qge1xcbiAgaGVpZ2h0OiAxLjVyZW07XFxuICBwYWRkaW5nOiAwO1xcbiAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuNXJlbTtcXG4gIHBhZGRpbmctaW5saW5lLWVuZDogMS41cmVtO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIGFwcGVhcmFuY2U6IG5vbmU7XFxuICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1kcm9wZG93bi1pY29uKTtcXG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAwLjdyZW0gdG9wIDUwJSwgMCAwO1xcbiAgYmFja2dyb3VuZC1zaXplOiAwLjY1ZW0gYXV0bywgMTAwJTtcXG59XFxuOnJvb3RbZGlyPXJ0bF0gLmV4Y2FsaWRyYXcgLmRyb3Bkb3duLXNlbGVjdCB7XFxuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IDAuN3JlbSB0b3AgNTAlLCAwIDA7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6Zm9jdXMge1xcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6aG92ZXIge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxufVxcbi5leGNhbGlkcmF3IC5kcm9wZG93bi1zZWxlY3Q6YWN0aXZlIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbn1cXG4uZXhjYWxpZHJhdyAuekluZGV4QnV0dG9uIHtcXG4gIG1hcmdpbjogMDtcXG4gIG1hcmdpbi1pbmxpbmUtZW5kOiA4cHg7XFxuICBwYWRkaW5nOiA1cHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuLmV4Y2FsaWRyYXcgLnpJbmRleEJ1dHRvbiBzdmcge1xcbiAgd2lkdGg6IDE4cHg7XFxuICBoZWlnaHQ6IDE4cHg7XFxufVxcbi5leGNhbGlkcmF3IC5zY3JvbGwtYmFjay10by1jb250ZW50IHtcXG4gIGNvbG9yOiB2YXIoLS1wb3B1cC10ZXh0LWNvbG9yKTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGxlZnQ6IDUwJTtcXG4gIGJvdHRvbTogMzBweDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gIHBhZGRpbmc6IDEwcHggMjBweDtcXG59XFxuLmV4Y2FsaWRyYXcgLmhlbHAtaWNvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgZmlsbDogIzg2OGU5NjtcXG4gIHBhZGRpbmc6IDA7XFxuICBtYXJnaW46IDA7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IC5oZWxwLWljb24gc3ZnIHtcXG4gIHdpZHRoOiAxLjVyZW07XFxuICBoZWlnaHQ6IDEuNXJlbTtcXG59XFxuLmV4Y2FsaWRyYXcgLmhlbHAtaWNvbjpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiBub25lO1xcbn1cXG4uZXhjYWxpZHJhdyAucmVzZXQtem9vbS1idXR0b24ge1xcbiAgcGFkZGluZzogMC4yZW07XFxuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgZm9udC1mYW1pbHk6IHZhcigtLXVpLWZvbnQpO1xcbn1cXG4uZXhjYWxpZHJhdyAudW5kby1yZWRvLWJ1dHRvbnMge1xcbiAgZGlzcGxheTogZ3JpZDtcXG4gIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XFxuICBnYXA6IDAuNGVtO1xcbiAgbWFyZ2luLXRvcDogYXV0bztcXG4gIG1hcmdpbi1ib3R0b206IGF1dG87XFxuICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwLjZlbTtcXG59XFxuLmV4Y2FsaWRyYXctLW1vYmlsZS5leGNhbGlkcmF3IGFzaWRlIHtcXG4gIGRpc3BsYXk6IG5vbmU7XFxufVxcbi5leGNhbGlkcmF3LS1tb2JpbGUuZXhjYWxpZHJhdyAuc2Nyb2xsLWJhY2stdG8tY29udGVudCB7XFxuICBib3R0b206IGNhbGMoODBweCArIHZhcigtLXNhYiwgMCkpO1xcbiAgei1pbmRleDogLTE7XFxufVxcblxcbjpyb290W2Rpcj1ydGxdIC5leGNhbGlkcmF3IC5ydGwtbWlycm9yIHtcXG4gIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcXG59XFxuLmV4Y2FsaWRyYXcgLnplbi1tb2RlLXZpc2liaWxpdHkge1xcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gIG9wYWNpdHk6IDE7XFxuICBoZWlnaHQ6IGF1dG87XFxuICB3aWR0aDogYXV0bztcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cztcXG59XFxuLmV4Y2FsaWRyYXcgLnplbi1tb2RlLXZpc2liaWxpdHkuemVuLW1vZGUtdmlzaWJpbGl0eS0taGlkZGVuIHtcXG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcXG4gIG9wYWNpdHk6IDA7XFxuICBoZWlnaHQ6IDA7XFxuICB3aWR0aDogMDtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cztcXG59XFxuLmV4Y2FsaWRyYXcgLmRpc2FibGUtcG9pbnRlckV2ZW50cyB7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbn1cXG4uZXhjYWxpZHJhdy5leGNhbGlkcmF3LS12aWV3LW1vZGUgLkFwcC1tZW51IHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxufVxcbi5leGNhbGlkcmF3IGlucHV0W3R5cGU9dGV4dF0sXFxuLmV4Y2FsaWRyYXcgdGV4dGFyZWE6bm90KC5leGNhbGlkcmF3LXd5c2l3eWcpIHtcXG4gIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1pbnB1dC1ib3JkZXItY29sb3IpO1xcbiAgcGFkZGluZzogMC43NXJlbTtcXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1zcGFjZS1mYWN0b3IpO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtYmctY29sb3IpO1xcbn1cXG4uZXhjYWxpZHJhdyBpbnB1dFt0eXBlPXRleHRdOm5vdCg6Zm9jdXMpOmhvdmVyLFxcbi5leGNhbGlkcmF3IHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKTpub3QoOmZvY3VzKTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pbnB1dC1ob3Zlci1iZy1jb2xvcik7XFxufVxcbi5leGNhbGlkcmF3IGlucHV0W3R5cGU9dGV4dF06Zm9jdXMsXFxuLmV4Y2FsaWRyYXcgdGV4dGFyZWE6bm90KC5leGNhbGlkcmF3LXd5c2l3eWcpOmZvY3VzIHtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG59XFxuQG1lZGlhIHByaW50IHtcXG4gIC5leGNhbGlkcmF3IC5BcHAtYm90dG9tLWJhcixcXG4uZXhjYWxpZHJhdyAuRml4ZWRTaWRlQ29udGFpbmVyLFxcbi5leGNhbGlkcmF3IC5sYXllci11aV9fd3JhcHBlciB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxufVxcblxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IHtcXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xcbiAgcGFkZGluZzogMjBweCAwO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgdXNlci1zZWxlY3Q6IHRleHQ7XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5FcnJvclNwbGFzaC1tZXNzYWdlQ29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgcGFkZGluZzogNDBweDtcXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmUzZTM7XFxuICBib3JkZXI6IDNweCBzb2xpZCAjYzkyYTJhO1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtcGFyYWdyYXBoIHtcXG4gIG1hcmdpbjogMTVweCAwO1xcbiAgbWF4LXdpZHRoOiA2MDBweDtcXG59XFxuLkVycm9yU3BsYXNoLmV4Y2FsaWRyYXcgLkVycm9yU3BsYXNoLXBhcmFncmFwaC5hbGlnbi1jZW50ZXIge1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuYmlnZ2VyLFxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5iaWdnZXIgYnV0dG9uIHtcXG4gIGZvbnQtc2l6ZTogMS4xZW07XFxufVxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5zbWFsbGVyLFxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IC5zbWFsbGVyIGJ1dHRvbiB7XFxuICBmb250LXNpemU6IDAuOWVtO1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtZGV0YWlscyB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xcbn1cXG4uRXJyb3JTcGxhc2guZXhjYWxpZHJhdyAuRXJyb3JTcGxhc2gtZGV0YWlscyB0ZXh0YXJlYSB7XFxuICB3aWR0aDogMTAwJTtcXG4gIG1hcmdpbjogMTBweCAwO1xcbiAgZm9udC1mYW1pbHk6IFxcXCJDYXNjYWRpYVxcXCI7XFxuICBmb250LXNpemU6IDAuOGVtO1xcbn1cIiwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jc3MvdmFyaWFibGVzLm1vZHVsZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi9jc3Mvc3R5bGVzLnNjc3NcIixcIndlYnBhY2s6Ly8uLy4uLy4uL2Nzcy90aGVtZS5zY3NzXCIsXCJ3ZWJwYWNrOi8vLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvb3Blbi1jb2xvci9vcGVuLWNvbG9yLnNjc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBVUE7RUFDRSwyQ0FBQTtBQ1RGOztBRFFBO0VBQ0UsMkNBQUE7QUNMRjs7QUNIQTtFQUNFLG9CQUFBO0VBQ0Esc0NBQUE7RUFDQSxtQ0FBQTtFQUNBLHdCQUFBO0VBQ0Esd0JBQUE7RUFDQSx3QkFBQTtFQUNBLHlDQUFBO0VBQ0EsOEJBQUE7RUFDQSx3REFBQTtFQUNBLGdDQUFBO0VBQ0EsMEJBQUE7RUFDQSxnQ0FBQTtFQUNBLDJCQUFBO0VBQ0EseUJBQUE7RUFDQSw2QkFBQTtFQUNBLCtCQUFBO0VBQ0EsNEJBQUE7RUFDQSw0Q0FBQTtFQUNBLDJCQUFBO0VBQ0EscUJBQUE7RUFDQSw2Q0FBQTtFQUNBLHlCQUFBO0VBQ0EsbUNBQUE7RUFDQSwyQkFBQTtFQUNBLG9DQUFBO0VBQ0Esa0NBQUE7RUFDQSxnQ0FBQTtFQUNBLGlDQUFBO0VBQ0EsK0JBQUE7RUFDQSxpQ0FBQTtFQUNBLDhDQUFBO0VBQ0EsdUJBQUE7RUFDQSw2QkFBQTtBRE1GO0FDSkU7RUFDRSxtQkMzQmU7QUZpQ25CO0FDSkk7RUFDRSxnQkFBQTtBRE1OO0FDRkU7RUFDRSw4Q0FBQTtFQUNBLHNDQUFBO0VBQ0EsbUNBQUE7RUFDQSx3QkFBQTtFQUNBLHdCQUFBO0VBQ0EscUJBQUE7RUFDQSx5Q0FBQTtFQUNBLDhCQUFBO0VBQ0Esd0RBQUE7RUFDQSxnQ0FBQTtFQUNBLDBCQUFBO0VBQ0EsZ0NBQUE7RUFDQSwyQkFBQTtFQUNBLHlCQUFBO0VBQ0EsNkJBQUE7RUFDQSwrQkFBQTtFQUNBLDRCQUFBO0VBQ0EseUNBQUE7RUFDQSwyQkFBQTtFQUNBLHFCQUFBO0VBQ0EsMENBQUE7RUFDQSx5QkFBQTtFQUNBLGdDQUFBO0VBQ0EsMkJB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O0FBK0JFO0VBQ0U7OztJQUdFLGFBQUE7RUE3Qko7QUFDRjs7QUFpQ0E7RUFDRSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFDQSxpQkFBQTtBQTlCRjtBQWdDRTtFQUNFLGFBQUE7RUFDQSxzQkFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFFQSxhQUFBO0VBQ0EseUJFemZPO0VGMGZQLHlCQUFBO0FBL0JKO0FBa0NFO0VBQ0UsY0FBQTtFQUNBLGdCQUFBO0FBaENKO0FBa0NJO0VBQ0Usa0JBQUE7QUFoQ047QUFvQ0U7O0VBRUUsZ0JBQUE7QUFsQ0o7QUFxQ0U7O0VBRUUsZ0JBQUE7QUFuQ0o7QUFzQ0U7RUFDRSxhQUFBO0VBQ0Esc0JBQUE7RUFDQSx1QkFBQTtBQXBDSjtBQXNDSTtFQUNFLFdBQUE7RUFDQSxjQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtBQXBDTlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCJAaW1wb3J0IFxcXCJvcGVuLWNvbG9yL29wZW4tY29sb3Iuc2Nzc1xcXCI7XFxuXFxuQG1peGluIGlzTW9iaWxlKCkge1xcbiAgQGF0LXJvb3QgLmV4Y2FsaWRyYXctLW1vYmlsZSN7Jn0ge1xcbiAgICBAY29udGVudDtcXG4gIH1cXG59XFxuXFxuJHRoZW1lLWZpbHRlcjogXFxcImludmVydCg5MyUpIGh1ZS1yb3RhdGUoMTgwZGVnKVxcXCI7XFxuXFxuOmV4cG9ydCB7XFxuICB0aGVtZUZpbHRlcjogdW5xdW90ZSgkdGhlbWUtZmlsdGVyKTtcXG59XFxuXCIsXCJAaW1wb3J0IFxcXCIuL3ZhcmlhYmxlcy5tb2R1bGVcXFwiO1xcbkBpbXBvcnQgXFxcIi4vdGhlbWVcXFwiO1xcblxcbjpyb290IHtcXG4gIC0tekluZGV4LWNhbnZhczogMTtcXG4gIC0tekluZGV4LXd5c2l3eWc6IDI7XFxuICAtLXpJbmRleC1sYXllclVJOiAzO1xcbn1cXG5cXG4uZXhjYWxpZHJhdyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgdG9wOiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgaGVpZ2h0OiAxMDAlO1xcbiAgd2lkdGg6IDEwMCU7XFxuXFxuICAmOmZvY3VzIHtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gIH1cXG5cXG4gIC8vIHNlcnZlcyAyIHB1cnBvc2VzOlxcbiAgLy8gMS4gcHJldmVudCBzZWxlY3RpbmcgdGV4dCBvdXRzaWRlIHRoZSBjb21wb25lbnQgd2hlbiBkb3VibGUtY2xpY2tpbmcgb3JcXG4gIC8vICAgIGRyYWdnaW5nIGluc2lkZSBpdCAoZS5nLiBvbiBjYW52YXMpXFxuICAvLyAyLiBwcmV2ZW50IHNlbGVjdGluZyBVSSwgYm90aCBmcm9tIHRoZSBpbnNpZGUsIGFuZCBmcm9tIG91dHNpZGUgdGhlXFxuICAvLyAgICBjb21wb25lbnQgKGUuZy4gaWYgeW91IHNlbGVjdCB0ZXh0IGluIGEgc2lkZWJhcilcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcblxcbiAgYSB7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG4gICAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpO1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXG4gICAgfVxcbiAgfVxcblxcbiAgY2FudmFzIHtcXG4gICAgdG91Y2gtYWN0aW9uOiBub25lO1xcblxcbiAgICAvLyBmb2xsb3dpbmcgcHJvcHMgaW1wcm92ZSBibHVycmluZXNzIGF0IGNlcnRhaW4gZGV2aWNlUGl4ZWxSYXRpb3MuXFxuICAgIC8vIEFGQUlLIGl0IGRvZXNuJ3QgYWZmZWN0IGV4cG9ydCAoaW4gZmFjdCwgZXhwb3J0IHNlZW1zIHNoYXJwIGVpdGhlciB3YXkpLlxcblxcbiAgICBpbWFnZS1yZW5kZXJpbmc6IHBpeGVsYXRlZDsgLy8gY2hyb21pdW1cXG4gICAgLy8gTk9URTogbXVzdCBiZSBkZWNsYXJlZCAqYWZ0ZXIqIHRoZSBhYm92ZVxcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7IC8vIEZGXFxuXFxuICAgIHotaW5kZXg6IHZhcigtLXpJbmRleC1jYW52YXMpO1xcblxcbiAgICAvLyBSZW1vdmUgdGhlIG1haW4gY2FudmFzIGZyb20gZG9jdW1lbnQgZmxvdyB0byBhdm9pZCByZXNpemVPYnNlcnZlclxcbiAgICAvLyBmZWVkYmFjayBsb29wIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2V4Y2FsaWRyYXcvZXhjYWxpZHJhdy9wdWxsLzMzNzkpXFxuICB9XFxuXFxuICAmX19jYW52YXMge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB9XFxuXFxuICAmLnRoZW1lLS1kYXJrIHtcXG4gICAgLy8gVGhlIHBlcmNlbnRhZ2UgaXMgaW5zcGlyZWQgYnlcXG4gICAgLy8gaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29sb3IvZGFyay10aGVtZS5odG1sI3Byb3BlcnRpZXMsIHdoaWNoXFxuICAgIC8vIHJlY29tbWVuZHMgc3VyZmFjZSBjb2xvciBvZiAjMTIxMjEyLCA5MyUgeWllbGRzICMxMTExMTEgZm9yICNGRkZcXG5cXG4gICAgY2FudmFzIHtcXG4gICAgICBmaWx0ZXI6IHZhcigtLXRoZW1lLWZpbHRlcik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5GaXhlZFNpZGVDb250YWluZXIge1xcbiAgICBwYWRkaW5nLXRvcDogdmFyKC0tc2F0LCAwKTtcXG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0tc2FyLCAwKTtcXG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc2FsLCAwKTtcXG4gIH1cXG5cXG4gIC5wYW5lbFJvdyB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gIH1cXG5cXG4gIC5wYW5lbENvbHVtbiB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuXFxuICAgIGgzLFxcbiAgICBsZWdlbmQsXFxuICAgIC5jb250cm9sLWxhYmVsIHtcXG4gICAgICBtYXJnaW4tdG9wOiAwLjMzM3JlbTtcXG4gICAgICBtYXJnaW4tYm90dG9tOiAwLjMzM3JlbTtcXG4gICAgICBmb250LXNpemU6IDAuNzVyZW07XFxuICAgICAgY29sb3I6IHZhcigtLXRleHQtcHJpbWFyeS1jb2xvcik7XFxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgICAgZGlzcGxheTogYmxvY2s7XFxuICAgIH1cXG5cXG4gICAgLmNvbnRyb2wtbGFiZWwgaW5wdXQge1xcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICB9XFxuXFxuICAgIGgzOmZpcnN0LWNoaWxkLFxcbiAgICBsZWdlbmQ6Zmlyc3QtY2hpbGQsXFxuICAgIC5jb250cm9sLWxhYmVsOmZpcnN0LWNoaWxkIHtcXG4gICAgICBtYXJnaW4tdG9wOiAwO1xcbiAgICB9XFxuXFxuICAgIGxlZ2VuZCB7XFxuICAgICAgcGFkZGluZzogMDtcXG4gICAgfVxcblxcbiAgICAuaWNvblNlbGVjdExpc3Qge1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIH1cXG5cXG4gICAgLmJ1dHRvbkxpc3Qge1xcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcXG5cXG4gICAgICBsYWJlbCB7XFxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07XFxuICAgICAgICBmb250LXNpemU6IDAuNzVyZW07XFxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgICAgfVxcblxcbiAgICAgIGlucHV0W3R5cGU9XFxcInJhZGlvXFxcIl0sXFxuICAgICAgaW5wdXRbdHlwZT1cXFwiYnV0dG9uXFxcIl0ge1xcbiAgICAgICAgb3BhY2l0eTogMDtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xcbiAgICAgIH1cXG5cXG4gICAgICAuaWNvblJvdyB7XFxuICAgICAgICBtYXJnaW4tdG9wOiA4cHg7XFxuICAgICAgfVxcblxcbiAgICAgIC5Ub29sSWNvbiB7XFxuICAgICAgICBtYXJnaW46IDA7XFxuICAgICAgICBtYXJnaW4taW5saW5lLWVuZDogOHB4O1xcblxcbiAgICAgICAgJjpmb2N1cyB7XFxuICAgICAgICAgIG91dGxpbmU6IHRyYW5zcGFyZW50O1xcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgICY6YWN0aXZlIHtcXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAmOmRpc2FibGVkIHtcXG4gICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgLlRvb2xJY29uX19pY29uIHtcXG4gICAgICAgIHdpZHRoOiAyOHB4O1xcbiAgICAgICAgaGVpZ2h0OiAyOHB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBmaWVsZHNldCB7XFxuICAgICAgbWFyZ2luOiAwO1xcbiAgICAgIG1hcmdpbi10b3A6IDAuMzMzcmVtO1xcbiAgICAgIHBhZGRpbmc6IDA7XFxuICAgICAgYm9yZGVyOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAuZGl2aWRlciB7XFxuICAgIHdpZHRoOiAxcHg7XFxuICAgIGJhY2tncm91bmQtY29sb3I6ICRvYy1ncmF5LTI7XFxuICAgIG1hcmdpbjogMXB4O1xcbiAgfVxcblxcbiAgLmJ1dHRvbkxpc3QgbGFiZWw6Zm9jdXMtd2l0aGluLFxcbiAgaW5wdXQ6Zm9jdXMge1xcbiAgICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICB9XFxuXFxuICBidXR0b24sXFxuICAuYnV0dG9uTGlzdCBsYWJlbCB7XFxuICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gICAgYm9yZGVyOiAwO1xcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgIG1hcmdpbjogMC4xMjVyZW0gMDtcXG4gICAgcGFkZGluZzogMC4yNXJlbTtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBvdXRsaW5lOiB0cmFuc3BhcmVudDtcXG4gICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tZm9jdXMtaGlnaGxpZ2h0LWNvbG9yKTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgIH1cXG5cXG4gICAgJjpkaXNhYmxlZCB7XFxuICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmFjdGl2ZSxcXG4gIC5idXR0b25MaXN0IGxhYmVsLmFjdGl2ZSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0yKTtcXG4gICAgfVxcblxcbiAgICAmOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMyk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5idXR0b25MaXN0LmJ1dHRvbkxpc3RJY29uIHtcXG4gICAgbGFiZWwge1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgc3ZnIHtcXG4gICAgICAgIHdpZHRoOiAzNnB4O1xcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xcbiAgICAgICAgcGFkZGluZzogMnB4O1xcbiAgICAgICAgb3BhY2l0eTogMC42O1xcbiAgICAgIH1cXG4gICAgICAmLmFjdGl2ZSBzdmcge1xcbiAgICAgICAgb3BhY2l0eTogMTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5BcHAtdG9wLWJhciB7XFxuICAgIHotaW5kZXg6IHZhcigtLXpJbmRleC1sYXllclVJKTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIH1cXG5cXG4gIC5BcHAtYm90dG9tLWJhciB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICBib3R0b206IDA7XFxuICAgIGxlZnQ6IDA7XFxuICAgIHJpZ2h0OiAwO1xcbiAgICAtLWJhci1wYWRkaW5nOiBjYWxjKDQgKiB2YXIoLS1zcGFjZS1mYWN0b3IpKTtcXG4gICAgcGFkZGluZy10b3A6ICN7XFxcIm1heCh2YXIoLS1iYXItcGFkZGluZyksIHZhcigtLXNhdCwwKSlcXFwifTtcXG4gICAgcGFkZGluZy1yaWdodDogdmFyKC0tc2FyLCAwKTtcXG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNhYiwgMCk7XFxuICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc2FsLCAwKTtcXG4gICAgei1pbmRleDogNDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG5cXG4gICAgPiAuSXNsYW5kIHtcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XFxuICAgICAgbWluLXdpZHRoOiAxMDAlO1xcbiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgICAgbWF4LWhlaWdodDogMTAwJTtcXG4gICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgICAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XFxuXFxuICAgICAgLnBhbmVsQ29sdW1uIHtcXG4gICAgICAgIHBhZGRpbmc6IDhweCA4cHggMCA4cHg7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICAuQXBwLXRvb2xiYXIge1xcbiAgICB3aWR0aDogMTAwJTtcXG5cXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIH1cXG5cXG4gIC5BcHAtdG9vbGJhci1jb250ZW50IHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBwYWRkaW5nOiA4cHg7XFxuICB9XFxuXFxuICAuQXBwLW1vYmlsZS1tZW51IHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIG92ZXJmbG93LXg6IHZpc2libGU7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICAgIG1hcmdpbi1ib3R0b206IHZhcigtLWJhci1wYWRkaW5nKTtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudSB7XFxuICAgIGRpc3BsYXk6IGdyaWQ7XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X3RvcCB7XFxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtYXgtY29udGVudCBhdXRvO1xcbiAgICBncmlkLWdhcDogNHB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbiAgfVxcblxcbiAgLmxheWVyLXVpX193cmFwcGVyOm5vdCguZGlzYWJsZS1wb2ludGVyRXZlbnRzKSAuQXBwLW1lbnVfdG9wID4gKiB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfdG9wID4gKjpmaXJzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcXG4gIH1cXG5cXG4gIC5BcHAtbWVudV90b3AgPiAqOmxhc3QtY2hpbGQge1xcbiAgICBqdXN0aWZ5LXNlbGY6IGZsZXgtZW5kO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2JvdHRvbSB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbi1jb250ZW50IGF1dG8gbWluLWNvbnRlbnQ7XFxuICAgIGdyaWQtZ2FwOiAxNXB4O1xcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gICAgY3Vyc29yOiBkZWZhdWx0O1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZSAhaW1wb3J0YW50O1xcbiAgICB6LWluZGV4OiAxMDA7XFxuXFxuICAgIDpyb290W2Rpcj1cXFwibHRyXFxcIl0gJiB7XFxuICAgICAgbGVmdDogMC4yNXJlbTtcXG4gICAgfVxcblxcbiAgICA6cm9vdFtkaXI9XFxcInJ0bFxcXCJdICYge1xcbiAgICAgIHJpZ2h0OiAwLjI1cmVtO1xcbiAgICB9XFxuXFxuICAgICYtLXRyYW5zaXRpb24tbGVmdCB7XFxuICAgICAgc2VjdGlvbiB7XFxuICAgICAgICB3aWR0aDogMTg1cHg7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIHNlY3Rpb24ge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5BcHAtbWVudV9ib3R0b20gPiAqOmZpcnN0LWNoaWxkIHtcXG4gICAganVzdGlmeS1zZWxmOiBmbGV4LXN0YXJ0O1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X2JvdHRvbSA+ICo6bGFzdC1jaGlsZCB7XFxuICAgIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfbGVmdCB7XFxuICAgIGdyaWQtdGVtcGxhdGUtcm93czogMWZyIGF1dG8gMWZyO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuICB9XFxuXFxuICAuQXBwLW1lbnVfcmlnaHQge1xcbiAgICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgfVxcblxcbiAgLkFwcC1tZW51X19sZWZ0IHtcXG4gICAgb3ZlcmZsb3cteTogYXV0bztcXG4gIH1cXG5cXG4gIC5kcm9wZG93bi1zZWxlY3Qge1xcbiAgICBoZWlnaHQ6IDEuNXJlbTtcXG4gICAgcGFkZGluZzogMDtcXG4gICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuNXJlbTtcXG4gICAgcGFkZGluZy1pbmxpbmUtZW5kOiAxLjVyZW07XFxuICAgIGNvbG9yOiB2YXIoLS1pY29uLWZpbGwtY29sb3IpO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tZ3JheS0xKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tc3BhY2UtZmFjdG9yKTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgICBhcHBlYXJhbmNlOiBub25lO1xcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB2YXIoLS1kcm9wZG93bi1pY29uKTtcXG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgMC43cmVtIHRvcCA1MCUsIDAgMDtcXG5cXG4gICAgOnJvb3RbZGlyPVxcXCJydGxcXFwiXSAmIHtcXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IDAuN3JlbSB0b3AgNTAlLCAwIDA7XFxuICAgIH1cXG5cXG4gICAgYmFja2dyb3VuZC1zaXplOiAwLjY1ZW0gYXV0bywgMTAwJTtcXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICAgIH1cXG5cXG4gICAgJjpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWdyYXktMik7XFxuICAgIH1cXG5cXG4gICAgJjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ncmF5LTIpO1xcbiAgICB9XFxuICB9XFxuXFxuICAuekluZGV4QnV0dG9uIHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBtYXJnaW4taW5saW5lLWVuZDogOHB4O1xcbiAgICBwYWRkaW5nOiA1cHg7XFxuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogMThweDtcXG4gICAgICBoZWlnaHQ6IDE4cHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5zY3JvbGwtYmFjay10by1jb250ZW50IHtcXG4gICAgY29sb3I6IHZhcigtLXBvcHVwLXRleHQtY29sb3IpO1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGxlZnQ6IDUwJTtcXG4gICAgYm90dG9tOiAzMHB4O1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxuICAgIHBhZGRpbmc6IDEwcHggMjBweDtcXG4gIH1cXG5cXG4gIC5oZWxwLWljb24ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgIGZpbGw6ICRvYy1ncmF5LTY7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgY29sb3I6IHZhcigtLWljb24tZmlsbC1jb2xvcik7XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IDEuNXJlbTtcXG4gICAgICBoZWlnaHQ6IDEuNXJlbTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAucmVzZXQtem9vbS1idXR0b24ge1xcbiAgICBwYWRkaW5nOiAwLjJlbTtcXG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tdWktZm9udCk7XFxuICB9XFxuXFxuICAudW5kby1yZWRvLWJ1dHRvbnMge1xcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xcbiAgICBnYXA6IDAuNGVtO1xcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xcbiAgICBtYXJnaW4taW5saW5lLXN0YXJ0OiAwLjZlbTtcXG4gIH1cXG5cXG4gIEBpbmNsdWRlIGlzTW9iaWxlIHtcXG4gICAgYXNpZGUge1xcbiAgICAgIGRpc3BsYXk6IG5vbmU7XFxuICAgIH1cXG4gICAgLnNjcm9sbC1iYWNrLXRvLWNvbnRlbnQge1xcbiAgICAgIGJvdHRvbTogY2FsYyg4MHB4ICsgdmFyKC0tc2FiLCAwKSk7XFxuICAgICAgei1pbmRleDogLTE7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5ydGwtbWlycm9yIHtcXG4gICAgOnJvb3RbZGlyPVxcXCJydGxcXFwiXSAmIHtcXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC56ZW4tbW9kZS12aXNpYmlsaXR5IHtcXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcXG4gICAgb3BhY2l0eTogMTtcXG4gICAgaGVpZ2h0OiBhdXRvO1xcbiAgICB3aWR0aDogYXV0bztcXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzO1xcblxcbiAgICAmLnplbi1tb2RlLXZpc2liaWxpdHktLWhpZGRlbiB7XFxuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgICAgIG9wYWNpdHk6IDA7XFxuICAgICAgaGVpZ2h0OiAwO1xcbiAgICAgIHdpZHRoOiAwO1xcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cztcXG4gICAgfVxcbiAgfVxcblxcbiAgLmRpc2FibGUtcG9pbnRlckV2ZW50cyB7XFxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lICFpbXBvcnRhbnQ7XFxuICB9XFxuXFxuICAmLmV4Y2FsaWRyYXctLXZpZXctbW9kZSB7XFxuICAgIC5BcHAtbWVudSB7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuICAgIH1cXG4gIH1cXG5cXG4gIGlucHV0W3R5cGU9XFxcInRleHRcXFwiXSxcXG4gIHRleHRhcmVhOm5vdCguZXhjYWxpZHJhdy13eXNpd3lnKSB7XFxuICAgIGNvbG9yOiB2YXIoLS10ZXh0LXByaW1hcnktY29sb3IpO1xcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlci1jb2xvcik7XFxuICAgIHBhZGRpbmc6IDAuNzVyZW07XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXNwYWNlLWZhY3Rvcik7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlucHV0LWJnLWNvbG9yKTtcXG5cXG4gICAgJjpub3QoOmZvY3VzKSB7XFxuICAgICAgJjpob3ZlciB7XFxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pbnB1dC1ob3Zlci1iZy1jb2xvcik7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICY6Zm9jdXMge1xcbiAgICAgIG91dGxpbmU6IG5vbmU7XFxuICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIEBtZWRpYSBwcmludCB7XFxuICAgIC5BcHAtYm90dG9tLWJhcixcXG4gICAgLkZpeGVkU2lkZUNvbnRhaW5lcixcXG4gICAgLmxheWVyLXVpX193cmFwcGVyIHtcXG4gICAgICBkaXNwbGF5OiBub25lO1xcbiAgICB9XFxuICB9XFxufVxcblxcbi5FcnJvclNwbGFzaC5leGNhbGlkcmF3IHtcXG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xcbiAgcGFkZGluZzogMjBweCAwO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgdXNlci1zZWxlY3Q6IHRleHQ7XFxuXFxuICAuRXJyb3JTcGxhc2gtbWVzc2FnZUNvbnRhaW5lciB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcblxcbiAgICBwYWRkaW5nOiA0MHB4O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2MtcmVkLTE7XFxuICAgIGJvcmRlcjogM3B4IHNvbGlkICRvYy1yZWQtOTtcXG4gIH1cXG5cXG4gIC5FcnJvclNwbGFzaC1wYXJhZ3JhcGgge1xcbiAgICBtYXJnaW46IDE1cHggMDtcXG4gICAgbWF4LXdpZHRoOiA2MDBweDtcXG5cXG4gICAgJi5hbGlnbi1jZW50ZXIge1xcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmJpZ2dlcixcXG4gIC5iaWdnZXIgYnV0dG9uIHtcXG4gICAgZm9udC1zaXplOiAxLjFlbTtcXG4gIH1cXG5cXG4gIC5zbWFsbGVyLFxcbiAgLnNtYWxsZXIgYnV0dG9uIHtcXG4gICAgZm9udC1zaXplOiAwLjllbTtcXG4gIH1cXG5cXG4gIC5FcnJvclNwbGFzaC1kZXRhaWxzIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XFxuXFxuICAgIHRleHRhcmVhIHtcXG4gICAgICB3aWR0aDogMTAwJTtcXG4gICAgICBtYXJnaW46IDEwcHggMDtcXG4gICAgICBmb250LWZhbWlseTogXFxcIkNhc2NhZGlhXFxcIjtcXG4gICAgICBmb250LXNpemU6IDAuOGVtO1xcbiAgICB9XFxuICB9XFxufVxcblwiLFwiQGltcG9ydCBcXFwib3Blbi1jb2xvci9vcGVuLWNvbG9yLnNjc3NcXFwiO1xcbkBpbXBvcnQgXFxcIi4vdmFyaWFibGVzLm1vZHVsZS5zY3NzXFxcIjtcXG5cXG4uZXhjYWxpZHJhdyB7XFxuICAtLXRoZW1lLWZpbHRlcjogbm9uZTtcXG4gIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjeyRvYy1yZWQtMX07XFxuICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI3skb2MtcmVkLTl9O1xcbiAgLS1idXR0b24tZ3JheS0xOiAjeyRvYy1ncmF5LTJ9O1xcbiAgLS1idXR0b24tZ3JheS0yOiAjeyRvYy1ncmF5LTR9O1xcbiAgLS1idXR0b24tZ3JheS0zOiAjeyRvYy1ncmF5LTV9O1xcbiAgLS1idXR0b24tc3BlY2lhbC1hY3RpdmUtYmctY29sb3I6ICN7JG9jLWdyZWVuLTB9O1xcbiAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTZ9O1xcbiAgLS1kcm9wZG93bi1pY29uOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgd2lkdGg9XFxcIjI5Mi40XFxcIiBoZWlnaHQ9XFxcIjI5Mi40XFxcIiB2aWV3Qm94PVxcXCIwIDAgMjkyIDI5MlxcXCI+PHBhdGggZD1cXFwiTTI4NyAxOTdMMTU5IDY5Yy00LTMtOC01LTEzLTVzLTkgMi0xMyA1TDUgMTk3Yy0zIDQtNSA4LTUgMTNzMiA5IDUgMTNjNCA0IDggNSAxMyA1aDI1NmM1IDAgOS0xIDEzLTVzNS04IDUtMTMtMS05LTUtMTN6XFxcIi8+PC9zdmc+Jyk7XFxuICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS0yfTtcXG4gIC0taWNvbi1maWxsLWNvbG9yOiAjeyRvYy1ibGFja307XFxuICAtLWljb24tZ3JlZW4tZmlsbC1jb2xvcjogI3skb2MtZ3JlZW4tOX07XFxuICAtLWRlZmF1bHQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0taW5wdXQtYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogI3skb2MtZ3JheS0xfTtcXG4gIC0taW5wdXQtbGFiZWwtY29sb3I6ICN7JG9jLWdyYXktN307XFxuICAtLWlzbGFuZC1iZy1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTtcXG4gIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS01fTtcXG4gIC0tbGluay1jb2xvcjogI3skb2MtYmx1ZS03fTtcXG4gIC0tb3ZlcmxheS1iZy1jb2xvcjogI3t0cmFuc3BhcmVudGl6ZSgkb2Mtd2hpdGUsIDAuMTIpfTtcXG4gIC0tcG9wdXAtYmctY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tcG9wdXAtc2Vjb25kYXJ5LWJnLWNvbG9yOiAjeyRvYy1ncmF5LTF9O1xcbiAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ibGFja307XFxuICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICN7JG9jLXdoaXRlfTtcXG4gIC0tc2FiOiBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSk7XFxuICAtLXNhbDogZW52KHNhZmUtYXJlYS1pbnNldC1sZWZ0KTtcXG4gIC0tc2FyOiBlbnYoc2FmZS1hcmVhLWluc2V0LXJpZ2h0KTtcXG4gIC0tc2F0OiBlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCk7XFxuICAtLXNlbGVjdC1oaWdobGlnaHQtY29sb3I6ICN7JG9jLWJsdWUtNX07XFxuICAtLXNoYWRvdy1pc2xhbmQ6IDAgMXB4IDVweCAje3RyYW5zcGFyZW50aXplKCRvYy1ibGFjaywgMC44NSl9O1xcbiAgLS1zcGFjZS1mYWN0b3I6IDAuMjVyZW07XFxuICAtLXRleHQtcHJpbWFyeS1jb2xvcjogI3skb2MtZ3JheS04fTtcXG5cXG4gICYudGhlbWUtLWRhcmsge1xcbiAgICBiYWNrZ3JvdW5kOiAkb2MtYmxhY2s7XFxuXFxuICAgICYudGhlbWUtLWRhcmstYmFja2dyb3VuZC1ub25lIHtcXG4gICAgICBiYWNrZ3JvdW5kOiBub25lO1xcbiAgICB9XFxuICB9XFxuXFxuICAmLnRoZW1lLS1kYXJrIHtcXG4gICAgLS10aGVtZS1maWx0ZXI6ICN7JHRoZW1lLWZpbHRlcn07XFxuICAgIC0tYnV0dG9uLWRlc3RydWN0aXZlLWJnLWNvbG9yOiAjNWEwMDAwO1xcbiAgICAtLWJ1dHRvbi1kZXN0cnVjdGl2ZS1jb2xvcjogI3skb2MtcmVkLTN9O1xcbiAgICAtLWJ1dHRvbi1ncmF5LTE6ICMzNjM2MzY7XFxuICAgIC0tYnV0dG9uLWdyYXktMjogIzI3MjcyNztcXG4gICAgLS1idXR0b24tZ3JheS0zOiAjMjIyO1xcbiAgICAtLWJ1dHRvbi1zcGVjaWFsLWFjdGl2ZS1iZy1jb2xvcjogIzIwNDYyNDtcXG4gICAgLS1kaWFsb2ctYm9yZGVyLWNvbG9yOiAjeyRvYy1ncmF5LTl9O1xcbiAgICAtLWRyb3Bkb3duLWljb246IHVybCgnZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMjkyLjRcXFwiIGhlaWdodD1cXFwiMjkyLjRcXFwiIHZpZXdCb3g9XFxcIjAgMCAyOTIgMjkyXFxcIj48cGF0aCBmaWxsPVxcXCIlMjNjZWQ0ZGFcXFwiIGQ9XFxcIk0yODcgMTk3TDE1OSA2OWMtNC0zLTgtNS0xMy01cy05IDItMTMgNUw1IDE5N2MtMyA0LTUgOC01IDEzczIgOSA1IDEzYzQgNCA4IDUgMTMgNWgyNTZjNSAwIDktMSAxMy01czUtOCA1LTEzLTEtOS01LTEzelxcXCIvPjwvc3ZnPicpO1xcbiAgICAtLWZvY3VzLWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS02fTtcXG4gICAgLS1pY29uLWZpbGwtY29sb3I6ICN7JG9jLWdyYXktNH07XFxuICAgIC0taWNvbi1ncmVlbi1maWxsLWNvbG9yOiAjeyRvYy1ncmVlbi00fTtcXG4gICAgLS1kZWZhdWx0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJnLWNvbG9yOiAjMTIxMjEyO1xcbiAgICAtLWlucHV0LWJvcmRlci1jb2xvcjogIzJlMmUyZTtcXG4gICAgLS1pbnB1dC1ob3Zlci1iZy1jb2xvcjogIzE4MTgxODtcXG4gICAgLS1pbnB1dC1sYWJlbC1jb2xvcjogI3skb2MtZ3JheS0yfTtcXG4gICAgLS1pc2xhbmQtYmctY29sb3I6IHJnYmEoMzAsIDMwLCAzMCwgMC45OCk7XFxuICAgIC0ta2V5YmluZGluZy1jb2xvcjogI3skb2MtZ3JheS02fTtcXG4gICAgLS1saW5rLWNvbG9yOiAjeyRvYy1ibHVlLTR9O1xcbiAgICAtLW92ZXJsYXktYmctY29sb3I6ICN7dHJhbnNwYXJlbnRpemUoJG9jLWdyYXktOCwgMC44OCl9O1xcbiAgICAtLXBvcHVwLWJnLWNvbG9yOiAjMmMyYzJjO1xcbiAgICAtLXBvcHVwLXNlY29uZGFyeS1iZy1jb2xvcjogIzIyMjtcXG4gICAgLS1wb3B1cC10ZXh0LWNvbG9yOiAjeyRvYy1ncmF5LTR9O1xcbiAgICAtLXBvcHVwLXRleHQtaW52ZXJ0ZWQtY29sb3I6ICMyYzJjMmM7XFxuICAgIC0tc2VsZWN0LWhpZ2hsaWdodC1jb2xvcjogI3skb2MtYmx1ZS00fTtcXG4gICAgLS1zaGFkb3ctaXNsYW5kOiAwIDFweCA1cHggI3t0cmFuc3BhcmVudGl6ZSgkb2MtYmxhY2ssIDAuNyl9O1xcbiAgICAtLXRleHQtcHJpbWFyeS1jb2xvcjogI3skb2MtZ3JheS00fTtcXG4gIH1cXG59XFxuXCIsXCIvL1xcbi8vXFxuLy8gIPCdl5Yg8J2XoiDwnZefIPCdl6Ig8J2XpVxcbi8vICB2IDEuOS4xXFxuLy9cXG4vLyAg4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSB4pSBXFxuXFxuXFxuLy8gIEdlbmVyYWxcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLXdoaXRlOiAgICAgICAgICNmZmZmZmY7XFxuJG9jLWJsYWNrOiAgICAgICAgICMwMDAwMDA7XFxuXFxuXFxuLy8gIEdyYXlcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyYXktbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZjhmOWZhLFxcbiAgXFxcIjFcXFwiOiAjZjFmM2Y1LFxcbiAgXFxcIjJcXFwiOiAjZTllY2VmLFxcbiAgXFxcIjNcXFwiOiAjZGVlMmU2LFxcbiAgXFxcIjRcXFwiOiAjY2VkNGRhLFxcbiAgXFxcIjVcXFwiOiAjYWRiNWJkLFxcbiAgXFxcIjZcXFwiOiAjODY4ZTk2LFxcbiAgXFxcIjdcXFwiOiAjNDk1MDU3LFxcbiAgXFxcIjhcXFwiOiAjMzQzYTQwLFxcbiAgXFxcIjlcXFwiOiAjMjEyNTI5XFxuKTtcXG5cXG4kb2MtZ3JheS0wOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyYXktMTogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1ncmF5LTI6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtZ3JheS0zOiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyYXktNDogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1ncmF5LTU6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtZ3JheS02OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyYXktNzogbWFwLWdldCgkb2MtZ3JheS1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1ncmF5LTg6IG1hcC1nZXQoJG9jLWdyYXktbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtZ3JheS05OiBtYXAtZ2V0KCRvYy1ncmF5LWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFJlZFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtcmVkLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2ZmZjVmNSxcXG4gIFxcXCIxXFxcIjogI2ZmZTNlMyxcXG4gIFxcXCIyXFxcIjogI2ZmYzljOSxcXG4gIFxcXCIzXFxcIjogI2ZmYThhOCxcXG4gIFxcXCI0XFxcIjogI2ZmODc4NyxcXG4gIFxcXCI1XFxcIjogI2ZmNmI2YixcXG4gIFxcXCI2XFxcIjogI2ZhNTI1MixcXG4gIFxcXCI3XFxcIjogI2YwM2UzZSxcXG4gIFxcXCI4XFxcIjogI2UwMzEzMSxcXG4gIFxcXCI5XFxcIjogI2M5MmEyYVxcbik7XFxuXFxuJG9jLXJlZC0wOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtcmVkLTE6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy1yZWQtMjogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXJlZC0zOiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtcmVkLTQ6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy1yZWQtNTogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXJlZC02OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtcmVkLTc6IG1hcC1nZXQoJG9jLXJlZC1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy1yZWQtODogbWFwLWdldCgkb2MtcmVkLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXJlZC05OiBtYXAtZ2V0KCRvYy1yZWQtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgUGlua1xcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtcGluay1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmYwZjYsXFxuICBcXFwiMVxcXCI6ICNmZmRlZWIsXFxuICBcXFwiMlxcXCI6ICNmY2MyZDcsXFxuICBcXFwiM1xcXCI6ICNmYWEyYzEsXFxuICBcXFwiNFxcXCI6ICNmNzgzYWMsXFxuICBcXFwiNVxcXCI6ICNmMDY1OTUsXFxuICBcXFwiNlxcXCI6ICNlNjQ5ODAsXFxuICBcXFwiN1xcXCI6ICNkNjMzNmMsXFxuICBcXFwiOFxcXCI6ICNjMjI1NWMsXFxuICBcXFwiOVxcXCI6ICNhNjFlNGRcXG4pO1xcblxcbiRvYy1waW5rLTA6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtcGluay0xOiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXBpbmstMjogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1waW5rLTM6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtcGluay00OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXBpbmstNTogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1waW5rLTY6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtcGluay03OiBtYXAtZ2V0KCRvYy1waW5rLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXBpbmstODogbWFwLWdldCgkb2MtcGluay1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1waW5rLTk6IG1hcC1nZXQoJG9jLXBpbmstbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgR3JhcGVcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWdyYXBlLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2Y4ZjBmYyxcXG4gIFxcXCIxXFxcIjogI2YzZDlmYSxcXG4gIFxcXCIyXFxcIjogI2VlYmVmYSxcXG4gIFxcXCIzXFxcIjogI2U1OTlmNyxcXG4gIFxcXCI0XFxcIjogI2RhNzdmMixcXG4gIFxcXCI1XFxcIjogI2NjNWRlOCxcXG4gIFxcXCI2XFxcIjogI2JlNGJkYixcXG4gIFxcXCI3XFxcIjogI2FlM2VjOSxcXG4gIFxcXCI4XFxcIjogIzljMzZiNSxcXG4gIFxcXCI5XFxcIjogIzg2MmU5Y1xcbik7XFxuXFxuJG9jLWdyYXBlLTA6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLWdyYXBlLTE6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWdyYXBlLTI6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWdyYXBlLTM6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLWdyYXBlLTQ6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWdyYXBlLTU6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWdyYXBlLTY6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLWdyYXBlLTc6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWdyYXBlLTg6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWdyYXBlLTk6IG1hcC1nZXQoJG9jLWdyYXBlLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIFZpb2xldFxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtdmlvbGV0LWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2YzZjBmZixcXG4gIFxcXCIxXFxcIjogI2U1ZGJmZixcXG4gIFxcXCIyXFxcIjogI2QwYmZmZixcXG4gIFxcXCIzXFxcIjogI2IxOTdmYyxcXG4gIFxcXCI0XFxcIjogIzk3NzVmYSxcXG4gIFxcXCI1XFxcIjogIzg0NWVmNyxcXG4gIFxcXCI2XFxcIjogIzc5NTBmMixcXG4gIFxcXCI3XFxcIjogIzcwNDhlOCxcXG4gIFxcXCI4XFxcIjogIzY3NDFkOSxcXG4gIFxcXCI5XFxcIjogIzVmM2RjNFxcbik7XFxuXFxuJG9jLXZpb2xldC0wOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtdmlvbGV0LTE6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiMVxcXCIpO1xcbiRvYy12aW9sZXQtMjogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXZpb2xldC0zOiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtdmlvbGV0LTQ6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiNFxcXCIpO1xcbiRvYy12aW9sZXQtNTogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXZpb2xldC02OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtdmlvbGV0LTc6IG1hcC1nZXQoJG9jLXZpb2xldC1saXN0LCBcXFwiN1xcXCIpO1xcbiRvYy12aW9sZXQtODogbWFwLWdldCgkb2MtdmlvbGV0LWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXZpb2xldC05OiBtYXAtZ2V0KCRvYy12aW9sZXQtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgSW5kaWdvXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1pbmRpZ28tbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZWRmMmZmLFxcbiAgXFxcIjFcXFwiOiAjZGJlNGZmLFxcbiAgXFxcIjJcXFwiOiAjYmFjOGZmLFxcbiAgXFxcIjNcXFwiOiAjOTFhN2ZmLFxcbiAgXFxcIjRcXFwiOiAjNzQ4ZmZjLFxcbiAgXFxcIjVcXFwiOiAjNWM3Y2ZhLFxcbiAgXFxcIjZcXFwiOiAjNGM2ZWY1LFxcbiAgXFxcIjdcXFwiOiAjNDI2M2ViLFxcbiAgXFxcIjhcXFwiOiAjM2I1YmRiLFxcbiAgXFxcIjlcXFwiOiAjMzY0ZmM3XFxuKTtcXG5cXG4kb2MtaW5kaWdvLTA6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1pbmRpZ28tMTogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWluZGlnby0yOiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtaW5kaWdvLTM6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1pbmRpZ28tNDogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWluZGlnby01OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtaW5kaWdvLTY6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1pbmRpZ28tNzogbWFwLWdldCgkb2MtaW5kaWdvLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWluZGlnby04OiBtYXAtZ2V0KCRvYy1pbmRpZ28tbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtaW5kaWdvLTk6IG1hcC1nZXQoJG9jLWluZGlnby1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBCbHVlXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1ibHVlLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2U3ZjVmZixcXG4gIFxcXCIxXFxcIjogI2QwZWJmZixcXG4gIFxcXCIyXFxcIjogI2E1ZDhmZixcXG4gIFxcXCIzXFxcIjogIzc0YzBmYyxcXG4gIFxcXCI0XFxcIjogIzRkYWJmNyxcXG4gIFxcXCI1XFxcIjogIzMzOWFmMCxcXG4gIFxcXCI2XFxcIjogIzIyOGJlNixcXG4gIFxcXCI3XFxcIjogIzFjN2VkNixcXG4gIFxcXCI4XFxcIjogIzE5NzFjMixcXG4gIFxcXCI5XFxcIjogIzE4NjRhYlxcbik7XFxuXFxuJG9jLWJsdWUtMDogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1ibHVlLTE6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtYmx1ZS0yOiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWJsdWUtMzogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1ibHVlLTQ6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtYmx1ZS01OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWJsdWUtNjogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1ibHVlLTc6IG1hcC1nZXQoJG9jLWJsdWUtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtYmx1ZS04OiBtYXAtZ2V0KCRvYy1ibHVlLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWJsdWUtOTogbWFwLWdldCgkb2MtYmx1ZS1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBDeWFuXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy1jeWFuLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2UzZmFmYyxcXG4gIFxcXCIxXFxcIjogI2M1ZjZmYSxcXG4gIFxcXCIyXFxcIjogIzk5ZTlmMixcXG4gIFxcXCIzXFxcIjogIzY2ZDllOCxcXG4gIFxcXCI0XFxcIjogIzNiYzlkYixcXG4gIFxcXCI1XFxcIjogIzIyYjhjZixcXG4gIFxcXCI2XFxcIjogIzE1YWFiZixcXG4gIFxcXCI3XFxcIjogIzEwOThhZCxcXG4gIFxcXCI4XFxcIjogIzBjODU5OSxcXG4gIFxcXCI5XFxcIjogIzBiNzI4NVxcbik7XFxuXFxuJG9jLWN5YW4tMDogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy1jeWFuLTE6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtY3lhbi0yOiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLWN5YW4tMzogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy1jeWFuLTQ6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtY3lhbi01OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLWN5YW4tNjogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy1jeWFuLTc6IG1hcC1nZXQoJG9jLWN5YW4tbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtY3lhbi04OiBtYXAtZ2V0KCRvYy1jeWFuLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLWN5YW4tOTogbWFwLWdldCgkb2MtY3lhbi1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBUZWFsXFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy10ZWFsLWxpc3Q6IChcXG4gIFxcXCIwXFxcIjogI2U2ZmNmNSxcXG4gIFxcXCIxXFxcIjogI2MzZmFlOCxcXG4gIFxcXCIyXFxcIjogIzk2ZjJkNyxcXG4gIFxcXCIzXFxcIjogIzYzZTZiZSxcXG4gIFxcXCI0XFxcIjogIzM4ZDlhOSxcXG4gIFxcXCI1XFxcIjogIzIwYzk5NyxcXG4gIFxcXCI2XFxcIjogIzEyYjg4NixcXG4gIFxcXCI3XFxcIjogIzBjYTY3OCxcXG4gIFxcXCI4XFxcIjogIzA5OTI2OCxcXG4gIFxcXCI5XFxcIjogIzA4N2Y1Ylxcbik7XFxuXFxuJG9jLXRlYWwtMDogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy10ZWFsLTE6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtdGVhbC0yOiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCIyXFxcIik7XFxuJG9jLXRlYWwtMzogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy10ZWFsLTQ6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtdGVhbC01OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI1XFxcIik7XFxuJG9jLXRlYWwtNjogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy10ZWFsLTc6IG1hcC1nZXQoJG9jLXRlYWwtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtdGVhbC04OiBtYXAtZ2V0KCRvYy10ZWFsLWxpc3QsIFxcXCI4XFxcIik7XFxuJG9jLXRlYWwtOTogbWFwLWdldCgkb2MtdGVhbC1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBHcmVlblxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtZ3JlZW4tbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZWJmYmVlLFxcbiAgXFxcIjFcXFwiOiAjZDNmOWQ4LFxcbiAgXFxcIjJcXFwiOiAjYjJmMmJiLFxcbiAgXFxcIjNcXFwiOiAjOGNlOTlhLFxcbiAgXFxcIjRcXFwiOiAjNjlkYjdjLFxcbiAgXFxcIjVcXFwiOiAjNTFjZjY2LFxcbiAgXFxcIjZcXFwiOiAjNDBjMDU3LFxcbiAgXFxcIjdcXFwiOiAjMzdiMjRkLFxcbiAgXFxcIjhcXFwiOiAjMmY5ZTQ0LFxcbiAgXFxcIjlcXFwiOiAjMmI4YTNlXFxuKTtcXG5cXG4kb2MtZ3JlZW4tMDogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtZ3JlZW4tMTogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2MtZ3JlZW4tMjogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MtZ3JlZW4tMzogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtZ3JlZW4tNDogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2MtZ3JlZW4tNTogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MtZ3JlZW4tNjogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtZ3JlZW4tNzogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2MtZ3JlZW4tODogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MtZ3JlZW4tOTogbWFwLWdldCgkb2MtZ3JlZW4tbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgTGltZVxcbi8vICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcXG5cXG4kb2MtbGltZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmNGZjZTMsXFxuICBcXFwiMVxcXCI6ICNlOWZhYzgsXFxuICBcXFwiMlxcXCI6ICNkOGY1YTIsXFxuICBcXFwiM1xcXCI6ICNjMGViNzUsXFxuICBcXFwiNFxcXCI6ICNhOWUzNGIsXFxuICBcXFwiNVxcXCI6ICM5NGQ4MmQsXFxuICBcXFwiNlxcXCI6ICM4MmM5MWUsXFxuICBcXFwiN1xcXCI6ICM3NGI4MTYsXFxuICBcXFwiOFxcXCI6ICM2NmE4MGYsXFxuICBcXFwiOVxcXCI6ICM1Yzk0MGRcXG4pO1xcblxcbiRvYy1saW1lLTA6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjBcXFwiKTtcXG4kb2MtbGltZS0xOiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLWxpbWUtMjogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1saW1lLTM6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjNcXFwiKTtcXG4kb2MtbGltZS00OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLWxpbWUtNTogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1saW1lLTY6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjZcXFwiKTtcXG4kb2MtbGltZS03OiBtYXAtZ2V0KCRvYy1saW1lLWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLWxpbWUtODogbWFwLWdldCgkb2MtbGltZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1saW1lLTk6IG1hcC1nZXQoJG9jLWxpbWUtbGlzdCwgXFxcIjlcXFwiKTtcXG5cXG5cXG4vLyAgWWVsbG93XFxuLy8gIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxcblxcbiRvYy15ZWxsb3ctbGlzdDogKFxcbiAgXFxcIjBcXFwiOiAjZmZmOWRiLFxcbiAgXFxcIjFcXFwiOiAjZmZmM2JmLFxcbiAgXFxcIjJcXFwiOiAjZmZlYzk5LFxcbiAgXFxcIjNcXFwiOiAjZmZlMDY2LFxcbiAgXFxcIjRcXFwiOiAjZmZkNDNiLFxcbiAgXFxcIjVcXFwiOiAjZmNjNDE5LFxcbiAgXFxcIjZcXFwiOiAjZmFiMDA1LFxcbiAgXFxcIjdcXFwiOiAjZjU5ZjAwLFxcbiAgXFxcIjhcXFwiOiAjZjA4YzAwLFxcbiAgXFxcIjlcXFwiOiAjZTY3NzAwXFxuKTtcXG5cXG4kb2MteWVsbG93LTA6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiMFxcXCIpO1xcbiRvYy15ZWxsb3ctMTogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCIxXFxcIik7XFxuJG9jLXllbGxvdy0yOiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjJcXFwiKTtcXG4kb2MteWVsbG93LTM6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiM1xcXCIpO1xcbiRvYy15ZWxsb3ctNDogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI0XFxcIik7XFxuJG9jLXllbGxvdy01OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjVcXFwiKTtcXG4kb2MteWVsbG93LTY6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiNlxcXCIpO1xcbiRvYy15ZWxsb3ctNzogbWFwLWdldCgkb2MteWVsbG93LWxpc3QsIFxcXCI3XFxcIik7XFxuJG9jLXllbGxvdy04OiBtYXAtZ2V0KCRvYy15ZWxsb3ctbGlzdCwgXFxcIjhcXFwiKTtcXG4kb2MteWVsbG93LTk6IG1hcC1nZXQoJG9jLXllbGxvdy1saXN0LCBcXFwiOVxcXCIpO1xcblxcblxcbi8vICBPcmFuZ2VcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLW9yYW5nZS1saXN0OiAoXFxuICBcXFwiMFxcXCI6ICNmZmY0ZTYsXFxuICBcXFwiMVxcXCI6ICNmZmU4Y2MsXFxuICBcXFwiMlxcXCI6ICNmZmQ4YTgsXFxuICBcXFwiM1xcXCI6ICNmZmMwNzgsXFxuICBcXFwiNFxcXCI6ICNmZmE5NGQsXFxuICBcXFwiNVxcXCI6ICNmZjkyMmIsXFxuICBcXFwiNlxcXCI6ICNmZDdlMTQsXFxuICBcXFwiN1xcXCI6ICNmNzY3MDcsXFxuICBcXFwiOFxcXCI6ICNlODU5MGMsXFxuICBcXFwiOVxcXCI6ICNkOTQ4MGZcXG4pO1xcblxcbiRvYy1vcmFuZ2UtMDogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIwXFxcIik7XFxuJG9jLW9yYW5nZS0xOiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjFcXFwiKTtcXG4kb2Mtb3JhbmdlLTI6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiMlxcXCIpO1xcbiRvYy1vcmFuZ2UtMzogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCIzXFxcIik7XFxuJG9jLW9yYW5nZS00OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjRcXFwiKTtcXG4kb2Mtb3JhbmdlLTU6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiNVxcXCIpO1xcbiRvYy1vcmFuZ2UtNjogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI2XFxcIik7XFxuJG9jLW9yYW5nZS03OiBtYXAtZ2V0KCRvYy1vcmFuZ2UtbGlzdCwgXFxcIjdcXFwiKTtcXG4kb2Mtb3JhbmdlLTg6IG1hcC1nZXQoJG9jLW9yYW5nZS1saXN0LCBcXFwiOFxcXCIpO1xcbiRvYy1vcmFuZ2UtOTogbWFwLWdldCgkb2Mtb3JhbmdlLWxpc3QsIFxcXCI5XFxcIik7XFxuXFxuXFxuLy8gIENvbG9yIGxpc3RcXG4vLyAg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXFxuXFxuJG9jLWNvbG9yLXNwZWN0cnVtOiAgIDk7XFxuXFxuJG9jLWNvbG9yLWxpc3Q6IChcXG4gICRvYy1ncmF5LWxpc3Q6ICAgICAgXFxcImdyYXlcXFwiLFxcbiAgJG9jLXJlZC1saXN0OiAgICAgIFxcXCJyZWRcXFwiLFxcbiAgJG9jLXBpbmstbGlzdDogICAgICBcXFwicGlua1xcXCIsXFxuICAkb2MtZ3JhcGUtbGlzdDogICAgICBcXFwiZ3JhcGVcXFwiLFxcbiAgJG9jLXZpb2xldC1saXN0OiAgICAgIFxcXCJ2aW9sZXRcXFwiLFxcbiAgJG9jLWluZGlnby1saXN0OiAgICAgIFxcXCJpbmRpZ29cXFwiLFxcbiAgJG9jLWJsdWUtbGlzdDogICAgICBcXFwiYmx1ZVxcXCIsXFxuICAkb2MtY3lhbi1saXN0OiAgICAgIFxcXCJjeWFuXFxcIixcXG4gICRvYy10ZWFsLWxpc3Q6ICAgICAgXFxcInRlYWxcXFwiLFxcbiAgJG9jLWdyZWVuLWxpc3Q6ICAgICAgXFxcImdyZWVuXFxcIixcXG4gICRvYy1saW1lLWxpc3Q6ICAgICAgXFxcImxpbWVcXFwiLFxcbiAgJG9jLXllbGxvdy1saXN0OiAgICAgIFxcXCJ5ZWxsb3dcXFwiLFxcbiAgJG9jLW9yYW5nZS1saXN0OiAgICAgIFxcXCJvcmFuZ2VcXFwiXFxuKTtcXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./node_modules/sass-loader/dist/cjs.js!../../css/styles.scss\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../css/styles.scss?./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet%5B1%5D.rules%5B0%5D.use%5B2%5D!./node_modules/sass-loader/dist/cjs.js");
1428
1428
 
1429
1429
  /***/ }),
1430
1430
 
@@ -2832,7 +2832,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
2832
2832
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2833
2833
 
2834
2834
  "use strict";
2835
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.FONT_FAMILY),\\n/* harmony export */ \\\"THEME\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.THEME),\\n/* harmony export */ \\\"bumpVersion\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.bumpVersion),\\n/* harmony export */ \\\"defaultLang\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.defaultLang),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToBlob),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToCanvas),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToSvg),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getCommonBoundingBox),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getNonDeletedElements\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements),\\n/* harmony export */ \\\"getSceneVersion\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getSceneVersion),\\n/* harmony export */ \\\"isInvisiblySmallElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement),\\n/* harmony export */ \\\"isLinearElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.isLinearElement),\\n/* harmony export */ \\\"languages\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.languages),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.loadLibraryFromBlob),\\n/* harmony export */ \\\"mutateElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.mutateElement),\\n/* harmony export */ \\\"newElementWith\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.newElementWith),\\n/* harmony export */ \\\"restore\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restore),\\n/* harmony export */ \\\"restoreAppState\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restoreAppState),\\n/* harmony export */ \\\"restoreElements\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restoreElements),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.serializeAsJSON)\\n/* harmony export */ });\\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \\\"./index.tsx\\\");\\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../public/fonts.css */ \\\"../../../public/fonts.css\\\");\\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_public_fonts_css__WEBPACK_IMPORTED_MODULE_1__);\\n\\r\\n\\r\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_index__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9lbnRyeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpQztBQUNFO0FBQ25DLGlFQUFlLDhDQUFVLEVBQUM7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2VudHJ5LmpzPzVhZTUiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4Y2FsaWRyYXcgZnJvbSBcIi4vaW5kZXhcIjtcbmltcG9ydCBcIi4uLy4uLy4uL3B1YmxpYy9mb250cy5jc3NcIjtcbmV4cG9ydCBkZWZhdWx0IEV4Y2FsaWRyYXc7XG5leHBvcnQgKiBmcm9tIFwiLi9pbmRleFwiOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///./entry.js\\n\");\n\n//# sourceURL=webpack://Excalidraw/./entry.js?");
2835
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.FONT_FAMILY),\\n/* harmony export */ \\\"THEME\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.THEME),\\n/* harmony export */ \\\"bumpVersion\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.bumpVersion),\\n/* harmony export */ \\\"defaultLang\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.defaultLang),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToBlob),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToCanvas),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.exportToSvg),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getCommonBoundingBox),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getMaximumGroups),\\n/* harmony export */ \\\"getNonDeletedElements\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getNonDeletedElements),\\n/* harmony export */ \\\"getSceneVersion\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.getSceneVersion),\\n/* harmony export */ \\\"isInvisiblySmallElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.isInvisiblySmallElement),\\n/* harmony export */ \\\"isLinearElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.isLinearElement),\\n/* harmony export */ \\\"languages\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.languages),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.loadLibraryFromBlob),\\n/* harmony export */ \\\"mutateElement\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.mutateElement),\\n/* harmony export */ \\\"newElementWith\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.newElementWith),\\n/* harmony export */ \\\"restore\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restore),\\n/* harmony export */ \\\"restoreAppState\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restoreAppState),\\n/* harmony export */ \\\"restoreElements\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.restoreElements),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.serializeAsJSON)\\n/* harmony export */ });\\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index */ \\\"./index.tsx\\\");\\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../public/fonts.css */ \\\"../../../public/fonts.css\\\");\\n/* harmony import */ var _public_fonts_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_public_fonts_css__WEBPACK_IMPORTED_MODULE_1__);\\n\\r\\n\\r\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_index__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]);\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9lbnRyeS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUM7QUFDRTtBQUNuQyxpRUFBZSw4Q0FBVSxFQUFDO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9lbnRyeS5qcz81YWU1Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNhbGlkcmF3IGZyb20gXCIuL2luZGV4XCI7XG5pbXBvcnQgXCIuLi8uLi8uLi9wdWJsaWMvZm9udHMuY3NzXCI7XG5leHBvcnQgZGVmYXVsdCBFeGNhbGlkcmF3O1xuZXhwb3J0ICogZnJvbSBcIi4vaW5kZXhcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///./entry.js\\n\");\n\n//# sourceURL=webpack://Excalidraw/./entry.js?");
2836
2836
 
2837
2837
  /***/ }),
2838
2838
 
@@ -2843,7 +2843,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
2843
2843
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2844
2844
 
2845
2845
  "use strict";
2846
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__),\\n/* harmony export */ \\\"getSceneVersion\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.getSceneVersion),\\n/* harmony export */ \\\"isInvisiblySmallElement\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.isInvisiblySmallElement),\\n/* harmony export */ \\\"getNonDeletedElements\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.getNonDeletedElements),\\n/* harmony export */ \\\"defaultLang\\\": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_8__.defaultLang),\\n/* harmony export */ \\\"languages\\\": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_8__.languages),\\n/* harmony export */ \\\"restore\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restore),\\n/* harmony export */ \\\"restoreAppState\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restoreAppState),\\n/* harmony export */ \\\"restoreElements\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restoreElements),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToCanvas),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToBlob),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToSvg),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.serializeAsJSON),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.loadLibraryFromBlob),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.loadFromBlob),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getCommonBoundingBox),\\n/* harmony export */ \\\"isLinearElement\\\": () => (/* reexport safe */ _element_typeChecks__WEBPACK_IMPORTED_MODULE_14__.isLinearElement),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_9__.FONT_FAMILY),\\n/* harmony export */ \\\"THEME\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_9__.THEME),\\n/* harmony export */ \\\"mutateElement\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.mutateElement),\\n/* harmony export */ \\\"newElementWith\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.newElementWith),\\n/* harmony export */ \\\"bumpVersion\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.bumpVersion)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \\\"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"./node_modules/@babel/runtime/helpers/defineProperty.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _publicPath__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./publicPath */ \\\"./publicPath.js\\\");\\n/* harmony import */ var _components_InitializeApp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/InitializeApp */ \\\"../../components/InitializeApp.tsx\\\");\\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../components/App */ \\\"../../components/App.tsx\\\");\\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../css/app.scss */ \\\"../../css/app.scss\\\");\\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_css_app_scss__WEBPACK_IMPORTED_MODULE_6__);\\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../css/styles.scss */ \\\"../../css/styles.scss\\\");\\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_css_styles_scss__WEBPACK_IMPORTED_MODULE_7__);\\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../i18n */ \\\"../../i18n.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ \\\"../../../node_modules/react/jsx-runtime.js\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../data/restore */ \\\"../../data/restore.ts\\\");\\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../packages/utils */ \\\"../utils.ts\\\");\\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../element/typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../element/mutateElement */ \\\"../../element/mutateElement.ts\\\");\\n\\r\\n\\r\\nconst _excluded = [\\\"initialData\\\", \\\"UIOptions\\\"], _excluded2 = [\\\"initialData\\\", \\\"UIOptions\\\"];\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n 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 = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst Excalidraw = function (props) {\\r\\n var _a, _b, _c;\\r\\n const { onChange, initialData, excalidrawRef, onCollabButtonClick, isCollaborating, onPointerUpdate, renderTopRightUI, renderFooter, langCode = _i18n__WEBPACK_IMPORTED_MODULE_8__.defaultLang.code, viewModeEnabled, zenModeEnabled, gridModeEnabled, libraryReturnUrl, theme, name, renderCustomStats, onPaste, onDrop, detectScroll = true, handleKeyboardGlobally = false, onLibraryChange, autoFocus = false, onBeforeTextEdit, onBeforeTextSubmit, generateIdForFile, onThemeChange } = props;\\r\\n const canvasActions = (_a = props.UIOptions) === null || _a === void 0 ? void 0 : _a.canvasActions;\\r\\n const UIOptions = {\\r\\n canvasActions: _objectSpread(_objectSpread({}, _constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_UI_OPTIONS.canvasActions), canvasActions)\\r\\n };\\r\\n if (canvasActions === null || canvasActions === void 0 ? void 0 : canvasActions.export) {\\r\\n UIOptions.canvasActions.export.saveFileToDisk = (_c = (_b = canvasActions.export) === null || _b === void 0 ? void 0 : _b.saveFileToDisk) !== null && _c !== void 0 ? _c : _constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_UI_OPTIONS.canvasActions[\\\"export\\\"].saveFileToDisk;\\r\\n }\\r\\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\\r\\n // Block pinch-zooming on iOS outside of the content area\\r\\n const handleTouchMove = function (event) {\\r\\n // @ts-ignore\\r\\n if (typeof event.scale === \\\"number\\\" && event.scale !== 1) {\\r\\n event.preventDefault();\\r\\n }\\r\\n };\\r\\n document.addEventListener(\\\"touchmove\\\", handleTouchMove, {\\r\\n passive: false\\r\\n });\\r\\n return function () {\\r\\n document.removeEventListener(\\\"touchmove\\\", handleTouchMove);\\r\\n };\\r\\n }, []);\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_InitializeApp__WEBPACK_IMPORTED_MODULE_4__.InitializeApp, {\\r\\n langCode: langCode,\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_App__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"], {\\r\\n onChange: onChange,\\r\\n initialData: initialData,\\r\\n excalidrawRef: excalidrawRef,\\r\\n onCollabButtonClick: onCollabButtonClick,\\r\\n isCollaborating: isCollaborating,\\r\\n onPointerUpdate: onPointerUpdate,\\r\\n renderTopRightUI: renderTopRightUI,\\r\\n renderFooter: renderFooter,\\r\\n langCode: langCode,\\r\\n viewModeEnabled: viewModeEnabled,\\r\\n zenModeEnabled: zenModeEnabled,\\r\\n gridModeEnabled: gridModeEnabled,\\r\\n libraryReturnUrl: libraryReturnUrl,\\r\\n theme: theme,\\r\\n name: name,\\r\\n renderCustomStats: renderCustomStats,\\r\\n UIOptions: UIOptions,\\r\\n onPaste: onPaste,\\r\\n onDrop: onDrop,\\r\\n detectScroll: detectScroll,\\r\\n handleKeyboardGlobally: handleKeyboardGlobally,\\r\\n onLibraryChange: onLibraryChange,\\r\\n autoFocus: autoFocus,\\r\\n onBeforeTextEdit: onBeforeTextEdit,\\r\\n onBeforeTextSubmit: onBeforeTextSubmit,\\r\\n generateIdForFile: generateIdForFile,\\r\\n onThemeChange: onThemeChange\\r\\n })\\r\\n });\\r\\n};\\r\\nconst areEqual = function (prevProps, nextProps) {\\r\\n const { initialData: prevInitialData, UIOptions: prevUIOptions = {} } = prevProps, prev = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(prevProps, _excluded);\\r\\n const { initialData: nextInitialData, UIOptions: nextUIOptions = {} } = nextProps, next = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(nextProps, _excluded2); // comparing UIOptions\\r\\n const prevUIOptionsKeys = Object.keys(prevUIOptions);\\r\\n const nextUIOptionsKeys = Object.keys(nextUIOptions);\\r\\n if (prevUIOptionsKeys.length !== nextUIOptionsKeys.length) {\\r\\n return false;\\r\\n }\\r\\n const isUIOptionsSame = prevUIOptionsKeys.every(function (key) {\\r\\n if (key === \\\"canvasActions\\\") {\\r\\n const canvasOptionKeys = Object.keys(prevUIOptions.canvasActions);\\r\\n canvasOptionKeys.every(function (key) {\\r\\n var _a, _b, _c, _d;\\r\\n if (key === \\\"export\\\" && ((_a = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _a === void 0 ? void 0 : _a.export) && ((_b = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _b === void 0 ? void 0 : _b.export)) {\\r\\n return prevUIOptions.canvasActions.export.saveFileToDisk === nextUIOptions.canvasActions.export.saveFileToDisk;\\r\\n }\\r\\n return ((_c = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _c === void 0 ? void 0 : _c[key]) === ((_d = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _d === void 0 ? void 0 : _d[key]);\\r\\n });\\r\\n }\\r\\n return true;\\r\\n });\\r\\n const prevKeys = Object.keys(prevProps);\\r\\n const nextKeys = Object.keys(nextProps);\\r\\n return isUIOptionsSame && prevKeys.length === nextKeys.length && prevKeys.every(function (key) {\\r\\n return prev[key] === next[key];\\r\\n });\\r\\n};\\r\\nconst forwardedRefComp = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)(function (props, ref) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(Excalidraw, _objectSpread(_objectSpread({}, props), {}, {\\r\\n excalidrawRef: ref\\r\\n }));\\r\\n});\\r\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().memo(forwardedRefComp, areEqual));\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUN4QyxPQUFPLGVBQWUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUc7UUFDM0YsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLGtEQUFVLENBQUMsVUFBVSxLQUFLLEVBQUUsR0FBRztJQUNuRSxPQUFPLGFBQWEsd0RBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQy9FLGFBQWEsRUFBRSxHQUFHO0tBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQUM7QUFDSCw4RUFBNEIsaURBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsRUFBQztBQUM2QjtBQUM1QztBQUMyQjtBQUNnRztBQUNwSDtBQUNOO0FBQ29DIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vaW5kZXgudHN4P2NlNzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiaW5pdGlhbERhdGFcIiwgXCJVSU9wdGlvbnNcIl0sXG4gICAgICBfZXhjbHVkZWQyID0gW1wiaW5pdGlhbERhdGFcIiwgXCJVSU9wdGlvbnNcIl07XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHsgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyB9IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9wdWJsaWNQYXRoXCI7XG5pbXBvcnQgeyBJbml0aWFsaXplQXBwIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvSW5pdGlhbGl6ZUFwcFwiO1xuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9BcHBcIjtcbmltcG9ydCBcIi4uLy4uL2Nzcy9hcHAuc2Nzc1wiO1xuaW1wb3J0IFwiLi4vLi4vY3NzL3N0eWxlcy5zY3NzXCI7XG5pbXBvcnQgeyBkZWZhdWx0TGFuZyB9IGZyb20gXCIuLi8uLi9pMThuXCI7XG5pbXBvcnQgeyBERUZBVUxUX1VJX09QVElPTlMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuXG5jb25zdCBFeGNhbGlkcmF3ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBvbkNoYW5nZSxcbiAgICBpbml0aWFsRGF0YSxcbiAgICBleGNhbGlkcmF3UmVmLFxuICAgIG9uQ29sbGFiQnV0dG9uQ2xpY2ssXG4gICAgaXNDb2xsYWJvcmF0aW5nLFxuICAgIG9uUG9pbnRlclVwZGF0ZSxcbiAgICByZW5kZXJUb3BSaWdodFVJLFxuICAgIHJlbmRlckZvb3RlcixcbiAgICBsYW5nQ29kZSA9IGRlZmF1bHRMYW5nLmNvZGUsXG4gICAgdmlld01vZGVFbmFibGVkLFxuICAgIHplbk1vZGVFbmFibGVkLFxuICAgIGdyaWRNb2RlRW5hYmxlZCxcbiAgICBsaWJyYXJ5UmV0dXJuVXJsLFxuICAgIHRoZW1lLFxuICAgIG5hbWUsXG4gICAgcmVuZGVyQ3VzdG9tU3RhdHMsXG4gICAgb25QYXN0ZSxcbiAgICBvbkRyb3AsXG4gICAgZGV0ZWN0U2Nyb2xsID0gdHJ1ZSxcbiAgICBoYW5kbGVLZXlib2FyZEdsb2JhbGx5ID0gZmFsc2UsXG4gICAgb25MaWJyYXJ5Q2hhbmdlLFxuICAgIGF1dG9Gb2N1cyA9IGZhbHNlLFxuICAgIG9uQmVmb3JlVGV4dEVkaXQsXG4gICAgb25CZWZvcmVUZXh0U3VibWl0LFxuICAgIGdlbmVyYXRlSWRGb3JGaWxlLFxuICAgIG9uVGhlbWVDaGFuZ2VcbiAgfSA9IHByb3BzO1xuICBjb25zdCBjYW52YXNBY3Rpb25zID0gcHJvcHMuVUlPcHRpb25zPy5jYW52YXNBY3Rpb25zO1xuICBjb25zdCBVSU9wdGlvbnMgPSB7XG4gICAgY2FudmFzQWN0aW9uczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBERUZBVUxUX1VJX09QVElPTlMuY2FudmFzQWN0aW9ucyksIGNhbnZhc0FjdGlvbnMpXG4gIH07XG5cbiAgaWYgKGNhbnZhc0FjdGlvbnM/LmV4cG9ydCkge1xuICAgIFVJT3B0aW9ucy5jYW52YXNBY3Rpb25zLmV4cG9ydC5zYXZlRmlsZVRvRGlzayA9IGNhbnZhc0FjdGlvbnMuZXhwb3J0Py5zYXZlRmlsZVRvRGlzayA/PyBERUZBVUxUX1VJX09QVElPTlMuY2FudmFzQWN0aW9ucy5leHBvcnQuc2F2ZUZpbGVUb0Rpc2s7XG4gIH1cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIC8vIEJsb2NrIHBpbmNoLXpvb21pbmcgb24gaU9TIG91dHNpZGUgb2YgdGhlIGNvbnRlbnQgYXJlYVxuICAgIGNvbnN0IGhhbmRsZVRvdWNoTW92ZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHR5cGVvZiBldmVudC5zY2FsZSA9PT0gXCJudW1iZXJcIiAmJiBldmVudC5zY2FsZSAhPT0gMSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2htb3ZlXCIsIGhhbmRsZVRvdWNoTW92ZSwge1xuICAgICAgcGFzc2l2ZTogZmFsc2VcbiAgICB9KTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBoYW5kbGVUb3VjaE1vdmUpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEluaXRpYWxpemVBcHAsIHtcbiAgICBsYW5nQ29kZTogbGFuZ0NvZGUsXG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KEFwcCwge1xuICAgICAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICAgICAgaW5pdGlhbERhdGE6IGluaXRpYWxEYXRhLFxuICAgICAgZXhjYWxpZHJhd1JlZjogZXhjYWxpZHJhd1JlZixcbiAgICAgIG9uQ29sbGFiQnV0dG9uQ2xpY2s6IG9uQ29sbGFiQnV0dG9uQ2xpY2ssXG4gICAgICBpc0NvbGxhYm9yYXRpbmc6IGlzQ29sbGFib3JhdGluZyxcbiAgICAgIG9uUG9pbnRlclVwZGF0ZTogb25Qb2ludGVyVXBkYXRlLFxuICAgICAgcmVuZGVyVG9wUmlnaHRVSTogcmVuZGVyVG9wUmlnaHRVSSxcbiAgICAgIHJlbmRlckZvb3RlcjogcmVuZGVyRm9vdGVyLFxuICAgICAgbGFuZ0NvZGU6IGxhbmdDb2RlLFxuICAgICAgdmlld01vZGVFbmFibGVkOiB2aWV3TW9kZUVuYWJsZWQsXG4gICAgICB6ZW5Nb2RlRW5hYmxlZDogemVuTW9kZUVuYWJsZWQsXG4gICAgICBncmlkTW9kZUVuYWJsZWQ6IGdyaWRNb2RlRW5hYmxlZCxcbiAgICAgIGxpYnJhcnlSZXR1cm5Vcmw6IGxpYnJhcnlSZXR1cm5VcmwsXG4gICAgICB0aGVtZTogdGhlbWUsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgcmVuZGVyQ3VzdG9tU3RhdHM6IHJlbmRlckN1c3RvbVN0YXRzLFxuICAgICAgVUlPcHRpb25zOiBVSU9wdGlvbnMsXG4gICAgICBvblBhc3RlOiBvblBhc3RlLFxuICAgICAgb25Ecm9wOiBvbkRyb3AsXG4gICAgICBkZXRlY3RTY3JvbGw6IGRldGVjdFNjcm9sbCxcbiAgICAgIGhhbmRsZUtleWJvYXJkR2xvYmFsbHk6IGhhbmRsZUtleWJvYXJkR2xvYmFsbHksXG4gICAgICBvbkxpYnJhcnlDaGFuZ2U6IG9uTGlicmFyeUNoYW5nZSxcbiAgICAgIGF1dG9Gb2N1czogYXV0b0ZvY3VzLFxuICAgICAgb25CZWZvcmVUZXh0RWRpdDogb25CZWZvcmVUZXh0RWRpdCxcbiAgICAgIG9uQmVmb3JlVGV4dFN1Ym1pdDogb25CZWZvcmVUZXh0U3VibWl0LFxuICAgICAgZ2VuZXJhdGVJZEZvckZpbGU6IGdlbmVyYXRlSWRGb3JGaWxlLFxuICAgICAgb25UaGVtZUNoYW5nZTogb25UaGVtZUNoYW5nZVxuICAgIH0pXG4gIH0pO1xufTtcblxuY29uc3QgYXJlRXF1YWwgPSBmdW5jdGlvbiAocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGluaXRpYWxEYXRhOiBwcmV2SW5pdGlhbERhdGEsXG4gICAgVUlPcHRpb25zOiBwcmV2VUlPcHRpb25zID0ge31cbiAgfSA9IHByZXZQcm9wcyxcbiAgICAgICAgcHJldiA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhwcmV2UHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgY29uc3Qge1xuICAgIGluaXRpYWxEYXRhOiBuZXh0SW5pdGlhbERhdGEsXG4gICAgVUlPcHRpb25zOiBuZXh0VUlPcHRpb25zID0ge31cbiAgfSA9IG5leHRQcm9wcyxcbiAgICAgICAgbmV4dCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhuZXh0UHJvcHMsIF9leGNsdWRlZDIpOyAvLyBjb21wYXJpbmcgVUlPcHRpb25zXG5cblxuICBjb25zdCBwcmV2VUlPcHRpb25zS2V5cyA9IE9iamVjdC5rZXlzKHByZXZVSU9wdGlvbnMpO1xuICBjb25zdCBuZXh0VUlPcHRpb25zS2V5cyA9IE9iamVjdC5rZXlzKG5leHRVSU9wdGlvbnMpO1xuXG4gIGlmIChwcmV2VUlPcHRpb25zS2V5cy5sZW5ndGggIT09IG5leHRVSU9wdGlvbnNLZXlzLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGlzVUlPcHRpb25zU2FtZSA9IHByZXZVSU9wdGlvbnNLZXlzLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcbiAgICBpZiAoa2V5ID09PSBcImNhbnZhc0FjdGlvbnNcIikge1xuICAgICAgY29uc3QgY2FudmFzT3B0aW9uS2V5cyA9IE9iamVjdC5rZXlzKHByZXZVSU9wdGlvbnMuY2FudmFzQWN0aW9ucyk7XG4gICAgICBjYW52YXNPcHRpb25LZXlzLmV2ZXJ5KGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PT0gXCJleHBvcnRcIiAmJiBwcmV2VUlPcHRpb25zPy5jYW52YXNBY3Rpb25zPy5leHBvcnQgJiYgbmV4dFVJT3B0aW9ucz8uY2FudmFzQWN0aW9ucz8uZXhwb3J0KSB7XG4gICAgICAgICAgcmV0dXJuIHByZXZVSU9wdGlvbnMuY2FudmFzQWN0aW9ucy5leHBvcnQuc2F2ZUZpbGVUb0Rpc2sgPT09IG5leHRVSU9wdGlvbnMuY2FudmFzQWN0aW9ucy5leHBvcnQuc2F2ZUZpbGVUb0Rpc2s7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJldlVJT3B0aW9ucz8uY2FudmFzQWN0aW9ucz8uW2tleV0gPT09IG5leHRVSU9wdGlvbnM/LmNhbnZhc0FjdGlvbnM/LltrZXldO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xuICBjb25zdCBwcmV2S2V5cyA9IE9iamVjdC5rZXlzKHByZXZQcm9wcyk7XG4gIGNvbnN0IG5leHRLZXlzID0gT2JqZWN0LmtleXMobmV4dFByb3BzKTtcbiAgcmV0dXJuIGlzVUlPcHRpb25zU2FtZSAmJiBwcmV2S2V5cy5sZW5ndGggPT09IG5leHRLZXlzLmxlbmd0aCAmJiBwcmV2S2V5cy5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHByZXZba2V5XSA9PT0gbmV4dFtrZXldO1xuICB9KTtcbn07XG5cbmNvbnN0IGZvcndhcmRlZFJlZkNvbXAgPSAvKiNfX1BVUkVfXyovZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goRXhjYWxpZHJhdywgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBwcm9wcyksIHt9LCB7XG4gICAgZXhjYWxpZHJhd1JlZjogcmVmXG4gIH0pKTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgLyojX19QVVJFX18qL1JlYWN0Lm1lbW8oZm9yd2FyZGVkUmVmQ29tcCwgYXJlRXF1YWwpO1xuZXhwb3J0IHsgZ2V0U2NlbmVWZXJzaW9uLCBpc0ludmlzaWJseVNtYWxsRWxlbWVudCwgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRcIjtcbmV4cG9ydCB7IGRlZmF1bHRMYW5nLCBsYW5ndWFnZXMgfSBmcm9tIFwiLi4vLi4vaTE4blwiO1xuZXhwb3J0IHsgcmVzdG9yZSwgcmVzdG9yZUFwcFN0YXRlLCByZXN0b3JlRWxlbWVudHMgfSBmcm9tIFwiLi4vLi4vZGF0YS9yZXN0b3JlXCI7XG5leHBvcnQgeyBleHBvcnRUb0NhbnZhcywgZXhwb3J0VG9CbG9iLCBleHBvcnRUb1N2Zywgc2VyaWFsaXplQXNKU09OLCBsb2FkTGlicmFyeUZyb21CbG9iLCBsb2FkRnJvbUJsb2IsIGdldEZyZWVEcmF3U3ZnUGF0aCwgZ2V0Q29tbW9uQm91bmRpbmdCb3ggfSBmcm9tIFwiLi4vLi4vcGFja2FnZXMvdXRpbHNcIjtcbmV4cG9ydCB7IGlzTGluZWFyRWxlbWVudCB9IGZyb20gXCIuLi8uLi9lbGVtZW50L3R5cGVDaGVja3NcIjtcbmV4cG9ydCB7IEZPTlRfRkFNSUxZLCBUSEVNRSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmV4cG9ydCB7IG11dGF0ZUVsZW1lbnQsIG5ld0VsZW1lbnRXaXRoLCBidW1wVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9lbGVtZW50L211dGF0ZUVsZW1lbnRcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///./index.tsx\\n\");\n\n//# sourceURL=webpack://Excalidraw/./index.tsx?");
2846
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"default\\\": () => (__WEBPACK_DEFAULT_EXPORT__),\\n/* harmony export */ \\\"getSceneVersion\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.getSceneVersion),\\n/* harmony export */ \\\"isInvisiblySmallElement\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.isInvisiblySmallElement),\\n/* harmony export */ \\\"getNonDeletedElements\\\": () => (/* reexport safe */ _element__WEBPACK_IMPORTED_MODULE_11__.getNonDeletedElements),\\n/* harmony export */ \\\"defaultLang\\\": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_8__.defaultLang),\\n/* harmony export */ \\\"languages\\\": () => (/* reexport safe */ _i18n__WEBPACK_IMPORTED_MODULE_8__.languages),\\n/* harmony export */ \\\"restore\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restore),\\n/* harmony export */ \\\"restoreAppState\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restoreAppState),\\n/* harmony export */ \\\"restoreElements\\\": () => (/* reexport safe */ _data_restore__WEBPACK_IMPORTED_MODULE_12__.restoreElements),\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToCanvas),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToBlob),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.exportToSvg),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.serializeAsJSON),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.loadLibraryFromBlob),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.loadFromBlob),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getCommonBoundingBox),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _packages_utils__WEBPACK_IMPORTED_MODULE_13__.getMaximumGroups),\\n/* harmony export */ \\\"isLinearElement\\\": () => (/* reexport safe */ _element_typeChecks__WEBPACK_IMPORTED_MODULE_14__.isLinearElement),\\n/* harmony export */ \\\"FONT_FAMILY\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_9__.FONT_FAMILY),\\n/* harmony export */ \\\"THEME\\\": () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_9__.THEME),\\n/* harmony export */ \\\"mutateElement\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.mutateElement),\\n/* harmony export */ \\\"newElementWith\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.newElementWith),\\n/* harmony export */ \\\"bumpVersion\\\": () => (/* reexport safe */ _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__.bumpVersion)\\n/* harmony export */ });\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \\\"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__);\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \\\"./node_modules/@babel/runtime/helpers/defineProperty.js\\\");\\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__);\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \\\"react\\\");\\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\\n/* harmony import */ var _publicPath__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./publicPath */ \\\"./publicPath.js\\\");\\n/* harmony import */ var _components_InitializeApp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/InitializeApp */ \\\"../../components/InitializeApp.tsx\\\");\\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../components/App */ \\\"../../components/App.tsx\\\");\\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../css/app.scss */ \\\"../../css/app.scss\\\");\\n/* harmony import */ var _css_app_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_css_app_scss__WEBPACK_IMPORTED_MODULE_6__);\\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../css/styles.scss */ \\\"../../css/styles.scss\\\");\\n/* harmony import */ var _css_styles_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_css_styles_scss__WEBPACK_IMPORTED_MODULE_7__);\\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../i18n */ \\\"../../i18n.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ \\\"../../../node_modules/react/jsx-runtime.js\\\");\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../element */ \\\"../../element/index.ts\\\");\\n/* harmony import */ var _data_restore__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../data/restore */ \\\"../../data/restore.ts\\\");\\n/* harmony import */ var _packages_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../packages/utils */ \\\"../utils.ts\\\");\\n/* harmony import */ var _element_typeChecks__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../element/typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var _element_mutateElement__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../element/mutateElement */ \\\"../../element/mutateElement.ts\\\");\\n\\r\\n\\r\\nconst _excluded = [\\\"initialData\\\", \\\"UIOptions\\\"], _excluded2 = [\\\"initialData\\\", \\\"UIOptions\\\"];\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n 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 = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1___default()(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\nconst Excalidraw = function (props) {\\r\\n var _a, _b, _c;\\r\\n const { onChange, initialData, excalidrawRef, onCollabButtonClick, isCollaborating, onPointerUpdate, renderTopRightUI, renderFooter, langCode = _i18n__WEBPACK_IMPORTED_MODULE_8__.defaultLang.code, viewModeEnabled, zenModeEnabled, gridModeEnabled, libraryReturnUrl, theme, name, renderCustomStats, onPaste, onDrop, detectScroll = true, handleKeyboardGlobally = false, onLibraryChange, autoFocus = false, onBeforeTextEdit, onBeforeTextSubmit, generateIdForFile, onThemeChange } = props;\\r\\n const canvasActions = (_a = props.UIOptions) === null || _a === void 0 ? void 0 : _a.canvasActions;\\r\\n const UIOptions = {\\r\\n canvasActions: _objectSpread(_objectSpread({}, _constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_UI_OPTIONS.canvasActions), canvasActions)\\r\\n };\\r\\n if (canvasActions === null || canvasActions === void 0 ? void 0 : canvasActions.export) {\\r\\n UIOptions.canvasActions.export.saveFileToDisk = (_c = (_b = canvasActions.export) === null || _b === void 0 ? void 0 : _b.saveFileToDisk) !== null && _c !== void 0 ? _c : _constants__WEBPACK_IMPORTED_MODULE_9__.DEFAULT_UI_OPTIONS.canvasActions[\\\"export\\\"].saveFileToDisk;\\r\\n }\\r\\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {\\r\\n // Block pinch-zooming on iOS outside of the content area\\r\\n const handleTouchMove = function (event) {\\r\\n // @ts-ignore\\r\\n if (typeof event.scale === \\\"number\\\" && event.scale !== 1) {\\r\\n event.preventDefault();\\r\\n }\\r\\n };\\r\\n document.addEventListener(\\\"touchmove\\\", handleTouchMove, {\\r\\n passive: false\\r\\n });\\r\\n return function () {\\r\\n document.removeEventListener(\\\"touchmove\\\", handleTouchMove);\\r\\n };\\r\\n }, []);\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_InitializeApp__WEBPACK_IMPORTED_MODULE_4__.InitializeApp, {\\r\\n langCode: langCode,\\r\\n children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_components_App__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"], {\\r\\n onChange: onChange,\\r\\n initialData: initialData,\\r\\n excalidrawRef: excalidrawRef,\\r\\n onCollabButtonClick: onCollabButtonClick,\\r\\n isCollaborating: isCollaborating,\\r\\n onPointerUpdate: onPointerUpdate,\\r\\n renderTopRightUI: renderTopRightUI,\\r\\n renderFooter: renderFooter,\\r\\n langCode: langCode,\\r\\n viewModeEnabled: viewModeEnabled,\\r\\n zenModeEnabled: zenModeEnabled,\\r\\n gridModeEnabled: gridModeEnabled,\\r\\n libraryReturnUrl: libraryReturnUrl,\\r\\n theme: theme,\\r\\n name: name,\\r\\n renderCustomStats: renderCustomStats,\\r\\n UIOptions: UIOptions,\\r\\n onPaste: onPaste,\\r\\n onDrop: onDrop,\\r\\n detectScroll: detectScroll,\\r\\n handleKeyboardGlobally: handleKeyboardGlobally,\\r\\n onLibraryChange: onLibraryChange,\\r\\n autoFocus: autoFocus,\\r\\n onBeforeTextEdit: onBeforeTextEdit,\\r\\n onBeforeTextSubmit: onBeforeTextSubmit,\\r\\n generateIdForFile: generateIdForFile,\\r\\n onThemeChange: onThemeChange\\r\\n })\\r\\n });\\r\\n};\\r\\nconst areEqual = function (prevProps, nextProps) {\\r\\n const { initialData: prevInitialData, UIOptions: prevUIOptions = {} } = prevProps, prev = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(prevProps, _excluded);\\r\\n const { initialData: nextInitialData, UIOptions: nextUIOptions = {} } = nextProps, next = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(nextProps, _excluded2); // comparing UIOptions\\r\\n const prevUIOptionsKeys = Object.keys(prevUIOptions);\\r\\n const nextUIOptionsKeys = Object.keys(nextUIOptions);\\r\\n if (prevUIOptionsKeys.length !== nextUIOptionsKeys.length) {\\r\\n return false;\\r\\n }\\r\\n const isUIOptionsSame = prevUIOptionsKeys.every(function (key) {\\r\\n if (key === \\\"canvasActions\\\") {\\r\\n const canvasOptionKeys = Object.keys(prevUIOptions.canvasActions);\\r\\n canvasOptionKeys.every(function (key) {\\r\\n var _a, _b, _c, _d;\\r\\n if (key === \\\"export\\\" && ((_a = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _a === void 0 ? void 0 : _a.export) && ((_b = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _b === void 0 ? void 0 : _b.export)) {\\r\\n return prevUIOptions.canvasActions.export.saveFileToDisk === nextUIOptions.canvasActions.export.saveFileToDisk;\\r\\n }\\r\\n return ((_c = prevUIOptions === null || prevUIOptions === void 0 ? void 0 : prevUIOptions.canvasActions) === null || _c === void 0 ? void 0 : _c[key]) === ((_d = nextUIOptions === null || nextUIOptions === void 0 ? void 0 : nextUIOptions.canvasActions) === null || _d === void 0 ? void 0 : _d[key]);\\r\\n });\\r\\n }\\r\\n return true;\\r\\n });\\r\\n const prevKeys = Object.keys(prevProps);\\r\\n const nextKeys = Object.keys(nextProps);\\r\\n return isUIOptionsSame && prevKeys.length === nextKeys.length && prevKeys.every(function (key) {\\r\\n return prev[key] === next[key];\\r\\n });\\r\\n};\\r\\nconst forwardedRefComp = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)(function (props, ref) {\\r\\n return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(Excalidraw, _objectSpread(_objectSpread({}, props), {}, {\\r\\n excalidrawRef: ref\\r\\n }));\\r\\n});\\r\\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default().memo(forwardedRefComp, areEqual));\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFDeEMsT0FBTyxlQUFlLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHO1FBQzNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxrREFBVSxDQUFDLFVBQVUsS0FBSyxFQUFFLEdBQUc7SUFDbkUsT0FBTyxhQUFhLHdEQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUMvRSxhQUFhLEVBQUUsR0FBRztLQUNuQixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxDQUFDO0FBQ0gsOEVBQTRCLGlEQUFVLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLEVBQUM7QUFDNkI7QUFDNUM7QUFDMkI7QUFDa0g7QUFDdEk7QUFDTjtBQUNvQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2luZGV4LnRzeD9jZTc0Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImluaXRpYWxEYXRhXCIsIFwiVUlPcHRpb25zXCJdLFxuICAgICAgX2V4Y2x1ZGVkMiA9IFtcImluaXRpYWxEYXRhXCIsIFwiVUlPcHRpb25zXCJdO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSB7IHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsgfSBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBcIi4vcHVibGljUGF0aFwiO1xuaW1wb3J0IHsgSW5pdGlhbGl6ZUFwcCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL0luaXRpYWxpemVBcHBcIjtcbmltcG9ydCBBcHAgZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvQXBwXCI7XG5pbXBvcnQgXCIuLi8uLi9jc3MvYXBwLnNjc3NcIjtcbmltcG9ydCBcIi4uLy4uL2Nzcy9zdHlsZXMuc2Nzc1wiO1xuaW1wb3J0IHsgZGVmYXVsdExhbmcgfSBmcm9tIFwiLi4vLi4vaTE4blwiO1xuaW1wb3J0IHsgREVGQVVMVF9VSV9PUFRJT05TIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcblxuY29uc3QgRXhjYWxpZHJhdyA9IGZ1bmN0aW9uIChwcm9wcykge1xuICBjb25zdCB7XG4gICAgb25DaGFuZ2UsXG4gICAgaW5pdGlhbERhdGEsXG4gICAgZXhjYWxpZHJhd1JlZixcbiAgICBvbkNvbGxhYkJ1dHRvbkNsaWNrLFxuICAgIGlzQ29sbGFib3JhdGluZyxcbiAgICBvblBvaW50ZXJVcGRhdGUsXG4gICAgcmVuZGVyVG9wUmlnaHRVSSxcbiAgICByZW5kZXJGb290ZXIsXG4gICAgbGFuZ0NvZGUgPSBkZWZhdWx0TGFuZy5jb2RlLFxuICAgIHZpZXdNb2RlRW5hYmxlZCxcbiAgICB6ZW5Nb2RlRW5hYmxlZCxcbiAgICBncmlkTW9kZUVuYWJsZWQsXG4gICAgbGlicmFyeVJldHVyblVybCxcbiAgICB0aGVtZSxcbiAgICBuYW1lLFxuICAgIHJlbmRlckN1c3RvbVN0YXRzLFxuICAgIG9uUGFzdGUsXG4gICAgb25Ecm9wLFxuICAgIGRldGVjdFNjcm9sbCA9IHRydWUsXG4gICAgaGFuZGxlS2V5Ym9hcmRHbG9iYWxseSA9IGZhbHNlLFxuICAgIG9uTGlicmFyeUNoYW5nZSxcbiAgICBhdXRvRm9jdXMgPSBmYWxzZSxcbiAgICBvbkJlZm9yZVRleHRFZGl0LFxuICAgIG9uQmVmb3JlVGV4dFN1Ym1pdCxcbiAgICBnZW5lcmF0ZUlkRm9yRmlsZSxcbiAgICBvblRoZW1lQ2hhbmdlXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgY2FudmFzQWN0aW9ucyA9IHByb3BzLlVJT3B0aW9ucz8uY2FudmFzQWN0aW9ucztcbiAgY29uc3QgVUlPcHRpb25zID0ge1xuICAgIGNhbnZhc0FjdGlvbnM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgREVGQVVMVF9VSV9PUFRJT05TLmNhbnZhc0FjdGlvbnMpLCBjYW52YXNBY3Rpb25zKVxuICB9O1xuXG4gIGlmIChjYW52YXNBY3Rpb25zPy5leHBvcnQpIHtcbiAgICBVSU9wdGlvbnMuY2FudmFzQWN0aW9ucy5leHBvcnQuc2F2ZUZpbGVUb0Rpc2sgPSBjYW52YXNBY3Rpb25zLmV4cG9ydD8uc2F2ZUZpbGVUb0Rpc2sgPz8gREVGQVVMVF9VSV9PUFRJT05TLmNhbnZhc0FjdGlvbnMuZXhwb3J0LnNhdmVGaWxlVG9EaXNrO1xuICB9XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAvLyBCbG9jayBwaW5jaC16b29taW5nIG9uIGlPUyBvdXRzaWRlIG9mIHRoZSBjb250ZW50IGFyZWFcbiAgICBjb25zdCBoYW5kbGVUb3VjaE1vdmUgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmICh0eXBlb2YgZXZlbnQuc2NhbGUgPT09IFwibnVtYmVyXCIgJiYgZXZlbnQuc2NhbGUgIT09IDEpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInRvdWNobW92ZVwiLCBoYW5kbGVUb3VjaE1vdmUsIHtcbiAgICAgIHBhc3NpdmU6IGZhbHNlXG4gICAgfSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJ0b3VjaG1vdmVcIiwgaGFuZGxlVG91Y2hNb3ZlKTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChJbml0aWFsaXplQXBwLCB7XG4gICAgbGFuZ0NvZGU6IGxhbmdDb2RlLFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChBcHAsIHtcbiAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZSxcbiAgICAgIGluaXRpYWxEYXRhOiBpbml0aWFsRGF0YSxcbiAgICAgIGV4Y2FsaWRyYXdSZWY6IGV4Y2FsaWRyYXdSZWYsXG4gICAgICBvbkNvbGxhYkJ1dHRvbkNsaWNrOiBvbkNvbGxhYkJ1dHRvbkNsaWNrLFxuICAgICAgaXNDb2xsYWJvcmF0aW5nOiBpc0NvbGxhYm9yYXRpbmcsXG4gICAgICBvblBvaW50ZXJVcGRhdGU6IG9uUG9pbnRlclVwZGF0ZSxcbiAgICAgIHJlbmRlclRvcFJpZ2h0VUk6IHJlbmRlclRvcFJpZ2h0VUksXG4gICAgICByZW5kZXJGb290ZXI6IHJlbmRlckZvb3RlcixcbiAgICAgIGxhbmdDb2RlOiBsYW5nQ29kZSxcbiAgICAgIHZpZXdNb2RlRW5hYmxlZDogdmlld01vZGVFbmFibGVkLFxuICAgICAgemVuTW9kZUVuYWJsZWQ6IHplbk1vZGVFbmFibGVkLFxuICAgICAgZ3JpZE1vZGVFbmFibGVkOiBncmlkTW9kZUVuYWJsZWQsXG4gICAgICBsaWJyYXJ5UmV0dXJuVXJsOiBsaWJyYXJ5UmV0dXJuVXJsLFxuICAgICAgdGhlbWU6IHRoZW1lLFxuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHJlbmRlckN1c3RvbVN0YXRzOiByZW5kZXJDdXN0b21TdGF0cyxcbiAgICAgIFVJT3B0aW9uczogVUlPcHRpb25zLFxuICAgICAgb25QYXN0ZTogb25QYXN0ZSxcbiAgICAgIG9uRHJvcDogb25Ecm9wLFxuICAgICAgZGV0ZWN0U2Nyb2xsOiBkZXRlY3RTY3JvbGwsXG4gICAgICBoYW5kbGVLZXlib2FyZEdsb2JhbGx5OiBoYW5kbGVLZXlib2FyZEdsb2JhbGx5LFxuICAgICAgb25MaWJyYXJ5Q2hhbmdlOiBvbkxpYnJhcnlDaGFuZ2UsXG4gICAgICBhdXRvRm9jdXM6IGF1dG9Gb2N1cyxcbiAgICAgIG9uQmVmb3JlVGV4dEVkaXQ6IG9uQmVmb3JlVGV4dEVkaXQsXG4gICAgICBvbkJlZm9yZVRleHRTdWJtaXQ6IG9uQmVmb3JlVGV4dFN1Ym1pdCxcbiAgICAgIGdlbmVyYXRlSWRGb3JGaWxlOiBnZW5lcmF0ZUlkRm9yRmlsZSxcbiAgICAgIG9uVGhlbWVDaGFuZ2U6IG9uVGhlbWVDaGFuZ2VcbiAgICB9KVxuICB9KTtcbn07XG5cbmNvbnN0IGFyZUVxdWFsID0gZnVuY3Rpb24gKHByZXZQcm9wcywgbmV4dFByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBpbml0aWFsRGF0YTogcHJldkluaXRpYWxEYXRhLFxuICAgIFVJT3B0aW9uczogcHJldlVJT3B0aW9ucyA9IHt9XG4gIH0gPSBwcmV2UHJvcHMsXG4gICAgICAgIHByZXYgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJldlByb3BzLCBfZXhjbHVkZWQpO1xuXG4gIGNvbnN0IHtcbiAgICBpbml0aWFsRGF0YTogbmV4dEluaXRpYWxEYXRhLFxuICAgIFVJT3B0aW9uczogbmV4dFVJT3B0aW9ucyA9IHt9XG4gIH0gPSBuZXh0UHJvcHMsXG4gICAgICAgIG5leHQgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMobmV4dFByb3BzLCBfZXhjbHVkZWQyKTsgLy8gY29tcGFyaW5nIFVJT3B0aW9uc1xuXG5cbiAgY29uc3QgcHJldlVJT3B0aW9uc0tleXMgPSBPYmplY3Qua2V5cyhwcmV2VUlPcHRpb25zKTtcbiAgY29uc3QgbmV4dFVJT3B0aW9uc0tleXMgPSBPYmplY3Qua2V5cyhuZXh0VUlPcHRpb25zKTtcblxuICBpZiAocHJldlVJT3B0aW9uc0tleXMubGVuZ3RoICE9PSBuZXh0VUlPcHRpb25zS2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBpc1VJT3B0aW9uc1NhbWUgPSBwcmV2VUlPcHRpb25zS2V5cy5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGtleSA9PT0gXCJjYW52YXNBY3Rpb25zXCIpIHtcbiAgICAgIGNvbnN0IGNhbnZhc09wdGlvbktleXMgPSBPYmplY3Qua2V5cyhwcmV2VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMpO1xuICAgICAgY2FudmFzT3B0aW9uS2V5cy5ldmVyeShmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIGlmIChrZXkgPT09IFwiZXhwb3J0XCIgJiYgcHJldlVJT3B0aW9ucz8uY2FudmFzQWN0aW9ucz8uZXhwb3J0ICYmIG5leHRVSU9wdGlvbnM/LmNhbnZhc0FjdGlvbnM/LmV4cG9ydCkge1xuICAgICAgICAgIHJldHVybiBwcmV2VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuZXhwb3J0LnNhdmVGaWxlVG9EaXNrID09PSBuZXh0VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuZXhwb3J0LnNhdmVGaWxlVG9EaXNrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByZXZVSU9wdGlvbnM/LmNhbnZhc0FjdGlvbnM/LltrZXldID09PSBuZXh0VUlPcHRpb25zPy5jYW52YXNBY3Rpb25zPy5ba2V5XTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9KTtcbiAgY29uc3QgcHJldktleXMgPSBPYmplY3Qua2V5cyhwcmV2UHJvcHMpO1xuICBjb25zdCBuZXh0S2V5cyA9IE9iamVjdC5rZXlzKG5leHRQcm9wcyk7XG4gIHJldHVybiBpc1VJT3B0aW9uc1NhbWUgJiYgcHJldktleXMubGVuZ3RoID09PSBuZXh0S2V5cy5sZW5ndGggJiYgcHJldktleXMuZXZlcnkoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBwcmV2W2tleV0gPT09IG5leHRba2V5XTtcbiAgfSk7XG59O1xuXG5jb25zdCBmb3J3YXJkZWRSZWZDb21wID0gLyojX19QVVJFX18qL2ZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KEV4Y2FsaWRyYXcsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcHJvcHMpLCB7fSwge1xuICAgIGV4Y2FsaWRyYXdSZWY6IHJlZlxuICB9KSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi9SZWFjdC5tZW1vKGZvcndhcmRlZFJlZkNvbXAsIGFyZUVxdWFsKTtcbmV4cG9ydCB7IGdldFNjZW5lVmVyc2lvbiwgaXNJbnZpc2libHlTbWFsbEVsZW1lbnQsIGdldE5vbkRlbGV0ZWRFbGVtZW50cyB9IGZyb20gXCIuLi8uLi9lbGVtZW50XCI7XG5leHBvcnQgeyBkZWZhdWx0TGFuZywgbGFuZ3VhZ2VzIH0gZnJvbSBcIi4uLy4uL2kxOG5cIjtcbmV4cG9ydCB7IHJlc3RvcmUsIHJlc3RvcmVBcHBTdGF0ZSwgcmVzdG9yZUVsZW1lbnRzIH0gZnJvbSBcIi4uLy4uL2RhdGEvcmVzdG9yZVwiO1xuZXhwb3J0IHsgZXhwb3J0VG9DYW52YXMsIGV4cG9ydFRvQmxvYiwgZXhwb3J0VG9TdmcsIHNlcmlhbGl6ZUFzSlNPTiwgbG9hZExpYnJhcnlGcm9tQmxvYiwgbG9hZEZyb21CbG9iLCBnZXRGcmVlRHJhd1N2Z1BhdGgsIGdldENvbW1vbkJvdW5kaW5nQm94LCBnZXRNYXhpbXVtR3JvdXBzIH0gZnJvbSBcIi4uLy4uL3BhY2thZ2VzL3V0aWxzXCI7XG5leHBvcnQgeyBpc0xpbmVhckVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5leHBvcnQgeyBGT05UX0ZBTUlMWSwgVEhFTUUgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5leHBvcnQgeyBtdXRhdGVFbGVtZW50LCBuZXdFbGVtZW50V2l0aCwgYnVtcFZlcnNpb24gfSBmcm9tIFwiLi4vLi4vZWxlbWVudC9tdXRhdGVFbGVtZW50XCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///./index.tsx\\n\");\n\n//# sourceURL=webpack://Excalidraw/./index.tsx?");
2847
2847
 
2848
2848
  /***/ }),
2849
2849
 
@@ -2865,7 +2865,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */
2865
2865
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2866
2866
 
2867
2867
  "use strict";
2868
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* binding */ exportToCanvas),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* binding */ exportToBlob),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* binding */ exportToSvg),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_7__.serializeAsJSON),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_8__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_8__.loadLibraryFromBlob),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _renderer_renderElement__WEBPACK_IMPORTED_MODULE_9__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _element_bounds__WEBPACK_IMPORTED_MODULE_10__.getCommonBoundingBox)\\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_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/json */ \\\"../../data/json.ts\\\");\\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/blob */ \\\"../../data/blob.ts\\\");\\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../renderer/renderElement */ \\\"../../renderer/renderElement.ts\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.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 if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n 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 = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"])(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\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) {\\r\\n canvas.toBlob(function (blob) {\\r\\n resolve(blob);\\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 _ref3 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (_ref4) {\\r\\n let { elements, appState = (0,_appState__WEBPACK_IMPORTED_MODULE_3__.getDefaultAppState)(), files = {}, exportPadding } = _ref4;\\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(_x2) {\\r\\n return _ref3.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxTQUFTLFlBQVksQ0FBQyxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFQUFFLENBQUM7QUFDRyxNQUFNLFdBQVcsR0FBRyxhQUFhO0lBQ3RDLElBQUksS0FBSyxHQUFHLG1GQUFpQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUs7UUFDNUMsSUFBSSxFQUNGLFFBQVEsRUFDUixRQUFRLEdBQUcsNkRBQWtCLEVBQUUsRUFDL0IsS0FBSyxHQUFHLEVBQUUsRUFDVixhQUFhLEVBQ2QsR0FBRyxLQUFLLENBQUM7UUFDVixNQUFNLEVBQ0osUUFBUSxFQUFFLGdCQUFnQixFQUMxQixRQUFRLEVBQUUsZ0JBQWdCLEVBQzNCLEdBQUcsc0RBQU8sQ0FBQztZQUNWLFFBQVE7WUFDUixRQUFRO1NBQ1QsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDZixPQUFPLDBEQUFZLENBQUMsK0RBQXFCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNsSCxhQUFhO1NBQ2QsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2IsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFNBQVMsV0FBVyxDQUFDLEdBQUc7UUFDN0IsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7QUFDSixDQUFDLEVBQUUsQ0FBQztBQUMyQztBQUNrQjtBQUNGO0FBQ04iLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vdXRpbHMudHM/YjFiOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvYXN5bmNUb0dlbmVyYXRvclwiO1xuaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSB7IHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsgfSBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGV4cG9ydFRvQ2FudmFzIGFzIF9leHBvcnRUb0NhbnZhcywgZXhwb3J0VG9TdmcgYXMgX2V4cG9ydFRvU3ZnIH0gZnJvbSBcIi4uL3NjZW5lL2V4cG9ydFwiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEFwcFN0YXRlIH0gZnJvbSBcIi4uL2FwcFN0YXRlXCI7XG5pbXBvcnQgeyBnZXROb25EZWxldGVkRWxlbWVudHMgfSBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IHsgcmVzdG9yZSB9IGZyb20gXCIuLi9kYXRhL3Jlc3RvcmVcIjtcbmltcG9ydCB7IE1JTUVfVFlQRVMgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5leHBvcnQgY29uc3QgZXhwb3J0VG9DYW52YXMgPSBmdW5jdGlvbiAoX3JlZikge1xuICBsZXQge1xuICAgIGVsZW1lbnRzLFxuICAgIGFwcFN0YXRlLFxuICAgIGZpbGVzLFxuICAgIG1heFdpZHRoT3JIZWlnaHQsXG4gICAgZ2V0RGltZW5zaW9uc1xuICB9ID0gX3JlZjtcbiAgY29uc3Qge1xuICAgIGVsZW1lbnRzOiByZXN0b3JlZEVsZW1lbnRzLFxuICAgIGFwcFN0YXRlOiByZXN0b3JlZEFwcFN0YXRlXG4gIH0gPSByZXN0b3JlKHtcbiAgICBlbGVtZW50cyxcbiAgICBhcHBTdGF0ZVxuICB9LCBudWxsLCBudWxsKTtcbiAgY29uc3Qge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgdmlld0JhY2tncm91bmRDb2xvclxuICB9ID0gcmVzdG9yZWRBcHBTdGF0ZTtcbiAgcmV0dXJuIF9leHBvcnRUb0NhbnZhcyhnZXROb25EZWxldGVkRWxlbWVudHMocmVzdG9yZWRFbGVtZW50cyksIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdG9yZWRBcHBTdGF0ZSksIHt9LCB7XG4gICAgb2Zmc2V0VG9wOiAwLFxuICAgIG9mZnNldExlZnQ6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgaGVpZ2h0OiAwXG4gIH0pLCBmaWxlcyB8fCB7fSwge1xuICAgIGV4cG9ydEJhY2tncm91bmQsXG4gICAgdmlld0JhY2tncm91bmRDb2xvclxuICB9LCBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkge1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG5cbiAgICBpZiAobWF4V2lkdGhPckhlaWdodCkge1xuICAgICAgaWYgKHR5cGVvZiBnZXREaW1lbnNpb25zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiYGdldERpbWVuc2lvbnMoKWAgaXMgaWdub3JlZCB3aGVuIGBtYXhXaWR0aE9ySGVpZ2h0YCBpcyBzdXBwbGllZC5cIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHdpZHRoLCBoZWlnaHQpO1xuICAgICAgY29uc3Qgc2NhbGUgPSBtYXhXaWR0aE9ySGVpZ2h0IC8gbWF4O1xuICAgICAgY2FudmFzLndpZHRoID0gd2lkdGggKiBzY2FsZTtcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQgKiBzY2FsZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNhbnZhcyxcbiAgICAgICAgc2NhbGVcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmV0ID0gZ2V0RGltZW5zaW9ucz8uKHdpZHRoLCBoZWlnaHQpIHx8IHtcbiAgICAgIHdpZHRoLFxuICAgICAgaGVpZ2h0XG4gICAgfTtcbiAgICBjYW52YXMud2lkdGggPSByZXQud2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IHJldC5oZWlnaHQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNhbnZhcyxcbiAgICAgIHNjYWxlOiByZXQuc2NhbGUgPz8gMVxuICAgIH07XG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBleHBvcnRUb0Jsb2IgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKG9wdHMpIHtcbiAgICBsZXQge1xuICAgICAgbWltZVR5cGUgPSBNSU1FX1RZUEVTLnBuZyxcbiAgICAgIHF1YWxpdHlcbiAgICB9ID0gb3B0cztcblxuICAgIGlmIChtaW1lVHlwZSA9PT0gTUlNRV9UWVBFUy5wbmcgJiYgdHlwZW9mIHF1YWxpdHkgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgXCJxdWFsaXR5XCIgd2lsbCBiZSBpZ25vcmVkIGZvciBcIiR7TUlNRV9UWVBFUy5wbmd9XCIgbWltZVR5cGVgKTtcbiAgICB9IC8vIHR5cG8gaW4gTUlNRSB0eXBlIChzaG91bGQgYmUgXCJqcGVnXCIpXG5cblxuICAgIGlmIChtaW1lVHlwZSA9PT0gXCJpbWFnZS9qcGdcIikge1xuICAgICAgbWltZVR5cGUgPSBNSU1FX1RZUEVTLmpwZztcbiAgICB9XG5cbiAgICBpZiAobWltZVR5cGUgPT09IE1JTUVfVFlQRVMuanBnICYmICFvcHRzLmFwcFN0YXRlPy5leHBvcnRCYWNrZ3JvdW5kKSB7XG4gICAgICBjb25zb2xlLndhcm4oYERlZmF1bHRpbmcgXCJleHBvcnRCYWNrZ3JvdW5kXCIgdG8gXCJ0cnVlXCIgZm9yIFwiJHtNSU1FX1RZUEVTLmpwZ31cIiBtaW1lVHlwZWApO1xuICAgICAgb3B0cyA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3B0cyksIHt9LCB7XG4gICAgICAgIGFwcFN0YXRlOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9wdHMuYXBwU3RhdGUpLCB7fSwge1xuICAgICAgICAgIGV4cG9ydEJhY2tncm91bmQ6IHRydWVcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbnZhcyA9IHlpZWxkIGV4cG9ydFRvQ2FudmFzKG9wdHMpO1xuICAgIHF1YWxpdHkgPSBxdWFsaXR5ID8gcXVhbGl0eSA6IC9pbWFnZVxcL2pwZT9nLy50ZXN0KG1pbWVUeXBlKSA/IDAuOTIgOiAwLjg7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICBjYW52YXMudG9CbG9iKGZ1bmN0aW9uIChibG9iKSB7XG4gICAgICAgIHJlc29sdmUoYmxvYik7XG4gICAgICB9LCBtaW1lVHlwZSwgcXVhbGl0eSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBmdW5jdGlvbiBleHBvcnRUb0Jsb2IoX3gpIHtcbiAgICByZXR1cm4gX3JlZjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn0oKTtcbmV4cG9ydCBjb25zdCBleHBvcnRUb1N2ZyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIHZhciBfcmVmMyA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKiAoX3JlZjQpIHtcbiAgICBsZXQge1xuICAgICAgZWxlbWVudHMsXG4gICAgICBhcHBTdGF0ZSA9IGdldERlZmF1bHRBcHBTdGF0ZSgpLFxuICAgICAgZmlsZXMgPSB7fSxcbiAgICAgIGV4cG9ydFBhZGRpbmdcbiAgICB9ID0gX3JlZjQ7XG4gICAgY29uc3Qge1xuICAgICAgZWxlbWVudHM6IHJlc3RvcmVkRWxlbWVudHMsXG4gICAgICBhcHBTdGF0ZTogcmVzdG9yZWRBcHBTdGF0ZVxuICAgIH0gPSByZXN0b3JlKHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgYXBwU3RhdGVcbiAgICB9LCBudWxsLCBudWxsKTtcbiAgICByZXR1cm4gX2V4cG9ydFRvU3ZnKGdldE5vbkRlbGV0ZWRFbGVtZW50cyhyZXN0b3JlZEVsZW1lbnRzKSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByZXN0b3JlZEFwcFN0YXRlKSwge30sIHtcbiAgICAgIGV4cG9ydFBhZGRpbmdcbiAgICB9KSwgZmlsZXMpO1xuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gZXhwb3J0VG9TdmcoX3gyKSB7XG4gICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7XG5leHBvcnQgeyBzZXJpYWxpemVBc0pTT04gfSBmcm9tIFwiLi4vZGF0YS9qc29uXCI7XG5leHBvcnQgeyBsb2FkRnJvbUJsb2IsIGxvYWRMaWJyYXJ5RnJvbUJsb2IgfSBmcm9tIFwiLi4vZGF0YS9ibG9iXCI7XG5leHBvcnQgeyBnZXRGcmVlRHJhd1N2Z1BhdGggfSBmcm9tIFwiLi4vcmVuZGVyZXIvcmVuZGVyRWxlbWVudFwiO1xuZXhwb3J0IHsgZ2V0Q29tbW9uQm91bmRpbmdCb3ggfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///../utils.ts\\n\");\n\n//# sourceURL=webpack://Excalidraw/../utils.ts?");
2868
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"exportToCanvas\\\": () => (/* binding */ exportToCanvas),\\n/* harmony export */ \\\"exportToBlob\\\": () => (/* binding */ exportToBlob),\\n/* harmony export */ \\\"exportToSvg\\\": () => (/* binding */ exportToSvg),\\n/* harmony export */ \\\"serializeAsJSON\\\": () => (/* reexport safe */ _data_json__WEBPACK_IMPORTED_MODULE_7__.serializeAsJSON),\\n/* harmony export */ \\\"loadFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_8__.loadFromBlob),\\n/* harmony export */ \\\"loadLibraryFromBlob\\\": () => (/* reexport safe */ _data_blob__WEBPACK_IMPORTED_MODULE_8__.loadLibraryFromBlob),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* reexport safe */ _renderer_renderElement__WEBPACK_IMPORTED_MODULE_9__.getFreeDrawSvgPath),\\n/* harmony export */ \\\"getCommonBoundingBox\\\": () => (/* reexport safe */ _element_bounds__WEBPACK_IMPORTED_MODULE_10__.getCommonBoundingBox),\\n/* harmony export */ \\\"getMaximumGroups\\\": () => (/* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_11__.getMaximumGroups)\\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_json__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/json */ \\\"../../data/json.ts\\\");\\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../data/blob */ \\\"../../data/blob.ts\\\");\\n/* harmony import */ var _renderer_renderElement__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../renderer/renderElement */ \\\"../../renderer/renderElement.ts\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _align__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../align */ \\\"../../align.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 if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n 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 = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"])(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\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) {\\r\\n canvas.toBlob(function (blob) {\\r\\n resolve(blob);\\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 _ref3 = (0,_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(function* (_ref4) {\\r\\n let { elements, appState = (0,_appState__WEBPACK_IMPORTED_MODULE_3__.getDefaultAppState)(), files = {}, exportPadding } = _ref4;\\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(_x2) {\\r\\n return _ref3.apply(this, arguments);\\r\\n };\\r\\n}();\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLFNBQVMsWUFBWSxDQUFDLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUM7QUFDSixDQUFDLEVBQUUsQ0FBQztBQUNHLE1BQU0sV0FBVyxHQUFHLGFBQWE7SUFDdEMsSUFBSSxLQUFLLEdBQUcsbUZBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSztRQUM1QyxJQUFJLEVBQ0YsUUFBUSxFQUNSLFFBQVEsR0FBRyw2REFBa0IsRUFBRSxFQUMvQixLQUFLLEdBQUcsRUFBRSxFQUNWLGFBQWEsRUFDZCxHQUFHLEtBQUssQ0FBQztRQUNWLE1BQU0sRUFDSixRQUFRLEVBQUUsZ0JBQWdCLEVBQzFCLFFBQVEsRUFBRSxnQkFBZ0IsRUFDM0IsR0FBRyxzREFBTyxDQUFDO1lBQ1YsUUFBUTtZQUNSLFFBQVE7U0FDVCxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNmLE9BQU8sMERBQVksQ0FBQywrREFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ2xILGFBQWE7U0FDZCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sU0FBUyxXQUFXLENBQUMsR0FBRztRQUM3QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztBQUNKLENBQUMsRUFBRSxDQUFDO0FBQzJDO0FBQ2tCO0FBQ0Y7QUFDTjtBQUNiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uL3V0aWxzLnRzP2IxYjgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2FzeW5jVG9HZW5lcmF0b3JcIjtcbmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgeyBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IH0ga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBleHBvcnRUb0NhbnZhcyBhcyBfZXhwb3J0VG9DYW52YXMsIGV4cG9ydFRvU3ZnIGFzIF9leHBvcnRUb1N2ZyB9IGZyb20gXCIuLi9zY2VuZS9leHBvcnRcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHsgZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzIH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IHJlc3RvcmUgfSBmcm9tIFwiLi4vZGF0YS9yZXN0b3JlXCI7XG5pbXBvcnQgeyBNSU1FX1RZUEVTIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQ2FudmFzID0gZnVuY3Rpb24gKF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50cyxcbiAgICBhcHBTdGF0ZSxcbiAgICBmaWxlcyxcbiAgICBtYXhXaWR0aE9ySGVpZ2h0LFxuICAgIGdldERpbWVuc2lvbnNcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IHtcbiAgICBlbGVtZW50czogcmVzdG9yZWRFbGVtZW50cyxcbiAgICBhcHBTdGF0ZTogcmVzdG9yZWRBcHBTdGF0ZVxuICB9ID0gcmVzdG9yZSh7XG4gICAgZWxlbWVudHMsXG4gICAgYXBwU3RhdGVcbiAgfSwgbnVsbCwgbnVsbCk7XG4gIGNvbnN0IHtcbiAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3JcbiAgfSA9IHJlc3RvcmVkQXBwU3RhdGU7XG4gIHJldHVybiBfZXhwb3J0VG9DYW52YXMoZ2V0Tm9uRGVsZXRlZEVsZW1lbnRzKHJlc3RvcmVkRWxlbWVudHMpLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJlc3RvcmVkQXBwU3RhdGUpLCB7fSwge1xuICAgIG9mZnNldFRvcDogMCxcbiAgICBvZmZzZXRMZWZ0OiAwLFxuICAgIHdpZHRoOiAwLFxuICAgIGhlaWdodDogMFxuICB9KSwgZmlsZXMgfHwge30sIHtcbiAgICBleHBvcnRCYWNrZ3JvdW5kLFxuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3JcbiAgfSwgZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHtcbiAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuXG4gICAgaWYgKG1heFdpZHRoT3JIZWlnaHQpIHtcbiAgICAgIGlmICh0eXBlb2YgZ2V0RGltZW5zaW9ucyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcImBnZXREaW1lbnNpb25zKClgIGlzIGlnbm9yZWQgd2hlbiBgbWF4V2lkdGhPckhlaWdodGAgaXMgc3VwcGxpZWQuXCIpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXggPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgIGNvbnN0IHNjYWxlID0gbWF4V2lkdGhPckhlaWdodCAvIG1heDtcbiAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoICogc2NhbGU7XG4gICAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0ICogc2NhbGU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjYW52YXMsXG4gICAgICAgIHNjYWxlXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJldCA9IGdldERpbWVuc2lvbnM/Lih3aWR0aCwgaGVpZ2h0KSB8fCB7XG4gICAgICB3aWR0aCxcbiAgICAgIGhlaWdodFxuICAgIH07XG4gICAgY2FudmFzLndpZHRoID0gcmV0LndpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSByZXQuaGVpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICBjYW52YXMsXG4gICAgICBzY2FsZTogcmV0LnNjYWxlID8/IDFcbiAgICB9O1xuICB9KTtcbn07XG5leHBvcnQgY29uc3QgZXhwb3J0VG9CbG9iID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qIChvcHRzKSB7XG4gICAgbGV0IHtcbiAgICAgIG1pbWVUeXBlID0gTUlNRV9UWVBFUy5wbmcsXG4gICAgICBxdWFsaXR5XG4gICAgfSA9IG9wdHM7XG5cbiAgICBpZiAobWltZVR5cGUgPT09IE1JTUVfVFlQRVMucG5nICYmIHR5cGVvZiBxdWFsaXR5ID09PSBcIm51bWJlclwiKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFwicXVhbGl0eVwiIHdpbGwgYmUgaWdub3JlZCBmb3IgXCIke01JTUVfVFlQRVMucG5nfVwiIG1pbWVUeXBlYCk7XG4gICAgfSAvLyB0eXBvIGluIE1JTUUgdHlwZSAoc2hvdWxkIGJlIFwianBlZ1wiKVxuXG5cbiAgICBpZiAobWltZVR5cGUgPT09IFwiaW1hZ2UvanBnXCIpIHtcbiAgICAgIG1pbWVUeXBlID0gTUlNRV9UWVBFUy5qcGc7XG4gICAgfVxuXG4gICAgaWYgKG1pbWVUeXBlID09PSBNSU1FX1RZUEVTLmpwZyAmJiAhb3B0cy5hcHBTdGF0ZT8uZXhwb3J0QmFja2dyb3VuZCkge1xuICAgICAgY29uc29sZS53YXJuKGBEZWZhdWx0aW5nIFwiZXhwb3J0QmFja2dyb3VuZFwiIHRvIFwidHJ1ZVwiIGZvciBcIiR7TUlNRV9UWVBFUy5qcGd9XCIgbWltZVR5cGVgKTtcbiAgICAgIG9wdHMgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9wdHMpLCB7fSwge1xuICAgICAgICBhcHBTdGF0ZTogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvcHRzLmFwcFN0YXRlKSwge30sIHtcbiAgICAgICAgICBleHBvcnRCYWNrZ3JvdW5kOiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBjYW52YXMgPSB5aWVsZCBleHBvcnRUb0NhbnZhcyhvcHRzKTtcbiAgICBxdWFsaXR5ID0gcXVhbGl0eSA/IHF1YWxpdHkgOiAvaW1hZ2VcXC9qcGU/Zy8udGVzdChtaW1lVHlwZSkgPyAwLjkyIDogMC44O1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgY2FudmFzLnRvQmxvYihmdW5jdGlvbiAoYmxvYikge1xuICAgICAgICByZXNvbHZlKGJsb2IpO1xuICAgICAgfSwgbWltZVR5cGUsIHF1YWxpdHkpO1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gZnVuY3Rpb24gZXhwb3J0VG9CbG9iKF94KSB7XG4gICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7XG5leHBvcnQgY29uc3QgZXhwb3J0VG9TdmcgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICB2YXIgX3JlZjMgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKF9yZWY0KSB7XG4gICAgbGV0IHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgYXBwU3RhdGUgPSBnZXREZWZhdWx0QXBwU3RhdGUoKSxcbiAgICAgIGZpbGVzID0ge30sXG4gICAgICBleHBvcnRQYWRkaW5nXG4gICAgfSA9IF9yZWY0O1xuICAgIGNvbnN0IHtcbiAgICAgIGVsZW1lbnRzOiByZXN0b3JlZEVsZW1lbnRzLFxuICAgICAgYXBwU3RhdGU6IHJlc3RvcmVkQXBwU3RhdGVcbiAgICB9ID0gcmVzdG9yZSh7XG4gICAgICBlbGVtZW50cyxcbiAgICAgIGFwcFN0YXRlXG4gICAgfSwgbnVsbCwgbnVsbCk7XG4gICAgcmV0dXJuIF9leHBvcnRUb1N2ZyhnZXROb25EZWxldGVkRWxlbWVudHMocmVzdG9yZWRFbGVtZW50cyksIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcmVzdG9yZWRBcHBTdGF0ZSksIHt9LCB7XG4gICAgICBleHBvcnRQYWRkaW5nXG4gICAgfSksIGZpbGVzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGV4cG9ydFRvU3ZnKF94Mikge1xuICAgIHJldHVybiBfcmVmMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSgpO1xuZXhwb3J0IHsgc2VyaWFsaXplQXNKU09OIH0gZnJvbSBcIi4uL2RhdGEvanNvblwiO1xuZXhwb3J0IHsgbG9hZEZyb21CbG9iLCBsb2FkTGlicmFyeUZyb21CbG9iIH0gZnJvbSBcIi4uL2RhdGEvYmxvYlwiO1xuZXhwb3J0IHsgZ2V0RnJlZURyYXdTdmdQYXRoIH0gZnJvbSBcIi4uL3JlbmRlcmVyL3JlbmRlckVsZW1lbnRcIjtcbmV4cG9ydCB7IGdldENvbW1vbkJvdW5kaW5nQm94IH0gZnJvbSBcIi4uL2VsZW1lbnQvYm91bmRzXCI7XG5leHBvcnQgeyBnZXRNYXhpbXVtR3JvdXBzIH0gZnJvbSBcIi4uL2FsaWduXCI7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../utils.ts\\n\");\n\n//# sourceURL=webpack://Excalidraw/../utils.ts?");
2869
2869
 
2870
2870
  /***/ }),
2871
2871
 
@@ -2909,7 +2909,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
2909
2909
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2910
2910
 
2911
2911
  "use strict";
2912
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"getShapeForElement\\\": () => (/* binding */ getShapeForElement),\\n/* harmony export */ \\\"invalidateShapeForElement\\\": () => (/* binding */ invalidateShapeForElement),\\n/* harmony export */ \\\"generateRoughOptions\\\": () => (/* binding */ generateRoughOptions),\\n/* harmony export */ \\\"renderElement\\\": () => (/* binding */ renderElement),\\n/* harmony export */ \\\"renderElementToSvg\\\": () => (/* binding */ renderElementToSvg),\\n/* harmony export */ \\\"pathsCache\\\": () => (/* binding */ pathsCache),\\n/* harmony export */ \\\"generateFreeDrawShape\\\": () => (/* binding */ generateFreeDrawShape),\\n/* harmony export */ \\\"getFreeDrawPath2D\\\": () => (/* binding */ getFreeDrawPath2D),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* binding */ getFreeDrawSvgPath)\\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 _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \\\"../../utils.ts\\\");\\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../math */ \\\"../../math.ts\\\");\\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! roughjs/bin/rough */ \\\"../../../node_modules/roughjs/bin/rough.js\\\");\\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../appState */ \\\"../../appState.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var perfect_freehand__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! perfect-freehand */ \\\"../../../node_modules/perfect-freehand/dist/esm/index.js\\\");\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n 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 = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n // using a stronger invert (100% vs our regular 93%) and saturate\\r\\n// as a temp hack to make images in dark theme look closer to original\\r\\n// color scheme (it's still not quite there and the colors look slightly\\r\\n// desatured, alas...)\\r\\nconst IMAGE_INVERT_FILTER = \\\"invert(100%) hue-rotate(180deg) saturate(1.25)\\\";\\r\\nconst defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_6__.getDefaultAppState)();\\r\\nconst isPendingImageElement = function (element, renderConfig) {\\r\\n return (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isInitializedImageElement)(element) && !renderConfig.imageCache.has(element.fileId);\\r\\n};\\r\\nconst shouldResetImageFilter = function (element, renderConfig) {\\r\\n var _a;\\r\\n return renderConfig.theme === \\\"dark\\\" && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isInitializedImageElement)(element) && !isPendingImageElement(element, renderConfig) && ((_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.mimeType) !== _constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.svg;\\r\\n};\\r\\nconst getDashArrayDashed = function (strokeWidth) {\\r\\n return [8, 8 + strokeWidth];\\r\\n};\\r\\nconst getDashArrayDotted = function (strokeWidth) {\\r\\n return [1.5, 6 + strokeWidth];\\r\\n};\\r\\nconst getCanvasPadding = function (element) {\\r\\n return element.type === \\\"freedraw\\\" ? element.strokeWidth * 12 : 20;\\r\\n};\\r\\nconst generateElementCanvas = function (element, zoom, renderConfig) {\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n const context = canvas.getContext(\\\"2d\\\");\\r\\n const padding = getCanvasPadding(element);\\r\\n let canvasOffsetX = 0;\\r\\n let canvasOffsetY = 0;\\r\\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFreeDrawElement)(element)) {\\r\\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element);\\r\\n canvas.width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(x1, x2) * window.devicePixelRatio * zoom.value + padding * zoom.value * 2;\\r\\n canvas.height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(y1, y2) * window.devicePixelRatio * zoom.value + padding * zoom.value * 2;\\r\\n canvasOffsetX = element.x > x1 ? (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(element.x, x1) * window.devicePixelRatio * zoom.value : 0;\\r\\n canvasOffsetY = element.y > y1 ? (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(element.y, y1) * window.devicePixelRatio * zoom.value : 0;\\r\\n context.translate(canvasOffsetX, canvasOffsetY);\\r\\n }\\r\\n else {\\r\\n canvas.width = element.width * window.devicePixelRatio * zoom.value + padding * zoom.value * 2;\\r\\n canvas.height = element.height * window.devicePixelRatio * zoom.value + padding * zoom.value * 2;\\r\\n }\\r\\n context.save();\\r\\n context.translate(padding * zoom.value, padding * zoom.value);\\r\\n context.scale(window.devicePixelRatio * zoom.value, window.devicePixelRatio * zoom.value);\\r\\n const rc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].canvas(canvas); // in dark theme, revert the image color filter\\r\\n if (shouldResetImageFilter(element, renderConfig)) {\\r\\n context.filter = IMAGE_INVERT_FILTER;\\r\\n }\\r\\n drawElementOnCanvas(element, rc, context, renderConfig);\\r\\n context.restore();\\r\\n return {\\r\\n element,\\r\\n canvas,\\r\\n theme: renderConfig.theme,\\r\\n canvasZoom: zoom.value,\\r\\n canvasOffsetX,\\r\\n canvasOffsetY\\r\\n };\\r\\n};\\r\\nconst IMAGE_PLACEHOLDER_IMG = document.createElement(\\\"img\\\");\\r\\nIMAGE_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.svg},${encodeURIComponent(`<svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"image\\\" class=\\\"svg-inline--fa fa-image fa-w-16\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path fill=\\\"#888\\\" d=\\\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\\\"></path></svg>`)}`;\\r\\nconst IMAGE_ERROR_PLACEHOLDER_IMG = document.createElement(\\\"img\\\");\\r\\nIMAGE_ERROR_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.svg},${encodeURIComponent(`<svg viewBox=\\\"0 0 668 668\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" style=\\\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2\\\"><path d=\\\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48ZM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56ZM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48Z\\\" style=\\\"fill:#888;fill-rule:nonzero\\\" transform=\\\"matrix(.81709 0 0 .81709 124.825 145.825)\\\"/><path d=\\\"M256 8C119.034 8 8 119.033 8 256c0 136.967 111.034 248 248 248s248-111.034 248-248S392.967 8 256 8Zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676ZM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676Z\\\" style=\\\"fill:#888;fill-rule:nonzero\\\" transform=\\\"matrix(.30366 0 0 .30366 506.822 60.065)\\\"/></svg>`)}`;\\r\\nconst drawImagePlaceholder = function (element, context, zoomValue) {\\r\\n context.fillStyle = \\\"#E7E7E7\\\";\\r\\n context.fillRect(0, 0, element.width, element.height);\\r\\n const imageMinWidthOrHeight = Math.min(element.width, element.height);\\r\\n const size = Math.min(imageMinWidthOrHeight, Math.min(imageMinWidthOrHeight * 0.4, 100));\\r\\n context.drawImage(element.status === \\\"error\\\" ? IMAGE_ERROR_PLACEHOLDER_IMG : IMAGE_PLACEHOLDER_IMG, element.width / 2 - size / 2, element.height / 2 - size / 2, size, size);\\r\\n};\\r\\nconst drawElementOnCanvas = function (element, rc, context, renderConfig) {\\r\\n var _a;\\r\\n context.globalAlpha = element.opacity / 100;\\r\\n switch (element.type) {\\r\\n case \\\"rectangle\\\":\\r\\n case \\\"diamond\\\":\\r\\n case \\\"ellipse\\\":\\r\\n {\\r\\n context.lineJoin = \\\"round\\\";\\r\\n context.lineCap = \\\"round\\\";\\r\\n rc.draw(getShapeForElement(element));\\r\\n break;\\r\\n }\\r\\n case \\\"arrow\\\":\\r\\n case \\\"line\\\":\\r\\n {\\r\\n context.lineJoin = \\\"round\\\";\\r\\n context.lineCap = \\\"round\\\";\\r\\n getShapeForElement(element).forEach(function (shape) {\\r\\n rc.draw(shape);\\r\\n });\\r\\n break;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n {\\r\\n // Draw directly to canvas\\r\\n context.save();\\r\\n context.fillStyle = element.strokeColor;\\r\\n const path = getFreeDrawPath2D(element);\\r\\n context.fillStyle = element.strokeColor;\\r\\n context.fill(path);\\r\\n context.restore();\\r\\n break;\\r\\n }\\r\\n case \\\"image\\\":\\r\\n {\\r\\n const img = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isInitializedImageElement)(element) ? (_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.image : undefined;\\r\\n if (img != null && !(img instanceof Promise)) {\\r\\n context.drawImage(img, 0\\r\\n /* hardcoded for the selection box*/\\r\\n , 0, element.width, element.height);\\r\\n }\\r\\n else {\\r\\n drawImagePlaceholder(element, context, renderConfig.zoom.value);\\r\\n }\\r\\n break;\\r\\n }\\r\\n default:\\r\\n {\\r\\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(element)) {\\r\\n const rtl = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isRTL)(element.text);\\r\\n const shouldTemporarilyAttach = rtl && !context.canvas.isConnected;\\r\\n if (shouldTemporarilyAttach) {\\r\\n // to correctly render RTL text mixed with LTR, we have to append it\\r\\n // to the DOM\\r\\n document.body.appendChild(context.canvas);\\r\\n }\\r\\n context.canvas.setAttribute(\\\"dir\\\", rtl ? \\\"rtl\\\" : \\\"ltr\\\");\\r\\n context.save();\\r\\n context.font = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)(element);\\r\\n context.fillStyle = element.strokeColor;\\r\\n context.textAlign = element.textAlign; // Canvas does not support multiline text by default\\r\\n const lines = element.text.replace(/\\\\r\\\\n?/g, \\\"\\\\n\\\").split(\\\"\\\\n\\\");\\r\\n const lineHeight = element.height / lines.length;\\r\\n const verticalOffset = element.height - element.baseline;\\r\\n const horizontalOffset = element.textAlign === \\\"center\\\" ? element.width / 2 : element.textAlign === \\\"right\\\" ? element.width : 0;\\r\\n for (let index = 0; index < lines.length; index++) {\\r\\n context.fillText(lines[index], horizontalOffset, (index + 1) * lineHeight - verticalOffset);\\r\\n }\\r\\n context.restore();\\r\\n if (shouldTemporarilyAttach) {\\r\\n context.canvas.remove();\\r\\n }\\r\\n }\\r\\n else {\\r\\n throw new Error(`Unimplemented type ${element.type}`);\\r\\n }\\r\\n }\\r\\n }\\r\\n context.globalAlpha = 1;\\r\\n};\\r\\nconst elementWithCanvasCache = new WeakMap();\\r\\nconst shapeCache = new WeakMap();\\r\\nconst getShapeForElement = function (element) {\\r\\n return shapeCache.get(element);\\r\\n};\\r\\nconst invalidateShapeForElement = function (element) {\\r\\n return shapeCache.delete(element);\\r\\n};\\r\\nconst generateRoughOptions = function (element) {\\r\\n let continuousPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\\r\\n const options = {\\r\\n seed: element.seed,\\r\\n strokeLineDash: element.strokeStyle === \\\"dashed\\\" ? getDashArrayDashed(element.strokeWidth) : element.strokeStyle === \\\"dotted\\\" ? getDashArrayDotted(element.strokeWidth) : undefined,\\r\\n // for non-solid strokes, disable multiStroke because it tends to make\\r\\n // dashes/dots overlay each other\\r\\n disableMultiStroke: element.strokeStyle !== \\\"solid\\\",\\r\\n // for non-solid strokes, increase the width a bit to make it visually\\r\\n // similar to solid strokes, because we're also disabling multiStroke\\r\\n strokeWidth: element.strokeStyle !== \\\"solid\\\" ? element.strokeWidth + 0.5 : element.strokeWidth,\\r\\n // when increasing strokeWidth, we must explicitly set fillWeight and\\r\\n // hachureGap because if not specified, roughjs uses strokeWidth to\\r\\n // calculate them (and we don't want the fills to be modified)\\r\\n fillWeight: element.strokeWidth / 2,\\r\\n hachureGap: element.strokeWidth * 4,\\r\\n roughness: element.roughness,\\r\\n stroke: element.strokeColor,\\r\\n preserveVertices: continuousPath\\r\\n };\\r\\n switch (element.type) {\\r\\n case \\\"rectangle\\\":\\r\\n case \\\"diamond\\\":\\r\\n case \\\"ellipse\\\":\\r\\n {\\r\\n options.fillStyle = element.fillStyle;\\r\\n options.fill = element.backgroundColor === \\\"transparent\\\" ? undefined : element.backgroundColor;\\r\\n if (element.type === \\\"ellipse\\\") {\\r\\n options.curveFitting = 1;\\r\\n }\\r\\n return options;\\r\\n }\\r\\n case \\\"line\\\":\\r\\n {\\r\\n if ((0,_math__WEBPACK_IMPORTED_MODULE_4__.isPathALoop)(element.points)) {\\r\\n options.fillStyle = element.fillStyle;\\r\\n options.fill = element.backgroundColor === \\\"transparent\\\" ? undefined : element.backgroundColor;\\r\\n }\\r\\n return options;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n case \\\"arrow\\\":\\r\\n return options;\\r\\n default:\\r\\n {\\r\\n throw new Error(`Unimplemented type ${element.type}`);\\r\\n }\\r\\n }\\r\\n};\\r\\n/**\\r\\n * Generates the element's shape and puts it into the cache.\\r\\n * @param element\\r\\n * @param generator\\r\\n */\\r\\nconst generateElementShape = function (element, generator) {\\r\\n let shape = shapeCache.get(element) || null;\\r\\n if (!shape) {\\r\\n elementWithCanvasCache.delete(element);\\r\\n switch (element.type) {\\r\\n case \\\"rectangle\\\":\\r\\n if (element.strokeSharpness === \\\"round\\\") {\\r\\n const w = element.width;\\r\\n const h = element.height;\\r\\n const r = Math.min(w, h) * 0.25;\\r\\n shape = generator.path(`M ${r} 0 L ${w - r} 0 Q ${w} 0, ${w} ${r} L ${w} ${h - r} Q ${w} ${h}, ${w - r} ${h} L ${r} ${h} Q 0 ${h}, 0 ${h - r} L 0 ${r} Q 0 0, ${r} 0`, generateRoughOptions(element, true));\\r\\n }\\r\\n else {\\r\\n shape = generator.rectangle(0, 0, element.width, element.height, generateRoughOptions(element));\\r\\n }\\r\\n break;\\r\\n case \\\"diamond\\\":\\r\\n {\\r\\n const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getDiamondPoints)(element);\\r\\n shape = generator.polygon([[topX, topY], [rightX, rightY], [bottomX, bottomY], [leftX, leftY]], generateRoughOptions(element));\\r\\n break;\\r\\n }\\r\\n case \\\"ellipse\\\":\\r\\n shape = generator.ellipse(element.width / 2, element.height / 2, element.width, element.height, generateRoughOptions(element));\\r\\n break;\\r\\n case \\\"line\\\":\\r\\n case \\\"arrow\\\":\\r\\n {\\r\\n const options = generateRoughOptions(element); // points array can be empty in the beginning, so it is important to add\\r\\n // initial position to it\\r\\n const points = element.points.length ? element.points : [[0, 0]]; // curve is always the first element\\r\\n // this simplifies finding the curve for an element\\r\\n if (element.strokeSharpness === \\\"sharp\\\") {\\r\\n if (options.fill) {\\r\\n shape = [generator.polygon(points, options)];\\r\\n }\\r\\n else {\\r\\n shape = [generator.linearPath(points, options)];\\r\\n }\\r\\n }\\r\\n else {\\r\\n shape = [generator.curve(points, options)];\\r\\n } // add lines only in arrow\\r\\n if (element.type === \\\"arrow\\\") {\\r\\n const { startArrowhead = null, endArrowhead = \\\"arrow\\\" } = element;\\r\\n const getArrowheadShapes = function (element, shape, position, arrowhead) {\\r\\n const arrowheadPoints = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getArrowheadPoints)(element, shape, position, arrowhead);\\r\\n if (arrowheadPoints === null) {\\r\\n return [];\\r\\n } // Other arrowheads here...\\r\\n if (arrowhead === \\\"dot\\\") {\\r\\n const [x, y, r] = arrowheadPoints;\\r\\n return [generator.circle(x, y, r, _objectSpread(_objectSpread({}, options), {}, {\\r\\n fill: element.strokeColor,\\r\\n fillStyle: \\\"solid\\\",\\r\\n stroke: \\\"none\\\"\\r\\n }))];\\r\\n }\\r\\n if (arrowhead === \\\"triangle\\\") {\\r\\n const [x, y, x2, y2, x3, y3] = arrowheadPoints; // always use solid stroke for triangle arrowhead\\r\\n delete options.strokeLineDash;\\r\\n return [generator.polygon([[x, y], [x2, y2], [x3, y3], [x, y]], _objectSpread(_objectSpread({}, options), {}, {\\r\\n fill: element.strokeColor,\\r\\n fillStyle: \\\"solid\\\"\\r\\n }))];\\r\\n } // Arrow arrowheads\\r\\n const [x2, y2, x3, y3, x4, y4] = arrowheadPoints;\\r\\n if (element.strokeStyle === \\\"dotted\\\") {\\r\\n // for dotted arrows caps, reduce gap to make it more legible\\r\\n const dash = getDashArrayDotted(element.strokeWidth - 1);\\r\\n options.strokeLineDash = [dash[0], dash[1] - 1];\\r\\n }\\r\\n else {\\r\\n // for solid/dashed, keep solid arrow cap\\r\\n delete options.strokeLineDash;\\r\\n }\\r\\n return [generator.line(x3, y3, x2, y2, options), generator.line(x4, y4, x2, y2, options)];\\r\\n };\\r\\n if (startArrowhead !== null) {\\r\\n const shapes = getArrowheadShapes(element, shape, \\\"start\\\", startArrowhead);\\r\\n shape.push(...shapes);\\r\\n }\\r\\n if (endArrowhead !== null) {\\r\\n if (endArrowhead === undefined) { // Hey, we have an old arrow here!\\r\\n }\\r\\n const shapes = getArrowheadShapes(element, shape, \\\"end\\\", endArrowhead);\\r\\n shape.push(...shapes);\\r\\n }\\r\\n }\\r\\n break;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n {\\r\\n generateFreeDrawShape(element);\\r\\n shape = [];\\r\\n break;\\r\\n }\\r\\n case \\\"text\\\":\\r\\n case \\\"image\\\":\\r\\n {\\r\\n // just to ensure we don't regenerate element.canvas on rerenders\\r\\n shape = [];\\r\\n break;\\r\\n }\\r\\n }\\r\\n shapeCache.set(element, shape);\\r\\n }\\r\\n};\\r\\nconst generateElementWithCanvas = function (element, renderConfig) {\\r\\n const zoom = renderConfig ? renderConfig.zoom : defaultAppState.zoom;\\r\\n const prevElementWithCanvas = elementWithCanvasCache.get(element);\\r\\n const shouldRegenerateBecauseZoom = prevElementWithCanvas && prevElementWithCanvas.canvasZoom !== zoom.value && !(renderConfig === null || renderConfig === void 0 ? void 0 : renderConfig.shouldCacheIgnoreZoom);\\r\\n if (!prevElementWithCanvas || shouldRegenerateBecauseZoom || prevElementWithCanvas.theme !== renderConfig.theme) {\\r\\n const elementWithCanvas = generateElementCanvas(element, zoom, renderConfig);\\r\\n elementWithCanvasCache.set(element, elementWithCanvas);\\r\\n return elementWithCanvas;\\r\\n }\\r\\n return prevElementWithCanvas;\\r\\n};\\r\\nconst drawElementFromCanvas = function (elementWithCanvas, rc, context, renderConfig) {\\r\\n const element = elementWithCanvas.element;\\r\\n const padding = getCanvasPadding(element);\\r\\n let [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element); // Free draw elements will otherwise \\\"shuffle\\\" as the min x and y change\\r\\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFreeDrawElement)(element)) {\\r\\n x1 = Math.floor(x1);\\r\\n x2 = Math.ceil(x2);\\r\\n y1 = Math.floor(y1);\\r\\n y2 = Math.ceil(y2);\\r\\n }\\r\\n const cx = ((x1 + x2) / 2 + renderConfig.scrollX) * window.devicePixelRatio;\\r\\n const cy = ((y1 + y2) / 2 + renderConfig.scrollY) * window.devicePixelRatio;\\r\\n const _isPendingImageElement = isPendingImageElement(element, renderConfig);\\r\\n const scaleXFactor = \\\"scale\\\" in elementWithCanvas.element && !_isPendingImageElement ? elementWithCanvas.element.scale[0] : 1;\\r\\n const scaleYFactor = \\\"scale\\\" in elementWithCanvas.element && !_isPendingImageElement ? elementWithCanvas.element.scale[1] : 1;\\r\\n context.save();\\r\\n context.scale(1 / window.devicePixelRatio * scaleXFactor, 1 / window.devicePixelRatio * scaleYFactor);\\r\\n context.translate(cx * scaleXFactor, cy * scaleYFactor);\\r\\n context.rotate(element.angle * scaleXFactor * scaleYFactor);\\r\\n context.drawImage(elementWithCanvas.canvas, -(x2 - x1) / 2 * window.devicePixelRatio - padding * elementWithCanvas.canvasZoom / elementWithCanvas.canvasZoom, -(y2 - y1) / 2 * window.devicePixelRatio - padding * elementWithCanvas.canvasZoom / elementWithCanvas.canvasZoom, elementWithCanvas.canvas.width / elementWithCanvas.canvasZoom, elementWithCanvas.canvas.height / elementWithCanvas.canvasZoom);\\r\\n context.restore(); // Clear the nested element we appended to the DOM\\r\\n};\\r\\nconst renderElement = function (element, rc, context, renderConfig) {\\r\\n const generator = rc.generator;\\r\\n switch (element.type) {\\r\\n case \\\"selection\\\":\\r\\n {\\r\\n context.save();\\r\\n context.translate(element.x + renderConfig.scrollX, element.y + renderConfig.scrollY);\\r\\n context.fillStyle = \\\"rgba(0, 0, 255, 0.10)\\\";\\r\\n context.fillRect(0, 0, element.width, element.height);\\r\\n context.restore();\\r\\n break;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n {\\r\\n generateElementShape(element, generator);\\r\\n if (renderConfig.isExporting) {\\r\\n const elementWithCanvas = generateElementWithCanvas(element, renderConfig);\\r\\n drawElementFromCanvas(elementWithCanvas, rc, context, renderConfig);\\r\\n }\\r\\n else {\\r\\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element);\\r\\n const cx = (x1 + x2) / 2 + renderConfig.scrollX;\\r\\n const cy = (y1 + y2) / 2 + renderConfig.scrollY;\\r\\n const shiftX = (x2 - x1) / 2 - (element.x - x1);\\r\\n const shiftY = (y2 - y1) / 2 - (element.y - y1);\\r\\n context.save();\\r\\n context.translate(cx, cy);\\r\\n context.rotate(element.angle);\\r\\n context.translate(-shiftX, -shiftY);\\r\\n drawElementOnCanvas(element, rc, context, renderConfig);\\r\\n context.restore();\\r\\n }\\r\\n break;\\r\\n }\\r\\n case \\\"rectangle\\\":\\r\\n case \\\"diamond\\\":\\r\\n case \\\"ellipse\\\":\\r\\n case \\\"line\\\":\\r\\n case \\\"arrow\\\":\\r\\n case \\\"image\\\":\\r\\n case \\\"text\\\":\\r\\n {\\r\\n generateElementShape(element, generator);\\r\\n if (renderConfig.isExporting) {\\r\\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element);\\r\\n const cx = (x1 + x2) / 2 + renderConfig.scrollX;\\r\\n const cy = (y1 + y2) / 2 + renderConfig.scrollY;\\r\\n const shiftX = (x2 - x1) / 2 - (element.x - x1);\\r\\n const shiftY = (y2 - y1) / 2 - (element.y - y1);\\r\\n context.save();\\r\\n context.translate(cx, cy);\\r\\n context.rotate(element.angle);\\r\\n context.translate(-shiftX, -shiftY);\\r\\n if (shouldResetImageFilter(element, renderConfig)) {\\r\\n context.filter = \\\"none\\\";\\r\\n }\\r\\n drawElementOnCanvas(element, rc, context, renderConfig);\\r\\n context.restore(); // not exporting → optimized rendering (cache & render from element\\r\\n // canvases)\\r\\n }\\r\\n else {\\r\\n const elementWithCanvas = generateElementWithCanvas(element, renderConfig);\\r\\n drawElementFromCanvas(elementWithCanvas, rc, context, renderConfig);\\r\\n }\\r\\n break;\\r\\n }\\r\\n default:\\r\\n {\\r\\n // @ts-ignore\\r\\n throw new Error(`Unimplemented type ${element.type}`);\\r\\n }\\r\\n }\\r\\n};\\r\\nconst roughSVGDrawWithPrecision = function (rsvg, drawable, precision) {\\r\\n if (typeof precision === \\\"undefined\\\") {\\r\\n return rsvg.draw(drawable);\\r\\n }\\r\\n const pshape = {\\r\\n sets: drawable.sets,\\r\\n shape: drawable.shape,\\r\\n options: _objectSpread(_objectSpread({}, drawable.options), {}, {\\r\\n fixedDecimalPlaceDigits: precision\\r\\n })\\r\\n };\\r\\n return rsvg.draw(pshape);\\r\\n};\\r\\nconst renderElementToSvg = function (element, rsvg, svgRoot, files, offsetX, offsetY, exportWithDarkMode) {\\r\\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element);\\r\\n const cx = (x2 - x1) / 2 - (element.x - x1);\\r\\n const cy = (y2 - y1) / 2 - (element.y - y1);\\r\\n const degree = 180 * element.angle / Math.PI;\\r\\n const generator = rsvg.generator;\\r\\n switch (element.type) {\\r\\n case \\\"selection\\\":\\r\\n {\\r\\n // Since this is used only during editing experience, which is canvas based,\\r\\n // this should not happen\\r\\n throw new Error(\\\"Selection rendering is not supported for SVG\\\");\\r\\n }\\r\\n case \\\"rectangle\\\":\\r\\n case \\\"diamond\\\":\\r\\n case \\\"ellipse\\\":\\r\\n {\\r\\n generateElementShape(element, generator);\\r\\n const node = roughSVGDrawWithPrecision(rsvg, getShapeForElement(element), _constants__WEBPACK_IMPORTED_MODULE_7__.MAX_DECIMALS_FOR_SVG_EXPORT);\\r\\n const opacity = element.opacity / 100;\\r\\n if (opacity !== 1) {\\r\\n node.setAttribute(\\\"stroke-opacity\\\", `${opacity}`);\\r\\n node.setAttribute(\\\"fill-opacity\\\", `${opacity}`);\\r\\n }\\r\\n node.setAttribute(\\\"stroke-linecap\\\", \\\"round\\\");\\r\\n node.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n svgRoot.appendChild(node);\\r\\n break;\\r\\n }\\r\\n case \\\"line\\\":\\r\\n case \\\"arrow\\\":\\r\\n {\\r\\n generateElementShape(element, generator);\\r\\n const group = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"g\\\");\\r\\n const opacity = element.opacity / 100;\\r\\n group.setAttribute(\\\"stroke-linecap\\\", \\\"round\\\");\\r\\n getShapeForElement(element).forEach(function (shape) {\\r\\n const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_7__.MAX_DECIMALS_FOR_SVG_EXPORT);\\r\\n if (opacity !== 1) {\\r\\n node.setAttribute(\\\"stroke-opacity\\\", `${opacity}`);\\r\\n node.setAttribute(\\\"fill-opacity\\\", `${opacity}`);\\r\\n }\\r\\n node.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n if (element.type === \\\"line\\\" && (0,_math__WEBPACK_IMPORTED_MODULE_4__.isPathALoop)(element.points) && element.backgroundColor !== \\\"transparent\\\") {\\r\\n node.setAttribute(\\\"fill-rule\\\", \\\"evenodd\\\");\\r\\n }\\r\\n group.appendChild(node);\\r\\n });\\r\\n svgRoot.appendChild(group);\\r\\n break;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n {\\r\\n generateFreeDrawShape(element);\\r\\n const opacity = element.opacity / 100;\\r\\n const node = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"g\\\");\\r\\n if (opacity !== 1) {\\r\\n node.setAttribute(\\\"stroke-opacity\\\", `${opacity}`);\\r\\n node.setAttribute(\\\"fill-opacity\\\", `${opacity}`);\\r\\n }\\r\\n node.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n const path = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"path\\\");\\r\\n node.setAttribute(\\\"stroke\\\", \\\"none\\\");\\r\\n node.setAttribute(\\\"fill\\\", element.strokeColor);\\r\\n path.setAttribute(\\\"d\\\", getFreeDrawSvgPath(element));\\r\\n node.appendChild(path);\\r\\n svgRoot.appendChild(node);\\r\\n break;\\r\\n }\\r\\n case \\\"image\\\":\\r\\n {\\r\\n const fileData = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isInitializedImageElement)(element) && files[element.fileId];\\r\\n if (fileData) {\\r\\n const symbolId = `image-${fileData.id}`;\\r\\n let symbol = svgRoot.querySelector(`#${symbolId}`);\\r\\n if (!symbol) {\\r\\n symbol = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"symbol\\\");\\r\\n symbol.id = symbolId;\\r\\n const image = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"image\\\");\\r\\n image.setAttribute(\\\"width\\\", \\\"100%\\\");\\r\\n image.setAttribute(\\\"height\\\", \\\"100%\\\");\\r\\n image.setAttribute(\\\"href\\\", fileData.dataURL);\\r\\n symbol.appendChild(image);\\r\\n svgRoot.prepend(symbol);\\r\\n }\\r\\n const use = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"use\\\");\\r\\n use.setAttribute(\\\"href\\\", `#${symbolId}`); // in dark theme, revert the image color filter\\r\\n if (exportWithDarkMode && fileData.mimeType !== _constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.svg) {\\r\\n use.setAttribute(\\\"filter\\\", IMAGE_INVERT_FILTER);\\r\\n }\\r\\n use.setAttribute(\\\"width\\\", `${Math.round(element.width)}`);\\r\\n use.setAttribute(\\\"height\\\", `${Math.round(element.height)}`);\\r\\n use.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n svgRoot.appendChild(use);\\r\\n }\\r\\n break;\\r\\n }\\r\\n default:\\r\\n {\\r\\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(element)) {\\r\\n const opacity = element.opacity / 100;\\r\\n const node = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"g\\\");\\r\\n if (opacity !== 1) {\\r\\n node.setAttribute(\\\"stroke-opacity\\\", `${opacity}`);\\r\\n node.setAttribute(\\\"fill-opacity\\\", `${opacity}`);\\r\\n }\\r\\n node.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n const lines = element.text.replace(/\\\\r\\\\n?/g, \\\"\\\\n\\\").split(\\\"\\\\n\\\");\\r\\n const lineHeight = element.height / lines.length;\\r\\n const verticalOffset = element.height - element.baseline;\\r\\n const horizontalOffset = element.textAlign === \\\"center\\\" ? element.width / 2 : element.textAlign === \\\"right\\\" ? element.width : 0;\\r\\n const direction = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isRTL)(element.text) ? \\\"rtl\\\" : \\\"ltr\\\";\\r\\n const textAnchor = element.textAlign === \\\"center\\\" ? \\\"middle\\\" : element.textAlign === \\\"right\\\" || direction === \\\"rtl\\\" ? \\\"end\\\" : \\\"start\\\";\\r\\n for (let i = 0; i < lines.length; i++) {\\r\\n const text = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"text\\\");\\r\\n text.textContent = lines[i];\\r\\n text.setAttribute(\\\"x\\\", `${horizontalOffset}`);\\r\\n text.setAttribute(\\\"y\\\", `${(i + 1) * lineHeight - verticalOffset}`);\\r\\n text.setAttribute(\\\"font-family\\\", (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontFamilyString)(element));\\r\\n text.setAttribute(\\\"font-size\\\", `${element.fontSize}px`);\\r\\n text.setAttribute(\\\"fill\\\", element.strokeColor);\\r\\n text.setAttribute(\\\"text-anchor\\\", textAnchor);\\r\\n text.setAttribute(\\\"style\\\", \\\"white-space: pre;\\\");\\r\\n text.setAttribute(\\\"direction\\\", direction);\\r\\n node.appendChild(text);\\r\\n }\\r\\n svgRoot.appendChild(node);\\r\\n }\\r\\n else {\\r\\n // @ts-ignore\\r\\n throw new Error(`Unimplemented type ${element.type}`);\\r\\n }\\r\\n }\\r\\n }\\r\\n};\\r\\nconst pathsCache = new WeakMap([]);\\r\\nfunction generateFreeDrawShape(element) {\\r\\n const svgPathData = getFreeDrawSvgPath(element);\\r\\n const path = new Path2D(svgPathData);\\r\\n pathsCache.set(element, path);\\r\\n return path;\\r\\n}\\r\\nfunction getFreeDrawPath2D(element) {\\r\\n return pathsCache.get(element);\\r\\n}\\r\\nfunction getFreeDrawSvgPath(element) {\\r\\n // If input points are empty (should they ever be?) return a dot\\r\\n const inputPoints = element.simulatePressure ? element.points : element.points.length ? element.points.map(function (_ref, i) {\\r\\n let [x, y] = _ref;\\r\\n return [x, y, element.pressures[i]];\\r\\n }) : [[0, 0, 0.5]]; // Consider changing the options for simulated pressure vs real pressure\\r\\n const options = {\\r\\n simulatePressure: element.simulatePressure,\\r\\n size: element.strokeWidth * 4.25,\\r\\n thinning: 0.6,\\r\\n smoothing: 0.5,\\r\\n streamline: 0.5,\\r\\n easing: function (t) {\\r\\n return Math.sin(t * Math.PI / 2);\\r\\n },\\r\\n // https://easings.net/#easeOutSine\\r\\n last: !!element.lastCommittedPoint // LastCommittedPoint is added on pointerup\\r\\n };\\r\\n return getSvgPathFromStroke((0,perfect_freehand__WEBPACK_IMPORTED_MODULE_8__.getStroke)(inputPoints, options));\\r\\n}\\r\\nfunction med(A, B) {\\r\\n return [(A[0] + B[0]) / 2, (A[1] + B[1]) / 2];\\r\\n} // Trim SVG path data so number are each two decimal points. This\\r\\n// improves SVG exports, and prevents rendering errors on points\\r\\n// with long decimals.\\r\\nconst TO_FIXED_PRECISION = /(\\\\s?[A-Z]?,?-?[0-9]*\\\\.[0-9]{0,2})(([0-9]|e|-)*)/g;\\r\\nfunction getSvgPathFromStroke(points) {\\r\\n if (!points.length) {\\r\\n return \\\"\\\";\\r\\n }\\r\\n const max = points.length - 1;\\r\\n return points.reduce(function (acc, point, i, arr) {\\r\\n if (i === max) {\\r\\n acc.push(point, med(point, arr[0]), \\\"L\\\", arr[0], \\\"Z\\\");\\r\\n }\\r\\n else {\\r\\n acc.push(point, med(point, arr[i + 1]));\\r\\n }\\r\\n return acc;\\r\\n }, [\\\"M\\\", points[0], \\\"Q\\\"]).join(\\\" \\\").replace(TO_FIXED_PRECISION, \\\"$1\\\");\\r\\n}\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVMsb0JBQW9CLENBQUMsTUFBTTtJQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtRQUNsQixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBRUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDOUIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRztRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUU7WUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNMLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDekM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vcmVuZGVyZXIvcmVuZGVyRWxlbWVudC50cz82NmM4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIjtcblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgeyBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IH0ga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBpc1RleHRFbGVtZW50LCBpc0xpbmVhckVsZW1lbnQsIGlzRnJlZURyYXdFbGVtZW50LCBpc0luaXRpYWxpemVkSW1hZ2VFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnQvdHlwZUNoZWNrc1wiO1xuaW1wb3J0IHsgZ2V0RGlhbW9uZFBvaW50cywgZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzLCBnZXRBcnJvd2hlYWRQb2ludHMgfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjtcbmltcG9ydCB7IGRpc3RhbmNlLCBnZXRGb250U3RyaW5nLCBnZXRGb250RmFtaWx5U3RyaW5nLCBpc1JUTCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgaXNQYXRoQUxvb3AgfSBmcm9tIFwiLi4vbWF0aFwiO1xuaW1wb3J0IHJvdWdoIGZyb20gXCJyb3VnaGpzL2Jpbi9yb3VnaFwiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdEFwcFN0YXRlIH0gZnJvbSBcIi4uL2FwcFN0YXRlXCI7XG5pbXBvcnQgeyBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQsIE1JTUVfVFlQRVMsIFNWR19OUyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldFN0cm9rZSB9IGZyb20gXCJwZXJmZWN0LWZyZWVoYW5kXCI7IC8vIHVzaW5nIGEgc3Ryb25nZXIgaW52ZXJ0ICgxMDAlIHZzIG91ciByZWd1bGFyIDkzJSkgYW5kIHNhdHVyYXRlXG4vLyBhcyBhIHRlbXAgaGFjayB0byBtYWtlIGltYWdlcyBpbiBkYXJrIHRoZW1lIGxvb2sgY2xvc2VyIHRvIG9yaWdpbmFsXG4vLyBjb2xvciBzY2hlbWUgKGl0J3Mgc3RpbGwgbm90IHF1aXRlIHRoZXJlIGFuZCB0aGUgY29sb3JzIGxvb2sgc2xpZ2h0bHlcbi8vIGRlc2F0dXJlZCwgYWxhcy4uLilcblxuY29uc3QgSU1BR0VfSU5WRVJUX0ZJTFRFUiA9IFwiaW52ZXJ0KDEwMCUpIGh1ZS1yb3RhdGUoMTgwZGVnKSBzYXR1cmF0ZSgxLjI1KVwiO1xuY29uc3QgZGVmYXVsdEFwcFN0YXRlID0gZ2V0RGVmYXVsdEFwcFN0YXRlKCk7XG5cbmNvbnN0IGlzUGVuZGluZ0ltYWdlRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCByZW5kZXJDb25maWcpIHtcbiAgcmV0dXJuIGlzSW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnQoZWxlbWVudCkgJiYgIXJlbmRlckNvbmZpZy5pbWFnZUNhY2hlLmhhcyhlbGVtZW50LmZpbGVJZCk7XG59O1xuXG5jb25zdCBzaG91bGRSZXNldEltYWdlRmlsdGVyID0gZnVuY3Rpb24gKGVsZW1lbnQsIHJlbmRlckNvbmZpZykge1xuICByZXR1cm4gcmVuZGVyQ29uZmlnLnRoZW1lID09PSBcImRhcmtcIiAmJiBpc0luaXRpYWxpemVkSW1hZ2VFbGVtZW50KGVsZW1lbnQpICYmICFpc1BlbmRpbmdJbWFnZUVsZW1lbnQoZWxlbWVudCwgcmVuZGVyQ29uZmlnKSAmJiByZW5kZXJDb25maWcuaW1hZ2VDYWNoZS5nZXQoZWxlbWVudC5maWxlSWQpPy5taW1lVHlwZSAhPT0gTUlNRV9UWVBFUy5zdmc7XG59O1xuXG5jb25zdCBnZXREYXNoQXJyYXlEYXNoZWQgPSBmdW5jdGlvbiAoc3Ryb2tlV2lkdGgpIHtcbiAgcmV0dXJuIFs4LCA4ICsgc3Ryb2tlV2lkdGhdO1xufTtcblxuY29uc3QgZ2V0RGFzaEFycmF5RG90dGVkID0gZnVuY3Rpb24gKHN0cm9rZVdpZHRoKSB7XG4gIHJldHVybiBbMS41LCA2ICsgc3Ryb2tlV2lkdGhdO1xufTtcblxuY29uc3QgZ2V0Q2FudmFzUGFkZGluZyA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50LnR5cGUgPT09IFwiZnJlZWRyYXdcIiA/IGVsZW1lbnQuc3Ryb2tlV2lkdGggKiAxMiA6IDIwO1xufTtcblxuY29uc3QgZ2VuZXJhdGVFbGVtZW50Q2FudmFzID0gZnVuY3Rpb24gKGVsZW1lbnQsIHpvb20sIHJlbmRlckNvbmZpZykge1xuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgY29uc3QgcGFkZGluZyA9IGdldENhbnZhc1BhZGRpbmcoZWxlbWVudCk7XG4gIGxldCBjYW52YXNPZmZzZXRYID0gMDtcbiAgbGV0IGNhbnZhc09mZnNldFkgPSAwO1xuXG4gIGlmIChpc0xpbmVhckVsZW1lbnQoZWxlbWVudCkgfHwgaXNGcmVlRHJhd0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICAgIGNhbnZhcy53aWR0aCA9IGRpc3RhbmNlKHgxLCB4MikgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUgKyBwYWRkaW5nICogem9vbS52YWx1ZSAqIDI7XG4gICAgY2FudmFzLmhlaWdodCA9IGRpc3RhbmNlKHkxLCB5MikgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUgKyBwYWRkaW5nICogem9vbS52YWx1ZSAqIDI7XG4gICAgY2FudmFzT2Zmc2V0WCA9IGVsZW1lbnQueCA+IHgxID8gZGlzdGFuY2UoZWxlbWVudC54LCB4MSkgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUgOiAwO1xuICAgIGNhbnZhc09mZnNldFkgPSBlbGVtZW50LnkgPiB5MSA/IGRpc3RhbmNlKGVsZW1lbnQueSwgeTEpICogd2luZG93LmRldmljZVBpeGVsUmF0aW8gKiB6b29tLnZhbHVlIDogMDtcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShjYW52YXNPZmZzZXRYLCBjYW52YXNPZmZzZXRZKTtcbiAgfSBlbHNlIHtcbiAgICBjYW52YXMud2lkdGggPSBlbGVtZW50LndpZHRoICogd2luZG93LmRldmljZVBpeGVsUmF0aW8gKiB6b29tLnZhbHVlICsgcGFkZGluZyAqIHpvb20udmFsdWUgKiAyO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBlbGVtZW50LmhlaWdodCAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZSArIHBhZGRpbmcgKiB6b29tLnZhbHVlICogMjtcbiAgfVxuXG4gIGNvbnRleHQuc2F2ZSgpO1xuICBjb250ZXh0LnRyYW5zbGF0ZShwYWRkaW5nICogem9vbS52YWx1ZSwgcGFkZGluZyAqIHpvb20udmFsdWUpO1xuICBjb250ZXh0LnNjYWxlKHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZSwgd2luZG93LmRldmljZVBpeGVsUmF0aW8gKiB6b29tLnZhbHVlKTtcbiAgY29uc3QgcmMgPSByb3VnaC5jYW52YXMoY2FudmFzKTsgLy8gaW4gZGFyayB0aGVtZSwgcmV2ZXJ0IHRoZSBpbWFnZSBjb2xvciBmaWx0ZXJcblxuICBpZiAoc2hvdWxkUmVzZXRJbWFnZUZpbHRlcihlbGVtZW50LCByZW5kZXJDb25maWcpKSB7XG4gICAgY29udGV4dC5maWx0ZXIgPSBJTUFHRV9JTlZFUlRfRklMVEVSO1xuICB9XG5cbiAgZHJhd0VsZW1lbnRPbkNhbnZhcyhlbGVtZW50LCByYywgY29udGV4dCwgcmVuZGVyQ29uZmlnKTtcbiAgY29udGV4dC5yZXN0b3JlKCk7XG4gIHJldHVybiB7XG4gICAgZWxlbWVudCxcbiAgICBjYW52YXMsXG4gICAgdGhlbWU6IHJlbmRlckNvbmZpZy50aGVtZSxcbiAgICBjYW52YXNab29tOiB6b29tLnZhbHVlLFxuICAgIGNhbnZhc09mZnNldFgsXG4gICAgY2FudmFzT2Zmc2V0WVxuICB9O1xufTtcblxuY29uc3QgSU1BR0VfUExBQ0VIT0xERVJfSU1HID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbklNQUdFX1BMQUNFSE9MREVSX0lNRy5zcmMgPSBgZGF0YToke01JTUVfVFlQRVMuc3ZnfSwke2VuY29kZVVSSUNvbXBvbmVudChgPHN2ZyBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiIGRhdGEtcHJlZml4PVwiZmFzXCIgZGF0YS1pY29uPVwiaW1hZ2VcIiBjbGFzcz1cInN2Zy1pbmxpbmUtLWZhIGZhLWltYWdlIGZhLXctMTZcIiByb2xlPVwiaW1nXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgNTEyIDUxMlwiPjxwYXRoIGZpbGw9XCIjODg4XCIgZD1cIk00NjQgNDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI4OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4ek0xMTIgMTIwYy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2IDU2LTI1LjA3MiA1Ni01Ni0yNS4wNzItNTYtNTYtNTZ6TTY0IDM4NGgzODRWMjcybC04Ny41MTUtODcuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMjA4IDMyMGwtNTUuNTE1LTU1LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDY0IDMzNnY0OHpcIj48L3BhdGg+PC9zdmc+YCl9YDtcbmNvbnN0IElNQUdFX0VSUk9SX1BMQUNFSE9MREVSX0lNRyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbWdcIik7XG5JTUFHRV9FUlJPUl9QTEFDRUhPTERFUl9JTUcuc3JjID0gYGRhdGE6JHtNSU1FX1RZUEVTLnN2Z30sJHtlbmNvZGVVUklDb21wb25lbnQoYDxzdmcgdmlld0JveD1cIjAgMCA2NjggNjY4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgc3R5bGU9XCJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MlwiPjxwYXRoIGQ9XCJNNDY0IDQ0OEg0OGMtMjYuNTEgMC00OC0yMS40OS00OC00OFYxMTJjMC0yNi41MSAyMS40OS00OCA0OC00OGg0MTZjMjYuNTEgMCA0OCAyMS40OSA0OCA0OHYyODhjMCAyNi41MS0yMS40OSA0OC00OCA0OFpNMTEyIDEyMGMtMzAuOTI4IDAtNTYgMjUuMDcyLTU2IDU2czI1LjA3MiA1NiA1NiA1NiA1Ni0yNS4wNzIgNTYtNTYtMjUuMDcyLTU2LTU2LTU2Wk02NCAzODRoMzg0VjI3MmwtODcuNTE1LTg3LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDIwOCAzMjBsLTU1LjUxNS01NS41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEw2NCAzMzZ2NDhaXCIgc3R5bGU9XCJmaWxsOiM4ODg7ZmlsbC1ydWxlOm5vbnplcm9cIiB0cmFuc2Zvcm09XCJtYXRyaXgoLjgxNzA5IDAgMCAuODE3MDkgMTI0LjgyNSAxNDUuODI1KVwiLz48cGF0aCBkPVwiTTI1NiA4QzExOS4wMzQgOCA4IDExOS4wMzMgOCAyNTZjMCAxMzYuOTY3IDExMS4wMzQgMjQ4IDI0OCAyNDhzMjQ4LTExMS4wMzQgMjQ4LTI0OFMzOTIuOTY3IDggMjU2IDhabTEzMC4xMDggMTE3Ljg5MmM2NS40NDggNjUuNDQ4IDcwIDE2NS40ODEgMjAuNjc3IDIzNS42MzdMMTUwLjQ3IDEwNS4yMTZjNzAuMjA0LTQ5LjM1NiAxNzAuMjI2LTQ0LjczNSAyMzUuNjM4IDIwLjY3NlpNMTI1Ljg5MiAzODYuMTA4Yy02NS40NDgtNjUuNDQ4LTcwLTE2NS40ODEtMjAuNjc3LTIzNS42MzdMMzYxLjUzIDQwNi43ODRjLTcwLjIwMyA0OS4zNTYtMTcwLjIyNiA0NC43MzYtMjM1LjYzOC0yMC42NzZaXCIgc3R5bGU9XCJmaWxsOiM4ODg7ZmlsbC1ydWxlOm5vbnplcm9cIiB0cmFuc2Zvcm09XCJtYXRyaXgoLjMwMzY2IDAgMCAuMzAzNjYgNTA2LjgyMiA2MC4wNjUpXCIvPjwvc3ZnPmApfWA7XG5cbmNvbnN0IGRyYXdJbWFnZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKGVsZW1lbnQsIGNvbnRleHQsIHpvb21WYWx1ZSkge1xuICBjb250ZXh0LmZpbGxTdHlsZSA9IFwiI0U3RTdFN1wiO1xuICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcbiAgY29uc3QgaW1hZ2VNaW5XaWR0aE9ySGVpZ2h0ID0gTWF0aC5taW4oZWxlbWVudC53aWR0aCwgZWxlbWVudC5oZWlnaHQpO1xuICBjb25zdCBzaXplID0gTWF0aC5taW4oaW1hZ2VNaW5XaWR0aE9ySGVpZ2h0LCBNYXRoLm1pbihpbWFnZU1pbldpZHRoT3JIZWlnaHQgKiAwLjQsIDEwMCkpO1xuICBjb250ZXh0LmRyYXdJbWFnZShlbGVtZW50LnN0YXR1cyA9PT0gXCJlcnJvclwiID8gSU1BR0VfRVJST1JfUExBQ0VIT0xERVJfSU1HIDogSU1BR0VfUExBQ0VIT0xERVJfSU1HLCBlbGVtZW50LndpZHRoIC8gMiAtIHNpemUgLyAyLCBlbGVtZW50LmhlaWdodCAvIDIgLSBzaXplIC8gMiwgc2l6ZSwgc2l6ZSk7XG59O1xuXG5jb25zdCBkcmF3RWxlbWVudE9uQ2FudmFzID0gZnVuY3Rpb24gKGVsZW1lbnQsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpIHtcbiAgY29udGV4dC5nbG9iYWxBbHBoYSA9IGVsZW1lbnQub3BhY2l0eSAvIDEwMDtcblxuICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICBjYXNlIFwiZGlhbW9uZFwiOlxuICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgICB7XG4gICAgICAgIGNvbnRleHQubGluZUpvaW4gPSBcInJvdW5kXCI7XG4gICAgICAgIGNvbnRleHQubGluZUNhcCA9IFwicm91bmRcIjtcbiAgICAgICAgcmMuZHJhdyhnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGNhc2UgXCJhcnJvd1wiOlxuICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICB7XG4gICAgICAgIGNvbnRleHQubGluZUpvaW4gPSBcInJvdW5kXCI7XG4gICAgICAgIGNvbnRleHQubGluZUNhcCA9IFwicm91bmRcIjtcbiAgICAgICAgZ2V0U2hhcGVGb3JFbGVtZW50KGVsZW1lbnQpLmZvckVhY2goZnVuY3Rpb24gKHNoYXBlKSB7XG4gICAgICAgICAgcmMuZHJhdyhzaGFwZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGNhc2UgXCJmcmVlZHJhd1wiOlxuICAgICAge1xuICAgICAgICAvLyBEcmF3IGRpcmVjdGx5IHRvIGNhbnZhc1xuICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBlbGVtZW50LnN0cm9rZUNvbG9yO1xuICAgICAgICBjb25zdCBwYXRoID0gZ2V0RnJlZURyYXdQYXRoMkQoZWxlbWVudCk7XG4gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZWxlbWVudC5zdHJva2VDb2xvcjtcbiAgICAgICAgY29udGV4dC5maWxsKHBhdGgpO1xuICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICAgIHtcbiAgICAgICAgY29uc3QgaW1nID0gaXNJbml0aWFsaXplZEltYWdlRWxlbWVudChlbGVtZW50KSA/IHJlbmRlckNvbmZpZy5pbWFnZUNhY2hlLmdldChlbGVtZW50LmZpbGVJZCk/LmltYWdlIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChpbWcgIT0gbnVsbCAmJiAhKGltZyBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1nLCAwXG4gICAgICAgICAgLyogaGFyZGNvZGVkIGZvciB0aGUgc2VsZWN0aW9uIGJveCovXG4gICAgICAgICAgLCAwLCBlbGVtZW50LndpZHRoLCBlbGVtZW50LmhlaWdodCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZHJhd0ltYWdlUGxhY2Vob2xkZXIoZWxlbWVudCwgY29udGV4dCwgcmVuZGVyQ29uZmlnLnpvb20udmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICBpZiAoaXNUZXh0RWxlbWVudChlbGVtZW50KSkge1xuICAgICAgICAgIGNvbnN0IHJ0bCA9IGlzUlRMKGVsZW1lbnQudGV4dCk7XG4gICAgICAgICAgY29uc3Qgc2hvdWxkVGVtcG9yYXJpbHlBdHRhY2ggPSBydGwgJiYgIWNvbnRleHQuY2FudmFzLmlzQ29ubmVjdGVkO1xuXG4gICAgICAgICAgaWYgKHNob3VsZFRlbXBvcmFyaWx5QXR0YWNoKSB7XG4gICAgICAgICAgICAvLyB0byBjb3JyZWN0bHkgcmVuZGVyIFJUTCB0ZXh0IG1peGVkIHdpdGggTFRSLCB3ZSBoYXZlIHRvIGFwcGVuZCBpdFxuICAgICAgICAgICAgLy8gdG8gdGhlIERPTVxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250ZXh0LmNhbnZhcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5jYW52YXMuc2V0QXR0cmlidXRlKFwiZGlyXCIsIHJ0bCA/IFwicnRsXCIgOiBcImx0clwiKTtcbiAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICBjb250ZXh0LmZvbnQgPSBnZXRGb250U3RyaW5nKGVsZW1lbnQpO1xuICAgICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gZWxlbWVudC5zdHJva2VDb2xvcjtcbiAgICAgICAgICBjb250ZXh0LnRleHRBbGlnbiA9IGVsZW1lbnQudGV4dEFsaWduOyAvLyBDYW52YXMgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aWxpbmUgdGV4dCBieSBkZWZhdWx0XG5cbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGVsZW1lbnQudGV4dC5yZXBsYWNlKC9cXHJcXG4/L2csIFwiXFxuXCIpLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBlbGVtZW50LmhlaWdodCAvIGxpbmVzLmxlbmd0aDtcbiAgICAgICAgICBjb25zdCB2ZXJ0aWNhbE9mZnNldCA9IGVsZW1lbnQuaGVpZ2h0IC0gZWxlbWVudC5iYXNlbGluZTtcbiAgICAgICAgICBjb25zdCBob3Jpem9udGFsT2Zmc2V0ID0gZWxlbWVudC50ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgPyBlbGVtZW50LndpZHRoIC8gMiA6IGVsZW1lbnQudGV4dEFsaWduID09PSBcInJpZ2h0XCIgPyBlbGVtZW50LndpZHRoIDogMDtcblxuICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsaW5lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQobGluZXNbaW5kZXhdLCBob3Jpem9udGFsT2Zmc2V0LCAoaW5kZXggKyAxKSAqIGxpbmVIZWlnaHQgLSB2ZXJ0aWNhbE9mZnNldCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG5cbiAgICAgICAgICBpZiAoc2hvdWxkVGVtcG9yYXJpbHlBdHRhY2gpIHtcbiAgICAgICAgICAgIGNvbnRleHQuY2FudmFzLnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgdHlwZSAke2VsZW1lbnQudHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgY29udGV4dC5nbG9iYWxBbHBoYSA9IDE7XG59O1xuXG5jb25zdCBlbGVtZW50V2l0aENhbnZhc0NhY2hlID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IHNoYXBlQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuZXhwb3J0IGNvbnN0IGdldFNoYXBlRm9yRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHJldHVybiBzaGFwZUNhY2hlLmdldChlbGVtZW50KTtcbn07XG5leHBvcnQgY29uc3QgaW52YWxpZGF0ZVNoYXBlRm9yRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHJldHVybiBzaGFwZUNhY2hlLmRlbGV0ZShlbGVtZW50KTtcbn07XG5leHBvcnQgY29uc3QgZ2VuZXJhdGVSb3VnaE9wdGlvbnMgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICBsZXQgY29udGludW91c1BhdGggPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IGZhbHNlO1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHNlZWQ6IGVsZW1lbnQuc2VlZCxcbiAgICBzdHJva2VMaW5lRGFzaDogZWxlbWVudC5zdHJva2VTdHlsZSA9PT0gXCJkYXNoZWRcIiA/IGdldERhc2hBcnJheURhc2hlZChlbGVtZW50LnN0cm9rZVdpZHRoKSA6IGVsZW1lbnQuc3Ryb2tlU3R5bGUgPT09IFwiZG90dGVkXCIgPyBnZXREYXNoQXJyYXlEb3R0ZWQoZWxlbWVudC5zdHJva2VXaWR0aCkgOiB1bmRlZmluZWQsXG4gICAgLy8gZm9yIG5vbi1zb2xpZCBzdHJva2VzLCBkaXNhYmxlIG11bHRpU3Ryb2tlIGJlY2F1c2UgaXQgdGVuZHMgdG8gbWFrZVxuICAgIC8vIGRhc2hlcy9kb3RzIG92ZXJsYXkgZWFjaCBvdGhlclxuICAgIGRpc2FibGVNdWx0aVN0cm9rZTogZWxlbWVudC5zdHJva2VTdHlsZSAhPT0gXCJzb2xpZFwiLFxuICAgIC8vIGZvciBub24tc29saWQgc3Ryb2tlcywgaW5jcmVhc2UgdGhlIHdpZHRoIGEgYml0IHRvIG1ha2UgaXQgdmlzdWFsbHlcbiAgICAvLyBzaW1pbGFyIHRvIHNvbGlkIHN0cm9rZXMsIGJlY2F1c2Ugd2UncmUgYWxzbyBkaXNhYmxpbmcgbXVsdGlTdHJva2VcbiAgICBzdHJva2VXaWR0aDogZWxlbWVudC5zdHJva2VTdHlsZSAhPT0gXCJzb2xpZFwiID8gZWxlbWVudC5zdHJva2VXaWR0aCArIDAuNSA6IGVsZW1lbnQuc3Ryb2tlV2lkdGgsXG4gICAgLy8gd2hlbiBpbmNyZWFzaW5nIHN0cm9rZVdpZHRoLCB3ZSBtdXN0IGV4cGxpY2l0bHkgc2V0IGZpbGxXZWlnaHQgYW5kXG4gICAgLy8gaGFjaHVyZUdhcCBiZWNhdXNlIGlmIG5vdCBzcGVjaWZpZWQsIHJvdWdoanMgdXNlcyBzdHJva2VXaWR0aCB0b1xuICAgIC8vIGNhbGN1bGF0ZSB0aGVtIChhbmQgd2UgZG9uJ3Qgd2FudCB0aGUgZmlsbHMgdG8gYmUgbW9kaWZpZWQpXG4gICAgZmlsbFdlaWdodDogZWxlbWVudC5zdHJva2VXaWR0aCAvIDIsXG4gICAgaGFjaHVyZUdhcDogZWxlbWVudC5zdHJva2VXaWR0aCAqIDQsXG4gICAgcm91Z2huZXNzOiBlbGVtZW50LnJvdWdobmVzcyxcbiAgICBzdHJva2U6IGVsZW1lbnQuc3Ryb2tlQ29sb3IsXG4gICAgcHJlc2VydmVWZXJ0aWNlczogY29udGludW91c1BhdGhcbiAgfTtcblxuICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICBjYXNlIFwiZGlhbW9uZFwiOlxuICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgICB7XG4gICAgICAgIG9wdGlvbnMuZmlsbFN0eWxlID0gZWxlbWVudC5maWxsU3R5bGU7XG4gICAgICAgIG9wdGlvbnMuZmlsbCA9IGVsZW1lbnQuYmFja2dyb3VuZENvbG9yID09PSBcInRyYW5zcGFyZW50XCIgPyB1bmRlZmluZWQgOiBlbGVtZW50LmJhY2tncm91bmRDb2xvcjtcblxuICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcImVsbGlwc2VcIikge1xuICAgICAgICAgIG9wdGlvbnMuY3VydmVGaXR0aW5nID0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgICAgfVxuXG4gICAgY2FzZSBcImxpbmVcIjpcbiAgICAgIHtcbiAgICAgICAgaWYgKGlzUGF0aEFMb29wKGVsZW1lbnQucG9pbnRzKSkge1xuICAgICAgICAgIG9wdGlvbnMuZmlsbFN0eWxlID0gZWxlbWVudC5maWxsU3R5bGU7XG4gICAgICAgICAgb3B0aW9ucy5maWxsID0gZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3IgPT09IFwidHJhbnNwYXJlbnRcIiA/IHVuZGVmaW5lZCA6IGVsZW1lbnQuYmFja2dyb3VuZENvbG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICB9XG5cbiAgICBjYXNlIFwiZnJlZWRyYXdcIjpcbiAgICBjYXNlIFwiYXJyb3dcIjpcbiAgICAgIHJldHVybiBvcHRpb25zO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkIHR5cGUgJHtlbGVtZW50LnR5cGV9YCk7XG4gICAgICB9XG4gIH1cbn07XG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgZWxlbWVudCdzIHNoYXBlIGFuZCBwdXRzIGl0IGludG8gdGhlIGNhY2hlLlxuICogQHBhcmFtIGVsZW1lbnRcbiAqIEBwYXJhbSBnZW5lcmF0b3JcbiAqL1xuXG5jb25zdCBnZW5lcmF0ZUVsZW1lbnRTaGFwZSA9IGZ1bmN0aW9uIChlbGVtZW50LCBnZW5lcmF0b3IpIHtcbiAgbGV0IHNoYXBlID0gc2hhcGVDYWNoZS5nZXQoZWxlbWVudCkgfHwgbnVsbDtcblxuICBpZiAoIXNoYXBlKSB7XG4gICAgZWxlbWVudFdpdGhDYW52YXNDYWNoZS5kZWxldGUoZWxlbWVudCk7XG5cbiAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgICAgICBpZiAoZWxlbWVudC5zdHJva2VTaGFycG5lc3MgPT09IFwicm91bmRcIikge1xuICAgICAgICAgIGNvbnN0IHcgPSBlbGVtZW50LndpZHRoO1xuICAgICAgICAgIGNvbnN0IGggPSBlbGVtZW50LmhlaWdodDtcbiAgICAgICAgICBjb25zdCByID0gTWF0aC5taW4odywgaCkgKiAwLjI1O1xuICAgICAgICAgIHNoYXBlID0gZ2VuZXJhdG9yLnBhdGgoYE0gJHtyfSAwIEwgJHt3IC0gcn0gMCBRICR7d30gMCwgJHt3fSAke3J9IEwgJHt3fSAke2ggLSByfSBRICR7d30gJHtofSwgJHt3IC0gcn0gJHtofSBMICR7cn0gJHtofSBRIDAgJHtofSwgMCAke2ggLSByfSBMIDAgJHtyfSBRIDAgMCwgJHtyfSAwYCwgZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCwgdHJ1ZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNoYXBlID0gZ2VuZXJhdG9yLnJlY3RhbmdsZSgwLCAwLCBlbGVtZW50LndpZHRoLCBlbGVtZW50LmhlaWdodCwgZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJkaWFtb25kXCI6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBbdG9wWCwgdG9wWSwgcmlnaHRYLCByaWdodFksIGJvdHRvbVgsIGJvdHRvbVksIGxlZnRYLCBsZWZ0WV0gPSBnZXREaWFtb25kUG9pbnRzKGVsZW1lbnQpO1xuICAgICAgICAgIHNoYXBlID0gZ2VuZXJhdG9yLnBvbHlnb24oW1t0b3BYLCB0b3BZXSwgW3JpZ2h0WCwgcmlnaHRZXSwgW2JvdHRvbVgsIGJvdHRvbVldLCBbbGVmdFgsIGxlZnRZXV0sIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFwiZWxsaXBzZVwiOlxuICAgICAgICBzaGFwZSA9IGdlbmVyYXRvci5lbGxpcHNlKGVsZW1lbnQud2lkdGggLyAyLCBlbGVtZW50LmhlaWdodCAvIDIsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0LCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgY2FzZSBcImFycm93XCI6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCk7IC8vIHBvaW50cyBhcnJheSBjYW4gYmUgZW1wdHkgaW4gdGhlIGJlZ2lubmluZywgc28gaXQgaXMgaW1wb3J0YW50IHRvIGFkZFxuICAgICAgICAgIC8vIGluaXRpYWwgcG9zaXRpb24gdG8gaXRcblxuICAgICAgICAgIGNvbnN0IHBvaW50cyA9IGVsZW1lbnQucG9pbnRzLmxlbmd0aCA/IGVsZW1lbnQucG9pbnRzIDogW1swLCAwXV07IC8vIGN1cnZlIGlzIGFsd2F5cyB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgICAgIC8vIHRoaXMgc2ltcGxpZmllcyBmaW5kaW5nIHRoZSBjdXJ2ZSBmb3IgYW4gZWxlbWVudFxuXG4gICAgICAgICAgaWYgKGVsZW1lbnQuc3Ryb2tlU2hhcnBuZXNzID09PSBcInNoYXJwXCIpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmZpbGwpIHtcbiAgICAgICAgICAgICAgc2hhcGUgPSBbZ2VuZXJhdG9yLnBvbHlnb24ocG9pbnRzLCBvcHRpb25zKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzaGFwZSA9IFtnZW5lcmF0b3IubGluZWFyUGF0aChwb2ludHMsIG9wdGlvbnMpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUgPSBbZ2VuZXJhdG9yLmN1cnZlKHBvaW50cywgb3B0aW9ucyldO1xuICAgICAgICAgIH0gLy8gYWRkIGxpbmVzIG9ubHkgaW4gYXJyb3dcblxuXG4gICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJhcnJvd1wiKSB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIHN0YXJ0QXJyb3doZWFkID0gbnVsbCxcbiAgICAgICAgICAgICAgZW5kQXJyb3doZWFkID0gXCJhcnJvd1wiXG4gICAgICAgICAgICB9ID0gZWxlbWVudDtcblxuICAgICAgICAgICAgY29uc3QgZ2V0QXJyb3doZWFkU2hhcGVzID0gZnVuY3Rpb24gKGVsZW1lbnQsIHNoYXBlLCBwb3NpdGlvbiwgYXJyb3doZWFkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFycm93aGVhZFBvaW50cyA9IGdldEFycm93aGVhZFBvaW50cyhlbGVtZW50LCBzaGFwZSwgcG9zaXRpb24sIGFycm93aGVhZCk7XG5cbiAgICAgICAgICAgICAgaWYgKGFycm93aGVhZFBvaW50cyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgICAgfSAvLyBPdGhlciBhcnJvd2hlYWRzIGhlcmUuLi5cblxuXG4gICAgICAgICAgICAgIGlmIChhcnJvd2hlYWQgPT09IFwiZG90XCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbeCwgeSwgcl0gPSBhcnJvd2hlYWRQb2ludHM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtnZW5lcmF0b3IuY2lyY2xlKHgsIHksIHIsIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3B0aW9ucyksIHt9LCB7XG4gICAgICAgICAgICAgICAgICBmaWxsOiBlbGVtZW50LnN0cm9rZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiBcInNvbGlkXCIsXG4gICAgICAgICAgICAgICAgICBzdHJva2U6IFwibm9uZVwiXG4gICAgICAgICAgICAgICAgfSkpXTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChhcnJvd2hlYWQgPT09IFwidHJpYW5nbGVcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IFt4LCB5LCB4MiwgeTIsIHgzLCB5M10gPSBhcnJvd2hlYWRQb2ludHM7IC8vIGFsd2F5cyB1c2Ugc29saWQgc3Ryb2tlIGZvciB0cmlhbmdsZSBhcnJvd2hlYWRcblxuICAgICAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zLnN0cm9rZUxpbmVEYXNoO1xuICAgICAgICAgICAgICAgIHJldHVybiBbZ2VuZXJhdG9yLnBvbHlnb24oW1t4LCB5XSwgW3gyLCB5Ml0sIFt4MywgeTNdLCBbeCwgeV1dLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG9wdGlvbnMpLCB7fSwge1xuICAgICAgICAgICAgICAgICAgZmlsbDogZWxlbWVudC5zdHJva2VDb2xvcixcbiAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogXCJzb2xpZFwiXG4gICAgICAgICAgICAgICAgfSkpXTtcbiAgICAgICAgICAgICAgfSAvLyBBcnJvdyBhcnJvd2hlYWRzXG5cblxuICAgICAgICAgICAgICBjb25zdCBbeDIsIHkyLCB4MywgeTMsIHg0LCB5NF0gPSBhcnJvd2hlYWRQb2ludHM7XG5cbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuc3Ryb2tlU3R5bGUgPT09IFwiZG90dGVkXCIpIHtcbiAgICAgICAgICAgICAgICAvLyBmb3IgZG90dGVkIGFycm93cyBjYXBzLCByZWR1Y2UgZ2FwIHRvIG1ha2UgaXQgbW9yZSBsZWdpYmxlXG4gICAgICAgICAgICAgICAgY29uc3QgZGFzaCA9IGdldERhc2hBcnJheURvdHRlZChlbGVtZW50LnN0cm9rZVdpZHRoIC0gMSk7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5zdHJva2VMaW5lRGFzaCA9IFtkYXNoWzBdLCBkYXNoWzFdIC0gMV07XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gZm9yIHNvbGlkL2Rhc2hlZCwga2VlcCBzb2xpZCBhcnJvdyBjYXBcbiAgICAgICAgICAgICAgICBkZWxldGUgb3B0aW9ucy5zdHJva2VMaW5lRGFzaDtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBbZ2VuZXJhdG9yLmxpbmUoeDMsIHkzLCB4MiwgeTIsIG9wdGlvbnMpLCBnZW5lcmF0b3IubGluZSh4NCwgeTQsIHgyLCB5Miwgb3B0aW9ucyldO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHN0YXJ0QXJyb3doZWFkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNoYXBlcyA9IGdldEFycm93aGVhZFNoYXBlcyhlbGVtZW50LCBzaGFwZSwgXCJzdGFydFwiLCBzdGFydEFycm93aGVhZCk7XG4gICAgICAgICAgICAgIHNoYXBlLnB1c2goLi4uc2hhcGVzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZEFycm93aGVhZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBpZiAoZW5kQXJyb3doZWFkID09PSB1bmRlZmluZWQpIHsvLyBIZXksIHdlIGhhdmUgYW4gb2xkIGFycm93IGhlcmUhXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBzaGFwZXMgPSBnZXRBcnJvd2hlYWRTaGFwZXMoZWxlbWVudCwgc2hhcGUsIFwiZW5kXCIsIGVuZEFycm93aGVhZCk7XG4gICAgICAgICAgICAgIHNoYXBlLnB1c2goLi4uc2hhcGVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBjYXNlIFwiZnJlZWRyYXdcIjpcbiAgICAgICAge1xuICAgICAgICAgIGdlbmVyYXRlRnJlZURyYXdTaGFwZShlbGVtZW50KTtcbiAgICAgICAgICBzaGFwZSA9IFtdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICAgICAge1xuICAgICAgICAgIC8vIGp1c3QgdG8gZW5zdXJlIHdlIGRvbid0IHJlZ2VuZXJhdGUgZWxlbWVudC5jYW52YXMgb24gcmVyZW5kZXJzXG4gICAgICAgICAgc2hhcGUgPSBbXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNoYXBlQ2FjaGUuc2V0KGVsZW1lbnQsIHNoYXBlKTtcbiAgfVxufTtcblxuY29uc3QgZ2VuZXJhdGVFbGVtZW50V2l0aENhbnZhcyA9IGZ1bmN0aW9uIChlbGVtZW50LCByZW5kZXJDb25maWcpIHtcbiAgY29uc3Qgem9vbSA9IHJlbmRlckNvbmZpZyA/IHJlbmRlckNvbmZpZy56b29tIDogZGVmYXVsdEFwcFN0YXRlLnpvb207XG4gIGNvbnN0IHByZXZFbGVtZW50V2l0aENhbnZhcyA9IGVsZW1lbnRXaXRoQ2FudmFzQ2FjaGUuZ2V0KGVsZW1lbnQpO1xuICBjb25zdCBzaG91bGRSZWdlbmVyYXRlQmVjYXVzZVpvb20gPSBwcmV2RWxlbWVudFdpdGhDYW52YXMgJiYgcHJldkVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20gIT09IHpvb20udmFsdWUgJiYgIXJlbmRlckNvbmZpZz8uc2hvdWxkQ2FjaGVJZ25vcmVab29tO1xuXG4gIGlmICghcHJldkVsZW1lbnRXaXRoQ2FudmFzIHx8IHNob3VsZFJlZ2VuZXJhdGVCZWNhdXNlWm9vbSB8fCBwcmV2RWxlbWVudFdpdGhDYW52YXMudGhlbWUgIT09IHJlbmRlckNvbmZpZy50aGVtZSkge1xuICAgIGNvbnN0IGVsZW1lbnRXaXRoQ2FudmFzID0gZ2VuZXJhdGVFbGVtZW50Q2FudmFzKGVsZW1lbnQsIHpvb20sIHJlbmRlckNvbmZpZyk7XG4gICAgZWxlbWVudFdpdGhDYW52YXNDYWNoZS5zZXQoZWxlbWVudCwgZWxlbWVudFdpdGhDYW52YXMpO1xuICAgIHJldHVybiBlbGVtZW50V2l0aENhbnZhcztcbiAgfVxuXG4gIHJldHVybiBwcmV2RWxlbWVudFdpdGhDYW52YXM7XG59O1xuXG5jb25zdCBkcmF3RWxlbWVudEZyb21DYW52YXMgPSBmdW5jdGlvbiAoZWxlbWVudFdpdGhDYW52YXMsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpIHtcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRXaXRoQ2FudmFzLmVsZW1lbnQ7XG4gIGNvbnN0IHBhZGRpbmcgPSBnZXRDYW52YXNQYWRkaW5nKGVsZW1lbnQpO1xuICBsZXQgW3gxLCB5MSwgeDIsIHkyXSA9IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTsgLy8gRnJlZSBkcmF3IGVsZW1lbnRzIHdpbGwgb3RoZXJ3aXNlIFwic2h1ZmZsZVwiIGFzIHRoZSBtaW4geCBhbmQgeSBjaGFuZ2VcblxuICBpZiAoaXNGcmVlRHJhd0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICB4MSA9IE1hdGguZmxvb3IoeDEpO1xuICAgIHgyID0gTWF0aC5jZWlsKHgyKTtcbiAgICB5MSA9IE1hdGguZmxvb3IoeTEpO1xuICAgIHkyID0gTWF0aC5jZWlsKHkyKTtcbiAgfVxuXG4gIGNvbnN0IGN4ID0gKCh4MSArIHgyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWCkgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbztcbiAgY29uc3QgY3kgPSAoKHkxICsgeTIpIC8gMiArIHJlbmRlckNvbmZpZy5zY3JvbGxZKSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuXG4gIGNvbnN0IF9pc1BlbmRpbmdJbWFnZUVsZW1lbnQgPSBpc1BlbmRpbmdJbWFnZUVsZW1lbnQoZWxlbWVudCwgcmVuZGVyQ29uZmlnKTtcblxuICBjb25zdCBzY2FsZVhGYWN0b3IgPSBcInNjYWxlXCIgaW4gZWxlbWVudFdpdGhDYW52YXMuZWxlbWVudCAmJiAhX2lzUGVuZGluZ0ltYWdlRWxlbWVudCA/IGVsZW1lbnRXaXRoQ2FudmFzLmVsZW1lbnQuc2NhbGVbMF0gOiAxO1xuICBjb25zdCBzY2FsZVlGYWN0b3IgPSBcInNjYWxlXCIgaW4gZWxlbWVudFdpdGhDYW52YXMuZWxlbWVudCAmJiAhX2lzUGVuZGluZ0ltYWdlRWxlbWVudCA/IGVsZW1lbnRXaXRoQ2FudmFzLmVsZW1lbnQuc2NhbGVbMV0gOiAxO1xuICBjb250ZXh0LnNhdmUoKTtcbiAgY29udGV4dC5zY2FsZSgxIC8gd2luZG93LmRldmljZVBpeGVsUmF0aW8gKiBzY2FsZVhGYWN0b3IsIDEgLyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHNjYWxlWUZhY3Rvcik7XG4gIGNvbnRleHQudHJhbnNsYXRlKGN4ICogc2NhbGVYRmFjdG9yLCBjeSAqIHNjYWxlWUZhY3Rvcik7XG4gIGNvbnRleHQucm90YXRlKGVsZW1lbnQuYW5nbGUgKiBzY2FsZVhGYWN0b3IgKiBzY2FsZVlGYWN0b3IpO1xuICBjb250ZXh0LmRyYXdJbWFnZShlbGVtZW50V2l0aENhbnZhcy5jYW52YXMsIC0oeDIgLSB4MSkgLyAyICogd2luZG93LmRldmljZVBpeGVsUmF0aW8gLSBwYWRkaW5nICogZWxlbWVudFdpdGhDYW52YXMuY2FudmFzWm9vbSAvIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20sIC0oeTIgLSB5MSkgLyAyICogd2luZG93LmRldmljZVBpeGVsUmF0aW8gLSBwYWRkaW5nICogZWxlbWVudFdpdGhDYW52YXMuY2FudmFzWm9vbSAvIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20sIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhcy53aWR0aCAvIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20sIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhcy5oZWlnaHQgLyBlbGVtZW50V2l0aENhbnZhcy5jYW52YXNab29tKTtcbiAgY29udGV4dC5yZXN0b3JlKCk7IC8vIENsZWFyIHRoZSBuZXN0ZWQgZWxlbWVudCB3ZSBhcHBlbmRlZCB0byB0aGUgRE9NXG59O1xuXG5leHBvcnQgY29uc3QgcmVuZGVyRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCByYywgY29udGV4dCwgcmVuZGVyQ29uZmlnKSB7XG4gIGNvbnN0IGdlbmVyYXRvciA9IHJjLmdlbmVyYXRvcjtcblxuICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgIGNhc2UgXCJzZWxlY3Rpb25cIjpcbiAgICAgIHtcbiAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGVsZW1lbnQueCArIHJlbmRlckNvbmZpZy5zY3JvbGxYLCBlbGVtZW50LnkgKyByZW5kZXJDb25maWcuc2Nyb2xsWSk7XG4gICAgICAgIGNvbnRleHQuZmlsbFN0eWxlID0gXCJyZ2JhKDAsIDAsIDI1NSwgMC4xMClcIjtcbiAgICAgICAgY29udGV4dC5maWxsUmVjdCgwLCAwLCBlbGVtZW50LndpZHRoLCBlbGVtZW50LmhlaWdodCk7XG4gICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGNhc2UgXCJmcmVlZHJhd1wiOlxuICAgICAge1xuICAgICAgICBnZW5lcmF0ZUVsZW1lbnRTaGFwZShlbGVtZW50LCBnZW5lcmF0b3IpO1xuXG4gICAgICAgIGlmIChyZW5kZXJDb25maWcuaXNFeHBvcnRpbmcpIHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50V2l0aENhbnZhcyA9IGdlbmVyYXRlRWxlbWVudFdpdGhDYW52YXMoZWxlbWVudCwgcmVuZGVyQ29uZmlnKTtcbiAgICAgICAgICBkcmF3RWxlbWVudEZyb21DYW52YXMoZWxlbWVudFdpdGhDYW52YXMsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG4gICAgICAgICAgY29uc3QgY3ggPSAoeDEgKyB4MikgLyAyICsgcmVuZGVyQ29uZmlnLnNjcm9sbFg7XG4gICAgICAgICAgY29uc3QgY3kgPSAoeTEgKyB5MikgLyAyICsgcmVuZGVyQ29uZmlnLnNjcm9sbFk7XG4gICAgICAgICAgY29uc3Qgc2hpZnRYID0gKHgyIC0geDEpIC8gMiAtIChlbGVtZW50LnggLSB4MSk7XG4gICAgICAgICAgY29uc3Qgc2hpZnRZID0gKHkyIC0geTEpIC8gMiAtIChlbGVtZW50LnkgLSB5MSk7XG4gICAgICAgICAgY29udGV4dC5zYXZlKCk7XG4gICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoY3gsIGN5KTtcbiAgICAgICAgICBjb250ZXh0LnJvdGF0ZShlbGVtZW50LmFuZ2xlKTtcbiAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtc2hpZnRYLCAtc2hpZnRZKTtcbiAgICAgICAgICBkcmF3RWxlbWVudE9uQ2FudmFzKGVsZW1lbnQsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpO1xuICAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIFwicmVjdGFuZ2xlXCI6XG4gICAgY2FzZSBcImRpYW1vbmRcIjpcbiAgICBjYXNlIFwiZWxsaXBzZVwiOlxuICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgY2FzZSBcImFycm93XCI6XG4gICAgY2FzZSBcImltYWdlXCI6XG4gICAgY2FzZSBcInRleHRcIjpcbiAgICAgIHtcbiAgICAgICAgZ2VuZXJhdGVFbGVtZW50U2hhcGUoZWxlbWVudCwgZ2VuZXJhdG9yKTtcblxuICAgICAgICBpZiAocmVuZGVyQ29uZmlnLmlzRXhwb3J0aW5nKSB7XG4gICAgICAgICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcbiAgICAgICAgICBjb25zdCBjeCA9ICh4MSArIHgyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWDtcbiAgICAgICAgICBjb25zdCBjeSA9ICh5MSArIHkyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWTtcbiAgICAgICAgICBjb25zdCBzaGlmdFggPSAoeDIgLSB4MSkgLyAyIC0gKGVsZW1lbnQueCAtIHgxKTtcbiAgICAgICAgICBjb25zdCBzaGlmdFkgPSAoeTIgLSB5MSkgLyAyIC0gKGVsZW1lbnQueSAtIHkxKTtcbiAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShjeCwgY3kpO1xuICAgICAgICAgIGNvbnRleHQucm90YXRlKGVsZW1lbnQuYW5nbGUpO1xuICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1zaGlmdFgsIC1zaGlmdFkpO1xuXG4gICAgICAgICAgaWYgKHNob3VsZFJlc2V0SW1hZ2VGaWx0ZXIoZWxlbWVudCwgcmVuZGVyQ29uZmlnKSkge1xuICAgICAgICAgICAgY29udGV4dC5maWx0ZXIgPSBcIm5vbmVcIjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkcmF3RWxlbWVudE9uQ2FudmFzKGVsZW1lbnQsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpO1xuICAgICAgICAgIGNvbnRleHQucmVzdG9yZSgpOyAvLyBub3QgZXhwb3J0aW5nIOKGkiBvcHRpbWl6ZWQgcmVuZGVyaW5nIChjYWNoZSAmIHJlbmRlciBmcm9tIGVsZW1lbnRcbiAgICAgICAgICAvLyBjYW52YXNlcylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBlbGVtZW50V2l0aENhbnZhcyA9IGdlbmVyYXRlRWxlbWVudFdpdGhDYW52YXMoZWxlbWVudCwgcmVuZGVyQ29uZmlnKTtcbiAgICAgICAgICBkcmF3RWxlbWVudEZyb21DYW52YXMoZWxlbWVudFdpdGhDYW52YXMsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZCB0eXBlICR7ZWxlbWVudC50eXBlfWApO1xuICAgICAgfVxuICB9XG59O1xuXG5jb25zdCByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uID0gZnVuY3Rpb24gKHJzdmcsIGRyYXdhYmxlLCBwcmVjaXNpb24pIHtcbiAgaWYgKHR5cGVvZiBwcmVjaXNpb24gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICByZXR1cm4gcnN2Zy5kcmF3KGRyYXdhYmxlKTtcbiAgfVxuXG4gIGNvbnN0IHBzaGFwZSA9IHtcbiAgICBzZXRzOiBkcmF3YWJsZS5zZXRzLFxuICAgIHNoYXBlOiBkcmF3YWJsZS5zaGFwZSxcbiAgICBvcHRpb25zOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIGRyYXdhYmxlLm9wdGlvbnMpLCB7fSwge1xuICAgICAgZml4ZWREZWNpbWFsUGxhY2VEaWdpdHM6IHByZWNpc2lvblxuICAgIH0pXG4gIH07XG4gIHJldHVybiByc3ZnLmRyYXcocHNoYXBlKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW5kZXJFbGVtZW50VG9TdmcgPSBmdW5jdGlvbiAoZWxlbWVudCwgcnN2Zywgc3ZnUm9vdCwgZmlsZXMsIG9mZnNldFgsIG9mZnNldFksIGV4cG9ydFdpdGhEYXJrTW9kZSkge1xuICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICBjb25zdCBjeCA9ICh4MiAtIHgxKSAvIDIgLSAoZWxlbWVudC54IC0geDEpO1xuICBjb25zdCBjeSA9ICh5MiAtIHkxKSAvIDIgLSAoZWxlbWVudC55IC0geTEpO1xuICBjb25zdCBkZWdyZWUgPSAxODAgKiBlbGVtZW50LmFuZ2xlIC8gTWF0aC5QSTtcbiAgY29uc3QgZ2VuZXJhdG9yID0gcnN2Zy5nZW5lcmF0b3I7XG5cbiAgc3dpdGNoIChlbGVtZW50LnR5cGUpIHtcbiAgICBjYXNlIFwic2VsZWN0aW9uXCI6XG4gICAgICB7XG4gICAgICAgIC8vIFNpbmNlIHRoaXMgaXMgdXNlZCBvbmx5IGR1cmluZyBlZGl0aW5nIGV4cGVyaWVuY2UsIHdoaWNoIGlzIGNhbnZhcyBiYXNlZCxcbiAgICAgICAgLy8gdGhpcyBzaG91bGQgbm90IGhhcHBlblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTZWxlY3Rpb24gcmVuZGVyaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFNWR1wiKTtcbiAgICAgIH1cblxuICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICBjYXNlIFwiZGlhbW9uZFwiOlxuICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgICB7XG4gICAgICAgIGdlbmVyYXRlRWxlbWVudFNoYXBlKGVsZW1lbnQsIGdlbmVyYXRvcik7XG4gICAgICAgIGNvbnN0IG5vZGUgPSByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uKHJzdmcsIGdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSwgTUFYX0RFQ0lNQUxTX0ZPUl9TVkdfRVhQT1JUKTtcbiAgICAgICAgY29uc3Qgb3BhY2l0eSA9IGVsZW1lbnQub3BhY2l0eSAvIDEwMDtcblxuICAgICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZpbGwtb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtbGluZWNhcFwiLCBcInJvdW5kXCIpO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLCBgdHJhbnNsYXRlKCR7b2Zmc2V0WCB8fCAwfSAke29mZnNldFkgfHwgMH0pIHJvdGF0ZSgke2RlZ3JlZX0gJHtjeH0gJHtjeX0pYCk7XG4gICAgICAgIHN2Z1Jvb3QuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgY2FzZSBcImxpbmVcIjpcbiAgICBjYXNlIFwiYXJyb3dcIjpcbiAgICAgIHtcbiAgICAgICAgZ2VuZXJhdGVFbGVtZW50U2hhcGUoZWxlbWVudCwgZ2VuZXJhdG9yKTtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJnXCIpO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuICAgICAgICBncm91cC5zZXRBdHRyaWJ1dGUoXCJzdHJva2UtbGluZWNhcFwiLCBcInJvdW5kXCIpO1xuICAgICAgICBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCkuZm9yRWFjaChmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gcm91Z2hTVkdEcmF3V2l0aFByZWNpc2lvbihyc3ZnLCBzaGFwZSwgTUFYX0RFQ0lNQUxTX0ZPUl9TVkdfRVhQT1JUKTtcblxuICAgICAgICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZpbGwtb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsIGB0cmFuc2xhdGUoJHtvZmZzZXRYIHx8IDB9ICR7b2Zmc2V0WSB8fCAwfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgKTtcblxuICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwibGluZVwiICYmIGlzUGF0aEFMb29wKGVsZW1lbnQucG9pbnRzKSAmJiBlbGVtZW50LmJhY2tncm91bmRDb2xvciAhPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZpbGwtcnVsZVwiLCBcImV2ZW5vZGRcIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZ3JvdXAuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzdmdSb290LmFwcGVuZENoaWxkKGdyb3VwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIFwiZnJlZWRyYXdcIjpcbiAgICAgIHtcbiAgICAgICAgZ2VuZXJhdGVGcmVlRHJhd1NoYXBlKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuICAgICAgICBjb25zdCBub2RlID0gc3ZnUm9vdC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwiZ1wiKTtcblxuICAgICAgICBpZiAob3BhY2l0eSAhPT0gMSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZpbGwtb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgke29mZnNldFggfHwgMH0gJHtvZmZzZXRZIHx8IDB9KSByb3RhdGUoJHtkZWdyZWV9ICR7Y3h9ICR7Y3l9KWApO1xuICAgICAgICBjb25zdCBwYXRoID0gc3ZnUm9vdC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwicGF0aFwiKTtcbiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2VcIiwgXCJub25lXCIpO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZpbGxcIiwgZWxlbWVudC5zdHJva2VDb2xvcik7XG4gICAgICAgIHBhdGguc2V0QXR0cmlidXRlKFwiZFwiLCBnZXRGcmVlRHJhd1N2Z1BhdGgoZWxlbWVudCkpO1xuICAgICAgICBub2RlLmFwcGVuZENoaWxkKHBhdGgpO1xuICAgICAgICBzdmdSb290LmFwcGVuZENoaWxkKG5vZGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAge1xuICAgICAgICBjb25zdCBmaWxlRGF0YSA9IGlzSW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnQoZWxlbWVudCkgJiYgZmlsZXNbZWxlbWVudC5maWxlSWRdO1xuXG4gICAgICAgIGlmIChmaWxlRGF0YSkge1xuICAgICAgICAgIGNvbnN0IHN5bWJvbElkID0gYGltYWdlLSR7ZmlsZURhdGEuaWR9YDtcbiAgICAgICAgICBsZXQgc3ltYm9sID0gc3ZnUm9vdC5xdWVyeVNlbGVjdG9yKGAjJHtzeW1ib2xJZH1gKTtcblxuICAgICAgICAgIGlmICghc3ltYm9sKSB7XG4gICAgICAgICAgICBzeW1ib2wgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJzeW1ib2xcIik7XG4gICAgICAgICAgICBzeW1ib2wuaWQgPSBzeW1ib2xJZDtcbiAgICAgICAgICAgIGNvbnN0IGltYWdlID0gc3ZnUm9vdC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwiaW1hZ2VcIik7XG4gICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBcIjEwMCVcIik7XG4gICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgXCIxMDAlXCIpO1xuICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBmaWxlRGF0YS5kYXRhVVJMKTtcbiAgICAgICAgICAgIHN5bWJvbC5hcHBlbmRDaGlsZChpbWFnZSk7XG4gICAgICAgICAgICBzdmdSb290LnByZXBlbmQoc3ltYm9sKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB1c2UgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJ1c2VcIik7XG4gICAgICAgICAgdXNlLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgYCMke3N5bWJvbElkfWApOyAvLyBpbiBkYXJrIHRoZW1lLCByZXZlcnQgdGhlIGltYWdlIGNvbG9yIGZpbHRlclxuXG4gICAgICAgICAgaWYgKGV4cG9ydFdpdGhEYXJrTW9kZSAmJiBmaWxlRGF0YS5taW1lVHlwZSAhPT0gTUlNRV9UWVBFUy5zdmcpIHtcbiAgICAgICAgICAgIHVzZS5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJcIiwgSU1BR0VfSU5WRVJUX0ZJTFRFUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdXNlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke01hdGgucm91bmQoZWxlbWVudC53aWR0aCl9YCk7XG4gICAgICAgICAgdXNlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBgJHtNYXRoLnJvdW5kKGVsZW1lbnQuaGVpZ2h0KX1gKTtcbiAgICAgICAgICB1c2Uuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsIGB0cmFuc2xhdGUoJHtvZmZzZXRYIHx8IDB9ICR7b2Zmc2V0WSB8fCAwfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgKTtcbiAgICAgICAgICBzdmdSb290LmFwcGVuZENoaWxkKHVzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB7XG4gICAgICAgIGlmIChpc1RleHRFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgY29uc3Qgb3BhY2l0eSA9IGVsZW1lbnQub3BhY2l0eSAvIDEwMDtcbiAgICAgICAgICBjb25zdCBub2RlID0gc3ZnUm9vdC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwiZ1wiKTtcblxuICAgICAgICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcImZpbGwtb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsIGB0cmFuc2xhdGUoJHtvZmZzZXRYIHx8IDB9ICR7b2Zmc2V0WSB8fCAwfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgKTtcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGVsZW1lbnQudGV4dC5yZXBsYWNlKC9cXHJcXG4/L2csIFwiXFxuXCIpLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBlbGVtZW50LmhlaWdodCAvIGxpbmVzLmxlbmd0aDtcbiAgICAgICAgICBjb25zdCB2ZXJ0aWNhbE9mZnNldCA9IGVsZW1lbnQuaGVpZ2h0IC0gZWxlbWVudC5iYXNlbGluZTtcbiAgICAgICAgICBjb25zdCBob3Jpem9udGFsT2Zmc2V0ID0gZWxlbWVudC50ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgPyBlbGVtZW50LndpZHRoIC8gMiA6IGVsZW1lbnQudGV4dEFsaWduID09PSBcInJpZ2h0XCIgPyBlbGVtZW50LndpZHRoIDogMDtcbiAgICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBpc1JUTChlbGVtZW50LnRleHQpID8gXCJydGxcIiA6IFwibHRyXCI7XG4gICAgICAgICAgY29uc3QgdGV4dEFuY2hvciA9IGVsZW1lbnQudGV4dEFsaWduID09PSBcImNlbnRlclwiID8gXCJtaWRkbGVcIiA6IGVsZW1lbnQudGV4dEFsaWduID09PSBcInJpZ2h0XCIgfHwgZGlyZWN0aW9uID09PSBcInJ0bFwiID8gXCJlbmRcIiA6IFwic3RhcnRcIjtcblxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJ0ZXh0XCIpO1xuICAgICAgICAgICAgdGV4dC50ZXh0Q29udGVudCA9IGxpbmVzW2ldO1xuICAgICAgICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoXCJ4XCIsIGAke2hvcml6b250YWxPZmZzZXR9YCk7XG4gICAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInlcIiwgYCR7KGkgKyAxKSAqIGxpbmVIZWlnaHQgLSB2ZXJ0aWNhbE9mZnNldH1gKTtcbiAgICAgICAgICAgIHRleHQuc2V0QXR0cmlidXRlKFwiZm9udC1mYW1pbHlcIiwgZ2V0Rm9udEZhbWlseVN0cmluZyhlbGVtZW50KSk7XG4gICAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcImZvbnQtc2l6ZVwiLCBgJHtlbGVtZW50LmZvbnRTaXplfXB4YCk7XG4gICAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgZWxlbWVudC5zdHJva2VDb2xvcik7XG4gICAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInRleHQtYW5jaG9yXCIsIHRleHRBbmNob3IpO1xuICAgICAgICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoXCJzdHlsZVwiLCBcIndoaXRlLXNwYWNlOiBwcmU7XCIpO1xuICAgICAgICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uKTtcbiAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGV4dCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3ZnUm9vdC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkIHR5cGUgJHtlbGVtZW50LnR5cGV9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxufTtcbmV4cG9ydCBjb25zdCBwYXRoc0NhY2hlID0gbmV3IFdlYWtNYXAoW10pO1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlRnJlZURyYXdTaGFwZShlbGVtZW50KSB7XG4gIGNvbnN0IHN2Z1BhdGhEYXRhID0gZ2V0RnJlZURyYXdTdmdQYXRoKGVsZW1lbnQpO1xuICBjb25zdCBwYXRoID0gbmV3IFBhdGgyRChzdmdQYXRoRGF0YSk7XG4gIHBhdGhzQ2FjaGUuc2V0KGVsZW1lbnQsIHBhdGgpO1xuICByZXR1cm4gcGF0aDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRGcmVlRHJhd1BhdGgyRChlbGVtZW50KSB7XG4gIHJldHVybiBwYXRoc0NhY2hlLmdldChlbGVtZW50KTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRGcmVlRHJhd1N2Z1BhdGgoZWxlbWVudCkge1xuICAvLyBJZiBpbnB1dCBwb2ludHMgYXJlIGVtcHR5IChzaG91bGQgdGhleSBldmVyIGJlPykgcmV0dXJuIGEgZG90XG4gIGNvbnN0IGlucHV0UG9pbnRzID0gZWxlbWVudC5zaW11bGF0ZVByZXNzdXJlID8gZWxlbWVudC5wb2ludHMgOiBlbGVtZW50LnBvaW50cy5sZW5ndGggPyBlbGVtZW50LnBvaW50cy5tYXAoZnVuY3Rpb24gKF9yZWYsIGkpIHtcbiAgICBsZXQgW3gsIHldID0gX3JlZjtcbiAgICByZXR1cm4gW3gsIHksIGVsZW1lbnQucHJlc3N1cmVzW2ldXTtcbiAgfSkgOiBbWzAsIDAsIDAuNV1dOyAvLyBDb25zaWRlciBjaGFuZ2luZyB0aGUgb3B0aW9ucyBmb3Igc2ltdWxhdGVkIHByZXNzdXJlIHZzIHJlYWwgcHJlc3N1cmVcblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHNpbXVsYXRlUHJlc3N1cmU6IGVsZW1lbnQuc2ltdWxhdGVQcmVzc3VyZSxcbiAgICBzaXplOiBlbGVtZW50LnN0cm9rZVdpZHRoICogNC4yNSxcbiAgICB0aGlubmluZzogMC42LFxuICAgIHNtb290aGluZzogMC41LFxuICAgIHN0cmVhbWxpbmU6IDAuNSxcbiAgICBlYXNpbmc6IGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gTWF0aC5zaW4odCAqIE1hdGguUEkgLyAyKTtcbiAgICB9LFxuICAgIC8vIGh0dHBzOi8vZWFzaW5ncy5uZXQvI2Vhc2VPdXRTaW5lXG4gICAgbGFzdDogISFlbGVtZW50Lmxhc3RDb21taXR0ZWRQb2ludCAvLyBMYXN0Q29tbWl0dGVkUG9pbnQgaXMgYWRkZWQgb24gcG9pbnRlcnVwXG5cbiAgfTtcbiAgcmV0dXJuIGdldFN2Z1BhdGhGcm9tU3Ryb2tlKGdldFN0cm9rZShpbnB1dFBvaW50cywgb3B0aW9ucykpO1xufVxuXG5mdW5jdGlvbiBtZWQoQSwgQikge1xuICByZXR1cm4gWyhBWzBdICsgQlswXSkgLyAyLCAoQVsxXSArIEJbMV0pIC8gMl07XG59IC8vIFRyaW0gU1ZHIHBhdGggZGF0YSBzbyBudW1iZXIgYXJlIGVhY2ggdHdvIGRlY2ltYWwgcG9pbnRzLiBUaGlzXG4vLyBpbXByb3ZlcyBTVkcgZXhwb3J0cywgYW5kIHByZXZlbnRzIHJlbmRlcmluZyBlcnJvcnMgb24gcG9pbnRzXG4vLyB3aXRoIGxvbmcgZGVjaW1hbHMuXG5cblxuY29uc3QgVE9fRklYRURfUFJFQ0lTSU9OID0gLyhcXHM/W0EtWl0/LD8tP1swLTldKlxcLlswLTldezAsMn0pKChbMC05XXxlfC0pKikvZztcblxuZnVuY3Rpb24gZ2V0U3ZnUGF0aEZyb21TdHJva2UocG9pbnRzKSB7XG4gIGlmICghcG9pbnRzLmxlbmd0aCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgY29uc3QgbWF4ID0gcG9pbnRzLmxlbmd0aCAtIDE7XG4gIHJldHVybiBwb2ludHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBvaW50LCBpLCBhcnIpIHtcbiAgICBpZiAoaSA9PT0gbWF4KSB7XG4gICAgICBhY2MucHVzaChwb2ludCwgbWVkKHBvaW50LCBhcnJbMF0pLCBcIkxcIiwgYXJyWzBdLCBcIlpcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjYy5wdXNoKHBvaW50LCBtZWQocG9pbnQsIGFycltpICsgMV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9LCBbXCJNXCIsIHBvaW50c1swXSwgXCJRXCJdKS5qb2luKFwiIFwiKS5yZXBsYWNlKFRPX0ZJWEVEX1BSRUNJU0lPTiwgXCIkMVwiKTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\\n//# sourceURL=webpack-internal:///../../renderer/renderElement.ts\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../renderer/renderElement.ts?");
2912
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"getShapeForElement\\\": () => (/* binding */ getShapeForElement),\\n/* harmony export */ \\\"invalidateShapeForElement\\\": () => (/* binding */ invalidateShapeForElement),\\n/* harmony export */ \\\"generateRoughOptions\\\": () => (/* binding */ generateRoughOptions),\\n/* harmony export */ \\\"renderElement\\\": () => (/* binding */ renderElement),\\n/* harmony export */ \\\"renderElementToSvg\\\": () => (/* binding */ renderElementToSvg),\\n/* harmony export */ \\\"pathsCache\\\": () => (/* binding */ pathsCache),\\n/* harmony export */ \\\"generateFreeDrawShape\\\": () => (/* binding */ generateFreeDrawShape),\\n/* harmony export */ \\\"getFreeDrawPath2D\\\": () => (/* binding */ getFreeDrawPath2D),\\n/* harmony export */ \\\"getFreeDrawSvgPath\\\": () => (/* binding */ getFreeDrawSvgPath)\\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 _element_typeChecks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/typeChecks */ \\\"../../element/typeChecks.ts\\\");\\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../element/bounds */ \\\"../../element/bounds.ts\\\");\\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \\\"../../utils.ts\\\");\\n/* harmony import */ var _math__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../math */ \\\"../../math.ts\\\");\\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! roughjs/bin/rough */ \\\"../../../node_modules/roughjs/bin/rough.js\\\");\\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../appState */ \\\"../../appState.ts\\\");\\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants */ \\\"../../constants.ts\\\");\\n/* harmony import */ var perfect_freehand__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! perfect-freehand */ \\\"../../../node_modules/perfect-freehand/dist/esm/index.js\\\");\\n\\r\\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) {\\r\\n var symbols = Object.getOwnPropertySymbols(object);\\r\\n if (enumerableOnly) {\\r\\n symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; });\\r\\n }\\r\\n 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 = arguments[i] != null ? arguments[i] : {};\\r\\n if (i % 2) {\\r\\n ownKeys(Object(source), true).forEach(function (key) { (0,_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"])(target, key, source[key]); });\\r\\n }\\r\\n else if (Object.getOwnPropertyDescriptors) {\\r\\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\\r\\n }\\r\\n else {\\r\\n ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); });\\r\\n }\\r\\n} return target; }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n // using a stronger invert (100% vs our regular 93%) and saturate\\r\\n// as a temp hack to make images in dark theme look closer to original\\r\\n// color scheme (it's still not quite there and the colors look slightly\\r\\n// desatured, alas...)\\r\\nconst IMAGE_INVERT_FILTER = \\\"invert(100%) hue-rotate(180deg) saturate(1.25)\\\";\\r\\nconst defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_6__.getDefaultAppState)();\\r\\nconst isPendingImageElement = function (element, renderConfig) {\\r\\n return (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isInitializedImageElement)(element) && !renderConfig.imageCache.has(element.fileId);\\r\\n};\\r\\nconst shouldResetImageFilter = function (element, renderConfig) {\\r\\n var _a;\\r\\n return renderConfig.theme === \\\"dark\\\" && (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isInitializedImageElement)(element) && !isPendingImageElement(element, renderConfig) && ((_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.mimeType) !== _constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.svg;\\r\\n};\\r\\nconst getDashArrayDashed = function (strokeWidth) {\\r\\n return [8, 8 + strokeWidth];\\r\\n};\\r\\nconst getDashArrayDotted = function (strokeWidth) {\\r\\n return [1.5, 6 + strokeWidth];\\r\\n};\\r\\nconst getCanvasPadding = function (element) {\\r\\n return element.type === \\\"freedraw\\\" ? element.strokeWidth * 12 : 20;\\r\\n};\\r\\nconst generateElementCanvas = function (element, zoom, renderConfig) {\\r\\n const canvas = document.createElement(\\\"canvas\\\");\\r\\n const context = canvas.getContext(\\\"2d\\\");\\r\\n const padding = getCanvasPadding(element);\\r\\n let canvasOffsetX = 0;\\r\\n let canvasOffsetY = 0;\\r\\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isLinearElement)(element) || (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFreeDrawElement)(element)) {\\r\\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element);\\r\\n canvas.width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(x1, x2) * window.devicePixelRatio * zoom.value + padding * zoom.value * 2;\\r\\n canvas.height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(y1, y2) * window.devicePixelRatio * zoom.value + padding * zoom.value * 2;\\r\\n canvasOffsetX = element.x > x1 ? (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(element.x, x1) * window.devicePixelRatio * zoom.value : 0;\\r\\n canvasOffsetY = element.y > y1 ? (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(element.y, y1) * window.devicePixelRatio * zoom.value : 0;\\r\\n context.translate(canvasOffsetX, canvasOffsetY);\\r\\n }\\r\\n else {\\r\\n canvas.width = element.width * window.devicePixelRatio * zoom.value + padding * zoom.value * 2;\\r\\n canvas.height = element.height * window.devicePixelRatio * zoom.value + padding * zoom.value * 2;\\r\\n }\\r\\n context.save();\\r\\n context.translate(padding * zoom.value, padding * zoom.value);\\r\\n context.scale(window.devicePixelRatio * zoom.value, window.devicePixelRatio * zoom.value);\\r\\n const rc = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].canvas(canvas); // in dark theme, revert the image color filter\\r\\n if (shouldResetImageFilter(element, renderConfig)) {\\r\\n context.filter = IMAGE_INVERT_FILTER;\\r\\n }\\r\\n drawElementOnCanvas(element, rc, context, renderConfig);\\r\\n context.restore();\\r\\n return {\\r\\n element,\\r\\n canvas,\\r\\n theme: renderConfig.theme,\\r\\n canvasZoom: zoom.value,\\r\\n canvasOffsetX,\\r\\n canvasOffsetY\\r\\n };\\r\\n};\\r\\nconst IMAGE_PLACEHOLDER_IMG = document.createElement(\\\"img\\\");\\r\\nIMAGE_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.svg},${encodeURIComponent(`<svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"image\\\" class=\\\"svg-inline--fa fa-image fa-w-16\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 512 512\\\"><path fill=\\\"#888\\\" d=\\\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\\\"></path></svg>`)}`;\\r\\nconst IMAGE_ERROR_PLACEHOLDER_IMG = document.createElement(\\\"img\\\");\\r\\nIMAGE_ERROR_PLACEHOLDER_IMG.src = `data:${_constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.svg},${encodeURIComponent(`<svg viewBox=\\\"0 0 668 668\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xml:space=\\\"preserve\\\" style=\\\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2\\\"><path d=\\\"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48ZM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56ZM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48Z\\\" style=\\\"fill:#888;fill-rule:nonzero\\\" transform=\\\"matrix(.81709 0 0 .81709 124.825 145.825)\\\"/><path d=\\\"M256 8C119.034 8 8 119.033 8 256c0 136.967 111.034 248 248 248s248-111.034 248-248S392.967 8 256 8Zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676ZM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676Z\\\" style=\\\"fill:#888;fill-rule:nonzero\\\" transform=\\\"matrix(.30366 0 0 .30366 506.822 60.065)\\\"/></svg>`)}`;\\r\\nconst drawImagePlaceholder = function (element, context, zoomValue) {\\r\\n context.fillStyle = \\\"#E7E7E7\\\";\\r\\n context.fillRect(0, 0, element.width, element.height);\\r\\n const imageMinWidthOrHeight = Math.min(element.width, element.height);\\r\\n const size = Math.min(imageMinWidthOrHeight, Math.min(imageMinWidthOrHeight * 0.4, 100));\\r\\n context.drawImage(element.status === \\\"error\\\" ? IMAGE_ERROR_PLACEHOLDER_IMG : IMAGE_PLACEHOLDER_IMG, element.width / 2 - size / 2, element.height / 2 - size / 2, size, size);\\r\\n};\\r\\nconst drawElementOnCanvas = function (element, rc, context, renderConfig) {\\r\\n var _a;\\r\\n context.globalAlpha = element.opacity / 100;\\r\\n switch (element.type) {\\r\\n case \\\"rectangle\\\":\\r\\n case \\\"diamond\\\":\\r\\n case \\\"ellipse\\\":\\r\\n {\\r\\n context.lineJoin = \\\"round\\\";\\r\\n context.lineCap = \\\"round\\\";\\r\\n rc.draw(getShapeForElement(element));\\r\\n break;\\r\\n }\\r\\n case \\\"arrow\\\":\\r\\n case \\\"line\\\":\\r\\n {\\r\\n context.lineJoin = \\\"round\\\";\\r\\n context.lineCap = \\\"round\\\";\\r\\n getShapeForElement(element).forEach(function (shape) {\\r\\n rc.draw(shape);\\r\\n });\\r\\n break;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n {\\r\\n // Draw directly to canvas\\r\\n context.save();\\r\\n context.fillStyle = element.strokeColor;\\r\\n const path = getFreeDrawPath2D(element);\\r\\n context.fillStyle = element.strokeColor;\\r\\n context.fill(path);\\r\\n context.restore();\\r\\n break;\\r\\n }\\r\\n case \\\"image\\\":\\r\\n {\\r\\n const img = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isInitializedImageElement)(element) ? (_a = renderConfig.imageCache.get(element.fileId)) === null || _a === void 0 ? void 0 : _a.image : undefined;\\r\\n if (img != null && !(img instanceof Promise)) {\\r\\n context.drawImage(img, 0\\r\\n /* hardcoded for the selection box*/\\r\\n , 0, element.width, element.height);\\r\\n }\\r\\n else {\\r\\n drawImagePlaceholder(element, context, renderConfig.zoom.value);\\r\\n }\\r\\n break;\\r\\n }\\r\\n default:\\r\\n {\\r\\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(element)) {\\r\\n const rtl = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isRTL)(element.text);\\r\\n const shouldTemporarilyAttach = rtl && !context.canvas.isConnected;\\r\\n if (shouldTemporarilyAttach) {\\r\\n // to correctly render RTL text mixed with LTR, we have to append it\\r\\n // to the DOM\\r\\n document.body.appendChild(context.canvas);\\r\\n }\\r\\n context.canvas.setAttribute(\\\"dir\\\", rtl ? \\\"rtl\\\" : \\\"ltr\\\");\\r\\n context.save();\\r\\n context.font = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)(element);\\r\\n context.fillStyle = element.strokeColor;\\r\\n context.textAlign = element.textAlign; // Canvas does not support multiline text by default\\r\\n const lines = element.text.replace(/\\\\r\\\\n?/g, \\\"\\\\n\\\").split(\\\"\\\\n\\\");\\r\\n const lineHeight = element.height / lines.length;\\r\\n const verticalOffset = element.height - element.baseline;\\r\\n const horizontalOffset = element.textAlign === \\\"center\\\" ? element.width / 2 : element.textAlign === \\\"right\\\" ? element.width : 0;\\r\\n for (let index = 0; index < lines.length; index++) {\\r\\n context.fillText(lines[index], horizontalOffset, (index + 1) * lineHeight - verticalOffset);\\r\\n }\\r\\n context.restore();\\r\\n if (shouldTemporarilyAttach) {\\r\\n context.canvas.remove();\\r\\n }\\r\\n }\\r\\n else {\\r\\n throw new Error(`Unimplemented type ${element.type}`);\\r\\n }\\r\\n }\\r\\n }\\r\\n context.globalAlpha = 1;\\r\\n};\\r\\nconst elementWithCanvasCache = new WeakMap();\\r\\nconst shapeCache = new WeakMap();\\r\\nconst getShapeForElement = function (element) {\\r\\n return shapeCache.get(element);\\r\\n};\\r\\nconst invalidateShapeForElement = function (element) {\\r\\n return shapeCache.delete(element);\\r\\n};\\r\\nconst generateRoughOptions = function (element) {\\r\\n let continuousPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\\r\\n const options = {\\r\\n seed: element.seed,\\r\\n strokeLineDash: element.strokeStyle === \\\"dashed\\\" ? getDashArrayDashed(element.strokeWidth) : element.strokeStyle === \\\"dotted\\\" ? getDashArrayDotted(element.strokeWidth) : undefined,\\r\\n // for non-solid strokes, disable multiStroke because it tends to make\\r\\n // dashes/dots overlay each other\\r\\n disableMultiStroke: element.strokeStyle !== \\\"solid\\\",\\r\\n // for non-solid strokes, increase the width a bit to make it visually\\r\\n // similar to solid strokes, because we're also disabling multiStroke\\r\\n strokeWidth: element.strokeStyle !== \\\"solid\\\" ? element.strokeWidth + 0.5 : element.strokeWidth,\\r\\n // when increasing strokeWidth, we must explicitly set fillWeight and\\r\\n // hachureGap because if not specified, roughjs uses strokeWidth to\\r\\n // calculate them (and we don't want the fills to be modified)\\r\\n fillWeight: element.strokeWidth / 2,\\r\\n hachureGap: element.strokeWidth * 4,\\r\\n roughness: element.roughness,\\r\\n stroke: element.strokeColor,\\r\\n preserveVertices: continuousPath\\r\\n };\\r\\n switch (element.type) {\\r\\n case \\\"rectangle\\\":\\r\\n case \\\"diamond\\\":\\r\\n case \\\"ellipse\\\":\\r\\n {\\r\\n options.fillStyle = element.fillStyle;\\r\\n options.fill = element.backgroundColor === \\\"transparent\\\" ? undefined : element.backgroundColor;\\r\\n if (element.type === \\\"ellipse\\\") {\\r\\n options.curveFitting = 1;\\r\\n }\\r\\n return options;\\r\\n }\\r\\n case \\\"line\\\":\\r\\n {\\r\\n if ((0,_math__WEBPACK_IMPORTED_MODULE_4__.isPathALoop)(element.points)) {\\r\\n options.fillStyle = element.fillStyle;\\r\\n options.fill = element.backgroundColor === \\\"transparent\\\" ? undefined : element.backgroundColor;\\r\\n }\\r\\n return options;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n case \\\"arrow\\\":\\r\\n return options;\\r\\n default:\\r\\n {\\r\\n throw new Error(`Unimplemented type ${element.type}`);\\r\\n }\\r\\n }\\r\\n};\\r\\n/**\\r\\n * Generates the element's shape and puts it into the cache.\\r\\n * @param element\\r\\n * @param generator\\r\\n */\\r\\nconst generateElementShape = function (element, generator) {\\r\\n let shape = shapeCache.get(element) || null;\\r\\n if (!shape) {\\r\\n elementWithCanvasCache.delete(element);\\r\\n switch (element.type) {\\r\\n case \\\"rectangle\\\":\\r\\n if (element.strokeSharpness === \\\"round\\\") {\\r\\n const w = element.width;\\r\\n const h = element.height;\\r\\n const r = Math.min(w, h) * 0.25;\\r\\n shape = generator.path(`M ${r} 0 L ${w - r} 0 Q ${w} 0, ${w} ${r} L ${w} ${h - r} Q ${w} ${h}, ${w - r} ${h} L ${r} ${h} Q 0 ${h}, 0 ${h - r} L 0 ${r} Q 0 0, ${r} 0`, generateRoughOptions(element, true));\\r\\n }\\r\\n else {\\r\\n shape = generator.rectangle(0, 0, element.width, element.height, generateRoughOptions(element));\\r\\n }\\r\\n break;\\r\\n case \\\"diamond\\\":\\r\\n {\\r\\n const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getDiamondPoints)(element);\\r\\n if (element.strokeSharpness === \\\"round\\\") {\\r\\n shape = generator.path(`M ${topX + (rightX - topX) * 0.25} ${topY + (rightY - topY) * 0.25} L ${rightX - (rightX - topX) * 0.25} ${rightY - (rightY - topY) * 0.25} \\n C ${rightX} ${rightY}, ${rightX} ${rightY}, ${rightX - (rightX - bottomX) * 0.25} ${rightY + (bottomY - rightY) * 0.25} \\n L ${bottomX + (rightX - bottomX) * 0.25} ${bottomY - (bottomY - rightY) * 0.25} \\n C ${bottomX} ${bottomY}, ${bottomX} ${bottomY}, ${bottomX - (bottomX - leftX) * 0.25} ${bottomY - (bottomY - leftY) * 0.25} \\n L ${leftX + (bottomX - leftX) * 0.25} ${leftY + (bottomY - leftY) * 0.25} \\n C ${leftX} ${leftY}, ${leftX} ${leftY}, ${leftX + (topX - leftX) * 0.25} ${leftY - (leftY - topY) * 0.25} \\n L ${topX - (topX - leftX) * 0.25} ${topY + (leftY - topY) * 0.25} \\n C ${topX} ${topY}, ${topX} ${topY}, ${topX + (rightX - topX) * 0.25} ${topY + (rightY - topY) * 0.25}`, generateRoughOptions(element, true));\\r\\n }\\r\\n else {\\r\\n shape = generator.polygon([[topX, topY], [rightX, rightY], [bottomX, bottomY], [leftX, leftY]], generateRoughOptions(element));\\r\\n }\\r\\n break;\\r\\n }\\r\\n case \\\"ellipse\\\":\\r\\n shape = generator.ellipse(element.width / 2, element.height / 2, element.width, element.height, generateRoughOptions(element));\\r\\n break;\\r\\n case \\\"line\\\":\\r\\n case \\\"arrow\\\":\\r\\n {\\r\\n const options = generateRoughOptions(element); // points array can be empty in the beginning, so it is important to add\\r\\n // initial position to it\\r\\n const points = element.points.length ? element.points : [[0, 0]]; // curve is always the first element\\r\\n // this simplifies finding the curve for an element\\r\\n if (element.strokeSharpness === \\\"sharp\\\") {\\r\\n if (options.fill) {\\r\\n shape = [generator.polygon(points, options)];\\r\\n }\\r\\n else {\\r\\n shape = [generator.linearPath(points, options)];\\r\\n }\\r\\n }\\r\\n else {\\r\\n shape = [generator.curve(points, options)];\\r\\n } // add lines only in arrow\\r\\n if (element.type === \\\"arrow\\\") {\\r\\n const { startArrowhead = null, endArrowhead = \\\"arrow\\\" } = element;\\r\\n const getArrowheadShapes = function (element, shape, position, arrowhead) {\\r\\n const arrowheadPoints = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getArrowheadPoints)(element, shape, position, arrowhead);\\r\\n if (arrowheadPoints === null) {\\r\\n return [];\\r\\n } // Other arrowheads here...\\r\\n if (arrowhead === \\\"dot\\\") {\\r\\n const [x, y, r] = arrowheadPoints;\\r\\n return [generator.circle(x, y, r, _objectSpread(_objectSpread({}, options), {}, {\\r\\n fill: element.strokeColor,\\r\\n fillStyle: \\\"solid\\\",\\r\\n stroke: \\\"none\\\"\\r\\n }))];\\r\\n }\\r\\n if (arrowhead === \\\"triangle\\\") {\\r\\n const [x, y, x2, y2, x3, y3] = arrowheadPoints; // always use solid stroke for triangle arrowhead\\r\\n delete options.strokeLineDash;\\r\\n return [generator.polygon([[x, y], [x2, y2], [x3, y3], [x, y]], _objectSpread(_objectSpread({}, options), {}, {\\r\\n fill: element.strokeColor,\\r\\n fillStyle: \\\"solid\\\"\\r\\n }))];\\r\\n } // Arrow arrowheads\\r\\n const [x2, y2, x3, y3, x4, y4] = arrowheadPoints;\\r\\n if (element.strokeStyle === \\\"dotted\\\") {\\r\\n // for dotted arrows caps, reduce gap to make it more legible\\r\\n const dash = getDashArrayDotted(element.strokeWidth - 1);\\r\\n options.strokeLineDash = [dash[0], dash[1] - 1];\\r\\n }\\r\\n else {\\r\\n // for solid/dashed, keep solid arrow cap\\r\\n delete options.strokeLineDash;\\r\\n }\\r\\n return [generator.line(x3, y3, x2, y2, options), generator.line(x4, y4, x2, y2, options)];\\r\\n };\\r\\n if (startArrowhead !== null) {\\r\\n const shapes = getArrowheadShapes(element, shape, \\\"start\\\", startArrowhead);\\r\\n shape.push(...shapes);\\r\\n }\\r\\n if (endArrowhead !== null) {\\r\\n if (endArrowhead === undefined) { // Hey, we have an old arrow here!\\r\\n }\\r\\n const shapes = getArrowheadShapes(element, shape, \\\"end\\\", endArrowhead);\\r\\n shape.push(...shapes);\\r\\n }\\r\\n }\\r\\n break;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n {\\r\\n generateFreeDrawShape(element);\\r\\n shape = [];\\r\\n break;\\r\\n }\\r\\n case \\\"text\\\":\\r\\n case \\\"image\\\":\\r\\n {\\r\\n // just to ensure we don't regenerate element.canvas on rerenders\\r\\n shape = [];\\r\\n break;\\r\\n }\\r\\n }\\r\\n shapeCache.set(element, shape);\\r\\n }\\r\\n};\\r\\nconst generateElementWithCanvas = function (element, renderConfig) {\\r\\n const zoom = renderConfig ? renderConfig.zoom : defaultAppState.zoom;\\r\\n const prevElementWithCanvas = elementWithCanvasCache.get(element);\\r\\n const shouldRegenerateBecauseZoom = prevElementWithCanvas && prevElementWithCanvas.canvasZoom !== zoom.value && !(renderConfig === null || renderConfig === void 0 ? void 0 : renderConfig.shouldCacheIgnoreZoom);\\r\\n if (!prevElementWithCanvas || shouldRegenerateBecauseZoom || prevElementWithCanvas.theme !== renderConfig.theme) {\\r\\n const elementWithCanvas = generateElementCanvas(element, zoom, renderConfig);\\r\\n elementWithCanvasCache.set(element, elementWithCanvas);\\r\\n return elementWithCanvas;\\r\\n }\\r\\n return prevElementWithCanvas;\\r\\n};\\r\\nconst drawElementFromCanvas = function (elementWithCanvas, rc, context, renderConfig) {\\r\\n const element = elementWithCanvas.element;\\r\\n const padding = getCanvasPadding(element);\\r\\n let [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element); // Free draw elements will otherwise \\\"shuffle\\\" as the min x and y change\\r\\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isFreeDrawElement)(element)) {\\r\\n x1 = Math.floor(x1);\\r\\n x2 = Math.ceil(x2);\\r\\n y1 = Math.floor(y1);\\r\\n y2 = Math.ceil(y2);\\r\\n }\\r\\n const cx = ((x1 + x2) / 2 + renderConfig.scrollX) * window.devicePixelRatio;\\r\\n const cy = ((y1 + y2) / 2 + renderConfig.scrollY) * window.devicePixelRatio;\\r\\n const _isPendingImageElement = isPendingImageElement(element, renderConfig);\\r\\n const scaleXFactor = \\\"scale\\\" in elementWithCanvas.element && !_isPendingImageElement ? elementWithCanvas.element.scale[0] : 1;\\r\\n const scaleYFactor = \\\"scale\\\" in elementWithCanvas.element && !_isPendingImageElement ? elementWithCanvas.element.scale[1] : 1;\\r\\n context.save();\\r\\n context.scale(1 / window.devicePixelRatio * scaleXFactor, 1 / window.devicePixelRatio * scaleYFactor);\\r\\n context.translate(cx * scaleXFactor, cy * scaleYFactor);\\r\\n context.rotate(element.angle * scaleXFactor * scaleYFactor);\\r\\n context.drawImage(elementWithCanvas.canvas, -(x2 - x1) / 2 * window.devicePixelRatio - padding * elementWithCanvas.canvasZoom / elementWithCanvas.canvasZoom, -(y2 - y1) / 2 * window.devicePixelRatio - padding * elementWithCanvas.canvasZoom / elementWithCanvas.canvasZoom, elementWithCanvas.canvas.width / elementWithCanvas.canvasZoom, elementWithCanvas.canvas.height / elementWithCanvas.canvasZoom);\\r\\n context.restore(); // Clear the nested element we appended to the DOM\\r\\n};\\r\\nconst renderElement = function (element, rc, context, renderConfig) {\\r\\n const generator = rc.generator;\\r\\n switch (element.type) {\\r\\n case \\\"selection\\\":\\r\\n {\\r\\n context.save();\\r\\n context.translate(element.x + renderConfig.scrollX, element.y + renderConfig.scrollY);\\r\\n context.fillStyle = \\\"rgba(0, 0, 255, 0.10)\\\";\\r\\n context.fillRect(0, 0, element.width, element.height);\\r\\n context.restore();\\r\\n break;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n {\\r\\n generateElementShape(element, generator);\\r\\n if (renderConfig.isExporting) {\\r\\n const elementWithCanvas = generateElementWithCanvas(element, renderConfig);\\r\\n drawElementFromCanvas(elementWithCanvas, rc, context, renderConfig);\\r\\n }\\r\\n else {\\r\\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element);\\r\\n const cx = (x1 + x2) / 2 + renderConfig.scrollX;\\r\\n const cy = (y1 + y2) / 2 + renderConfig.scrollY;\\r\\n const shiftX = (x2 - x1) / 2 - (element.x - x1);\\r\\n const shiftY = (y2 - y1) / 2 - (element.y - y1);\\r\\n context.save();\\r\\n context.translate(cx, cy);\\r\\n context.rotate(element.angle);\\r\\n context.translate(-shiftX, -shiftY);\\r\\n drawElementOnCanvas(element, rc, context, renderConfig);\\r\\n context.restore();\\r\\n }\\r\\n break;\\r\\n }\\r\\n case \\\"rectangle\\\":\\r\\n case \\\"diamond\\\":\\r\\n case \\\"ellipse\\\":\\r\\n case \\\"line\\\":\\r\\n case \\\"arrow\\\":\\r\\n case \\\"image\\\":\\r\\n case \\\"text\\\":\\r\\n {\\r\\n generateElementShape(element, generator);\\r\\n if (renderConfig.isExporting) {\\r\\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element);\\r\\n const cx = (x1 + x2) / 2 + renderConfig.scrollX;\\r\\n const cy = (y1 + y2) / 2 + renderConfig.scrollY;\\r\\n const shiftX = (x2 - x1) / 2 - (element.x - x1);\\r\\n const shiftY = (y2 - y1) / 2 - (element.y - y1);\\r\\n context.save();\\r\\n context.translate(cx, cy);\\r\\n context.rotate(element.angle);\\r\\n context.translate(-shiftX, -shiftY);\\r\\n if (shouldResetImageFilter(element, renderConfig)) {\\r\\n context.filter = \\\"none\\\";\\r\\n }\\r\\n drawElementOnCanvas(element, rc, context, renderConfig);\\r\\n context.restore(); // not exporting → optimized rendering (cache & render from element\\r\\n // canvases)\\r\\n }\\r\\n else {\\r\\n const elementWithCanvas = generateElementWithCanvas(element, renderConfig);\\r\\n drawElementFromCanvas(elementWithCanvas, rc, context, renderConfig);\\r\\n }\\r\\n break;\\r\\n }\\r\\n default:\\r\\n {\\r\\n // @ts-ignore\\r\\n throw new Error(`Unimplemented type ${element.type}`);\\r\\n }\\r\\n }\\r\\n};\\r\\nconst roughSVGDrawWithPrecision = function (rsvg, drawable, precision) {\\r\\n if (typeof precision === \\\"undefined\\\") {\\r\\n return rsvg.draw(drawable);\\r\\n }\\r\\n const pshape = {\\r\\n sets: drawable.sets,\\r\\n shape: drawable.shape,\\r\\n options: _objectSpread(_objectSpread({}, drawable.options), {}, {\\r\\n fixedDecimalPlaceDigits: precision\\r\\n })\\r\\n };\\r\\n return rsvg.draw(pshape);\\r\\n};\\r\\nconst renderElementToSvg = function (element, rsvg, svgRoot, files, offsetX, offsetY, exportWithDarkMode) {\\r\\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_2__.getElementAbsoluteCoords)(element);\\r\\n const cx = (x2 - x1) / 2 - (element.x - x1);\\r\\n const cy = (y2 - y1) / 2 - (element.y - y1);\\r\\n const degree = 180 * element.angle / Math.PI;\\r\\n const generator = rsvg.generator;\\r\\n switch (element.type) {\\r\\n case \\\"selection\\\":\\r\\n {\\r\\n // Since this is used only during editing experience, which is canvas based,\\r\\n // this should not happen\\r\\n throw new Error(\\\"Selection rendering is not supported for SVG\\\");\\r\\n }\\r\\n case \\\"rectangle\\\":\\r\\n case \\\"diamond\\\":\\r\\n case \\\"ellipse\\\":\\r\\n {\\r\\n generateElementShape(element, generator);\\r\\n const node = roughSVGDrawWithPrecision(rsvg, getShapeForElement(element), _constants__WEBPACK_IMPORTED_MODULE_7__.MAX_DECIMALS_FOR_SVG_EXPORT);\\r\\n const opacity = element.opacity / 100;\\r\\n if (opacity !== 1) {\\r\\n node.setAttribute(\\\"stroke-opacity\\\", `${opacity}`);\\r\\n node.setAttribute(\\\"fill-opacity\\\", `${opacity}`);\\r\\n }\\r\\n node.setAttribute(\\\"stroke-linecap\\\", \\\"round\\\");\\r\\n node.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n svgRoot.appendChild(node);\\r\\n break;\\r\\n }\\r\\n case \\\"line\\\":\\r\\n case \\\"arrow\\\":\\r\\n {\\r\\n generateElementShape(element, generator);\\r\\n const group = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"g\\\");\\r\\n const opacity = element.opacity / 100;\\r\\n group.setAttribute(\\\"stroke-linecap\\\", \\\"round\\\");\\r\\n getShapeForElement(element).forEach(function (shape) {\\r\\n const node = roughSVGDrawWithPrecision(rsvg, shape, _constants__WEBPACK_IMPORTED_MODULE_7__.MAX_DECIMALS_FOR_SVG_EXPORT);\\r\\n if (opacity !== 1) {\\r\\n node.setAttribute(\\\"stroke-opacity\\\", `${opacity}`);\\r\\n node.setAttribute(\\\"fill-opacity\\\", `${opacity}`);\\r\\n }\\r\\n node.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n if (element.type === \\\"line\\\" && (0,_math__WEBPACK_IMPORTED_MODULE_4__.isPathALoop)(element.points) && element.backgroundColor !== \\\"transparent\\\") {\\r\\n node.setAttribute(\\\"fill-rule\\\", \\\"evenodd\\\");\\r\\n }\\r\\n group.appendChild(node);\\r\\n });\\r\\n svgRoot.appendChild(group);\\r\\n break;\\r\\n }\\r\\n case \\\"freedraw\\\":\\r\\n {\\r\\n generateFreeDrawShape(element);\\r\\n const opacity = element.opacity / 100;\\r\\n const node = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"g\\\");\\r\\n if (opacity !== 1) {\\r\\n node.setAttribute(\\\"stroke-opacity\\\", `${opacity}`);\\r\\n node.setAttribute(\\\"fill-opacity\\\", `${opacity}`);\\r\\n }\\r\\n node.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n const path = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"path\\\");\\r\\n node.setAttribute(\\\"stroke\\\", \\\"none\\\");\\r\\n node.setAttribute(\\\"fill\\\", element.strokeColor);\\r\\n path.setAttribute(\\\"d\\\", getFreeDrawSvgPath(element));\\r\\n node.appendChild(path);\\r\\n svgRoot.appendChild(node);\\r\\n break;\\r\\n }\\r\\n case \\\"image\\\":\\r\\n {\\r\\n const fileData = (0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isInitializedImageElement)(element) && files[element.fileId];\\r\\n if (fileData) {\\r\\n const symbolId = `image-${fileData.id}`;\\r\\n let symbol = svgRoot.querySelector(`#${symbolId}`);\\r\\n if (!symbol) {\\r\\n symbol = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"symbol\\\");\\r\\n symbol.id = symbolId;\\r\\n const image = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"image\\\");\\r\\n image.setAttribute(\\\"width\\\", \\\"100%\\\");\\r\\n image.setAttribute(\\\"height\\\", \\\"100%\\\");\\r\\n image.setAttribute(\\\"href\\\", fileData.dataURL);\\r\\n symbol.appendChild(image);\\r\\n svgRoot.prepend(symbol);\\r\\n }\\r\\n const use = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"use\\\");\\r\\n use.setAttribute(\\\"href\\\", `#${symbolId}`); // in dark theme, revert the image color filter\\r\\n if (exportWithDarkMode && fileData.mimeType !== _constants__WEBPACK_IMPORTED_MODULE_7__.MIME_TYPES.svg) {\\r\\n use.setAttribute(\\\"filter\\\", IMAGE_INVERT_FILTER);\\r\\n }\\r\\n use.setAttribute(\\\"width\\\", `${Math.round(element.width)}`);\\r\\n use.setAttribute(\\\"height\\\", `${Math.round(element.height)}`);\\r\\n use.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n svgRoot.appendChild(use);\\r\\n }\\r\\n break;\\r\\n }\\r\\n default:\\r\\n {\\r\\n if ((0,_element_typeChecks__WEBPACK_IMPORTED_MODULE_1__.isTextElement)(element)) {\\r\\n const opacity = element.opacity / 100;\\r\\n const node = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"g\\\");\\r\\n if (opacity !== 1) {\\r\\n node.setAttribute(\\\"stroke-opacity\\\", `${opacity}`);\\r\\n node.setAttribute(\\\"fill-opacity\\\", `${opacity}`);\\r\\n }\\r\\n node.setAttribute(\\\"transform\\\", `translate(${offsetX || 0} ${offsetY || 0}) rotate(${degree} ${cx} ${cy})`);\\r\\n const lines = element.text.replace(/\\\\r\\\\n?/g, \\\"\\\\n\\\").split(\\\"\\\\n\\\");\\r\\n const lineHeight = element.height / lines.length;\\r\\n const verticalOffset = element.height - element.baseline;\\r\\n const horizontalOffset = element.textAlign === \\\"center\\\" ? element.width / 2 : element.textAlign === \\\"right\\\" ? element.width : 0;\\r\\n const direction = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isRTL)(element.text) ? \\\"rtl\\\" : \\\"ltr\\\";\\r\\n const textAnchor = element.textAlign === \\\"center\\\" ? \\\"middle\\\" : element.textAlign === \\\"right\\\" || direction === \\\"rtl\\\" ? \\\"end\\\" : \\\"start\\\";\\r\\n for (let i = 0; i < lines.length; i++) {\\r\\n const text = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_7__.SVG_NS, \\\"text\\\");\\r\\n text.textContent = lines[i];\\r\\n text.setAttribute(\\\"x\\\", `${horizontalOffset}`);\\r\\n text.setAttribute(\\\"y\\\", `${(i + 1) * lineHeight - verticalOffset}`);\\r\\n text.setAttribute(\\\"font-family\\\", (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontFamilyString)(element));\\r\\n text.setAttribute(\\\"font-size\\\", `${element.fontSize}px`);\\r\\n text.setAttribute(\\\"fill\\\", element.strokeColor);\\r\\n text.setAttribute(\\\"text-anchor\\\", textAnchor);\\r\\n text.setAttribute(\\\"style\\\", \\\"white-space: pre;\\\");\\r\\n text.setAttribute(\\\"direction\\\", direction);\\r\\n node.appendChild(text);\\r\\n }\\r\\n svgRoot.appendChild(node);\\r\\n }\\r\\n else {\\r\\n // @ts-ignore\\r\\n throw new Error(`Unimplemented type ${element.type}`);\\r\\n }\\r\\n }\\r\\n }\\r\\n};\\r\\nconst pathsCache = new WeakMap([]);\\r\\nfunction generateFreeDrawShape(element) {\\r\\n const svgPathData = getFreeDrawSvgPath(element);\\r\\n const path = new Path2D(svgPathData);\\r\\n pathsCache.set(element, path);\\r\\n return path;\\r\\n}\\r\\nfunction getFreeDrawPath2D(element) {\\r\\n return pathsCache.get(element);\\r\\n}\\r\\nfunction getFreeDrawSvgPath(element) {\\r\\n // If input points are empty (should they ever be?) return a dot\\r\\n const inputPoints = element.simulatePressure ? element.points : element.points.length ? element.points.map(function (_ref, i) {\\r\\n let [x, y] = _ref;\\r\\n return [x, y, element.pressures[i]];\\r\\n }) : [[0, 0, 0.5]]; // Consider changing the options for simulated pressure vs real pressure\\r\\n const options = {\\r\\n simulatePressure: element.simulatePressure,\\r\\n size: element.strokeWidth * 4.25,\\r\\n thinning: 0.6,\\r\\n smoothing: 0.5,\\r\\n streamline: 0.5,\\r\\n easing: function (t) {\\r\\n return Math.sin(t * Math.PI / 2);\\r\\n },\\r\\n // https://easings.net/#easeOutSine\\r\\n last: !!element.lastCommittedPoint // LastCommittedPoint is added on pointerup\\r\\n };\\r\\n return getSvgPathFromStroke((0,perfect_freehand__WEBPACK_IMPORTED_MODULE_8__.getStroke)(inputPoints, options));\\r\\n}\\r\\nfunction med(A, B) {\\r\\n return [(A[0] + B[0]) / 2, (A[1] + B[1]) / 2];\\r\\n} // Trim SVG path data so number are each two decimal points. This\\r\\n// improves SVG exports, and prevents rendering errors on points\\r\\n// with long decimals.\\r\\nconst TO_FIXED_PRECISION = /(\\\\s?[A-Z]?,?-?[0-9]*\\\\.[0-9]{0,2})(([0-9]|e|-)*)/g;\\r\\nfunction getSvgPathFromStroke(points) {\\r\\n if (!points.length) {\\r\\n return \\\"\\\";\\r\\n }\\r\\n const max = points.length - 1;\\r\\n return points.reduce(function (acc, point, i, arr) {\\r\\n if (i === max) {\\r\\n acc.push(point, med(point, arr[0]), \\\"L\\\", arr[0], \\\"Z\\\");\\r\\n }\\r\\n else {\\r\\n acc.push(point, med(point, arr[i + 1]));\\r\\n }\\r\\n return acc;\\r\\n }, [\\\"M\\\", points[0], \\\"Q\\\"]).join(\\\" \\\").replace(TO_FIXED_PRECISION, \\\"$1\\\");\\r\\n}\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9yZW5kZXJlci9yZW5kZXJFbGVtZW50LnRzPzY2YzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSB7IHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsgfSBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGlzVGV4dEVsZW1lbnQsIGlzTGluZWFyRWxlbWVudCwgaXNGcmVlRHJhd0VsZW1lbnQsIGlzSW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlQ2hlY2tzXCI7XG5pbXBvcnQgeyBnZXREaWFtb25kUG9pbnRzLCBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMsIGdldEFycm93aGVhZFBvaW50cyB9IGZyb20gXCIuLi9lbGVtZW50L2JvdW5kc1wiO1xuaW1wb3J0IHsgZGlzdGFuY2UsIGdldEZvbnRTdHJpbmcsIGdldEZvbnRGYW1pbHlTdHJpbmcsIGlzUlRMIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBpc1BhdGhBTG9vcCB9IGZyb20gXCIuLi9tYXRoXCI7XG5pbXBvcnQgcm91Z2ggZnJvbSBcInJvdWdoanMvYmluL3JvdWdoXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0QXBwU3RhdGUgfSBmcm9tIFwiLi4vYXBwU3RhdGVcIjtcbmltcG9ydCB7IE1BWF9ERUNJTUFMU19GT1JfU1ZHX0VYUE9SVCwgTUlNRV9UWVBFUywgU1ZHX05TIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZ2V0U3Ryb2tlIH0gZnJvbSBcInBlcmZlY3QtZnJlZWhhbmRcIjsgLy8gdXNpbmcgYSBzdHJvbmdlciBpbnZlcnQgKDEwMCUgdnMgb3VyIHJlZ3VsYXIgOTMlKSBhbmQgc2F0dXJhdGVcbi8vIGFzIGEgdGVtcCBoYWNrIHRvIG1ha2UgaW1hZ2VzIGluIGRhcmsgdGhlbWUgbG9vayBjbG9zZXIgdG8gb3JpZ2luYWxcbi8vIGNvbG9yIHNjaGVtZSAoaXQncyBzdGlsbCBub3QgcXVpdGUgdGhlcmUgYW5kIHRoZSBjb2xvcnMgbG9vayBzbGlnaHRseVxuLy8gZGVzYXR1cmVkLCBhbGFzLi4uKVxuXG5jb25zdCBJTUFHRV9JTlZFUlRfRklMVEVSID0gXCJpbnZlcnQoMTAwJSkgaHVlLXJvdGF0ZSgxODBkZWcpIHNhdHVyYXRlKDEuMjUpXCI7XG5jb25zdCBkZWZhdWx0QXBwU3RhdGUgPSBnZXREZWZhdWx0QXBwU3RhdGUoKTtcblxuY29uc3QgaXNQZW5kaW5nSW1hZ2VFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIHJlbmRlckNvbmZpZykge1xuICByZXR1cm4gaXNJbml0aWFsaXplZEltYWdlRWxlbWVudChlbGVtZW50KSAmJiAhcmVuZGVyQ29uZmlnLmltYWdlQ2FjaGUuaGFzKGVsZW1lbnQuZmlsZUlkKTtcbn07XG5cbmNvbnN0IHNob3VsZFJlc2V0SW1hZ2VGaWx0ZXIgPSBmdW5jdGlvbiAoZWxlbWVudCwgcmVuZGVyQ29uZmlnKSB7XG4gIHJldHVybiByZW5kZXJDb25maWcudGhlbWUgPT09IFwiZGFya1wiICYmIGlzSW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnQoZWxlbWVudCkgJiYgIWlzUGVuZGluZ0ltYWdlRWxlbWVudChlbGVtZW50LCByZW5kZXJDb25maWcpICYmIHJlbmRlckNvbmZpZy5pbWFnZUNhY2hlLmdldChlbGVtZW50LmZpbGVJZCk/Lm1pbWVUeXBlICE9PSBNSU1FX1RZUEVTLnN2Zztcbn07XG5cbmNvbnN0IGdldERhc2hBcnJheURhc2hlZCA9IGZ1bmN0aW9uIChzdHJva2VXaWR0aCkge1xuICByZXR1cm4gWzgsIDggKyBzdHJva2VXaWR0aF07XG59O1xuXG5jb25zdCBnZXREYXNoQXJyYXlEb3R0ZWQgPSBmdW5jdGlvbiAoc3Ryb2tlV2lkdGgpIHtcbiAgcmV0dXJuIFsxLjUsIDYgKyBzdHJva2VXaWR0aF07XG59O1xuXG5jb25zdCBnZXRDYW52YXNQYWRkaW5nID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQudHlwZSA9PT0gXCJmcmVlZHJhd1wiID8gZWxlbWVudC5zdHJva2VXaWR0aCAqIDEyIDogMjA7XG59O1xuXG5jb25zdCBnZW5lcmF0ZUVsZW1lbnRDYW52YXMgPSBmdW5jdGlvbiAoZWxlbWVudCwgem9vbSwgcmVuZGVyQ29uZmlnKSB7XG4gIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICBjb25zdCBwYWRkaW5nID0gZ2V0Q2FudmFzUGFkZGluZyhlbGVtZW50KTtcbiAgbGV0IGNhbnZhc09mZnNldFggPSAwO1xuICBsZXQgY2FudmFzT2Zmc2V0WSA9IDA7XG5cbiAgaWYgKGlzTGluZWFyRWxlbWVudChlbGVtZW50KSB8fCBpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG4gICAgY2FudmFzLndpZHRoID0gZGlzdGFuY2UoeDEsIHgyKSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZSArIHBhZGRpbmcgKiB6b29tLnZhbHVlICogMjtcbiAgICBjYW52YXMuaGVpZ2h0ID0gZGlzdGFuY2UoeTEsIHkyKSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZSArIHBhZGRpbmcgKiB6b29tLnZhbHVlICogMjtcbiAgICBjYW52YXNPZmZzZXRYID0gZWxlbWVudC54ID4geDEgPyBkaXN0YW5jZShlbGVtZW50LngsIHgxKSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogem9vbS52YWx1ZSA6IDA7XG4gICAgY2FudmFzT2Zmc2V0WSA9IGVsZW1lbnQueSA+IHkxID8gZGlzdGFuY2UoZWxlbWVudC55LCB5MSkgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUgOiAwO1xuICAgIGNvbnRleHQudHJhbnNsYXRlKGNhbnZhc09mZnNldFgsIGNhbnZhc09mZnNldFkpO1xuICB9IGVsc2Uge1xuICAgIGNhbnZhcy53aWR0aCA9IGVsZW1lbnQud2lkdGggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUgKyBwYWRkaW5nICogem9vbS52YWx1ZSAqIDI7XG4gICAgY2FudmFzLmhlaWdodCA9IGVsZW1lbnQuaGVpZ2h0ICogd2luZG93LmRldmljZVBpeGVsUmF0aW8gKiB6b29tLnZhbHVlICsgcGFkZGluZyAqIHpvb20udmFsdWUgKiAyO1xuICB9XG5cbiAgY29udGV4dC5zYXZlKCk7XG4gIGNvbnRleHQudHJhbnNsYXRlKHBhZGRpbmcgKiB6b29tLnZhbHVlLCBwYWRkaW5nICogem9vbS52YWx1ZSk7XG4gIGNvbnRleHQuc2NhbGUod2luZG93LmRldmljZVBpeGVsUmF0aW8gKiB6b29tLnZhbHVlLCB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHpvb20udmFsdWUpO1xuICBjb25zdCByYyA9IHJvdWdoLmNhbnZhcyhjYW52YXMpOyAvLyBpbiBkYXJrIHRoZW1lLCByZXZlcnQgdGhlIGltYWdlIGNvbG9yIGZpbHRlclxuXG4gIGlmIChzaG91bGRSZXNldEltYWdlRmlsdGVyKGVsZW1lbnQsIHJlbmRlckNvbmZpZykpIHtcbiAgICBjb250ZXh0LmZpbHRlciA9IElNQUdFX0lOVkVSVF9GSUxURVI7XG4gIH1cblxuICBkcmF3RWxlbWVudE9uQ2FudmFzKGVsZW1lbnQsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpO1xuICBjb250ZXh0LnJlc3RvcmUoKTtcbiAgcmV0dXJuIHtcbiAgICBlbGVtZW50LFxuICAgIGNhbnZhcyxcbiAgICB0aGVtZTogcmVuZGVyQ29uZmlnLnRoZW1lLFxuICAgIGNhbnZhc1pvb206IHpvb20udmFsdWUsXG4gICAgY2FudmFzT2Zmc2V0WCxcbiAgICBjYW52YXNPZmZzZXRZXG4gIH07XG59O1xuXG5jb25zdCBJTUFHRV9QTEFDRUhPTERFUl9JTUcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpO1xuSU1BR0VfUExBQ0VIT0xERVJfSU1HLnNyYyA9IGBkYXRhOiR7TUlNRV9UWVBFUy5zdmd9LCR7ZW5jb2RlVVJJQ29tcG9uZW50KGA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCIgZGF0YS1wcmVmaXg9XCJmYXNcIiBkYXRhLWljb249XCJpbWFnZVwiIGNsYXNzPVwic3ZnLWlubGluZS0tZmEgZmEtaW1hZ2UgZmEtdy0xNlwiIHJvbGU9XCJpbWdcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCA1MTIgNTEyXCI+PHBhdGggZmlsbD1cIiM4ODhcIiBkPVwiTTQ2NCA0NDhINDhjLTI2LjUxIDAtNDgtMjEuNDktNDgtNDhWMTEyYzAtMjYuNTEgMjEuNDktNDggNDgtNDhoNDE2YzI2LjUxIDAgNDggMjEuNDkgNDggNDh2Mjg4YzAgMjYuNTEtMjEuNDkgNDgtNDggNDh6TTExMiAxMjBjLTMwLjkyOCAwLTU2IDI1LjA3Mi01NiA1NnMyNS4wNzIgNTYgNTYgNTYgNTYtMjUuMDcyIDU2LTU2LTI1LjA3Mi01Ni01Ni01NnpNNjQgMzg0aDM4NFYyNzJsLTg3LjUxNS04Ny41MTVjLTQuNjg2LTQuNjg2LTEyLjI4NC00LjY4Ni0xNi45NzEgMEwyMDggMzIwbC01NS41MTUtNTUuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMNjQgMzM2djQ4elwiPjwvcGF0aD48L3N2Zz5gKX1gO1xuY29uc3QgSU1BR0VfRVJST1JfUExBQ0VIT0xERVJfSU1HID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiKTtcbklNQUdFX0VSUk9SX1BMQUNFSE9MREVSX0lNRy5zcmMgPSBgZGF0YToke01JTUVfVFlQRVMuc3ZnfSwke2VuY29kZVVSSUNvbXBvbmVudChgPHN2ZyB2aWV3Qm94PVwiMCAwIDY2OCA2NjhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIiBzdHlsZT1cImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO3N0cm9rZS1saW5lam9pbjpyb3VuZDtzdHJva2UtbWl0ZXJsaW1pdDoyXCI+PHBhdGggZD1cIk00NjQgNDQ4SDQ4Yy0yNi41MSAwLTQ4LTIxLjQ5LTQ4LTQ4VjExMmMwLTI2LjUxIDIxLjQ5LTQ4IDQ4LTQ4aDQxNmMyNi41MSAwIDQ4IDIxLjQ5IDQ4IDQ4djI4OGMwIDI2LjUxLTIxLjQ5IDQ4LTQ4IDQ4Wk0xMTIgMTIwYy0zMC45MjggMC01NiAyNS4wNzItNTYgNTZzMjUuMDcyIDU2IDU2IDU2IDU2LTI1LjA3MiA1Ni01Ni0yNS4wNzItNTYtNTYtNTZaTTY0IDM4NGgzODRWMjcybC04Ny41MTUtODcuNTE1Yy00LjY4Ni00LjY4Ni0xMi4yODQtNC42ODYtMTYuOTcxIDBMMjA4IDMyMGwtNTUuNTE1LTU1LjUxNWMtNC42ODYtNC42ODYtMTIuMjg0LTQuNjg2LTE2Ljk3MSAwTDY0IDMzNnY0OFpcIiBzdHlsZT1cImZpbGw6Izg4ODtmaWxsLXJ1bGU6bm9uemVyb1wiIHRyYW5zZm9ybT1cIm1hdHJpeCguODE3MDkgMCAwIC44MTcwOSAxMjQuODI1IDE0NS44MjUpXCIvPjxwYXRoIGQ9XCJNMjU2IDhDMTE5LjAzNCA4IDggMTE5LjAzMyA4IDI1NmMwIDEzNi45NjcgMTExLjAzNCAyNDggMjQ4IDI0OHMyNDgtMTExLjAzNCAyNDgtMjQ4UzM5Mi45NjcgOCAyNTYgOFptMTMwLjEwOCAxMTcuODkyYzY1LjQ0OCA2NS40NDggNzAgMTY1LjQ4MSAyMC42NzcgMjM1LjYzN0wxNTAuNDcgMTA1LjIxNmM3MC4yMDQtNDkuMzU2IDE3MC4yMjYtNDQuNzM1IDIzNS42MzggMjAuNjc2Wk0xMjUuODkyIDM4Ni4xMDhjLTY1LjQ0OC02NS40NDgtNzAtMTY1LjQ4MS0yMC42NzctMjM1LjYzN0wzNjEuNTMgNDA2Ljc4NGMtNzAuMjAzIDQ5LjM1Ni0xNzAuMjI2IDQ0LjczNi0yMzUuNjM4LTIwLjY3NlpcIiBzdHlsZT1cImZpbGw6Izg4ODtmaWxsLXJ1bGU6bm9uemVyb1wiIHRyYW5zZm9ybT1cIm1hdHJpeCguMzAzNjYgMCAwIC4zMDM2NiA1MDYuODIyIDYwLjA2NSlcIi8+PC9zdmc+YCl9YDtcblxuY29uc3QgZHJhd0ltYWdlUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29udGV4dCwgem9vbVZhbHVlKSB7XG4gIGNvbnRleHQuZmlsbFN0eWxlID0gXCIjRTdFN0U3XCI7XG4gIGNvbnRleHQuZmlsbFJlY3QoMCwgMCwgZWxlbWVudC53aWR0aCwgZWxlbWVudC5oZWlnaHQpO1xuICBjb25zdCBpbWFnZU1pbldpZHRoT3JIZWlnaHQgPSBNYXRoLm1pbihlbGVtZW50LndpZHRoLCBlbGVtZW50LmhlaWdodCk7XG4gIGNvbnN0IHNpemUgPSBNYXRoLm1pbihpbWFnZU1pbldpZHRoT3JIZWlnaHQsIE1hdGgubWluKGltYWdlTWluV2lkdGhPckhlaWdodCAqIDAuNCwgMTAwKSk7XG4gIGNvbnRleHQuZHJhd0ltYWdlKGVsZW1lbnQuc3RhdHVzID09PSBcImVycm9yXCIgPyBJTUFHRV9FUlJPUl9QTEFDRUhPTERFUl9JTUcgOiBJTUFHRV9QTEFDRUhPTERFUl9JTUcsIGVsZW1lbnQud2lkdGggLyAyIC0gc2l6ZSAvIDIsIGVsZW1lbnQuaGVpZ2h0IC8gMiAtIHNpemUgLyAyLCBzaXplLCBzaXplKTtcbn07XG5cbmNvbnN0IGRyYXdFbGVtZW50T25DYW52YXMgPSBmdW5jdGlvbiAoZWxlbWVudCwgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZykge1xuICBjb250ZXh0Lmdsb2JhbEFscGhhID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuXG4gIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG4gICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgIGNhc2UgXCJkaWFtb25kXCI6XG4gICAgY2FzZSBcImVsbGlwc2VcIjpcbiAgICAgIHtcbiAgICAgICAgY29udGV4dC5saW5lSm9pbiA9IFwicm91bmRcIjtcbiAgICAgICAgY29udGV4dC5saW5lQ2FwID0gXCJyb3VuZFwiO1xuICAgICAgICByYy5kcmF3KGdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgY2FzZSBcImFycm93XCI6XG4gICAgY2FzZSBcImxpbmVcIjpcbiAgICAgIHtcbiAgICAgICAgY29udGV4dC5saW5lSm9pbiA9IFwicm91bmRcIjtcbiAgICAgICAgY29udGV4dC5saW5lQ2FwID0gXCJyb3VuZFwiO1xuICAgICAgICBnZXRTaGFwZUZvckVsZW1lbnQoZWxlbWVudCkuZm9yRWFjaChmdW5jdGlvbiAoc2hhcGUpIHtcbiAgICAgICAgICByYy5kcmF3KHNoYXBlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgY2FzZSBcImZyZWVkcmF3XCI6XG4gICAgICB7XG4gICAgICAgIC8vIERyYXcgZGlyZWN0bHkgdG8gY2FudmFzXG4gICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGVsZW1lbnQuc3Ryb2tlQ29sb3I7XG4gICAgICAgIGNvbnN0IHBhdGggPSBnZXRGcmVlRHJhd1BhdGgyRChlbGVtZW50KTtcbiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBlbGVtZW50LnN0cm9rZUNvbG9yO1xuICAgICAgICBjb250ZXh0LmZpbGwocGF0aCk7XG4gICAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAge1xuICAgICAgICBjb25zdCBpbWcgPSBpc0luaXRpYWxpemVkSW1hZ2VFbGVtZW50KGVsZW1lbnQpID8gcmVuZGVyQ29uZmlnLmltYWdlQ2FjaGUuZ2V0KGVsZW1lbnQuZmlsZUlkKT8uaW1hZ2UgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGltZyAhPSBudWxsICYmICEoaW1nIGluc3RhbmNlb2YgUHJvbWlzZSkpIHtcbiAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShpbWcsIDBcbiAgICAgICAgICAvKiBoYXJkY29kZWQgZm9yIHRoZSBzZWxlY3Rpb24gYm94Ki9cbiAgICAgICAgICAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkcmF3SW1hZ2VQbGFjZWhvbGRlcihlbGVtZW50LCBjb250ZXh0LCByZW5kZXJDb25maWcuem9vbS52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB7XG4gICAgICAgIGlmIChpc1RleHRFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgICAgICAgY29uc3QgcnRsID0gaXNSVEwoZWxlbWVudC50ZXh0KTtcbiAgICAgICAgICBjb25zdCBzaG91bGRUZW1wb3JhcmlseUF0dGFjaCA9IHJ0bCAmJiAhY29udGV4dC5jYW52YXMuaXNDb25uZWN0ZWQ7XG5cbiAgICAgICAgICBpZiAoc2hvdWxkVGVtcG9yYXJpbHlBdHRhY2gpIHtcbiAgICAgICAgICAgIC8vIHRvIGNvcnJlY3RseSByZW5kZXIgUlRMIHRleHQgbWl4ZWQgd2l0aCBMVFIsIHdlIGhhdmUgdG8gYXBwZW5kIGl0XG4gICAgICAgICAgICAvLyB0byB0aGUgRE9NXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRleHQuY2FudmFzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmNhbnZhcy5zZXRBdHRyaWJ1dGUoXCJkaXJcIiwgcnRsID8gXCJydGxcIiA6IFwibHRyXCIpO1xuICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgIGNvbnRleHQuZm9udCA9IGdldEZvbnRTdHJpbmcoZWxlbWVudCk7XG4gICAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBlbGVtZW50LnN0cm9rZUNvbG9yO1xuICAgICAgICAgIGNvbnRleHQudGV4dEFsaWduID0gZWxlbWVudC50ZXh0QWxpZ247IC8vIENhbnZhcyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpbGluZSB0ZXh0IGJ5IGRlZmF1bHRcblxuICAgICAgICAgIGNvbnN0IGxpbmVzID0gZWxlbWVudC50ZXh0LnJlcGxhY2UoL1xcclxcbj8vZywgXCJcXG5cIikuc3BsaXQoXCJcXG5cIik7XG4gICAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IGVsZW1lbnQuaGVpZ2h0IC8gbGluZXMubGVuZ3RoO1xuICAgICAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gZWxlbWVudC5oZWlnaHQgLSBlbGVtZW50LmJhc2VsaW5lO1xuICAgICAgICAgIGNvbnN0IGhvcml6b250YWxPZmZzZXQgPSBlbGVtZW50LnRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIiA/IGVsZW1lbnQud2lkdGggLyAyIDogZWxlbWVudC50ZXh0QWxpZ24gPT09IFwicmlnaHRcIiA/IGVsZW1lbnQud2lkdGggOiAwO1xuXG4gICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGxpbmVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChsaW5lc1tpbmRleF0sIGhvcml6b250YWxPZmZzZXQsIChpbmRleCArIDEpICogbGluZUhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcblxuICAgICAgICAgIGlmIChzaG91bGRUZW1wb3JhcmlseUF0dGFjaCkge1xuICAgICAgICAgICAgY29udGV4dC5jYW52YXMucmVtb3ZlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5pbXBsZW1lbnRlZCB0eXBlICR7ZWxlbWVudC50eXBlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gIH1cblxuICBjb250ZXh0Lmdsb2JhbEFscGhhID0gMTtcbn07XG5cbmNvbnN0IGVsZW1lbnRXaXRoQ2FudmFzQ2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuY29uc3Qgc2hhcGVDYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgY29uc3QgZ2V0U2hhcGVGb3JFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHNoYXBlQ2FjaGUuZ2V0KGVsZW1lbnQpO1xufTtcbmV4cG9ydCBjb25zdCBpbnZhbGlkYXRlU2hhcGVGb3JFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHNoYXBlQ2FjaGUuZGVsZXRlKGVsZW1lbnQpO1xufTtcbmV4cG9ydCBjb25zdCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIGxldCBjb250aW51b3VzUGF0aCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogZmFsc2U7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgc2VlZDogZWxlbWVudC5zZWVkLFxuICAgIHN0cm9rZUxpbmVEYXNoOiBlbGVtZW50LnN0cm9rZVN0eWxlID09PSBcImRhc2hlZFwiID8gZ2V0RGFzaEFycmF5RGFzaGVkKGVsZW1lbnQuc3Ryb2tlV2lkdGgpIDogZWxlbWVudC5zdHJva2VTdHlsZSA9PT0gXCJkb3R0ZWRcIiA/IGdldERhc2hBcnJheURvdHRlZChlbGVtZW50LnN0cm9rZVdpZHRoKSA6IHVuZGVmaW5lZCxcbiAgICAvLyBmb3Igbm9uLXNvbGlkIHN0cm9rZXMsIGRpc2FibGUgbXVsdGlTdHJva2UgYmVjYXVzZSBpdCB0ZW5kcyB0byBtYWtlXG4gICAgLy8gZGFzaGVzL2RvdHMgb3ZlcmxheSBlYWNoIG90aGVyXG4gICAgZGlzYWJsZU11bHRpU3Ryb2tlOiBlbGVtZW50LnN0cm9rZVN0eWxlICE9PSBcInNvbGlkXCIsXG4gICAgLy8gZm9yIG5vbi1zb2xpZCBzdHJva2VzLCBpbmNyZWFzZSB0aGUgd2lkdGggYSBiaXQgdG8gbWFrZSBpdCB2aXN1YWxseVxuICAgIC8vIHNpbWlsYXIgdG8gc29saWQgc3Ryb2tlcywgYmVjYXVzZSB3ZSdyZSBhbHNvIGRpc2FibGluZyBtdWx0aVN0cm9rZVxuICAgIHN0cm9rZVdpZHRoOiBlbGVtZW50LnN0cm9rZVN0eWxlICE9PSBcInNvbGlkXCIgPyBlbGVtZW50LnN0cm9rZVdpZHRoICsgMC41IDogZWxlbWVudC5zdHJva2VXaWR0aCxcbiAgICAvLyB3aGVuIGluY3JlYXNpbmcgc3Ryb2tlV2lkdGgsIHdlIG11c3QgZXhwbGljaXRseSBzZXQgZmlsbFdlaWdodCBhbmRcbiAgICAvLyBoYWNodXJlR2FwIGJlY2F1c2UgaWYgbm90IHNwZWNpZmllZCwgcm91Z2hqcyB1c2VzIHN0cm9rZVdpZHRoIHRvXG4gICAgLy8gY2FsY3VsYXRlIHRoZW0gKGFuZCB3ZSBkb24ndCB3YW50IHRoZSBmaWxscyB0byBiZSBtb2RpZmllZClcbiAgICBmaWxsV2VpZ2h0OiBlbGVtZW50LnN0cm9rZVdpZHRoIC8gMixcbiAgICBoYWNodXJlR2FwOiBlbGVtZW50LnN0cm9rZVdpZHRoICogNCxcbiAgICByb3VnaG5lc3M6IGVsZW1lbnQucm91Z2huZXNzLFxuICAgIHN0cm9rZTogZWxlbWVudC5zdHJva2VDb2xvcixcbiAgICBwcmVzZXJ2ZVZlcnRpY2VzOiBjb250aW51b3VzUGF0aFxuICB9O1xuXG4gIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG4gICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgIGNhc2UgXCJkaWFtb25kXCI6XG4gICAgY2FzZSBcImVsbGlwc2VcIjpcbiAgICAgIHtcbiAgICAgICAgb3B0aW9ucy5maWxsU3R5bGUgPSBlbGVtZW50LmZpbGxTdHlsZTtcbiAgICAgICAgb3B0aW9ucy5maWxsID0gZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3IgPT09IFwidHJhbnNwYXJlbnRcIiA/IHVuZGVmaW5lZCA6IGVsZW1lbnQuYmFja2dyb3VuZENvbG9yO1xuXG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwiZWxsaXBzZVwiKSB7XG4gICAgICAgICAgb3B0aW9ucy5jdXJ2ZUZpdHRpbmcgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgICB9XG5cbiAgICBjYXNlIFwibGluZVwiOlxuICAgICAge1xuICAgICAgICBpZiAoaXNQYXRoQUxvb3AoZWxlbWVudC5wb2ludHMpKSB7XG4gICAgICAgICAgb3B0aW9ucy5maWxsU3R5bGUgPSBlbGVtZW50LmZpbGxTdHlsZTtcbiAgICAgICAgICBvcHRpb25zLmZpbGwgPSBlbGVtZW50LmJhY2tncm91bmRDb2xvciA9PT0gXCJ0cmFuc3BhcmVudFwiID8gdW5kZWZpbmVkIDogZWxlbWVudC5iYWNrZ3JvdW5kQ29sb3I7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9ucztcbiAgICAgIH1cblxuICAgIGNhc2UgXCJmcmVlZHJhd1wiOlxuICAgIGNhc2UgXCJhcnJvd1wiOlxuICAgICAgcmV0dXJuIG9wdGlvbnM7XG5cbiAgICBkZWZhdWx0OlxuICAgICAge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgdHlwZSAke2VsZW1lbnQudHlwZX1gKTtcbiAgICAgIH1cbiAgfVxufTtcbi8qKlxuICogR2VuZXJhdGVzIHRoZSBlbGVtZW50J3Mgc2hhcGUgYW5kIHB1dHMgaXQgaW50byB0aGUgY2FjaGUuXG4gKiBAcGFyYW0gZWxlbWVudFxuICogQHBhcmFtIGdlbmVyYXRvclxuICovXG5cbmNvbnN0IGdlbmVyYXRlRWxlbWVudFNoYXBlID0gZnVuY3Rpb24gKGVsZW1lbnQsIGdlbmVyYXRvcikge1xuICBsZXQgc2hhcGUgPSBzaGFwZUNhY2hlLmdldChlbGVtZW50KSB8fCBudWxsO1xuXG4gIGlmICghc2hhcGUpIHtcbiAgICBlbGVtZW50V2l0aENhbnZhc0NhY2hlLmRlbGV0ZShlbGVtZW50KTtcblxuICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG4gICAgICBjYXNlIFwicmVjdGFuZ2xlXCI6XG4gICAgICAgIGlmIChlbGVtZW50LnN0cm9rZVNoYXJwbmVzcyA9PT0gXCJyb3VuZFwiKSB7XG4gICAgICAgICAgY29uc3QgdyA9IGVsZW1lbnQud2lkdGg7XG4gICAgICAgICAgY29uc3QgaCA9IGVsZW1lbnQuaGVpZ2h0O1xuICAgICAgICAgIGNvbnN0IHIgPSBNYXRoLm1pbih3LCBoKSAqIDAuMjU7XG4gICAgICAgICAgc2hhcGUgPSBnZW5lcmF0b3IucGF0aChgTSAke3J9IDAgTCAke3cgLSByfSAwIFEgJHt3fSAwLCAke3d9ICR7cn0gTCAke3d9ICR7aCAtIHJ9IFEgJHt3fSAke2h9LCAke3cgLSByfSAke2h9IEwgJHtyfSAke2h9IFEgMCAke2h9LCAwICR7aCAtIHJ9IEwgMCAke3J9IFEgMCAwLCAke3J9IDBgLCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50LCB0cnVlKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hhcGUgPSBnZW5lcmF0b3IucmVjdGFuZ2xlKDAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0LCBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KSk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImRpYW1vbmRcIjpcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IFt0b3BYLCB0b3BZLCByaWdodFgsIHJpZ2h0WSwgYm90dG9tWCwgYm90dG9tWSwgbGVmdFgsIGxlZnRZXSA9IGdldERpYW1vbmRQb2ludHMoZWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAoZWxlbWVudC5zdHJva2VTaGFycG5lc3MgPT09IFwicm91bmRcIikge1xuICAgICAgICAgICAgc2hhcGUgPSBnZW5lcmF0b3IucGF0aChgTSAke3RvcFggKyAocmlnaHRYIC0gdG9wWCkgKiAwLjI1fSAke3RvcFkgKyAocmlnaHRZIC0gdG9wWSkgKiAwLjI1fSBMICR7cmlnaHRYIC0gKHJpZ2h0WCAtIHRvcFgpICogMC4yNX0gJHtyaWdodFkgLSAocmlnaHRZIC0gdG9wWSkgKiAwLjI1fSBcbiAgICAgICAgICAgIEMgJHtyaWdodFh9ICR7cmlnaHRZfSwgJHtyaWdodFh9ICR7cmlnaHRZfSwgJHtyaWdodFggLSAocmlnaHRYIC0gYm90dG9tWCkgKiAwLjI1fSAke3JpZ2h0WSArIChib3R0b21ZIC0gcmlnaHRZKSAqIDAuMjV9IFxuICAgICAgICAgICAgTCAke2JvdHRvbVggKyAocmlnaHRYIC0gYm90dG9tWCkgKiAwLjI1fSAke2JvdHRvbVkgLSAoYm90dG9tWSAtIHJpZ2h0WSkgKiAwLjI1fSAgXG4gICAgICAgICAgICBDICR7Ym90dG9tWH0gJHtib3R0b21ZfSwgJHtib3R0b21YfSAke2JvdHRvbVl9LCAke2JvdHRvbVggLSAoYm90dG9tWCAtIGxlZnRYKSAqIDAuMjV9ICR7Ym90dG9tWSAtIChib3R0b21ZIC0gbGVmdFkpICogMC4yNX0gXG4gICAgICAgICAgICBMICR7bGVmdFggKyAoYm90dG9tWCAtIGxlZnRYKSAqIDAuMjV9ICR7bGVmdFkgKyAoYm90dG9tWSAtIGxlZnRZKSAqIDAuMjV9IFxuICAgICAgICAgICAgQyAke2xlZnRYfSAke2xlZnRZfSwgJHtsZWZ0WH0gJHtsZWZ0WX0sICR7bGVmdFggKyAodG9wWCAtIGxlZnRYKSAqIDAuMjV9ICR7bGVmdFkgLSAobGVmdFkgLSB0b3BZKSAqIDAuMjV9IFxuICAgICAgICAgICAgTCAke3RvcFggLSAodG9wWCAtIGxlZnRYKSAqIDAuMjV9ICR7dG9wWSArIChsZWZ0WSAtIHRvcFkpICogMC4yNX0gXG4gICAgICAgICAgICBDICR7dG9wWH0gJHt0b3BZfSwgJHt0b3BYfSAke3RvcFl9LCAke3RvcFggKyAocmlnaHRYIC0gdG9wWCkgKiAwLjI1fSAke3RvcFkgKyAocmlnaHRZIC0gdG9wWSkgKiAwLjI1fWAsIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQsIHRydWUpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2hhcGUgPSBnZW5lcmF0b3IucG9seWdvbihbW3RvcFgsIHRvcFldLCBbcmlnaHRYLCByaWdodFldLCBbYm90dG9tWCwgYm90dG9tWV0sIFtsZWZ0WCwgbGVmdFldXSwgZ2VuZXJhdGVSb3VnaE9wdGlvbnMoZWxlbWVudCkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgICAgIHNoYXBlID0gZ2VuZXJhdG9yLmVsbGlwc2UoZWxlbWVudC53aWR0aCAvIDIsIGVsZW1lbnQuaGVpZ2h0IC8gMiwgZWxlbWVudC53aWR0aCwgZWxlbWVudC5oZWlnaHQsIGdlbmVyYXRlUm91Z2hPcHRpb25zKGVsZW1lbnQpKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICBjYXNlIFwiYXJyb3dcIjpcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBnZW5lcmF0ZVJvdWdoT3B0aW9ucyhlbGVtZW50KTsgLy8gcG9pbnRzIGFycmF5IGNhbiBiZSBlbXB0eSBpbiB0aGUgYmVnaW5uaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8gYWRkXG4gICAgICAgICAgLy8gaW5pdGlhbCBwb3NpdGlvbiB0byBpdFxuXG4gICAgICAgICAgY29uc3QgcG9pbnRzID0gZWxlbWVudC5wb2ludHMubGVuZ3RoID8gZWxlbWVudC5wb2ludHMgOiBbWzAsIDBdXTsgLy8gY3VydmUgaXMgYWx3YXlzIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgICAgICAgLy8gdGhpcyBzaW1wbGlmaWVzIGZpbmRpbmcgdGhlIGN1cnZlIGZvciBhbiBlbGVtZW50XG5cbiAgICAgICAgICBpZiAoZWxlbWVudC5zdHJva2VTaGFycG5lc3MgPT09IFwic2hhcnBcIikge1xuICAgICAgICAgICAgaWYgKG9wdGlvbnMuZmlsbCkge1xuICAgICAgICAgICAgICBzaGFwZSA9IFtnZW5lcmF0b3IucG9seWdvbihwb2ludHMsIG9wdGlvbnMpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNoYXBlID0gW2dlbmVyYXRvci5saW5lYXJQYXRoKHBvaW50cywgb3B0aW9ucyldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaGFwZSA9IFtnZW5lcmF0b3IuY3VydmUocG9pbnRzLCBvcHRpb25zKV07XG4gICAgICAgICAgfSAvLyBhZGQgbGluZXMgb25seSBpbiBhcnJvd1xuXG5cbiAgICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcImFycm93XCIpIHtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgc3RhcnRBcnJvd2hlYWQgPSBudWxsLFxuICAgICAgICAgICAgICBlbmRBcnJvd2hlYWQgPSBcImFycm93XCJcbiAgICAgICAgICAgIH0gPSBlbGVtZW50O1xuXG4gICAgICAgICAgICBjb25zdCBnZXRBcnJvd2hlYWRTaGFwZXMgPSBmdW5jdGlvbiAoZWxlbWVudCwgc2hhcGUsIHBvc2l0aW9uLCBhcnJvd2hlYWQpIHtcbiAgICAgICAgICAgICAgY29uc3QgYXJyb3doZWFkUG9pbnRzID0gZ2V0QXJyb3doZWFkUG9pbnRzKGVsZW1lbnQsIHNoYXBlLCBwb3NpdGlvbiwgYXJyb3doZWFkKTtcblxuICAgICAgICAgICAgICBpZiAoYXJyb3doZWFkUG9pbnRzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgICB9IC8vIE90aGVyIGFycm93aGVhZHMgaGVyZS4uLlxuXG5cbiAgICAgICAgICAgICAgaWYgKGFycm93aGVhZCA9PT0gXCJkb3RcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IFt4LCB5LCByXSA9IGFycm93aGVhZFBvaW50cztcbiAgICAgICAgICAgICAgICByZXR1cm4gW2dlbmVyYXRvci5jaXJjbGUoeCwgeSwgciwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBvcHRpb25zKSwge30sIHtcbiAgICAgICAgICAgICAgICAgIGZpbGw6IGVsZW1lbnQuc3Ryb2tlQ29sb3IsXG4gICAgICAgICAgICAgICAgICBmaWxsU3R5bGU6IFwic29saWRcIixcbiAgICAgICAgICAgICAgICAgIHN0cm9rZTogXCJub25lXCJcbiAgICAgICAgICAgICAgICB9KSldO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGFycm93aGVhZCA9PT0gXCJ0cmlhbmdsZVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3gsIHksIHgyLCB5MiwgeDMsIHkzXSA9IGFycm93aGVhZFBvaW50czsgLy8gYWx3YXlzIHVzZSBzb2xpZCBzdHJva2UgZm9yIHRyaWFuZ2xlIGFycm93aGVhZFxuXG4gICAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnMuc3Ryb2tlTGluZURhc2g7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtnZW5lcmF0b3IucG9seWdvbihbW3gsIHldLCBbeDIsIHkyXSwgW3gzLCB5M10sIFt4LCB5XV0sIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgb3B0aW9ucyksIHt9LCB7XG4gICAgICAgICAgICAgICAgICBmaWxsOiBlbGVtZW50LnN0cm9rZUNvbG9yLFxuICAgICAgICAgICAgICAgICAgZmlsbFN0eWxlOiBcInNvbGlkXCJcbiAgICAgICAgICAgICAgICB9KSldO1xuICAgICAgICAgICAgICB9IC8vIEFycm93IGFycm93aGVhZHNcblxuXG4gICAgICAgICAgICAgIGNvbnN0IFt4MiwgeTIsIHgzLCB5MywgeDQsIHk0XSA9IGFycm93aGVhZFBvaW50cztcblxuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5zdHJva2VTdHlsZSA9PT0gXCJkb3R0ZWRcIikge1xuICAgICAgICAgICAgICAgIC8vIGZvciBkb3R0ZWQgYXJyb3dzIGNhcHMsIHJlZHVjZSBnYXAgdG8gbWFrZSBpdCBtb3JlIGxlZ2libGVcbiAgICAgICAgICAgICAgICBjb25zdCBkYXNoID0gZ2V0RGFzaEFycmF5RG90dGVkKGVsZW1lbnQuc3Ryb2tlV2lkdGggLSAxKTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnN0cm9rZUxpbmVEYXNoID0gW2Rhc2hbMF0sIGRhc2hbMV0gLSAxXTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBmb3Igc29saWQvZGFzaGVkLCBrZWVwIHNvbGlkIGFycm93IGNhcFxuICAgICAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zLnN0cm9rZUxpbmVEYXNoO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIFtnZW5lcmF0b3IubGluZSh4MywgeTMsIHgyLCB5Miwgb3B0aW9ucyksIGdlbmVyYXRvci5saW5lKHg0LCB5NCwgeDIsIHkyLCBvcHRpb25zKV07XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoc3RhcnRBcnJvd2hlYWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc2hhcGVzID0gZ2V0QXJyb3doZWFkU2hhcGVzKGVsZW1lbnQsIHNoYXBlLCBcInN0YXJ0XCIsIHN0YXJ0QXJyb3doZWFkKTtcbiAgICAgICAgICAgICAgc2hhcGUucHVzaCguLi5zaGFwZXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZW5kQXJyb3doZWFkICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGlmIChlbmRBcnJvd2hlYWQgPT09IHVuZGVmaW5lZCkgey8vIEhleSwgd2UgaGF2ZSBhbiBvbGQgYXJyb3cgaGVyZSFcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHNoYXBlcyA9IGdldEFycm93aGVhZFNoYXBlcyhlbGVtZW50LCBzaGFwZSwgXCJlbmRcIiwgZW5kQXJyb3doZWFkKTtcbiAgICAgICAgICAgICAgc2hhcGUucHVzaCguLi5zaGFwZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgXCJmcmVlZHJhd1wiOlxuICAgICAgICB7XG4gICAgICAgICAgZ2VuZXJhdGVGcmVlRHJhd1NoYXBlKGVsZW1lbnQpO1xuICAgICAgICAgIHNoYXBlID0gW107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAgICB7XG4gICAgICAgICAgLy8ganVzdCB0byBlbnN1cmUgd2UgZG9uJ3QgcmVnZW5lcmF0ZSBlbGVtZW50LmNhbnZhcyBvbiByZXJlbmRlcnNcbiAgICAgICAgICBzaGFwZSA9IFtdO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hhcGVDYWNoZS5zZXQoZWxlbWVudCwgc2hhcGUpO1xuICB9XG59O1xuXG5jb25zdCBnZW5lcmF0ZUVsZW1lbnRXaXRoQ2FudmFzID0gZnVuY3Rpb24gKGVsZW1lbnQsIHJlbmRlckNvbmZpZykge1xuICBjb25zdCB6b29tID0gcmVuZGVyQ29uZmlnID8gcmVuZGVyQ29uZmlnLnpvb20gOiBkZWZhdWx0QXBwU3RhdGUuem9vbTtcbiAgY29uc3QgcHJldkVsZW1lbnRXaXRoQ2FudmFzID0gZWxlbWVudFdpdGhDYW52YXNDYWNoZS5nZXQoZWxlbWVudCk7XG4gIGNvbnN0IHNob3VsZFJlZ2VuZXJhdGVCZWNhdXNlWm9vbSA9IHByZXZFbGVtZW50V2l0aENhbnZhcyAmJiBwcmV2RWxlbWVudFdpdGhDYW52YXMuY2FudmFzWm9vbSAhPT0gem9vbS52YWx1ZSAmJiAhcmVuZGVyQ29uZmlnPy5zaG91bGRDYWNoZUlnbm9yZVpvb207XG5cbiAgaWYgKCFwcmV2RWxlbWVudFdpdGhDYW52YXMgfHwgc2hvdWxkUmVnZW5lcmF0ZUJlY2F1c2Vab29tIHx8IHByZXZFbGVtZW50V2l0aENhbnZhcy50aGVtZSAhPT0gcmVuZGVyQ29uZmlnLnRoZW1lKSB7XG4gICAgY29uc3QgZWxlbWVudFdpdGhDYW52YXMgPSBnZW5lcmF0ZUVsZW1lbnRDYW52YXMoZWxlbWVudCwgem9vbSwgcmVuZGVyQ29uZmlnKTtcbiAgICBlbGVtZW50V2l0aENhbnZhc0NhY2hlLnNldChlbGVtZW50LCBlbGVtZW50V2l0aENhbnZhcyk7XG4gICAgcmV0dXJuIGVsZW1lbnRXaXRoQ2FudmFzO1xuICB9XG5cbiAgcmV0dXJuIHByZXZFbGVtZW50V2l0aENhbnZhcztcbn07XG5cbmNvbnN0IGRyYXdFbGVtZW50RnJvbUNhbnZhcyA9IGZ1bmN0aW9uIChlbGVtZW50V2l0aENhbnZhcywgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZykge1xuICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFdpdGhDYW52YXMuZWxlbWVudDtcbiAgY29uc3QgcGFkZGluZyA9IGdldENhbnZhc1BhZGRpbmcoZWxlbWVudCk7XG4gIGxldCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpOyAvLyBGcmVlIGRyYXcgZWxlbWVudHMgd2lsbCBvdGhlcndpc2UgXCJzaHVmZmxlXCIgYXMgdGhlIG1pbiB4IGFuZCB5IGNoYW5nZVxuXG4gIGlmIChpc0ZyZWVEcmF3RWxlbWVudChlbGVtZW50KSkge1xuICAgIHgxID0gTWF0aC5mbG9vcih4MSk7XG4gICAgeDIgPSBNYXRoLmNlaWwoeDIpO1xuICAgIHkxID0gTWF0aC5mbG9vcih5MSk7XG4gICAgeTIgPSBNYXRoLmNlaWwoeTIpO1xuICB9XG5cbiAgY29uc3QgY3ggPSAoKHgxICsgeDIpIC8gMiArIHJlbmRlckNvbmZpZy5zY3JvbGxYKSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO1xuICBjb25zdCBjeSA9ICgoeTEgKyB5MikgLyAyICsgcmVuZGVyQ29uZmlnLnNjcm9sbFkpICogd2luZG93LmRldmljZVBpeGVsUmF0aW87XG5cbiAgY29uc3QgX2lzUGVuZGluZ0ltYWdlRWxlbWVudCA9IGlzUGVuZGluZ0ltYWdlRWxlbWVudChlbGVtZW50LCByZW5kZXJDb25maWcpO1xuXG4gIGNvbnN0IHNjYWxlWEZhY3RvciA9IFwic2NhbGVcIiBpbiBlbGVtZW50V2l0aENhbnZhcy5lbGVtZW50ICYmICFfaXNQZW5kaW5nSW1hZ2VFbGVtZW50ID8gZWxlbWVudFdpdGhDYW52YXMuZWxlbWVudC5zY2FsZVswXSA6IDE7XG4gIGNvbnN0IHNjYWxlWUZhY3RvciA9IFwic2NhbGVcIiBpbiBlbGVtZW50V2l0aENhbnZhcy5lbGVtZW50ICYmICFfaXNQZW5kaW5nSW1hZ2VFbGVtZW50ID8gZWxlbWVudFdpdGhDYW52YXMuZWxlbWVudC5zY2FsZVsxXSA6IDE7XG4gIGNvbnRleHQuc2F2ZSgpO1xuICBjb250ZXh0LnNjYWxlKDEgLyB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAqIHNjYWxlWEZhY3RvciwgMSAvIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvICogc2NhbGVZRmFjdG9yKTtcbiAgY29udGV4dC50cmFuc2xhdGUoY3ggKiBzY2FsZVhGYWN0b3IsIGN5ICogc2NhbGVZRmFjdG9yKTtcbiAgY29udGV4dC5yb3RhdGUoZWxlbWVudC5hbmdsZSAqIHNjYWxlWEZhY3RvciAqIHNjYWxlWUZhY3Rvcik7XG4gIGNvbnRleHQuZHJhd0ltYWdlKGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhcywgLSh4MiAtIHgxKSAvIDIgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAtIHBhZGRpbmcgKiBlbGVtZW50V2l0aENhbnZhcy5jYW52YXNab29tIC8gZWxlbWVudFdpdGhDYW52YXMuY2FudmFzWm9vbSwgLSh5MiAtIHkxKSAvIDIgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyAtIHBhZGRpbmcgKiBlbGVtZW50V2l0aENhbnZhcy5jYW52YXNab29tIC8gZWxlbWVudFdpdGhDYW52YXMuY2FudmFzWm9vbSwgZWxlbWVudFdpdGhDYW52YXMuY2FudmFzLndpZHRoIC8gZWxlbWVudFdpdGhDYW52YXMuY2FudmFzWm9vbSwgZWxlbWVudFdpdGhDYW52YXMuY2FudmFzLmhlaWdodCAvIGVsZW1lbnRXaXRoQ2FudmFzLmNhbnZhc1pvb20pO1xuICBjb250ZXh0LnJlc3RvcmUoKTsgLy8gQ2xlYXIgdGhlIG5lc3RlZCBlbGVtZW50IHdlIGFwcGVuZGVkIHRvIHRoZSBET01cbn07XG5cbmV4cG9ydCBjb25zdCByZW5kZXJFbGVtZW50ID0gZnVuY3Rpb24gKGVsZW1lbnQsIHJjLCBjb250ZXh0LCByZW5kZXJDb25maWcpIHtcbiAgY29uc3QgZ2VuZXJhdG9yID0gcmMuZ2VuZXJhdG9yO1xuXG4gIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG4gICAgY2FzZSBcInNlbGVjdGlvblwiOlxuICAgICAge1xuICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgY29udGV4dC50cmFuc2xhdGUoZWxlbWVudC54ICsgcmVuZGVyQ29uZmlnLnNjcm9sbFgsIGVsZW1lbnQueSArIHJlbmRlckNvbmZpZy5zY3JvbGxZKTtcbiAgICAgICAgY29udGV4dC5maWxsU3R5bGUgPSBcInJnYmEoMCwgMCwgMjU1LCAwLjEwKVwiO1xuICAgICAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIGVsZW1lbnQud2lkdGgsIGVsZW1lbnQuaGVpZ2h0KTtcbiAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgY2FzZSBcImZyZWVkcmF3XCI6XG4gICAgICB7XG4gICAgICAgIGdlbmVyYXRlRWxlbWVudFNoYXBlKGVsZW1lbnQsIGdlbmVyYXRvcik7XG5cbiAgICAgICAgaWYgKHJlbmRlckNvbmZpZy5pc0V4cG9ydGluZykge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnRXaXRoQ2FudmFzID0gZ2VuZXJhdGVFbGVtZW50V2l0aENhbnZhcyhlbGVtZW50LCByZW5kZXJDb25maWcpO1xuICAgICAgICAgIGRyYXdFbGVtZW50RnJvbUNhbnZhcyhlbGVtZW50V2l0aENhbnZhcywgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyhlbGVtZW50KTtcbiAgICAgICAgICBjb25zdCBjeCA9ICh4MSArIHgyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWDtcbiAgICAgICAgICBjb25zdCBjeSA9ICh5MSArIHkyKSAvIDIgKyByZW5kZXJDb25maWcuc2Nyb2xsWTtcbiAgICAgICAgICBjb25zdCBzaGlmdFggPSAoeDIgLSB4MSkgLyAyIC0gKGVsZW1lbnQueCAtIHgxKTtcbiAgICAgICAgICBjb25zdCBzaGlmdFkgPSAoeTIgLSB5MSkgLyAyIC0gKGVsZW1lbnQueSAtIHkxKTtcbiAgICAgICAgICBjb250ZXh0LnNhdmUoKTtcbiAgICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShjeCwgY3kpO1xuICAgICAgICAgIGNvbnRleHQucm90YXRlKGVsZW1lbnQuYW5nbGUpO1xuICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1zaGlmdFgsIC1zaGlmdFkpO1xuICAgICAgICAgIGRyYXdFbGVtZW50T25DYW52YXMoZWxlbWVudCwgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZyk7XG4gICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGNhc2UgXCJyZWN0YW5nbGVcIjpcbiAgICBjYXNlIFwiZGlhbW9uZFwiOlxuICAgIGNhc2UgXCJlbGxpcHNlXCI6XG4gICAgY2FzZSBcImxpbmVcIjpcbiAgICBjYXNlIFwiYXJyb3dcIjpcbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICBjYXNlIFwidGV4dFwiOlxuICAgICAge1xuICAgICAgICBnZW5lcmF0ZUVsZW1lbnRTaGFwZShlbGVtZW50LCBnZW5lcmF0b3IpO1xuXG4gICAgICAgIGlmIChyZW5kZXJDb25maWcuaXNFeHBvcnRpbmcpIHtcbiAgICAgICAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnQpO1xuICAgICAgICAgIGNvbnN0IGN4ID0gKHgxICsgeDIpIC8gMiArIHJlbmRlckNvbmZpZy5zY3JvbGxYO1xuICAgICAgICAgIGNvbnN0IGN5ID0gKHkxICsgeTIpIC8gMiArIHJlbmRlckNvbmZpZy5zY3JvbGxZO1xuICAgICAgICAgIGNvbnN0IHNoaWZ0WCA9ICh4MiAtIHgxKSAvIDIgLSAoZWxlbWVudC54IC0geDEpO1xuICAgICAgICAgIGNvbnN0IHNoaWZ0WSA9ICh5MiAtIHkxKSAvIDIgLSAoZWxlbWVudC55IC0geTEpO1xuICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xuICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKGN4LCBjeSk7XG4gICAgICAgICAgY29udGV4dC5yb3RhdGUoZWxlbWVudC5hbmdsZSk7XG4gICAgICAgICAgY29udGV4dC50cmFuc2xhdGUoLXNoaWZ0WCwgLXNoaWZ0WSk7XG5cbiAgICAgICAgICBpZiAoc2hvdWxkUmVzZXRJbWFnZUZpbHRlcihlbGVtZW50LCByZW5kZXJDb25maWcpKSB7XG4gICAgICAgICAgICBjb250ZXh0LmZpbHRlciA9IFwibm9uZVwiO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRyYXdFbGVtZW50T25DYW52YXMoZWxlbWVudCwgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZyk7XG4gICAgICAgICAgY29udGV4dC5yZXN0b3JlKCk7IC8vIG5vdCBleHBvcnRpbmcg4oaSIG9wdGltaXplZCByZW5kZXJpbmcgKGNhY2hlICYgcmVuZGVyIGZyb20gZWxlbWVudFxuICAgICAgICAgIC8vIGNhbnZhc2VzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnRXaXRoQ2FudmFzID0gZ2VuZXJhdGVFbGVtZW50V2l0aENhbnZhcyhlbGVtZW50LCByZW5kZXJDb25maWcpO1xuICAgICAgICAgIGRyYXdFbGVtZW50RnJvbUNhbnZhcyhlbGVtZW50V2l0aENhbnZhcywgcmMsIGNvbnRleHQsIHJlbmRlckNvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkIHR5cGUgJHtlbGVtZW50LnR5cGV9YCk7XG4gICAgICB9XG4gIH1cbn07XG5cbmNvbnN0IHJvdWdoU1ZHRHJhd1dpdGhQcmVjaXNpb24gPSBmdW5jdGlvbiAocnN2ZywgZHJhd2FibGUsIHByZWNpc2lvbikge1xuICBpZiAodHlwZW9mIHByZWNpc2lvbiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiByc3ZnLmRyYXcoZHJhd2FibGUpO1xuICB9XG5cbiAgY29uc3QgcHNoYXBlID0ge1xuICAgIHNldHM6IGRyYXdhYmxlLnNldHMsXG4gICAgc2hhcGU6IGRyYXdhYmxlLnNoYXBlLFxuICAgIG9wdGlvbnM6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgZHJhd2FibGUub3B0aW9ucyksIHt9LCB7XG4gICAgICBmaXhlZERlY2ltYWxQbGFjZURpZ2l0czogcHJlY2lzaW9uXG4gICAgfSlcbiAgfTtcbiAgcmV0dXJuIHJzdmcuZHJhdyhwc2hhcGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbmRlckVsZW1lbnRUb1N2ZyA9IGZ1bmN0aW9uIChlbGVtZW50LCByc3ZnLCBzdmdSb290LCBmaWxlcywgb2Zmc2V0WCwgb2Zmc2V0WSwgZXhwb3J0V2l0aERhcmtNb2RlKSB7XG4gIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudCk7XG4gIGNvbnN0IGN4ID0gKHgyIC0geDEpIC8gMiAtIChlbGVtZW50LnggLSB4MSk7XG4gIGNvbnN0IGN5ID0gKHkyIC0geTEpIC8gMiAtIChlbGVtZW50LnkgLSB5MSk7XG4gIGNvbnN0IGRlZ3JlZSA9IDE4MCAqIGVsZW1lbnQuYW5nbGUgLyBNYXRoLlBJO1xuICBjb25zdCBnZW5lcmF0b3IgPSByc3ZnLmdlbmVyYXRvcjtcblxuICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgIGNhc2UgXCJzZWxlY3Rpb25cIjpcbiAgICAgIHtcbiAgICAgICAgLy8gU2luY2UgdGhpcyBpcyB1c2VkIG9ubHkgZHVyaW5nIGVkaXRpbmcgZXhwZXJpZW5jZSwgd2hpY2ggaXMgY2FudmFzIGJhc2VkLFxuICAgICAgICAvLyB0aGlzIHNob3VsZCBub3QgaGFwcGVuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNlbGVjdGlvbiByZW5kZXJpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgU1ZHXCIpO1xuICAgICAgfVxuXG4gICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgIGNhc2UgXCJkaWFtb25kXCI6XG4gICAgY2FzZSBcImVsbGlwc2VcIjpcbiAgICAgIHtcbiAgICAgICAgZ2VuZXJhdGVFbGVtZW50U2hhcGUoZWxlbWVudCwgZ2VuZXJhdG9yKTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJvdWdoU1ZHRHJhd1dpdGhQcmVjaXNpb24ocnN2ZywgZ2V0U2hhcGVGb3JFbGVtZW50KGVsZW1lbnQpLCBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQpO1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuXG4gICAgICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZS1saW5lY2FwXCIsIFwicm91bmRcIik7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIsIGB0cmFuc2xhdGUoJHtvZmZzZXRYIHx8IDB9ICR7b2Zmc2V0WSB8fCAwfSkgcm90YXRlKCR7ZGVncmVlfSAke2N4fSAke2N5fSlgKTtcbiAgICAgICAgc3ZnUm9vdC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlIFwibGluZVwiOlxuICAgIGNhc2UgXCJhcnJvd1wiOlxuICAgICAge1xuICAgICAgICBnZW5lcmF0ZUVsZW1lbnRTaGFwZShlbGVtZW50LCBnZW5lcmF0b3IpO1xuICAgICAgICBjb25zdCBncm91cCA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcImdcIik7XG4gICAgICAgIGNvbnN0IG9wYWNpdHkgPSBlbGVtZW50Lm9wYWNpdHkgLyAxMDA7XG4gICAgICAgIGdyb3VwLnNldEF0dHJpYnV0ZShcInN0cm9rZS1saW5lY2FwXCIsIFwicm91bmRcIik7XG4gICAgICAgIGdldFNoYXBlRm9yRWxlbWVudChlbGVtZW50KS5mb3JFYWNoKGZ1bmN0aW9uIChzaGFwZSkge1xuICAgICAgICAgIGNvbnN0IG5vZGUgPSByb3VnaFNWR0RyYXdXaXRoUHJlY2lzaW9uKHJzdmcsIHNoYXBlLCBNQVhfREVDSU1BTFNfRk9SX1NWR19FWFBPUlQpO1xuXG4gICAgICAgICAgaWYgKG9wYWNpdHkgIT09IDEpIHtcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgke29mZnNldFggfHwgMH0gJHtvZmZzZXRZIHx8IDB9KSByb3RhdGUoJHtkZWdyZWV9ICR7Y3h9ICR7Y3l9KWApO1xuXG4gICAgICAgICAgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJsaW5lXCIgJiYgaXNQYXRoQUxvb3AoZWxlbWVudC5wb2ludHMpICYmIGVsZW1lbnQuYmFja2dyb3VuZENvbG9yICE9PSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1ydWxlXCIsIFwiZXZlbm9kZFwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBncm91cC5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHN2Z1Jvb3QuYXBwZW5kQ2hpbGQoZ3JvdXApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIGNhc2UgXCJmcmVlZHJhd1wiOlxuICAgICAge1xuICAgICAgICBnZW5lcmF0ZUZyZWVEcmF3U2hhcGUoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IG9wYWNpdHkgPSBlbGVtZW50Lm9wYWNpdHkgLyAxMDA7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJnXCIpO1xuXG4gICAgICAgIGlmIChvcGFjaXR5ICE9PSAxKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJzdHJva2Utb3BhY2l0eVwiLCBgJHtvcGFjaXR5fWApO1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInRyYW5zZm9ybVwiLCBgdHJhbnNsYXRlKCR7b2Zmc2V0WCB8fCAwfSAke29mZnNldFkgfHwgMH0pIHJvdGF0ZSgke2RlZ3JlZX0gJHtjeH0gJHtjeX0pYCk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJwYXRoXCIpO1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShcInN0cm9rZVwiLCBcIm5vbmVcIik7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbFwiLCBlbGVtZW50LnN0cm9rZUNvbG9yKTtcbiAgICAgICAgcGF0aC5zZXRBdHRyaWJ1dGUoXCJkXCIsIGdldEZyZWVEcmF3U3ZnUGF0aChlbGVtZW50KSk7XG4gICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQocGF0aCk7XG4gICAgICAgIHN2Z1Jvb3QuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgY2FzZSBcImltYWdlXCI6XG4gICAgICB7XG4gICAgICAgIGNvbnN0IGZpbGVEYXRhID0gaXNJbml0aWFsaXplZEltYWdlRWxlbWVudChlbGVtZW50KSAmJiBmaWxlc1tlbGVtZW50LmZpbGVJZF07XG5cbiAgICAgICAgaWYgKGZpbGVEYXRhKSB7XG4gICAgICAgICAgY29uc3Qgc3ltYm9sSWQgPSBgaW1hZ2UtJHtmaWxlRGF0YS5pZH1gO1xuICAgICAgICAgIGxldCBzeW1ib2wgPSBzdmdSb290LnF1ZXJ5U2VsZWN0b3IoYCMke3N5bWJvbElkfWApO1xuXG4gICAgICAgICAgaWYgKCFzeW1ib2wpIHtcbiAgICAgICAgICAgIHN5bWJvbCA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInN5bWJvbFwiKTtcbiAgICAgICAgICAgIHN5bWJvbC5pZCA9IHN5bWJvbElkO1xuICAgICAgICAgICAgY29uc3QgaW1hZ2UgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJpbWFnZVwiKTtcbiAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIFwiMTAwJVwiKTtcbiAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBcIjEwMCVcIik7XG4gICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGUoXCJocmVmXCIsIGZpbGVEYXRhLmRhdGFVUkwpO1xuICAgICAgICAgICAgc3ltYm9sLmFwcGVuZENoaWxkKGltYWdlKTtcbiAgICAgICAgICAgIHN2Z1Jvb3QucHJlcGVuZChzeW1ib2wpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHVzZSA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInVzZVwiKTtcbiAgICAgICAgICB1c2Uuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCBgIyR7c3ltYm9sSWR9YCk7IC8vIGluIGRhcmsgdGhlbWUsIHJldmVydCB0aGUgaW1hZ2UgY29sb3IgZmlsdGVyXG5cbiAgICAgICAgICBpZiAoZXhwb3J0V2l0aERhcmtNb2RlICYmIGZpbGVEYXRhLm1pbWVUeXBlICE9PSBNSU1FX1RZUEVTLnN2Zykge1xuICAgICAgICAgICAgdXNlLnNldEF0dHJpYnV0ZShcImZpbHRlclwiLCBJTUFHRV9JTlZFUlRfRklMVEVSKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB1c2Uuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgYCR7TWF0aC5yb3VuZChlbGVtZW50LndpZHRoKX1gKTtcbiAgICAgICAgICB1c2Uuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke01hdGgucm91bmQoZWxlbWVudC5oZWlnaHQpfWApO1xuICAgICAgICAgIHVzZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgke29mZnNldFggfHwgMH0gJHtvZmZzZXRZIHx8IDB9KSByb3RhdGUoJHtkZWdyZWV9ICR7Y3h9ICR7Y3l9KWApO1xuICAgICAgICAgIHN2Z1Jvb3QuYXBwZW5kQ2hpbGQodXNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHtcbiAgICAgICAgaWYgKGlzVGV4dEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAgICAgICBjb25zdCBvcGFjaXR5ID0gZWxlbWVudC5vcGFjaXR5IC8gMTAwO1xuICAgICAgICAgIGNvbnN0IG5vZGUgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJnXCIpO1xuXG4gICAgICAgICAgaWYgKG9wYWNpdHkgIT09IDEpIHtcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwic3Ryb2tlLW9wYWNpdHlcIiwgYCR7b3BhY2l0eX1gKTtcbiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKFwiZmlsbC1vcGFjaXR5XCIsIGAke29wYWNpdHl9YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIiwgYHRyYW5zbGF0ZSgke29mZnNldFggfHwgMH0gJHtvZmZzZXRZIHx8IDB9KSByb3RhdGUoJHtkZWdyZWV9ICR7Y3h9ICR7Y3l9KWApO1xuICAgICAgICAgIGNvbnN0IGxpbmVzID0gZWxlbWVudC50ZXh0LnJlcGxhY2UoL1xcclxcbj8vZywgXCJcXG5cIikuc3BsaXQoXCJcXG5cIik7XG4gICAgICAgICAgY29uc3QgbGluZUhlaWdodCA9IGVsZW1lbnQuaGVpZ2h0IC8gbGluZXMubGVuZ3RoO1xuICAgICAgICAgIGNvbnN0IHZlcnRpY2FsT2Zmc2V0ID0gZWxlbWVudC5oZWlnaHQgLSBlbGVtZW50LmJhc2VsaW5lO1xuICAgICAgICAgIGNvbnN0IGhvcml6b250YWxPZmZzZXQgPSBlbGVtZW50LnRleHRBbGlnbiA9PT0gXCJjZW50ZXJcIiA/IGVsZW1lbnQud2lkdGggLyAyIDogZWxlbWVudC50ZXh0QWxpZ24gPT09IFwicmlnaHRcIiA/IGVsZW1lbnQud2lkdGggOiAwO1xuICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IGlzUlRMKGVsZW1lbnQudGV4dCkgPyBcInJ0bFwiIDogXCJsdHJcIjtcbiAgICAgICAgICBjb25zdCB0ZXh0QW5jaG9yID0gZWxlbWVudC50ZXh0QWxpZ24gPT09IFwiY2VudGVyXCIgPyBcIm1pZGRsZVwiIDogZWxlbWVudC50ZXh0QWxpZ24gPT09IFwicmlnaHRcIiB8fCBkaXJlY3Rpb24gPT09IFwicnRsXCIgPyBcImVuZFwiIDogXCJzdGFydFwiO1xuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IHN2Z1Jvb3Qub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInRleHRcIik7XG4gICAgICAgICAgICB0ZXh0LnRleHRDb250ZW50ID0gbGluZXNbaV07XG4gICAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInhcIiwgYCR7aG9yaXpvbnRhbE9mZnNldH1gKTtcbiAgICAgICAgICAgIHRleHQuc2V0QXR0cmlidXRlKFwieVwiLCBgJHsoaSArIDEpICogbGluZUhlaWdodCAtIHZlcnRpY2FsT2Zmc2V0fWApO1xuICAgICAgICAgICAgdGV4dC5zZXRBdHRyaWJ1dGUoXCJmb250LWZhbWlseVwiLCBnZXRGb250RmFtaWx5U3RyaW5nKGVsZW1lbnQpKTtcbiAgICAgICAgICAgIHRleHQuc2V0QXR0cmlidXRlKFwiZm9udC1zaXplXCIsIGAke2VsZW1lbnQuZm9udFNpemV9cHhgKTtcbiAgICAgICAgICAgIHRleHQuc2V0QXR0cmlidXRlKFwiZmlsbFwiLCBlbGVtZW50LnN0cm9rZUNvbG9yKTtcbiAgICAgICAgICAgIHRleHQuc2V0QXR0cmlidXRlKFwidGV4dC1hbmNob3JcIiwgdGV4dEFuY2hvcik7XG4gICAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIFwid2hpdGUtc3BhY2U6IHByZTtcIik7XG4gICAgICAgICAgICB0ZXh0LnNldEF0dHJpYnV0ZShcImRpcmVjdGlvblwiLCBkaXJlY3Rpb24pO1xuICAgICAgICAgICAgbm9kZS5hcHBlbmRDaGlsZCh0ZXh0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzdmdSb290LmFwcGVuZENoaWxkKG5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgdHlwZSAke2VsZW1lbnQudHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IHBhdGhzQ2FjaGUgPSBuZXcgV2Vha01hcChbXSk7XG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVGcmVlRHJhd1NoYXBlKGVsZW1lbnQpIHtcbiAgY29uc3Qgc3ZnUGF0aERhdGEgPSBnZXRGcmVlRHJhd1N2Z1BhdGgoZWxlbWVudCk7XG4gIGNvbnN0IHBhdGggPSBuZXcgUGF0aDJEKHN2Z1BhdGhEYXRhKTtcbiAgcGF0aHNDYWNoZS5zZXQoZWxlbWVudCwgcGF0aCk7XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWVEcmF3UGF0aDJEKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHBhdGhzQ2FjaGUuZ2V0KGVsZW1lbnQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyZWVEcmF3U3ZnUGF0aChlbGVtZW50KSB7XG4gIC8vIElmIGlucHV0IHBvaW50cyBhcmUgZW1wdHkgKHNob3VsZCB0aGV5IGV2ZXIgYmU/KSByZXR1cm4gYSBkb3RcbiAgY29uc3QgaW5wdXRQb2ludHMgPSBlbGVtZW50LnNpbXVsYXRlUHJlc3N1cmUgPyBlbGVtZW50LnBvaW50cyA6IGVsZW1lbnQucG9pbnRzLmxlbmd0aCA/IGVsZW1lbnQucG9pbnRzLm1hcChmdW5jdGlvbiAoX3JlZiwgaSkge1xuICAgIGxldCBbeCwgeV0gPSBfcmVmO1xuICAgIHJldHVybiBbeCwgeSwgZWxlbWVudC5wcmVzc3VyZXNbaV1dO1xuICB9KSA6IFtbMCwgMCwgMC41XV07IC8vIENvbnNpZGVyIGNoYW5naW5nIHRoZSBvcHRpb25zIGZvciBzaW11bGF0ZWQgcHJlc3N1cmUgdnMgcmVhbCBwcmVzc3VyZVxuXG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgc2ltdWxhdGVQcmVzc3VyZTogZWxlbWVudC5zaW11bGF0ZVByZXNzdXJlLFxuICAgIHNpemU6IGVsZW1lbnQuc3Ryb2tlV2lkdGggKiA0LjI1LFxuICAgIHRoaW5uaW5nOiAwLjYsXG4gICAgc21vb3RoaW5nOiAwLjUsXG4gICAgc3RyZWFtbGluZTogMC41LFxuICAgIGVhc2luZzogZnVuY3Rpb24gKHQpIHtcbiAgICAgIHJldHVybiBNYXRoLnNpbih0ICogTWF0aC5QSSAvIDIpO1xuICAgIH0sXG4gICAgLy8gaHR0cHM6Ly9lYXNpbmdzLm5ldC8jZWFzZU91dFNpbmVcbiAgICBsYXN0OiAhIWVsZW1lbnQubGFzdENvbW1pdHRlZFBvaW50IC8vIExhc3RDb21taXR0ZWRQb2ludCBpcyBhZGRlZCBvbiBwb2ludGVydXBcblxuICB9O1xuICByZXR1cm4gZ2V0U3ZnUGF0aEZyb21TdHJva2UoZ2V0U3Ryb2tlKGlucHV0UG9pbnRzLCBvcHRpb25zKSk7XG59XG5cbmZ1bmN0aW9uIG1lZChBLCBCKSB7XG4gIHJldHVybiBbKEFbMF0gKyBCWzBdKSAvIDIsIChBWzFdICsgQlsxXSkgLyAyXTtcbn0gLy8gVHJpbSBTVkcgcGF0aCBkYXRhIHNvIG51bWJlciBhcmUgZWFjaCB0d28gZGVjaW1hbCBwb2ludHMuIFRoaXNcbi8vIGltcHJvdmVzIFNWRyBleHBvcnRzLCBhbmQgcHJldmVudHMgcmVuZGVyaW5nIGVycm9ycyBvbiBwb2ludHNcbi8vIHdpdGggbG9uZyBkZWNpbWFscy5cblxuXG5jb25zdCBUT19GSVhFRF9QUkVDSVNJT04gPSAvKFxccz9bQS1aXT8sPy0/WzAtOV0qXFwuWzAtOV17MCwyfSkoKFswLTldfGV8LSkqKS9nO1xuXG5mdW5jdGlvbiBnZXRTdmdQYXRoRnJvbVN0cm9rZShwb2ludHMpIHtcbiAgaWYgKCFwb2ludHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBjb25zdCBtYXggPSBwb2ludHMubGVuZ3RoIC0gMTtcbiAgcmV0dXJuIHBvaW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcG9pbnQsIGksIGFycikge1xuICAgIGlmIChpID09PSBtYXgpIHtcbiAgICAgIGFjYy5wdXNoKHBvaW50LCBtZWQocG9pbnQsIGFyclswXSksIFwiTFwiLCBhcnJbMF0sIFwiWlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjLnB1c2gocG9pbnQsIG1lZChwb2ludCwgYXJyW2kgKyAxXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtcIk1cIiwgcG9pbnRzWzBdLCBcIlFcIl0pLmpvaW4oXCIgXCIpLnJlcGxhY2UoVE9fRklYRURfUFJFQ0lTSU9OLCBcIiQxXCIpO1xufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../renderer/renderElement.ts\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../renderer/renderElement.ts?");
2913
2913
 
2914
2914
  /***/ }),
2915
2915
 
@@ -2953,7 +2953,7 @@ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */
2953
2953
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2954
2954
 
2955
2955
  "use strict";
2956
- eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"hasBackground\\\": () => (/* binding */ hasBackground),\\n/* harmony export */ \\\"hasStrokeColor\\\": () => (/* binding */ hasStrokeColor),\\n/* harmony export */ \\\"hasStrokeWidth\\\": () => (/* binding */ hasStrokeWidth),\\n/* harmony export */ \\\"hasStrokeStyle\\\": () => (/* binding */ hasStrokeStyle),\\n/* harmony export */ \\\"canChangeSharpness\\\": () => (/* binding */ canChangeSharpness),\\n/* harmony export */ \\\"hasText\\\": () => (/* binding */ hasText),\\n/* harmony export */ \\\"canHaveArrowheads\\\": () => (/* binding */ canHaveArrowheads),\\n/* harmony export */ \\\"getElementAtPosition\\\": () => (/* binding */ getElementAtPosition),\\n/* harmony export */ \\\"getElementsAtPosition\\\": () => (/* binding */ getElementsAtPosition),\\n/* harmony export */ \\\"getElementContainingPosition\\\": () => (/* binding */ getElementContainingPosition)\\n/* harmony export */ });\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n\\r\\nconst hasBackground = function (type) {\\r\\n return type === \\\"rectangle\\\" || type === \\\"ellipse\\\" || type === \\\"diamond\\\" || type === \\\"line\\\";\\r\\n};\\r\\nconst hasStrokeColor = function (type) {\\r\\n return type !== \\\"image\\\";\\r\\n};\\r\\nconst hasStrokeWidth = function (type) {\\r\\n return type === \\\"rectangle\\\" || type === \\\"ellipse\\\" || type === \\\"diamond\\\" || type === \\\"freedraw\\\" || type === \\\"arrow\\\" || type === \\\"line\\\";\\r\\n};\\r\\nconst hasStrokeStyle = function (type) {\\r\\n return type === \\\"rectangle\\\" || type === \\\"ellipse\\\" || type === \\\"diamond\\\" || type === \\\"arrow\\\" || type === \\\"line\\\";\\r\\n};\\r\\nconst canChangeSharpness = function (type) {\\r\\n return type === \\\"rectangle\\\" || type === \\\"arrow\\\" || type === \\\"line\\\";\\r\\n};\\r\\nconst hasText = function (type) {\\r\\n return type === \\\"text\\\";\\r\\n};\\r\\nconst canHaveArrowheads = function (type) {\\r\\n return type === \\\"arrow\\\";\\r\\n};\\r\\nconst getElementAtPosition = function (elements, isAtPositionFn) {\\r\\n let hitElement = null; // We need to to hit testing from front (end of the array) to back (beginning of the array)\\r\\n // because array is ordered from lower z-index to highest and we want element z-index\\r\\n // with higher z-index\\r\\n for (let index = elements.length - 1; index >= 0; --index) {\\r\\n const element = elements[index];\\r\\n if (element.isDeleted) {\\r\\n continue;\\r\\n }\\r\\n if (isAtPositionFn(element)) {\\r\\n hitElement = element;\\r\\n break;\\r\\n }\\r\\n }\\r\\n return hitElement;\\r\\n};\\r\\nconst getElementsAtPosition = function (elements, isAtPositionFn) {\\r\\n // The parameter elements comes ordered from lower z-index to higher.\\r\\n // We want to preserve that order on the returned array.\\r\\n return elements.filter(function (element) {\\r\\n return !element.isDeleted && isAtPositionFn(element);\\r\\n });\\r\\n};\\r\\nconst getElementContainingPosition = function (elements, x, y) {\\r\\n let hitElement = null; // We need to to hit testing from front (end of the array) to back (beginning of the array)\\r\\n for (let index = elements.length - 1; index >= 0; --index) {\\r\\n if (elements[index].isDeleted) {\\r\\n continue;\\r\\n }\\r\\n const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(elements[index]);\\r\\n if (x1 < x && x < x2 && y1 < y && y < y2) {\\r\\n hitElement = elements[index];\\r\\n break;\\r\\n }\\r\\n }\\r\\n return hitElement;\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxrRUFBd0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVuRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixNQUFNO1NBQ1A7S0FDRjtJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9zY2VuZS9jb21wYXJpc29ucy50cz9iMzZiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEVsZW1lbnRBYnNvbHV0ZUNvb3JkcyB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5leHBvcnQgY29uc3QgaGFzQmFja2dyb3VuZCA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSBcInJlY3RhbmdsZVwiIHx8IHR5cGUgPT09IFwiZWxsaXBzZVwiIHx8IHR5cGUgPT09IFwiZGlhbW9uZFwiIHx8IHR5cGUgPT09IFwibGluZVwiO1xufTtcbmV4cG9ydCBjb25zdCBoYXNTdHJva2VDb2xvciA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHJldHVybiB0eXBlICE9PSBcImltYWdlXCI7XG59O1xuZXhwb3J0IGNvbnN0IGhhc1N0cm9rZVdpZHRoID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09IFwicmVjdGFuZ2xlXCIgfHwgdHlwZSA9PT0gXCJlbGxpcHNlXCIgfHwgdHlwZSA9PT0gXCJkaWFtb25kXCIgfHwgdHlwZSA9PT0gXCJmcmVlZHJhd1wiIHx8IHR5cGUgPT09IFwiYXJyb3dcIiB8fCB0eXBlID09PSBcImxpbmVcIjtcbn07XG5leHBvcnQgY29uc3QgaGFzU3Ryb2tlU3R5bGUgPSBmdW5jdGlvbiAodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gXCJyZWN0YW5nbGVcIiB8fCB0eXBlID09PSBcImVsbGlwc2VcIiB8fCB0eXBlID09PSBcImRpYW1vbmRcIiB8fCB0eXBlID09PSBcImFycm93XCIgfHwgdHlwZSA9PT0gXCJsaW5lXCI7XG59O1xuZXhwb3J0IGNvbnN0IGNhbkNoYW5nZVNoYXJwbmVzcyA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSBcInJlY3RhbmdsZVwiIHx8IHR5cGUgPT09IFwiYXJyb3dcIiB8fCB0eXBlID09PSBcImxpbmVcIjtcbn07XG5leHBvcnQgY29uc3QgaGFzVGV4dCA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSBcInRleHRcIjtcbn07XG5leHBvcnQgY29uc3QgY2FuSGF2ZUFycm93aGVhZHMgPSBmdW5jdGlvbiAodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gXCJhcnJvd1wiO1xufTtcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50QXRQb3NpdGlvbiA9IGZ1bmN0aW9uIChlbGVtZW50cywgaXNBdFBvc2l0aW9uRm4pIHtcbiAgbGV0IGhpdEVsZW1lbnQgPSBudWxsOyAvLyBXZSBuZWVkIHRvIHRvIGhpdCB0ZXN0aW5nIGZyb20gZnJvbnQgKGVuZCBvZiB0aGUgYXJyYXkpIHRvIGJhY2sgKGJlZ2lubmluZyBvZiB0aGUgYXJyYXkpXG4gIC8vIGJlY2F1c2UgYXJyYXkgaXMgb3JkZXJlZCBmcm9tIGxvd2VyIHotaW5kZXggdG8gaGlnaGVzdCBhbmQgd2Ugd2FudCBlbGVtZW50IHotaW5kZXhcbiAgLy8gd2l0aCBoaWdoZXIgei1pbmRleFxuXG4gIGZvciAobGV0IGluZGV4ID0gZWxlbWVudHMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgLS1pbmRleCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50c1tpbmRleF07XG5cbiAgICBpZiAoZWxlbWVudC5pc0RlbGV0ZWQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChpc0F0UG9zaXRpb25GbihlbGVtZW50KSkge1xuICAgICAgaGl0RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaGl0RWxlbWVudDtcbn07XG5leHBvcnQgY29uc3QgZ2V0RWxlbWVudHNBdFBvc2l0aW9uID0gZnVuY3Rpb24gKGVsZW1lbnRzLCBpc0F0UG9zaXRpb25Gbikge1xuICAvLyBUaGUgcGFyYW1ldGVyIGVsZW1lbnRzIGNvbWVzIG9yZGVyZWQgZnJvbSBsb3dlciB6LWluZGV4IHRvIGhpZ2hlci5cbiAgLy8gV2Ugd2FudCB0byBwcmVzZXJ2ZSB0aGF0IG9yZGVyIG9uIHRoZSByZXR1cm5lZCBhcnJheS5cbiAgcmV0dXJuIGVsZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhZWxlbWVudC5pc0RlbGV0ZWQgJiYgaXNBdFBvc2l0aW9uRm4oZWxlbWVudCk7XG4gIH0pO1xufTtcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50Q29udGFpbmluZ1Bvc2l0aW9uID0gZnVuY3Rpb24gKGVsZW1lbnRzLCB4LCB5KSB7XG4gIGxldCBoaXRFbGVtZW50ID0gbnVsbDsgLy8gV2UgbmVlZCB0byB0byBoaXQgdGVzdGluZyBmcm9tIGZyb250IChlbmQgb2YgdGhlIGFycmF5KSB0byBiYWNrIChiZWdpbm5pbmcgb2YgdGhlIGFycmF5KVxuXG4gIGZvciAobGV0IGluZGV4ID0gZWxlbWVudHMubGVuZ3RoIC0gMTsgaW5kZXggPj0gMDsgLS1pbmRleCkge1xuICAgIGlmIChlbGVtZW50c1tpbmRleF0uaXNEZWxldGVkKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGVsZW1lbnRzW2luZGV4XSk7XG5cbiAgICBpZiAoeDEgPCB4ICYmIHggPCB4MiAmJiB5MSA8IHkgJiYgeSA8IHkyKSB7XG4gICAgICBoaXRFbGVtZW50ID0gZWxlbWVudHNbaW5kZXhdO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGhpdEVsZW1lbnQ7XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\\n//# sourceURL=webpack-internal:///../../scene/comparisons.ts\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../scene/comparisons.ts?");
2956
+ eval("eval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\\n/* harmony export */ \\\"hasBackground\\\": () => (/* binding */ hasBackground),\\n/* harmony export */ \\\"hasStrokeColor\\\": () => (/* binding */ hasStrokeColor),\\n/* harmony export */ \\\"hasStrokeWidth\\\": () => (/* binding */ hasStrokeWidth),\\n/* harmony export */ \\\"hasStrokeStyle\\\": () => (/* binding */ hasStrokeStyle),\\n/* harmony export */ \\\"canChangeSharpness\\\": () => (/* binding */ canChangeSharpness),\\n/* harmony export */ \\\"hasText\\\": () => (/* binding */ hasText),\\n/* harmony export */ \\\"canHaveArrowheads\\\": () => (/* binding */ canHaveArrowheads),\\n/* harmony export */ \\\"getElementAtPosition\\\": () => (/* binding */ getElementAtPosition),\\n/* harmony export */ \\\"getElementsAtPosition\\\": () => (/* binding */ getElementsAtPosition),\\n/* harmony export */ \\\"getElementContainingPosition\\\": () => (/* binding */ getElementContainingPosition)\\n/* harmony export */ });\\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../element */ \\\"../../element/index.ts\\\");\\n\\r\\nconst hasBackground = function (type) {\\r\\n return type === \\\"rectangle\\\" || type === \\\"ellipse\\\" || type === \\\"diamond\\\" || type === \\\"line\\\";\\r\\n};\\r\\nconst hasStrokeColor = function (type) {\\r\\n return type !== \\\"image\\\";\\r\\n};\\r\\nconst hasStrokeWidth = function (type) {\\r\\n return type === \\\"rectangle\\\" || type === \\\"ellipse\\\" || type === \\\"diamond\\\" || type === \\\"freedraw\\\" || type === \\\"arrow\\\" || type === \\\"line\\\";\\r\\n};\\r\\nconst hasStrokeStyle = function (type) {\\r\\n return type === \\\"rectangle\\\" || type === \\\"ellipse\\\" || type === \\\"diamond\\\" || type === \\\"arrow\\\" || type === \\\"line\\\";\\r\\n};\\r\\nconst canChangeSharpness = function (type) {\\r\\n return type === \\\"rectangle\\\" || type === \\\"arrow\\\" || type === \\\"line\\\" || type === \\\"diamond\\\";\\r\\n};\\r\\nconst hasText = function (type) {\\r\\n return type === \\\"text\\\";\\r\\n};\\r\\nconst canHaveArrowheads = function (type) {\\r\\n return type === \\\"arrow\\\";\\r\\n};\\r\\nconst getElementAtPosition = function (elements, isAtPositionFn) {\\r\\n let hitElement = null; // We need to to hit testing from front (end of the array) to back (beginning of the array)\\r\\n // because array is ordered from lower z-index to highest and we want element z-index\\r\\n // with higher z-index\\r\\n for (let index = elements.length - 1; index >= 0; --index) {\\r\\n const element = elements[index];\\r\\n if (element.isDeleted) {\\r\\n continue;\\r\\n }\\r\\n if (isAtPositionFn(element)) {\\r\\n hitElement = element;\\r\\n break;\\r\\n }\\r\\n }\\r\\n return hitElement;\\r\\n};\\r\\nconst getElementsAtPosition = function (elements, isAtPositionFn) {\\r\\n // The parameter elements comes ordered from lower z-index to higher.\\r\\n // We want to preserve that order on the returned array.\\r\\n return elements.filter(function (element) {\\r\\n return !element.isDeleted && isAtPositionFn(element);\\r\\n });\\r\\n};\\r\\nconst getElementContainingPosition = function (elements, x, y) {\\r\\n let hitElement = null; // We need to to hit testing from front (end of the array) to back (beginning of the array)\\r\\n for (let index = elements.length - 1; index >= 0; --index) {\\r\\n if (elements[index].isDeleted) {\\r\\n continue;\\r\\n }\\r\\n const [x1, y1, x2, y2] = (0,_element__WEBPACK_IMPORTED_MODULE_0__.getElementAbsoluteCoords)(elements[index]);\\r\\n if (x1 < x && x < x2 && y1 < y && y < y2) {\\r\\n hitElement = elements[index];\\r\\n break;\\r\\n }\\r\\n }\\r\\n return hitElement;\\r\\n};\\r\\n//# sourceURL=[module]\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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TUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLGtFQUF3QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRW5FLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN4QyxVQUFVLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLE1BQU07U0FDUDtLQUNGO0lBRUQsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3NjZW5lL2NvbXBhcmlzb25zLnRzP2IzNmIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzIH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmV4cG9ydCBjb25zdCBoYXNCYWNrZ3JvdW5kID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09IFwicmVjdGFuZ2xlXCIgfHwgdHlwZSA9PT0gXCJlbGxpcHNlXCIgfHwgdHlwZSA9PT0gXCJkaWFtb25kXCIgfHwgdHlwZSA9PT0gXCJsaW5lXCI7XG59O1xuZXhwb3J0IGNvbnN0IGhhc1N0cm9rZUNvbG9yID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgIT09IFwiaW1hZ2VcIjtcbn07XG5leHBvcnQgY29uc3QgaGFzU3Ryb2tlV2lkdGggPSBmdW5jdGlvbiAodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gXCJyZWN0YW5nbGVcIiB8fCB0eXBlID09PSBcImVsbGlwc2VcIiB8fCB0eXBlID09PSBcImRpYW1vbmRcIiB8fCB0eXBlID09PSBcImZyZWVkcmF3XCIgfHwgdHlwZSA9PT0gXCJhcnJvd1wiIHx8IHR5cGUgPT09IFwibGluZVwiO1xufTtcbmV4cG9ydCBjb25zdCBoYXNTdHJva2VTdHlsZSA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSBcInJlY3RhbmdsZVwiIHx8IHR5cGUgPT09IFwiZWxsaXBzZVwiIHx8IHR5cGUgPT09IFwiZGlhbW9uZFwiIHx8IHR5cGUgPT09IFwiYXJyb3dcIiB8fCB0eXBlID09PSBcImxpbmVcIjtcbn07XG5leHBvcnQgY29uc3QgY2FuQ2hhbmdlU2hhcnBuZXNzID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09IFwicmVjdGFuZ2xlXCIgfHwgdHlwZSA9PT0gXCJhcnJvd1wiIHx8IHR5cGUgPT09IFwibGluZVwiIHx8IHR5cGUgPT09IFwiZGlhbW9uZFwiO1xufTtcbmV4cG9ydCBjb25zdCBoYXNUZXh0ID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09IFwidGV4dFwiO1xufTtcbmV4cG9ydCBjb25zdCBjYW5IYXZlQXJyb3doZWFkcyA9IGZ1bmN0aW9uICh0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSBcImFycm93XCI7XG59O1xuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRBdFBvc2l0aW9uID0gZnVuY3Rpb24gKGVsZW1lbnRzLCBpc0F0UG9zaXRpb25Gbikge1xuICBsZXQgaGl0RWxlbWVudCA9IG51bGw7IC8vIFdlIG5lZWQgdG8gdG8gaGl0IHRlc3RpbmcgZnJvbSBmcm9udCAoZW5kIG9mIHRoZSBhcnJheSkgdG8gYmFjayAoYmVnaW5uaW5nIG9mIHRoZSBhcnJheSlcbiAgLy8gYmVjYXVzZSBhcnJheSBpcyBvcmRlcmVkIGZyb20gbG93ZXIgei1pbmRleCB0byBoaWdoZXN0IGFuZCB3ZSB3YW50IGVsZW1lbnQgei1pbmRleFxuICAvLyB3aXRoIGhpZ2hlciB6LWluZGV4XG5cbiAgZm9yIChsZXQgaW5kZXggPSBlbGVtZW50cy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyAtLWluZGV4KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2luZGV4XTtcblxuICAgIGlmIChlbGVtZW50LmlzRGVsZXRlZCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGlzQXRQb3NpdGlvbkZuKGVsZW1lbnQpKSB7XG4gICAgICBoaXRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBoaXRFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBnZXRFbGVtZW50c0F0UG9zaXRpb24gPSBmdW5jdGlvbiAoZWxlbWVudHMsIGlzQXRQb3NpdGlvbkZuKSB7XG4gIC8vIFRoZSBwYXJhbWV0ZXIgZWxlbWVudHMgY29tZXMgb3JkZXJlZCBmcm9tIGxvd2VyIHotaW5kZXggdG8gaGlnaGVyLlxuICAvLyBXZSB3YW50IHRvIHByZXNlcnZlIHRoYXQgb3JkZXIgb24gdGhlIHJldHVybmVkIGFycmF5LlxuICByZXR1cm4gZWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICFlbGVtZW50LmlzRGVsZXRlZCAmJiBpc0F0UG9zaXRpb25GbihlbGVtZW50KTtcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IGdldEVsZW1lbnRDb250YWluaW5nUG9zaXRpb24gPSBmdW5jdGlvbiAoZWxlbWVudHMsIHgsIHkpIHtcbiAgbGV0IGhpdEVsZW1lbnQgPSBudWxsOyAvLyBXZSBuZWVkIHRvIHRvIGhpdCB0ZXN0aW5nIGZyb20gZnJvbnQgKGVuZCBvZiB0aGUgYXJyYXkpIHRvIGJhY2sgKGJlZ2lubmluZyBvZiB0aGUgYXJyYXkpXG5cbiAgZm9yIChsZXQgaW5kZXggPSBlbGVtZW50cy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyAtLWluZGV4KSB7XG4gICAgaWYgKGVsZW1lbnRzW2luZGV4XS5pc0RlbGV0ZWQpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IFt4MSwgeTEsIHgyLCB5Ml0gPSBnZXRFbGVtZW50QWJzb2x1dGVDb29yZHMoZWxlbWVudHNbaW5kZXhdKTtcblxuICAgIGlmICh4MSA8IHggJiYgeCA8IHgyICYmIHkxIDwgeSAmJiB5IDwgeTIpIHtcbiAgICAgIGhpdEVsZW1lbnQgPSBlbGVtZW50c1tpbmRleF07XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaGl0RWxlbWVudDtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\\n//# sourceURL=webpack-internal:///../../scene/comparisons.ts\\n\");\n\n//# sourceURL=webpack://Excalidraw/../../scene/comparisons.ts?");
2957
2957
 
2958
2958
  /***/ }),
2959
2959