@kepler.gl/duckdb 3.1.0-alpha.7 → 3.1.1

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.
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.SqlPanel = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
13
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
@@ -14,20 +15,24 @@ var _react = _interopRequireWildcard(require("react"));
14
15
  var _reactRedux = require("react-redux");
15
16
  var _styledComponents = _interopRequireDefault(require("styled-components"));
16
17
  var _reactResizablePanels = require("react-resizable-panels");
18
+ var _actions = require("@kepler.gl/actions");
19
+ var _commonUtils = require("@kepler.gl/common-utils");
20
+ var _components = require("@kepler.gl/components");
21
+ var _processors = require("@kepler.gl/processors");
22
+ var _styles = require("@kepler.gl/styles");
23
+ var _utils = require("@kepler.gl/utils");
17
24
  var _monacoEditor = _interopRequireDefault(require("./monaco-editor"));
18
25
  var _schemaPanel = require("./schema-panel");
19
26
  var _previewDataPanel = require("./preview-data-panel");
20
27
  var _init = require("../init");
21
- var _components = require("@kepler.gl/components");
22
- var _commonUtils = require("@kepler.gl/common-utils");
23
- var _actions = require("@kepler.gl/actions");
24
- var _styles = require("@kepler.gl/styles");
25
- var _utils = require("@kepler.gl/utils");
26
- var _processors = require("@kepler.gl/processors");
27
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11; // SPDX-License-Identifier: MIT
28
+ var _duckdbTableUtils = require("../table/duckdb-table-utils");
29
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12; // SPDX-License-Identifier: MIT
28
30
  // Copyright contributors to the kepler.gl project
29
31
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
30
32
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
33
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
34
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
35
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
31
36
  var StyledSqlPanel = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n height: 100%;\n background-color: ", ";\n border-left: 1px solid #333;\n"])), _styles.sidePanelBg);
32
37
  var StyledSqlActions = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n flex: 0 0 50px;\n display: flex;\n padding-top: 12px;\n align-items: center;\n flex-direction: column;\n justify-content: flex-start;\n border-bottom: 1px solid #333;\n"])));
33
38
  var StyledSqlEditor = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n flex: 1;\n min-width: 0; // Prevents flex child from overflowing\n height: 100%;\n"])));
@@ -41,6 +46,11 @@ var StyledResizeHandle = (0, _styledComponents["default"])(_reactResizablePanels
41
46
  var StyledVerticalResizeHandle = (0, _styledComponents["default"])(_reactResizablePanels.PanelResizeHandle)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n height: 4px;\n cursor: row-resize;\n\n &:hover {\n background-color: #555;\n }\n"])), _styles.panelBorderColor);
42
47
  var StyledLoadingContainer = _styledComponents["default"].div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n"])));
43
48
  var StyledErrorContainer = _styledComponents["default"].pre(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n padding: 12px;\n color: red;\n font-size: 12px;\n background-color: ", ";\n height: 100%;\n overflow: auto;\n"])), _styles.sidePanelBg);
49
+ var StyledFileDropArea = (0, _styledComponents["default"])(_components.FileDrop)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n height: 100%;\n border-width: 1px;\n border: 1px ", "\n ", ";\n .file-drop-target {\n height: 100%;\n }\n"])), function (props) {
50
+ return props.dragOver ? 'solid' : 'dashed';
51
+ }, function (props) {
52
+ return props.dragOver ? props.theme.subtextColorLT : 'transparent';
53
+ });
44
54
  var SCHEMA_PANEL_STYLE = {
45
55
  overflow: 'auto'
46
56
  };
@@ -56,30 +66,43 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
56
66
  setSql = _useState2[1];
57
67
  var _useState3 = (0, _react.useState)(null),
58
68
  _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
59
- result = _useState4[0],
60
- setResult = _useState4[1];
61
- var _useState5 = (0, _react.useState)(null),
69
+ droppedFile = _useState4[0],
70
+ setDroppedFile = _useState4[1];
71
+ var _useState5 = (0, _react.useState)(false),
62
72
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
63
- error = _useState6[0],
64
- setError = _useState6[1];
65
- var _useState7 = (0, _react.useState)(0),
73
+ dragState = _useState6[0],
74
+ setDragState = _useState6[1];
75
+ var _useState7 = (0, _react.useState)(null),
66
76
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
67
- counter = _useState8[0],
68
- setCounter = _useState8[1];
69
- var _useState9 = (0, _react.useState)([]),
77
+ result = _useState8[0],
78
+ setResult = _useState8[1];
79
+ var _useState9 = (0, _react.useState)(0),
70
80
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
71
- tableSchema = _useState10[0],
72
- setTableSchema = _useState10[1];
73
- var _useState11 = (0, _react.useState)(false),
81
+ schemaUpdateTrigger = _useState10[0],
82
+ setSchemaUpdateTrigger = _useState10[1];
83
+ var _useState11 = (0, _react.useState)(null),
74
84
  _useState12 = (0, _slicedToArray2["default"])(_useState11, 2),
75
- isRunning = _useState12[0],
76
- setIsRunning = _useState12[1];
77
- var _useState13 = (0, _react.useState)(function () {
85
+ error = _useState12[0],
86
+ setError = _useState12[1];
87
+ var _useState13 = (0, _react.useState)(0),
88
+ _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
89
+ counter = _useState14[0],
90
+ setCounter = _useState14[1];
91
+ var _useState15 = (0, _react.useState)([]),
92
+ _useState16 = (0, _slicedToArray2["default"])(_useState15, 2),
93
+ tableSchema = _useState16[0],
94
+ setTableSchema = _useState16[1];
95
+ var _useState17 = (0, _react.useState)(false),
96
+ _useState18 = (0, _slicedToArray2["default"])(_useState17, 2),
97
+ isRunning = _useState18[0],
98
+ setIsRunning = _useState18[1];
99
+ var _useState19 = (0, _react.useState)(function () {
78
100
  return (0, _utils.isAppleDevice)();
79
101
  }),
80
- _useState14 = (0, _slicedToArray2["default"])(_useState13, 1),
81
- isMac = _useState14[0];
102
+ _useState20 = (0, _slicedToArray2["default"])(_useState19, 1),
103
+ isMac = _useState20[0];
82
104
  var dispatch = (0, _reactRedux.useDispatch)();
105
+ var droppedFileAreaRef = (0, _react.useRef)(null);
83
106
  (0, _react.useEffect)(function () {
84
107
  var currentUrl = new URL(window.location.href);
85
108
  if (sql) {
@@ -90,65 +113,143 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
90
113
  window.history.replaceState({}, '', currentUrl.toString());
91
114
  }, [sql]);
92
115
  var runQuery = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
93
- var db, connection, arrowResult;
116
+ var adjustedQuery, db, connection, tempTableName, sqlStatements, arrowResult, tableDuckDBTypes, _iterator, _step, statement, isLastQuery, duckDbColumns, columnsToConvertToWKB, _adjustedQuery;
94
117
  return _regenerator["default"].wrap(function _callee$(_context) {
95
118
  while (1) switch (_context.prev = _context.next) {
96
119
  case 0:
97
120
  setIsRunning(true);
98
121
  _context.prev = 1;
99
- if (sql !== null && sql !== void 0 && sql.trim()) {
100
- _context.next = 5;
122
+ adjustedQuery = sql ? (0, _duckdbTableUtils.removeSQLComments)(sql) : null;
123
+ if (adjustedQuery) {
124
+ _context.next = 6;
101
125
  break;
102
126
  }
103
127
  setError(new Error('Query is empty'));
104
128
  return _context.abrupt("return");
105
- case 5:
106
- _context.next = 7;
129
+ case 6:
130
+ _context.next = 8;
107
131
  return (0, _init.getDuckDB)();
108
- case 7:
132
+ case 8:
109
133
  db = _context.sent;
110
- _context.next = 10;
134
+ _context.next = 11;
111
135
  return db.connect();
112
- case 10:
136
+ case 11:
113
137
  connection = _context.sent;
114
- _context.next = 13;
115
- return connection.query(sql);
116
- case 13:
138
+ // TODO find a cheap way to get DuckDb types with a single query to a remote resource - temp table? cte?
139
+ tempTableName = 'temp_keplergl_table'; // remove comments
140
+ sqlStatements = (0, _duckdbTableUtils.splitSqlStatements)(adjustedQuery);
141
+ arrowResult = null;
142
+ tableDuckDBTypes = {};
143
+ _iterator = _createForOfIteratorHelper(sqlStatements);
144
+ _context.prev = 17;
145
+ _iterator.s();
146
+ case 19:
147
+ if ((_step = _iterator.n()).done) {
148
+ _context.next = 48;
149
+ break;
150
+ }
151
+ statement = _step.value;
152
+ isLastQuery = statement === sqlStatements[sqlStatements.length - 1];
153
+ _context.t0 = isLastQuery;
154
+ if (!_context.t0) {
155
+ _context.next = 27;
156
+ break;
157
+ }
158
+ _context.next = 26;
159
+ return (0, _duckdbTableUtils.checkIsSelectQuery)(connection, statement);
160
+ case 26:
161
+ _context.t0 = _context.sent;
162
+ case 27:
163
+ if (!_context.t0) {
164
+ _context.next = 44;
165
+ break;
166
+ }
167
+ _context.next = 30;
168
+ return connection.query("CREATE OR REPLACE TABLE '".concat(tempTableName, "' AS ").concat(statement));
169
+ case 30:
170
+ _context.next = 32;
171
+ return (0, _duckdbTableUtils.getDuckDBColumnTypes)(connection, tempTableName);
172
+ case 32:
173
+ duckDbColumns = _context.sent;
174
+ tableDuckDBTypes = (0, _duckdbTableUtils.getDuckDBColumnTypesMap)(duckDbColumns);
175
+ columnsToConvertToWKB = (0, _duckdbTableUtils.getGeometryColumns)(duckDbColumns); // 3) query GEOMETRY columns as WKB.
176
+ _adjustedQuery = (0, _duckdbTableUtils.constructST_asWKBQuery)(tempTableName, columnsToConvertToWKB);
177
+ _context.next = 38;
178
+ return connection.query(_adjustedQuery);
179
+ case 38:
117
180
  arrowResult = _context.sent;
118
- setResult(arrowResult);
119
- setError(null);
120
- connection.close();
121
- _context.next = 22;
181
+ // 4) set geoarrow extension for the arrow table as DuckDB doesn't support the geoarrow extension.
182
+ (0, _duckdbTableUtils.setGeoArrowWKBExtension)(arrowResult, duckDbColumns);
183
+
184
+ // 5) remove temp table
185
+ _context.next = 42;
186
+ return connection.query("DROP TABLE ".concat(tempTableName, ";"));
187
+ case 42:
188
+ _context.next = 46;
122
189
  break;
123
- case 19:
124
- _context.prev = 19;
125
- _context.t0 = _context["catch"](1);
126
- setError(_context.t0);
127
- case 22:
128
- _context.prev = 22;
190
+ case 44:
191
+ _context.next = 46;
192
+ return connection.query(statement);
193
+ case 46:
194
+ _context.next = 19;
195
+ break;
196
+ case 48:
197
+ _context.next = 53;
198
+ break;
199
+ case 50:
200
+ _context.prev = 50;
201
+ _context.t1 = _context["catch"](17);
202
+ _iterator.e(_context.t1);
203
+ case 53:
204
+ _context.prev = 53;
205
+ _iterator.f();
206
+ return _context.finish(53);
207
+ case 56:
208
+ // Show preview only for the result of the last query
209
+ if (arrowResult) {
210
+ setResult({
211
+ table: arrowResult,
212
+ tableDuckDBTypes: tableDuckDBTypes
213
+ });
214
+ setError(null);
215
+ }
216
+ _context.next = 59;
217
+ return connection.close();
218
+ case 59:
219
+ _context.next = 64;
220
+ break;
221
+ case 61:
222
+ _context.prev = 61;
223
+ _context.t2 = _context["catch"](1);
224
+ setError(_context.t2);
225
+ case 64:
226
+ _context.prev = 64;
129
227
  setIsRunning(false);
130
- return _context.finish(22);
131
- case 25:
228
+ return _context.finish(64);
229
+ case 67:
230
+ // Indicate that there may be a possible change in DuckDB.
231
+ setSchemaUpdateTrigger(Date.now());
232
+ case 68:
132
233
  case "end":
133
234
  return _context.stop();
134
235
  }
135
- }, _callee, null, [[1, 19, 22, 25]]);
236
+ }, _callee, null, [[1, 61, 64, 67], [17, 50, 53, 56]]);
136
237
  })), [sql]);
137
238
  var onChange = (0, _react.useCallback)(function (value) {
138
239
  setSql(value);
139
240
  }, [setSql]);
140
241
  var onAddResultToMap = (0, _react.useCallback)(function () {
141
242
  if (!result) return;
142
- var keplerFields = (0, _processors.arrowSchemaToFields)(result.schema);
243
+ var keplerFields = (0, _processors.arrowSchemaToFields)(result.table, result.tableDuckDBTypes);
143
244
  var datasetToAdd = {
144
245
  data: {
145
246
  fields: keplerFields,
146
247
  // TODO type AddDataToMapPayload -> rows -> + arrow.Table
147
- rows: result
248
+ rows: result.table
148
249
  },
149
250
  info: {
150
251
  id: (0, _commonUtils.generateHashId)(),
151
- label: "Query Result".concat(counter > 0 ? " (".concat(counter, ")") : ''),
252
+ label: "query_result".concat(counter > 0 ? "_".concat(counter) : ''),
152
253
  format: 'arrow'
153
254
  }
154
255
  };
@@ -157,15 +258,101 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
157
258
  }));
158
259
  setCounter(counter + 1);
159
260
  }, [result, counter, dispatch]);
261
+ var isValidFileType = (0, _react.useCallback)(function (filename) {
262
+ var fileExt = _duckdbTableUtils.SUPPORTED_DUCKDB_DROP_EXTENSIONS.find(function (ext) {
263
+ return filename.endsWith(ext);
264
+ });
265
+ return Boolean(fileExt);
266
+ }, []);
267
+ var createTableFromDroppedFile = (0, _react.useCallback)( /*#__PURE__*/function () {
268
+ var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(droppedFile) {
269
+ var _error;
270
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
271
+ while (1) switch (_context2.prev = _context2.next) {
272
+ case 0:
273
+ if (!droppedFile) {
274
+ _context2.next = 5;
275
+ break;
276
+ }
277
+ _context2.next = 3;
278
+ return (0, _duckdbTableUtils.tableFromFile)(droppedFile);
279
+ case 3:
280
+ _error = _context2.sent;
281
+ if (_error) {
282
+ setError(_error);
283
+ } else {
284
+ setError(null);
285
+ }
286
+ case 5:
287
+ setDroppedFile(null);
288
+ setDragState(false);
289
+ case 7:
290
+ case "end":
291
+ return _context2.stop();
292
+ }
293
+ }, _callee2);
294
+ }));
295
+ return function (_x) {
296
+ return _ref3.apply(this, arguments);
297
+ };
298
+ }(), []);
299
+ (0, _react.useEffect)(function () {
300
+ createTableFromDroppedFile(droppedFile);
301
+ }, [droppedFile, createTableFromDroppedFile]);
302
+ var handleFileInput = (0, _react.useCallback)(function (fileList, event) {
303
+ if (event) {
304
+ event.preventDefault();
305
+ event.stopPropagation();
306
+ }
307
+ var files = (0, _toConsumableArray2["default"])(fileList).filter(Boolean);
308
+ var disableExtensionFilter = false;
309
+ var filesToLoad = [];
310
+ var errorFiles = [];
311
+ var _iterator2 = _createForOfIteratorHelper(files),
312
+ _step2;
313
+ try {
314
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
315
+ var file = _step2.value;
316
+ if (disableExtensionFilter || isValidFileType(file.name)) {
317
+ filesToLoad.push(file);
318
+ } else {
319
+ errorFiles.push(file.name);
320
+ }
321
+ }
322
+ } catch (err) {
323
+ _iterator2.e(err);
324
+ } finally {
325
+ _iterator2.f();
326
+ }
327
+ if (filesToLoad.length > 0) {
328
+ setDroppedFile(filesToLoad[0]);
329
+ } else if (errorFiles.length > 0) {
330
+ setError(new Error("Unsupported file formats: ".concat(errorFiles.join(', '))));
331
+ }
332
+ }, [isValidFileType]);
160
333
  return /*#__PURE__*/_react["default"].createElement(StyledSqlPanel, null, /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.PanelGroup, {
161
334
  direction: "horizontal"
162
335
  }, /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.Panel, {
163
336
  defaultSize: 20,
164
337
  minSize: 15,
165
- style: SCHEMA_PANEL_STYLE
338
+ style: SCHEMA_PANEL_STYLE,
339
+ className: "schema-panel"
340
+ }, /*#__PURE__*/_react["default"].createElement(StyledFileDropArea, {
341
+ dragOver: dragState,
342
+ onDragOver: function onDragOver() {
343
+ return setDragState(true);
344
+ },
345
+ onDragLeave: function onDragLeave() {
346
+ return setDragState(false);
347
+ },
348
+ frame: droppedFileAreaRef.current || document,
349
+ onDrop: handleFileInput,
350
+ className: "file-uploader__file-drop"
166
351
  }, /*#__PURE__*/_react["default"].createElement(_schemaPanel.SchemaPanel, {
167
- setTableSchema: setTableSchema
168
- })), /*#__PURE__*/_react["default"].createElement(StyledResizeHandle, null), /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.Panel, {
352
+ setTableSchema: setTableSchema,
353
+ droppedFile: droppedFile,
354
+ schemaUpdateTrigger: schemaUpdateTrigger
355
+ }))), /*#__PURE__*/_react["default"].createElement(StyledResizeHandle, null), /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.Panel, {
169
356
  minSize: 40
170
357
  }, /*#__PURE__*/_react["default"].createElement(StyledSqlEditor, null, /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.PanelGroup, {
171
358
  direction: "vertical"
@@ -191,13 +378,15 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
191
378
  onChange: onChange,
192
379
  tableSchema: tableSchema,
193
380
  code: sql
194
- })))), /*#__PURE__*/_react["default"].createElement(StyledVerticalResizeHandle, null), /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.Panel, null, isRunning ? /*#__PURE__*/_react["default"].createElement(StyledLoadingContainer, null, /*#__PURE__*/_react["default"].createElement(_components.LoadingSpinner, null)) : error ? /*#__PURE__*/_react["default"].createElement(StyledErrorContainer, null, /*#__PURE__*/_react["default"].createElement("div", null, error.message)) : result ? /*#__PURE__*/_react["default"].createElement(StyledDataPanel, null, /*#__PURE__*/_react["default"].createElement(StyledResultActions, null, /*#__PURE__*/_react["default"].createElement(_components.Button, {
381
+ })))), /*#__PURE__*/_react["default"].createElement(StyledVerticalResizeHandle, null), /*#__PURE__*/_react["default"].createElement(_reactResizablePanels.Panel, {
382
+ className: "preview-panel"
383
+ }, isRunning ? /*#__PURE__*/_react["default"].createElement(StyledLoadingContainer, null, /*#__PURE__*/_react["default"].createElement(_components.LoadingSpinner, null)) : error ? /*#__PURE__*/_react["default"].createElement(StyledErrorContainer, null, /*#__PURE__*/_react["default"].createElement("div", null, error.message)) : result ? /*#__PURE__*/_react["default"].createElement(StyledDataPanel, null, /*#__PURE__*/_react["default"].createElement(StyledResultActions, null, /*#__PURE__*/_react["default"].createElement(_components.Button, {
195
384
  secondary: true,
196
385
  onClick: onAddResultToMap
197
- }, "Add to Map"), /*#__PURE__*/_react["default"].createElement("div", null, result.numRows, " rows")), /*#__PURE__*/_react["default"].createElement(_previewDataPanel.PreviewDataPanel, {
386
+ }, "Add to Map"), /*#__PURE__*/_react["default"].createElement("div", null, result.table.numRows, " rows")), /*#__PURE__*/_react["default"].createElement(_previewDataPanel.PreviewDataPanel, {
198
387
  result: result,
199
388
  dataTableStyle: {},
200
389
  onAddResultToMap: onAddResultToMap
201
390
  })) : null))))));
202
391
  };
203
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdFJlc2l6YWJsZVBhbmVscyIsIl9tb25hY29FZGl0b3IiLCJfc2NoZW1hUGFuZWwiLCJfcHJldmlld0RhdGFQYW5lbCIsIl9pbml0IiwiX2NvbXBvbmVudHMiLCJfY29tbW9uVXRpbHMiLCJfYWN0aW9ucyIsIl9zdHlsZXMiLCJfdXRpbHMiLCJfcHJvY2Vzc29ycyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsIl90ZW1wbGF0ZU9iamVjdDgiLCJfdGVtcGxhdGVPYmplY3Q5IiwiX3RlbXBsYXRlT2JqZWN0MTAiLCJfdGVtcGxhdGVPYmplY3QxMSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlN0eWxlZFNxbFBhbmVsIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJzaWRlUGFuZWxCZyIsIlN0eWxlZFNxbEFjdGlvbnMiLCJTdHlsZWRTcWxFZGl0b3IiLCJTdHlsZWRFZGl0b3JQYW5lbCIsIlN0eWxlZERhdGFQYW5lbCIsIlN0eWxlZEVkaXRvciIsInByb3BzIiwiaXNSdW5uaW5nIiwiU3R5bGVkUmVzdWx0QWN0aW9ucyIsIlN0eWxlZFJlc2l6ZUhhbmRsZSIsIlBhbmVsUmVzaXplSGFuZGxlIiwicGFuZWxCb3JkZXJDb2xvciIsIlN0eWxlZFZlcnRpY2FsUmVzaXplSGFuZGxlIiwiU3R5bGVkTG9hZGluZ0NvbnRhaW5lciIsIlN0eWxlZEVycm9yQ29udGFpbmVyIiwicHJlIiwiU0NIRU1BX1BBTkVMX1NUWUxFIiwib3ZlcmZsb3ciLCJTcWxQYW5lbCIsImV4cG9ydHMiLCJfcmVmIiwiX3JlZiRpbml0aWFsU3FsIiwiaW5pdGlhbFNxbCIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwic3FsIiwic2V0U3FsIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJyZXN1bHQiLCJzZXRSZXN1bHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImNvdW50ZXIiLCJzZXRDb3VudGVyIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwidGFibGVTY2hlbWEiLCJzZXRUYWJsZVNjaGVtYSIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJzZXRJc1J1bm5pbmciLCJfdXNlU3RhdGUxMyIsImlzQXBwbGVEZXZpY2UiLCJfdXNlU3RhdGUxNCIsImlzTWFjIiwiZGlzcGF0Y2giLCJ1c2VEaXNwYXRjaCIsInVzZUVmZmVjdCIsImN1cnJlbnRVcmwiLCJVUkwiLCJocmVmIiwic2VhcmNoUGFyYW1zIiwiaGlzdG9yeSIsInJlcGxhY2VTdGF0ZSIsInRvU3RyaW5nIiwicnVuUXVlcnkiLCJ1c2VDYWxsYmFjayIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiZGIiLCJjb25uZWN0aW9uIiwiYXJyb3dSZXN1bHQiLCJ3cmFwIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwidHJpbSIsIkVycm9yIiwiYWJydXB0IiwiZ2V0RHVja0RCIiwic2VudCIsImNvbm5lY3QiLCJxdWVyeSIsImNsb3NlIiwidDAiLCJmaW5pc2giLCJzdG9wIiwib25DaGFuZ2UiLCJ2YWx1ZSIsIm9uQWRkUmVzdWx0VG9NYXAiLCJrZXBsZXJGaWVsZHMiLCJhcnJvd1NjaGVtYVRvRmllbGRzIiwic2NoZW1hIiwiZGF0YXNldFRvQWRkIiwiZGF0YSIsImZpZWxkcyIsInJvd3MiLCJpbmZvIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImxhYmVsIiwiY29uY2F0IiwiZm9ybWF0IiwiYWRkRGF0YVRvTWFwIiwiZGF0YXNldHMiLCJjcmVhdGVFbGVtZW50IiwiUGFuZWxHcm91cCIsImRpcmVjdGlvbiIsIlBhbmVsIiwiZGVmYXVsdFNpemUiLCJtaW5TaXplIiwic3R5bGUiLCJTY2hlbWFQYW5lbCIsImNsYXNzTmFtZSIsIkljb25CdXR0b24iLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJJY29ucyIsIlBsYXkiLCJoZWlnaHQiLCJUb29sdGlwIiwicGxhY2UiLCJlZmZlY3QiLCJpc1JlYWRPbmx5Iiwib25SdW5RdWVyeSIsImNvZGUiLCJMb2FkaW5nU3Bpbm5lciIsIm1lc3NhZ2UiLCJCdXR0b24iLCJzZWNvbmRhcnkiLCJudW1Sb3dzIiwiUHJldmlld0RhdGFQYW5lbCIsImRhdGFUYWJsZVN0eWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvc3FsLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VFZmZlY3R9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlRGlzcGF0Y2h9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtQYW5lbCwgUGFuZWxHcm91cCwgUGFuZWxSZXNpemVIYW5kbGV9IGZyb20gJ3JlYWN0LXJlc2l6YWJsZS1wYW5lbHMnO1xuaW1wb3J0IE1vbmFjb0VkaXRvciBmcm9tICcuL21vbmFjby1lZGl0b3InO1xuaW1wb3J0IHtTY2hlbWFQYW5lbH0gZnJvbSAnLi9zY2hlbWEtcGFuZWwnO1xuaW1wb3J0IHtQcmV2aWV3RGF0YVBhbmVsfSBmcm9tICcuL3ByZXZpZXctZGF0YS1wYW5lbCc7XG5pbXBvcnQge2dldER1Y2tEQn0gZnJvbSAnLi4vaW5pdCc7XG5pbXBvcnQge0J1dHRvbiwgSWNvbkJ1dHRvbiwgVG9vbHRpcH0gZnJvbSAnQGtlcGxlci5nbC9jb21wb25lbnRzJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtJY29ucywgTG9hZGluZ1NwaW5uZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge3NpZGVQYW5lbEJnLCBwYW5lbEJvcmRlckNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge2lzQXBwbGVEZXZpY2V9IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHthcnJvd1NjaGVtYVRvRmllbGRzfSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuXG5jb25zdCBTdHlsZWRTcWxQYW5lbCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtzaWRlUGFuZWxCZ307XG4gIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzMzMztcbmA7XG5cbmNvbnN0IFN0eWxlZFNxbEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICBmbGV4OiAwIDAgNTBweDtcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZy10b3A6IDEycHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMzMzM7XG5gO1xuXG5jb25zdCBTdHlsZWRTcWxFZGl0b3IgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7IC8vIFByZXZlbnRzIGZsZXggY2hpbGQgZnJvbSBvdmVyZmxvd2luZ1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xuXG5jb25zdCBTdHlsZWRFZGl0b3JQYW5lbCA9IHN0eWxlZC5kaXZgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7c2lkZVBhbmVsQmd9O1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGdhcDogNXB4O1xuICBmbGV4LWdyb3c6IDE7XG5gO1xuXG5jb25zdCBTdHlsZWREYXRhUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuYDtcblxuY29uc3QgU3R5bGVkRWRpdG9yID0gc3R5bGVkLmRpdjx7aXNSdW5uaW5nOiBib29sZWFufT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDEycHggMTJweCAxMnB4IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYigzMCwgMzAsIDMwKTtcbiAgb3BhY2l0eTogJHtwcm9wcyA9PiAocHJvcHMuaXNSdW5uaW5nID8gMC41IDogMSl9O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtaW4taGVpZ2h0OiAwOyAvLyBQcmV2ZW50cyBmbGV4IGNoaWxkIGZyb20gb3ZlcmZsb3dpbmdcbmA7XG5cbmNvbnN0IFN0eWxlZFJlc3VsdEFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgcGFkZGluZzogMnB4IDEycHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxMnB4O1xuYDtcblxuY29uc3QgU3R5bGVkUmVzaXplSGFuZGxlID0gc3R5bGVkKFBhbmVsUmVzaXplSGFuZGxlKWBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwYW5lbEJvcmRlckNvbG9yfTtcbiAgd2lkdGg6IDRweDtcbiAgY3Vyc29yOiBjb2wtcmVzaXplO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZFZlcnRpY2FsUmVzaXplSGFuZGxlID0gc3R5bGVkKFBhbmVsUmVzaXplSGFuZGxlKWBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwYW5lbEJvcmRlckNvbG9yfTtcbiAgaGVpZ2h0OiA0cHg7XG4gIGN1cnNvcjogcm93LXJlc2l6ZTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRMb2FkaW5nQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwJTtcbmA7XG5cbmNvbnN0IFN0eWxlZEVycm9yQ29udGFpbmVyID0gc3R5bGVkLnByZWBcbiAgcGFkZGluZzogMTJweDtcbiAgY29sb3I6IHJlZDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3NpZGVQYW5lbEJnfTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBvdmVyZmxvdzogYXV0bztcbmA7XG5cbnR5cGUgU3FsUGFuZWxQcm9wcyA9IHtcbiAgaW5pdGlhbFNxbD86IHN0cmluZztcbn07XG5cbmNvbnN0IFNDSEVNQV9QQU5FTF9TVFlMRSA9IHtvdmVyZmxvdzogJ2F1dG8nfTtcblxuZXhwb3J0IGNvbnN0IFNxbFBhbmVsOiBSZWFjdC5GQzxTcWxQYW5lbFByb3BzPiA9ICh7aW5pdGlhbFNxbCA9ICcnfSkgPT4ge1xuICBjb25zdCBbc3FsLCBzZXRTcWxdID0gdXNlU3RhdGUoKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgcmV0dXJuIHBhcmFtcy5nZXQoJ3NxbCcpIHx8IGluaXRpYWxTcWw7XG4gIH0pO1xuICBjb25zdCBbcmVzdWx0LCBzZXRSZXN1bHRdID0gdXNlU3RhdGU8bnVsbCB8IGFycm93LlRhYmxlPihudWxsKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbY291bnRlciwgc2V0Q291bnRlcl0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgW3RhYmxlU2NoZW1hLCBzZXRUYWJsZVNjaGVtYV0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtpc1J1bm5pbmcsIHNldElzUnVubmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc01hY10gPSB1c2VTdGF0ZSgoKSA9PiBpc0FwcGxlRGV2aWNlKCkpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgaWYgKHNxbCkge1xuICAgICAgY3VycmVudFVybC5zZWFyY2hQYXJhbXMuc2V0KCdzcWwnLCBzcWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50VXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoJ3NxbCcpO1xuICAgIH1cbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCBjdXJyZW50VXJsLnRvU3RyaW5nKCkpO1xuICB9LCBbc3FsXSk7XG5cbiAgY29uc3QgcnVuUXVlcnkgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNSdW5uaW5nKHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXNxbD8udHJpbSgpKSB7XG4gICAgICAgIHNldEVycm9yKG5ldyBFcnJvcignUXVlcnkgaXMgZW1wdHknKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGIgPSBhd2FpdCBnZXREdWNrREIoKTtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBkYi5jb25uZWN0KCk7XG5cbiAgICAgIGNvbnN0IGFycm93UmVzdWx0ID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShzcWwpO1xuICAgICAgc2V0UmVzdWx0KGFycm93UmVzdWx0KTtcbiAgICAgIHNldEVycm9yKG51bGwpO1xuXG4gICAgICBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2V0RXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzUnVubmluZyhmYWxzZSk7XG4gICAgfVxuICB9LCBbc3FsXSk7XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSB1c2VDYWxsYmFjayhcbiAgICB2YWx1ZSA9PiB7XG4gICAgICBzZXRTcWwodmFsdWUpO1xuICAgIH0sXG4gICAgW3NldFNxbF1cbiAgKTtcblxuICBjb25zdCBvbkFkZFJlc3VsdFRvTWFwID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghcmVzdWx0KSByZXR1cm47XG5cbiAgICBjb25zdCBrZXBsZXJGaWVsZHMgPSBhcnJvd1NjaGVtYVRvRmllbGRzKHJlc3VsdC5zY2hlbWEpO1xuXG4gICAgY29uc3QgZGF0YXNldFRvQWRkID0ge1xuICAgICAgZGF0YToge1xuICAgICAgICBmaWVsZHM6IGtlcGxlckZpZWxkcyxcbiAgICAgICAgLy8gVE9ETyB0eXBlIEFkZERhdGFUb01hcFBheWxvYWQgLT4gcm93cyAtPiArIGFycm93LlRhYmxlXG4gICAgICAgIHJvd3M6IHJlc3VsdCBhcyBhbnlcbiAgICAgIH0sXG4gICAgICBpbmZvOiB7XG4gICAgICAgIGlkOiBnZW5lcmF0ZUhhc2hJZCgpLFxuICAgICAgICBsYWJlbDogYFF1ZXJ5IFJlc3VsdCR7Y291bnRlciA+IDAgPyBgICgke2NvdW50ZXJ9KWAgOiAnJ31gLFxuICAgICAgICBmb3JtYXQ6ICdhcnJvdydcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZGlzcGF0Y2goYWRkRGF0YVRvTWFwKHtkYXRhc2V0czogW2RhdGFzZXRUb0FkZF19KSk7XG4gICAgc2V0Q291bnRlcihjb3VudGVyICsgMSk7XG4gIH0sIFtyZXN1bHQsIGNvdW50ZXIsIGRpc3BhdGNoXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU3FsUGFuZWw+XG4gICAgICA8UGFuZWxHcm91cCBkaXJlY3Rpb249XCJob3Jpem9udGFsXCI+XG4gICAgICAgIDxQYW5lbCBkZWZhdWx0U2l6ZT17MjB9IG1pblNpemU9ezE1fSBzdHlsZT17U0NIRU1BX1BBTkVMX1NUWUxFfT5cbiAgICAgICAgICA8U2NoZW1hUGFuZWwgc2V0VGFibGVTY2hlbWE9e3NldFRhYmxlU2NoZW1hfSAvPlxuICAgICAgICA8L1BhbmVsPlxuXG4gICAgICAgIDxTdHlsZWRSZXNpemVIYW5kbGUgLz5cblxuICAgICAgICA8UGFuZWwgbWluU2l6ZT17NDB9PlxuICAgICAgICAgIDxTdHlsZWRTcWxFZGl0b3I+XG4gICAgICAgICAgICA8UGFuZWxHcm91cCBkaXJlY3Rpb249XCJ2ZXJ0aWNhbFwiPlxuICAgICAgICAgICAgICA8UGFuZWwgZGVmYXVsdFNpemU9ezMwfSBjbGFzc05hbWU9XCJlZGl0b3ItcGFuZWxcIj5cbiAgICAgICAgICAgICAgICA8U3R5bGVkRWRpdG9yUGFuZWw+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkU3FsQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRpcFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZm9yPVwicnVuLXF1ZXJ5LXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3J1blF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1J1bm5pbmcgfHwgIXNxbH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxJY29ucy5QbGF5IGhlaWdodD1cIjE4cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIGlkPVwicnVuLXF1ZXJ5LXRvb2x0aXBcIiBwbGFjZT1cInRvcFwiIGVmZmVjdD1cInNvbGlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBSdW4gUXVlcnkgKHtpc01hYyA/ICfijJhFbnRlcicgOiAnQ3RybCtFbnRlcid9IG9yIFNoaWZ0K0VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTcWxBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEVkaXRvciBpc1J1bm5pbmc9e2lzUnVubmluZ30+XG4gICAgICAgICAgICAgICAgICAgIDxNb25hY29FZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICBpc1JlYWRPbmx5PXtpc1J1bm5pbmd9XG4gICAgICAgICAgICAgICAgICAgICAgb25SdW5RdWVyeT17cnVuUXVlcnl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYmxlU2NoZW1hPXt0YWJsZVNjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICBjb2RlPXtzcWx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZEVkaXRvcj5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZEVkaXRvclBhbmVsPlxuICAgICAgICAgICAgICA8L1BhbmVsPlxuXG4gICAgICAgICAgICAgIDxTdHlsZWRWZXJ0aWNhbFJlc2l6ZUhhbmRsZSAvPlxuICAgICAgICAgICAgICA8UGFuZWw+XG4gICAgICAgICAgICAgICAge2lzUnVubmluZyA/IChcbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRMb2FkaW5nQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8TG9hZGluZ1NwaW5uZXIgLz5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTG9hZGluZ0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICApIDogZXJyb3IgPyAoXG4gICAgICAgICAgICAgICAgICA8U3R5bGVkRXJyb3JDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+e2Vycm9yLm1lc3NhZ2V9PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZEVycm9yQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICkgOiByZXN1bHQgPyAoXG4gICAgICAgICAgICAgICAgICA8U3R5bGVkRGF0YVBhbmVsPlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkUmVzdWx0QWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgICA8QnV0dG9uIHNlY29uZGFyeSBvbkNsaWNrPXtvbkFkZFJlc3VsdFRvTWFwfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEFkZCB0byBNYXBcbiAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2PntyZXN1bHQubnVtUm93c30gcm93czwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZFJlc3VsdEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgIDxQcmV2aWV3RGF0YVBhbmVsXG4gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PXtyZXN1bHR9XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVRhYmxlU3R5bGU9e3t9fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQWRkUmVzdWx0VG9NYXA9e29uQWRkUmVzdWx0VG9NYXB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZERhdGFQYW5lbD5cbiAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPC9QYW5lbD5cbiAgICAgICAgICAgIDwvUGFuZWxHcm91cD5cbiAgICAgICAgICA8L1N0eWxlZFNxbEVkaXRvcj5cbiAgICAgICAgPC9QYW5lbD5cbiAgICAgIDwvUGFuZWxHcm91cD5cbiAgICA8L1N0eWxlZFNxbFBhbmVsPlxuICApO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFGLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsS0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsV0FBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsWUFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsUUFBQSxHQUFBWCxPQUFBO0FBRUEsSUFBQVksT0FBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsTUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFB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
392
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdFJlc2l6YWJsZVBhbmVscyIsIl9hY3Rpb25zIiwiX2NvbW1vblV0aWxzIiwiX2NvbXBvbmVudHMiLCJfcHJvY2Vzc29ycyIsIl9zdHlsZXMiLCJfdXRpbHMiLCJfbW9uYWNvRWRpdG9yIiwiX3NjaGVtYVBhbmVsIiwiX3ByZXZpZXdEYXRhUGFuZWwiLCJfaW5pdCIsIl9kdWNrZGJUYWJsZVV0aWxzIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl90ZW1wbGF0ZU9iamVjdDYiLCJfdGVtcGxhdGVPYmplY3Q3IiwiX3RlbXBsYXRlT2JqZWN0OCIsIl90ZW1wbGF0ZU9iamVjdDkiLCJfdGVtcGxhdGVPYmplY3QxMCIsIl90ZW1wbGF0ZU9iamVjdDExIiwiX3RlbXBsYXRlT2JqZWN0MTIiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsImYiLCJUeXBlRXJyb3IiLCJvIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsImZyb20iLCJ0ZXN0IiwiU3R5bGVkU3FsUGFuZWwiLCJzdHlsZWQiLCJkaXYiLCJfdGFnZ2VkVGVtcGxhdGVMaXRlcmFsMiIsInNpZGVQYW5lbEJnIiwiU3R5bGVkU3FsQWN0aW9ucyIsIlN0eWxlZFNxbEVkaXRvciIsIlN0eWxlZEVkaXRvclBhbmVsIiwiU3R5bGVkRGF0YVBhbmVsIiwiU3R5bGVkRWRpdG9yIiwicHJvcHMiLCJpc1J1bm5pbmciLCJTdHlsZWRSZXN1bHRBY3Rpb25zIiwiU3R5bGVkUmVzaXplSGFuZGxlIiwiUGFuZWxSZXNpemVIYW5kbGUiLCJwYW5lbEJvcmRlckNvbG9yIiwiU3R5bGVkVmVydGljYWxSZXNpemVIYW5kbGUiLCJTdHlsZWRMb2FkaW5nQ29udGFpbmVyIiwiU3R5bGVkRXJyb3JDb250YWluZXIiLCJwcmUiLCJTdHlsZWRGaWxlRHJvcEFyZWEiLCJGaWxlRHJvcCIsImRyYWdPdmVyIiwidGhlbWUiLCJzdWJ0ZXh0Q29sb3JMVCIsIlNDSEVNQV9QQU5FTF9TVFlMRSIsIm92ZXJmbG93IiwiU3FsUGFuZWwiLCJleHBvcnRzIiwiX3JlZiIsIl9yZWYkaW5pdGlhbFNxbCIsImluaXRpYWxTcWwiLCJfdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsInBhcmFtcyIsIlVSTFNlYXJjaFBhcmFtcyIsIndpbmRvdyIsImxvY2F0aW9uIiwic2VhcmNoIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNxbCIsInNldFNxbCIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZHJvcHBlZEZpbGUiLCJzZXREcm9wcGVkRmlsZSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiZHJhZ1N0YXRlIiwic2V0RHJhZ1N0YXRlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJyZXN1bHQiLCJzZXRSZXN1bHQiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMTAiLCJzY2hlbWFVcGRhdGVUcmlnZ2VyIiwic2V0U2NoZW1hVXBkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImNvdW50ZXIiLCJzZXRDb3VudGVyIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsInRhYmxlU2NoZW1hIiwic2V0VGFibGVTY2hlbWEiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwic2V0SXNSdW5uaW5nIiwiX3VzZVN0YXRlMTkiLCJpc0FwcGxlRGV2aWNlIiwiX3VzZVN0YXRlMjAiLCJpc01hYyIsImRpc3BhdGNoIiwidXNlRGlzcGF0Y2giLCJkcm9wcGVkRmlsZUFyZWFSZWYiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJjdXJyZW50VXJsIiwiVVJMIiwiaHJlZiIsInNlYXJjaFBhcmFtcyIsImhpc3RvcnkiLCJyZXBsYWNlU3RhdGUiLCJydW5RdWVyeSIsInVzZUNhbGxiYWNrIiwiX2FzeW5jVG9HZW5lcmF0b3IyIiwiX3JlZ2VuZXJhdG9yIiwibWFyayIsIl9jYWxsZWUiLCJhZGp1c3RlZFF1ZXJ5IiwiZGIiLCJjb25uZWN0aW9uIiwidGVtcFRhYmxlTmFtZSIsInNxbFN0YXRlbWVudHMiLCJhcnJvd1Jlc3VsdCIsInRhYmxlRHVja0RCVHlwZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsInN0YXRlbWVudCIsImlzTGFzdFF1ZXJ5IiwiZHVja0RiQ29sdW1ucyIsImNvbHVtbnNUb0NvbnZlcnRUb1dLQiIsIl9hZGp1c3RlZFF1ZXJ5Iiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwicmVtb3ZlU1FMQ29tbWVudHMiLCJFcnJvciIsImFicnVwdCIsImdldER1Y2tEQiIsInNlbnQiLCJjb25uZWN0Iiwic3BsaXRTcWxTdGF0ZW1lbnRzIiwidDAiLCJjaGVja0lzU2VsZWN0UXVlcnkiLCJxdWVyeSIsImNvbmNhdCIsImdldER1Y2tEQkNvbHVtblR5cGVzIiwiZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAiLCJnZXRHZW9tZXRyeUNvbHVtbnMiLCJjb25zdHJ1Y3RTVF9hc1dLQlF1ZXJ5Iiwic2V0R2VvQXJyb3dXS0JFeHRlbnNpb24iLCJ0MSIsImZpbmlzaCIsInRhYmxlIiwiY2xvc2UiLCJ0MiIsIkRhdGUiLCJub3ciLCJzdG9wIiwib25DaGFuZ2UiLCJvbkFkZFJlc3VsdFRvTWFwIiwia2VwbGVyRmllbGRzIiwiYXJyb3dTY2hlbWFUb0ZpZWxkcyIsImRhdGFzZXRUb0FkZCIsImRhdGEiLCJmaWVsZHMiLCJyb3dzIiwiaW5mbyIsImlkIiwiZ2VuZXJhdGVIYXNoSWQiLCJsYWJlbCIsImZvcm1hdCIsImFkZERhdGFUb01hcCIsImRhdGFzZXRzIiwiaXNWYWxpZEZpbGVUeXBlIiwiZmlsZW5hbWUiLCJmaWxlRXh0IiwiU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlMiLCJmaW5kIiwiZXh0IiwiZW5kc1dpdGgiLCJCb29sZWFuIiwiY3JlYXRlVGFibGVGcm9tRHJvcHBlZEZpbGUiLCJfcmVmMyIsIl9jYWxsZWUyIiwiX2Vycm9yIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwidGFibGVGcm9tRmlsZSIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVGaWxlSW5wdXQiLCJmaWxlTGlzdCIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJmaWxlcyIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJmaWx0ZXIiLCJkaXNhYmxlRXh0ZW5zaW9uRmlsdGVyIiwiZmlsZXNUb0xvYWQiLCJlcnJvckZpbGVzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImZpbGUiLCJwdXNoIiwiZXJyIiwiam9pbiIsImNyZWF0ZUVsZW1lbnQiLCJQYW5lbEdyb3VwIiwiZGlyZWN0aW9uIiwiUGFuZWwiLCJkZWZhdWx0U2l6ZSIsIm1pblNpemUiLCJzdHlsZSIsImNsYXNzTmFtZSIsIm9uRHJhZ092ZXIiLCJvbkRyYWdMZWF2ZSIsImZyYW1lIiwiY3VycmVudCIsImRvY3VtZW50Iiwib25Ecm9wIiwiU2NoZW1hUGFuZWwiLCJJY29uQnV0dG9uIiwib25DbGljayIsImRpc2FibGVkIiwiSWNvbnMiLCJQbGF5IiwiaGVpZ2h0IiwiVG9vbHRpcCIsInBsYWNlIiwiZWZmZWN0IiwiaXNSZWFkT25seSIsIm9uUnVuUXVlcnkiLCJjb2RlIiwiTG9hZGluZ1NwaW5uZXIiLCJtZXNzYWdlIiwiQnV0dG9uIiwic2Vjb25kYXJ5IiwibnVtUm93cyIsIlByZXZpZXdEYXRhUGFuZWwiLCJkYXRhVGFibGVTdHlsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL3NxbC1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7dXNlRGlzcGF0Y2h9IGZyb20gJ3JlYWN0LXJlZHV4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtQYW5lbCwgUGFuZWxHcm91cCwgUGFuZWxSZXNpemVIYW5kbGV9IGZyb20gJ3JlYWN0LXJlc2l6YWJsZS1wYW5lbHMnO1xuXG5pbXBvcnQge2FkZERhdGFUb01hcH0gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7Z2VuZXJhdGVIYXNoSWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcbmltcG9ydCB7QnV0dG9uLCBGaWxlRHJvcCwgSWNvbkJ1dHRvbiwgSWNvbnMsIExvYWRpbmdTcGlubmVyLCBUb29sdGlwfSBmcm9tICdAa2VwbGVyLmdsL2NvbXBvbmVudHMnO1xuaW1wb3J0IHthcnJvd1NjaGVtYVRvRmllbGRzfSBmcm9tICdAa2VwbGVyLmdsL3Byb2Nlc3NvcnMnO1xuaW1wb3J0IHtzaWRlUGFuZWxCZywgcGFuZWxCb3JkZXJDb2xvcn0gZnJvbSAnQGtlcGxlci5nbC9zdHlsZXMnO1xuaW1wb3J0IHtpc0FwcGxlRGV2aWNlfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IE1vbmFjb0VkaXRvciBmcm9tICcuL21vbmFjby1lZGl0b3InO1xuaW1wb3J0IHtTY2hlbWFQYW5lbCwgU2NoZW1hU3VnZ2VzdGlvbn0gZnJvbSAnLi9zY2hlbWEtcGFuZWwnO1xuaW1wb3J0IHtQcmV2aWV3RGF0YVBhbmVsLCBRdWVyeVJlc3VsdH0gZnJvbSAnLi9wcmV2aWV3LWRhdGEtcGFuZWwnO1xuaW1wb3J0IHtnZXREdWNrREJ9IGZyb20gJy4uL2luaXQnO1xuaW1wb3J0IHtcbiAgY29uc3RydWN0U1RfYXNXS0JRdWVyeSxcbiAgZ2V0RHVja0RCQ29sdW1uVHlwZXMsXG4gIGdldER1Y2tEQkNvbHVtblR5cGVzTWFwLFxuICBnZXRHZW9tZXRyeUNvbHVtbnMsXG4gIHNldEdlb0Fycm93V0tCRXh0ZW5zaW9uLFxuICBzcGxpdFNxbFN0YXRlbWVudHMsXG4gIGNoZWNrSXNTZWxlY3RRdWVyeSxcbiAgcmVtb3ZlU1FMQ29tbWVudHMsXG4gIHRhYmxlRnJvbUZpbGUsXG4gIFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TXG59IGZyb20gJy4uL3RhYmxlL2R1Y2tkYi10YWJsZS11dGlscyc7XG5cbmNvbnN0IFN0eWxlZFNxbFBhbmVsID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3NpZGVQYW5lbEJnfTtcbiAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjMzMzO1xuYDtcblxuY29uc3QgU3R5bGVkU3FsQWN0aW9ucyA9IHN0eWxlZC5kaXZgXG4gIGZsZXg6IDAgMCA1MHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nLXRvcDogMTJweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzMzMztcbmA7XG5cbmNvbnN0IFN0eWxlZFNxbEVkaXRvciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGZsZXg6IDE7XG4gIG1pbi13aWR0aDogMDsgLy8gUHJldmVudHMgZmxleCBjaGlsZCBmcm9tIG92ZXJmbG93aW5nXG4gIGhlaWdodDogMTAwJTtcbmA7XG5cbmNvbnN0IFN0eWxlZEVkaXRvclBhbmVsID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtzaWRlUGFuZWxCZ307XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGhlaWdodDogMTAwJTtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZ2FwOiA1cHg7XG4gIGZsZXgtZ3JvdzogMTtcbmA7XG5cbmNvbnN0IFN0eWxlZERhdGFQYW5lbCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZDogd2hpdGU7XG5gO1xuXG5jb25zdCBTdHlsZWRFZGl0b3IgPSBzdHlsZWQuZGl2PHtpc1J1bm5pbmc6IGJvb2xlYW59PmBcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZzogMTJweCAxMnB4IDEycHggMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDMwLCAzMCwgMzApO1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy5pc1J1bm5pbmcgPyAwLjUgOiAxKX07XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDA7IC8vIFByZXZlbnRzIGZsZXggY2hpbGQgZnJvbSBvdmVyZmxvd2luZ1xuYDtcblxuY29uc3QgU3R5bGVkUmVzdWx0QWN0aW9ucyA9IHN0eWxlZC5kaXZgXG4gIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICBwYWRkaW5nOiAycHggMTJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDEycHg7XG5gO1xuXG5jb25zdCBTdHlsZWRSZXNpemVIYW5kbGUgPSBzdHlsZWQoUGFuZWxSZXNpemVIYW5kbGUpYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3BhbmVsQm9yZGVyQ29sb3J9O1xuICB3aWR0aDogNHB4O1xuICBjdXJzb3I6IGNvbC1yZXNpemU7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkVmVydGljYWxSZXNpemVIYW5kbGUgPSBzdHlsZWQoUGFuZWxSZXNpemVIYW5kbGUpYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3BhbmVsQm9yZGVyQ29sb3J9O1xuICBoZWlnaHQ6IDRweDtcbiAgY3Vyc29yOiByb3ctcmVzaXplO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM1NTU7XG4gIH1cbmA7XG5cbmNvbnN0IFN0eWxlZExvYWRpbmdDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkRXJyb3JDb250YWluZXIgPSBzdHlsZWQucHJlYFxuICBwYWRkaW5nOiAxMnB4O1xuICBjb2xvcjogcmVkO1xuICBmb250LXNpemU6IDEycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7c2lkZVBhbmVsQmd9O1xuICBoZWlnaHQ6IDEwMCU7XG4gIG92ZXJmbG93OiBhdXRvO1xuYDtcblxuaW50ZXJmYWNlIFN0eWxlZERyYWdQYW5lbFByb3BzIHtcbiAgZHJhZ092ZXI/OiBib29sZWFuO1xufVxuXG5jb25zdCBTdHlsZWRGaWxlRHJvcEFyZWEgPSBzdHlsZWQoRmlsZURyb3ApPFN0eWxlZERyYWdQYW5lbFByb3BzPmBcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyOiAxcHggJHtwcm9wcyA9PiAocHJvcHMuZHJhZ092ZXIgPyAnc29saWQnIDogJ2Rhc2hlZCcpfVxuICAgICR7cHJvcHMgPT4gKHByb3BzLmRyYWdPdmVyID8gcHJvcHMudGhlbWUuc3VidGV4dENvbG9yTFQgOiAndHJhbnNwYXJlbnQnKX07XG4gIC5maWxlLWRyb3AtdGFyZ2V0IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbmA7XG5cbnR5cGUgU3FsUGFuZWxQcm9wcyA9IHtcbiAgaW5pdGlhbFNxbD86IHN0cmluZztcbn07XG5cbmNvbnN0IFNDSEVNQV9QQU5FTF9TVFlMRSA9IHtvdmVyZmxvdzogJ2F1dG8nfTtcblxuZXhwb3J0IGNvbnN0IFNxbFBhbmVsOiBSZWFjdC5GQzxTcWxQYW5lbFByb3BzPiA9ICh7aW5pdGlhbFNxbCA9ICcnfSkgPT4ge1xuICBjb25zdCBbc3FsLCBzZXRTcWxdID0gdXNlU3RhdGUoKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgcmV0dXJuIHBhcmFtcy5nZXQoJ3NxbCcpIHx8IGluaXRpYWxTcWw7XG4gIH0pO1xuICBjb25zdCBbZHJvcHBlZEZpbGUsIHNldERyb3BwZWRGaWxlXSA9IHVzZVN0YXRlPEZpbGUgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2RyYWdTdGF0ZSwgc2V0RHJhZ1N0YXRlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Jlc3VsdCwgc2V0UmVzdWx0XSA9IHVzZVN0YXRlPG51bGwgfCBRdWVyeVJlc3VsdD4obnVsbCk7XG4gIGNvbnN0IFtzY2hlbWFVcGRhdGVUcmlnZ2VyLCBzZXRTY2hlbWFVcGRhdGVUcmlnZ2VyXSA9IHVzZVN0YXRlPG51bWJlcj4oMCk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8RXJyb3IgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2NvdW50ZXIsIHNldENvdW50ZXJdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IFt0YWJsZVNjaGVtYSwgc2V0VGFibGVTY2hlbWFdID0gdXNlU3RhdGU8U2NoZW1hU3VnZ2VzdGlvbltdPihbXSk7XG4gIGNvbnN0IFtpc1J1bm5pbmcsIHNldElzUnVubmluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc01hY10gPSB1c2VTdGF0ZSgoKSA9PiBpc0FwcGxlRGV2aWNlKCkpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgY29uc3QgZHJvcHBlZEZpbGVBcmVhUmVmID0gdXNlUmVmKG51bGwpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIGlmIChzcWwpIHtcbiAgICAgIGN1cnJlbnRVcmwuc2VhcmNoUGFyYW1zLnNldCgnc3FsJywgc3FsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudFVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKCdzcWwnKTtcbiAgICB9XG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgY3VycmVudFVybC50b1N0cmluZygpKTtcbiAgfSwgW3NxbF0pO1xuXG4gIGNvbnN0IHJ1blF1ZXJ5ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldElzUnVubmluZyh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYWRqdXN0ZWRRdWVyeSA9IHNxbCA/IHJlbW92ZVNRTENvbW1lbnRzKHNxbCkgOiBudWxsO1xuICAgICAgaWYgKCFhZGp1c3RlZFF1ZXJ5KSB7XG4gICAgICAgIHNldEVycm9yKG5ldyBFcnJvcignUXVlcnkgaXMgZW1wdHknKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGIgPSBhd2FpdCBnZXREdWNrREIoKTtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBhd2FpdCBkYi5jb25uZWN0KCk7XG5cbiAgICAgIC8vIFRPRE8gZmluZCBhIGNoZWFwIHdheSB0byBnZXQgRHVja0RiIHR5cGVzIHdpdGggYSBzaW5nbGUgcXVlcnkgdG8gYSByZW1vdGUgcmVzb3VyY2UgLSB0ZW1wIHRhYmxlPyBjdGU/XG4gICAgICBjb25zdCB0ZW1wVGFibGVOYW1lID0gJ3RlbXBfa2VwbGVyZ2xfdGFibGUnO1xuXG4gICAgICAvLyByZW1vdmUgY29tbWVudHNcbiAgICAgIGNvbnN0IHNxbFN0YXRlbWVudHMgPSBzcGxpdFNxbFN0YXRlbWVudHMoYWRqdXN0ZWRRdWVyeSk7XG5cbiAgICAgIGxldCBhcnJvd1Jlc3VsdDogYXJyb3cuVGFibGUgfCBudWxsID0gbnVsbDtcbiAgICAgIGxldCB0YWJsZUR1Y2tEQlR5cGVzID0ge307XG5cbiAgICAgIGZvciAoY29uc3Qgc3RhdGVtZW50IG9mIHNxbFN0YXRlbWVudHMpIHtcbiAgICAgICAgY29uc3QgaXNMYXN0UXVlcnkgPSBzdGF0ZW1lbnQgPT09IHNxbFN0YXRlbWVudHNbc3FsU3RhdGVtZW50cy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGlzTGFzdFF1ZXJ5ICYmIChhd2FpdCBjaGVja0lzU2VsZWN0UXVlcnkoY29ubmVjdGlvbiwgc3RhdGVtZW50KSkpIHtcbiAgICAgICAgICAvLyAxKSBjcmVhdGUgdGVtcCB0YWJsZSBmcm9tIHRoZSBvcmlnaW5hbCBxdWVyeS5cbiAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBDUkVBVEUgT1IgUkVQTEFDRSBUQUJMRSAnJHt0ZW1wVGFibGVOYW1lfScgQVMgJHtzdGF0ZW1lbnR9YCk7XG5cbiAgICAgICAgICAvLyAyKSBxdWVyeSBkdWNrZGIgdHlwZXMgYW5kIGRldGVjdCBjYW5kaWRhdGUgY29sdW1ucyBmb3IgU1RfYXNXS0IgdHJhbnNmb3JtLlxuICAgICAgICAgIGNvbnN0IGR1Y2tEYkNvbHVtbnMgPSBhd2FpdCBnZXREdWNrREJDb2x1bW5UeXBlcyhjb25uZWN0aW9uLCB0ZW1wVGFibGVOYW1lKTtcbiAgICAgICAgICB0YWJsZUR1Y2tEQlR5cGVzID0gZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAoZHVja0RiQ29sdW1ucyk7XG4gICAgICAgICAgY29uc3QgY29sdW1uc1RvQ29udmVydFRvV0tCID0gZ2V0R2VvbWV0cnlDb2x1bW5zKGR1Y2tEYkNvbHVtbnMpO1xuXG4gICAgICAgICAgLy8gMykgcXVlcnkgR0VPTUVUUlkgY29sdW1ucyBhcyBXS0IuXG4gICAgICAgICAgY29uc3QgYWRqdXN0ZWRRdWVyeSA9IGNvbnN0cnVjdFNUX2FzV0tCUXVlcnkodGVtcFRhYmxlTmFtZSwgY29sdW1uc1RvQ29udmVydFRvV0tCKTtcbiAgICAgICAgICBhcnJvd1Jlc3VsdCA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYWRqdXN0ZWRRdWVyeSk7XG5cbiAgICAgICAgICAvLyA0KSBzZXQgZ2VvYXJyb3cgZXh0ZW5zaW9uIGZvciB0aGUgYXJyb3cgdGFibGUgYXMgRHVja0RCIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgZ2VvYXJyb3cgZXh0ZW5zaW9uLlxuICAgICAgICAgIHNldEdlb0Fycm93V0tCRXh0ZW5zaW9uKGFycm93UmVzdWx0LCBkdWNrRGJDb2x1bW5zKTtcblxuICAgICAgICAgIC8vIDUpIHJlbW92ZSB0ZW1wIHRhYmxlXG4gICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShgRFJPUCBUQUJMRSAke3RlbXBUYWJsZU5hbWV9O2ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoc3RhdGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaG93IHByZXZpZXcgb25seSBmb3IgdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBxdWVyeVxuICAgICAgaWYgKGFycm93UmVzdWx0KSB7XG4gICAgICAgIHNldFJlc3VsdCh7dGFibGU6IGFycm93UmVzdWx0LCB0YWJsZUR1Y2tEQlR5cGVzfSk7XG4gICAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgc2V0RXJyb3IoZSBhcyBFcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzUnVubmluZyhmYWxzZSk7XG4gICAgfVxuXG4gICAgLy8gSW5kaWNhdGUgdGhhdCB0aGVyZSBtYXkgYmUgYSBwb3NzaWJsZSBjaGFuZ2UgaW4gRHVja0RCLlxuICAgIHNldFNjaGVtYVVwZGF0ZVRyaWdnZXIoRGF0ZS5ub3coKSk7XG4gIH0sIFtzcWxdKTtcblxuICBjb25zdCBvbkNoYW5nZSA9IHVzZUNhbGxiYWNrKFxuICAgIHZhbHVlID0+IHtcbiAgICAgIHNldFNxbCh2YWx1ZSk7XG4gICAgfSxcbiAgICBbc2V0U3FsXVxuICApO1xuXG4gIGNvbnN0IG9uQWRkUmVzdWx0VG9NYXAgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFyZXN1bHQpIHJldHVybjtcblxuICAgIGNvbnN0IGtlcGxlckZpZWxkcyA9IGFycm93U2NoZW1hVG9GaWVsZHMocmVzdWx0LnRhYmxlLCByZXN1bHQudGFibGVEdWNrREJUeXBlcyk7XG5cbiAgICBjb25zdCBkYXRhc2V0VG9BZGQgPSB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIGZpZWxkczoga2VwbGVyRmllbGRzLFxuICAgICAgICAvLyBUT0RPIHR5cGUgQWRkRGF0YVRvTWFwUGF5bG9hZCAtPiByb3dzIC0+ICsgYXJyb3cuVGFibGVcbiAgICAgICAgcm93czogcmVzdWx0LnRhYmxlIGFzIGFueVxuICAgICAgfSxcbiAgICAgIGluZm86IHtcbiAgICAgICAgaWQ6IGdlbmVyYXRlSGFzaElkKCksXG4gICAgICAgIGxhYmVsOiBgcXVlcnlfcmVzdWx0JHtjb3VudGVyID4gMCA/IGBfJHtjb3VudGVyfWAgOiAnJ31gLFxuICAgICAgICBmb3JtYXQ6ICdhcnJvdydcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZGlzcGF0Y2goYWRkRGF0YVRvTWFwKHtkYXRhc2V0czogW2RhdGFzZXRUb0FkZF19KSk7XG4gICAgc2V0Q291bnRlcihjb3VudGVyICsgMSk7XG4gIH0sIFtyZXN1bHQsIGNvdW50ZXIsIGRpc3BhdGNoXSk7XG5cbiAgY29uc3QgaXNWYWxpZEZpbGVUeXBlID0gdXNlQ2FsbGJhY2soZmlsZW5hbWUgPT4ge1xuICAgIGNvbnN0IGZpbGVFeHQgPSBTVVBQT1JURURfRFVDS0RCX0RST1BfRVhURU5TSU9OUy5maW5kKGV4dCA9PiBmaWxlbmFtZS5lbmRzV2l0aChleHQpKTtcbiAgICByZXR1cm4gQm9vbGVhbihmaWxlRXh0KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNyZWF0ZVRhYmxlRnJvbURyb3BwZWRGaWxlID0gdXNlQ2FsbGJhY2soYXN5bmMgKGRyb3BwZWRGaWxlOiBGaWxlIHwgbnVsbCkgPT4ge1xuICAgIGlmIChkcm9wcGVkRmlsZSkge1xuICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCB0YWJsZUZyb21GaWxlKGRyb3BwZWRGaWxlKTtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICBzZXRFcnJvcihlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvcihudWxsKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXREcm9wcGVkRmlsZShudWxsKTtcbiAgICBzZXREcmFnU3RhdGUoZmFsc2UpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjcmVhdGVUYWJsZUZyb21Ecm9wcGVkRmlsZShkcm9wcGVkRmlsZSk7XG4gIH0sIFtkcm9wcGVkRmlsZSwgY3JlYXRlVGFibGVGcm9tRHJvcHBlZEZpbGVdKTtcblxuICBjb25zdCBoYW5kbGVGaWxlSW5wdXQgPSB1c2VDYWxsYmFjayhcbiAgICAoZmlsZUxpc3Q6IEZpbGVMaXN0LCBldmVudDogRHJhZ0V2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbGVzID0gWy4uLmZpbGVMaXN0XS5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICAgIGNvbnN0IGRpc2FibGVFeHRlbnNpb25GaWx0ZXIgPSBmYWxzZTtcblxuICAgICAgY29uc3QgZmlsZXNUb0xvYWQ6IEZpbGVbXSA9IFtdO1xuICAgICAgY29uc3QgZXJyb3JGaWxlczogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBpZiAoZGlzYWJsZUV4dGVuc2lvbkZpbHRlciB8fCBpc1ZhbGlkRmlsZVR5cGUoZmlsZS5uYW1lKSkge1xuICAgICAgICAgIGZpbGVzVG9Mb2FkLnB1c2goZmlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXJyb3JGaWxlcy5wdXNoKGZpbGUubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbGVzVG9Mb2FkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2V0RHJvcHBlZEZpbGUoZmlsZXNUb0xvYWRbMF0pO1xuICAgICAgfSBlbHNlIGlmIChlcnJvckZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2V0RXJyb3IobmV3IEVycm9yKGBVbnN1cHBvcnRlZCBmaWxlIGZvcm1hdHM6ICR7ZXJyb3JGaWxlcy5qb2luKCcsICcpfWApKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtpc1ZhbGlkRmlsZVR5cGVdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkU3FsUGFuZWw+XG4gICAgICA8UGFuZWxHcm91cCBkaXJlY3Rpb249XCJob3Jpem9udGFsXCI+XG4gICAgICAgIDxQYW5lbCBkZWZhdWx0U2l6ZT17MjB9IG1pblNpemU9ezE1fSBzdHlsZT17U0NIRU1BX1BBTkVMX1NUWUxFfSBjbGFzc05hbWU9XCJzY2hlbWEtcGFuZWxcIj5cbiAgICAgICAgICA8U3R5bGVkRmlsZURyb3BBcmVhXG4gICAgICAgICAgICBkcmFnT3Zlcj17ZHJhZ1N0YXRlfVxuICAgICAgICAgICAgb25EcmFnT3Zlcj17KCkgPT4gc2V0RHJhZ1N0YXRlKHRydWUpfVxuICAgICAgICAgICAgb25EcmFnTGVhdmU9eygpID0+IHNldERyYWdTdGF0ZShmYWxzZSl9XG4gICAgICAgICAgICBmcmFtZT17ZHJvcHBlZEZpbGVBcmVhUmVmLmN1cnJlbnQgfHwgZG9jdW1lbnR9XG4gICAgICAgICAgICBvbkRyb3A9e2hhbmRsZUZpbGVJbnB1dH1cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImZpbGUtdXBsb2FkZXJfX2ZpbGUtZHJvcFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNjaGVtYVBhbmVsXG4gICAgICAgICAgICAgIHNldFRhYmxlU2NoZW1hPXtzZXRUYWJsZVNjaGVtYX1cbiAgICAgICAgICAgICAgZHJvcHBlZEZpbGU9e2Ryb3BwZWRGaWxlfVxuICAgICAgICAgICAgICBzY2hlbWFVcGRhdGVUcmlnZ2VyPXtzY2hlbWFVcGRhdGVUcmlnZ2VyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1N0eWxlZEZpbGVEcm9wQXJlYT5cbiAgICAgICAgPC9QYW5lbD5cblxuICAgICAgICA8U3R5bGVkUmVzaXplSGFuZGxlIC8+XG5cbiAgICAgICAgPFBhbmVsIG1pblNpemU9ezQwfT5cbiAgICAgICAgICA8U3R5bGVkU3FsRWRpdG9yPlxuICAgICAgICAgICAgPFBhbmVsR3JvdXAgZGlyZWN0aW9uPVwidmVydGljYWxcIj5cbiAgICAgICAgICAgICAgPFBhbmVsIGRlZmF1bHRTaXplPXszMH0gY2xhc3NOYW1lPVwiZWRpdG9yLXBhbmVsXCI+XG4gICAgICAgICAgICAgICAgPFN0eWxlZEVkaXRvclBhbmVsPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZFNxbEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS10aXBcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLWZvcj1cInJ1bi1xdWVyeS10b29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtydW5RdWVyeX1cbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNSdW5uaW5nIHx8ICFzcWx9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SWNvbnMuUGxheSBoZWlnaHQ9XCIxOHB4XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcCBpZD1cInJ1bi1xdWVyeS10b29sdGlwXCIgcGxhY2U9XCJ0b3BcIiBlZmZlY3Q9XCJzb2xpZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgUnVuIFF1ZXJ5ICh7aXNNYWMgPyAn4oyYRW50ZXInIDogJ0N0cmwrRW50ZXInfSBvciBTaGlmdCtFbnRlcilcbiAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkU3FsQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRFZGl0b3IgaXNSdW5uaW5nPXtpc1J1bm5pbmd9PlxuICAgICAgICAgICAgICAgICAgICA8TW9uYWNvRWRpdG9yXG4gICAgICAgICAgICAgICAgICAgICAgaXNSZWFkT25seT17aXNSdW5uaW5nfVxuICAgICAgICAgICAgICAgICAgICAgIG9uUnVuUXVlcnk9e3J1blF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgICAgICAgICB0YWJsZVNjaGVtYT17dGFibGVTY2hlbWF9XG4gICAgICAgICAgICAgICAgICAgICAgY29kZT17c3FsfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRFZGl0b3I+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRFZGl0b3JQYW5lbD5cbiAgICAgICAgICAgICAgPC9QYW5lbD5cblxuICAgICAgICAgICAgICA8U3R5bGVkVmVydGljYWxSZXNpemVIYW5kbGUgLz5cbiAgICAgICAgICAgICAgPFBhbmVsIGNsYXNzTmFtZT1cInByZXZpZXctcGFuZWxcIj5cbiAgICAgICAgICAgICAgICB7aXNSdW5uaW5nID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZExvYWRpbmdDb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRMb2FkaW5nQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICkgOiBlcnJvciA/IChcbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRFcnJvckNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj57ZXJyb3IubWVzc2FnZX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkRXJyb3JDb250YWluZXI+XG4gICAgICAgICAgICAgICAgKSA6IHJlc3VsdCA/IChcbiAgICAgICAgICAgICAgICAgIDxTdHlsZWREYXRhUGFuZWw+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRSZXN1bHRBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICAgIDxCdXR0b24gc2Vjb25kYXJ5IG9uQ2xpY2s9e29uQWRkUmVzdWx0VG9NYXB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgQWRkIHRvIE1hcFxuICAgICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3Jlc3VsdC50YWJsZS5udW1Sb3dzfSByb3dzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkUmVzdWx0QWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgPFByZXZpZXdEYXRhUGFuZWxcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9e3Jlc3VsdH1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhVGFibGVTdHlsZT17e319XG4gICAgICAgICAgICAgICAgICAgICAgb25BZGRSZXN1bHRUb01hcD17b25BZGRSZXN1bHRUb01hcH1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkRGF0YVBhbmVsPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8L1BhbmVsPlxuICAgICAgICAgICAgPC9QYW5lbEdyb3VwPlxuICAgICAgICAgIDwvU3R5bGVkU3FsRWRpdG9yPlxuICAgICAgICA8L1BhbmVsPlxuICAgICAgPC9QYW5lbEdyb3VwPlxuICAgIDwvU3R5bGVkU3FsUGFuZWw+XG4gICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBSUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFKLE9BQUE7QUFFQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxXQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxXQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxPQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxNQUFBLEdBQUFWLE9BQUE7QUFFQSxJQUFBVyxhQUFBLEdBQUFSLHNCQUFBLENBQUFILE9BQUE7QUFDQSxJQUFBWSxZQUFBLEdBQUFaLE9BQUE7QUFDQSxJQUFBYSxpQkFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsS0FB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QUFDLGFBQzlDLEVBQUNySSxLQUFLLEdBQUcsUUFBUSxHQUFHLFlBQVksRUFBQyxrQkFDckMsQ0FDQyxDQUNJLENBQUMsZUFDbkJ0SixNQUFBLFlBQUFvUSxhQUFBLENBQUNsTCxZQUFZO0lBQUNFLFNBQVMsRUFBRUE7RUFBVSxnQkFDakNwRixNQUFBLFlBQUFvUSxhQUFBLENBQUN2UCxhQUFBLFdBQVk7SUFDWCtRLFVBQVUsRUFBRXhNLFNBQVU7SUFDdEJ5TSxVQUFVLEVBQUUzSCxRQUFTO0lBQ3JCZ0QsUUFBUSxFQUFFQSxRQUFTO0lBQ25CcEUsV0FBVyxFQUFFQSxXQUFZO0lBQ3pCZ0osSUFBSSxFQUFFNUs7RUFBSSxDQUNYLENBQ1csQ0FDRyxDQUNkLENBQUMsZUFFUmxILE1BQUEsWUFBQW9RLGFBQUEsQ0FBQzNLLDBCQUEwQixNQUFFLENBQUMsZUFDOUJ6RixNQUFBLFlBQUFvUSxhQUFBLENBQUM5UCxxQkFBQSxDQUFBaVEsS0FBSztJQUFDSSxTQUFTLEVBQUM7RUFBZSxHQUM3QnZMLFNBQVMsZ0JBQ1JwRixNQUFBLFlBQUFvUSxhQUFBLENBQUMxSyxzQkFBc0IscUJBQ3JCMUYsTUFBQSxZQUFBb1EsYUFBQSxDQUFDM1AsV0FBQSxDQUFBc1IsY0FBYyxNQUFFLENBQ0ssQ0FBQyxHQUN2QnpKLEtBQUssZ0JBQ1B0SSxNQUFBLFlBQUFvUSxhQUFBLENBQUN6SyxvQkFBb0IscUJBQ25CM0YsTUFBQSxZQUFBb1EsYUFBQSxjQUFNOUgsS0FBSyxDQUFDMEosT0FBYSxDQUNMLENBQUMsR0FDckJsSyxNQUFNLGdCQUNSOUgsTUFBQSxZQUFBb1EsYUFBQSxDQUFDbkwsZUFBZSxxQkFDZGpGLE1BQUEsWUFBQW9RLGFBQUEsQ0FBQy9LLG1CQUFtQixxQkFDbEJyRixNQUFBLFlBQUFvUSxhQUFBLENBQUMzUCxXQUFBLENBQUF3UixNQUFNO0lBQUNDLFNBQVM7SUFBQ2QsT0FBTyxFQUFFakU7RUFBaUIsR0FBQyxZQUVyQyxDQUFDLGVBQ1RuTixNQUFBLFlBQUFvUSxhQUFBLGNBQU10SSxNQUFNLENBQUM4RSxLQUFLLENBQUN1RixPQUFPLEVBQUMsT0FBVSxDQUNsQixDQUFDLGVBQ3RCblMsTUFBQSxZQUFBb1EsYUFBQSxDQUFDclAsaUJBQUEsQ0FBQXFSLGdCQUFnQjtJQUNmdEssTUFBTSxFQUFFQSxNQUFPO0lBQ2Z1SyxjQUFjLEVBQUUsQ0FBQyxDQUFFO0lBQ25CbEYsZ0JBQWdCLEVBQUVBO0VBQWlCLENBQ3BDLENBQ2MsQ0FBQyxHQUNoQixJQUNDLENBQ0csQ0FDRyxDQUNaLENBQ0csQ0FDRSxDQUFDO0FBRXJCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=