@pie-lib/mask-markup 3.1.6-beta.14 → 3.1.6-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var
|
|
4
|
+
var _typeof3 = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
6
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
7
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
6
8
|
var React = _interopRequireWildcard(require("react"));
|
|
7
9
|
var _react2 = require("@testing-library/react");
|
|
8
10
|
var _dragInTheBlank = _interopRequireDefault(require("../drag-in-the-blank"));
|
|
9
|
-
|
|
11
|
+
var _keyboardCoordinates = require("../keyboard-coordinates");
|
|
12
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
13
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
14
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
15
|
var markup = "<div>\n <img src=\"https://image.shutterstock.com/image-vector/cow-jumped-over-moon-traditional-260nw-1152899330.jpg\"></img>\n <h5>Hey Diddle Diddle <i>by ?</i></h5>\n <p>1: Hey, diddle, diddle,</p>\n <p>2: The cat and the fiddle,</p>\n <p>3: The cow {{0}} over the moon;</p>\n <p>4: The little dog {{1}},</p>\n <p>5: To see such sport,</p>\n <p>6: And the dish ran away with the {{2}}.</p>\n</div>";
|
|
11
16
|
var choice = function choice(v, id) {
|
|
12
17
|
return {
|
|
@@ -14,23 +19,22 @@ var choice = function choice(v, id) {
|
|
|
14
19
|
id: id
|
|
15
20
|
};
|
|
16
21
|
};
|
|
22
|
+
var capturedDragProviderProps;
|
|
17
23
|
|
|
18
24
|
// Mock DragProvider and DragDroppablePlaceholder to avoid DndContext requirement
|
|
19
25
|
jest.mock('@pie-lib/drag', function () {
|
|
20
26
|
return {
|
|
21
|
-
DragProvider: function DragProvider(
|
|
22
|
-
|
|
23
|
-
onDragStart = _ref.onDragStart,
|
|
24
|
-
onDragEnd = _ref.onDragEnd;
|
|
27
|
+
DragProvider: function DragProvider(props) {
|
|
28
|
+
capturedDragProviderProps = props;
|
|
25
29
|
// Simple wrapper that doesn't require DndContext
|
|
26
30
|
return /*#__PURE__*/React.createElement("div", {
|
|
27
31
|
"data-testid": "drag-provider"
|
|
28
|
-
}, children);
|
|
32
|
+
}, props.children);
|
|
29
33
|
},
|
|
30
|
-
DragDroppablePlaceholder: function DragDroppablePlaceholder(
|
|
31
|
-
var children =
|
|
32
|
-
disabled =
|
|
33
|
-
instanceId =
|
|
34
|
+
DragDroppablePlaceholder: function DragDroppablePlaceholder(_ref) {
|
|
35
|
+
var children = _ref.children,
|
|
36
|
+
disabled = _ref.disabled,
|
|
37
|
+
instanceId = _ref.instanceId;
|
|
34
38
|
// Simple wrapper that doesn't require useDroppable
|
|
35
39
|
return /*#__PURE__*/React.createElement("div", {
|
|
36
40
|
"data-testid": "drag-droppable-placeholder"
|
|
@@ -42,8 +46,8 @@ jest.mock('@pie-lib/drag', function () {
|
|
|
42
46
|
// Mock @dnd-kit/core components and hooks used by DragInTheBlank and child components
|
|
43
47
|
jest.mock('@dnd-kit/core', function () {
|
|
44
48
|
return {
|
|
45
|
-
DragOverlay: function DragOverlay(
|
|
46
|
-
var children =
|
|
49
|
+
DragOverlay: function DragOverlay(_ref2) {
|
|
50
|
+
var children = _ref2.children;
|
|
47
51
|
return /*#__PURE__*/React.createElement("div", {
|
|
48
52
|
"data-testid": "drag-overlay"
|
|
49
53
|
}, children);
|
|
@@ -125,5 +129,215 @@ describe('DragInTheBlank', function () {
|
|
|
125
129
|
expect(container.firstChild).toBeInTheDocument();
|
|
126
130
|
});
|
|
127
131
|
});
|
|
132
|
+
describe('selection state', function () {
|
|
133
|
+
var baseProps = {
|
|
134
|
+
value: {},
|
|
135
|
+
onChange: jest.fn(),
|
|
136
|
+
choices: [{
|
|
137
|
+
id: '0',
|
|
138
|
+
value: 'firstChoice'
|
|
139
|
+
}, {
|
|
140
|
+
id: '1',
|
|
141
|
+
value: 'secondChoice'
|
|
142
|
+
}],
|
|
143
|
+
markup: 'text {{0}} more {{1}} end'
|
|
144
|
+
};
|
|
145
|
+
beforeEach(function () {
|
|
146
|
+
baseProps.onChange.mockClear();
|
|
147
|
+
});
|
|
148
|
+
it('mirrors an active drag into selectedItem on drag start', function () {
|
|
149
|
+
var instance = new _dragInTheBlank["default"](baseProps);
|
|
150
|
+
instance.setState = function (s) {
|
|
151
|
+
return Object.assign(instance.state, typeof s === 'function' ? s(instance.state) : s);
|
|
152
|
+
};
|
|
153
|
+
var data = {
|
|
154
|
+
id: '0',
|
|
155
|
+
choice: {
|
|
156
|
+
id: '0',
|
|
157
|
+
value: 'X'
|
|
158
|
+
},
|
|
159
|
+
fromChoice: false,
|
|
160
|
+
type: 'MaskBlank'
|
|
161
|
+
};
|
|
162
|
+
instance.handleDragStart({
|
|
163
|
+
active: {
|
|
164
|
+
data: {
|
|
165
|
+
current: data
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
expect(instance.state.selectedItem).toEqual(data);
|
|
170
|
+
});
|
|
171
|
+
it('toggleItemSelection selects, then deselects the same item', function () {
|
|
172
|
+
var instance = new _dragInTheBlank["default"](baseProps);
|
|
173
|
+
instance.setState = function (s) {
|
|
174
|
+
return Object.assign(instance.state, typeof s === 'function' ? s(instance.state) : s);
|
|
175
|
+
};
|
|
176
|
+
var data = {
|
|
177
|
+
choice: {
|
|
178
|
+
id: '0'
|
|
179
|
+
},
|
|
180
|
+
fromChoice: true,
|
|
181
|
+
type: 'MaskBlank'
|
|
182
|
+
};
|
|
183
|
+
instance.toggleItemSelection(data);
|
|
184
|
+
expect(instance.state.selectedItem).toEqual(data);
|
|
185
|
+
instance.toggleItemSelection(data);
|
|
186
|
+
expect(instance.state.selectedItem).toBeNull();
|
|
187
|
+
});
|
|
188
|
+
it('placeSelectedItem places a pool choice into a blank via commitPlacement/onChange', function () {
|
|
189
|
+
var instance = new _dragInTheBlank["default"](baseProps);
|
|
190
|
+
instance.setState = function (s) {
|
|
191
|
+
return Object.assign(instance.state, typeof s === 'function' ? s(instance.state) : s);
|
|
192
|
+
};
|
|
193
|
+
var poolChoice = {
|
|
194
|
+
choice: {
|
|
195
|
+
id: '0'
|
|
196
|
+
},
|
|
197
|
+
instanceId: 'x',
|
|
198
|
+
fromChoice: true,
|
|
199
|
+
type: 'MaskBlank'
|
|
200
|
+
};
|
|
201
|
+
instance.toggleItemSelection(poolChoice);
|
|
202
|
+
instance.placeSelectedItem('blank-1');
|
|
203
|
+
expect(baseProps.onChange).toHaveBeenCalledWith({
|
|
204
|
+
'blank-1': '0'
|
|
205
|
+
});
|
|
206
|
+
expect(instance.state.selectedItem).toBeNull();
|
|
207
|
+
});
|
|
208
|
+
it('placeSelectedItem with targetId undefined removes a placed item (returns it to the board)', function () {
|
|
209
|
+
var props = _objectSpread(_objectSpread({}, baseProps), {}, {
|
|
210
|
+
value: {
|
|
211
|
+
'blank-1': '0'
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
var instance = new _dragInTheBlank["default"](props);
|
|
215
|
+
instance.setState = function (s) {
|
|
216
|
+
return Object.assign(instance.state, typeof s === 'function' ? s(instance.state) : s);
|
|
217
|
+
};
|
|
218
|
+
var placedItem = {
|
|
219
|
+
id: 'blank-1',
|
|
220
|
+
choice: {
|
|
221
|
+
id: '0'
|
|
222
|
+
},
|
|
223
|
+
instanceId: 'x',
|
|
224
|
+
fromChoice: false,
|
|
225
|
+
type: 'MaskBlank'
|
|
226
|
+
};
|
|
227
|
+
instance.toggleItemSelection(placedItem);
|
|
228
|
+
instance.placeSelectedItem(undefined);
|
|
229
|
+
expect(props.onChange).toHaveBeenCalledWith({});
|
|
230
|
+
});
|
|
231
|
+
it('placeSelectedItem does nothing when nothing is selected', function () {
|
|
232
|
+
var instance = new _dragInTheBlank["default"](baseProps);
|
|
233
|
+
instance.setState = function (s) {
|
|
234
|
+
return Object.assign(instance.state, typeof s === 'function' ? s(instance.state) : s);
|
|
235
|
+
};
|
|
236
|
+
instance.placeSelectedItem('blank-1');
|
|
237
|
+
expect(baseProps.onChange).not.toHaveBeenCalled();
|
|
238
|
+
});
|
|
239
|
+
it('onItemClick and onPlacementClick are ignored for a short window right after a drag ends', function () {
|
|
240
|
+
var instance = new _dragInTheBlank["default"](baseProps);
|
|
241
|
+
instance.setState = function (s) {
|
|
242
|
+
return Object.assign(instance.state, typeof s === 'function' ? s(instance.state) : s);
|
|
243
|
+
};
|
|
244
|
+
var data = {
|
|
245
|
+
choice: {
|
|
246
|
+
id: '0'
|
|
247
|
+
},
|
|
248
|
+
fromChoice: true,
|
|
249
|
+
type: 'MaskBlank'
|
|
250
|
+
};
|
|
251
|
+
instance.handleDragEnd({
|
|
252
|
+
active: null,
|
|
253
|
+
over: null
|
|
254
|
+
});
|
|
255
|
+
instance.onItemClick(data);
|
|
256
|
+
expect(instance.state.selectedItem).toBeNull();
|
|
257
|
+
});
|
|
258
|
+
it('onPlacementClick is ignored for a short window right after a drag ends', function () {
|
|
259
|
+
var instance = new _dragInTheBlank["default"](baseProps);
|
|
260
|
+
instance.setState = function (s) {
|
|
261
|
+
return Object.assign(instance.state, typeof s === 'function' ? s(instance.state) : s);
|
|
262
|
+
};
|
|
263
|
+
var data = {
|
|
264
|
+
choice: {
|
|
265
|
+
id: '0'
|
|
266
|
+
},
|
|
267
|
+
fromChoice: true,
|
|
268
|
+
type: 'MaskBlank'
|
|
269
|
+
};
|
|
270
|
+
instance.handleDragEnd({
|
|
271
|
+
active: null,
|
|
272
|
+
over: null
|
|
273
|
+
});
|
|
274
|
+
// Select an item after the drag-end guard is armed, so placeSelectedItem would
|
|
275
|
+
// have something to place if the guard didn't short-circuit it first.
|
|
276
|
+
instance.toggleItemSelection(data);
|
|
277
|
+
instance.onPlacementClick('blank-1');
|
|
278
|
+
expect(baseProps.onChange).not.toHaveBeenCalled();
|
|
279
|
+
expect(instance.state.selectedItem).toEqual(data);
|
|
280
|
+
});
|
|
281
|
+
it("onDragEnd dropping a blank's own content back onto its own slot is a no-op", function () {
|
|
282
|
+
var props = _objectSpread(_objectSpread({}, baseProps), {}, {
|
|
283
|
+
value: {
|
|
284
|
+
'blank-1': '0'
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
var instance = new _dragInTheBlank["default"](props);
|
|
288
|
+
instance.setState = function (s) {
|
|
289
|
+
return Object.assign(instance.state, typeof s === 'function' ? s(instance.state) : s);
|
|
290
|
+
};
|
|
291
|
+
var draggedItem = {
|
|
292
|
+
id: 'blank-1',
|
|
293
|
+
choice: {
|
|
294
|
+
id: '0'
|
|
295
|
+
},
|
|
296
|
+
fromChoice: false,
|
|
297
|
+
type: 'MaskBlank'
|
|
298
|
+
};
|
|
299
|
+
instance.handleDragEnd({
|
|
300
|
+
active: {
|
|
301
|
+
data: {
|
|
302
|
+
current: draggedItem
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
over: {
|
|
306
|
+
data: {
|
|
307
|
+
current: {
|
|
308
|
+
id: 'blank-1',
|
|
309
|
+
accepts: ['MaskBlank']
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
expect(props.onChange).not.toHaveBeenCalled();
|
|
315
|
+
});
|
|
316
|
+
});
|
|
317
|
+
describe('DragProvider wiring', function () {
|
|
318
|
+
it('passes the Tab/Shift+Tab coordinate getter and keyboard codes to DragProvider', function () {
|
|
319
|
+
(0, _react2.render)(/*#__PURE__*/React.createElement(_dragInTheBlank["default"], {
|
|
320
|
+
value: {},
|
|
321
|
+
onChange: jest.fn(),
|
|
322
|
+
choices: [],
|
|
323
|
+
markup: "text {{0}} end"
|
|
324
|
+
}));
|
|
325
|
+
expect(capturedDragProviderProps.keyboardCoordinateGetter).toBe(_keyboardCoordinates.closestDroppableKeyboardCoordinates);
|
|
326
|
+
expect(capturedDragProviderProps.keyboardCodes).toEqual({
|
|
327
|
+
start: ['Space', 'Enter'],
|
|
328
|
+
cancel: ['Escape'],
|
|
329
|
+
end: ['Space', 'Enter']
|
|
330
|
+
});
|
|
331
|
+
});
|
|
332
|
+
it('passes onDragCancel to DragProvider', function () {
|
|
333
|
+
(0, _react2.render)(/*#__PURE__*/React.createElement(_dragInTheBlank["default"], {
|
|
334
|
+
value: {},
|
|
335
|
+
onChange: jest.fn(),
|
|
336
|
+
choices: [],
|
|
337
|
+
markup: "text {{0}} end"
|
|
338
|
+
}));
|
|
339
|
+
expect((0, _typeof2["default"])(capturedDragProviderProps.onDragCancel)).toBe('function');
|
|
340
|
+
});
|
|
341
|
+
});
|
|
128
342
|
});
|
|
129
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfZHJhZ0luVGhlQmxhbmsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiX3R5cGVvZiIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJtYXJrdXAiLCJjaG9pY2UiLCJ2IiwiaWQiLCJ2YWx1ZSIsImplc3QiLCJtb2NrIiwiRHJhZ1Byb3ZpZGVyIiwiX3JlZiIsImNoaWxkcmVuIiwib25EcmFnU3RhcnQiLCJvbkRyYWdFbmQiLCJjcmVhdGVFbGVtZW50IiwiRHJhZ0Ryb3BwYWJsZVBsYWNlaG9sZGVyIiwiX3JlZjIiLCJkaXNhYmxlZCIsImluc3RhbmNlSWQiLCJEcmFnT3ZlcmxheSIsIl9yZWYzIiwiY2xvc2VzdENlbnRlciIsImZuIiwidXNlRHJhZ2dhYmxlIiwiYXR0cmlidXRlcyIsImxpc3RlbmVycyIsInNldE5vZGVSZWYiLCJ0cmFuc2Zvcm0iLCJpc0RyYWdnaW5nIiwidXNlRHJvcHBhYmxlIiwiaXNPdmVyIiwiYWN0aXZlIiwiQ1NTIiwiVHJhbnNsYXRlIiwidG9TdHJpbmciLCJkZXNjcmliZSIsImRlZmF1bHRQcm9wcyIsImZlZWRiYWNrIiwiY2hvaWNlcyIsInVuZGVmaW5lZCIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsInNjcmVlbiIsImdldEJ5VGV4dCIsIl9yZW5kZXIyIiwiX2V4dGVuZHMyIiwiX3JlbmRlcjMiLCJjb3JyZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9kcmFnLWluLXRoZS1ibGFuay50ZXN0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHJlbmRlciwgc2NyZWVuIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5pbXBvcnQgRHJhZ0luVGhlQmxhbmsgZnJvbSAnLi4vZHJhZy1pbi10aGUtYmxhbmsnO1xuXG5jb25zdCBtYXJrdXAgPSBgPGRpdj5cbiAgPGltZyBzcmM9XCJodHRwczovL2ltYWdlLnNodXR0ZXJzdG9jay5jb20vaW1hZ2UtdmVjdG9yL2Nvdy1qdW1wZWQtb3Zlci1tb29uLXRyYWRpdGlvbmFsLTI2MG53LTExNTI4OTkzMzAuanBnXCI+PC9pbWc+XG4gICA8aDU+SGV5IERpZGRsZSBEaWRkbGUgPGk+YnkgPzwvaT48L2g1PlxuIDxwPjE6IEhleSwgZGlkZGxlLCBkaWRkbGUsPC9wPlxuIDxwPjI6IFRoZSBjYXQgYW5kIHRoZSBmaWRkbGUsPC9wPlxuIDxwPjM6IFRoZSBjb3cge3swfX0gb3ZlciB0aGUgbW9vbjs8L3A+XG4gPHA+NDogVGhlIGxpdHRsZSBkb2cge3sxfX0sPC9wPlxuIDxwPjU6IFRvIHNlZSBzdWNoIHNwb3J0LDwvcD5cbiA8cD42OiBBbmQgdGhlIGRpc2ggcmFuIGF3YXkgd2l0aCB0aGUge3syfX0uPC9wPlxuPC9kaXY+YDtcbmNvbnN0IGNob2ljZSA9ICh2LCBpZCkgPT4gKHsgdmFsdWU6IHYsIGlkIH0pO1xuXG4vLyBNb2NrIERyYWdQcm92aWRlciBhbmQgRHJhZ0Ryb3BwYWJsZVBsYWNlaG9sZGVyIHRvIGF2b2lkIERuZENvbnRleHQgcmVxdWlyZW1lbnRcbmplc3QubW9jaygnQHBpZS1saWIvZHJhZycsICgpID0+ICh7XG4gIERyYWdQcm92aWRlcjogKHsgY2hpbGRyZW4sIG9uRHJhZ1N0YXJ0LCBvbkRyYWdFbmQgfSkgPT4ge1xuICAgIC8vIFNpbXBsZSB3cmFwcGVyIHRoYXQgZG9lc24ndCByZXF1aXJlIERuZENvbnRleHRcbiAgICByZXR1cm4gPGRpdiBkYXRhLXRlc3RpZD1cImRyYWctcHJvdmlkZXJcIj57Y2hpbGRyZW59PC9kaXY+O1xuICB9LFxuICBEcmFnRHJvcHBhYmxlUGxhY2Vob2xkZXI6ICh7IGNoaWxkcmVuLCBkaXNhYmxlZCwgaW5zdGFuY2VJZCB9KSA9PiB7XG4gICAgLy8gU2ltcGxlIHdyYXBwZXIgdGhhdCBkb2Vzbid0IHJlcXVpcmUgdXNlRHJvcHBhYmxlXG4gICAgcmV0dXJuIDxkaXYgZGF0YS10ZXN0aWQ9XCJkcmFnLWRyb3BwYWJsZS1wbGFjZWhvbGRlclwiPntjaGlsZHJlbn08L2Rpdj47XG4gIH0sXG59KSk7XG5cbi8vIE1vY2sgQGRuZC1raXQvY29yZSBjb21wb25lbnRzIGFuZCBob29rcyB1c2VkIGJ5IERyYWdJblRoZUJsYW5rIGFuZCBjaGlsZCBjb21wb25lbnRzXG5qZXN0Lm1vY2soJ0BkbmQta2l0L2NvcmUnLCAoKSA9PiAoe1xuICBEcmFnT3ZlcmxheTogKHsgY2hpbGRyZW4gfSkgPT4gPGRpdiBkYXRhLXRlc3RpZD1cImRyYWctb3ZlcmxheVwiPntjaGlsZHJlbn08L2Rpdj4sXG4gIGNsb3Nlc3RDZW50ZXI6IGplc3QuZm4oKSxcbiAgdXNlRHJhZ2dhYmxlOiBqZXN0LmZuKCgpID0+ICh7XG4gICAgYXR0cmlidXRlczoge30sXG4gICAgbGlzdGVuZXJzOiB7fSxcbiAgICBzZXROb2RlUmVmOiBqZXN0LmZuKCksXG4gICAgdHJhbnNmb3JtOiBudWxsLFxuICAgIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICB9KSksXG4gIHVzZURyb3BwYWJsZTogamVzdC5mbigoKSA9PiAoe1xuICAgIHNldE5vZGVSZWY6IGplc3QuZm4oKSxcbiAgICBpc092ZXI6IGZhbHNlLFxuICAgIGFjdGl2ZTogbnVsbCxcbiAgfSkpLFxufSkpO1xuXG5qZXN0Lm1vY2soJ0BkbmQta2l0L3V0aWxpdGllcycsICgpID0+ICh7XG4gIENTUzoge1xuICAgIFRyYW5zbGF0ZToge1xuICAgICAgdG9TdHJpbmc6IGplc3QuZm4oKCkgPT4gJ3RyYW5zbGF0ZTNkKDAsIDAsIDApJyksXG4gICAgfSxcbiAgfSxcbn0pKTtcblxuZGVzY3JpYmUoJ0RyYWdJblRoZUJsYW5rJywgKCkgPT4ge1xuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIGZlZWRiYWNrOiB7fSxcbiAgICBtYXJrdXAsXG4gICAgY2hvaWNlczogW1xuICAgICAgY2hvaWNlKCdKdW1wZWQnLCAnMCcpLFxuICAgICAgY2hvaWNlKCdMYXVnaGVkJywgJzEnKSxcbiAgICAgIGNob2ljZSgnU3Bvb24nLCAnMicpLFxuICAgICAgY2hvaWNlKCdGb3JrJywgJzMnKSxcbiAgICAgIGNob2ljZSgnQnVtcGVkJywgJzQnKSxcbiAgICAgIGNob2ljZSgnU21pbGVkJywgJzUnKSxcbiAgICBdLFxuXG4gICAgdmFsdWU6IHtcbiAgICAgIDA6IHVuZGVmaW5lZCxcbiAgICB9LFxuICB9O1xuXG4gIGRlc2NyaWJlKCdyZW5kZXInLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdpdGggZGVmYXVsdCBwcm9wcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPERyYWdJblRoZUJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICAgIC8vIENoZWNrIHRoYXQgbWFya3VwIGNvbnRlbnQgaXMgcmVuZGVyZWRcbiAgICAgIGV4cGVjdChzY3JlZW4uZ2V0QnlUZXh0KC9IZXkgRGlkZGxlIERpZGRsZS8pKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoL0hleSwgZGlkZGxlLCBkaWRkbGUsLykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBjb3JyZWN0bHkgd2l0aCBkaXNhYmxlZCBwcm9wIGFzIHRydWUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxEcmFnSW5UaGVCbGFuayB7Li4uZGVmYXVsdFByb3BzfSBkaXNhYmxlZD17dHJ1ZX0gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgY29ycmVjdGx5IHdpdGggZmVlZGJhY2snLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKFxuICAgICAgICA8RHJhZ0luVGhlQmxhbmtcbiAgICAgICAgICB7Li4uZGVmYXVsdFByb3BzfVxuICAgICAgICAgIGZlZWRiYWNrPXt7XG4gICAgICAgICAgICAwOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiAnSnVtcGVkJyxcbiAgICAgICAgICAgICAgY29ycmVjdDogJ0p1bXBlZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMToge1xuICAgICAgICAgICAgICB2YWx1ZTogJ0xhdWdoZWQnLFxuICAgICAgICAgICAgICBjb3JyZWN0OiAnTGF1Z2hlZCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgMjoge1xuICAgICAgICAgICAgICB2YWx1ZTogJ1Nwb29uJyxcbiAgICAgICAgICAgICAgY29ycmVjdDogJ1Nwb29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfX1cbiAgICAgICAgLz4sXG4gICAgICApO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGVBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUFrRCxTQUFBRCx3QkFBQUssQ0FBQSxFQUFB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
|
|
343
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfZHJhZ0luVGhlQmxhbmsiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2tleWJvYXJkQ29vcmRpbmF0ZXMiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJfdHlwZW9mMyIsImhhcyIsImdldCIsInNldCIsIl90IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJvd25LZXlzIiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm1hcmt1cCIsImNob2ljZSIsInYiLCJpZCIsInZhbHVlIiwiY2FwdHVyZWREcmFnUHJvdmlkZXJQcm9wcyIsImplc3QiLCJtb2NrIiwiRHJhZ1Byb3ZpZGVyIiwicHJvcHMiLCJjcmVhdGVFbGVtZW50IiwiY2hpbGRyZW4iLCJEcmFnRHJvcHBhYmxlUGxhY2Vob2xkZXIiLCJfcmVmIiwiZGlzYWJsZWQiLCJpbnN0YW5jZUlkIiwiRHJhZ092ZXJsYXkiLCJfcmVmMiIsImNsb3Nlc3RDZW50ZXIiLCJmbiIsInVzZURyYWdnYWJsZSIsImF0dHJpYnV0ZXMiLCJsaXN0ZW5lcnMiLCJzZXROb2RlUmVmIiwidHJhbnNmb3JtIiwiaXNEcmFnZ2luZyIsInVzZURyb3BwYWJsZSIsImlzT3ZlciIsImFjdGl2ZSIsIkNTUyIsIlRyYW5zbGF0ZSIsInRvU3RyaW5nIiwiZGVzY3JpYmUiLCJkZWZhdWx0UHJvcHMiLCJmZWVkYmFjayIsImNob2ljZXMiLCJ1bmRlZmluZWQiLCJpdCIsIl9yZW5kZXIiLCJyZW5kZXIiLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJzY3JlZW4iLCJnZXRCeVRleHQiLCJfcmVuZGVyMiIsIl9leHRlbmRzMiIsIl9yZW5kZXIzIiwiY29ycmVjdCIsImJhc2VQcm9wcyIsIm9uQ2hhbmdlIiwiYmVmb3JlRWFjaCIsIm1vY2tDbGVhciIsImluc3RhbmNlIiwiRHJhZ0luVGhlQmxhbmsiLCJzZXRTdGF0ZSIsInMiLCJhc3NpZ24iLCJzdGF0ZSIsImRhdGEiLCJmcm9tQ2hvaWNlIiwidHlwZSIsImhhbmRsZURyYWdTdGFydCIsImN1cnJlbnQiLCJzZWxlY3RlZEl0ZW0iLCJ0b0VxdWFsIiwidG9nZ2xlSXRlbVNlbGVjdGlvbiIsInRvQmVOdWxsIiwicG9vbENob2ljZSIsInBsYWNlU2VsZWN0ZWRJdGVtIiwidG9IYXZlQmVlbkNhbGxlZFdpdGgiLCJwbGFjZWRJdGVtIiwibm90IiwidG9IYXZlQmVlbkNhbGxlZCIsImhhbmRsZURyYWdFbmQiLCJvdmVyIiwib25JdGVtQ2xpY2siLCJvblBsYWNlbWVudENsaWNrIiwiZHJhZ2dlZEl0ZW0iLCJhY2NlcHRzIiwia2V5Ym9hcmRDb29yZGluYXRlR2V0dGVyIiwidG9CZSIsImNsb3Nlc3REcm9wcGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwia2V5Ym9hcmRDb2RlcyIsInN0YXJ0IiwiY2FuY2VsIiwiZW5kIiwiX3R5cGVvZjIiLCJvbkRyYWdDYW5jZWwiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvX190ZXN0c19fL2RyYWctaW4tdGhlLWJsYW5rLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyLCBzY3JlZW4gfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCBEcmFnSW5UaGVCbGFuayBmcm9tICcuLi9kcmFnLWluLXRoZS1ibGFuayc7XG5pbXBvcnQgeyBjbG9zZXN0RHJvcHBhYmxlS2V5Ym9hcmRDb29yZGluYXRlcyB9IGZyb20gJy4uL2tleWJvYXJkLWNvb3JkaW5hdGVzJztcblxuY29uc3QgbWFya3VwID0gYDxkaXY+XG4gIDxpbWcgc3JjPVwiaHR0cHM6Ly9pbWFnZS5zaHV0dGVyc3RvY2suY29tL2ltYWdlLXZlY3Rvci9jb3ctanVtcGVkLW92ZXItbW9vbi10cmFkaXRpb25hbC0yNjBudy0xMTUyODk5MzMwLmpwZ1wiPjwvaW1nPlxuICAgPGg1PkhleSBEaWRkbGUgRGlkZGxlIDxpPmJ5ID88L2k+PC9oNT5cbiA8cD4xOiBIZXksIGRpZGRsZSwgZGlkZGxlLDwvcD5cbiA8cD4yOiBUaGUgY2F0IGFuZCB0aGUgZmlkZGxlLDwvcD5cbiA8cD4zOiBUaGUgY293IHt7MH19IG92ZXIgdGhlIG1vb247PC9wPlxuIDxwPjQ6IFRoZSBsaXR0bGUgZG9nIHt7MX19LDwvcD5cbiA8cD41OiBUbyBzZWUgc3VjaCBzcG9ydCw8L3A+XG4gPHA+NjogQW5kIHRoZSBkaXNoIHJhbiBhd2F5IHdpdGggdGhlIHt7Mn19LjwvcD5cbjwvZGl2PmA7XG5jb25zdCBjaG9pY2UgPSAodiwgaWQpID0+ICh7IHZhbHVlOiB2LCBpZCB9KTtcblxubGV0IGNhcHR1cmVkRHJhZ1Byb3ZpZGVyUHJvcHM7XG5cbi8vIE1vY2sgRHJhZ1Byb3ZpZGVyIGFuZCBEcmFnRHJvcHBhYmxlUGxhY2Vob2xkZXIgdG8gYXZvaWQgRG5kQ29udGV4dCByZXF1aXJlbWVudFxuamVzdC5tb2NrKCdAcGllLWxpYi9kcmFnJywgKCkgPT4gKHtcbiAgRHJhZ1Byb3ZpZGVyOiAocHJvcHMpID0+IHtcbiAgICBjYXB0dXJlZERyYWdQcm92aWRlclByb3BzID0gcHJvcHM7XG4gICAgLy8gU2ltcGxlIHdyYXBwZXIgdGhhdCBkb2Vzbid0IHJlcXVpcmUgRG5kQ29udGV4dFxuICAgIHJldHVybiA8ZGl2IGRhdGEtdGVzdGlkPVwiZHJhZy1wcm92aWRlclwiPntwcm9wcy5jaGlsZHJlbn08L2Rpdj47XG4gIH0sXG4gIERyYWdEcm9wcGFibGVQbGFjZWhvbGRlcjogKHsgY2hpbGRyZW4sIGRpc2FibGVkLCBpbnN0YW5jZUlkIH0pID0+IHtcbiAgICAvLyBTaW1wbGUgd3JhcHBlciB0aGF0IGRvZXNuJ3QgcmVxdWlyZSB1c2VEcm9wcGFibGVcbiAgICByZXR1cm4gPGRpdiBkYXRhLXRlc3RpZD1cImRyYWctZHJvcHBhYmxlLXBsYWNlaG9sZGVyXCI+e2NoaWxkcmVufTwvZGl2PjtcbiAgfSxcbn0pKTtcblxuLy8gTW9jayBAZG5kLWtpdC9jb3JlIGNvbXBvbmVudHMgYW5kIGhvb2tzIHVzZWQgYnkgRHJhZ0luVGhlQmxhbmsgYW5kIGNoaWxkIGNvbXBvbmVudHNcbmplc3QubW9jaygnQGRuZC1raXQvY29yZScsICgpID0+ICh7XG4gIERyYWdPdmVybGF5OiAoeyBjaGlsZHJlbiB9KSA9PiA8ZGl2IGRhdGEtdGVzdGlkPVwiZHJhZy1vdmVybGF5XCI+e2NoaWxkcmVufTwvZGl2PixcbiAgY2xvc2VzdENlbnRlcjogamVzdC5mbigpLFxuICB1c2VEcmFnZ2FibGU6IGplc3QuZm4oKCkgPT4gKHtcbiAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICBsaXN0ZW5lcnM6IHt9LFxuICAgIHNldE5vZGVSZWY6IGplc3QuZm4oKSxcbiAgICB0cmFuc2Zvcm06IG51bGwsXG4gICAgaXNEcmFnZ2luZzogZmFsc2UsXG4gIH0pKSxcbiAgdXNlRHJvcHBhYmxlOiBqZXN0LmZuKCgpID0+ICh7XG4gICAgc2V0Tm9kZVJlZjogamVzdC5mbigpLFxuICAgIGlzT3ZlcjogZmFsc2UsXG4gICAgYWN0aXZlOiBudWxsLFxuICB9KSksXG59KSk7XG5cbmplc3QubW9jaygnQGRuZC1raXQvdXRpbGl0aWVzJywgKCkgPT4gKHtcbiAgQ1NTOiB7XG4gICAgVHJhbnNsYXRlOiB7XG4gICAgICB0b1N0cmluZzogamVzdC5mbigoKSA9PiAndHJhbnNsYXRlM2QoMCwgMCwgMCknKSxcbiAgICB9LFxuICB9LFxufSkpO1xuXG5kZXNjcmliZSgnRHJhZ0luVGhlQmxhbmsnLCAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgZmVlZGJhY2s6IHt9LFxuICAgIG1hcmt1cCxcbiAgICBjaG9pY2VzOiBbXG4gICAgICBjaG9pY2UoJ0p1bXBlZCcsICcwJyksXG4gICAgICBjaG9pY2UoJ0xhdWdoZWQnLCAnMScpLFxuICAgICAgY2hvaWNlKCdTcG9vbicsICcyJyksXG4gICAgICBjaG9pY2UoJ0ZvcmsnLCAnMycpLFxuICAgICAgY2hvaWNlKCdCdW1wZWQnLCAnNCcpLFxuICAgICAgY2hvaWNlKCdTbWlsZWQnLCAnNScpLFxuICAgIF0sXG5cbiAgICB2YWx1ZToge1xuICAgICAgMDogdW5kZWZpbmVkLFxuICAgIH0sXG4gIH07XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcicsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyBjb3JyZWN0bHkgd2l0aCBkZWZhdWx0IHByb3BzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8RHJhZ0luVGhlQmxhbmsgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgICAgLy8gQ2hlY2sgdGhhdCBtYXJrdXAgY29udGVudCBpcyByZW5kZXJlZFxuICAgICAgZXhwZWN0KHNjcmVlbi5nZXRCeVRleHQoL0hleSBEaWRkbGUgRGlkZGxlLykpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgICBleHBlY3Qoc2NyZWVuLmdldEJ5VGV4dCgvSGV5LCBkaWRkbGUsIGRpZGRsZSwvKSkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIGNvcnJlY3RseSB3aXRoIGRpc2FibGVkIHByb3AgYXMgdHJ1ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPERyYWdJblRoZUJsYW5rIHsuLi5kZWZhdWx0UHJvcHN9IGRpc2FibGVkPXt0cnVlfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyBjb3JyZWN0bHkgd2l0aCBmZWVkYmFjaycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoXG4gICAgICAgIDxEcmFnSW5UaGVCbGFua1xuICAgICAgICAgIHsuLi5kZWZhdWx0UHJvcHN9XG4gICAgICAgICAgZmVlZGJhY2s9e3tcbiAgICAgICAgICAgIDA6IHtcbiAgICAgICAgICAgICAgdmFsdWU6ICdKdW1wZWQnLFxuICAgICAgICAgICAgICBjb3JyZWN0OiAnSnVtcGVkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAxOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiAnTGF1Z2hlZCcsXG4gICAgICAgICAgICAgIGNvcnJlY3Q6ICdMYXVnaGVkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAyOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiAnU3Bvb24nLFxuICAgICAgICAgICAgICBjb3JyZWN0OiAnU3Bvb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9fVxuICAgICAgICAvPixcbiAgICAgICk7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZWxlY3Rpb24gc3RhdGUnLCAoKSA9PiB7XG4gICAgY29uc3QgYmFzZVByb3BzID0ge1xuICAgICAgdmFsdWU6IHt9LFxuICAgICAgb25DaGFuZ2U6IGplc3QuZm4oKSxcbiAgICAgIGNob2ljZXM6IFt7IGlkOiAnMCcsIHZhbHVlOiAnZmlyc3RDaG9pY2UnIH0sIHsgaWQ6ICcxJywgdmFsdWU6ICdzZWNvbmRDaG9pY2UnIH1dLFxuICAgICAgbWFya3VwOiAndGV4dCB7ezB9fSBtb3JlIHt7MX19IGVuZCcsXG4gICAgfTtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgYmFzZVByb3BzLm9uQ2hhbmdlLm1vY2tDbGVhcigpO1xuICAgIH0pO1xuXG4gICAgaXQoJ21pcnJvcnMgYW4gYWN0aXZlIGRyYWcgaW50byBzZWxlY3RlZEl0ZW0gb24gZHJhZyBzdGFydCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IERyYWdJblRoZUJsYW5rKGJhc2VQcm9wcyk7XG4gICAgICBpbnN0YW5jZS5zZXRTdGF0ZSA9IChzKSA9PiBPYmplY3QuYXNzaWduKGluc3RhbmNlLnN0YXRlLCB0eXBlb2YgcyA9PT0gJ2Z1bmN0aW9uJyA/IHMoaW5zdGFuY2Uuc3RhdGUpIDogcyk7XG4gICAgICBjb25zdCBkYXRhID0geyBpZDogJzAnLCBjaG9pY2U6IHsgaWQ6ICcwJywgdmFsdWU6ICdYJyB9LCBmcm9tQ2hvaWNlOiBmYWxzZSwgdHlwZTogJ01hc2tCbGFuaycgfTtcblxuICAgICAgaW5zdGFuY2UuaGFuZGxlRHJhZ1N0YXJ0KHsgYWN0aXZlOiB7IGRhdGE6IHsgY3VycmVudDogZGF0YSB9IH0gfSk7XG5cbiAgICAgIGV4cGVjdChpbnN0YW5jZS5zdGF0ZS5zZWxlY3RlZEl0ZW0pLnRvRXF1YWwoZGF0YSk7XG4gICAgfSk7XG5cbiAgICBpdCgndG9nZ2xlSXRlbVNlbGVjdGlvbiBzZWxlY3RzLCB0aGVuIGRlc2VsZWN0cyB0aGUgc2FtZSBpdGVtJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRHJhZ0luVGhlQmxhbmsoYmFzZVByb3BzKTtcbiAgICAgIGluc3RhbmNlLnNldFN0YXRlID0gKHMpID0+IE9iamVjdC5hc3NpZ24oaW5zdGFuY2Uuc3RhdGUsIHR5cGVvZiBzID09PSAnZnVuY3Rpb24nID8gcyhpbnN0YW5jZS5zdGF0ZSkgOiBzKTtcbiAgICAgIGNvbnN0IGRhdGEgPSB7IGNob2ljZTogeyBpZDogJzAnIH0sIGZyb21DaG9pY2U6IHRydWUsIHR5cGU6ICdNYXNrQmxhbmsnIH07XG5cbiAgICAgIGluc3RhbmNlLnRvZ2dsZUl0ZW1TZWxlY3Rpb24oZGF0YSk7XG4gICAgICBleHBlY3QoaW5zdGFuY2Uuc3RhdGUuc2VsZWN0ZWRJdGVtKS50b0VxdWFsKGRhdGEpO1xuXG4gICAgICBpbnN0YW5jZS50b2dnbGVJdGVtU2VsZWN0aW9uKGRhdGEpO1xuICAgICAgZXhwZWN0KGluc3RhbmNlLnN0YXRlLnNlbGVjdGVkSXRlbSkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIGl0KCdwbGFjZVNlbGVjdGVkSXRlbSBwbGFjZXMgYSBwb29sIGNob2ljZSBpbnRvIGEgYmxhbmsgdmlhIGNvbW1pdFBsYWNlbWVudC9vbkNoYW5nZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IERyYWdJblRoZUJsYW5rKGJhc2VQcm9wcyk7XG4gICAgICBpbnN0YW5jZS5zZXRTdGF0ZSA9IChzKSA9PiBPYmplY3QuYXNzaWduKGluc3RhbmNlLnN0YXRlLCB0eXBlb2YgcyA9PT0gJ2Z1bmN0aW9uJyA/IHMoaW5zdGFuY2Uuc3RhdGUpIDogcyk7XG4gICAgICBjb25zdCBwb29sQ2hvaWNlID0geyBjaG9pY2U6IHsgaWQ6ICcwJyB9LCBpbnN0YW5jZUlkOiAneCcsIGZyb21DaG9pY2U6IHRydWUsIHR5cGU6ICdNYXNrQmxhbmsnIH07XG5cbiAgICAgIGluc3RhbmNlLnRvZ2dsZUl0ZW1TZWxlY3Rpb24ocG9vbENob2ljZSk7XG4gICAgICBpbnN0YW5jZS5wbGFjZVNlbGVjdGVkSXRlbSgnYmxhbmstMScpO1xuXG4gICAgICBleHBlY3QoYmFzZVByb3BzLm9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCh7ICdibGFuay0xJzogJzAnIH0pO1xuICAgICAgZXhwZWN0KGluc3RhbmNlLnN0YXRlLnNlbGVjdGVkSXRlbSkudG9CZU51bGwoKTtcbiAgICB9KTtcblxuICAgIGl0KCdwbGFjZVNlbGVjdGVkSXRlbSB3aXRoIHRhcmdldElkIHVuZGVmaW5lZCByZW1vdmVzIGEgcGxhY2VkIGl0ZW0gKHJldHVybnMgaXQgdG8gdGhlIGJvYXJkKScsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzID0geyAuLi5iYXNlUHJvcHMsIHZhbHVlOiB7ICdibGFuay0xJzogJzAnIH0gfTtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IERyYWdJblRoZUJsYW5rKHByb3BzKTtcbiAgICAgIGluc3RhbmNlLnNldFN0YXRlID0gKHMpID0+IE9iamVjdC5hc3NpZ24oaW5zdGFuY2Uuc3RhdGUsIHR5cGVvZiBzID09PSAnZnVuY3Rpb24nID8gcyhpbnN0YW5jZS5zdGF0ZSkgOiBzKTtcbiAgICAgIGNvbnN0IHBsYWNlZEl0ZW0gPSB7IGlkOiAnYmxhbmstMScsIGNob2ljZTogeyBpZDogJzAnIH0sIGluc3RhbmNlSWQ6ICd4JywgZnJvbUNob2ljZTogZmFsc2UsIHR5cGU6ICdNYXNrQmxhbmsnIH07XG5cbiAgICAgIGluc3RhbmNlLnRvZ2dsZUl0ZW1TZWxlY3Rpb24ocGxhY2VkSXRlbSk7XG4gICAgICBpbnN0YW5jZS5wbGFjZVNlbGVjdGVkSXRlbSh1bmRlZmluZWQpO1xuXG4gICAgICBleHBlY3QocHJvcHMub25DaGFuZ2UpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdwbGFjZVNlbGVjdGVkSXRlbSBkb2VzIG5vdGhpbmcgd2hlbiBub3RoaW5nIGlzIHNlbGVjdGVkJywgKCkgPT4ge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgRHJhZ0luVGhlQmxhbmsoYmFzZVByb3BzKTtcbiAgICAgIGluc3RhbmNlLnNldFN0YXRlID0gKHMpID0+IE9iamVjdC5hc3NpZ24oaW5zdGFuY2Uuc3RhdGUsIHR5cGVvZiBzID09PSAnZnVuY3Rpb24nID8gcyhpbnN0YW5jZS5zdGF0ZSkgOiBzKTtcblxuICAgICAgaW5zdGFuY2UucGxhY2VTZWxlY3RlZEl0ZW0oJ2JsYW5rLTEnKTtcblxuICAgICAgZXhwZWN0KGJhc2VQcm9wcy5vbkNoYW5nZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdvbkl0ZW1DbGljayBhbmQgb25QbGFjZW1lbnRDbGljayBhcmUgaWdub3JlZCBmb3IgYSBzaG9ydCB3aW5kb3cgcmlnaHQgYWZ0ZXIgYSBkcmFnIGVuZHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBEcmFnSW5UaGVCbGFuayhiYXNlUHJvcHMpO1xuICAgICAgaW5zdGFuY2Uuc2V0U3RhdGUgPSAocykgPT4gT2JqZWN0LmFzc2lnbihpbnN0YW5jZS5zdGF0ZSwgdHlwZW9mIHMgPT09ICdmdW5jdGlvbicgPyBzKGluc3RhbmNlLnN0YXRlKSA6IHMpO1xuICAgICAgY29uc3QgZGF0YSA9IHsgY2hvaWNlOiB7IGlkOiAnMCcgfSwgZnJvbUNob2ljZTogdHJ1ZSwgdHlwZTogJ01hc2tCbGFuaycgfTtcblxuICAgICAgaW5zdGFuY2UuaGFuZGxlRHJhZ0VuZCh7IGFjdGl2ZTogbnVsbCwgb3ZlcjogbnVsbCB9KTtcbiAgICAgIGluc3RhbmNlLm9uSXRlbUNsaWNrKGRhdGEpO1xuXG4gICAgICBleHBlY3QoaW5zdGFuY2Uuc3RhdGUuc2VsZWN0ZWRJdGVtKS50b0JlTnVsbCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ29uUGxhY2VtZW50Q2xpY2sgaXMgaWdub3JlZCBmb3IgYSBzaG9ydCB3aW5kb3cgcmlnaHQgYWZ0ZXIgYSBkcmFnIGVuZHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBEcmFnSW5UaGVCbGFuayhiYXNlUHJvcHMpO1xuICAgICAgaW5zdGFuY2Uuc2V0U3RhdGUgPSAocykgPT4gT2JqZWN0LmFzc2lnbihpbnN0YW5jZS5zdGF0ZSwgdHlwZW9mIHMgPT09ICdmdW5jdGlvbicgPyBzKGluc3RhbmNlLnN0YXRlKSA6IHMpO1xuICAgICAgY29uc3QgZGF0YSA9IHsgY2hvaWNlOiB7IGlkOiAnMCcgfSwgZnJvbUNob2ljZTogdHJ1ZSwgdHlwZTogJ01hc2tCbGFuaycgfTtcblxuICAgICAgaW5zdGFuY2UuaGFuZGxlRHJhZ0VuZCh7IGFjdGl2ZTogbnVsbCwgb3ZlcjogbnVsbCB9KTtcbiAgICAgIC8vIFNlbGVjdCBhbiBpdGVtIGFmdGVyIHRoZSBkcmFnLWVuZCBndWFyZCBpcyBhcm1lZCwgc28gcGxhY2VTZWxlY3RlZEl0ZW0gd291bGRcbiAgICAgIC8vIGhhdmUgc29tZXRoaW5nIHRvIHBsYWNlIGlmIHRoZSBndWFyZCBkaWRuJ3Qgc2hvcnQtY2lyY3VpdCBpdCBmaXJzdC5cbiAgICAgIGluc3RhbmNlLnRvZ2dsZUl0ZW1TZWxlY3Rpb24oZGF0YSk7XG4gICAgICBpbnN0YW5jZS5vblBsYWNlbWVudENsaWNrKCdibGFuay0xJyk7XG5cbiAgICAgIGV4cGVjdChiYXNlUHJvcHMub25DaGFuZ2UpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICBleHBlY3QoaW5zdGFuY2Uuc3RhdGUuc2VsZWN0ZWRJdGVtKS50b0VxdWFsKGRhdGEpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJvbkRyYWdFbmQgZHJvcHBpbmcgYSBibGFuaydzIG93biBjb250ZW50IGJhY2sgb250byBpdHMgb3duIHNsb3QgaXMgYSBuby1vcFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHsgLi4uYmFzZVByb3BzLCB2YWx1ZTogeyAnYmxhbmstMSc6ICcwJyB9IH07XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBEcmFnSW5UaGVCbGFuayhwcm9wcyk7XG4gICAgICBpbnN0YW5jZS5zZXRTdGF0ZSA9IChzKSA9PiBPYmplY3QuYXNzaWduKGluc3RhbmNlLnN0YXRlLCB0eXBlb2YgcyA9PT0gJ2Z1bmN0aW9uJyA/IHMoaW5zdGFuY2Uuc3RhdGUpIDogcyk7XG4gICAgICBjb25zdCBkcmFnZ2VkSXRlbSA9IHsgaWQ6ICdibGFuay0xJywgY2hvaWNlOiB7IGlkOiAnMCcgfSwgZnJvbUNob2ljZTogZmFsc2UsIHR5cGU6ICdNYXNrQmxhbmsnIH07XG5cbiAgICAgIGluc3RhbmNlLmhhbmRsZURyYWdFbmQoe1xuICAgICAgICBhY3RpdmU6IHsgZGF0YTogeyBjdXJyZW50OiBkcmFnZ2VkSXRlbSB9IH0sXG4gICAgICAgIG92ZXI6IHsgZGF0YTogeyBjdXJyZW50OiB7IGlkOiAnYmxhbmstMScsIGFjY2VwdHM6IFsnTWFza0JsYW5rJ10gfSB9IH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHByb3BzLm9uQ2hhbmdlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRHJhZ1Byb3ZpZGVyIHdpcmluZycsICgpID0+IHtcbiAgICBpdCgncGFzc2VzIHRoZSBUYWIvU2hpZnQrVGFiIGNvb3JkaW5hdGUgZ2V0dGVyIGFuZCBrZXlib2FyZCBjb2RlcyB0byBEcmFnUHJvdmlkZXInLCAoKSA9PiB7XG4gICAgICByZW5kZXIoXG4gICAgICAgIDxEcmFnSW5UaGVCbGFua1xuICAgICAgICAgIHZhbHVlPXt7fX1cbiAgICAgICAgICBvbkNoYW5nZT17amVzdC5mbigpfVxuICAgICAgICAgIGNob2ljZXM9e1tdfVxuICAgICAgICAgIG1hcmt1cD1cInRleHQge3swfX0gZW5kXCJcbiAgICAgICAgLz4sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY2FwdHVyZWREcmFnUHJvdmlkZXJQcm9wcy5rZXlib2FyZENvb3JkaW5hdGVHZXR0ZXIpLnRvQmUoY2xvc2VzdERyb3BwYWJsZUtleWJvYXJkQ29vcmRpbmF0ZXMpO1xuICAgICAgZXhwZWN0KGNhcHR1cmVkRHJhZ1Byb3ZpZGVyUHJvcHMua2V5Ym9hcmRDb2RlcykudG9FcXVhbCh7XG4gICAgICAgIHN0YXJ0OiBbJ1NwYWNlJywgJ0VudGVyJ10sXG4gICAgICAgIGNhbmNlbDogWydFc2NhcGUnXSxcbiAgICAgICAgZW5kOiBbJ1NwYWNlJywgJ0VudGVyJ10sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdwYXNzZXMgb25EcmFnQ2FuY2VsIHRvIERyYWdQcm92aWRlcicsICgpID0+IHtcbiAgICAgIHJlbmRlcihcbiAgICAgICAgPERyYWdJblRoZUJsYW5rXG4gICAgICAgICAgdmFsdWU9e3t9fVxuICAgICAgICAgIG9uQ2hhbmdlPXtqZXN0LmZuKCl9XG4gICAgICAgICAgY2hvaWNlcz17W119XG4gICAgICAgICAgbWFya3VwPVwidGV4dCB7ezB9fSBlbmRcIlxuICAgICAgICAvPixcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdCh0eXBlb2YgY2FwdHVyZWREcmFnUHJvdmlkZXJQcm9wcy5vbkRyYWdDYW5jZWwpLnRvQmUoJ2Z1bmN0aW9uJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBSSxvQkFBQSxHQUFBSixPQUFBO0FBQThFLFNBQUFELHdCQUFBTSxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBUix1QkFBQSxZQUFBQSx3QkFBQU0sQ0FBQSxFQUFBQyxDQUFBLFNBQUFBLENBQUEsSUFBQUQsQ0FBQSxJQUFBQSxDQUFBLENBQUFLLFVBQUEsU0FBQUwsQ0FBQSxNQUFBTSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxLQUFBQyxTQUFBLG1CQUFBVCxDQUFBLGlCQUFBQSxDQUFBLGdCQUFBVSxRQUFBLENBQUFWLENBQUEsMEJBQUFBLENBQUEsU0FBQVEsQ0FBQSxNQUFBRixDQUFBLEdBQUFMLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLFFBQUFHLENBQUEsQ0FBQUssR0FBQSxDQUFBWCxDQUFBLFVBQUFNLENBQUEsQ0FBQU0sR0FBQSxDQUFBWixDQUFB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
|