@pie-lib/editable-html-tip-tap 1.0.2 → 1.0.3
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.
- package/lib/components/CharacterPicker.js +221 -0
- package/lib/components/EditableHtml.js +323 -0
- package/lib/components/MenuBar.js +693 -0
- package/lib/components/TiptapContainer.js +90 -0
- package/lib/components/buttons/done-button.js +53 -0
- package/lib/components/characters/characterUtils.js +112 -0
- package/lib/components/characters/custom-popper.js +73 -0
- package/lib/components/common/done-button.js +53 -0
- package/lib/components/icons/CssIcon.js +37 -0
- package/lib/components/icons/RespArea.js +95 -0
- package/lib/components/icons/TableIcons.js +69 -0
- package/lib/components/icons/TextAlign.js +194 -0
- package/lib/components/icons/index.js +194 -0
- package/lib/components/image/ImageToolbar.js +16 -0
- package/lib/components/image/InsertImageHandler.js +16 -0
- package/lib/components/media/MediaDialog.js +16 -0
- package/lib/components/media/MediaToolbar.js +16 -0
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +94 -0
- package/lib/components/respArea/DragInTheBlank/choice.js +289 -0
- package/lib/components/respArea/DragInTheBlank.js +94 -0
- package/lib/components/respArea/ExplicitConstructedResponse.js +120 -0
- package/lib/components/respArea/InlineDropdown.js +126 -0
- package/lib/components/respArea/ToolbarIcon.js +105 -0
- package/lib/components/respArea/choice.js +2 -0
- package/lib/extensions/component.js +5 -5
- package/lib/extensions/custom-toolbar-wrapper.js +2 -4
- package/lib/extensions/extended-table.js +30 -0
- package/lib/extensions/index.js +52 -0
- package/lib/extensions/media.js +5 -5
- package/lib/extensions/responseArea.js +7 -7
- package/lib/index.js +16 -1481
- package/lib/plugins/index.js +8 -80
- package/lib/styles/editorContainerStyles.js +200 -0
- package/lib/utils/size.js +34 -0
- package/package.json +1 -1
- package/src/components/CharacterPicker.jsx +185 -0
- package/src/components/EditableHtml.jsx +306 -0
- package/src/components/MenuBar.jsx +630 -0
- package/src/components/TiptapContainer.jsx +96 -0
- package/src/components/characters/characterUtils.js +127 -0
- package/src/components/image/ImageToolbar.jsx +1 -0
- package/src/components/image/InsertImageHandler.js +1 -0
- package/src/components/media/MediaDialog.js +1 -0
- package/src/components/media/MediaToolbar.jsx +1 -0
- package/src/{plugins/respArea/drag-in-the-blank → components/respArea/DragInTheBlank}/choice.jsx +1 -1
- package/src/{plugins/respArea/inline-dropdown/index.jsx → components/respArea/InlineDropdown.jsx} +1 -1
- package/src/components/respArea/ToolbarIcon.jsx +68 -0
- package/src/extensions/component.jsx +2 -2
- package/src/extensions/custom-toolbar-wrapper.jsx +6 -7
- package/src/extensions/extended-table.js +27 -0
- package/src/extensions/index.js +76 -0
- package/src/extensions/media.js +10 -4
- package/src/extensions/responseArea.js +7 -7
- package/src/index.jsx +3 -1440
- package/src/styles/editorContainerStyles.js +203 -0
- package/src/utils/size.js +32 -0
- package/src/__tests__/editor.test.jsx +0 -363
- package/src/__tests__/serialization.test.js +0 -291
- package/src/block-tags.js +0 -17
- package/src/editor.jsx +0 -1197
- package/src/extensions/characters.js +0 -46
- package/src/old-index.jsx +0 -162
- package/src/parse-html.js +0 -8
- package/src/plugins/README.md +0 -27
- package/src/plugins/characters/index.jsx +0 -284
- package/src/plugins/characters/utils.js +0 -447
- package/src/plugins/css/index.jsx +0 -340
- package/src/plugins/customPlugin/index.jsx +0 -85
- package/src/plugins/html/icons/index.jsx +0 -19
- package/src/plugins/html/index.jsx +0 -72
- package/src/plugins/image/__tests__/__snapshots__/component.test.jsx.snap +0 -51
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar-logic.test.jsx.snap +0 -27
- package/src/plugins/image/__tests__/__snapshots__/image-toolbar.test.jsx.snap +0 -44
- package/src/plugins/image/__tests__/component.test.jsx +0 -41
- package/src/plugins/image/__tests__/image-toolbar-logic.test.jsx +0 -42
- package/src/plugins/image/__tests__/image-toolbar.test.jsx +0 -11
- package/src/plugins/image/__tests__/index.test.js +0 -95
- package/src/plugins/image/__tests__/insert-image-handler.test.js +0 -113
- package/src/plugins/image/__tests__/mock-change.js +0 -15
- package/src/plugins/image/alt-dialog.jsx +0 -82
- package/src/plugins/image/component.jsx +0 -343
- package/src/plugins/image/image-toolbar.jsx +0 -100
- package/src/plugins/image/index.jsx +0 -227
- package/src/plugins/image/insert-image-handler.js +0 -79
- package/src/plugins/index.jsx +0 -377
- package/src/plugins/list/__tests__/index.test.js +0 -54
- package/src/plugins/list/index.jsx +0 -305
- package/src/plugins/math/__tests__/__snapshots__/index.test.jsx.snap +0 -48
- package/src/plugins/math/__tests__/index.test.jsx +0 -245
- package/src/plugins/math/index.jsx +0 -379
- package/src/plugins/media/__tests__/index.test.js +0 -75
- package/src/plugins/media/index.jsx +0 -325
- package/src/plugins/media/media-dialog.js +0 -624
- package/src/plugins/media/media-toolbar.jsx +0 -56
- package/src/plugins/media/media-wrapper.jsx +0 -43
- package/src/plugins/rendering/index.js +0 -31
- package/src/plugins/respArea/index.jsx +0 -299
- package/src/plugins/respArea/math-templated/index.jsx +0 -104
- package/src/plugins/respArea/utils.jsx +0 -90
- package/src/plugins/table/CustomTablePlugin.js +0 -113
- package/src/plugins/table/__tests__/__snapshots__/table-toolbar.test.jsx.snap +0 -44
- package/src/plugins/table/__tests__/index.test.jsx +0 -401
- package/src/plugins/table/__tests__/table-toolbar.test.jsx +0 -42
- package/src/plugins/table/index.jsx +0 -427
- package/src/plugins/table/table-toolbar.jsx +0 -136
- package/src/plugins/textAlign/index.jsx +0 -23
- package/src/plugins/toolbar/__tests__/__snapshots__/default-toolbar.test.jsx.snap +0 -923
- package/src/plugins/toolbar/__tests__/__snapshots__/editor-and-toolbar.test.jsx.snap +0 -20
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar-buttons.test.jsx.snap +0 -36
- package/src/plugins/toolbar/__tests__/__snapshots__/toolbar.test.jsx.snap +0 -46
- package/src/plugins/toolbar/__tests__/default-toolbar.test.jsx +0 -94
- package/src/plugins/toolbar/__tests__/editor-and-toolbar.test.jsx +0 -37
- package/src/plugins/toolbar/__tests__/toolbar-buttons.test.jsx +0 -51
- package/src/plugins/toolbar/__tests__/toolbar.test.jsx +0 -106
- package/src/plugins/toolbar/default-toolbar.jsx +0 -206
- package/src/plugins/toolbar/editor-and-toolbar.jsx +0 -257
- package/src/plugins/toolbar/index.jsx +0 -23
- package/src/plugins/toolbar/toolbar-buttons.jsx +0 -138
- package/src/plugins/toolbar/toolbar.jsx +0 -338
- package/src/plugins/utils.js +0 -31
- package/src/serialization.jsx +0 -621
- /package/src/{plugins → components}/characters/custom-popper.js +0 -0
- /package/src/{plugins/toolbar → components/common}/done-button.jsx +0 -0
- /package/src/{plugins/css/icons/index.jsx → components/icons/CssIcon.jsx} +0 -0
- /package/src/{plugins/respArea/icons/index.jsx → components/icons/RespArea.jsx} +0 -0
- /package/src/{plugins/table/icons/index.jsx → components/icons/TableIcons.jsx} +0 -0
- /package/src/{plugins/textAlign/icons/index.jsx → components/icons/TextAlign.jsx} +0 -0
- /package/src/{plugins/respArea/drag-in-the-blank/index.jsx → components/respArea/DragInTheBlank/DragInTheBlank.jsx} +0 -0
- /package/src/{plugins/respArea/explicit-constructed-response/index.jsx → components/respArea/ExplicitConstructedResponse.jsx} +0 -0
|
@@ -0,0 +1,693 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
|
|
14
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
19
|
+
|
|
20
|
+
var _styles = require("@material-ui/core/styles");
|
|
21
|
+
|
|
22
|
+
var _prosemirrorState = require("prosemirror-state");
|
|
23
|
+
|
|
24
|
+
var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
|
|
25
|
+
|
|
26
|
+
var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
|
|
27
|
+
|
|
28
|
+
var _FormatStrikethrough = _interopRequireDefault(require("@material-ui/icons/FormatStrikethrough"));
|
|
29
|
+
|
|
30
|
+
var _Code = _interopRequireDefault(require("@material-ui/icons/Code"));
|
|
31
|
+
|
|
32
|
+
var _GridOn = _interopRequireDefault(require("@material-ui/icons/GridOn"));
|
|
33
|
+
|
|
34
|
+
var _FormatListBulleted = _interopRequireDefault(require("@material-ui/icons/FormatListBulleted"));
|
|
35
|
+
|
|
36
|
+
var _FormatListNumbered = _interopRequireDefault(require("@material-ui/icons/FormatListNumbered"));
|
|
37
|
+
|
|
38
|
+
var _FormatUnderlined = _interopRequireDefault(require("@material-ui/icons/FormatUnderlined"));
|
|
39
|
+
|
|
40
|
+
var _Functions = _interopRequireDefault(require("@material-ui/icons/Functions"));
|
|
41
|
+
|
|
42
|
+
var _Image = _interopRequireDefault(require("@material-ui/icons/Image"));
|
|
43
|
+
|
|
44
|
+
var _Redo = _interopRequireDefault(require("@material-ui/icons/Redo"));
|
|
45
|
+
|
|
46
|
+
var _Undo = _interopRequireDefault(require("@material-ui/icons/Undo"));
|
|
47
|
+
|
|
48
|
+
var _Theaters = _interopRequireDefault(require("@material-ui/icons/Theaters"));
|
|
49
|
+
|
|
50
|
+
var _VolumeUp = _interopRequireDefault(require("@material-ui/icons/VolumeUp"));
|
|
51
|
+
|
|
52
|
+
var _BorderAll = _interopRequireDefault(require("@material-ui/icons/BorderAll"));
|
|
53
|
+
|
|
54
|
+
var _react2 = require("@tiptap/react");
|
|
55
|
+
|
|
56
|
+
var _constants = require("../constants");
|
|
57
|
+
|
|
58
|
+
var _ToolbarIcon = require("./respArea/ToolbarIcon");
|
|
59
|
+
|
|
60
|
+
var _characterUtils = require("./characters/characterUtils");
|
|
61
|
+
|
|
62
|
+
var _TextAlign = _interopRequireDefault(require("./icons/TextAlign"));
|
|
63
|
+
|
|
64
|
+
var _CssIcon = _interopRequireDefault(require("./icons/CssIcon"));
|
|
65
|
+
|
|
66
|
+
var _tableIcons = require("./icons/tableIcons");
|
|
67
|
+
|
|
68
|
+
var _CharacterPicker = require("./CharacterPicker");
|
|
69
|
+
|
|
70
|
+
var _doneButton = require("./common/done-button");
|
|
71
|
+
|
|
72
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
73
|
+
|
|
74
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
75
|
+
|
|
76
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
77
|
+
|
|
78
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
79
|
+
|
|
80
|
+
var SuperscriptIcon = function SuperscriptIcon() {
|
|
81
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
82
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
83
|
+
height: "24px",
|
|
84
|
+
viewBox: "0 0 24 24",
|
|
85
|
+
width: "24px",
|
|
86
|
+
fill: "none"
|
|
87
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
88
|
+
d: "M22,7h-2v1h3v1h-4V7c0-0.55,0.45-1,1-1h2V5h-3V4h3c0.55,0,1,0.45,1,1v1C23,6.55,22.55,7,22,7z M5.88,20h2.66l3.4-5.42h0.12 l3.4,5.42h2.66l-4.65-7.27L17.81,6h-2.68l-3.07,4.99h-0.12L8.85,6H6.19l4.32,6.73L5.88,20z",
|
|
89
|
+
fill: "currentColor"
|
|
90
|
+
}));
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
var SubscriptIcon = function SubscriptIcon() {
|
|
94
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
95
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
96
|
+
height: "24px",
|
|
97
|
+
viewBox: "0 0 24 24",
|
|
98
|
+
width: "24px",
|
|
99
|
+
fill: "none"
|
|
100
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
101
|
+
d: "M22,18h-2v1h3v1h-4v-2c0-0.55,0.45-1,1-1h2v-1h-3v-1h3c0.55,0,1,0.45,1,1v1C23,17.55,22.55,18,22,18z M5.88,18h2.66 l3.4-5.42h0.12l3.4,5.42h2.66l-4.65-7.27L17.81,4h-2.68l-3.07,4.99h-0.12L8.85,4H6.19l4.32,6.73L5.88,18z",
|
|
102
|
+
fill: "currentColor"
|
|
103
|
+
}));
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
var HeadingIcon = function HeadingIcon() {
|
|
107
|
+
return /*#__PURE__*/_react["default"].createElement("svg", {
|
|
108
|
+
width: "30",
|
|
109
|
+
height: "28",
|
|
110
|
+
viewBox: "0 0 30 28",
|
|
111
|
+
fill: "none",
|
|
112
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
113
|
+
style: {
|
|
114
|
+
width: '20px',
|
|
115
|
+
height: '18px'
|
|
116
|
+
}
|
|
117
|
+
}, /*#__PURE__*/_react["default"].createElement("path", {
|
|
118
|
+
d: "M27 4V24H29C29.5 24 30 24.5 30 25V27C30 27.5625 29.5 28 29 28H19C18.4375 28 18 27.5625 18 27V25C18 24.5 18.4375 24 19 24H21V16H9V24H11C11.5 24 12 24.5 12 25V27C12 27.5625 11.5 28 11 28H1C0.4375 28 0 27.5625 0 27V25C0 24.5 0.4375 24 1 24H3V4H1C0.4375 4 0 3.5625 0 3V1C0 0.5 0.4375 0 1 0H11C11.5 0 12 0.5 12 1V3C12 3.5625 11.5 4 11 4H9V12H21V4H19C18.4375 4 18 3.5625 18 3V1C18 0.5 18.4375 0 19 0H29C29.5 0 30 0.5 30 1V3C30 3.5625 29.5 4 29 4H27Z",
|
|
119
|
+
fill: "currentColor"
|
|
120
|
+
}));
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
function MenuBar(_ref) {
|
|
124
|
+
var _classNames;
|
|
125
|
+
|
|
126
|
+
var editor = _ref.editor,
|
|
127
|
+
classes = _ref.classes,
|
|
128
|
+
activePlugins = _ref.activePlugins,
|
|
129
|
+
toolOpts = _ref.toolbarOpts,
|
|
130
|
+
responseAreaProps = _ref.responseAreaProps,
|
|
131
|
+
onChange = _ref.onChange;
|
|
132
|
+
|
|
133
|
+
var _useState = (0, _react.useState)(false),
|
|
134
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
135
|
+
showPicker = _useState2[0],
|
|
136
|
+
setShowPicker = _useState2[1];
|
|
137
|
+
|
|
138
|
+
var toolbarOpts = toolOpts !== null && toolOpts !== void 0 ? toolOpts : {};
|
|
139
|
+
var editorState = (0, _react2.useEditorState)({
|
|
140
|
+
editor: editor,
|
|
141
|
+
selector: function selector(ctx) {
|
|
142
|
+
var _ctx$editor, _ctx$editor2, _ctx$editor3, _ctx$editor4, _ctx$editor5, _ctx$editor$isActive, _ctx$editor$can$chain, _ctx$editor$isActive2, _ref3, _ctx$editor$getAttrib, _ctx$editor$can$chain2, _ctx$editor$isActive3, _ctx$editor$can$chain3, _ctx$editor$isActive4, _ctx$editor$can$chain4, _ctx$editor$isActive5, _ctx$editor$can$chain5, _ctx$editor$can$chain6, _ctx$editor$isActive6, _ctx$editor$isActive7, _ctx$editor$isActive8, _ctx$editor$isActive9, _ctx$editor$isActive10, _ctx$editor$isActive11, _ctx$editor$isActive12, _ctx$editor$isActive13, _ctx$editor$isActive14, _ctx$editor$isActive15, _ctx$editor$isActive16, _ctx$editor$isActive17, _ctx$editor$isActive18, _ctx$editor$isActive19, _ctx$editor$can$chain7, _ctx$editor$can$chain8;
|
|
143
|
+
|
|
144
|
+
var _ref2 = ((_ctx$editor = ctx.editor) === null || _ctx$editor === void 0 ? void 0 : _ctx$editor.state) || {},
|
|
145
|
+
selection = _ref2.selection;
|
|
146
|
+
|
|
147
|
+
var currentNode;
|
|
148
|
+
|
|
149
|
+
if (selection instanceof _prosemirrorState.NodeSelection) {
|
|
150
|
+
currentNode = selection.node; // the selected node
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
var hideDefaultToolbar = ((_ctx$editor2 = ctx.editor) === null || _ctx$editor2 === void 0 ? void 0 : _ctx$editor2.isActive('math')) || ((_ctx$editor3 = ctx.editor) === null || _ctx$editor3 === void 0 ? void 0 : _ctx$editor3.isActive('explicit_constructed_response')) || ((_ctx$editor4 = ctx.editor) === null || _ctx$editor4 === void 0 ? void 0 : _ctx$editor4.isActive('imageUploadNode'));
|
|
154
|
+
return {
|
|
155
|
+
currentNode: currentNode,
|
|
156
|
+
hideDefaultToolbar: hideDefaultToolbar,
|
|
157
|
+
isFocused: (_ctx$editor5 = ctx.editor) === null || _ctx$editor5 === void 0 ? void 0 : _ctx$editor5.isFocused,
|
|
158
|
+
isBold: (_ctx$editor$isActive = ctx.editor.isActive('bold')) !== null && _ctx$editor$isActive !== void 0 ? _ctx$editor$isActive : false,
|
|
159
|
+
canBold: (_ctx$editor$can$chain = ctx.editor.can().chain().toggleBold().run()) !== null && _ctx$editor$can$chain !== void 0 ? _ctx$editor$can$chain : false,
|
|
160
|
+
isTable: (_ctx$editor$isActive2 = ctx.editor.isActive('table')) !== null && _ctx$editor$isActive2 !== void 0 ? _ctx$editor$isActive2 : false,
|
|
161
|
+
tableHasBorder: (_ref3 = ((_ctx$editor$getAttrib = ctx.editor.getAttributes('table')) === null || _ctx$editor$getAttrib === void 0 ? void 0 : _ctx$editor$getAttrib.border) === '1') !== null && _ref3 !== void 0 ? _ref3 : false,
|
|
162
|
+
canTable: (_ctx$editor$can$chain2 = ctx.editor.can().chain().insertTable().run()) !== null && _ctx$editor$can$chain2 !== void 0 ? _ctx$editor$can$chain2 : false,
|
|
163
|
+
isItalic: (_ctx$editor$isActive3 = ctx.editor.isActive('italic')) !== null && _ctx$editor$isActive3 !== void 0 ? _ctx$editor$isActive3 : false,
|
|
164
|
+
canItalic: (_ctx$editor$can$chain3 = ctx.editor.can().chain().toggleItalic().run()) !== null && _ctx$editor$can$chain3 !== void 0 ? _ctx$editor$can$chain3 : false,
|
|
165
|
+
isStrike: (_ctx$editor$isActive4 = ctx.editor.isActive('strike')) !== null && _ctx$editor$isActive4 !== void 0 ? _ctx$editor$isActive4 : false,
|
|
166
|
+
canStrike: (_ctx$editor$can$chain4 = ctx.editor.can().chain().toggleStrike().run()) !== null && _ctx$editor$can$chain4 !== void 0 ? _ctx$editor$can$chain4 : false,
|
|
167
|
+
isCode: (_ctx$editor$isActive5 = ctx.editor.isActive('code')) !== null && _ctx$editor$isActive5 !== void 0 ? _ctx$editor$isActive5 : false,
|
|
168
|
+
canCode: (_ctx$editor$can$chain5 = ctx.editor.can().chain().toggleCode().run()) !== null && _ctx$editor$can$chain5 !== void 0 ? _ctx$editor$can$chain5 : false,
|
|
169
|
+
canClearMarks: (_ctx$editor$can$chain6 = ctx.editor.can().chain().unsetAllMarks().run()) !== null && _ctx$editor$can$chain6 !== void 0 ? _ctx$editor$can$chain6 : false,
|
|
170
|
+
isUnderline: (_ctx$editor$isActive6 = ctx.editor.isActive('underline')) !== null && _ctx$editor$isActive6 !== void 0 ? _ctx$editor$isActive6 : false,
|
|
171
|
+
isSubScript: (_ctx$editor$isActive7 = ctx.editor.isActive('subscript')) !== null && _ctx$editor$isActive7 !== void 0 ? _ctx$editor$isActive7 : false,
|
|
172
|
+
isSuperScript: (_ctx$editor$isActive8 = ctx.editor.isActive('superscript')) !== null && _ctx$editor$isActive8 !== void 0 ? _ctx$editor$isActive8 : false,
|
|
173
|
+
isParagraph: (_ctx$editor$isActive9 = ctx.editor.isActive('paragraph')) !== null && _ctx$editor$isActive9 !== void 0 ? _ctx$editor$isActive9 : false,
|
|
174
|
+
isHeading1: (_ctx$editor$isActive10 = ctx.editor.isActive('heading', {
|
|
175
|
+
level: 1
|
|
176
|
+
})) !== null && _ctx$editor$isActive10 !== void 0 ? _ctx$editor$isActive10 : false,
|
|
177
|
+
isHeading2: (_ctx$editor$isActive11 = ctx.editor.isActive('heading', {
|
|
178
|
+
level: 2
|
|
179
|
+
})) !== null && _ctx$editor$isActive11 !== void 0 ? _ctx$editor$isActive11 : false,
|
|
180
|
+
isHeading3: (_ctx$editor$isActive12 = ctx.editor.isActive('heading', {
|
|
181
|
+
level: 3
|
|
182
|
+
})) !== null && _ctx$editor$isActive12 !== void 0 ? _ctx$editor$isActive12 : false,
|
|
183
|
+
isHeading4: (_ctx$editor$isActive13 = ctx.editor.isActive('heading', {
|
|
184
|
+
level: 4
|
|
185
|
+
})) !== null && _ctx$editor$isActive13 !== void 0 ? _ctx$editor$isActive13 : false,
|
|
186
|
+
isHeading5: (_ctx$editor$isActive14 = ctx.editor.isActive('heading', {
|
|
187
|
+
level: 5
|
|
188
|
+
})) !== null && _ctx$editor$isActive14 !== void 0 ? _ctx$editor$isActive14 : false,
|
|
189
|
+
isHeading6: (_ctx$editor$isActive15 = ctx.editor.isActive('heading', {
|
|
190
|
+
level: 6
|
|
191
|
+
})) !== null && _ctx$editor$isActive15 !== void 0 ? _ctx$editor$isActive15 : false,
|
|
192
|
+
isBulletList: (_ctx$editor$isActive16 = ctx.editor.isActive('bulletList')) !== null && _ctx$editor$isActive16 !== void 0 ? _ctx$editor$isActive16 : false,
|
|
193
|
+
isOrderedList: (_ctx$editor$isActive17 = ctx.editor.isActive('orderedList')) !== null && _ctx$editor$isActive17 !== void 0 ? _ctx$editor$isActive17 : false,
|
|
194
|
+
isCodeBlock: (_ctx$editor$isActive18 = ctx.editor.isActive('codeBlock')) !== null && _ctx$editor$isActive18 !== void 0 ? _ctx$editor$isActive18 : false,
|
|
195
|
+
isBlockquote: (_ctx$editor$isActive19 = ctx.editor.isActive('blockquote')) !== null && _ctx$editor$isActive19 !== void 0 ? _ctx$editor$isActive19 : false,
|
|
196
|
+
canUndo: (_ctx$editor$can$chain7 = ctx.editor.can().chain().undo().run()) !== null && _ctx$editor$can$chain7 !== void 0 ? _ctx$editor$can$chain7 : false,
|
|
197
|
+
canRedo: (_ctx$editor$can$chain8 = ctx.editor.can().chain().redo().run()) !== null && _ctx$editor$can$chain8 !== void 0 ? _ctx$editor$can$chain8 : false
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
var hasDoneButton = false;
|
|
202
|
+
var autoWidth = false;
|
|
203
|
+
var names = (0, _classnames["default"])(classes.toolbar, _constants.PIE_TOOLBAR__CLASS, (_classNames = {}, (0, _defineProperty2["default"])(_classNames, classes.toolbarWithNoDone, !hasDoneButton), (0, _defineProperty2["default"])(_classNames, classes.toolbarTop, toolbarOpts.position === 'top'), (0, _defineProperty2["default"])(_classNames, classes.toolbarRight, toolbarOpts.alignment === 'right'), (0, _defineProperty2["default"])(_classNames, classes.focused, toolbarOpts.alwaysVisible || editorState.isFocused && !editor._toolbarOpened), (0, _defineProperty2["default"])(_classNames, classes.autoWidth, autoWidth), (0, _defineProperty2["default"])(_classNames, classes.fullWidth, !autoWidth), (0, _defineProperty2["default"])(_classNames, classes.hidden, toolbarOpts.isHidden === true), _classNames));
|
|
204
|
+
var customStyles = toolbarOpts.minWidth !== undefined ? {
|
|
205
|
+
minWidth: toolbarOpts.minWidth
|
|
206
|
+
} : {};
|
|
207
|
+
|
|
208
|
+
var handleMouseDown = function handleMouseDown(e) {
|
|
209
|
+
e.preventDefault();
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
var toolbarButtons = (0, _react.useMemo)(function () {
|
|
213
|
+
return [{
|
|
214
|
+
icon: /*#__PURE__*/_react["default"].createElement(_GridOn["default"], null),
|
|
215
|
+
onClick: function onClick(editor) {
|
|
216
|
+
return editor.chain().focus().insertTable({
|
|
217
|
+
rows: 2,
|
|
218
|
+
cols: 2,
|
|
219
|
+
withHeaderRow: false
|
|
220
|
+
}).run();
|
|
221
|
+
},
|
|
222
|
+
hidden: function hidden(state) {
|
|
223
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('table')) || state.isTable;
|
|
224
|
+
},
|
|
225
|
+
isActive: function isActive(state) {
|
|
226
|
+
return state.isTable;
|
|
227
|
+
},
|
|
228
|
+
isDisabled: function isDisabled(state) {
|
|
229
|
+
return !state.canTable;
|
|
230
|
+
}
|
|
231
|
+
}, {
|
|
232
|
+
icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.AddRow, null),
|
|
233
|
+
onClick: function onClick(editor) {
|
|
234
|
+
return editor.chain().focus().addRowAfter().run();
|
|
235
|
+
},
|
|
236
|
+
hidden: function hidden(state) {
|
|
237
|
+
return !state.isTable;
|
|
238
|
+
},
|
|
239
|
+
isActive: function isActive(state) {
|
|
240
|
+
return state.isTable;
|
|
241
|
+
},
|
|
242
|
+
isDisabled: function isDisabled(state) {
|
|
243
|
+
return !state.canTable;
|
|
244
|
+
}
|
|
245
|
+
}, {
|
|
246
|
+
icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.RemoveRow, null),
|
|
247
|
+
onClick: function onClick(editor) {
|
|
248
|
+
return editor.chain().focus().deleteRow().run();
|
|
249
|
+
},
|
|
250
|
+
hidden: function hidden(state) {
|
|
251
|
+
return !state.isTable;
|
|
252
|
+
},
|
|
253
|
+
isActive: function isActive(state) {
|
|
254
|
+
return state.isTable;
|
|
255
|
+
},
|
|
256
|
+
isDisabled: function isDisabled(state) {
|
|
257
|
+
return !state.canTable;
|
|
258
|
+
}
|
|
259
|
+
}, {
|
|
260
|
+
icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.AddColumn, null),
|
|
261
|
+
onClick: function onClick(editor) {
|
|
262
|
+
return editor.chain().focus().addColumnAfter().run();
|
|
263
|
+
},
|
|
264
|
+
hidden: function hidden(state) {
|
|
265
|
+
return !state.isTable;
|
|
266
|
+
},
|
|
267
|
+
isActive: function isActive(state) {
|
|
268
|
+
return state.isTable;
|
|
269
|
+
},
|
|
270
|
+
isDisabled: function isDisabled(state) {
|
|
271
|
+
return !state.canTable;
|
|
272
|
+
}
|
|
273
|
+
}, {
|
|
274
|
+
icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.RemoveColumn, null),
|
|
275
|
+
onClick: function onClick(editor) {
|
|
276
|
+
return editor.chain().focus().deleteColumn().run();
|
|
277
|
+
},
|
|
278
|
+
hidden: function hidden(state) {
|
|
279
|
+
return !state.isTable;
|
|
280
|
+
},
|
|
281
|
+
isActive: function isActive(state) {
|
|
282
|
+
return state.isTable;
|
|
283
|
+
},
|
|
284
|
+
isDisabled: function isDisabled(state) {
|
|
285
|
+
return !state.canTable;
|
|
286
|
+
}
|
|
287
|
+
}, {
|
|
288
|
+
icon: /*#__PURE__*/_react["default"].createElement(_tableIcons.RemoveTable, null),
|
|
289
|
+
onClick: function onClick(editor) {
|
|
290
|
+
return editor.chain().focus().deleteTable().run();
|
|
291
|
+
},
|
|
292
|
+
hidden: function hidden(state) {
|
|
293
|
+
return !state.isTable;
|
|
294
|
+
},
|
|
295
|
+
isActive: function isActive(state) {
|
|
296
|
+
return state.isTable;
|
|
297
|
+
},
|
|
298
|
+
isDisabled: function isDisabled(state) {
|
|
299
|
+
return !state.canTable;
|
|
300
|
+
}
|
|
301
|
+
}, {
|
|
302
|
+
icon: /*#__PURE__*/_react["default"].createElement(_BorderAll["default"], null),
|
|
303
|
+
onClick: function onClick(editor) {
|
|
304
|
+
var tableAttrs = editor.getAttributes('table');
|
|
305
|
+
|
|
306
|
+
var update = _objectSpread(_objectSpread({}, tableAttrs), {}, {
|
|
307
|
+
border: tableAttrs.border !== '0' ? '0' : '1'
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
editor.commands.updateAttributes('table', update);
|
|
311
|
+
},
|
|
312
|
+
hidden: function hidden(state) {
|
|
313
|
+
return !state.isTable;
|
|
314
|
+
},
|
|
315
|
+
isActive: function isActive(state) {
|
|
316
|
+
return state.tableHasBorder;
|
|
317
|
+
},
|
|
318
|
+
isDisabled: function isDisabled(state) {
|
|
319
|
+
return !state.canTable;
|
|
320
|
+
}
|
|
321
|
+
}, {
|
|
322
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
|
|
323
|
+
onClick: function onClick(editor) {
|
|
324
|
+
return editor.chain().focus().toggleBold().run();
|
|
325
|
+
},
|
|
326
|
+
hidden: function hidden(state) {
|
|
327
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('bold')) || state.isTable;
|
|
328
|
+
},
|
|
329
|
+
isActive: function isActive(state) {
|
|
330
|
+
return state.isBold;
|
|
331
|
+
},
|
|
332
|
+
isDisabled: function isDisabled(state) {
|
|
333
|
+
return !state.canBold;
|
|
334
|
+
}
|
|
335
|
+
}, {
|
|
336
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatItalic["default"], null),
|
|
337
|
+
onClick: function onClick(editor) {
|
|
338
|
+
return editor.chain().focus().toggleItalic().run();
|
|
339
|
+
},
|
|
340
|
+
hidden: function hidden(state) {
|
|
341
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('italic')) || state.isTable;
|
|
342
|
+
},
|
|
343
|
+
isActive: function isActive(state) {
|
|
344
|
+
return state.isItalic;
|
|
345
|
+
},
|
|
346
|
+
isDisabled: function isDisabled(state) {
|
|
347
|
+
return !state.canItalic;
|
|
348
|
+
}
|
|
349
|
+
}, {
|
|
350
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatStrikethrough["default"], null),
|
|
351
|
+
onClick: function onClick(editor) {
|
|
352
|
+
return editor.chain().focus().toggleStrike().run();
|
|
353
|
+
},
|
|
354
|
+
hidden: function hidden(state) {
|
|
355
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('strikethrough')) || state.isTable;
|
|
356
|
+
},
|
|
357
|
+
isActive: function isActive(state) {
|
|
358
|
+
return state.isStrike;
|
|
359
|
+
},
|
|
360
|
+
isDisabled: function isDisabled(state) {
|
|
361
|
+
return !state.canStrike;
|
|
362
|
+
}
|
|
363
|
+
}, {
|
|
364
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Code["default"], null),
|
|
365
|
+
onClick: function onClick(editor) {
|
|
366
|
+
return editor.chain().focus().toggleCode().run();
|
|
367
|
+
},
|
|
368
|
+
hidden: function hidden(state) {
|
|
369
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('code')) || state.isTable;
|
|
370
|
+
},
|
|
371
|
+
isActive: function isActive(state) {
|
|
372
|
+
return state.isCode;
|
|
373
|
+
},
|
|
374
|
+
isDisabled: function isDisabled(state) {
|
|
375
|
+
return !state.canCode;
|
|
376
|
+
}
|
|
377
|
+
}, {
|
|
378
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null),
|
|
379
|
+
onClick: function onClick(editor) {
|
|
380
|
+
return editor.chain().focus().toggleUnderline().run();
|
|
381
|
+
},
|
|
382
|
+
hidden: function hidden(state) {
|
|
383
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('underline')) || state.isTable;
|
|
384
|
+
},
|
|
385
|
+
isActive: function isActive(state) {
|
|
386
|
+
return state.isUnderline;
|
|
387
|
+
}
|
|
388
|
+
}, {
|
|
389
|
+
icon: /*#__PURE__*/_react["default"].createElement(SubscriptIcon, null),
|
|
390
|
+
onClick: function onClick(editor) {
|
|
391
|
+
return editor.chain().focus().toggleSubscript().run();
|
|
392
|
+
},
|
|
393
|
+
hidden: function hidden(state) {
|
|
394
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('subscript')) || state.isTable;
|
|
395
|
+
},
|
|
396
|
+
isActive: function isActive(state) {
|
|
397
|
+
return state.isSubScript;
|
|
398
|
+
}
|
|
399
|
+
}, {
|
|
400
|
+
icon: /*#__PURE__*/_react["default"].createElement(SuperscriptIcon, null),
|
|
401
|
+
onClick: function onClick(editor) {
|
|
402
|
+
return editor.chain().focus().toggleSuperscript().run();
|
|
403
|
+
},
|
|
404
|
+
hidden: function hidden(state) {
|
|
405
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('superscript')) || state.isTable;
|
|
406
|
+
},
|
|
407
|
+
isActive: function isActive(state) {
|
|
408
|
+
return state.isSuperScript;
|
|
409
|
+
}
|
|
410
|
+
}, {
|
|
411
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
|
|
412
|
+
hidden: function hidden(state) {
|
|
413
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('image')) || state.isTable;
|
|
414
|
+
},
|
|
415
|
+
onClick: function onClick(editor) {
|
|
416
|
+
return editor.chain().focus().setImageUploadNode().run();
|
|
417
|
+
}
|
|
418
|
+
}, {
|
|
419
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Theaters["default"], null),
|
|
420
|
+
hidden: function hidden(state) {
|
|
421
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('video')) || state.isTable;
|
|
422
|
+
},
|
|
423
|
+
onClick: function onClick(editor) {
|
|
424
|
+
return editor.chain().focus().insertMedia({
|
|
425
|
+
tag: 'video'
|
|
426
|
+
}).run();
|
|
427
|
+
}
|
|
428
|
+
}, {
|
|
429
|
+
icon: /*#__PURE__*/_react["default"].createElement(_VolumeUp["default"], null),
|
|
430
|
+
hidden: function hidden(state) {
|
|
431
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('audio')) || state.isTable;
|
|
432
|
+
},
|
|
433
|
+
onClick: function onClick(editor) {
|
|
434
|
+
return editor.chain().focus().insertMedia({
|
|
435
|
+
tag: 'audio'
|
|
436
|
+
}).run();
|
|
437
|
+
}
|
|
438
|
+
}, {
|
|
439
|
+
icon: /*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null),
|
|
440
|
+
hidden: function hidden(state) {
|
|
441
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('css')) || state.isTable;
|
|
442
|
+
},
|
|
443
|
+
onClick: function onClick(editor) {
|
|
444
|
+
return editor.commands.openCSSClassDialog();
|
|
445
|
+
}
|
|
446
|
+
}, {
|
|
447
|
+
icon: /*#__PURE__*/_react["default"].createElement(HeadingIcon, null),
|
|
448
|
+
hidden: function hidden(state) {
|
|
449
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('h3')) || state.isTable;
|
|
450
|
+
},
|
|
451
|
+
onClick: function onClick(editor) {
|
|
452
|
+
return editor.chain().focus().toggleHeading({
|
|
453
|
+
level: 3
|
|
454
|
+
}).run();
|
|
455
|
+
},
|
|
456
|
+
isActive: function isActive(state) {
|
|
457
|
+
return state.isHeading3;
|
|
458
|
+
}
|
|
459
|
+
}, {
|
|
460
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Functions["default"], null),
|
|
461
|
+
hidden: function hidden() {
|
|
462
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('math'));
|
|
463
|
+
},
|
|
464
|
+
onClick: function onClick(editor) {
|
|
465
|
+
return editor.chain().focus().insertMath('').run();
|
|
466
|
+
}
|
|
467
|
+
}, {
|
|
468
|
+
icon: /*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
|
|
469
|
+
letter: "\xF1"
|
|
470
|
+
}),
|
|
471
|
+
hidden: function hidden(state) {
|
|
472
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('languageCharacters')) || state.isTable;
|
|
473
|
+
},
|
|
474
|
+
onClick: function onClick() {
|
|
475
|
+
return setShowPicker(_characterUtils.spanishConfig);
|
|
476
|
+
}
|
|
477
|
+
}, {
|
|
478
|
+
icon: /*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
|
|
479
|
+
letter: "\u20AC"
|
|
480
|
+
}),
|
|
481
|
+
hidden: function hidden(state) {
|
|
482
|
+
return (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.filter(function (p) {
|
|
483
|
+
return p === 'languageCharacters';
|
|
484
|
+
}).length) !== 2 || state.isTable;
|
|
485
|
+
},
|
|
486
|
+
onClick: function onClick() {
|
|
487
|
+
return setShowPicker(_characterUtils.specialConfig);
|
|
488
|
+
}
|
|
489
|
+
}, {
|
|
490
|
+
icon: /*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
491
|
+
editor: editor
|
|
492
|
+
}),
|
|
493
|
+
hidden: function hidden(state) {
|
|
494
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('text-align')) || state.isTable;
|
|
495
|
+
},
|
|
496
|
+
onClick: function onClick() {}
|
|
497
|
+
}, {
|
|
498
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null),
|
|
499
|
+
hidden: function hidden(state) {
|
|
500
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('bulleted-list')) || state.isTable;
|
|
501
|
+
},
|
|
502
|
+
onClick: function onClick(editor) {
|
|
503
|
+
return editor.chain().focus().toggleBulletList().run();
|
|
504
|
+
},
|
|
505
|
+
isActive: function isActive(state) {
|
|
506
|
+
return state.isBulletList;
|
|
507
|
+
}
|
|
508
|
+
}, {
|
|
509
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null),
|
|
510
|
+
hidden: function hidden(state) {
|
|
511
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('numbered-list')) || state.isTable;
|
|
512
|
+
},
|
|
513
|
+
onClick: function onClick(editor) {
|
|
514
|
+
return editor.chain().focus().toggleOrderedList().run();
|
|
515
|
+
},
|
|
516
|
+
isActive: function isActive(state) {
|
|
517
|
+
return state.isOrderedList;
|
|
518
|
+
}
|
|
519
|
+
}, {
|
|
520
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Undo["default"], null),
|
|
521
|
+
hidden: function hidden(state) {
|
|
522
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('undo')) || state.isTable;
|
|
523
|
+
},
|
|
524
|
+
onClick: function onClick(editor) {
|
|
525
|
+
return editor.chain().focus().undo().run();
|
|
526
|
+
},
|
|
527
|
+
isDisabled: function isDisabled(state) {
|
|
528
|
+
return !state.canUndo;
|
|
529
|
+
}
|
|
530
|
+
}, {
|
|
531
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Redo["default"], null),
|
|
532
|
+
hidden: function hidden(state) {
|
|
533
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('redo')) || state.isTable;
|
|
534
|
+
},
|
|
535
|
+
onClick: function onClick(editor) {
|
|
536
|
+
return editor.chain().focus().redo().run();
|
|
537
|
+
},
|
|
538
|
+
isDisabled: function isDisabled(state) {
|
|
539
|
+
return !state.canRedo;
|
|
540
|
+
}
|
|
541
|
+
}];
|
|
542
|
+
}, [activePlugins, editor]);
|
|
543
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
544
|
+
className: names,
|
|
545
|
+
style: _objectSpread({}, customStyles),
|
|
546
|
+
onMouseDown: handleMouseDown
|
|
547
|
+
}, !editorState.hideDefaultToolbar && /*#__PURE__*/_react["default"].createElement("div", {
|
|
548
|
+
className: classes.defaultToolbar,
|
|
549
|
+
tabIndex: "1"
|
|
550
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
551
|
+
className: classes.buttonsContainer
|
|
552
|
+
}, toolbarButtons.filter(function (btn) {
|
|
553
|
+
var _btn$hidden;
|
|
554
|
+
|
|
555
|
+
return !((_btn$hidden = btn.hidden) !== null && _btn$hidden !== void 0 && _btn$hidden.call(btn, editorState));
|
|
556
|
+
}).map(function (btn, index) {
|
|
557
|
+
var _btn$isDisabled, _btn$isActive;
|
|
558
|
+
|
|
559
|
+
var disabled = (_btn$isDisabled = btn.isDisabled) === null || _btn$isDisabled === void 0 ? void 0 : _btn$isDisabled.call(btn, editorState);
|
|
560
|
+
var active = (_btn$isActive = btn.isActive) === null || _btn$isActive === void 0 ? void 0 : _btn$isActive.call(btn, editorState);
|
|
561
|
+
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
562
|
+
key: index,
|
|
563
|
+
disabled: disabled,
|
|
564
|
+
onClick: function onClick(e) {
|
|
565
|
+
e.preventDefault();
|
|
566
|
+
btn.onClick(editor);
|
|
567
|
+
},
|
|
568
|
+
className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, active))
|
|
569
|
+
}, btn.icon);
|
|
570
|
+
})), (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.includes('responseArea')) && /*#__PURE__*/_react["default"].createElement("button", {
|
|
571
|
+
onClick: function onClick() {
|
|
572
|
+
editor.chain().focus().insertResponseArea(responseAreaProps.type).run();
|
|
573
|
+
},
|
|
574
|
+
className: classes.button
|
|
575
|
+
}, /*#__PURE__*/_react["default"].createElement(_ToolbarIcon.ToolbarIcon, null)), /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
|
|
576
|
+
onClick: function onClick() {
|
|
577
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(editor.getHTML());
|
|
578
|
+
editor.commands.blur();
|
|
579
|
+
}
|
|
580
|
+
})), showPicker && /*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
581
|
+
editor: editor,
|
|
582
|
+
opts: _objectSpread(_objectSpread({}, showPicker), {}, {
|
|
583
|
+
renderPopOver: function renderPopOver(ev, ch) {
|
|
584
|
+
return console.log('Show popover', ch);
|
|
585
|
+
},
|
|
586
|
+
closePopOver: function closePopOver() {
|
|
587
|
+
return console.log('Close popover');
|
|
588
|
+
}
|
|
589
|
+
}),
|
|
590
|
+
onClose: function onClose() {
|
|
591
|
+
return setShowPicker(false);
|
|
592
|
+
}
|
|
593
|
+
}));
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
var style = function style(theme) {
|
|
597
|
+
return {
|
|
598
|
+
defaultToolbar: {
|
|
599
|
+
display: 'flex',
|
|
600
|
+
width: '100%',
|
|
601
|
+
justifyContent: 'space-between'
|
|
602
|
+
},
|
|
603
|
+
buttonsContainer: {
|
|
604
|
+
alignItems: 'center',
|
|
605
|
+
display: 'flex',
|
|
606
|
+
width: '100%'
|
|
607
|
+
},
|
|
608
|
+
button: {
|
|
609
|
+
color: 'grey',
|
|
610
|
+
display: 'inline-flex',
|
|
611
|
+
padding: '2px',
|
|
612
|
+
background: 'none',
|
|
613
|
+
border: 'none',
|
|
614
|
+
cursor: 'pointer',
|
|
615
|
+
'&:hover': {
|
|
616
|
+
color: 'black'
|
|
617
|
+
},
|
|
618
|
+
'&:focus': {
|
|
619
|
+
outline: "2px solid ".concat(theme.palette.grey[700])
|
|
620
|
+
}
|
|
621
|
+
},
|
|
622
|
+
active: {
|
|
623
|
+
color: 'black'
|
|
624
|
+
},
|
|
625
|
+
disabled: {
|
|
626
|
+
opacity: 0.7,
|
|
627
|
+
cursor: 'not-allowed',
|
|
628
|
+
'& :hover': {
|
|
629
|
+
color: 'grey'
|
|
630
|
+
}
|
|
631
|
+
},
|
|
632
|
+
isActive: {
|
|
633
|
+
background: 'var(--purple)',
|
|
634
|
+
color: 'var(--white)'
|
|
635
|
+
},
|
|
636
|
+
toolbar: {
|
|
637
|
+
position: 'absolute',
|
|
638
|
+
zIndex: 20,
|
|
639
|
+
cursor: 'pointer',
|
|
640
|
+
justifyContent: 'space-between',
|
|
641
|
+
background: 'var(--editable-html-toolbar-bg, #efefef)',
|
|
642
|
+
minWidth: '280px',
|
|
643
|
+
margin: '5px 0 0 0',
|
|
644
|
+
padding: '2px',
|
|
645
|
+
boxShadow: '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',
|
|
646
|
+
boxSizing: 'border-box',
|
|
647
|
+
display: 'flex',
|
|
648
|
+
opacity: 0,
|
|
649
|
+
pointerEvents: 'none'
|
|
650
|
+
},
|
|
651
|
+
toolbarWithNoDone: {
|
|
652
|
+
minWidth: '265px'
|
|
653
|
+
},
|
|
654
|
+
toolbarTop: {
|
|
655
|
+
top: '-45px'
|
|
656
|
+
},
|
|
657
|
+
toolbarRight: {
|
|
658
|
+
right: 0
|
|
659
|
+
},
|
|
660
|
+
fullWidth: {
|
|
661
|
+
width: '100%'
|
|
662
|
+
},
|
|
663
|
+
hidden: {
|
|
664
|
+
visibility: 'hidden'
|
|
665
|
+
},
|
|
666
|
+
autoWidth: {
|
|
667
|
+
width: 'auto'
|
|
668
|
+
},
|
|
669
|
+
focused: {
|
|
670
|
+
opacity: 1,
|
|
671
|
+
pointerEvents: 'auto'
|
|
672
|
+
},
|
|
673
|
+
iconRoot: {
|
|
674
|
+
width: '28px',
|
|
675
|
+
height: '28px',
|
|
676
|
+
padding: '4px',
|
|
677
|
+
verticalAlign: 'top'
|
|
678
|
+
},
|
|
679
|
+
label: {
|
|
680
|
+
color: 'var(--editable-html-toolbar-check, #00bb00)'
|
|
681
|
+
},
|
|
682
|
+
shared: {
|
|
683
|
+
display: 'flex'
|
|
684
|
+
}
|
|
685
|
+
};
|
|
686
|
+
};
|
|
687
|
+
|
|
688
|
+
var StyledMenuBar = (0, _styles.withStyles)(style, {
|
|
689
|
+
index: 1000
|
|
690
|
+
})(MenuBar);
|
|
691
|
+
var _default = StyledMenuBar;
|
|
692
|
+
exports["default"] = _default;
|
|
693
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL01lbnVCYXIuanN4Il0sIm5hbWVzIjpbIlN1cGVyc2NyaXB0SWNvbiIsIlN1YnNjcmlwdEljb24iLCJIZWFkaW5nSWNvbiIsIndpZHRoIiwiaGVpZ2h0IiwiTWVudUJhciIsImVkaXRvciIsImNsYXNzZXMiLCJhY3RpdmVQbHVnaW5zIiwidG9vbE9wdHMiLCJ0b29sYmFyT3B0cyIsInJlc3BvbnNlQXJlYVByb3BzIiwib25DaGFuZ2UiLCJzaG93UGlja2VyIiwic2V0U2hvd1BpY2tlciIsImVkaXRvclN0YXRlIiwic2VsZWN0b3IiLCJjdHgiLCJzdGF0ZSIsInNlbGVjdGlvbiIsImN1cnJlbnROb2RlIiwiTm9kZVNlbGVjdGlvbiIsIm5vZGUiLCJoaWRlRGVmYXVsdFRvb2xiYXIiLCJpc0FjdGl2ZSIsImlzRm9jdXNlZCIsImlzQm9sZCIsImNhbkJvbGQiLCJjYW4iLCJjaGFpbiIsInRvZ2dsZUJvbGQiLCJydW4iLCJpc1RhYmxlIiwidGFibGVIYXNCb3JkZXIiLCJnZXRBdHRyaWJ1dGVzIiwiYm9yZGVyIiwiY2FuVGFibGUiLCJpbnNlcnRUYWJsZSIsImlzSXRhbGljIiwiY2FuSXRhbGljIiwidG9nZ2xlSXRhbGljIiwiaXNTdHJpa2UiLCJjYW5TdHJpa2UiLCJ0b2dnbGVTdHJpa2UiLCJpc0NvZGUiLCJjYW5Db2RlIiwidG9nZ2xlQ29kZSIsImNhbkNsZWFyTWFya3MiLCJ1bnNldEFsbE1hcmtzIiwiaXNVbmRlcmxpbmUiLCJpc1N1YlNjcmlwdCIsImlzU3VwZXJTY3JpcHQiLCJpc1BhcmFncmFwaCIsImlzSGVhZGluZzEiLCJsZXZlbCIsImlzSGVhZGluZzIiLCJpc0hlYWRpbmczIiwiaXNIZWFkaW5nNCIsImlzSGVhZGluZzUiLCJpc0hlYWRpbmc2IiwiaXNCdWxsZXRMaXN0IiwiaXNPcmRlcmVkTGlzdCIsImlzQ29kZUJsb2NrIiwiaXNCbG9ja3F1b3RlIiwiY2FuVW5kbyIsInVuZG8iLCJjYW5SZWRvIiwicmVkbyIsImhhc0RvbmVCdXR0b24iLCJhdXRvV2lkdGgiLCJuYW1lcyIsInRvb2xiYXIiLCJQSUVfVE9PTEJBUl9fQ0xBU1MiLCJ0b29sYmFyV2l0aE5vRG9uZSIsInRvb2xiYXJUb3AiLCJwb3NpdGlvbiIsInRvb2xiYXJSaWdodCIsImFsaWdubWVudCIsImZvY3VzZWQiLCJhbHdheXNWaXNpYmxlIiwiX3Rvb2xiYXJPcGVuZWQiLCJmdWxsV2lkdGgiLCJoaWRkZW4iLCJpc0hpZGRlbiIsImN1c3RvbVN0eWxlcyIsIm1pbldpZHRoIiwidW5kZWZpbmVkIiwiaGFuZGxlTW91c2VEb3duIiwiZSIsInByZXZlbnREZWZhdWx0IiwidG9vbGJhckJ1dHRvbnMiLCJpY29uIiwib25DbGljayIsImZvY3VzIiwicm93cyIsImNvbHMiLCJ3aXRoSGVhZGVyUm93IiwiaW5jbHVkZXMiLCJpc0Rpc2FibGVkIiwiYWRkUm93QWZ0ZXIiLCJkZWxldGVSb3ciLCJhZGRDb2x1bW5BZnRlciIsImRlbGV0ZUNvbHVtbiIsImRlbGV0ZVRhYmxlIiwidGFibGVBdHRycyIsInVwZGF0ZSIsImNvbW1hbmRzIiwidXBkYXRlQXR0cmlidXRlcyIsInRvZ2dsZVVuZGVybGluZSIsInRvZ2dsZVN1YnNjcmlwdCIsInRvZ2dsZVN1cGVyc2NyaXB0Iiwic2V0SW1hZ2VVcGxvYWROb2RlIiwiaW5zZXJ0TWVkaWEiLCJ0YWciLCJvcGVuQ1NTQ2xhc3NEaWFsb2ciLCJ0b2dnbGVIZWFkaW5nIiwiaW5zZXJ0TWF0aCIsInNwYW5pc2hDb25maWciLCJmaWx0ZXIiLCJwIiwibGVuZ3RoIiwic3BlY2lhbENvbmZpZyIsInRvZ2dsZUJ1bGxldExpc3QiLCJ0b2dnbGVPcmRlcmVkTGlzdCIsImRlZmF1bHRUb29sYmFyIiwiYnV0dG9uc0NvbnRhaW5lciIsImJ0biIsIm1hcCIsImluZGV4IiwiZGlzYWJsZWQiLCJhY3RpdmUiLCJidXR0b24iLCJpbnNlcnRSZXNwb25zZUFyZWEiLCJ0eXBlIiwiZ2V0SFRNTCIsImJsdXIiLCJyZW5kZXJQb3BPdmVyIiwiZXYiLCJjaCIsImNvbnNvbGUiLCJsb2ciLCJjbG9zZVBvcE92ZXIiLCJzdHlsZSIsInRoZW1lIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImNvbG9yIiwicGFkZGluZyIsImJhY2tncm91bmQiLCJjdXJzb3IiLCJvdXRsaW5lIiwicGFsZXR0ZSIsImdyZXkiLCJvcGFjaXR5IiwiekluZGV4IiwibWFyZ2luIiwiYm94U2hhZG93IiwiYm94U2l6aW5nIiwicG9pbnRlckV2ZW50cyIsInRvcCIsInJpZ2h0IiwidmlzaWJpbGl0eSIsImljb25Sb290IiwidmVydGljYWxBbGlnbiIsImxhYmVsIiwic2hhcmVkIiwiU3R5bGVkTWVudUJhciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCO0FBQUEsc0JBQ3RCO0FBQUssSUFBQSxLQUFLLEVBQUMsNEJBQVg7QUFBd0MsSUFBQSxNQUFNLEVBQUMsTUFBL0M7QUFBc0QsSUFBQSxPQUFPLEVBQUMsV0FBOUQ7QUFBMEUsSUFBQSxLQUFLLEVBQUMsTUFBaEY7QUFBdUYsSUFBQSxJQUFJLEVBQUM7QUFBNUYsa0JBQ0U7QUFDRSxJQUFBLENBQUMsRUFBQyxnTkFESjtBQUVFLElBQUEsSUFBSSxFQUFDO0FBRlAsSUFERixDQURzQjtBQUFBLENBQXhCOztBQVNBLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0I7QUFBQSxzQkFDcEI7QUFBSyxJQUFBLEtBQUssRUFBQyw0QkFBWDtBQUF3QyxJQUFBLE1BQU0sRUFBQyxNQUEvQztBQUFzRCxJQUFBLE9BQU8sRUFB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O0FBREUsS0FoRWE7QUFtRXhCK0UsSUFBQUEsTUFBTSxFQUFFO0FBQ05nRixNQUFBQSxVQUFVLEVBQUU7QUFETixLQW5FZ0I7QUFzRXhCN0YsSUFBQUEsU0FBUyxFQUFFO0FBQ1RsRSxNQUFBQSxLQUFLLEVBQUU7QUFERSxLQXRFYTtBQXlFeEIyRSxJQUFBQSxPQUFPLEVBQUU7QUFDUDRFLE1BQUFBLE9BQU8sRUFBRSxDQURGO0FBRVBLLE1BQUFBLGFBQWEsRUFBRTtBQUZSLEtBekVlO0FBNkV4QkksSUFBQUEsUUFBUSxFQUFFO0FBQ1JoSyxNQUFBQSxLQUFLLEVBQUUsTUFEQztBQUVSQyxNQUFBQSxNQUFNLEVBQUUsTUFGQTtBQUdSZ0osTUFBQUEsT0FBTyxFQUFFLEtBSEQ7QUFJUmdCLE1BQUFBLGFBQWEsRUFBRTtBQUpQLEtBN0VjO0FBbUZ4QkMsSUFBQUEsS0FBSyxFQUFFO0FBQ0xsQixNQUFBQSxLQUFLLEVBQUU7QUFERixLQW5GaUI7QUFzRnhCbUIsSUFBQUEsTUFBTSxFQUFFO0FBQ050QixNQUFBQSxPQUFPLEVBQUU7QUFESDtBQXRGZ0IsR0FBWjtBQUFBLENBQWQ7O0FBMkZBLElBQU11QixhQUFhLEdBQUcsd0JBQVd6QixLQUFYLEVBQWtCO0FBQUVkLEVBQUFBLEtBQUssRUFBRTtBQUFULENBQWxCLEVBQW1DM0gsT0FBbkMsQ0FBdEI7ZUFFZWtLLGEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IHsgTm9kZVNlbGVjdGlvbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcblxuaW1wb3J0IEJvbGQgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdEJvbGQnO1xuaW1wb3J0IEl0YWxpYyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0SXRhbGljJztcbmltcG9ydCBTdHJpa2V0aHJvdWdoIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRTdHJpa2V0aHJvdWdoJztcbmltcG9ydCBDb2RlIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Db2RlJztcbmltcG9ydCBHcmlkT24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0dyaWRPbic7XG5pbXBvcnQgQnVsbGV0ZWRMaXN0SWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0TGlzdEJ1bGxldGVkJztcbmltcG9ydCBOdW1iZXJlZExpc3RJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRMaXN0TnVtYmVyZWQnO1xuaW1wb3J0IFVuZGVybGluZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0VW5kZXJsaW5lZCc7XG5pbXBvcnQgRnVuY3Rpb25zIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9GdW5jdGlvbnMnO1xuaW1wb3J0IEltYWdlSWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvSW1hZ2UnO1xuaW1wb3J0IFJlZG8gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1JlZG8nO1xuaW1wb3J0IFVuZG8gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1VuZG8nO1xuaW1wb3J0IFRoZWF0ZXJzSWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvVGhlYXRlcnMnO1xuaW1wb3J0IFZvbHVtZVVwSWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvVm9sdW1lVXAnO1xuaW1wb3J0IEJvcmRlckFsbCBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvQm9yZGVyQWxsJztcblxuaW1wb3J0IHsgRWRpdG9yQ29udGVudCwgdXNlRWRpdG9yU3RhdGUgfSBmcm9tICdAdGlwdGFwL3JlYWN0JztcblxuaW1wb3J0IHsgUElFX1RPT0xCQVJfX0NMQVNTIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRvb2xiYXJJY29uIH0gZnJvbSAnLi9yZXNwQXJlYS9Ub29sYmFySWNvbic7XG5pbXBvcnQgeyBzcGFuaXNoQ29uZmlnLCBzcGVjaWFsQ29uZmlnIH0gZnJvbSAnLi9jaGFyYWN0ZXJzL2NoYXJhY3RlclV0aWxzJztcbmltcG9ydCBUZXh0QWxpZ25JY29uIGZyb20gJy4vaWNvbnMvVGV4dEFsaWduJztcbmltcG9ydCBDU1NJY29uIGZyb20gJy4vaWNvbnMvQ3NzSWNvbic7XG5pbXBvcnQgeyBBZGRDb2x1bW4sIEFkZFJvdywgUmVtb3ZlQ29sdW1uLCBSZW1vdmVSb3csIFJlbW92ZVRhYmxlIH0gZnJvbSAnLi9pY29ucy90YWJsZUljb25zJztcblxuaW1wb3J0IHsgQ2hhcmFjdGVySWNvbiwgQ2hhcmFjdGVyUGlja2VyIH0gZnJvbSAnLi9DaGFyYWN0ZXJQaWNrZXInO1xuaW1wb3J0IHsgRG9uZUJ1dHRvbiB9IGZyb20gJy4vY29tbW9uL2RvbmUtYnV0dG9uJztcblxuY29uc3QgU3VwZXJzY3JpcHRJY29uID0gKCkgPT4gKFxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCJub25lXCI+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMjIsN2gtMnYxaDN2MWgtNFY3YzAtMC41NSwwLjQ1LTEsMS0xaDJWNWgtM1Y0aDNjMC41NSwwLDEsMC40NSwxLDF2MUMyMyw2LjU1LDIyLjU1LDcsMjIsN3ogTTUuODgsMjBoMi42NmwzLjQtNS40MmgwLjEyIGwzLjQsNS40MmgyLjY2bC00LjY1LTcuMjdMMTcuODEsNmgtMi42OGwtMy4wNyw0Ljk5aC0wLjEyTDguODUsNkg2LjE5bDQuMzIsNi43M0w1Ljg4LDIwelwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IFN1YnNjcmlwdEljb24gPSAoKSA9PiAoXG4gIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0yMiwxOGgtMnYxaDN2MWgtNHYtMmMwLTAuNTUsMC40NS0xLDEtMWgydi0xaC0zdi0xaDNjMC41NSwwLDEsMC40NSwxLDF2MUMyMywxNy41NSwyMi41NSwxOCwyMiwxOHogTTUuODgsMThoMi42NiBsMy40LTUuNDJoMC4xMmwzLjQsNS40MmgyLjY2bC00LjY1LTcuMjdMMTcuODEsNGgtMi42OGwtMy4wNyw0Ljk5aC0wLjEyTDguODUsNEg2LjE5bDQuMzIsNi43M0w1Ljg4LDE4elwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IEhlYWRpbmdJY29uID0gKCkgPT4gKFxuICA8c3ZnXG4gICAgd2lkdGg9XCIzMFwiXG4gICAgaGVpZ2h0PVwiMjhcIlxuICAgIHZpZXdCb3g9XCIwIDAgMzAgMjhcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICBzdHlsZT17eyB3aWR0aDogJzIwcHgnLCBoZWlnaHQ6ICcxOHB4JyB9fVxuICA+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMjcgNFYyNEgyOUMyOS41IDI0IDMwIDI0LjUgMzAgMjVWMjdDMzAgMjcuNTYyNSAyOS41IDI4IDI5IDI4SDE5QzE4LjQzNzUgMjggMTggMjcuNTYyNSAxOCAyN1YyNUMxOCAyNC41IDE4LjQzNzUgMjQgMTkgMjRIMjFWMTZIOVYyNEgxMUMxMS41IDI0IDEyIDI0LjUgMTIgMjVWMjdDMTIgMjcuNTYyNSAxMS41IDI4IDExIDI4SDFDMC40Mzc1IDI4IDAgMjcuNTYyNSAwIDI3VjI1QzAgMjQuNSAwLjQzNzUgMjQgMSAyNEgzVjRIMUMwLjQzNzUgNCAwIDMuNTYyNSAwIDNWMUMwIDAuNSAwLjQzNzUgMCAxIDBIMTFDMTEuNSAwIDEyIDAuNSAxMiAxVjNDMTIgMy41NjI1IDExLjUgNCAxMSA0SDlWMTJIMjFWNEgxOUMxOC40Mzc1IDQgMTggMy41NjI1IDE4IDNWMUMxOCAwLjUgMTguNDM3NSAwIDE5IDBIMjlDMjkuNSAwIDMwIDAuNSAzMCAxVjNDMzAgMy41NjI1IDI5LjUgNCAyOSA0SDI3WlwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmZ1bmN0aW9uIE1lbnVCYXIoeyBlZGl0b3IsIGNsYXNzZXMsIGFjdGl2ZVBsdWdpbnMsIHRvb2xiYXJPcHRzOiB0b29sT3B0cywgcmVzcG9uc2VBcmVhUHJvcHMsIG9uQ2hhbmdlIH0pIHtcbiAgY29uc3QgW3Nob3dQaWNrZXIsIHNldFNob3dQaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB0b29sYmFyT3B0cyA9IHRvb2xPcHRzID8/IHt9O1xuXG4gIGNvbnN0IGVkaXRvclN0YXRlID0gdXNlRWRpdG9yU3RhdGUoe1xuICAgIGVkaXRvcixcbiAgICBzZWxlY3RvcjogKGN0eCkgPT4ge1xuICAgICAgY29uc3QgeyBzZWxlY3Rpb24gfSA9IGN0eC5lZGl0b3I/LnN0YXRlIHx8IHt9O1xuXG4gICAgICBsZXQgY3VycmVudE5vZGU7XG5cbiAgICAgIGlmIChzZWxlY3Rpb24gaW5zdGFuY2VvZiBOb2RlU2VsZWN0aW9uKSB7XG4gICAgICAgIGN1cnJlbnROb2RlID0gc2VsZWN0aW9uLm5vZGU7IC8vIHRoZSBzZWxlY3RlZCBub2RlXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhpZGVEZWZhdWx0VG9vbGJhciA9XG4gICAgICAgIGN0eC5lZGl0b3I/LmlzQWN0aXZlKCdtYXRoJykgfHxcbiAgICAgICAgY3R4LmVkaXRvcj8uaXNBY3RpdmUoJ2V4cGxpY2l0X2NvbnN0cnVjdGVkX3Jlc3BvbnNlJykgfHxcbiAgICAgICAgY3R4LmVkaXRvcj8uaXNBY3RpdmUoJ2ltYWdlVXBsb2FkTm9kZScpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXJyZW50Tm9kZSxcbiAgICAgICAgaGlkZURlZmF1bHRUb29sYmFyLFxuICAgICAgICBpc0ZvY3VzZWQ6IGN0eC5lZGl0b3I/LmlzRm9jdXNlZCxcbiAgICAgICAgaXNCb2xkOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdib2xkJykgPz8gZmFsc2UsXG4gICAgICAgIGNhbkJvbGQ6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnRvZ2dsZUJvbGQoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBpc1RhYmxlOiBjdHguZWRpdG9yLmlzQWN0aXZlKCd0YWJsZScpID8/IGZhbHNlLFxuICAgICAgICB0YWJsZUhhc0JvcmRlcjogY3R4LmVkaXRvci5nZXRBdHRyaWJ1dGVzKCd0YWJsZScpPy5ib3JkZXIgPT09ICcxJyA/PyBmYWxzZSxcbiAgICAgICAgY2FuVGFibGU6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmluc2VydFRhYmxlKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNJdGFsaWM6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2l0YWxpYycpID8/IGZhbHNlLFxuICAgICAgICBjYW5JdGFsaWM6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnRvZ2dsZUl0YWxpYygpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzU3RyaWtlOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdzdHJpa2UnKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuU3RyaWtlOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC50b2dnbGVTdHJpa2UoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBpc0NvZGU6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2NvZGUnKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuQ29kZTpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudG9nZ2xlQ29kZSgpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGNhbkNsZWFyTWFya3M6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnVuc2V0QWxsTWFya3MoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBpc1VuZGVybGluZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgndW5kZXJsaW5lJykgPz8gZmFsc2UsXG4gICAgICAgIGlzU3ViU2NyaXB0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdzdWJzY3JpcHQnKSA/PyBmYWxzZSxcbiAgICAgICAgaXNTdXBlclNjcmlwdDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnc3VwZXJzY3JpcHQnKSA/PyBmYWxzZSxcbiAgICAgICAgaXNQYXJhZ3JhcGg6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3BhcmFncmFwaCcpID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmcxOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogMSB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nMjogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDIgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzM6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiAzIH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmc0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogNCB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nNTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDUgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzY6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiA2IH0pID8/IGZhbHNlLFxuICAgICAgICBpc0J1bGxldExpc3Q6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2J1bGxldExpc3QnKSA/PyBmYWxzZSxcbiAgICAgICAgaXNPcmRlcmVkTGlzdDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnb3JkZXJlZExpc3QnKSA/PyBmYWxzZSxcbiAgICAgICAgaXNDb2RlQmxvY2s6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2NvZGVCbG9jaycpID8/IGZhbHNlLFxuICAgICAgICBpc0Jsb2NrcXVvdGU6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2Jsb2NrcXVvdGUnKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuVW5kbzpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudW5kbygpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGNhblJlZG86XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnJlZG8oKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgfTtcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBoYXNEb25lQnV0dG9uID0gZmFsc2U7XG4gIGNvbnN0IGF1dG9XaWR0aCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5hbWVzID0gY2xhc3NOYW1lcyhjbGFzc2VzLnRvb2xiYXIsIFBJRV9UT09MQkFSX19DTEFTUywge1xuICAgIFtjbGFzc2VzLnRvb2xiYXJXaXRoTm9Eb25lXTogIWhhc0RvbmVCdXR0b24sXG4gICAgW2NsYXNzZXMudG9vbGJhclRvcF06IHRvb2xiYXJPcHRzLnBvc2l0aW9uID09PSAndG9wJyxcbiAgICBbY2xhc3Nlcy50b29sYmFyUmlnaHRdOiB0b29sYmFyT3B0cy5hbGlnbm1lbnQgPT09ICdyaWdodCcsXG4gICAgW2NsYXNzZXMuZm9jdXNlZF06IHRvb2xiYXJPcHRzLmFsd2F5c1Zpc2libGUgfHwgKGVkaXRvclN0YXRlLmlzRm9jdXNlZCAmJiAhZWRpdG9yLl90b29sYmFyT3BlbmVkKSxcbiAgICBbY2xhc3Nlcy5hdXRvV2lkdGhdOiBhdXRvV2lkdGgsXG4gICAgW2NsYXNzZXMuZnVsbFdpZHRoXTogIWF1dG9XaWR0aCxcbiAgICBbY2xhc3Nlcy5oaWRkZW5dOiB0b29sYmFyT3B0cy5pc0hpZGRlbiA9PT0gdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3QgY3VzdG9tU3R5bGVzID0gdG9vbGJhck9wdHMubWluV2lkdGggIT09IHVuZGVmaW5lZCA/IHsgbWluV2lkdGg6IHRvb2xiYXJPcHRzLm1pbldpZHRoIH0gOiB7fTtcblxuICBjb25zdCBoYW5kbGVNb3VzZURvd24gPSAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICBjb25zdCB0b29sYmFyQnV0dG9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gW1xuICAgICAge1xuICAgICAgICBpY29uOiA8R3JpZE9uIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuaW5zZXJ0VGFibGUoeyByb3dzOiAyLCBjb2xzOiAyLCB3aXRoSGVhZGVyUm93OiBmYWxzZSB9KVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCd0YWJsZScpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEFkZFJvdyAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmFkZFJvd0FmdGVyKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZW1vdmVSb3cgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5kZWxldGVSb3coKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEFkZENvbHVtbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmFkZENvbHVtbkFmdGVyKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZW1vdmVDb2x1bW4gLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5kZWxldGVDb2x1bW4oKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFJlbW92ZVRhYmxlIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuZGVsZXRlVGFibGUoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEJvcmRlckFsbCAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYmxlQXR0cnMgPSBlZGl0b3IuZ2V0QXR0cmlidXRlcygndGFibGUnKTtcblxuICAgICAgICAgIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRhYmxlQXR0cnMsXG4gICAgICAgICAgICBib3JkZXI6IHRhYmxlQXR0cnMuYm9yZGVyICE9PSAnMCcgPyAnMCcgOiAnMScsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGVkaXRvci5jb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKCd0YWJsZScsIHVwZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUudGFibGVIYXNCb3JkZXIsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEJvbGQgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVCb2xkKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnYm9sZCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzQm9sZCxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuQm9sZCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxJdGFsaWMgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVJdGFsaWMoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdpdGFsaWMnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0l0YWxpYyxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuSXRhbGljLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFN0cmlrZXRocm91Z2ggLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVTdHJpa2UoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdzdHJpa2V0aHJvdWdoJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNTdHJpa2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblN0cmlrZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxDb2RlIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlQ29kZSgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2NvZGUnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0NvZGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhbkNvZGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8VW5kZXJsaW5lIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlVW5kZXJsaW5lKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygndW5kZXJsaW5lJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNVbmRlcmxpbmUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8U3Vic2NyaXB0SWNvbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZVN1YnNjcmlwdCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3N1YnNjcmlwdCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzU3ViU2NyaXB0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFN1cGVyc2NyaXB0SWNvbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZVN1cGVyc2NyaXB0KClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnc3VwZXJzY3JpcHQnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1N1cGVyU2NyaXB0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEltYWdlSWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnaW1hZ2UnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuc2V0SW1hZ2VVcGxvYWROb2RlKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxUaGVhdGVyc0ljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3ZpZGVvJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmluc2VydE1lZGlhKHsgdGFnOiAndmlkZW8nIH0pXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Vm9sdW1lVXBJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdhdWRpbycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5pbnNlcnRNZWRpYSh7IHRhZzogJ2F1ZGlvJyB9KVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPENTU0ljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2NzcycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+IGVkaXRvci5jb21tYW5kcy5vcGVuQ1NTQ2xhc3NEaWFsb2coKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxIZWFkaW5nSWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnaDMnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlSGVhZGluZyh7IGxldmVsOiAzIH0pXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzSGVhZGluZzMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8RnVuY3Rpb25zIC8+LFxuICAgICAgICBoaWRkZW46ICgpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnbWF0aCcpLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuaW5zZXJ0TWF0aCgnJylcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxDaGFyYWN0ZXJJY29uIGxldHRlcj1cIsOxXCIgLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2xhbmd1YWdlQ2hhcmFjdGVycycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldFNob3dQaWNrZXIoc3BhbmlzaENvbmZpZyksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Q2hhcmFjdGVySWNvbiBsZXR0ZXI9XCLigqxcIiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+IGFjdGl2ZVBsdWdpbnM/LmZpbHRlcigocCkgPT4gcCA9PT0gJ2xhbmd1YWdlQ2hhcmFjdGVycycpLmxlbmd0aCAhPT0gMiB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiBzZXRTaG93UGlja2VyKHNwZWNpYWxDb25maWcpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFRleHRBbGlnbkljb24gZWRpdG9yPXtlZGl0b3J9IC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCd0ZXh0LWFsaWduJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKCkgPT4ge30sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8QnVsbGV0ZWRMaXN0SWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnYnVsbGV0ZWQtbGlzdCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVCdWxsZXRMaXN0KClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNCdWxsZXRMaXN0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPE51bWJlcmVkTGlzdEljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ251bWJlcmVkLWxpc3QnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlT3JkZXJlZExpc3QoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc09yZGVyZWRMaXN0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFVuZG8gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3VuZG8nKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudW5kbygpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblVuZG8sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8UmVkbyAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygncmVkbycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5yZWRvKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuUmVkbyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBbYWN0aXZlUGx1Z2lucywgZWRpdG9yXSxcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtuYW1lc30gc3R5bGU9e3sgLi4uY3VzdG9tU3R5bGVzIH19IG9uTW91c2VEb3duPXtoYW5kbGVNb3VzZURvd259PlxuICAgICAgeyFlZGl0b3JTdGF0ZS5oaWRlRGVmYXVsdFRvb2xiYXIgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5kZWZhdWx0VG9vbGJhcn0gdGFiSW5kZXg9XCIxXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuYnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICB7dG9vbGJhckJ1dHRvbnNcbiAgICAgICAgICAgICAgLmZpbHRlcigoYnRuKSA9PiAhYnRuLmhpZGRlbj8uKGVkaXRvclN0YXRlKSlcbiAgICAgICAgICAgICAgLm1hcCgoYnRuLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gYnRuLmlzRGlzYWJsZWQ/LihlZGl0b3JTdGF0ZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gYnRuLmlzQWN0aXZlPy4oZWRpdG9yU3RhdGUpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICBidG4ub25DbGljayhlZGl0b3IpO1xuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24sIHsgW2NsYXNzZXMuYWN0aXZlXTogYWN0aXZlIH0pfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7YnRuLmljb259XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7YWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3Jlc3BvbnNlQXJlYScpICYmIChcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAgICAgICAuaW5zZXJ0UmVzcG9uc2VBcmVhKHJlc3BvbnNlQXJlYVByb3BzLnR5cGUpXG4gICAgICAgICAgICAgICAgICAucnVuKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxUb29sYmFySWNvbiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIDxEb25lQnV0dG9uXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPy4oZWRpdG9yLmdldEhUTUwoKSk7XG4gICAgICAgICAgICAgIGVkaXRvci5jb21tYW5kcy5ibHVyKCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAgIHtzaG93UGlja2VyICYmIChcbiAgICAgICAgPENoYXJhY3RlclBpY2tlclxuICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgIG9wdHM9e3tcbiAgICAgICAgICAgIC4uLnNob3dQaWNrZXIsXG4gICAgICAgICAgICByZW5kZXJQb3BPdmVyOiAoZXYsIGNoKSA9PiBjb25zb2xlLmxvZygnU2hvdyBwb3BvdmVyJywgY2gpLFxuICAgICAgICAgICAgY2xvc2VQb3BPdmVyOiAoKSA9PiBjb25zb2xlLmxvZygnQ2xvc2UgcG9wb3ZlcicpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U2hvd1BpY2tlcihmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCBzdHlsZSA9ICh0aGVtZSkgPT4gKHtcbiAgZGVmYXVsdFRvb2xiYXI6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICB9LFxuICBidXR0b25zQ29udGFpbmVyOiB7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gIH0sXG4gIGJ1dHRvbjoge1xuICAgIGNvbG9yOiAnZ3JleScsXG4gICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICBwYWRkaW5nOiAnMnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnbm9uZScsXG4gICAgYm9yZGVyOiAnbm9uZScsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICBjb2xvcjogJ2JsYWNrJyxcbiAgICB9LFxuICAgICcmOmZvY3VzJzoge1xuICAgICAgb3V0bGluZTogYDJweCBzb2xpZCAke3RoZW1lLnBhbGV0dGUuZ3JleVs3MDBdfWAsXG4gICAgfSxcbiAgfSxcbiAgYWN0aXZlOiB7XG4gICAgY29sb3I6ICdibGFjaycsXG4gIH0sXG4gIGRpc2FibGVkOiB7XG4gICAgb3BhY2l0eTogMC43LFxuICAgIGN1cnNvcjogJ25vdC1hbGxvd2VkJyxcbiAgICAnJiA6aG92ZXInOiB7XG4gICAgICBjb2xvcjogJ2dyZXknLFxuICAgIH0sXG4gIH0sXG4gIGlzQWN0aXZlOiB7XG4gICAgYmFja2dyb3VuZDogJ3ZhcigtLXB1cnBsZSknLFxuICAgIGNvbG9yOiAndmFyKC0td2hpdGUpJyxcbiAgfSxcbiAgdG9vbGJhcjoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHpJbmRleDogMjAsXG4gICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgICBiYWNrZ3JvdW5kOiAndmFyKC0tZWRpdGFibGUtaHRtbC10b29sYmFyLWJnLCAjZWZlZmVmKScsXG4gICAgbWluV2lkdGg6ICcyODBweCcsXG4gICAgbWFyZ2luOiAnNXB4IDAgMCAwJyxcbiAgICBwYWRkaW5nOiAnMnB4JyxcbiAgICBib3hTaGFkb3c6XG4gICAgICAnMHB4IDFweCA1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDJweCAycHggMHB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjEyKScsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIG9wYWNpdHk6IDAsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICB9LFxuICB0b29sYmFyV2l0aE5vRG9uZToge1xuICAgIG1pbldpZHRoOiAnMjY1cHgnLFxuICB9LFxuICB0b29sYmFyVG9wOiB7XG4gICAgdG9wOiAnLTQ1cHgnLFxuICB9LFxuICB0b29sYmFyUmlnaHQ6IHtcbiAgICByaWdodDogMCxcbiAgfSxcbiAgZnVsbFdpZHRoOiB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgfSxcbiAgaGlkZGVuOiB7XG4gICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsXG4gIH0sXG4gIGF1dG9XaWR0aDoge1xuICAgIHdpZHRoOiAnYXV0bycsXG4gIH0sXG4gIGZvY3VzZWQ6IHtcbiAgICBvcGFjaXR5OiAxLFxuICAgIHBvaW50ZXJFdmVudHM6ICdhdXRvJyxcbiAgfSxcbiAgaWNvblJvb3Q6IHtcbiAgICB3aWR0aDogJzI4cHgnLFxuICAgIGhlaWdodDogJzI4cHgnLFxuICAgIHBhZGRpbmc6ICc0cHgnLFxuICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuICB9LFxuICBsYWJlbDoge1xuICAgIGNvbG9yOiAndmFyKC0tZWRpdGFibGUtaHRtbC10b29sYmFyLWNoZWNrLCAjMDBiYjAwKScsXG4gIH0sXG4gIHNoYXJlZDoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgfSxcbn0pO1xuXG5jb25zdCBTdHlsZWRNZW51QmFyID0gd2l0aFN0eWxlcyhzdHlsZSwgeyBpbmRleDogMTAwMCB9KShNZW51QmFyKTtcblxuZXhwb3J0IGRlZmF1bHQgU3R5bGVkTWVudUJhcjtcbiJdfQ==
|