@pie-lib/editable-html-tip-tap 1.0.2 → 1.0.4
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/CharacterPicker.js.map +1 -0
- package/lib/components/EditableHtml.js +323 -0
- package/lib/components/EditableHtml.js.map +1 -0
- package/lib/components/MenuBar.js +694 -0
- package/lib/components/MenuBar.js.map +1 -0
- package/lib/components/TiptapContainer.js +90 -0
- package/lib/components/TiptapContainer.js.map +1 -0
- package/lib/components/buttons/done-button.js +53 -0
- package/lib/components/characters/characterUtils.js +112 -0
- package/lib/components/characters/characterUtils.js.map +1 -0
- package/lib/components/characters/custom-popper.js +73 -0
- package/lib/components/characters/custom-popper.js.map +1 -0
- package/lib/components/common/done-button.js +53 -0
- package/lib/components/common/done-button.js.map +1 -0
- package/lib/components/common/toolbar-buttons.js +194 -0
- package/lib/components/icons/CssIcon.js +37 -0
- package/lib/components/icons/CssIcon.js.map +1 -0
- package/lib/components/icons/RespArea.js +95 -0
- package/lib/components/icons/RespArea.js.map +1 -0
- package/lib/components/icons/TableIcons.js +69 -0
- package/lib/components/icons/TableIcons.js.map +1 -0
- package/lib/components/icons/TextAlign.js +194 -0
- package/lib/components/icons/TextAlign.js.map +1 -0
- package/lib/components/icons/index.js +194 -0
- package/lib/components/image/AltDialog.js +129 -0
- package/lib/components/image/ImageToolbar.js +177 -0
- package/lib/components/image/ImageToolbar.js.map +1 -0
- package/lib/components/image/InsertImageHandler.js +115 -0
- package/lib/components/image/InsertImageHandler.js.map +1 -0
- package/lib/components/image/alt-dialog.js +2 -0
- package/lib/components/media/MediaDialog.js +709 -0
- package/lib/components/media/MediaDialog.js.map +1 -0
- package/lib/components/media/MediaToolbar.js +101 -0
- package/lib/components/media/MediaToolbar.js.map +1 -0
- package/lib/components/media/MediaWrapper.js +93 -0
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js +94 -0
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank/choice.js +289 -0
- package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank.js +94 -0
- package/lib/components/respArea/ExplicitConstructedResponse.js +120 -0
- package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -0
- package/lib/components/respArea/InlineDropdown.js +126 -0
- package/lib/components/respArea/InlineDropdown.js.map +1 -0
- package/lib/components/respArea/ToolbarIcon.js +105 -0
- package/lib/components/respArea/ToolbarIcon.js.map +1 -0
- package/lib/components/respArea/choice.js +2 -0
- package/lib/constants.js.map +1 -0
- package/lib/extensions/component.js +5 -5
- package/lib/extensions/component.js.map +1 -0
- package/lib/extensions/css.js.map +1 -0
- package/lib/extensions/custom-toolbar-wrapper.js +2 -4
- package/lib/extensions/custom-toolbar-wrapper.js.map +1 -0
- package/lib/extensions/extended-table.js +30 -0
- package/lib/extensions/extended-table.js.map +1 -0
- package/lib/extensions/image.js +2 -8
- package/lib/extensions/image.js.map +1 -0
- package/lib/extensions/index.js +52 -0
- package/lib/extensions/index.js.map +1 -0
- package/lib/extensions/math.js.map +1 -0
- package/lib/extensions/media.js +7 -7
- package/lib/extensions/media.js.map +1 -0
- package/lib/extensions/responseArea.js +7 -7
- package/lib/extensions/responseArea.js.map +1 -0
- package/lib/index.js +16 -1481
- package/lib/index.js.map +1 -0
- package/lib/plugins/index.js +8 -80
- package/lib/styles/editorContainerStyles.js +200 -0
- package/lib/styles/editorContainerStyles.js.map +1 -0
- package/lib/theme.js.map +1 -0
- package/lib/utils/size.js +34 -0
- package/lib/utils/size.js.map +1 -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/{plugins/image/image-toolbar.jsx → components/image/ImageToolbar.jsx} +2 -2
- package/src/{plugins/image/insert-image-handler.js → components/image/InsertImageHandler.js} +0 -1
- package/src/{plugins/media/media-dialog.js → components/media/MediaDialog.js} +2 -2
- 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/image.js +2 -2
- package/src/extensions/index.js +76 -0
- package/src/extensions/media.js +12 -7
- 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/component.jsx +0 -343
- package/src/plugins/image/index.jsx +0 -227
- 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/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.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/toolbar → components/common}/toolbar-buttons.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/image/alt-dialog.jsx → components/image/AltDialog.jsx} +0 -0
- /package/src/{plugins/media/media-toolbar.jsx → components/media/MediaToolbar.jsx} +0 -0
- /package/src/{plugins/media/media-wrapper.jsx → components/media/MediaWrapper.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,694 @@
|
|
|
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
|
+
type: '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
|
+
type: 'audio',
|
|
436
|
+
tag: 'audio'
|
|
437
|
+
}).run();
|
|
438
|
+
}
|
|
439
|
+
}, {
|
|
440
|
+
icon: /*#__PURE__*/_react["default"].createElement(_CssIcon["default"], null),
|
|
441
|
+
hidden: function hidden(state) {
|
|
442
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('css')) || state.isTable;
|
|
443
|
+
},
|
|
444
|
+
onClick: function onClick(editor) {
|
|
445
|
+
return editor.commands.openCSSClassDialog();
|
|
446
|
+
}
|
|
447
|
+
}, {
|
|
448
|
+
icon: /*#__PURE__*/_react["default"].createElement(HeadingIcon, null),
|
|
449
|
+
hidden: function hidden(state) {
|
|
450
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('h3')) || state.isTable;
|
|
451
|
+
},
|
|
452
|
+
onClick: function onClick(editor) {
|
|
453
|
+
return editor.chain().focus().toggleHeading({
|
|
454
|
+
level: 3
|
|
455
|
+
}).run();
|
|
456
|
+
},
|
|
457
|
+
isActive: function isActive(state) {
|
|
458
|
+
return state.isHeading3;
|
|
459
|
+
}
|
|
460
|
+
}, {
|
|
461
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Functions["default"], null),
|
|
462
|
+
hidden: function hidden() {
|
|
463
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('math'));
|
|
464
|
+
},
|
|
465
|
+
onClick: function onClick(editor) {
|
|
466
|
+
return editor.chain().focus().insertMath('').run();
|
|
467
|
+
}
|
|
468
|
+
}, {
|
|
469
|
+
icon: /*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
|
|
470
|
+
letter: "\xF1"
|
|
471
|
+
}),
|
|
472
|
+
hidden: function hidden(state) {
|
|
473
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('languageCharacters')) || state.isTable;
|
|
474
|
+
},
|
|
475
|
+
onClick: function onClick() {
|
|
476
|
+
return setShowPicker(_characterUtils.spanishConfig);
|
|
477
|
+
}
|
|
478
|
+
}, {
|
|
479
|
+
icon: /*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterIcon, {
|
|
480
|
+
letter: "\u20AC"
|
|
481
|
+
}),
|
|
482
|
+
hidden: function hidden(state) {
|
|
483
|
+
return (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.filter(function (p) {
|
|
484
|
+
return p === 'languageCharacters';
|
|
485
|
+
}).length) !== 2 || state.isTable;
|
|
486
|
+
},
|
|
487
|
+
onClick: function onClick() {
|
|
488
|
+
return setShowPicker(_characterUtils.specialConfig);
|
|
489
|
+
}
|
|
490
|
+
}, {
|
|
491
|
+
icon: /*#__PURE__*/_react["default"].createElement(_TextAlign["default"], {
|
|
492
|
+
editor: editor
|
|
493
|
+
}),
|
|
494
|
+
hidden: function hidden(state) {
|
|
495
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('text-align')) || state.isTable;
|
|
496
|
+
},
|
|
497
|
+
onClick: function onClick() {}
|
|
498
|
+
}, {
|
|
499
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null),
|
|
500
|
+
hidden: function hidden(state) {
|
|
501
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('bulleted-list')) || state.isTable;
|
|
502
|
+
},
|
|
503
|
+
onClick: function onClick(editor) {
|
|
504
|
+
return editor.chain().focus().toggleBulletList().run();
|
|
505
|
+
},
|
|
506
|
+
isActive: function isActive(state) {
|
|
507
|
+
return state.isBulletList;
|
|
508
|
+
}
|
|
509
|
+
}, {
|
|
510
|
+
icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null),
|
|
511
|
+
hidden: function hidden(state) {
|
|
512
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('numbered-list')) || state.isTable;
|
|
513
|
+
},
|
|
514
|
+
onClick: function onClick(editor) {
|
|
515
|
+
return editor.chain().focus().toggleOrderedList().run();
|
|
516
|
+
},
|
|
517
|
+
isActive: function isActive(state) {
|
|
518
|
+
return state.isOrderedList;
|
|
519
|
+
}
|
|
520
|
+
}, {
|
|
521
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Undo["default"], null),
|
|
522
|
+
hidden: function hidden(state) {
|
|
523
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('undo')) || state.isTable;
|
|
524
|
+
},
|
|
525
|
+
onClick: function onClick(editor) {
|
|
526
|
+
return editor.chain().focus().undo().run();
|
|
527
|
+
},
|
|
528
|
+
isDisabled: function isDisabled(state) {
|
|
529
|
+
return !state.canUndo;
|
|
530
|
+
}
|
|
531
|
+
}, {
|
|
532
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Redo["default"], null),
|
|
533
|
+
hidden: function hidden(state) {
|
|
534
|
+
return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('redo')) || state.isTable;
|
|
535
|
+
},
|
|
536
|
+
onClick: function onClick(editor) {
|
|
537
|
+
return editor.chain().focus().redo().run();
|
|
538
|
+
},
|
|
539
|
+
isDisabled: function isDisabled(state) {
|
|
540
|
+
return !state.canRedo;
|
|
541
|
+
}
|
|
542
|
+
}];
|
|
543
|
+
}, [activePlugins, editor]);
|
|
544
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
545
|
+
className: names,
|
|
546
|
+
style: _objectSpread({}, customStyles),
|
|
547
|
+
onMouseDown: handleMouseDown
|
|
548
|
+
}, !editorState.hideDefaultToolbar && /*#__PURE__*/_react["default"].createElement("div", {
|
|
549
|
+
className: classes.defaultToolbar,
|
|
550
|
+
tabIndex: "1"
|
|
551
|
+
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
552
|
+
className: classes.buttonsContainer
|
|
553
|
+
}, toolbarButtons.filter(function (btn) {
|
|
554
|
+
var _btn$hidden;
|
|
555
|
+
|
|
556
|
+
return !((_btn$hidden = btn.hidden) !== null && _btn$hidden !== void 0 && _btn$hidden.call(btn, editorState));
|
|
557
|
+
}).map(function (btn, index) {
|
|
558
|
+
var _btn$isDisabled, _btn$isActive;
|
|
559
|
+
|
|
560
|
+
var disabled = (_btn$isDisabled = btn.isDisabled) === null || _btn$isDisabled === void 0 ? void 0 : _btn$isDisabled.call(btn, editorState);
|
|
561
|
+
var active = (_btn$isActive = btn.isActive) === null || _btn$isActive === void 0 ? void 0 : _btn$isActive.call(btn, editorState);
|
|
562
|
+
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
563
|
+
key: index,
|
|
564
|
+
disabled: disabled,
|
|
565
|
+
onClick: function onClick(e) {
|
|
566
|
+
e.preventDefault();
|
|
567
|
+
btn.onClick(editor);
|
|
568
|
+
},
|
|
569
|
+
className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, active))
|
|
570
|
+
}, btn.icon);
|
|
571
|
+
})), (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.includes('responseArea')) && /*#__PURE__*/_react["default"].createElement("button", {
|
|
572
|
+
onClick: function onClick() {
|
|
573
|
+
editor.chain().focus().insertResponseArea(responseAreaProps.type).run();
|
|
574
|
+
},
|
|
575
|
+
className: classes.button
|
|
576
|
+
}, /*#__PURE__*/_react["default"].createElement(_ToolbarIcon.ToolbarIcon, null)), /*#__PURE__*/_react["default"].createElement(_doneButton.DoneButton, {
|
|
577
|
+
onClick: function onClick() {
|
|
578
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(editor.getHTML());
|
|
579
|
+
editor.commands.blur();
|
|
580
|
+
}
|
|
581
|
+
})), showPicker && /*#__PURE__*/_react["default"].createElement(_CharacterPicker.CharacterPicker, {
|
|
582
|
+
editor: editor,
|
|
583
|
+
opts: _objectSpread(_objectSpread({}, showPicker), {}, {
|
|
584
|
+
renderPopOver: function renderPopOver(ev, ch) {
|
|
585
|
+
return console.log('Show popover', ch);
|
|
586
|
+
},
|
|
587
|
+
closePopOver: function closePopOver() {
|
|
588
|
+
return console.log('Close popover');
|
|
589
|
+
}
|
|
590
|
+
}),
|
|
591
|
+
onClose: function onClose() {
|
|
592
|
+
return setShowPicker(false);
|
|
593
|
+
}
|
|
594
|
+
}));
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
var style = function style(theme) {
|
|
598
|
+
return {
|
|
599
|
+
defaultToolbar: {
|
|
600
|
+
display: 'flex',
|
|
601
|
+
width: '100%',
|
|
602
|
+
justifyContent: 'space-between'
|
|
603
|
+
},
|
|
604
|
+
buttonsContainer: {
|
|
605
|
+
alignItems: 'center',
|
|
606
|
+
display: 'flex',
|
|
607
|
+
width: '100%'
|
|
608
|
+
},
|
|
609
|
+
button: {
|
|
610
|
+
color: 'grey',
|
|
611
|
+
display: 'inline-flex',
|
|
612
|
+
padding: '2px',
|
|
613
|
+
background: 'none',
|
|
614
|
+
border: 'none',
|
|
615
|
+
cursor: 'pointer',
|
|
616
|
+
'&:hover': {
|
|
617
|
+
color: 'black'
|
|
618
|
+
},
|
|
619
|
+
'&:focus': {
|
|
620
|
+
outline: "2px solid ".concat(theme.palette.grey[700])
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
active: {
|
|
624
|
+
color: 'black'
|
|
625
|
+
},
|
|
626
|
+
disabled: {
|
|
627
|
+
opacity: 0.7,
|
|
628
|
+
cursor: 'not-allowed',
|
|
629
|
+
'& :hover': {
|
|
630
|
+
color: 'grey'
|
|
631
|
+
}
|
|
632
|
+
},
|
|
633
|
+
isActive: {
|
|
634
|
+
background: 'var(--purple)',
|
|
635
|
+
color: 'var(--white)'
|
|
636
|
+
},
|
|
637
|
+
toolbar: {
|
|
638
|
+
position: 'absolute',
|
|
639
|
+
zIndex: 20,
|
|
640
|
+
cursor: 'pointer',
|
|
641
|
+
justifyContent: 'space-between',
|
|
642
|
+
background: 'var(--editable-html-toolbar-bg, #efefef)',
|
|
643
|
+
minWidth: '280px',
|
|
644
|
+
margin: '5px 0 0 0',
|
|
645
|
+
padding: '2px',
|
|
646
|
+
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)',
|
|
647
|
+
boxSizing: 'border-box',
|
|
648
|
+
display: 'flex',
|
|
649
|
+
opacity: 0,
|
|
650
|
+
pointerEvents: 'none'
|
|
651
|
+
},
|
|
652
|
+
toolbarWithNoDone: {
|
|
653
|
+
minWidth: '265px'
|
|
654
|
+
},
|
|
655
|
+
toolbarTop: {
|
|
656
|
+
top: '-45px'
|
|
657
|
+
},
|
|
658
|
+
toolbarRight: {
|
|
659
|
+
right: 0
|
|
660
|
+
},
|
|
661
|
+
fullWidth: {
|
|
662
|
+
width: '100%'
|
|
663
|
+
},
|
|
664
|
+
hidden: {
|
|
665
|
+
visibility: 'hidden'
|
|
666
|
+
},
|
|
667
|
+
autoWidth: {
|
|
668
|
+
width: 'auto'
|
|
669
|
+
},
|
|
670
|
+
focused: {
|
|
671
|
+
opacity: 1,
|
|
672
|
+
pointerEvents: 'auto'
|
|
673
|
+
},
|
|
674
|
+
iconRoot: {
|
|
675
|
+
width: '28px',
|
|
676
|
+
height: '28px',
|
|
677
|
+
padding: '4px',
|
|
678
|
+
verticalAlign: 'top'
|
|
679
|
+
},
|
|
680
|
+
label: {
|
|
681
|
+
color: 'var(--editable-html-toolbar-check, #00bb00)'
|
|
682
|
+
},
|
|
683
|
+
shared: {
|
|
684
|
+
display: 'flex'
|
|
685
|
+
}
|
|
686
|
+
};
|
|
687
|
+
};
|
|
688
|
+
|
|
689
|
+
var StyledMenuBar = (0, _styles.withStyles)(style, {
|
|
690
|
+
index: 1000
|
|
691
|
+
})(MenuBar);
|
|
692
|
+
var _default = StyledMenuBar;
|
|
693
|
+
exports["default"] = _default;
|
|
694
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL01lbnVCYXIuanN4Il0sIm5hbWVzIjpbIlN1cGVyc2NyaXB0SWNvbiIsIlN1YnNjcmlwdEljb24iLCJIZWFkaW5nSWNvbiIsIndpZHRoIiwiaGVpZ2h0IiwiTWVudUJhciIsImVkaXRvciIsImNsYXNzZXMiLCJhY3RpdmVQbHVnaW5zIiwidG9vbE9wdHMiLCJ0b29sYmFyT3B0cyIsInJlc3BvbnNlQXJlYVByb3BzIiwib25DaGFuZ2UiLCJzaG93UGlja2VyIiwic2V0U2hvd1BpY2tlciIsImVkaXRvclN0YXRlIiwic2VsZWN0b3IiLCJjdHgiLCJzdGF0ZSIsInNlbGVjdGlvbiIsImN1cnJlbnROb2RlIiwiTm9kZVNlbGVjdGlvbiIsIm5vZGUiLCJoaWRlRGVmYXVsdFRvb2xiYXIiLCJpc0FjdGl2ZSIsImlzRm9jdXNlZCIsImlzQm9sZCIsImNhbkJvbGQiLCJjYW4iLCJjaGFpbiIsInRvZ2dsZUJvbGQiLCJydW4iLCJpc1RhYmxlIiwidGFibGVIYXNCb3JkZXIiLCJnZXRBdHRyaWJ1dGVzIiwiYm9yZGVyIiwiY2FuVGFibGUiLCJpbnNlcnRUYWJsZSIsImlzSXRhbGljIiwiY2FuSXRhbGljIiwidG9nZ2xlSXRhbGljIiwiaXNTdHJpa2UiLCJjYW5TdHJpa2UiLCJ0b2dnbGVTdHJpa2UiLCJpc0NvZGUiLCJjYW5Db2RlIiwidG9nZ2xlQ29kZSIsImNhbkNsZWFyTWFya3MiLCJ1bnNldEFsbE1hcmtzIiwiaXNVbmRlcmxpbmUiLCJpc1N1YlNjcmlwdCIsImlzU3VwZXJTY3JpcHQiLCJpc1BhcmFncmFwaCIsImlzSGVhZGluZzEiLCJsZXZlbCIsImlzSGVhZGluZzIiLCJpc0hlYWRpbmczIiwiaXNIZWFkaW5nNCIsImlzSGVhZGluZzUiLCJpc0hlYWRpbmc2IiwiaXNCdWxsZXRMaXN0IiwiaXNPcmRlcmVkTGlzdCIsImlzQ29kZUJsb2NrIiwiaXNCbG9ja3F1b3RlIiwiY2FuVW5kbyIsInVuZG8iLCJjYW5SZWRvIiwicmVkbyIsImhhc0RvbmVCdXR0b24iLCJhdXRvV2lkdGgiLCJuYW1lcyIsInRvb2xiYXIiLCJQSUVfVE9PTEJBUl9fQ0xBU1MiLCJ0b29sYmFyV2l0aE5vRG9uZSIsInRvb2xiYXJUb3AiLCJwb3NpdGlvbiIsInRvb2xiYXJSaWdodCIsImFsaWdubWVudCIsImZvY3VzZWQiLCJhbHdheXNWaXNpYmxlIiwiX3Rvb2xiYXJPcGVuZWQiLCJmdWxsV2lkdGgiLCJoaWRkZW4iLCJpc0hpZGRlbiIsImN1c3RvbVN0eWxlcyIsIm1pbldpZHRoIiwidW5kZWZpbmVkIiwiaGFuZGxlTW91c2VEb3duIiwiZSIsInByZXZlbnREZWZhdWx0IiwidG9vbGJhckJ1dHRvbnMiLCJpY29uIiwib25DbGljayIsImZvY3VzIiwicm93cyIsImNvbHMiLCJ3aXRoSGVhZGVyUm93IiwiaW5jbHVkZXMiLCJpc0Rpc2FibGVkIiwiYWRkUm93QWZ0ZXIiLCJkZWxldGVSb3ciLCJhZGRDb2x1bW5BZnRlciIsImRlbGV0ZUNvbHVtbiIsImRlbGV0ZVRhYmxlIiwidGFibGVBdHRycyIsInVwZGF0ZSIsImNvbW1hbmRzIiwidXBkYXRlQXR0cmlidXRlcyIsInRvZ2dsZVVuZGVybGluZSIsInRvZ2dsZVN1YnNjcmlwdCIsInRvZ2dsZVN1cGVyc2NyaXB0Iiwic2V0SW1hZ2VVcGxvYWROb2RlIiwiaW5zZXJ0TWVkaWEiLCJ0eXBlIiwidGFnIiwib3BlbkNTU0NsYXNzRGlhbG9nIiwidG9nZ2xlSGVhZGluZyIsImluc2VydE1hdGgiLCJzcGFuaXNoQ29uZmlnIiwiZmlsdGVyIiwicCIsImxlbmd0aCIsInNwZWNpYWxDb25maWciLCJ0b2dnbGVCdWxsZXRMaXN0IiwidG9nZ2xlT3JkZXJlZExpc3QiLCJkZWZhdWx0VG9vbGJhciIsImJ1dHRvbnNDb250YWluZXIiLCJidG4iLCJtYXAiLCJpbmRleCIsImRpc2FibGVkIiwiYWN0aXZlIiwiYnV0dG9uIiwiaW5zZXJ0UmVzcG9uc2VBcmVhIiwiZ2V0SFRNTCIsImJsdXIiLCJyZW5kZXJQb3BPdmVyIiwiZXYiLCJjaCIsImNvbnNvbGUiLCJsb2ciLCJjbG9zZVBvcE92ZXIiLCJzdHlsZSIsInRoZW1lIiwiZGlzcGxheSIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsImNvbG9yIiwicGFkZGluZyIsImJhY2tncm91bmQiLCJjdXJzb3IiLCJvdXRsaW5lIiwicGFsZXR0ZSIsImdyZXkiLCJvcGFjaXR5IiwiekluZGV4IiwibWFyZ2luIiwiYm94U2hhZG93IiwiYm94U2l6aW5nIiwicG9pbnRlckV2ZW50cyIsInRvcCIsInJpZ2h0IiwidmlzaWJpbGl0eSIsImljb25Sb290IiwidmVydGljYWxBbGlnbiIsImxhYmVsIiwic2hhcmVkIiwiU3R5bGVkTWVudUJhciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFFQSxJQUFNQSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCO0FBQUEsc0JBQ3RCO0FBQUssSUFBQSxLQUFLLEVBQUMsNEJBQVg7QUFBd0MsSUFBQSxNQUFNLEVBQUMsTUFBL0M7QUFBc0QsSUFBQSxPQUFPLEVBQUMsV0FBOUQ7QUFBMEUsSUFBQSxLQUFLLEVBQUMsTUFBaEY7QUFBdUYsSUFBQSxJQUFJLEVBQUM7QUFBNUYsa0JBQ0U7QUFDRSxJQUFBLENBQUMsRUFBQyxnTkFESjtBQUVFLElBQUEsSUFBSSxFQUFDO0FBRlAsSUFERixDQURzQjtBQUFBLENBQXhCOztBQVNBLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0I7QUFBQSxzQkFDcEI7QUFBSyxJQUFBLEtBQUssRUFBQyw0QkFBWDtBQUF3QyxJQUFBLE1BQU0sRUFBQyxNQUEvQztBQUFzRCxJQUFBLE9BQU8sRUFB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LEVBQUU7QUFDVDlFLE1BQUFBLEtBQUssRUFBRTtBQURFLEtBaEVhO0FBbUV4QitFLElBQUFBLE1BQU0sRUFBRTtBQUNOZ0YsTUFBQUEsVUFBVSxFQUFFO0FBRE4sS0FuRWdCO0FBc0V4QjdGLElBQUFBLFNBQVMsRUFBRTtBQUNUbEUsTUFBQUEsS0FBSyxFQUFFO0FBREUsS0F0RWE7QUF5RXhCMkUsSUFBQUEsT0FBTyxFQUFFO0FBQ1A0RSxNQUFBQSxPQUFPLEVBQUUsQ0FERjtBQUVQSyxNQUFBQSxhQUFhLEVBQUU7QUFGUixLQXpFZTtBQTZFeEJJLElBQUFBLFFBQVEsRUFBRTtBQUNSaEssTUFBQUEsS0FBSyxFQUFFLE1BREM7QUFFUkMsTUFBQUEsTUFBTSxFQUFFLE1BRkE7QUFHUmdKLE1BQUFBLE9BQU8sRUFBRSxLQUhEO0FBSVJnQixNQUFBQSxhQUFhLEVBQUU7QUFKUCxLQTdFYztBQW1GeEJDLElBQUFBLEtBQUssRUFBRTtBQUNMbEIsTUFBQUEsS0FBSyxFQUFFO0FBREYsS0FuRmlCO0FBc0Z4Qm1CLElBQUFBLE1BQU0sRUFBRTtBQUNOdEIsTUFBQUEsT0FBTyxFQUFFO0FBREg7QUF0RmdCLEdBQVo7QUFBQSxDQUFkOztBQTJGQSxJQUFNdUIsYUFBYSxHQUFHLHdCQUFXekIsS0FBWCxFQUFrQjtBQUFFYixFQUFBQSxLQUFLLEVBQUU7QUFBVCxDQUFsQixFQUFtQzVILE9BQW5DLENBQXRCO2VBRWVrSyxhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCB7IE5vZGVTZWxlY3Rpb24gfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XG5cbmltcG9ydCBCb2xkIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRCb2xkJztcbmltcG9ydCBJdGFsaWMgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdEl0YWxpYyc7XG5pbXBvcnQgU3RyaWtldGhyb3VnaCBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0U3RyaWtldGhyb3VnaCc7XG5pbXBvcnQgQ29kZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvQ29kZSc7XG5pbXBvcnQgR3JpZE9uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9HcmlkT24nO1xuaW1wb3J0IEJ1bGxldGVkTGlzdEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdExpc3RCdWxsZXRlZCc7XG5pbXBvcnQgTnVtYmVyZWRMaXN0SWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0TGlzdE51bWJlcmVkJztcbmltcG9ydCBVbmRlcmxpbmUgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdFVuZGVybGluZWQnO1xuaW1wb3J0IEZ1bmN0aW9ucyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRnVuY3Rpb25zJztcbmltcG9ydCBJbWFnZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0ltYWdlJztcbmltcG9ydCBSZWRvIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9SZWRvJztcbmltcG9ydCBVbmRvIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9VbmRvJztcbmltcG9ydCBUaGVhdGVyc0ljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1RoZWF0ZXJzJztcbmltcG9ydCBWb2x1bWVVcEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1ZvbHVtZVVwJztcbmltcG9ydCBCb3JkZXJBbGwgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0JvcmRlckFsbCc7XG5cbmltcG9ydCB7IEVkaXRvckNvbnRlbnQsIHVzZUVkaXRvclN0YXRlIH0gZnJvbSAnQHRpcHRhcC9yZWFjdCc7XG5cbmltcG9ydCB7IFBJRV9UT09MQkFSX19DTEFTUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUb29sYmFySWNvbiB9IGZyb20gJy4vcmVzcEFyZWEvVG9vbGJhckljb24nO1xuaW1wb3J0IHsgc3BhbmlzaENvbmZpZywgc3BlY2lhbENvbmZpZyB9IGZyb20gJy4vY2hhcmFjdGVycy9jaGFyYWN0ZXJVdGlscyc7XG5pbXBvcnQgVGV4dEFsaWduSWNvbiBmcm9tICcuL2ljb25zL1RleHRBbGlnbic7XG5pbXBvcnQgQ1NTSWNvbiBmcm9tICcuL2ljb25zL0Nzc0ljb24nO1xuaW1wb3J0IHsgQWRkQ29sdW1uLCBBZGRSb3csIFJlbW92ZUNvbHVtbiwgUmVtb3ZlUm93LCBSZW1vdmVUYWJsZSB9IGZyb20gJy4vaWNvbnMvdGFibGVJY29ucyc7XG5cbmltcG9ydCB7IENoYXJhY3Rlckljb24sIENoYXJhY3RlclBpY2tlciB9IGZyb20gJy4vQ2hhcmFjdGVyUGlja2VyJztcbmltcG9ydCB7IERvbmVCdXR0b24gfSBmcm9tICcuL2NvbW1vbi9kb25lLWJ1dHRvbic7XG5cbmNvbnN0IFN1cGVyc2NyaXB0SWNvbiA9ICgpID0+IChcbiAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwibm9uZVwiPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTIyLDdoLTJ2MWgzdjFoLTRWN2MwLTAuNTUsMC40NS0xLDEtMWgyVjVoLTNWNGgzYzAuNTUsMCwxLDAuNDUsMSwxdjFDMjMsNi41NSwyMi41NSw3LDIyLDd6IE01Ljg4LDIwaDIuNjZsMy40LTUuNDJoMC4xMiBsMy40LDUuNDJoMi42NmwtNC42NS03LjI3TDE3LjgxLDZoLTIuNjhsLTMuMDcsNC45OWgtMC4xMkw4Ljg1LDZINi4xOWw0LjMyLDYuNzNMNS44OCwyMHpcIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5jb25zdCBTdWJzY3JpcHRJY29uID0gKCkgPT4gKFxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCJub25lXCI+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMjIsMThoLTJ2MWgzdjFoLTR2LTJjMC0wLjU1LDAuNDUtMSwxLTFoMnYtMWgtM3YtMWgzYzAuNTUsMCwxLDAuNDUsMSwxdjFDMjMsMTcuNTUsMjIuNTUsMTgsMjIsMTh6IE01Ljg4LDE4aDIuNjYgbDMuNC01LjQyaDAuMTJsMy40LDUuNDJoMi42NmwtNC42NS03LjI3TDE3LjgxLDRoLTIuNjhsLTMuMDcsNC45OWgtMC4xMkw4Ljg1LDRINi4xOWw0LjMyLDYuNzNMNS44OCwxOHpcIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5jb25zdCBIZWFkaW5nSWNvbiA9ICgpID0+IChcbiAgPHN2Z1xuICAgIHdpZHRoPVwiMzBcIlxuICAgIGhlaWdodD1cIjI4XCJcbiAgICB2aWV3Qm94PVwiMCAwIDMwIDI4XCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgc3R5bGU9e3sgd2lkdGg6ICcyMHB4JywgaGVpZ2h0OiAnMThweCcgfX1cbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTI3IDRWMjRIMjlDMjkuNSAyNCAzMCAyNC41IDMwIDI1VjI3QzMwIDI3LjU2MjUgMjkuNSAyOCAyOSAyOEgxOUMxOC40Mzc1IDI4IDE4IDI3LjU2MjUgMTggMjdWMjVDMTggMjQuNSAxOC40Mzc1IDI0IDE5IDI0SDIxVjE2SDlWMjRIMTFDMTEuNSAyNCAxMiAyNC41IDEyIDI1VjI3QzEyIDI3LjU2MjUgMTEuNSAyOCAxMSAyOEgxQzAuNDM3NSAyOCAwIDI3LjU2MjUgMCAyN1YyNUMwIDI0LjUgMC40Mzc1IDI0IDEgMjRIM1Y0SDFDMC40Mzc1IDQgMCAzLjU2MjUgMCAzVjFDMCAwLjUgMC40Mzc1IDAgMSAwSDExQzExLjUgMCAxMiAwLjUgMTIgMVYzQzEyIDMuNTYyNSAxMS41IDQgMTEgNEg5VjEySDIxVjRIMTlDMTguNDM3NSA0IDE4IDMuNTYyNSAxOCAzVjFDMTggMC41IDE4LjQzNzUgMCAxOSAwSDI5QzI5LjUgMCAzMCAwLjUgMzAgMVYzQzMwIDMuNTYyNSAyOS41IDQgMjkgNEgyN1pcIlxuICAgICAgZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5mdW5jdGlvbiBNZW51QmFyKHsgZWRpdG9yLCBjbGFzc2VzLCBhY3RpdmVQbHVnaW5zLCB0b29sYmFyT3B0czogdG9vbE9wdHMsIHJlc3BvbnNlQXJlYVByb3BzLCBvbkNoYW5nZSB9KSB7XG4gIGNvbnN0IFtzaG93UGlja2VyLCBzZXRTaG93UGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgdG9vbGJhck9wdHMgPSB0b29sT3B0cyA/PyB7fTtcblxuICBjb25zdCBlZGl0b3JTdGF0ZSA9IHVzZUVkaXRvclN0YXRlKHtcbiAgICBlZGl0b3IsXG4gICAgc2VsZWN0b3I6IChjdHgpID0+IHtcbiAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBjdHguZWRpdG9yPy5zdGF0ZSB8fCB7fTtcblxuICAgICAgbGV0IGN1cnJlbnROb2RlO1xuXG4gICAgICBpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbikge1xuICAgICAgICBjdXJyZW50Tm9kZSA9IHNlbGVjdGlvbi5ub2RlOyAvLyB0aGUgc2VsZWN0ZWQgbm9kZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaWRlRGVmYXVsdFRvb2xiYXIgPVxuICAgICAgICBjdHguZWRpdG9yPy5pc0FjdGl2ZSgnbWF0aCcpIHx8XG4gICAgICAgIGN0eC5lZGl0b3I/LmlzQWN0aXZlKCdleHBsaWNpdF9jb25zdHJ1Y3RlZF9yZXNwb25zZScpIHx8XG4gICAgICAgIGN0eC5lZGl0b3I/LmlzQWN0aXZlKCdpbWFnZVVwbG9hZE5vZGUnKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY3VycmVudE5vZGUsXG4gICAgICAgIGhpZGVEZWZhdWx0VG9vbGJhcixcbiAgICAgICAgaXNGb2N1c2VkOiBjdHguZWRpdG9yPy5pc0ZvY3VzZWQsXG4gICAgICAgIGlzQm9sZDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnYm9sZCcpID8/IGZhbHNlLFxuICAgICAgICBjYW5Cb2xkOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC50b2dnbGVCb2xkKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNUYWJsZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgndGFibGUnKSA/PyBmYWxzZSxcbiAgICAgICAgdGFibGVIYXNCb3JkZXI6IGN0eC5lZGl0b3IuZ2V0QXR0cmlidXRlcygndGFibGUnKT8uYm9yZGVyID09PSAnMScgPz8gZmFsc2UsXG4gICAgICAgIGNhblRhYmxlOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5pbnNlcnRUYWJsZSgpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzSXRhbGljOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdpdGFsaWMnKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuSXRhbGljOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC50b2dnbGVJdGFsaWMoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBpc1N0cmlrZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnc3RyaWtlJykgPz8gZmFsc2UsXG4gICAgICAgIGNhblN0cmlrZTpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudG9nZ2xlU3RyaWtlKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNDb2RlOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdjb2RlJykgPz8gZmFsc2UsXG4gICAgICAgIGNhbkNvZGU6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnRvZ2dsZUNvZGUoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBjYW5DbGVhck1hcmtzOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC51bnNldEFsbE1hcmtzKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNVbmRlcmxpbmU6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3VuZGVybGluZScpID8/IGZhbHNlLFxuICAgICAgICBpc1N1YlNjcmlwdDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnc3Vic2NyaXB0JykgPz8gZmFsc2UsXG4gICAgICAgIGlzU3VwZXJTY3JpcHQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3N1cGVyc2NyaXB0JykgPz8gZmFsc2UsXG4gICAgICAgIGlzUGFyYWdyYXBoOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdwYXJhZ3JhcGgnKSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nMTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDEgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzI6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiAyIH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmczOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogMyB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nNDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDQgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzU6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiA1IH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmc2OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogNiB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNCdWxsZXRMaXN0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdidWxsZXRMaXN0JykgPz8gZmFsc2UsXG4gICAgICAgIGlzT3JkZXJlZExpc3Q6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ29yZGVyZWRMaXN0JykgPz8gZmFsc2UsXG4gICAgICAgIGlzQ29kZUJsb2NrOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdjb2RlQmxvY2snKSA/PyBmYWxzZSxcbiAgICAgICAgaXNCbG9ja3F1b3RlOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdibG9ja3F1b3RlJykgPz8gZmFsc2UsXG4gICAgICAgIGNhblVuZG86XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnVuZG8oKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBjYW5SZWRvOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5yZWRvKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgaGFzRG9uZUJ1dHRvbiA9IGZhbHNlO1xuICBjb25zdCBhdXRvV2lkdGggPSBmYWxzZTtcblxuICBjb25zdCBuYW1lcyA9IGNsYXNzTmFtZXMoY2xhc3Nlcy50b29sYmFyLCBQSUVfVE9PTEJBUl9fQ0xBU1MsIHtcbiAgICBbY2xhc3Nlcy50b29sYmFyV2l0aE5vRG9uZV06ICFoYXNEb25lQnV0dG9uLFxuICAgIFtjbGFzc2VzLnRvb2xiYXJUb3BdOiB0b29sYmFyT3B0cy5wb3NpdGlvbiA9PT0gJ3RvcCcsXG4gICAgW2NsYXNzZXMudG9vbGJhclJpZ2h0XTogdG9vbGJhck9wdHMuYWxpZ25tZW50ID09PSAncmlnaHQnLFxuICAgIFtjbGFzc2VzLmZvY3VzZWRdOiB0b29sYmFyT3B0cy5hbHdheXNWaXNpYmxlIHx8IChlZGl0b3JTdGF0ZS5pc0ZvY3VzZWQgJiYgIWVkaXRvci5fdG9vbGJhck9wZW5lZCksXG4gICAgW2NsYXNzZXMuYXV0b1dpZHRoXTogYXV0b1dpZHRoLFxuICAgIFtjbGFzc2VzLmZ1bGxXaWR0aF06ICFhdXRvV2lkdGgsXG4gICAgW2NsYXNzZXMuaGlkZGVuXTogdG9vbGJhck9wdHMuaXNIaWRkZW4gPT09IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGN1c3RvbVN0eWxlcyA9IHRvb2xiYXJPcHRzLm1pbldpZHRoICE9PSB1bmRlZmluZWQgPyB7IG1pbldpZHRoOiB0b29sYmFyT3B0cy5taW5XaWR0aCB9IDoge307XG5cbiAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgY29uc3QgdG9vbGJhckJ1dHRvbnMgPSB1c2VNZW1vKFxuICAgICgpID0+IFtcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEdyaWRPbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmluc2VydFRhYmxlKHsgcm93czogMiwgY29sczogMiwgd2l0aEhlYWRlclJvdzogZmFsc2UgfSlcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygndGFibGUnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxBZGRSb3cgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5hZGRSb3dBZnRlcigpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuVGFibGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8UmVtb3ZlUm93IC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuZGVsZXRlUm93KClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxBZGRDb2x1bW4gLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5hZGRDb2x1bW5BZnRlcigpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuVGFibGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8UmVtb3ZlQ29sdW1uIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuZGVsZXRlQ29sdW1uKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZW1vdmVUYWJsZSAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmRlbGV0ZVRhYmxlKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxCb3JkZXJBbGwgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+IHtcbiAgICAgICAgICBjb25zdCB0YWJsZUF0dHJzID0gZWRpdG9yLmdldEF0dHJpYnV0ZXMoJ3RhYmxlJyk7XG5cbiAgICAgICAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICAgICAgICAuLi50YWJsZUF0dHJzLFxuICAgICAgICAgICAgYm9yZGVyOiB0YWJsZUF0dHJzLmJvcmRlciAhPT0gJzAnID8gJzAnIDogJzEnLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBlZGl0b3IuY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcygndGFibGUnLCB1cGRhdGUpO1xuICAgICAgICB9LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLnRhYmxlSGFzQm9yZGVyLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxCb2xkIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlQm9sZCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2JvbGQnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0JvbGQsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhbkJvbGQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8SXRhbGljIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlSXRhbGljKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnaXRhbGljJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNJdGFsaWMsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhbkl0YWxpYyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxTdHJpa2V0aHJvdWdoIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlU3RyaWtlKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnc3RyaWtldGhyb3VnaCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzU3RyaWtlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5TdHJpa2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Q29kZSAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZUNvZGUoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdjb2RlJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNDb2RlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5Db2RlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFVuZGVybGluZSAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZVVuZGVybGluZSgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3VuZGVybGluZScpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVW5kZXJsaW5lLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFN1YnNjcmlwdEljb24gLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVTdWJzY3JpcHQoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdzdWJzY3JpcHQnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1N1YlNjcmlwdCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxTdXBlcnNjcmlwdEljb24gLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVTdXBlcnNjcmlwdCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3N1cGVyc2NyaXB0JykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNTdXBlclNjcmlwdCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxJbWFnZUljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2ltYWdlJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnNldEltYWdlVXBsb2FkTm9kZSgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8VGhlYXRlcnNJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCd2aWRlbycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5pbnNlcnRNZWRpYSh7IHR5cGU6ICd2aWRlbycgfSlcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxWb2x1bWVVcEljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2F1ZGlvJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmluc2VydE1lZGlhKHsgdHlwZTogJ2F1ZGlvJywgdGFnOiAnYXVkaW8nIH0pXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Q1NTSWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnY3NzJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT4gZWRpdG9yLmNvbW1hbmRzLm9wZW5DU1NDbGFzc0RpYWxvZygpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEhlYWRpbmdJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdoMycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVIZWFkaW5nKHsgbGV2ZWw6IDMgfSlcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNIZWFkaW5nMyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxGdW5jdGlvbnMgLz4sXG4gICAgICAgIGhpZGRlbjogKCkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdtYXRoJyksXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5pbnNlcnRNYXRoKCcnKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPENoYXJhY3Rlckljb24gbGV0dGVyPVwiw7FcIiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnbGFuZ3VhZ2VDaGFyYWN0ZXJzJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKCkgPT4gc2V0U2hvd1BpY2tlcihzcGFuaXNoQ29uZmlnKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxDaGFyYWN0ZXJJY29uIGxldHRlcj1cIuKCrFwiIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gYWN0aXZlUGx1Z2lucz8uZmlsdGVyKChwKSA9PiBwID09PSAnbGFuZ3VhZ2VDaGFyYWN0ZXJzJykubGVuZ3RoICE9PSAyIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldFNob3dQaWNrZXIoc3BlY2lhbENvbmZpZyksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8VGV4dEFsaWduSWNvbiBlZGl0b3I9e2VkaXRvcn0gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3RleHQtYWxpZ24nKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB7fSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxCdWxsZXRlZExpc3RJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdidWxsZXRlZC1saXN0JykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZUJ1bGxldExpc3QoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0J1bGxldExpc3QsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8TnVtYmVyZWRMaXN0SWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnbnVtYmVyZWQtbGlzdCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVPcmRlcmVkTGlzdCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzT3JkZXJlZExpc3QsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8VW5kbyAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygndW5kbycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC51bmRvKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuVW5kbyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZWRvIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdyZWRvJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnJlZG8oKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5SZWRvLFxuICAgICAgfSxcbiAgICBdLFxuICAgIFthY3RpdmVQbHVnaW5zLCBlZGl0b3JdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e25hbWVzfSBzdHlsZT17eyAuLi5jdXN0b21TdHlsZXMgfX0gb25Nb3VzZURvd249e2hhbmRsZU1vdXNlRG93bn0+XG4gICAgICB7IWVkaXRvclN0YXRlLmhpZGVEZWZhdWx0VG9vbGJhciAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmRlZmF1bHRUb29sYmFyfSB0YWJJbmRleD1cIjFcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgIHt0b29sYmFyQnV0dG9uc1xuICAgICAgICAgICAgICAuZmlsdGVyKChidG4pID0+ICFidG4uaGlkZGVuPy4oZWRpdG9yU3RhdGUpKVxuICAgICAgICAgICAgICAubWFwKChidG4sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGlzYWJsZWQgPSBidG4uaXNEaXNhYmxlZD8uKGVkaXRvclN0YXRlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBidG4uaXNBY3RpdmU/LihlZGl0b3JTdGF0ZSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgIGJ0bi5vbkNsaWNrKGVkaXRvcik7XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLmJ1dHRvbiwgeyBbY2xhc3Nlcy5hY3RpdmVdOiBhY3RpdmUgfSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtidG4uaWNvbn1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIHthY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygncmVzcG9uc2VBcmVhJykgJiYgKFxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgICAgICAgIC5pbnNlcnRSZXNwb25zZUFyZWEocmVzcG9uc2VBcmVhUHJvcHMudHlwZSlcbiAgICAgICAgICAgICAgICAgIC5ydW4oKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmJ1dHRvbn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFRvb2xiYXJJY29uIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgPERvbmVCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgb25DaGFuZ2U/LihlZGl0b3IuZ2V0SFRNTCgpKTtcbiAgICAgICAgICAgICAgZWRpdG9yLmNvbW1hbmRzLmJsdXIoKTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgICAge3Nob3dQaWNrZXIgJiYgKFxuICAgICAgICA8Q2hhcmFjdGVyUGlja2VyXG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgb3B0cz17e1xuICAgICAgICAgICAgLi4uc2hvd1BpY2tlcixcbiAgICAgICAgICAgIHJlbmRlclBvcE92ZXI6IChldiwgY2gpID0+IGNvbnNvbGUubG9nKCdTaG93IHBvcG92ZXInLCBjaCksXG4gICAgICAgICAgICBjbG9zZVBvcE92ZXI6ICgpID0+IGNvbnNvbGUubG9nKCdDbG9zZSBwb3BvdmVyJyksXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93UGlja2VyKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IHN0eWxlID0gKHRoZW1lKSA9PiAoe1xuICBkZWZhdWx0VG9vbGJhcjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gIH0sXG4gIGJ1dHRvbnNDb250YWluZXI6IHtcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgY29sb3I6ICdncmV5JyxcbiAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgIHBhZGRpbmc6ICcycHgnLFxuICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICBib3JkZXI6ICdub25lJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgIH0sXG4gICAgJyY6Zm9jdXMnOiB7XG4gICAgICBvdXRsaW5lOiBgMnB4IHNvbGlkICR7dGhlbWUucGFsZXR0ZS5ncmV5WzcwMF19YCxcbiAgICB9LFxuICB9LFxuICBhY3RpdmU6IHtcbiAgICBjb2xvcjogJ2JsYWNrJyxcbiAgfSxcbiAgZGlzYWJsZWQ6IHtcbiAgICBvcGFjaXR5OiAwLjcsXG4gICAgY3Vyc29yOiAnbm90LWFsbG93ZWQnLFxuICAgICcmIDpob3Zlcic6IHtcbiAgICAgIGNvbG9yOiAnZ3JleScsXG4gICAgfSxcbiAgfSxcbiAgaXNBY3RpdmU6IHtcbiAgICBiYWNrZ3JvdW5kOiAndmFyKC0tcHVycGxlKScsXG4gICAgY29sb3I6ICd2YXIoLS13aGl0ZSknLFxuICB9LFxuICB0b29sYmFyOiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgekluZGV4OiAyMCxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxuICAgIGJhY2tncm91bmQ6ICd2YXIoLS1lZGl0YWJsZS1odG1sLXRvb2xiYXItYmcsICNlZmVmZWYpJyxcbiAgICBtaW5XaWR0aDogJzI4MHB4JyxcbiAgICBtYXJnaW46ICc1cHggMCAwIDAnLFxuICAgIHBhZGRpbmc6ICcycHgnLFxuICAgIGJveFNoYWRvdzpcbiAgICAgICcwcHggMXB4IDVweCAwcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggMnB4IDJweCAwcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMHB4IDNweCAxcHggLTJweCByZ2JhKDAsIDAsIDAsIDAuMTIpJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgb3BhY2l0eTogMCxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIH0sXG4gIHRvb2xiYXJXaXRoTm9Eb25lOiB7XG4gICAgbWluV2lkdGg6ICcyNjVweCcsXG4gIH0sXG4gIHRvb2xiYXJUb3A6IHtcbiAgICB0b3A6ICctNDVweCcsXG4gIH0sXG4gIHRvb2xiYXJSaWdodDoge1xuICAgIHJpZ2h0OiAwLFxuICB9LFxuICBmdWxsV2lkdGg6IHtcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxuICBoaWRkZW46IHtcbiAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcbiAgfSxcbiAgYXV0b1dpZHRoOiB7XG4gICAgd2lkdGg6ICdhdXRvJyxcbiAgfSxcbiAgZm9jdXNlZDoge1xuICAgIG9wYWNpdHk6IDEsXG4gICAgcG9pbnRlckV2ZW50czogJ2F1dG8nLFxuICB9LFxuICBpY29uUm9vdDoge1xuICAgIHdpZHRoOiAnMjhweCcsXG4gICAgaGVpZ2h0OiAnMjhweCcsXG4gICAgcGFkZGluZzogJzRweCcsXG4gICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gIH0sXG4gIGxhYmVsOiB7XG4gICAgY29sb3I6ICd2YXIoLS1lZGl0YWJsZS1odG1sLXRvb2xiYXItY2hlY2ssICMwMGJiMDApJyxcbiAgfSxcbiAgc2hhcmVkOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICB9LFxufSk7XG5cbmNvbnN0IFN0eWxlZE1lbnVCYXIgPSB3aXRoU3R5bGVzKHN0eWxlLCB7IGluZGV4OiAxMDAwIH0pKE1lbnVCYXIpO1xuXG5leHBvcnQgZGVmYXVsdCBTdHlsZWRNZW51QmFyO1xuIl19
|