diff --git a/dash_canvas/DashCanvas.py b/dash_canvas/DashCanvas.py index 3b1de03..0643040 100644 --- a/dash_canvas/DashCanvas.py +++ b/dash_canvas/DashCanvas.py @@ -30,14 +30,20 @@ class DashCanvas(Component): annotations. Use utils.parse_json.parse_jsonstring to parse this string. - hide_buttons (list of strings; optional): Names of buttons to hide. Names are "zoom", "pan", "line", "pencil", -"rectangle", "undo", "select".""" +"rectangle", "undo", "select". +- json_objects (string; default ''): Like json_data,add objects like paths or images +Use utils.parse_json.parse_jsonstring to parse +this string. +- add_only (boolean; default False): Like json_data,add objects like paths or images +Use utils.parse_json.parse_jsonstring to parse +this string.""" @_explicitize_args - def __init__(self, id=Component.UNDEFINED, image_content=Component.UNDEFINED, zoom=Component.UNDEFINED, width=Component.UNDEFINED, height=Component.UNDEFINED, scale=Component.UNDEFINED, tool=Component.UNDEFINED, lineWidth=Component.UNDEFINED, lineColor=Component.UNDEFINED, goButtonTitle=Component.UNDEFINED, filename=Component.UNDEFINED, trigger=Component.UNDEFINED, json_data=Component.UNDEFINED, hide_buttons=Component.UNDEFINED, **kwargs): - self._prop_names = ['id', 'image_content', 'zoom', 'width', 'height', 'scale', 'tool', 'lineWidth', 'lineColor', 'goButtonTitle', 'filename', 'trigger', 'json_data', 'hide_buttons'] + def __init__(self, id=Component.UNDEFINED, image_content=Component.UNDEFINED, zoom=Component.UNDEFINED, width=Component.UNDEFINED, height=Component.UNDEFINED, scale=Component.UNDEFINED, tool=Component.UNDEFINED, lineWidth=Component.UNDEFINED, lineColor=Component.UNDEFINED, goButtonTitle=Component.UNDEFINED, filename=Component.UNDEFINED, trigger=Component.UNDEFINED, json_data=Component.UNDEFINED, hide_buttons=Component.UNDEFINED, json_objects=Component.UNDEFINED, add_only=Component.UNDEFINED, **kwargs): + self._prop_names = ['id', 'image_content', 'zoom', 'width', 'height', 'scale', 'tool', 'lineWidth', 'lineColor', 'goButtonTitle', 'filename', 'trigger', 'json_data', 'hide_buttons', 'json_objects', 'add_only'] self._type = 'DashCanvas' self._namespace = 'dash_canvas' self._valid_wildcard_attributes = [] - self.available_properties = ['id', 'image_content', 'zoom', 'width', 'height', 'scale', 'tool', 'lineWidth', 'lineColor', 'goButtonTitle', 'filename', 'trigger', 'json_data', 'hide_buttons'] + self.available_properties = ['id', 'image_content', 'zoom', 'width', 'height', 'scale', 'tool', 'lineWidth', 'lineColor', 'goButtonTitle', 'filename', 'trigger', 'json_data', 'hide_buttons', 'json_objects', 'add_only'] self.available_wildcard_properties = [] _explicit_args = kwargs.pop('_explicit_args') diff --git a/dash_canvas/async~canvas.dev.js b/dash_canvas/async~canvas.dev.js index fa1aaa5..b7340a1 100644 --- a/dash_canvas/async~canvas.dev.js +++ b/dash_canvas/async~canvas.dev.js @@ -2727,7 +2727,7 @@ eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn th /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DashCanvas; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_sketch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-sketch */ \"./node_modules/react-sketch/lib/index.js\");\n/* harmony import */ var react_sketch__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_sketch__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var plotly_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! plotly-icons */ \"./node_modules/plotly-icons/lib/index.js\");\n/* harmony import */ var plotly_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(plotly_icons__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_DashCanvas_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/DashCanvas.react */ \"./src/lib/components/DashCanvas.react.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\nvar styles = {\n button: {\n margin: '3px',\n padding: '0px',\n width: '50px',\n height: '50px',\n verticalAlign: 'middle'\n },\n textbutton: _defineProperty({\n verticalAlign: 'top',\n height: '50px',\n color: 'blue'\n }, \"verticalAlign\", 'middle')\n};\n/**\n * Canvas component for drawing on a background image and selecting\n * regions.\n */\n\nvar DashCanvas =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(DashCanvas, _Component);\n\n function DashCanvas(props) {\n var _this;\n\n _classCallCheck(this, DashCanvas);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DashCanvas).call(this, props));\n _this.state = {\n height: 200\n };\n _this._save = _this._save.bind(_assertThisInitialized(_this));\n _this._undo = _this._undo.bind(_assertThisInitialized(_this));\n _this._zoom = _this._zoom.bind(_assertThisInitialized(_this));\n _this._zoom_factor = _this._zoom_factor.bind(_assertThisInitialized(_this));\n _this._unzoom = _this._unzoom.bind(_assertThisInitialized(_this));\n _this._pantool = _this._pantool.bind(_assertThisInitialized(_this));\n _this._penciltool = _this._penciltool.bind(_assertThisInitialized(_this));\n _this._linetool = _this._linetool.bind(_assertThisInitialized(_this));\n _this._selecttool = _this._selecttool.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(DashCanvas, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var sketch = this._sketch;\n\n if (this.props.filename.length > 0 || this.props.image_content.length > 0) {\n var content = this.props.filename.length > 0 ? this.props.filename : this.props.image_content;\n var img = new Image();\n\n img.onload = function () {\n var new_height = _this2.state.height;\n var new_scale = 1;\n var height = img.height;\n var width = img.width;\n new_height = Math.round(height * sketch.props.width / width);\n new_scale = new_height / height;\n\n _this2.setState({\n height: new_height\n });\n\n sketch.clear();\n var opts = {\n left: 0,\n top: 0,\n scale: new_scale\n };\n sketch.addImg(content, opts);\n };\n\n img.src = content;\n } else {\n sketch._fc.setBackgroundColor(sketch.props.backgroundColor);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this3 = this;\n\n var sketch = this._sketch; // Typical usage (don't forget to compare props):\n\n if (this.props.image_content !== prevProps.image_content) {\n var img = new Image();\n var new_height = this.state.height;\n var new_scale = 1;\n\n img.onload = function () {\n var height = img.height;\n var width = img.width;\n new_height = Math.round(height * sketch.props.width / width);\n new_scale = new_height / height;\n\n _this3.setState({\n height: new_height\n });\n\n sketch.clear();\n var opts = {\n left: 0,\n top: 0,\n scale: new_scale\n };\n sketch.addImg(_this3.props.image_content, opts);\n };\n\n img.src = this.props.image_content;\n\n if (this.props.setProps) {\n var JSON_string = JSON.stringify(this._sketch.toJSON());\n this.props.setProps({\n json_data: JSON_string\n });\n }\n\n sketch._fc.setZoom(this.props.zoom);\n }\n\n ;\n }\n }, {\n key: \"_save\",\n value: function _save() {\n var JSON_string = JSON.stringify(this._sketch.toJSON());\n var toggle_value = this.props.trigger + 1;\n\n if (this.props.setProps) {\n this.props.setProps({\n json_data: JSON_string,\n trigger: toggle_value\n });\n }\n }\n }, {\n key: \"_undo\",\n value: function _undo() {\n this._sketch.undo();\n\n this.setState({\n canUndo: this._sketch.canUndo(),\n canRedo: this._sketch.canRedo()\n });\n }\n }, {\n key: \"_redo\",\n value: function _redo() {\n this._sketch.redo();\n\n console.log(this._sketch);\n this.setState({\n canUndo: this._sketch.canUndo(),\n canRedo: this._sketch.canRedo()\n });\n }\n }, {\n key: \"_zoom_factor\",\n value: function _zoom_factor(factor) {\n this._sketch.zoom(factor);\n\n var zoom_factor = this.props.zoom;\n this.props.setProps({\n zoom: factor * zoom_factor\n });\n }\n }, {\n key: \"_zoom\",\n value: function _zoom() {\n this._sketch.zoom(1.25);\n\n var zoom_factor = this.props.zoom;\n this.props.setProps({\n zoom: 1.25 * zoom_factor\n });\n }\n }, {\n key: \"_unzoom\",\n value: function _unzoom() {\n this._sketch.zoom(0.8);\n\n var zoom_factor = this.props.zoom;\n this.props.setProps({\n zoom: 0.8 * zoom_factor\n });\n }\n }, {\n key: \"_pantool\",\n value: function _pantool() {\n this.props.setProps({\n tool: \"pan\"\n });\n }\n }, {\n key: \"_penciltool\",\n value: function _penciltool() {\n this.props.setProps({\n tool: \"pencil\"\n });\n }\n }, {\n key: \"_linetool\",\n value: function _linetool() {\n this.props.setProps({\n tool: \"line\"\n });\n }\n }, {\n key: \"_rectangletool\",\n value: function _rectangletool() {\n this.props.setProps({\n tool: \"rectangle\"\n });\n }\n }, {\n key: \"_selecttool\",\n value: function _selecttool() {\n this.props.setProps({\n tool: \"select\"\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var toolsArray = {};\n toolsArray[\"pencil\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Pencil;\n toolsArray[\"pan\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Pan;\n toolsArray[\"line\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Line;\n toolsArray[\"circle\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Circle;\n toolsArray[\"select\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Select;\n toolsArray[\"rectangle\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Rectangle;\n var hide_buttons = this.props.hide_buttons;\n var show_line = !hide_buttons.includes(\"line\");\n var show_pan = !hide_buttons.includes(\"pan\");\n var show_zoom = !hide_buttons.includes(\"zoom\");\n var show_pencil = !hide_buttons.includes(\"pencil\");\n var show_undo = !hide_buttons.includes(\"undo\");\n var show_select = !hide_buttons.includes(\"select\");\n var show_rectangle = !hide_buttons.includes(\"rectangle\");\n var width_defined = this.props.width > 0;\n var width = width_defined ? this.props.width : null;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: this.props.className\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"SketchField\"], {\n name: \"sketch\",\n ref: function ref(c) {\n return _this4._sketch = c;\n },\n tool: toolsArray[this.props.tool.toLowerCase()],\n lineColor: this.props.lineColor,\n width: width,\n height: this.state.height,\n forceValue: true,\n backgroundColor: \"#ccddff\",\n lineWidth: this.props.lineWidth\n }), show_zoom && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Zoom in\",\n onClick: function onClick(e) {\n return _this4._zoom();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"ZoomPlusIcon\"], null)), show_zoom && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Zoom out\",\n onClick: function onClick(e) {\n return _this4._unzoom();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"ZoomMinusIcon\"], null)), show_pencil && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Pencil tool\",\n onClick: function onClick(e) {\n return _this4._penciltool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"EditIcon\"], null)), show_line && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Line tool\",\n onClick: function onClick(e) {\n return _this4._linetool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"PlotLineIcon\"], null)), show_rectangle && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Rectangle tool\",\n onClick: function onClick(e) {\n return _this4._rectangletool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"SquareIcon\"], null)), show_pan && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Pan\",\n onClick: function onClick(e) {\n return _this4._pantool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"PanIcon\"], null)), show_undo && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Undo\",\n onClick: function onClick(e) {\n return _this4._undo();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"ArrowLeftIcon\"], null)), show_undo && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Redo\",\n onClick: function onClick(e) {\n return _this4._redo();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"ArrowRightIcon\"], null)), show_select && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Select\",\n onClick: function onClick(e) {\n return _this4._selecttool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"TagOutlineIcon\"], null)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.textbutton,\n title: \"Save\",\n onClick: function onClick(e) {\n return _this4._save();\n }\n }, this.props.goButtonTitle));\n }\n }]);\n\n return DashCanvas;\n}(react__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\n\nDashCanvas.defaultProps = _components_DashCanvas_react__WEBPACK_IMPORTED_MODULE_3__[\"defaultProps\"];\nDashCanvas.propTypes = _components_DashCanvas_react__WEBPACK_IMPORTED_MODULE_3__[\"propTypes\"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kYXNoX2NhbnZhcy8uL3NyYy9saWIvZnJhZ21lbnRzL0Rhc2hDYW52YXMucmVhY3QuanM/YWMwMiJdLCJuYW1lcyI6WyJzdHlsZXMiLCJidXR0b24iLCJtYXJnaW4iLCJwYWRkaW5nIiwid2lkdGgiLCJoZWlnaHQiLCJ2ZXJ0aWNhbEFsaWduIiwidGV4dGJ1dHRvbiIsImNvbG9yIiwiRGFzaENhbnZhcyIsInByb3BzIiwic3RhdGUiLCJfc2F2ZSIsImJpbmQiLCJfdW5kbyIsIl96b29tIiwiX3pvb21fZmFjdG9yIiwiX3Vuem9vbSIsIl9wYW50b29sIiwiX3BlbmNpbHRvb2wiLCJfbGluZXRvb2wiLCJfc2VsZWN0dG9vbCIsInNrZXRjaCIsIl9za2V0Y2giLCJmaWxlbmFtZSIsImxlbmd0aCIsImltYWdlX2NvbnRlbnQiLCJjb250ZW50IiwiaW1nIiwiSW1hZ2UiLCJvbmxvYWQiLCJuZXdfaGVpZ2h0IiwibmV3X3NjYWxlIiwiTWF0aCIsInJvdW5kIiwic2V0U3RhdGUiLCJjbGVhciIsIm9wdHMiLCJsZWZ0IiwidG9wIiwic2NhbGUiLCJhZGRJbWciLCJzcmMiLCJfZmMiLCJzZXRCYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmV2UHJvcHMiLCJzZXRQcm9wcyIsIkpTT05fc3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsInRvSlNPTiIsImpzb25fZGF0YSIsInNldFpvb20iLCJ6b29tIiwidG9nZ2xlX3ZhbHVlIiwidHJpZ2dlciIsInVuZG8iLCJjYW5VbmRvIiwiY2FuUmVkbyIsInJlZG8iLCJjb25zb2xlIiwibG9nIiwiZmFjdG9yIiwiem9vbV9mYWN0b3IiLCJ0b29sIiwidG9vbHNBcnJheSIsIlRvb2xzIiwiUGVuY2lsIiwiUGFuIiwiTGluZSIsIkNpcmNsZSIsIlNlbGVjdCIsIlJlY3RhbmdsZSIsImhpZGVfYnV0dG9ucyIsInNob3dfbGluZSIsImluY2x1ZGVzIiwic2hvd19wYW4iLCJzaG93X3pvb20iLCJzaG93X3BlbmNpbCIsInNob3dfdW5kbyIsInNob3dfc2VsZWN0Iiwic2hvd19yZWN0YW5nbGUiLCJ3aWR0aF9kZWZpbmVkIiwiY2xhc3NOYW1lIiwiYyIsInRvTG93ZXJDYXNlIiwibGluZUNvbG9yIiwibGluZVdpZHRoIiwiZSIsIl9yZWN0YW5nbGV0b29sIiwiX3JlZG8iLCJnb0J1dHRvblRpdGxlIiwiQ29tcG9uZW50IiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQU1BO0FBRUEsSUFBTUEsTUFBTSxHQUFHO0FBQ2RDLFFBQU0sRUFBRTtBQUNQQyxVQUFNLEVBQUUsS0FERDtBQUVQQyxXQUFPLEVBQUUsS0FGRjtBQUdQQyxTQUFLLEVBQUUsTUFIQTtBQUlQQyxVQUFNLEVBQUUsTUFKRDtBQUtQQyxpQkFBYSxFQUFFO0FBTFIsR0FETTtBQVNkQyxZQUFVO0FBQ1RELGlCQUFhLEVBQUUsS0FETjtBQUVURCxVQUFNLEVBQUUsTUFGQztBQUdURyxTQUFLLEVBQUU7QUFIRSxzQkFJTSxRQUpOO0FBVEksQ0FBZjtBQWlCQTs7Ozs7SUFJcUJDLFU7Ozs7O0FBQ3BCLHNCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7O0FBQ2xCLG9GQUFNQSxLQUFOO0FBQ0EsVUFBS0MsS0FBTCxHQUFhO0FBQ1pOLFlBQU0sRUFBRTtBQURJLEtBQWI7QUFHQSxVQUFLTyxLQUFMLEdBQWEsTUFBS0EsS0FBTCxDQUFXQyxJQUFYLCtCQUFiO0FBQ0EsVUFBS0MsS0FBTCxHQUFhLE1BQUtBLEtBQUwsQ0FBV0QsSUFBWCwrQkFBYjtBQUNBLFVBQUtFLEtBQUwsR0FBYSxNQUFLQSxLQUFMLENBQVdGLElBQVgsK0JBQWI7QUFDQSxVQUFLRyxZQUFMLEdBQW9CLE1BQUtBLFlBQUwsQ0FBa0JILElBQWxCLCtCQUFwQjtBQUNBLFVBQUtJLE9BQUwsR0FBZSxNQUFLQSxPQUFMLENBQWFKLElBQWIsK0JBQWY7QUFDQSxVQUFLSyxR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SyxFQUFFaEYsTUFBTSxDQUFDQyxNQUF0QjtBQUNDLGFBQUssRUFBQyxNQURQO0FBRUMsZUFBTyxFQUFFLGlCQUFDd0YsQ0FBRDtBQUFBLGlCQUFPLE1BQUksQ0FBQzNFLEtBQUwsRUFBUDtBQUFBO0FBRlYsU0FHQywyREFBQywwREFBRCxPQUhELENBckRGLEVBMkRFa0UsU0FBUyxJQUNUO0FBQVEsYUFBSyxFQUFFaEYsTUFBTSxDQUFDQyxNQUF0QjtBQUNDLGFBQUssRUFBQyxNQURQO0FBRUMsZUFBTyxFQUFFLGlCQUFDd0YsQ0FBRDtBQUFBLGlCQUFPLE1BQUksQ0FBQ0UsS0FBTCxFQUFQO0FBQUE7QUFGVixTQUdDLDJEQUFDLDJEQUFELE9BSEQsQ0E1REYsRUFrRUVWLFdBQVcsSUFDWDtBQUFRLGFBQUssRUFBRWpGLE1BQU0sQ0FBQ0MsTUFBdEI7QUFDQyxhQUFLLEVBQUMsUUFEUDtBQUVDLGVBQU8sRUFBRSxpQkFBQ3dGLENBQUQ7QUFBQSxpQkFBTyxNQUFJLENBQUNwRSxXQUFMLEVBQVA7QUFBQTtBQUZWLFNBR0MsMkRBQUMsMkRBQUQsT0FIRCxDQW5FRixFQTBFQztBQUFRLGFBQUssRUFBRXJCLE1BQU0sQ0FBQ08sVUFBdEI7QUFDQyxhQUFLLEVBQUMsTUFEUDtBQUVDLGVBQU8sRUFBRSxpQkFBQ2tGLENBQUQ7QUFBQSxpQkFBTyxNQUFJLENBQUM3RSxLQUFMLEVBQVA7QUFBQTtBQUZWLFNBR0UsS0FBS0YsS0FBTCxDQUFXa0YsYUFIYixDQTFFRCxDQUREO0FBb0ZBOzs7O0VBalFzQ0MsK0M7OztBQW9ReENwRixVQUFVLENBQUNxRixZQUFYLEdBQTBCQSx5RUFBMUI7QUFDQXJGLFVBQVUsQ0FBQ3NGLFNBQVgsR0FBdUJBLHNFQUF2QiIsImZpbGUiOiIuL3NyYy9saWIvZnJhZ21lbnRzL0Rhc2hDYW52YXMucmVhY3QuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2tldGNoRmllbGQsIFRvb2xzIH0gZnJvbSAncmVhY3Qtc2tldGNoJztcbmltcG9ydCB7XG5cdFpvb21NaW51c0ljb24sIFpvb21QbHVzSWNvbiwgRWRpdEljb24sIFBhbkljb24sXG5cdEFycm93TGVmdEljb24sIEFycm93UmlnaHRJY29uLCBQbG90TGluZUljb24sIFNxdWFyZUljb24sIFRhZ091dGxpbmVJY29uXG59XG5cdGZyb20gJ3Bsb3RseS1pY29ucyc7XG5cbmltcG9ydCB7IHByb3BUeXBlcywgZGVmYXVsdFByb3BzIH0gZnJvbSAnLi4vY29tcG9uZW50cy9EYXNoQ2FudmFzLnJlYWN0JztcblxuY29uc3Qgc3R5bGVzID0ge1xuXHRidXR0b246IHtcblx0XHRtYXJnaW46ICczcHgnLFxuXHRcdHBhZGRpbmc6ICcwcHgnLFxuXHRcdHdpZHRoOiAnNTBweCcsXG5cdFx0aGVpZ2h0OiAnNTBweCcsXG5cdFx0dmVydGljYWxBbGlnbjogJ21pZGRsZScsXG5cdH0sXG5cblx0dGV4dGJ1dHRvbjoge1xuXHRcdHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuXHRcdGhlaWdodDogJzUwcHgnLFxuXHRcdGNvbG9yOiAnYmx1ZScsXG5cdFx0dmVydGljYWxBbGlnbjogJ21pZGRsZScsXG5cdH1cbn07XG5cbi8qKlxuICogQ2FudmFzIGNvbXBvbmVudCBmb3IgZHJhd2luZyBvbiBhIGJhY2tncm91bmQgaW1hZ2UgYW5kIHNlbGVjdGluZ1xuICogcmVnaW9ucy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGFzaENhbnZhcyBleHRlbmRzIENvbXBvbmVudCB7XG5cdGNvbnN0cnVjdG9yKHByb3BzKSB7XG5cdFx0c3VwZXIocHJvcHMpO1xuXHRcdHRoaXMuc3RhdGUgPSB7XG5cdFx0XHRoZWlnaHQ6IDIwMFxuXHRcdH07XG5cdFx0dGhpcy5fc2F2ZSA9IHRoaXMuX3NhdmUuYmluZCh0aGlzKTtcblx0XHR0aGlzLl91bmRvID0gdGhpcy5fdW5kby5iaW5kKHRoaXMpO1xuXHRcdHRoaXMuX3pvb20gPSB0aGlzLl96b29tLmJpbmQodGhpcyk7XG5cdFx0dGhpcy5fem9vbV9mYWN0b3IgPSB0aGlzLl96b29tX2ZhY3Rvci5iaW5kKHRoaXMpO1xuXHRcdHRoaXMuX3Vuem9vbSA9IHRoaXMuX3Vuem9vbS5iaW5kKHRoaXMpO1xuXHRcdHRoaXMuX3BhbnRvb2wgPSB0aGlzLl9wYW50b29sLmJpbmQodGhpcyk7XG5cdFx0dGhpcy5fcGVuY2lsdG9vbCA9IHRoaXMuX3BlbmNpbHRvb2wuYmluZCh0aGlzKTtcblx0XHR0aGlzLl9saW5ldG9vbCA9IHRoaXMuX2xpbmV0b29sLmJpbmQodGhpcyk7XG5cdFx0dGhpcy5fc2VsZWN0dG9vbCA9IHRoaXMuX3NlbGVjdHRvb2wuYmluZCh0aGlzKTtcblx0fVxuXG5cblx0Y29tcG9uZW50RGlkTW91bnQoKSB7XG5cdFx0bGV0IHNrZXRjaCA9IHRoaXMuX3NrZXRjaDtcblx0XHRpZiAodGhpcy5wcm9wcy5maWxlbmFtZS5sZW5ndGggPiAwIHx8XG5cdFx0XHR0aGlzLnByb3BzLmltYWdlX2NvbnRlbnQubGVuZ3RoID4gMCkge1xuXHRcdFx0dmFyIGNvbnRlbnQgPSAodGhpcy5wcm9wcy5maWxlbmFtZS5sZW5ndGggPiAwKSA/IHRoaXMucHJvcHMuZmlsZW5hbWUgOlxuXHRcdFx0XHR0aGlzLnByb3BzLmltYWdlX2NvbnRlbnQ7XG5cdFx0XHR2YXIgaW1nID0gbmV3IEltYWdlKCk7XG5cdFx0XHRpbWcub25sb2FkID0gKCkgPT4ge1xuXHRcdFx0XHR2YXIgbmV3X2hlaWdodCA9IHRoaXMuc3RhdGUuaGVpZ2h0O1xuXHRcdFx0XHR2YXIgbmV3X3NjYWxlID0gMTtcblx0XHRcdFx0dmFyIGhlaWdodCA9IGltZy5oZWlnaHQ7XG5cdFx0XHRcdHZhciB3aWR0aCA9IGltZy53aWR0aDtcblx0XHRcdFx0bmV3X2hlaWdodCA9IE1hdGgucm91bmQoaGVpZ2h0ICogc2tldGNoLnByb3BzLndpZHRoIC8gd2lkdGgpO1xuXHRcdFx0XHRuZXdfc2NhbGUgPSBuZXdfaGVpZ2h0IC8gaGVpZ2h0O1xuXHRcdFx0XHR0aGlzLnNldFN0YXRlKHsgaGVpZ2h0OiBuZXdfaGVpZ2h0IH0pO1xuXHRcdFx0XHRza2V0Y2guY2xlYXIoKTtcblx0XHRcdFx0bGV0IG9wdHMgPSB7XG5cdFx0XHRcdFx0bGVmdDogMCxcblx0XHRcdFx0XHR0b3A6IDAsXG5cdFx0XHRcdFx0c2NhbGU6IG5ld19zY2FsZVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNrZXRjaC5hZGRJbWcoY29udGVudCwgb3B0cyk7XG5cdFx0XHR9XG5cdFx0XHRpbWcuc3JjID0gY29udGVudDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c2tldGNoLl9mYy5zZXRCYWNrZ3JvdW5kQ29sb3Ioc2tldGNoLnByb3BzLmJhY2tncm91bmRDb2xvcik7XG5cdFx0fVxuXHR9XG5cblxuXHRjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG5cdFx0bGV0IHNrZXRjaCA9IHRoaXMuX3NrZXRjaDtcblx0XHQvLyBUeXBpY2FsIHVzYWdlIChkb24ndCBmb3JnZXQgdG8gY29tcGFyZSBwcm9wcyk6XG5cdFx0aWYgKFxuXHRcdFx0KHRoaXMucHJvcHMuaW1hZ2VfY29udGVudCAhPT0gcHJldlByb3BzLmltYWdlX2NvbnRlbnQpKSB7XG5cdFx0XHR2YXIgaW1nID0gbmV3IEltYWdlKCk7XG5cdFx0XHR2YXIgbmV3X2hlaWdodCA9IHRoaXMuc3RhdGUuaGVpZ2h0O1xuXHRcdFx0dmFyIG5ld19zY2FsZSA9IDE7XG5cdFx0XHRpbWcub25sb2FkID0gKCkgPT4ge1xuXHRcdFx0XHR2YXIgaGVpZ2h0ID0gaW1nLmhlaWdodDtcblx0XHRcdFx0dmFyIHdpZHRoID0gaW1nLndpZHRoO1xuXHRcdFx0XHRuZXdfaGVpZ2h0ID0gTWF0aC5yb3VuZChoZWlnaHQgKiBza2V0Y2gucHJvcHMud2lkdGggLyB3aWR0aCk7XG5cdFx0XHRcdG5ld19zY2FsZSA9IG5ld19oZWlnaHQgLyBoZWlnaHQ7XG5cdFx0XHRcdHRoaXMuc2V0U3RhdGUoeyBoZWlnaHQ6IG5ld19oZWlnaHQgfSk7XG5cdFx0XHRcdHNrZXRjaC5jbGVhcigpO1xuXHRcdFx0XHRsZXQgb3B0cyA9IHtcblx0XHRcdFx0XHRsZWZ0OiAwLFxuXHRcdFx0XHRcdHRvcDogMCxcblx0XHRcdFx0XHRzY2FsZTogbmV3X3NjYWxlXG5cdFx0XHRcdH1cblx0XHRcdFx0c2tldGNoLmFkZEltZyh0aGlzLnByb3BzLmltYWdlX2NvbnRlbnQsIG9wdHMpO1xuXHRcdFx0fVxuXHRcdFx0aW1nLnNyYyA9IHRoaXMucHJvcHMuaW1hZ2VfY29udGVudDtcblx0XHRcdGlmICh0aGlzLnByb3BzLnNldFByb3BzKSB7XG5cdFx0XHRcdGxldCBKU09OX3N0cmluZyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuX3NrZXRjaC50b0pTT04oKSk7XG5cdFx0XHRcdHRoaXMucHJvcHMuc2V0UHJvcHMoeyBqc29uX2RhdGE6IEpTT05fc3RyaW5nIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRza2V0Y2guX2ZjLnNldFpvb20odGhpcy5wcm9wcy56b29tKTtcblx0XHR9O1xuXHR9O1xuXG5cblx0X3NhdmUoKSB7XG5cdFx0bGV0IEpTT05fc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fc2tldGNoLnRvSlNPTigpKTtcblx0XHRsZXQgdG9nZ2xlX3ZhbHVlID0gdGhpcy5wcm9wcy50cmlnZ2VyICsgMVxuXHRcdGlmICh0aGlzLnByb3BzLnNldFByb3BzKSB7XG5cdFx0XHR0aGlzLnByb3BzLnNldFByb3BzKHsganNvbl9kYXRhOiBKU09OX3N0cmluZywgdHJpZ2dlcjogdG9nZ2xlX3ZhbHVlIH0pO1xuXHRcdH1cblx0fTtcblxuXG5cdF91bmRvKCkge1xuXHRcdHRoaXMuX3NrZXRjaC51bmRvKCk7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRjYW5VbmRvOiB0aGlzLl9za2V0Y2guY2FuVW5kbygpLFxuXHRcdFx0Y2FuUmVkbzogdGhpcy5fc2tldGNoLmNhblJlZG8oKVxuXHRcdH0pXG5cdH07XG5cdF9yZWRvKCkge1xuXHRcdHRoaXMuX3NrZXRjaC5yZWRvKCk7XG5cdFx0Y29uc29sZS5sb2codGhpcy5fc2tldGNoKTtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdGNhblVuZG86IHRoaXMuX3NrZXRjaC5jYW5VbmRvKCksXG5cdFx0XHRjYW5SZWRvOiB0aGlzLl9za2V0Y2guY2FuUmVkbygpXG5cdFx0fSlcblx0fTtcblxuXHRfem9vbV9mYWN0b3IoZmFjdG9yKSB7XG5cdFx0dGhpcy5fc2tldGNoLnpvb20oZmFjdG9yKTtcblx0XHRsZXQgem9vbV9mYWN0b3IgPSB0aGlzLnByb3BzLnpvb207XG5cdFx0dGhpcy5wcm9wcy5zZXRQcm9wcyh7IHpvb206IGZhY3RvciAqIHpvb21fZmFjdG9yIH0pXG5cdH07XG5cblxuXHRfem9vbSgpIHtcblx0XHR0aGlzLl9za2V0Y2guem9vbSgxLjI1KTtcblx0XHRsZXQgem9vbV9mYWN0b3IgPSB0aGlzLnByb3BzLnpvb207XG5cdFx0dGhpcy5wcm9wcy5zZXRQcm9wcyh7IHpvb206IDEuMjUgKiB6b29tX2ZhY3RvciB9KVxuXHR9O1xuXG5cblx0X3Vuem9vbSgpIHtcblx0XHR0aGlzLl9za2V0Y2guem9vbSgwLjgpO1xuXHRcdGxldCB6b29tX2ZhY3RvciA9IHRoaXMucHJvcHMuem9vbTtcblx0XHR0aGlzLnByb3BzLnNldFByb3BzKHsgem9vbTogMC44ICogem9vbV9mYWN0b3IgfSk7XG5cdH07XG5cblxuXHRfcGFudG9vbCgpIHtcblx0XHR0aGlzLnByb3BzLnNldFByb3BzKHsgdG9vbDogXCJwYW5cIiB9KTtcblx0fTtcblxuXG5cdF9wZW5jaWx0b29sKCkge1xuXHRcdHRoaXMucHJvcHMuc2V0UHJvcHMoeyB0b29sOiBcInBlbmNpbFwiIH0pO1xuXHR9O1xuXG5cblx0X2xpbmV0b29sKCkge1xuXHRcdHRoaXMucHJvcHMuc2V0UHJvcHMoeyB0b29sOiBcImxpbmVcIiB9KTtcblx0fTtcblxuXG5cdF9yZWN0YW5nbGV0b29sKCkge1xuXHRcdHRoaXMucHJvcHMuc2V0UHJvcHMoeyB0b29sOiBcInJlY3RhbmdsZVwiIH0pO1xuXHR9O1xuXG5cblxuXHRfc2VsZWN0dG9vbCgpIHtcblx0XHR0aGlzLnByb3BzLnNldFByb3BzKHsgdG9vbDogXCJzZWxlY3RcIiB9KTtcblx0fTtcblxuXG5cblxuXHRyZW5kZXIoKSB7XG5cdFx0dmFyIHRvb2xzQXJyYXkgPSB7fTtcblx0XHR0b29sc0FycmF5W1wicGVuY2lsXCJdID0gVG9vbHMuUGVuY2lsO1xuXHRcdHRvb2xzQXJyYXlbXCJwYW5cIl0gPSBUb29scy5QYW47XG5cdFx0dG9vbHNBcnJheVtcImxpbmVcIl0gPSBUb29scy5MaW5lO1xuXHRcdHRvb2xzQXJyYXlbXCJjaXJjbGVcIl0gPSBUb29scy5DaXJjbGU7XG5cdFx0dG9vbHNBcnJheVtcInNlbGVjdFwiXSA9IFRvb2xzLlNlbGVjdDtcblx0XHR0b29sc0FycmF5W1wicmVjdGFuZ2xlXCJdID0gVG9vbHMuUmVjdGFuZ2xlO1xuXHRcdGNvbnN0IGhpZGVfYnV0dG9ucyA9IHRoaXMucHJvcHMuaGlkZV9idXR0b25zO1xuXHRcdGNvbnN0IHNob3dfbGluZSA9ICEoaGlkZV9idXR0b25zLmluY2x1ZGVzKFwibGluZVwiKSk7XG5cdFx0Y29uc3Qgc2hvd19wYW4gPSAhKGhpZGVfYnV0dG9ucy5pbmNsdWRlcyhcInBhblwiKSk7XG5cdFx0Y29uc3Qgc2hvd196b29tID0gIShoaWRlX2J1dHRvbnMuaW5jbHVkZXMoXCJ6b29tXCIpKTtcblx0XHRjb25zdCBzaG93X3BlbmNpbCA9ICEoaGlkZV9idXR0b25zLmluY2x1ZGVzKFwicGVuY2lsXCIpKTtcblx0XHRjb25zdCBzaG93X3VuZG8gPSAhKGhpZGVfYnV0dG9ucy5pbmNsdWRlcyhcInVuZG9cIikpO1xuXHRcdGNvbnN0IHNob3dfc2VsZWN0ID0gIShoaWRlX2J1dHRvbnMuaW5jbHVkZXMoXCJzZWxlY3RcIikpO1xuXHRcdGNvbnN0IHNob3dfcmVjdGFuZ2xlID0gIShoaWRlX2J1dHRvbnMuaW5jbHVkZXMoXCJyZWN0YW5nbGVcIikpO1xuXHRcdHZhciB3aWR0aF9kZWZpbmVkID0gdGhpcy5wcm9wcy53aWR0aCA+IDA7XG5cdFx0dmFyIHdpZHRoID0gd2lkdGhfZGVmaW5lZCA/IHRoaXMucHJvcHMud2lkdGggOiBudWxsO1xuXHRcdHJldHVybiAoXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT17dGhpcy5wcm9wcy5jbGFzc05hbWV9PlxuXHRcdFx0XHQ8U2tldGNoRmllbGQgbmFtZT0nc2tldGNoJ1xuXHRcdFx0XHRcdHJlZj17KGMpID0+IHRoaXMuX3NrZXRjaCA9IGN9XG5cdFx0XHRcdFx0dG9vbD17dG9vbHNBcnJheVt0aGlzLnByb3BzLnRvb2wudG9Mb3dlckNhc2UoKV19XG5cdFx0XHRcdFx0bGluZUNvbG9yPXt0aGlzLnByb3BzLmxpbmVDb2xvcn1cblx0XHRcdFx0XHR3aWR0aD17d2lkdGh9XG5cdFx0XHRcdFx0aGVpZ2h0PXt0aGlzLnN0YXRlLmhlaWdodH1cblx0XHRcdFx0XHRmb3JjZVZhbHVlPXt0cnVlfVxuXHRcdFx0XHRcdGJhY2tncm91bmRDb2xvcj0nI2NjZGRmZidcblx0XHRcdFx0XHRsaW5lV2lkdGg9e3RoaXMucHJvcHMubGluZVdpZHRofSAvPlxuXHRcdFx0XHR7c2hvd196b29tICYmXG5cdFx0XHRcdFx0PGJ1dHRvbiBzdHlsZT17c3R5bGVzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdHRpdGxlPVwiWm9vbSBpblwiXG5cdFx0XHRcdFx0XHRvbkNsaWNrPXsoZSkgPT4gdGhpcy5fem9vbSgpfT5cblx0XHRcdFx0XHRcdDxab29tUGx1c0ljb24gLz5cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0fVxuXHRcdFx0XHR7c2hvd196b29tICYmXG5cdFx0XHRcdFx0PGJ1dHRvbiBzdHlsZT17c3R5bGVzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdHRpdGxlPVwiWm9vbSBvdXRcIlxuXHRcdFx0XHRcdFx0b25DbGljaz17KGUpID0+IHRoaXMuX3Vuem9vbSgpfT5cblx0XHRcdFx0XHRcdDxab29tTWludXNJY29uIC8+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdH1cblx0XHRcdFx0e3Nob3dfcGVuY2lsICYmXG5cdFx0XHRcdFx0PGJ1dHRvbiBzdHlsZT17c3R5bGVzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdHRpdGxlPVwiUGVuY2lsIHRvb2xcIlxuXHRcdFx0XHRcdFx0b25DbGljaz17KGUpID0+IHRoaXMuX3BlbmNpbHRvb2woKX0+XG5cdFx0XHRcdFx0XHQ8RWRpdEljb24gLz5cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0fVxuXHRcdFx0XHR7c2hvd19saW5lICYmXG5cdFx0XHRcdFx0PGJ1dHRvbiBzdHlsZT17c3R5bGVzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdHRpdGxlPVwiTGluZSB0b29sXCJcblx0XHRcdFx0XHRcdG9uQ2xpY2s9eyhlKSA9PiB0aGlzLl9saW5ldG9vbCgpfT5cblx0XHRcdFx0XHRcdDxQbG90TGluZUljb24gLz5cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0fVxuXHRcdFx0XHR7c2hvd19yZWN0YW5nbGUgJiZcblx0XHRcdFx0XHQ8YnV0dG9uIHN0eWxlPXtzdHlsZXMuYnV0dG9ufVxuXHRcdFx0XHRcdFx0dGl0bGU9XCJSZWN0YW5nbGUgdG9vbFwiXG5cdFx0XHRcdFx0XHRvbkNsaWNrPXsoZSkgPT4gdGhpcy5fcmVjdGFuZ2xldG9vbCgpfT5cblx0XHRcdFx0XHRcdDxTcXVhcmVJY29uIC8+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdH1cblx0XHRcdFx0e3Nob3dfcGFuICYmXG5cdFx0XHRcdFx0PGJ1dHRvbiBzdHlsZT17c3R5bGVzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdHRpdGxlPVwiUGFuXCJcblx0XHRcdFx0XHRcdG9uQ2xpY2s9eyhlKSA9PiB0aGlzLl9wYW50b29sKCl9PlxuXHRcdFx0XHRcdFx0PFBhbkljb24gLz5cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0fVxuXHRcdFx0XHR7c2hvd191bmRvICYmXG5cdFx0XHRcdFx0PGJ1dHRvbiBzdHlsZT17c3R5bGVzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdHRpdGxlPVwiVW5kb1wiXG5cdFx0XHRcdFx0XHRvbkNsaWNrPXsoZSkgPT4gdGhpcy5fdW5kbygpfT5cblx0XHRcdFx0XHRcdDxBcnJvd0xlZnRJY29uIC8+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdH1cblx0XHRcdFx0e3Nob3dfdW5kbyAmJlxuXHRcdFx0XHRcdDxidXR0b24gc3R5bGU9e3N0eWxlcy5idXR0b259XG5cdFx0XHRcdFx0XHR0aXRsZT1cIlJlZG9cIlxuXHRcdFx0XHRcdFx0b25DbGljaz17KGUpID0+IHRoaXMuX3JlZG8oKX0+XG5cdFx0XHRcdFx0XHQ8QXJyb3dSaWdodEljb24gLz5cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0fVxuXHRcdFx0XHR7c2hvd19zZWxlY3QgJiZcblx0XHRcdFx0XHQ8YnV0dG9uIHN0eWxlPXtzdHlsZXMuYnV0dG9ufVxuXHRcdFx0XHRcdFx0dGl0bGU9XCJTZWxlY3RcIlxuXHRcdFx0XHRcdFx0b25DbGljaz17KGUpID0+IHRoaXMuX3NlbGVjdHRvb2woKX0+XG5cdFx0XHRcdFx0XHQ8VGFnT3V0bGluZUljb24gLz5cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0fVxuXG5cdFx0XHRcdDxidXR0b24gc3R5bGU9e3N0eWxlcy50ZXh0YnV0dG9ufVxuXHRcdFx0XHRcdHRpdGxlPVwiU2F2ZVwiXG5cdFx0XHRcdFx0b25DbGljaz17KGUpID0+IHRoaXMuX3NhdmUoKX0+XG5cdFx0XHRcdFx0e3RoaXMucHJvcHMuZ29CdXR0b25UaXRsZX1cblx0XHRcdFx0PC9idXR0b24+XG5cblx0XHRcdDwvZGl2PlxuXG5cdFx0KVxuXHR9XG59XG5cbkRhc2hDYW52YXMuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzO1xuRGFzaENhbnZhcy5wcm9wVHlwZXMgPSBwcm9wVHlwZXM7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/lib/fragments/DashCanvas.react.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return DashCanvas; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_sketch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-sketch */ \"./node_modules/react-sketch/lib/index.js\");\n/* harmony import */ var react_sketch__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_sketch__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var plotly_icons__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! plotly-icons */ \"./node_modules/plotly-icons/lib/index.js\");\n/* harmony import */ var plotly_icons__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(plotly_icons__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_DashCanvas_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/DashCanvas.react */ \"./src/lib/components/DashCanvas.react.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\nvar styles = {\n button: {\n margin: '3px',\n padding: '0px',\n width: '50px',\n height: '50px',\n verticalAlign: 'middle'\n },\n textbutton: _defineProperty({\n verticalAlign: 'top',\n height: '50px',\n color: 'blue'\n }, \"verticalAlign\", 'middle')\n};\n/**\n * Canvas component for drawing on a background image and selecting\n * regions.\n */\n\nvar DashCanvas =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(DashCanvas, _Component);\n\n function DashCanvas(props) {\n var _this;\n\n _classCallCheck(this, DashCanvas);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(DashCanvas).call(this, props));\n _this.state = {\n height: 200\n };\n _this._save = _this._save.bind(_assertThisInitialized(_this));\n _this._undo = _this._undo.bind(_assertThisInitialized(_this));\n _this._zoom = _this._zoom.bind(_assertThisInitialized(_this));\n _this._zoom_factor = _this._zoom_factor.bind(_assertThisInitialized(_this));\n _this._unzoom = _this._unzoom.bind(_assertThisInitialized(_this));\n _this._pantool = _this._pantool.bind(_assertThisInitialized(_this));\n _this._penciltool = _this._penciltool.bind(_assertThisInitialized(_this));\n _this._linetool = _this._linetool.bind(_assertThisInitialized(_this));\n _this._selecttool = _this._selecttool.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(DashCanvas, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n var sketch = this._sketch;\n\n if (this.props.filename.length > 0 || this.props.image_content.length > 0) {\n var content = this.props.filename.length > 0 ? this.props.filename : this.props.image_content;\n var img = new Image();\n\n img.onload = function () {\n var new_height = _this2.state.height;\n var new_scale = 1;\n var height = img.height;\n var width = img.width;\n new_height = Math.round(height * sketch.props.width / width);\n new_scale = new_height / height;\n\n _this2.setState({\n height: new_height\n });\n\n sketch.clear();\n var opts = {\n left: 0,\n top: 0,\n scale: new_scale\n };\n sketch.addImg(content, opts);\n };\n\n img.src = content;\n } else {\n sketch._fc.setBackgroundColor(sketch.props.backgroundColor);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this3 = this;\n\n var sketch = this._sketch; // Typical usage (don't forget to compare props):\n\n if (this.props.image_content !== prevProps.image_content) {\n var img = new Image();\n var new_height = this.state.height;\n var new_scale = 1;\n\n img.onload = function () {\n var height = img.height;\n var width = img.width;\n new_height = Math.round(height * sketch.props.width / width);\n new_scale = new_height / height;\n\n _this3.setState({\n height: new_height\n });\n\n sketch.clear();\n var opts = {\n left: 0,\n top: 0,\n scale: new_scale\n };\n sketch.addImg(_this3.props.image_content, opts);\n };\n\n img.src = this.props.image_content;\n\n if (this.props.setProps) {\n var JSON_string = JSON.stringify(this._sketch.toJSON());\n this.props.setProps({\n json_data: JSON_string\n });\n }\n\n sketch._fc.setZoom(this.props.zoom);\n }\n\n ;\n\n if (this.props.json_objects !== prevProps.json_objects) {\n if (this.props.add_only) {\n this._sketch.fromJSON({\n 'objects': sketch.toJSON().objects.concat(JSON.parse(this.props.json_objects))\n });\n } else {\n this._sketch.fromJSON(this.props.json_objects);\n }\n\n ;\n }\n\n ;\n }\n }, {\n key: \"_save\",\n value: function _save() {\n var JSON_string = JSON.stringify(this._sketch.toJSON());\n var toggle_value = this.props.trigger + 1;\n\n if (this.props.setProps) {\n this.props.setProps({\n json_data: JSON_string,\n trigger: toggle_value\n });\n }\n }\n }, {\n key: \"_undo\",\n value: function _undo() {\n this._sketch.undo();\n\n this.setState({\n canUndo: this._sketch.canUndo(),\n canRedo: this._sketch.canRedo()\n });\n }\n }, {\n key: \"_redo\",\n value: function _redo() {\n this._sketch.redo();\n\n this.setState({\n canUndo: this._sketch.canUndo(),\n canRedo: this._sketch.canRedo()\n });\n }\n }, {\n key: \"_zoom_factor\",\n value: function _zoom_factor(factor) {\n this._sketch.zoom(factor);\n\n var zoom_factor = this.props.zoom;\n this.props.setProps({\n zoom: factor * zoom_factor\n });\n }\n }, {\n key: \"_zoom\",\n value: function _zoom() {\n this._sketch.zoom(1.25);\n\n var zoom_factor = this.props.zoom;\n this.props.setProps({\n zoom: 1.25 * zoom_factor\n });\n }\n }, {\n key: \"_unzoom\",\n value: function _unzoom() {\n this._sketch.zoom(0.8);\n\n var zoom_factor = this.props.zoom;\n this.props.setProps({\n zoom: 0.8 * zoom_factor\n });\n }\n }, {\n key: \"_pantool\",\n value: function _pantool() {\n this.props.setProps({\n tool: \"pan\"\n });\n }\n }, {\n key: \"_penciltool\",\n value: function _penciltool() {\n this.props.setProps({\n tool: \"pencil\"\n });\n }\n }, {\n key: \"_linetool\",\n value: function _linetool() {\n this.props.setProps({\n tool: \"line\"\n });\n }\n }, {\n key: \"_rectangletool\",\n value: function _rectangletool() {\n this.props.setProps({\n tool: \"rectangle\"\n });\n }\n }, {\n key: \"_selecttool\",\n value: function _selecttool() {\n this.props.setProps({\n tool: \"select\"\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var toolsArray = {};\n toolsArray[\"pencil\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Pencil;\n toolsArray[\"pan\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Pan;\n toolsArray[\"line\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Line;\n toolsArray[\"circle\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Circle;\n toolsArray[\"select\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Select;\n toolsArray[\"rectangle\"] = react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"Tools\"].Rectangle;\n var hide_buttons = this.props.hide_buttons;\n var show_line = !hide_buttons.includes(\"line\");\n var show_pan = !hide_buttons.includes(\"pan\");\n var show_zoom = !hide_buttons.includes(\"zoom\");\n var show_pencil = !hide_buttons.includes(\"pencil\");\n var show_undo = !hide_buttons.includes(\"undo\");\n var show_select = !hide_buttons.includes(\"select\");\n var show_rectangle = !hide_buttons.includes(\"rectangle\");\n var width_defined = this.props.width > 0;\n var width = width_defined ? this.props.width : null;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: this.props.className\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_sketch__WEBPACK_IMPORTED_MODULE_1__[\"SketchField\"], {\n name: \"sketch\",\n ref: function ref(c) {\n return _this4._sketch = c;\n },\n tool: toolsArray[this.props.tool.toLowerCase()],\n lineColor: this.props.lineColor,\n width: width,\n height: this.state.height,\n forceValue: true,\n backgroundColor: \"#ccddff\",\n lineWidth: this.props.lineWidth\n }), show_zoom && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Zoom in\",\n onClick: function onClick(e) {\n return _this4._zoom();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"ZoomPlusIcon\"], null)), show_zoom && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Zoom out\",\n onClick: function onClick(e) {\n return _this4._unzoom();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"ZoomMinusIcon\"], null)), show_pencil && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Pencil tool\",\n onClick: function onClick(e) {\n return _this4._penciltool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"EditIcon\"], null)), show_line && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Line tool\",\n onClick: function onClick(e) {\n return _this4._linetool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"PlotLineIcon\"], null)), show_rectangle && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Rectangle tool\",\n onClick: function onClick(e) {\n return _this4._rectangletool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"SquareIcon\"], null)), show_pan && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Pan\",\n onClick: function onClick(e) {\n return _this4._pantool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"PanIcon\"], null)), show_undo && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Undo\",\n onClick: function onClick(e) {\n return _this4._undo();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"ArrowLeftIcon\"], null)), show_undo && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Redo\",\n onClick: function onClick(e) {\n return _this4._redo();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"ArrowRightIcon\"], null)), show_select && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.button,\n title: \"Select\",\n onClick: function onClick(e) {\n return _this4._selecttool();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(plotly_icons__WEBPACK_IMPORTED_MODULE_2__[\"TagOutlineIcon\"], null)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n style: styles.textbutton,\n title: \"Save\",\n onClick: function onClick(e) {\n return _this4._save();\n }\n }, this.props.goButtonTitle));\n }\n }]);\n\n return DashCanvas;\n}(react__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\n\nDashCanvas.defaultProps = _components_DashCanvas_react__WEBPACK_IMPORTED_MODULE_3__[\"defaultProps\"];\nDashCanvas.propTypes = _components_DashCanvas_react__WEBPACK_IMPORTED_MODULE_3__[\"propTypes\"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9kYXNoX2NhbnZhcy8uL3NyYy9saWIvZnJhZ21lbnRzL0Rhc2hDYW52YXMucmVhY3QuanM/YWMwMiJdLCJuYW1lcyI6WyJzdHlsZXMiLCJidXR0b24iLCJtYXJnaW4iLCJwYWRkaW5nIiwid2lkdGgiLCJoZWlnaHQiLCJ2ZXJ0aWNhbEFsaWduIiwidGV4dGJ1dHRvbiIsImNvbG9yIiwiRGFzaENhbnZhcyIsInByb3BzIiwic3RhdGUiLCJfc2F2ZSIsImJpbmQiLCJfdW5kbyIsIl96b29tIiwiX3pvb21fZmFjdG9yIiwiX3Vuem9vbSIsIl9wYW50b29sIiwiX3BlbmNpbHRvb2wiLCJfbGluZXRvb2wiLCJfc2VsZWN0dG9vbCIsInNrZXRjaCIsIl9za2V0Y2giLCJmaWxlbmFtZSIsImxlbmd0aCIsImltYWdlX2NvbnRlbnQiLCJjb250ZW50IiwiaW1nIiwiSW1hZ2UiLCJvbmxvYWQiLCJuZXdfaGVpZ2h0IiwibmV3X3NjYWxlIiwiTWF0aCIsInJvdW5kIiwic2V0U3RhdGUiLCJjbGVhciIsIm9wdHMiLCJsZWZ0IiwidG9wIiwic2NhbGUiLCJhZGRJbWciLCJzcmMiLCJfZmMiLCJzZXRCYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwcmV2UHJvcHMiLCJzZXRQcm9wcyIsIkpTT05fc3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsInRvSlNPTiIsImpzb25fZGF0YSIsInNldFpvb20iLCJ6b29tIiwianNvbl9vYmplY3RzIiwiYWRkX29ubHkiLCJmcm9tSlNPTiIsIm9iamVjdHMiLCJjb25jYXQiLCJwYXJzZSIsInRvZ2dsZV92YWx1ZSIsInRyaWdnZXIiLCJ1bmRvIiwiY2FuVW5kbyIsImNhblJlZG8iLCJyZWRvIiwiZmFjdG9yIiwiem9vbV9mYWN0b3IiLCJ0b29sIiwidG9vbHNBcnJheSIsIlRvb2xzIiwiUGVuY2lsIiwiUGFuIiwiTGluZSIsIkNpcmNsZSIsIlNlbGVjdCIsIlJlY3RhbmdsZSIsImhpZGVfYnV0dG9ucyIsInNob3dfbGluZSIsImluY2x1ZGVzIiwic2hvd19wYW4iLCJzaG93X3pvb20iLCJzaG93X3BlbmNpbCIsInNob3dfdW5kbyIsInNob3dfc2VsZWN0Iiwic2hvd19yZWN0YW5nbGUiLCJ3aWR0aF9kZWZpbmVkIiwiY2xhc3NOYW1lIiwiYyIsInRvTG93ZXJDYXNlIiwibGluZUNvbG9yIiwibGluZVdpZHRoIiwiZSIsIl9yZWN0YW5nbGV0b29sIiwiX3JlZG8iLCJnb0J1dHRvblRpdGxlIiwiQ29tcG9uZW50IiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQU1BO0FBRUEsSUFBTUEsTUFBTSxHQUFHO0FBQ2RDLFFBQU0sRUFBRTtBQUNQQyxVQUFNLEVBQUUsS0FERDtBQUVQQyxXQUFPLEVBQUUsS0FGRjtBQUdQQyxTQUFLLEVBQUUsTUFIQTtBQUlQQyxVQUFNLEVBQUUsTUFKRDtBQUtQQyxpQkFBYSxFQUFFO0FBTFIsR0FETTtBQVNkQyxZQUFVO0FBQ1RELGlCQUFhLEVBQUUsS0FETjtBQUVURCxVQUFNLEVBQUUsTUFGQztBQUdURyxTQUFLLEVBQUU7QUFIRSxzQkFJTSxRQUpOO0FBVEksQ0FBZjtBQWlCQTs7Ozs7SUFJcUJDLFU7Ozs7O0FBQ3BCLHNCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7O0FBQ2xCLG9GQUFNQSxLQUFOO0FBQ0EsVUFBS0MsS0FBTCxHQUFhO0FBQ1pOLFlBQU0sRUFBRTtBQURJLEtBQWI7QUFHQSxVQUFLTyxLQUFMLEdBQWEsTUFBS0EsS0FBTCxDQUFXQyxJQUFYLCtCQUFiO0FBQ0EsVUFBS0MsS0FBTCxHQUFhLE1BQUtBLEtBQUwsQ0FBV0QsSUFBWCwrQkFBYjtBQUNBLFVBQUtFLEtBQUwsR0FBYSxNQUFLQSxLQUFMLENBQVdGLElBQVgsK0JBQWI7QUFDQSxVQUFLRyxZQUFMLEdBQW9CLE1BQUtBLFlBQUwsQ0FBa0JILElBQWxCLCtCQUFwQjtBQUNBLFVBQUtJLE9BQUwsR0FBZSxNQUFLQSxPQUFMLENBQWFKLElBQWIsK0JBQWY7QUFDQSxVQUFLSyxRQUFMLEdBQWdCLE1BQUtBLFFBQUwsQ0FBY0wsSUFBZCwrQkFBaEI7QUFDQSxVQUFLTSxXQUFMLEdBQW1CLE1BQUtBLFdBQUwsQ0FBaUJOLElBQWpCLCtCQUFuQjtBQUNBLFVBQUtPLFNBQUwsR0FBaUIsTUFBS0EsU0FBTCxDQUFlUCxJQUFmLCtCQUFqQjtBQUNBLFVBQUtRLFdBQUwsR0FBbUIsTUFBS0EsV0FBTCxDQUFpQlIsSUFBakIsK0JBQW5CO0FBYmtCO0FBY2xCOzs7O3dDQUdtQjtBQUFBOztBQUNuQixVQUFJUyxNQUFNLEdBQUcsS0FBS0MsT0FBbEI7O0FBQ0EsVUFBSSxLQUFLYixLQUFMLENBQVdjLFFBQVgsQ0FBb0JDLE1BQXBCLEdBQTZCLENBQTdCLElBQ0gsS0FBS2YsS0FBTCxDQUFXZ0IsYUFBWCxDQUF5QkQsTUFBekIsR0FBa0MsQ0FEbkMsRUFDc0M7QUFDckMsWUFBSUUsT0FBTyxHQUFJLEtBQUtqQixLQUFMLENBQVdjLFFBQVgsQ0FBb0JDLE1BQXBCLEdBQTZCLENBQTlCLEdBQW1DLEtBQUtmLEtBQUwsQ0FBV2MsUUFBOUMsR0FDYixLQUFLZCxLQUFMLENBQVdnQixhQURaO0FBRUEsWUFBSUUsR0FBRyxHQUFHLElBQUlDLEtBQUosRUFBVjs7QUFDQUQsV0FBRyxDQUFDRSxNQUFKLEdBQWEsWUFBTTtBQUNsQixjQUFJQyxVQUFVLEdBQUcsTUFBSSxDQUFDcEIsS0FBTCxDQUFXTixNQUE1QjtBQUNBLGNBQUkyQixTQUFTLEdBQUcsQ0FBaEI7QUFDQSxjQUFJM0IsTUFBTSxHQUFHdUIsR0FBRyxDQUFDdkIsTUFBakI7QUFDQSxjQUFJRCxLQUFLLEdBQUd3QixHQUFHLENBQUN4QixLQUFoQjtBQUNBMkIsb0JBQVUsR0FBR0UsSUFBSSxDQUFDQyxLQUFMLENBQVc3QixNQUFNLEdBQUdpQixNQUFNLENBQUNaLEtBQVAsQ0FBYU4sS0FBdEIsR0FBOEJBLEtBQXpDLENBQWI7QUFDQTRCLG1CQUFTLEdBQUdELFVBQVUsR0FBRzFCLE1BQXpCOztBQUNBLGdCQUFJLENBQUM4QixRQUFMLENBQWM7QUFBRTlCLGtCQUFNLEVBQUUwQjtBQUFWLFdBQWQ7O0FBQ0FULGdCQUFNLENBQUNjLEtBQVA7QUFDQSxjQUFJQyxJQUFJLEdBQUc7QUFDVkMsZ0JBQUksRUFBRSxDQURJO0FBRVZDLGVBQUcsRUFBRSxDQUZLO0FBR1ZDLGlCQUFLLEVBQUVSO0FBSEcsV0FBWDtBQUtBVixnQkFBTSxDQUFDbUIsTUFBUCxDQUFjZCxPQUFkLEVBQXVCVSxJQUF2QjtBQUNBLFNBZkQ7O0FBZ0JBVCxXQUFHLENBQUNjLEdBQUosR0FBVWYsT0FBVjtBQUNBLE9BdEJELE1Bc0JPO0FBQ05MLGNBQU0sQ0FBQ3FCLEdBQVAsQ0FBV0Msa0JBQVgsQ0FBOEJ0QixNQUFNLENBQUNaLEtBQVAsQ0FBYW1DLGVBQTNDO0FBQ0E7QUFDRDs7O3VDQUdrQkMsUyxFQUFXO0FBQUE7O0FBQzdCLFVBQUl4QixNQUFNLEdBQUcsS0FBS0MsT0FBbEIsQ0FENkIsQ0FFN0I7O0FBQ0EsVUFDRSxLQUFLYixLQUFMLENBQVdnQixhQUFYLEtBQTZCb0IsU0FBUyxDQUFDcEIsYUFEekMsRUFDeUQ7QUFDeEQsWUFBSUUsR0FBRyxHQUFHLElBQUlDLEtBQUosRUFBVjtBQUNBLFlBQUlFLFVBQVUsR0FBRyxLQUFLcEIsS0FBTCxDQUFXTixNQUE1QjtBQUNBLFlBQUkyQixTQUFTLEdBQUcsQ0FBaEI7O0FBQ0FKLFdBQUcsQ0FBQ0UsTUFBSixHQUFhLFlBQU07QUFDbEIsY0FBSXpCLE1BQU0sR0FBR3VCLEdBQUcsQ0FBQ3ZCLE1BQWpCO0FBQ0EsY0FBSUQsS0FBSyxHQUFHd0IsR0FBRyxDQUFDeEIsS0FBaEI7QUFDQTJCLG9CQUFVLEdBQUdFLElBQUksQ0FBQ0MsS0FBTCxDQUFXN0IsTUFBTSxHQUFHaUIsTUFBTSxDQUFDWixLQUFQLENBQWFOLEtBQXRCLEdBQThCQSxLQUF6QyxDQUFiO0FBQ0E0QixtQkFBUyxHQUFHRCxVQUFVLEdBQUcxQixNQUF6Qjs7QUFDQSxnQkFBSSxDQUFDOEIsUUFBTCxDQUFjO0FBQUU5QixrQkFBTSxFQUFFMEI7QUFBVixXQUFkOztBQUNBVCxnQkFBTSxDQUFDYyxLQUFQO0FBQ0EsY0FBSUMsSUFBSSxHQUFHO0FBQ1ZDLGdCQUFJLEVBQUUsQ0FESTtBQUVWQyxlQUFHLEVBQUUsQ0FGSztBQUdWQyxpQkFBSyxFQUFFUjtBQUhHLFdBQVg7QUFLQVYsZ0JBQU0sQ0FBQ21CLE1BQVAsQ0FBYyxNQUFJLENBQUMvQixLQUFMLENBQVdnQixhQUF6QixFQUF3Q1csSUFBeEM7QUFDQSxTQWJEOztBQWNBVCxXQUFHLENBQUNjLEdBQUosR0FBVSxLQUFLaEMsS0FBTCxDQUFXZ0IsYUFBckI7O0FBQ0EsWUFBSSxLQUFLaEIsS0FBTCxDQUFXcUMsUUFBZixFQUF5QjtBQUN4QixjQUFJQyxXQUFXLEdBQUdDLElBQUksQ0FBQ0MsU0FBTCxDQUFlLEtBQUszQixPQUFMLENBQWE0QixNQUFiLEVBQWYsQ0FBbEI7QUFDQSxlQUFLekMsS0FBTCxDQUFXcUMsUUFBWCxDQUFvQjtBQUFFSyxxQkFBUyxFQUFFSjtBQUFiLFdBQXBCO0FBQ0E7O0FBRUQxQixjQUFNLENBQUNxQixHQUFQLENBQVdVLE9BQVgsQ0FBbUIsS0FBSzNDLEtBQUwsQ0FBVzRDLElBQTlCO0FBQ0E7O0FBQUE7O0FBRUQsVUFBSyxLQUFLNUMsS0FBTCxDQUFXNkMsWUFBWCxLQUE0QlQsU0FBUyxDQUFDUyxZQUEzQyxFQUEwRDtBQUN6RCxZQUFJLEtBQUs3QyxLQUFMLENBQVc4QyxRQUFmLEVBQXdCO0FBQ3BCLGVBQUtqQyxPQUFMLENBQWFrQyxRQUFiLENBQ0E7QUFDSCx1QkFBVW5DLE1BQU0sQ0FBQzZCLE1BQVAsR0FBZ0JPLE9BQWhCLENBQXdCQyxNQUF4QixDQUErQlYsSUFBSSxDQUFDVyxLQUFMLENBQVcsS0FBS2xELEtBQUwsQ0FBVzZDLFlBQXRCLENBQS9CO0FBRFAsV0FEQTtBQUlBLFNBTEosTUFLVTtBQUNOLGVBQUtoQyxPQUFMLENBQWFrQyxRQUFiLENBQ0gsS0FBSy9DLEtBQUwsQ0FBVzZDLFlBRFI7QUFFSDs7QUFBQTtBQUNEOztBQUFBO0FBR0Q7Ozs0QkFHTztBQUNQLFVBQUlQLFdBQVcsR0FBR0MsSUFBSSxDQUFDQyxTQUFMLENBQWUsS0FBSzNCLE9BQUwsQ0FBYTRCLE1BQWIsRUFBZixDQUFsQjtBQUNBLFVBQUlVLFlBQVksR0FBRyxLQUFLbkQsS0FBTCxDQUFXb0QsT0FBWCxHQUFxQixDQUF4Qzs7QUFDQSxVQUFJLEtBQUtwRCxLQUFMLENBQVdxQyxRQUFmLEVBQXlCO0FBQ3hCLGFBQUtyQyxLQUFMLENBQVdxQyxRQUFYLENBQW9CO0FBQUVLLG1CQUFTLEVBQUVKLFdBQWI7QUFBMEJjLGlCQUFPLEVBQUVEO0FBQW5DLFNBQXBCO0FBQ0E7QUFDRDs7OzRCQUdPO0FBQ1AsV0FBS3RDLE9BQUwsQ0FBYXdDLElBQWI7O0FBQ0EsV0FBSzVCLFFBQUwsQ0FBYztBQUNiNkIsZUFBTyxFQUFFLEtBQUt6QyxPQUFMLENBQWF5QyxPQUFiLEVBREk7QUFFYkMsZUFBTyxFQUFFLEtBQUsxQyxPQUFMLENBQWEwQyxPQUFiO0FBRkksT0FBZDtBQUlBOzs7NEJBQ087QUFDUCxXQUFLMUMsT0FBTCxDQUFhMkMsSUFBYjs7QUFDQSxXQUFLL0IsUUFBTCxDQUFjO0FBQ2I2QixlQUFPLEVBQUUsS0FBS3pDLE9BQUwsQ0FBYXlDLE9BQWIsRUFESTtBQUViQyxlQUFPLEVBQUUsS0FBSzFDLE9BQUwsQ0FBYTBDLE9BQWI7QUFGSSxPQUFkO0FBSUE7OztpQ0FFWUUsTSxFQUFRO0FBQ3BCLFdBQUs1QyxPQUFMLENBQWErQixJQUFiLENBQWtCYSxNQUFsQjs7QUFDQSxVQUFJQyxXQUFXLEdBQUcsS0FBSzFELEtBQUwsQ0FBVzRDLElBQTdCO0FBQ0EsV0FBSzVDLEtBQUwsQ0FBV3FDLFFBQVgsQ0FBb0I7QUFBRU8sWUFBSSxFQUFFYSxNQUFNLEdBQUdDO0FBQWpCLE9BQXBCO0FBQ0E7Ozs0QkFHTztBQUNQLFdBQUs3QyxPQUFMLENBQWErQixJQUFiLENBQWtCLElBQWxCOztBQUNBLFVBQUljLFdBQVcsR0FBRyxLQUFLMUQsS0FBTCxDQUFXNEMsSUFBN0I7QUFDQSxXQUFLNUMsS0FBTCxDQUFXcUMsUUFBWCxDQUFvQjtBQUFFTyxZQUFJLEVBQUUsT0FBT2M7QUFBZixPQUFwQjtBQUNBOzs7OEJBR1M7QUFDVCxXQUFLN0MsT0FBTCxDQUFhK0IsSUFBYixDQUFrQixHQUFsQjs7QUFDQSxVQUFJYyxXQUFXLEdBQUcsS0FBSzFELEtBQUwsQ0FBVzRDLElBQTdCO0FBQ0EsV0FBSzVDLEtBQUwsQ0FBV3FDLFFBQVgsQ0FBb0I7QUFBRU8sWUFBSSxFQUFFLE1BQU1jO0FBQWQsT0FBcEI7QUFDQTs7OytCQUdVO0FBQ1YsV0FBSzFELEtBQUwsQ0FBV3FDLFFBQVgsQ0FBb0I7QUFBRXNCLFlBQUksRUFBRTtBQUFSLE9BQXBCO0FBQ0E7OztrQ0FHYTtBQUNiLFdBQUszRCxLQUFMLENBQVdxQyxRQUFYLENBQW9CO0FBQUVzQixZQUFJLEVBQUU7QUFBUixPQUFwQjtBQUNBOzs7Z0NBR1c7QUFDWCxXQUFLM0QsS0FBTCxDQUFXcUMsUUFBWCxDQUFvQjtBQUFFc0IsWUFBSSxFQUFFO0FBQVIsT0FBcEI7QUFDQTs7O3FDQUdnQjtBQUNoQixXQUFLM0QsS0FBTCxDQUFXcUMsUUFBWCxDQUFvQjtBQUFFc0IsWUFBSSxFQUFFO0FBQVIsT0FBcEI7QUFDQTs7O2tDQUlhO0FBQ2IsV0FBSzNELEtBQUwsQ0FBV3FDLFFBQVgsQ0FBb0I7QUFBRXNCLFlBQUksRUFBRTtBQUFSLE9BQXBCO0FBQ0E7Ozs2QkFLUTtBQUFBOztBQUNSLFVBQUlDLFVBQVUsR0FBRyxFQUFqQjtBQUNBQSxnQkFBVSxDQUFDLFFBQUQsQ0FBVixHQUF1QkMsa0RBQUssQ0FBQ0MsTUFBN0I7QUFDQUYsZ0JBQVUsQ0FBQyxLQUFELENBQVYsR0FBb0JDLGtEQUFLLENBQUNFLEdBQTFCO0FBQ0FILGdCQUFVLENBQUMsTUFBRCxDQUFWLEdBQXFCQyxrREFBSyxDQUFDRyxJQUEzQjtBQUNBSixnQkFBVSxDQUFDLFFBQUQsQ0FBVixHQUF1QkMsa0RBQUssQ0FBQ0ksTUFBN0I7QUFDQUwsZ0JBQVUsQ0FBQyxRQUFELENBQVYsR0FBdUJDLGtEQUFLLENBQUNLLE1BQTdCO0FBQ0FOLGdCQUFVLENBQUMsV0FBRCxDQUFWLEdBQTBCQyxrREFBSyxDQUFDTSxTQUFoQztBQUNBLFVBQU1DLFlBQVksR0FBRyxLQUFLcEUsS0FBTCxDQUFXb0UsWUFBaEM7QUFDQSxVQUFNQyxTQUFTLEdBQUcsQ0FBRUQsWUFBWSxDQUFDRSxRQUFiLENBQXNCLE1BQXRCLENBQXBCO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLENBQUVILFlBQVksQ0FBQ0UsUUFBYixDQUFzQixLQUF0QixDQUFuQjtBQUNBLFVBQU1FLFNBQVMsR0FBRyxDQUFFSixZQUFZLENBQUNFLFFBQWIsQ0FBc0IsTUFBdEIsQ0FBcEI7QUFDQSxVQUFNRyxXQUFXLEdBQUcsQ0FBRUwsWUFBWSxDQUFDRSxRQUFiLENBQXNCLFFBQXRCLENBQXRCO0FBQ0EsVUFBTUksU0FBUyxHQUFHLENBQUVOLFlBQVksQ0FBQ0UsUUFBYixDQUFzQixNQUF0QixDQUFwQjtBQUNBLFVBQU1LLFdBQVcsR0FBRyxDQUFFUCxZQUFZLENBQUNFLFFBQWIsQ0FBc0IsUUFBdEIsQ0FBdEI7QUFDQSxVQUFNTSxjQUFjLEdBQUcsQ0FBRVIsWUFBWSxDQUFDRSxRQUFiLENBQXNCLFdBQXRCLENBQXpCO0FBQ0EsVUFBSU8sYUFBYSxHQUFHLEtBQUs3RSxLQUFMLENBQVdOLEtBQVgsR0FBbUIsQ0FBdkM7QUFDQSxVQUFJQSxLQUFLLEdBQUdtRixhQUFhLEdBQUcsS0FBSzdFLEtBQUwsQ0FBV04sS0FBZCxHQUFzQixJQUEvQztBQUNBLGFBQ0M7QUFBSyxpQkFBUyxFQUFFLEtBQUtNLEtBQUwsQ0FBVzhFO0FBQTNCLFNBQ0MsMkRBQUMsd0RBQUQ7QUFBYSxZQUFJLEVBQUMsUUFBbEI7QUFDQyxXQUFHLEVBQUUsYUFBQ0MsQ0FBRDtBQUFBLGlCQUFPLE1BQUksQ0FBQ2xFLE9BQUwsR0FBZWtFLENBQXRCO0FBQUEsU0FETjtBQUVDLFlBQUksRUFBRW5CLFVBQVUsQ0FBQyxLQUFLNUQsS0FBTCxDQUFXMkQsSUFBWCxDQUFnQnFCLFdBQWhCLEVBQUQsQ0FGakI7QUFHQyxpQkFBUyxFQUFFLEtBQUtoRixLQUFMLENBQVdpRixTQUh2QjtBQUlDLGFBQUssRUFBRXZGLEtBSlI7QUFLQyxjQUFNLEVBQUUsS0FBS08sS0FBTCxDQUFXTixNQUxwQjtBQU1DLGtCQUFVLEVBQUUsSUFOYjtBQU9DLHVCQUFlLEVBQUMsU0FQakI7QUFRQyxpQkFBUyxFQUFFLEtBQUtLLEtBQUwsQ0FBV2tGO0FBUnZCLFFBREQsRUFVRVYsU0FBUyxJQUNUO0FBQVEsYUFBSyxFQUFFbEYsTUFBTSxDQUFDQyxNQUF0QjtBQUNDLGFBQUssRUFBQyxTQURQO0FBRUMsZUFBTyxFQUFFLGlCQUFDNEYsQ0FBRDtBQUFBLGlCQUFPLE1BQUksQ0FBQzlFLEtBQUwsRUFBUDtBQUFBO0FBRlYsU0FHQywyREFBQyx5REFBRCxPQUhELENBWEYsRUFpQkVtRSxTQUFTLElBQ1Q7QUFBUSxhQUFLLEVBQUVsRixNQUFNLENBQUNDLE1BQXRCO0FBQ0MsYUFBSyxFQUFDLFVBRFA7QUFFQyxlQUFPLEVBQUUsaUJBQUM0RixDQUFEO0FBQUEsaUJBQU8sTUFBSSxDQUFDNUUsT0FBTCxFQUFQO0FBQUE7QUFGVixTQUdDLDJEQUFDLDBEQUFELE9BSEQsQ0FsQkYsRUF3QkVrRSxXQUFXLElBQ1g7QUFBUSxhQUFLLEVBQUVuRixNQUFNLENBQUNDLE1BQXRCO0FBQ0MsYUFBSyxFQUFDLGFBRFA7QUFFQyxlQUFPLEVBQUUsaUJBQUM0RixDQUFEO0FBQUEsaUJBQU8sTUFBSSxDQUFDMUUsV0FBTCxFQUFQO0FBQUE7QUFGVixTQUdDLDJEQUFDLHFEQUFELE9BSEQsQ0F6QkYsRUErQkU0RCxTQUFTLElBQ1Q7QUFBUSxhQUFLLEVBQUUvRSxNQUFNLENBQUNDLE1BQXRCO0FBQ0MsYUFBSyxFQUFDLFdBRFA7QUFFQyxlQUFPLEVBQUUsaUJBQUM0RixDQUFEO0FBQUEsaUJBQU8sTUFBSSxDQUFDekUsU0FBTCxFQUFQO0FBQUE7QUFGVixTQUdDLDJEQUFDLHlEQUFELE9BSEQsQ0FoQ0YsRUFzQ0VrRSxjQUFjLElBQ2Q7QUFBUSxhQUFLLEVBQUV0RixNQUFNLENBQUNDLE1BQXRCO0FBQ0MsYUFBSyxFQUFDLGdCQURQO0FBRUMsZUFBTyxFQUFFLGlCQUFDNEYsQ0FBRDtBQUFBLGlCQUFPLE1BQUksQ0FBQ0MsY0FBTCxFQUFQO0FBQUE7QUFGVixTQUdDLDJEQUFDLHVEQUFELE9BSEQsQ0F2Q0YsRUE2Q0ViLFFBQVEsSUFDUjtBQUFRLGFBQUssRUFBRWpGLE1BQU0sQ0FBQ0MsTUFBdEI7QUFDQyxhQUFLLEVBQUMsS0FEUDtBQUVDLGVBQU8sRUFBRSxpQkFBQzRGLENBQUQ7QUFBQSxpQkFBTyxNQUFJLENBQUMzRSxRQUFMLEVBQVA7QUFBQTtBQUZWLFNBR0MsMkRBQUMsb0RBQUQsT0FIRCxDQTlDRixFQW9ERWtFLFNBQVMsSUFDVDtBQUFRLGFBQUssRUFBRXBGLE1BQU0sQ0FBQ0MsTUFBdEI7QUFDQyxhQUFLLEVBQUMsTUFEUDtBQUVDLGVBQU8sRUFBRSxpQkFBQzRGLENBQUQ7QUFBQSxpQkFBTyxNQUFJLENBQUMvRSxLQUFMLEVBQVA7QUFBQTtBQUZWLFNBR0MsMkRBQUMsMERBQUQsT0FIRCxDQXJERixFQTJERXNFLFNBQVMsSUFDVDtBQUFRLGFBQUssRUFBRXBGLE1BQU0sQ0FBQ0MsTUFBdEI7QUFDQyxhQUFLLEVBQUMsTUFEUDtBQUVDLGVBQU8sRUFBRSxpQkFBQzRGLENBQUQ7QUFBQSxpQkFBTyxNQUFJLENBQUNFLEtBQUwsRUFBUDtBQUFBO0FBRlYsU0FHQywyREFBQywyREFBRCxPQUhELENBNURGLEVBa0VFVixXQUFXLElBQ1g7QUFBUSxhQUFLLEVBQUVyRixNQUFNLENBQUNDLE1BQXRCO0FBQ0MsYUFBSyxFQUFDLFFBRFA7QUFFQyxlQUFPLEVBQUUsaUJBQUM0RixDQUFEO0FBQUEsaUJBQU8sTUFBSSxDQUFDeEUsV0FBTCxFQUFQO0FBQUE7QUFGVixTQUdDLDJEQUFDLDJEQUFELE9BSEQsQ0FuRUYsRUEwRUM7QUFBUSxhQUFLLEVBQUVyQixNQUFNLENBQUNPLFVBQXRCO0FBQ0MsYUFBSyxFQUFDLE1BRFA7QUFFQyxlQUFPLEVBQUUsaUJBQUNzRixDQUFEO0FBQUEsaUJBQU8sTUFBSSxDQUFDakYsS0FBTCxFQUFQO0FBQUE7QUFGVixTQUdFLEtBQUtGLEtBQUwsQ0FBV3NGLGFBSGIsQ0ExRUQsQ0FERDtBQW9GQTs7OztFQTlRc0NDLCtDOzs7QUFpUnhDeEYsVUFBVSxDQUFDeUYsWUFBWCxHQUEwQkEseUVBQTFCO0FBQ0F6RixVQUFVLENBQUMwRixTQUFYLEdBQXVCQSxzRUFBdkIiLCJmaWxlIjoiLi9zcmMvbGliL2ZyYWdtZW50cy9EYXNoQ2FudmFzLnJlYWN0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IFNrZXRjaEZpZWxkLCBUb29scyB9IGZyb20gJ3JlYWN0LXNrZXRjaCc7XG5pbXBvcnQge1xuXHRab29tTWludXNJY29uLCBab29tUGx1c0ljb24sIEVkaXRJY29uLCBQYW5JY29uLFxuXHRBcnJvd0xlZnRJY29uLCBBcnJvd1JpZ2h0SWNvbiwgUGxvdExpbmVJY29uLCBTcXVhcmVJY29uLCBUYWdPdXRsaW5lSWNvblxufVxuXHRmcm9tICdwbG90bHktaWNvbnMnO1xuXG5pbXBvcnQgeyBwcm9wVHlwZXMsIGRlZmF1bHRQcm9wcyB9IGZyb20gJy4uL2NvbXBvbmVudHMvRGFzaENhbnZhcy5yZWFjdCc7XG5cbmNvbnN0IHN0eWxlcyA9IHtcblx0YnV0dG9uOiB7XG5cdFx0bWFyZ2luOiAnM3B4Jyxcblx0XHRwYWRkaW5nOiAnMHB4Jyxcblx0XHR3aWR0aDogJzUwcHgnLFxuXHRcdGhlaWdodDogJzUwcHgnLFxuXHRcdHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuXHR9LFxuXG5cdHRleHRidXR0b246IHtcblx0XHR2ZXJ0aWNhbEFsaWduOiAndG9wJyxcblx0XHRoZWlnaHQ6ICc1MHB4Jyxcblx0XHRjb2xvcjogJ2JsdWUnLFxuXHRcdHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuXHR9XG59O1xuXG4vKipcbiAqIENhbnZhcyBjb21wb25lbnQgZm9yIGRyYXdpbmcgb24gYSBiYWNrZ3JvdW5kIGltYWdlIGFuZCBzZWxlY3RpbmdcbiAqIHJlZ2lvbnMuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhc2hDYW52YXMgZXh0ZW5kcyBDb21wb25lbnQge1xuXHRjb25zdHJ1Y3Rvcihwcm9wcykge1xuXHRcdHN1cGVyKHByb3BzKTtcblx0XHR0aGlzLnN0YXRlID0ge1xuXHRcdFx0aGVpZ2h0OiAyMDBcblx0XHR9O1xuXHRcdHRoaXMuX3NhdmUgPSB0aGlzLl9zYXZlLmJpbmQodGhpcyk7XG5cdFx0dGhpcy5fdW5kbyA9IHRoaXMuX3VuZG8uYmluZCh0aGlzKTtcblx0XHR0aGlzLl96b29tID0gdGhpcy5fem9vbS5iaW5kKHRoaXMpO1xuXHRcdHRoaXMuX3pvb21fZmFjdG9yID0gdGhpcy5fem9vbV9mYWN0b3IuYmluZCh0aGlzKTtcblx0XHR0aGlzLl91bnpvb20gPSB0aGlzLl91bnpvb20uYmluZCh0aGlzKTtcblx0XHR0aGlzLl9wYW50b29sID0gdGhpcy5fcGFudG9vbC5iaW5kKHRoaXMpO1xuXHRcdHRoaXMuX3BlbmNpbHRvb2wgPSB0aGlzLl9wZW5jaWx0b29sLmJpbmQodGhpcyk7XG5cdFx0dGhpcy5fbGluZXRvb2wgPSB0aGlzLl9saW5ldG9vbC5iaW5kKHRoaXMpO1xuXHRcdHRoaXMuX3NlbGVjdHRvb2wgPSB0aGlzLl9zZWxlY3R0b29sLmJpbmQodGhpcyk7XG5cdH1cblxuXG5cdGNvbXBvbmVudERpZE1vdW50KCkge1xuXHRcdGxldCBza2V0Y2ggPSB0aGlzLl9za2V0Y2g7XG5cdFx0aWYgKHRoaXMucHJvcHMuZmlsZW5hbWUubGVuZ3RoID4gMCB8fFxuXHRcdFx0dGhpcy5wcm9wcy5pbWFnZV9jb250ZW50Lmxlbmd0aCA+IDApIHtcblx0XHRcdHZhciBjb250ZW50ID0gKHRoaXMucHJvcHMuZmlsZW5hbWUubGVuZ3RoID4gMCkgPyB0aGlzLnByb3BzLmZpbGVuYW1lIDpcblx0XHRcdFx0dGhpcy5wcm9wcy5pbWFnZV9jb250ZW50O1xuXHRcdFx0dmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuXHRcdFx0aW1nLm9ubG9hZCA9ICgpID0+IHtcblx0XHRcdFx0dmFyIG5ld19oZWlnaHQgPSB0aGlzLnN0YXRlLmhlaWdodDtcblx0XHRcdFx0dmFyIG5ld19zY2FsZSA9IDE7XG5cdFx0XHRcdHZhciBoZWlnaHQgPSBpbWcuaGVpZ2h0O1xuXHRcdFx0XHR2YXIgd2lkdGggPSBpbWcud2lkdGg7XG5cdFx0XHRcdG5ld19oZWlnaHQgPSBNYXRoLnJvdW5kKGhlaWdodCAqIHNrZXRjaC5wcm9wcy53aWR0aCAvIHdpZHRoKTtcblx0XHRcdFx0bmV3X3NjYWxlID0gbmV3X2hlaWdodCAvIGhlaWdodDtcblx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7IGhlaWdodDogbmV3X2hlaWdodCB9KTtcblx0XHRcdFx0c2tldGNoLmNsZWFyKCk7XG5cdFx0XHRcdGxldCBvcHRzID0ge1xuXHRcdFx0XHRcdGxlZnQ6IDAsXG5cdFx0XHRcdFx0dG9wOiAwLFxuXHRcdFx0XHRcdHNjYWxlOiBuZXdfc2NhbGVcblx0XHRcdFx0fVxuXHRcdFx0XHRza2V0Y2guYWRkSW1nKGNvbnRlbnQsIG9wdHMpO1xuXHRcdFx0fVxuXHRcdFx0aW1nLnNyYyA9IGNvbnRlbnQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNrZXRjaC5fZmMuc2V0QmFja2dyb3VuZENvbG9yKHNrZXRjaC5wcm9wcy5iYWNrZ3JvdW5kQ29sb3IpO1xuXHRcdH1cblx0fVxuXG5cblx0Y29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuXHRcdGxldCBza2V0Y2ggPSB0aGlzLl9za2V0Y2g7XG5cdFx0Ly8gVHlwaWNhbCB1c2FnZSAoZG9uJ3QgZm9yZ2V0IHRvIGNvbXBhcmUgcHJvcHMpOlxuXHRcdGlmIChcblx0XHRcdCh0aGlzLnByb3BzLmltYWdlX2NvbnRlbnQgIT09IHByZXZQcm9wcy5pbWFnZV9jb250ZW50KSkge1xuXHRcdFx0dmFyIGltZyA9IG5ldyBJbWFnZSgpO1xuXHRcdFx0dmFyIG5ld19oZWlnaHQgPSB0aGlzLnN0YXRlLmhlaWdodDtcblx0XHRcdHZhciBuZXdfc2NhbGUgPSAxO1xuXHRcdFx0aW1nLm9ubG9hZCA9ICgpID0+IHtcblx0XHRcdFx0dmFyIGhlaWdodCA9IGltZy5oZWlnaHQ7XG5cdFx0XHRcdHZhciB3aWR0aCA9IGltZy53aWR0aDtcblx0XHRcdFx0bmV3X2hlaWdodCA9IE1hdGgucm91bmQoaGVpZ2h0ICogc2tldGNoLnByb3BzLndpZHRoIC8gd2lkdGgpO1xuXHRcdFx0XHRuZXdfc2NhbGUgPSBuZXdfaGVpZ2h0IC8gaGVpZ2h0O1xuXHRcdFx0XHR0aGlzLnNldFN0YXRlKHsgaGVpZ2h0OiBuZXdfaGVpZ2h0IH0pO1xuXHRcdFx0XHRza2V0Y2guY2xlYXIoKTtcblx0XHRcdFx0bGV0IG9wdHMgPSB7XG5cdFx0XHRcdFx0bGVmdDogMCxcblx0XHRcdFx0XHR0b3A6IDAsXG5cdFx0XHRcdFx0c2NhbGU6IG5ld19zY2FsZVxuXHRcdFx0XHR9XG5cdFx0XHRcdHNrZXRjaC5hZGRJbWcodGhpcy5wcm9wcy5pbWFnZV9jb250ZW50LCBvcHRzKTtcblx0XHRcdH1cblx0XHRcdGltZy5zcmMgPSB0aGlzLnByb3BzLmltYWdlX2NvbnRlbnQ7XG5cdFx0XHRpZiAodGhpcy5wcm9wcy5zZXRQcm9wcykge1xuXHRcdFx0XHRsZXQgSlNPTl9zdHJpbmcgPSBKU09OLnN0cmluZ2lmeSh0aGlzLl9za2V0Y2gudG9KU09OKCkpO1xuXHRcdFx0XHR0aGlzLnByb3BzLnNldFByb3BzKHsganNvbl9kYXRhOiBKU09OX3N0cmluZyB9KTtcblx0XHRcdH1cblxuXHRcdFx0c2tldGNoLl9mYy5zZXRab29tKHRoaXMucHJvcHMuem9vbSk7XG5cdFx0fTtcblxuXHRcdGlmICgodGhpcy5wcm9wcy5qc29uX29iamVjdHMgIT09IHByZXZQcm9wcy5qc29uX29iamVjdHMpKSB7XG5cdFx0XHRpZiAodGhpcy5wcm9wcy5hZGRfb25seSl7XG5cdFx0XHQgICAgdGhpcy5fc2tldGNoLmZyb21KU09OKFxuXHRcdFx0ICAgIHtcblx0XHRcdFx0J29iamVjdHMnOnNrZXRjaC50b0pTT04oKS5vYmplY3RzLmNvbmNhdChKU09OLnBhcnNlKHRoaXMucHJvcHMuanNvbl9vYmplY3RzKSkgXG5cdFx0XHQgICAgfSk7XG5cdFx0ICAgIH0gZWxzZSB7XG5cdFx0XHQgICAgdGhpcy5fc2tldGNoLmZyb21KU09OKFxuXHRcdFx0XHR0aGlzLnByb3BzLmpzb25fb2JqZWN0cyk7XG5cdFx0XHR9O1xuXHRcdH07XG5cblxuXHR9O1xuXG5cblx0X3NhdmUoKSB7XG5cdFx0bGV0IEpTT05fc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fc2tldGNoLnRvSlNPTigpKTtcblx0XHRsZXQgdG9nZ2xlX3ZhbHVlID0gdGhpcy5wcm9wcy50cmlnZ2VyICsgMVxuXHRcdGlmICh0aGlzLnByb3BzLnNldFByb3BzKSB7XG5cdFx0XHR0aGlzLnByb3BzLnNldFByb3BzKHsganNvbl9kYXRhOiBKU09OX3N0cmluZywgdHJpZ2dlcjogdG9nZ2xlX3ZhbHVlIH0pO1xuXHRcdH1cblx0fTtcblxuXG5cdF91bmRvKCkge1xuXHRcdHRoaXMuX3NrZXRjaC51bmRvKCk7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRjYW5VbmRvOiB0aGlzLl9za2V0Y2guY2FuVW5kbygpLFxuXHRcdFx0Y2FuUmVkbzogdGhpcy5fc2tldGNoLmNhblJlZG8oKVxuXHRcdH0pXG5cdH07XG5cdF9yZWRvKCkge1xuXHRcdHRoaXMuX3NrZXRjaC5yZWRvKCk7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRjYW5VbmRvOiB0aGlzLl9za2V0Y2guY2FuVW5kbygpLFxuXHRcdFx0Y2FuUmVkbzogdGhpcy5fc2tldGNoLmNhblJlZG8oKVxuXHRcdH0pXG5cdH07XG5cblx0X3pvb21fZmFjdG9yKGZhY3Rvcikge1xuXHRcdHRoaXMuX3NrZXRjaC56b29tKGZhY3Rvcik7XG5cdFx0bGV0IHpvb21fZmFjdG9yID0gdGhpcy5wcm9wcy56b29tO1xuXHRcdHRoaXMucHJvcHMuc2V0UHJvcHMoeyB6b29tOiBmYWN0b3IgKiB6b29tX2ZhY3RvciB9KVxuXHR9O1xuXG5cblx0X3pvb20oKSB7XG5cdFx0dGhpcy5fc2tldGNoLnpvb20oMS4yNSk7XG5cdFx0bGV0IHpvb21fZmFjdG9yID0gdGhpcy5wcm9wcy56b29tO1xuXHRcdHRoaXMucHJvcHMuc2V0UHJvcHMoeyB6b29tOiAxLjI1ICogem9vbV9mYWN0b3IgfSlcblx0fTtcblxuXG5cdF91bnpvb20oKSB7XG5cdFx0dGhpcy5fc2tldGNoLnpvb20oMC44KTtcblx0XHRsZXQgem9vbV9mYWN0b3IgPSB0aGlzLnByb3BzLnpvb207XG5cdFx0dGhpcy5wcm9wcy5zZXRQcm9wcyh7IHpvb206IDAuOCAqIHpvb21fZmFjdG9yIH0pO1xuXHR9O1xuXG5cblx0X3BhbnRvb2woKSB7XG5cdFx0dGhpcy5wcm9wcy5zZXRQcm9wcyh7IHRvb2w6IFwicGFuXCIgfSk7XG5cdH07XG5cblxuXHRfcGVuY2lsdG9vbCgpIHtcblx0XHR0aGlzLnByb3BzLnNldFByb3BzKHsgdG9vbDogXCJwZW5jaWxcIiB9KTtcblx0fTtcblxuXG5cdF9saW5ldG9vbCgpIHtcblx0XHR0aGlzLnByb3BzLnNldFByb3BzKHsgdG9vbDogXCJsaW5lXCIgfSk7XG5cdH07XG5cblxuXHRfcmVjdGFuZ2xldG9vbCgpIHtcblx0XHR0aGlzLnByb3BzLnNldFByb3BzKHsgdG9vbDogXCJyZWN0YW5nbGVcIiB9KTtcblx0fTtcblxuXG5cblx0X3NlbGVjdHRvb2woKSB7XG5cdFx0dGhpcy5wcm9wcy5zZXRQcm9wcyh7IHRvb2w6IFwic2VsZWN0XCIgfSk7XG5cdH07XG5cblxuXG5cblx0cmVuZGVyKCkge1xuXHRcdHZhciB0b29sc0FycmF5ID0ge307XG5cdFx0dG9vbHNBcnJheVtcInBlbmNpbFwiXSA9IFRvb2xzLlBlbmNpbDtcblx0XHR0b29sc0FycmF5W1wicGFuXCJdID0gVG9vbHMuUGFuO1xuXHRcdHRvb2xzQXJyYXlbXCJsaW5lXCJdID0gVG9vbHMuTGluZTtcblx0XHR0b29sc0FycmF5W1wiY2lyY2xlXCJdID0gVG9vbHMuQ2lyY2xlO1xuXHRcdHRvb2xzQXJyYXlbXCJzZWxlY3RcIl0gPSBUb29scy5TZWxlY3Q7XG5cdFx0dG9vbHNBcnJheVtcInJlY3RhbmdsZVwiXSA9IFRvb2xzLlJlY3RhbmdsZTtcblx0XHRjb25zdCBoaWRlX2J1dHRvbnMgPSB0aGlzLnByb3BzLmhpZGVfYnV0dG9ucztcblx0XHRjb25zdCBzaG93X2xpbmUgPSAhKGhpZGVfYnV0dG9ucy5pbmNsdWRlcyhcImxpbmVcIikpO1xuXHRcdGNvbnN0IHNob3dfcGFuID0gIShoaWRlX2J1dHRvbnMuaW5jbHVkZXMoXCJwYW5cIikpO1xuXHRcdGNvbnN0IHNob3dfem9vbSA9ICEoaGlkZV9idXR0b25zLmluY2x1ZGVzKFwiem9vbVwiKSk7XG5cdFx0Y29uc3Qgc2hvd19wZW5jaWwgPSAhKGhpZGVfYnV0dG9ucy5pbmNsdWRlcyhcInBlbmNpbFwiKSk7XG5cdFx0Y29uc3Qgc2hvd191bmRvID0gIShoaWRlX2J1dHRvbnMuaW5jbHVkZXMoXCJ1bmRvXCIpKTtcblx0XHRjb25zdCBzaG93X3NlbGVjdCA9ICEoaGlkZV9idXR0b25zLmluY2x1ZGVzKFwic2VsZWN0XCIpKTtcblx0XHRjb25zdCBzaG93X3JlY3RhbmdsZSA9ICEoaGlkZV9idXR0b25zLmluY2x1ZGVzKFwicmVjdGFuZ2xlXCIpKTtcblx0XHR2YXIgd2lkdGhfZGVmaW5lZCA9IHRoaXMucHJvcHMud2lkdGggPiAwO1xuXHRcdHZhciB3aWR0aCA9IHdpZHRoX2RlZmluZWQgPyB0aGlzLnByb3BzLndpZHRoIDogbnVsbDtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PGRpdiBjbGFzc05hbWU9e3RoaXMucHJvcHMuY2xhc3NOYW1lfT5cblx0XHRcdFx0PFNrZXRjaEZpZWxkIG5hbWU9J3NrZXRjaCdcblx0XHRcdFx0XHRyZWY9eyhjKSA9PiB0aGlzLl9za2V0Y2ggPSBjfVxuXHRcdFx0XHRcdHRvb2w9e3Rvb2xzQXJyYXlbdGhpcy5wcm9wcy50b29sLnRvTG93ZXJDYXNlKCldfVxuXHRcdFx0XHRcdGxpbmVDb2xvcj17dGhpcy5wcm9wcy5saW5lQ29sb3J9XG5cdFx0XHRcdFx0d2lkdGg9e3dpZHRofVxuXHRcdFx0XHRcdGhlaWdodD17dGhpcy5zdGF0ZS5oZWlnaHR9XG5cdFx0XHRcdFx0Zm9yY2VWYWx1ZT17dHJ1ZX1cblx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I9JyNjY2RkZmYnXG5cdFx0XHRcdFx0bGluZVdpZHRoPXt0aGlzLnByb3BzLmxpbmVXaWR0aH0gLz5cblx0XHRcdFx0e3Nob3dfem9vbSAmJlxuXHRcdFx0XHRcdDxidXR0b24gc3R5bGU9e3N0eWxlcy5idXR0b259XG5cdFx0XHRcdFx0XHR0aXRsZT1cIlpvb20gaW5cIlxuXHRcdFx0XHRcdFx0b25DbGljaz17KGUpID0+IHRoaXMuX3pvb20oKX0+XG5cdFx0XHRcdFx0XHQ8Wm9vbVBsdXNJY29uIC8+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdH1cblx0XHRcdFx0e3Nob3dfem9vbSAmJlxuXHRcdFx0XHRcdDxidXR0b24gc3R5bGU9e3N0eWxlcy5idXR0b259XG5cdFx0XHRcdFx0XHR0aXRsZT1cIlpvb20gb3V0XCJcblx0XHRcdFx0XHRcdG9uQ2xpY2s9eyhlKSA9PiB0aGlzLl91bnpvb20oKX0+XG5cdFx0XHRcdFx0XHQ8Wm9vbU1pbnVzSWNvbiAvPlxuXHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHR9XG5cdFx0XHRcdHtzaG93X3BlbmNpbCAmJlxuXHRcdFx0XHRcdDxidXR0b24gc3R5bGU9e3N0eWxlcy5idXR0b259XG5cdFx0XHRcdFx0XHR0aXRsZT1cIlBlbmNpbCB0b29sXCJcblx0XHRcdFx0XHRcdG9uQ2xpY2s9eyhlKSA9PiB0aGlzLl9wZW5jaWx0b29sKCl9PlxuXHRcdFx0XHRcdFx0PEVkaXRJY29uIC8+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdH1cblx0XHRcdFx0e3Nob3dfbGluZSAmJlxuXHRcdFx0XHRcdDxidXR0b24gc3R5bGU9e3N0eWxlcy5idXR0b259XG5cdFx0XHRcdFx0XHR0aXRsZT1cIkxpbmUgdG9vbFwiXG5cdFx0XHRcdFx0XHRvbkNsaWNrPXsoZSkgPT4gdGhpcy5fbGluZXRvb2woKX0+XG5cdFx0XHRcdFx0XHQ8UGxvdExpbmVJY29uIC8+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdH1cblx0XHRcdFx0e3Nob3dfcmVjdGFuZ2xlICYmXG5cdFx0XHRcdFx0PGJ1dHRvbiBzdHlsZT17c3R5bGVzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdHRpdGxlPVwiUmVjdGFuZ2xlIHRvb2xcIlxuXHRcdFx0XHRcdFx0b25DbGljaz17KGUpID0+IHRoaXMuX3JlY3RhbmdsZXRvb2woKX0+XG5cdFx0XHRcdFx0XHQ8U3F1YXJlSWNvbiAvPlxuXHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHR9XG5cdFx0XHRcdHtzaG93X3BhbiAmJlxuXHRcdFx0XHRcdDxidXR0b24gc3R5bGU9e3N0eWxlcy5idXR0b259XG5cdFx0XHRcdFx0XHR0aXRsZT1cIlBhblwiXG5cdFx0XHRcdFx0XHRvbkNsaWNrPXsoZSkgPT4gdGhpcy5fcGFudG9vbCgpfT5cblx0XHRcdFx0XHRcdDxQYW5JY29uIC8+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdH1cblx0XHRcdFx0e3Nob3dfdW5kbyAmJlxuXHRcdFx0XHRcdDxidXR0b24gc3R5bGU9e3N0eWxlcy5idXR0b259XG5cdFx0XHRcdFx0XHR0aXRsZT1cIlVuZG9cIlxuXHRcdFx0XHRcdFx0b25DbGljaz17KGUpID0+IHRoaXMuX3VuZG8oKX0+XG5cdFx0XHRcdFx0XHQ8QXJyb3dMZWZ0SWNvbiAvPlxuXHRcdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0XHR9XG5cdFx0XHRcdHtzaG93X3VuZG8gJiZcblx0XHRcdFx0XHQ8YnV0dG9uIHN0eWxlPXtzdHlsZXMuYnV0dG9ufVxuXHRcdFx0XHRcdFx0dGl0bGU9XCJSZWRvXCJcblx0XHRcdFx0XHRcdG9uQ2xpY2s9eyhlKSA9PiB0aGlzLl9yZWRvKCl9PlxuXHRcdFx0XHRcdFx0PEFycm93UmlnaHRJY29uIC8+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdH1cblx0XHRcdFx0e3Nob3dfc2VsZWN0ICYmXG5cdFx0XHRcdFx0PGJ1dHRvbiBzdHlsZT17c3R5bGVzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdHRpdGxlPVwiU2VsZWN0XCJcblx0XHRcdFx0XHRcdG9uQ2xpY2s9eyhlKSA9PiB0aGlzLl9zZWxlY3R0b29sKCl9PlxuXHRcdFx0XHRcdFx0PFRhZ091dGxpbmVJY29uIC8+XG5cdFx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQ8YnV0dG9uIHN0eWxlPXtzdHlsZXMudGV4dGJ1dHRvbn1cblx0XHRcdFx0XHR0aXRsZT1cIlNhdmVcIlxuXHRcdFx0XHRcdG9uQ2xpY2s9eyhlKSA9PiB0aGlzLl9zYXZlKCl9PlxuXHRcdFx0XHRcdHt0aGlzLnByb3BzLmdvQnV0dG9uVGl0bGV9XG5cdFx0XHRcdDwvYnV0dG9uPlxuXG5cdFx0XHQ8L2Rpdj5cblxuXHRcdClcblx0fVxufVxuXG5EYXNoQ2FudmFzLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbkRhc2hDYW52YXMucHJvcFR5cGVzID0gcHJvcFR5cGVzO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/lib/fragments/DashCanvas.react.js\n"); /***/ }) diff --git a/dash_canvas/async~canvas.js b/dash_canvas/async~canvas.js index cb18819..f6b74ca 100644 --- a/dash_canvas/async~canvas.js +++ b/dash_canvas/async~canvas.js @@ -1,4 +1,4 @@ -(window.webpackJsonpdash_canvas=window.webpackJsonpdash_canvas||[]).push([[0],[,,,,,,function(t,e,r){"use strict";r.r(e),r.d(e,"default",(function(){return m}));var n=r(1),i=r.n(n),o=r(10),a=r(13),s=r(2);function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(t,e){for(var r=0;r0||this.props.image_content.length>0){var r=this.props.filename.length>0?this.props.filename:this.props.image_content,n=new Image;n.onload=function(){var i,o=t.state.height,a=n.height,s=n.width;i=(o=Math.round(a*e.props.width/s))/a,t.setState({height:o}),e.clear();var c={left:0,top:0,scale:i};e.addImg(r,c)},n.src=r}else e._fc.setBackgroundColor(e.props.backgroundColor)}},{key:"componentDidUpdate",value:function(t){var e=this,r=this._sketch;if(this.props.image_content!==t.image_content){var n=new Image,i=this.state.height,o=1;if(n.onload=function(){var t=n.height,a=n.width;i=Math.round(t*r.props.width/a),o=i/t,e.setState({height:i}),r.clear();var s={left:0,top:0,scale:o};r.addImg(e.props.image_content,s)},n.src=this.props.image_content,this.props.setProps){var a=JSON.stringify(this._sketch.toJSON());this.props.setProps({json_data:a})}r._fc.setZoom(this.props.zoom)}}},{key:"_save",value:function(){var t=JSON.stringify(this._sketch.toJSON()),e=this.props.trigger+1;this.props.setProps&&this.props.setProps({json_data:t,trigger:e})}},{key:"_undo",value:function(){this._sketch.undo(),this.setState({canUndo:this._sketch.canUndo(),canRedo:this._sketch.canRedo()})}},{key:"_redo",value:function(){this._sketch.redo(),console.log(this._sketch),this.setState({canUndo:this._sketch.canUndo(),canRedo:this._sketch.canRedo()})}},{key:"_zoom_factor",value:function(t){this._sketch.zoom(t);var e=this.props.zoom;this.props.setProps({zoom:t*e})}},{key:"_zoom",value:function(){this._sketch.zoom(1.25);var t=this.props.zoom;this.props.setProps({zoom:1.25*t})}},{key:"_unzoom",value:function(){this._sketch.zoom(.8);var t=this.props.zoom;this.props.setProps({zoom:.8*t})}},{key:"_pantool",value:function(){this.props.setProps({tool:"pan"})}},{key:"_penciltool",value:function(){this.props.setProps({tool:"pencil"})}},{key:"_linetool",value:function(){this.props.setProps({tool:"line"})}},{key:"_rectangletool",value:function(){this.props.setProps({tool:"rectangle"})}},{key:"_selecttool",value:function(){this.props.setProps({tool:"select"})}},{key:"render",value:function(){var t=this,e={};e.pencil=o.Tools.Pencil,e.pan=o.Tools.Pan,e.line=o.Tools.Line,e.circle=o.Tools.Circle,e.select=o.Tools.Select,e.rectangle=o.Tools.Rectangle;var r=this.props.hide_buttons,n=!r.includes("line"),s=!r.includes("pan"),c=!r.includes("zoom"),l=!r.includes("pencil"),h=!r.includes("undo"),u=!r.includes("select"),f=!r.includes("rectangle"),d=this.props.width>0?this.props.width:null;return i.a.createElement("div",{className:this.props.className},i.a.createElement(o.SketchField,{name:"sketch",ref:function(e){return t._sketch=e},tool:e[this.props.tool.toLowerCase()],lineColor:this.props.lineColor,width:d,height:this.state.height,forceValue:!0,backgroundColor:"#ccddff",lineWidth:this.props.lineWidth}),c&&i.a.createElement("button",{style:g.button,title:"Zoom in",onClick:function(e){return t._zoom()}},i.a.createElement(a.ZoomPlusIcon,null)),c&&i.a.createElement("button",{style:g.button,title:"Zoom out",onClick:function(e){return t._unzoom()}},i.a.createElement(a.ZoomMinusIcon,null)),l&&i.a.createElement("button",{style:g.button,title:"Pencil tool",onClick:function(e){return t._penciltool()}},i.a.createElement(a.EditIcon,null)),n&&i.a.createElement("button",{style:g.button,title:"Line tool",onClick:function(e){return t._linetool()}},i.a.createElement(a.PlotLineIcon,null)),f&&i.a.createElement("button",{style:g.button,title:"Rectangle tool",onClick:function(e){return t._rectangletool()}},i.a.createElement(a.SquareIcon,null)),s&&i.a.createElement("button",{style:g.button,title:"Pan",onClick:function(e){return t._pantool()}},i.a.createElement(a.PanIcon,null)),h&&i.a.createElement("button",{style:g.button,title:"Undo",onClick:function(e){return t._undo()}},i.a.createElement(a.ArrowLeftIcon,null)),h&&i.a.createElement("button",{style:g.button,title:"Redo",onClick:function(e){return t._redo()}},i.a.createElement(a.ArrowRightIcon,null)),u&&i.a.createElement("button",{style:g.button,title:"Select",onClick:function(e){return t._selecttool()}},i.a.createElement(a.TagOutlineIcon,null)),i.a.createElement("button",{style:g.textbutton,title:"Save",onClick:function(e){return t._save()}},this.props.goButtonTitle))}}])&&l(r.prototype,n),s&&l(r,s),e}(n.Component);m.defaultProps=s.b,m.propTypes=s.c},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=Object.assign||function(t){for(var e=1;e=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r}(t,["children","width","height","style"]);return i.default.createElement("svg",n({children:e,fill:"currentColor",preserveAspectRatio:"xMidYMid meet",height:o,width:r,style:s},c))};s.propTypes={children:o.default.node.isRequired,width:o.default.oneOfType([o.default.number,o.default.string]),height:o.default.oneOfType([o.default.number,o.default.string]),style:o.default.object},e.default=s},function(t,e,r){(function(t){var n=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,n,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,n,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(n,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r(11),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,r(9))},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(module,exports,__webpack_require__){(function(setImmediate,clearImmediate){var e;"undefined"!=typeof self&&self,e=function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=76)}([function(t,e){var r=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=r)},function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){var n=r(40)("wks"),i=r(28),o=r(4).Symbol,a="function"==typeof o;(t.exports=function(t){return n[t]||(n[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=n},function(t,e,r){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,e,r){"use strict";e.__esModule=!0;var n=function(t){return t&&t.__esModule?t:{default:t}}(r(135));e.default=function(){function t(t,e){for(var r=0;r1)for(var r=1;r0||this.props.image_content.length>0){var r=this.props.filename.length>0?this.props.filename:this.props.image_content,n=new Image;n.onload=function(){var i,o=t.state.height,a=n.height,s=n.width;i=(o=Math.round(a*e.props.width/s))/a,t.setState({height:o}),e.clear();var c={left:0,top:0,scale:i};e.addImg(r,c)},n.src=r}else e._fc.setBackgroundColor(e.props.backgroundColor)}},{key:"componentDidUpdate",value:function(t){var e=this,r=this._sketch;if(this.props.image_content!==t.image_content){var n=new Image,i=this.state.height,o=1;if(n.onload=function(){var t=n.height,a=n.width;i=Math.round(t*r.props.width/a),o=i/t,e.setState({height:i}),r.clear();var s={left:0,top:0,scale:o};r.addImg(e.props.image_content,s)},n.src=this.props.image_content,this.props.setProps){var a=JSON.stringify(this._sketch.toJSON());this.props.setProps({json_data:a})}r._fc.setZoom(this.props.zoom)}this.props.json_objects!==t.json_objects&&(this.props.add_only?this._sketch.fromJSON({objects:r.toJSON().objects.concat(JSON.parse(this.props.json_objects))}):this._sketch.fromJSON(this.props.json_objects))}},{key:"_save",value:function(){var t=JSON.stringify(this._sketch.toJSON()),e=this.props.trigger+1;this.props.setProps&&this.props.setProps({json_data:t,trigger:e})}},{key:"_undo",value:function(){this._sketch.undo(),this.setState({canUndo:this._sketch.canUndo(),canRedo:this._sketch.canRedo()})}},{key:"_redo",value:function(){this._sketch.redo(),this.setState({canUndo:this._sketch.canUndo(),canRedo:this._sketch.canRedo()})}},{key:"_zoom_factor",value:function(t){this._sketch.zoom(t);var e=this.props.zoom;this.props.setProps({zoom:t*e})}},{key:"_zoom",value:function(){this._sketch.zoom(1.25);var t=this.props.zoom;this.props.setProps({zoom:1.25*t})}},{key:"_unzoom",value:function(){this._sketch.zoom(.8);var t=this.props.zoom;this.props.setProps({zoom:.8*t})}},{key:"_pantool",value:function(){this.props.setProps({tool:"pan"})}},{key:"_penciltool",value:function(){this.props.setProps({tool:"pencil"})}},{key:"_linetool",value:function(){this.props.setProps({tool:"line"})}},{key:"_rectangletool",value:function(){this.props.setProps({tool:"rectangle"})}},{key:"_selecttool",value:function(){this.props.setProps({tool:"select"})}},{key:"render",value:function(){var t=this,e={};e.pencil=o.Tools.Pencil,e.pan=o.Tools.Pan,e.line=o.Tools.Line,e.circle=o.Tools.Circle,e.select=o.Tools.Select,e.rectangle=o.Tools.Rectangle;var r=this.props.hide_buttons,n=!r.includes("line"),s=!r.includes("pan"),c=!r.includes("zoom"),l=!r.includes("pencil"),h=!r.includes("undo"),u=!r.includes("select"),f=!r.includes("rectangle"),d=this.props.width>0?this.props.width:null;return i.a.createElement("div",{className:this.props.className},i.a.createElement(o.SketchField,{name:"sketch",ref:function(e){return t._sketch=e},tool:e[this.props.tool.toLowerCase()],lineColor:this.props.lineColor,width:d,height:this.state.height,forceValue:!0,backgroundColor:"#ccddff",lineWidth:this.props.lineWidth}),c&&i.a.createElement("button",{style:g.button,title:"Zoom in",onClick:function(e){return t._zoom()}},i.a.createElement(a.ZoomPlusIcon,null)),c&&i.a.createElement("button",{style:g.button,title:"Zoom out",onClick:function(e){return t._unzoom()}},i.a.createElement(a.ZoomMinusIcon,null)),l&&i.a.createElement("button",{style:g.button,title:"Pencil tool",onClick:function(e){return t._penciltool()}},i.a.createElement(a.EditIcon,null)),n&&i.a.createElement("button",{style:g.button,title:"Line tool",onClick:function(e){return t._linetool()}},i.a.createElement(a.PlotLineIcon,null)),f&&i.a.createElement("button",{style:g.button,title:"Rectangle tool",onClick:function(e){return t._rectangletool()}},i.a.createElement(a.SquareIcon,null)),s&&i.a.createElement("button",{style:g.button,title:"Pan",onClick:function(e){return t._pantool()}},i.a.createElement(a.PanIcon,null)),h&&i.a.createElement("button",{style:g.button,title:"Undo",onClick:function(e){return t._undo()}},i.a.createElement(a.ArrowLeftIcon,null)),h&&i.a.createElement("button",{style:g.button,title:"Redo",onClick:function(e){return t._redo()}},i.a.createElement(a.ArrowRightIcon,null)),u&&i.a.createElement("button",{style:g.button,title:"Select",onClick:function(e){return t._selecttool()}},i.a.createElement(a.TagOutlineIcon,null)),i.a.createElement("button",{style:g.textbutton,title:"Save",onClick:function(e){return t._save()}},this.props.goButtonTitle))}}])&&l(r.prototype,n),s&&l(r,s),e}(n.Component);m.defaultProps=s.b,m.propTypes=s.c},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=Object.assign||function(t){for(var e=1;e=0||Object.prototype.hasOwnProperty.call(t,n)&&(r[n]=t[n]);return r}(t,["children","width","height","style"]);return i.default.createElement("svg",n({children:e,fill:"currentColor",preserveAspectRatio:"xMidYMid meet",height:o,width:r,style:s},c))};s.propTypes={children:o.default.node.isRequired,width:o.default.oneOfType([o.default.number,o.default.string]),height:o.default.oneOfType([o.default.number,o.default.string]),style:o.default.object},e.default=s},function(t,e,r){(function(t){var n=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,n,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,n,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(n,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},r(11),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,r(9))},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(module,exports,__webpack_require__){(function(setImmediate,clearImmediate){var e;"undefined"!=typeof self&&self,e=function(){return function(t){function e(n){if(r[n])return r[n].exports;var i=r[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var r={};return e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurable:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=76)}([function(t,e){var r=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=r)},function(t,e){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){var n=r(40)("wks"),i=r(28),o=r(4).Symbol,a="function"==typeof o;(t.exports=function(t){return n[t]||(n[t]=a&&o[t]||(a?o:i)("Symbol."+t))}).store=n},function(t,e,r){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},function(t,e){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},function(t,e,r){"use strict";e.__esModule=!0;var n=function(t){return t&&t.__esModule?t:{default:t}}(r(135));e.default=function(){function t(t,e){for(var r=0;r1)for(var r=1;r