@kepler.gl/duckdb 3.1.1 → 3.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/duckdb-wasm-adapter.d.ts +25 -0
- package/dist/adapters/duckdb-wasm-adapter.js +259 -0
- package/dist/components/schema-panel.js +18 -14
- package/dist/components/sql-panel.js +52 -49
- package/dist/index.d.ts +4 -2
- package/dist/index.js +33 -2
- package/dist/plugin.js +2 -12
- package/dist/processors/data-processor.js +17 -13
- package/dist/table/duckdb-table-utils.d.ts +4 -4
- package/dist/table/duckdb-table-utils.js +50 -44
- package/dist/table/duckdb-table.d.ts +10 -3
- package/dist/table/duckdb-table.js +67 -70
- package/package.json +6 -6
- package/dist/init.d.ts +0 -19
- package/dist/init.js +0 -160
|
@@ -24,7 +24,6 @@ var _utils = require("@kepler.gl/utils");
|
|
|
24
24
|
var _monacoEditor = _interopRequireDefault(require("./monaco-editor"));
|
|
25
25
|
var _schemaPanel = require("./schema-panel");
|
|
26
26
|
var _previewDataPanel = require("./preview-data-panel");
|
|
27
|
-
var _init = require("../init");
|
|
28
27
|
var _duckdbTableUtils = require("../table/duckdb-table-utils");
|
|
29
28
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12; // SPDX-License-Identifier: MIT
|
|
30
29
|
// Copyright contributors to the kepler.gl project
|
|
@@ -127,13 +126,17 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
127
126
|
setError(new Error('Query is empty'));
|
|
128
127
|
return _context.abrupt("return");
|
|
129
128
|
case 6:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
db = (0, _utils.getApplicationConfig)().database;
|
|
130
|
+
if (db) {
|
|
131
|
+
_context.next = 10;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
setError(new Error('The database is not configured properly.'));
|
|
135
|
+
return _context.abrupt("return");
|
|
136
|
+
case 10:
|
|
137
|
+
_context.next = 12;
|
|
135
138
|
return db.connect();
|
|
136
|
-
case
|
|
139
|
+
case 12:
|
|
137
140
|
connection = _context.sent;
|
|
138
141
|
// TODO find a cheap way to get DuckDb types with a single query to a remote resource - temp table? cte?
|
|
139
142
|
tempTableName = 'temp_keplergl_table'; // remove comments
|
|
@@ -141,70 +144,70 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
141
144
|
arrowResult = null;
|
|
142
145
|
tableDuckDBTypes = {};
|
|
143
146
|
_iterator = _createForOfIteratorHelper(sqlStatements);
|
|
144
|
-
_context.prev =
|
|
147
|
+
_context.prev = 18;
|
|
145
148
|
_iterator.s();
|
|
146
|
-
case
|
|
149
|
+
case 20:
|
|
147
150
|
if ((_step = _iterator.n()).done) {
|
|
148
|
-
_context.next =
|
|
151
|
+
_context.next = 49;
|
|
149
152
|
break;
|
|
150
153
|
}
|
|
151
154
|
statement = _step.value;
|
|
152
155
|
isLastQuery = statement === sqlStatements[sqlStatements.length - 1];
|
|
153
156
|
_context.t0 = isLastQuery;
|
|
154
157
|
if (!_context.t0) {
|
|
155
|
-
_context.next =
|
|
158
|
+
_context.next = 28;
|
|
156
159
|
break;
|
|
157
160
|
}
|
|
158
|
-
_context.next =
|
|
161
|
+
_context.next = 27;
|
|
159
162
|
return (0, _duckdbTableUtils.checkIsSelectQuery)(connection, statement);
|
|
160
|
-
case 26:
|
|
161
|
-
_context.t0 = _context.sent;
|
|
162
163
|
case 27:
|
|
164
|
+
_context.t0 = _context.sent;
|
|
165
|
+
case 28:
|
|
163
166
|
if (!_context.t0) {
|
|
164
|
-
_context.next =
|
|
167
|
+
_context.next = 45;
|
|
165
168
|
break;
|
|
166
169
|
}
|
|
167
|
-
_context.next =
|
|
170
|
+
_context.next = 31;
|
|
168
171
|
return connection.query("CREATE OR REPLACE TABLE '".concat(tempTableName, "' AS ").concat(statement));
|
|
169
|
-
case
|
|
170
|
-
_context.next =
|
|
172
|
+
case 31:
|
|
173
|
+
_context.next = 33;
|
|
171
174
|
return (0, _duckdbTableUtils.getDuckDBColumnTypes)(connection, tempTableName);
|
|
172
|
-
case
|
|
175
|
+
case 33:
|
|
173
176
|
duckDbColumns = _context.sent;
|
|
174
177
|
tableDuckDBTypes = (0, _duckdbTableUtils.getDuckDBColumnTypesMap)(duckDbColumns);
|
|
175
178
|
columnsToConvertToWKB = (0, _duckdbTableUtils.getGeometryColumns)(duckDbColumns); // 3) query GEOMETRY columns as WKB.
|
|
176
179
|
_adjustedQuery = (0, _duckdbTableUtils.constructST_asWKBQuery)(tempTableName, columnsToConvertToWKB);
|
|
177
|
-
_context.next =
|
|
180
|
+
_context.next = 39;
|
|
178
181
|
return connection.query(_adjustedQuery);
|
|
179
|
-
case
|
|
182
|
+
case 39:
|
|
180
183
|
arrowResult = _context.sent;
|
|
181
184
|
// 4) set geoarrow extension for the arrow table as DuckDB doesn't support the geoarrow extension.
|
|
182
185
|
(0, _duckdbTableUtils.setGeoArrowWKBExtension)(arrowResult, duckDbColumns);
|
|
183
186
|
|
|
184
187
|
// 5) remove temp table
|
|
185
|
-
_context.next =
|
|
188
|
+
_context.next = 43;
|
|
186
189
|
return connection.query("DROP TABLE ".concat(tempTableName, ";"));
|
|
187
|
-
case
|
|
188
|
-
_context.next =
|
|
190
|
+
case 43:
|
|
191
|
+
_context.next = 47;
|
|
189
192
|
break;
|
|
190
|
-
case
|
|
191
|
-
_context.next =
|
|
193
|
+
case 45:
|
|
194
|
+
_context.next = 47;
|
|
192
195
|
return connection.query(statement);
|
|
193
|
-
case
|
|
194
|
-
_context.next =
|
|
196
|
+
case 47:
|
|
197
|
+
_context.next = 20;
|
|
195
198
|
break;
|
|
196
|
-
case
|
|
197
|
-
_context.next =
|
|
199
|
+
case 49:
|
|
200
|
+
_context.next = 54;
|
|
198
201
|
break;
|
|
199
|
-
case
|
|
200
|
-
_context.prev =
|
|
201
|
-
_context.t1 = _context["catch"](
|
|
202
|
+
case 51:
|
|
203
|
+
_context.prev = 51;
|
|
204
|
+
_context.t1 = _context["catch"](18);
|
|
202
205
|
_iterator.e(_context.t1);
|
|
203
|
-
case
|
|
204
|
-
_context.prev =
|
|
206
|
+
case 54:
|
|
207
|
+
_context.prev = 54;
|
|
205
208
|
_iterator.f();
|
|
206
|
-
return _context.finish(
|
|
207
|
-
case
|
|
209
|
+
return _context.finish(54);
|
|
210
|
+
case 57:
|
|
208
211
|
// Show preview only for the result of the last query
|
|
209
212
|
if (arrowResult) {
|
|
210
213
|
setResult({
|
|
@@ -213,27 +216,27 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
213
216
|
});
|
|
214
217
|
setError(null);
|
|
215
218
|
}
|
|
216
|
-
_context.next =
|
|
219
|
+
_context.next = 60;
|
|
217
220
|
return connection.close();
|
|
218
|
-
case
|
|
219
|
-
_context.next =
|
|
221
|
+
case 60:
|
|
222
|
+
_context.next = 65;
|
|
220
223
|
break;
|
|
221
|
-
case
|
|
222
|
-
_context.prev =
|
|
224
|
+
case 62:
|
|
225
|
+
_context.prev = 62;
|
|
223
226
|
_context.t2 = _context["catch"](1);
|
|
224
227
|
setError(_context.t2);
|
|
225
|
-
case
|
|
226
|
-
_context.prev =
|
|
228
|
+
case 65:
|
|
229
|
+
_context.prev = 65;
|
|
227
230
|
setIsRunning(false);
|
|
228
|
-
return _context.finish(
|
|
229
|
-
case
|
|
231
|
+
return _context.finish(65);
|
|
232
|
+
case 68:
|
|
230
233
|
// Indicate that there may be a possible change in DuckDB.
|
|
231
234
|
setSchemaUpdateTrigger(Date.now());
|
|
232
|
-
case
|
|
235
|
+
case 69:
|
|
233
236
|
case "end":
|
|
234
237
|
return _context.stop();
|
|
235
238
|
}
|
|
236
|
-
}, _callee, null, [[1,
|
|
239
|
+
}, _callee, null, [[1, 62, 65, 68], [18, 51, 54, 57]]);
|
|
237
240
|
})), [sql]);
|
|
238
241
|
var onChange = (0, _react.useCallback)(function (value) {
|
|
239
242
|
setSql(value);
|
|
@@ -389,4 +392,4 @@ var SqlPanel = exports.SqlPanel = function SqlPanel(_ref) {
|
|
|
389
392
|
onAddResultToMap: onAddResultToMap
|
|
390
393
|
})) : null))))));
|
|
391
394
|
};
|
|
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=
|
|
395
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfcmVhY3RSZWR1eCIsIl9zdHlsZWRDb21wb25lbnRzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdFJlc2l6YWJsZVBhbmVscyIsIl9hY3Rpb25zIiwiX2NvbW1vblV0aWxzIiwiX2NvbXBvbmVudHMiLCJfcHJvY2Vzc29ycyIsIl9zdHlsZXMiLCJfdXRpbHMiLCJfbW9uYWNvRWRpdG9yIiwiX3NjaGVtYVBhbmVsIiwiX3ByZXZpZXdEYXRhUGFuZWwiLCJfZHVja2RiVGFibGVVdGlscyIsIl90ZW1wbGF0ZU9iamVjdCIsIl90ZW1wbGF0ZU9iamVjdDIiLCJfdGVtcGxhdGVPYmplY3QzIiwiX3RlbXBsYXRlT2JqZWN0NCIsIl90ZW1wbGF0ZU9iamVjdDUiLCJfdGVtcGxhdGVPYmplY3Q2IiwiX3RlbXBsYXRlT2JqZWN0NyIsIl90ZW1wbGF0ZU9iamVjdDgiLCJfdGVtcGxhdGVPYmplY3Q5IiwiX3RlbXBsYXRlT2JqZWN0MTAiLCJfdGVtcGxhdGVPYmplY3QxMSIsIl90ZW1wbGF0ZU9iamVjdDEyIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIlN0eWxlZFNxbFBhbmVsIiwic3R5bGVkIiwiZGl2IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJzaWRlUGFuZWxCZyIsIlN0eWxlZFNxbEFjdGlvbnMiLCJTdHlsZWRTcWxFZGl0b3IiLCJTdHlsZWRFZGl0b3JQYW5lbCIsIlN0eWxlZERhdGFQYW5lbCIsIlN0eWxlZEVkaXRvciIsInByb3BzIiwiaXNSdW5uaW5nIiwiU3R5bGVkUmVzdWx0QWN0aW9ucyIsIlN0eWxlZFJlc2l6ZUhhbmRsZSIsIlBhbmVsUmVzaXplSGFuZGxlIiwicGFuZWxCb3JkZXJDb2xvciIsIlN0eWxlZFZlcnRpY2FsUmVzaXplSGFuZGxlIiwiU3R5bGVkTG9hZGluZ0NvbnRhaW5lciIsIlN0eWxlZEVycm9yQ29udGFpbmVyIiwicHJlIiwiU3R5bGVkRmlsZURyb3BBcmVhIiwiRmlsZURyb3AiLCJkcmFnT3ZlciIsInRoZW1lIiwic3VidGV4dENvbG9yTFQiLCJTQ0hFTUFfUEFORUxfU1RZTEUiLCJvdmVyZmxvdyIsIlNxbFBhbmVsIiwiZXhwb3J0cyIsIl9yZWYiLCJfcmVmJGluaXRpYWxTcWwiLCJpbml0aWFsU3FsIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJwYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInNlYXJjaCIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheTIiLCJzcWwiLCJzZXRTcWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3BwZWRGaWxlIiwic2V0RHJvcHBlZEZpbGUiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImRyYWdTdGF0ZSIsInNldERyYWdTdGF0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwicmVzdWx0Iiwic2V0UmVzdWx0IiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTEwIiwic2NoZW1hVXBkYXRlVHJpZ2dlciIsInNldFNjaGVtYVVwZGF0ZVRyaWdnZXIiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJjb3VudGVyIiwic2V0Q291bnRlciIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJ0YWJsZVNjaGVtYSIsInNldFRhYmxlU2NoZW1hIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInNldElzUnVubmluZyIsIl91c2VTdGF0ZTE5IiwiaXNBcHBsZURldmljZSIsIl91c2VTdGF0ZTIwIiwiaXNNYWMiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwiZHJvcHBlZEZpbGVBcmVhUmVmIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiY3VycmVudFVybCIsIlVSTCIsImhyZWYiLCJzZWFyY2hQYXJhbXMiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwicnVuUXVlcnkiLCJ1c2VDYWxsYmFjayIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiYWRqdXN0ZWRRdWVyeSIsImRiIiwiY29ubmVjdGlvbiIsInRlbXBUYWJsZU5hbWUiLCJzcWxTdGF0ZW1lbnRzIiwiYXJyb3dSZXN1bHQiLCJ0YWJsZUR1Y2tEQlR5cGVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJzdGF0ZW1lbnQiLCJpc0xhc3RRdWVyeSIsImR1Y2tEYkNvbHVtbnMiLCJjb2x1bW5zVG9Db252ZXJ0VG9XS0IiLCJfYWRqdXN0ZWRRdWVyeSIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsInJlbW92ZVNRTENvbW1lbnRzIiwiRXJyb3IiLCJhYnJ1cHQiLCJnZXRBcHBsaWNhdGlvbkNvbmZpZyIsImRhdGFiYXNlIiwiY29ubmVjdCIsInNlbnQiLCJzcGxpdFNxbFN0YXRlbWVudHMiLCJ0MCIsImNoZWNrSXNTZWxlY3RRdWVyeSIsInF1ZXJ5IiwiY29uY2F0IiwiZ2V0RHVja0RCQ29sdW1uVHlwZXMiLCJnZXREdWNrREJDb2x1bW5UeXBlc01hcCIsImdldEdlb21ldHJ5Q29sdW1ucyIsImNvbnN0cnVjdFNUX2FzV0tCUXVlcnkiLCJzZXRHZW9BcnJvd1dLQkV4dGVuc2lvbiIsInQxIiwiZmluaXNoIiwidGFibGUiLCJjbG9zZSIsInQyIiwiRGF0ZSIsIm5vdyIsInN0b3AiLCJvbkNoYW5nZSIsIm9uQWRkUmVzdWx0VG9NYXAiLCJrZXBsZXJGaWVsZHMiLCJhcnJvd1NjaGVtYVRvRmllbGRzIiwiZGF0YXNldFRvQWRkIiwiZGF0YSIsImZpZWxkcyIsInJvd3MiLCJpbmZvIiwiaWQiLCJnZW5lcmF0ZUhhc2hJZCIsImxhYmVsIiwiZm9ybWF0IiwiYWRkRGF0YVRvTWFwIiwiZGF0YXNldHMiLCJpc1ZhbGlkRmlsZVR5cGUiLCJmaWxlbmFtZSIsImZpbGVFeHQiLCJTVVBQT1JURURfRFVDS0RCX0RST1BfRVhURU5TSU9OUyIsImZpbmQiLCJleHQiLCJlbmRzV2l0aCIsIkJvb2xlYW4iLCJjcmVhdGVUYWJsZUZyb21Ecm9wcGVkRmlsZSIsIl9yZWYzIiwiX2NhbGxlZTIiLCJfZXJyb3IiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJ0YWJsZUZyb21GaWxlIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZUZpbGVJbnB1dCIsImZpbGVMaXN0IiwiZXZlbnQiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9wYWdhdGlvbiIsImZpbGVzIiwiX3RvQ29uc3VtYWJsZUFycmF5MiIsImZpbHRlciIsImRpc2FibGVFeHRlbnNpb25GaWx0ZXIiLCJmaWxlc1RvTG9hZCIsImVycm9yRmlsZXMiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiZmlsZSIsInB1c2giLCJlcnIiLCJqb2luIiwiY3JlYXRlRWxlbWVudCIsIlBhbmVsR3JvdXAiLCJkaXJlY3Rpb24iLCJQYW5lbCIsImRlZmF1bHRTaXplIiwibWluU2l6ZSIsInN0eWxlIiwiY2xhc3NOYW1lIiwib25EcmFnT3ZlciIsIm9uRHJhZ0xlYXZlIiwiZnJhbWUiLCJjdXJyZW50IiwiZG9jdW1lbnQiLCJvbkRyb3AiLCJTY2hlbWFQYW5lbCIsIkljb25CdXR0b24iLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJJY29ucyIsIlBsYXkiLCJoZWlnaHQiLCJUb29sdGlwIiwicGxhY2UiLCJlZmZlY3QiLCJpc1JlYWRPbmx5Iiwib25SdW5RdWVyeSIsImNvZGUiLCJMb2FkaW5nU3Bpbm5lciIsIm1lc3NhZ2UiLCJCdXR0b24iLCJzZWNvbmRhcnkiLCJudW1Sb3dzIiwiUHJldmlld0RhdGFQYW5lbCIsImRhdGFUYWJsZVN0eWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvc3FsLXBhbmVsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0IFJlYWN0LCB7dXNlQ2FsbGJhY2ssIHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt1c2VEaXNwYXRjaH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge1BhbmVsLCBQYW5lbEdyb3VwLCBQYW5lbFJlc2l6ZUhhbmRsZX0gZnJvbSAncmVhY3QtcmVzaXphYmxlLXBhbmVscyc7XG5cbmltcG9ydCB7YWRkRGF0YVRvTWFwfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtnZW5lcmF0ZUhhc2hJZH0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtCdXR0b24sIEZpbGVEcm9wLCBJY29uQnV0dG9uLCBJY29ucywgTG9hZGluZ1NwaW5uZXIsIFRvb2x0aXB9IGZyb20gJ0BrZXBsZXIuZ2wvY29tcG9uZW50cyc7XG5pbXBvcnQge2Fycm93U2NoZW1hVG9GaWVsZHN9IGZyb20gJ0BrZXBsZXIuZ2wvcHJvY2Vzc29ycyc7XG5pbXBvcnQge3NpZGVQYW5lbEJnLCBwYW5lbEJvcmRlckNvbG9yfSBmcm9tICdAa2VwbGVyLmdsL3N0eWxlcyc7XG5pbXBvcnQge2lzQXBwbGVEZXZpY2UsIGdldEFwcGxpY2F0aW9uQ29uZmlnfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IE1vbmFjb0VkaXRvciBmcm9tICcuL21vbmFjby1lZGl0b3InO1xuaW1wb3J0IHtTY2hlbWFQYW5lbCwgU2NoZW1hU3VnZ2VzdGlvbn0gZnJvbSAnLi9zY2hlbWEtcGFuZWwnO1xuaW1wb3J0IHtQcmV2aWV3RGF0YVBhbmVsLCBRdWVyeVJlc3VsdH0gZnJvbSAnLi9wcmV2aWV3LWRhdGEtcGFuZWwnO1xuXG5pbXBvcnQge1xuICBjb25zdHJ1Y3RTVF9hc1dLQlF1ZXJ5LFxuICBnZXREdWNrREJDb2x1bW5UeXBlcyxcbiAgZ2V0RHVja0RCQ29sdW1uVHlwZXNNYXAsXG4gIGdldEdlb21ldHJ5Q29sdW1ucyxcbiAgc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24sXG4gIHNwbGl0U3FsU3RhdGVtZW50cyxcbiAgY2hlY2tJc1NlbGVjdFF1ZXJ5LFxuICByZW1vdmVTUUxDb21tZW50cyxcbiAgdGFibGVGcm9tRmlsZSxcbiAgU1VQUE9SVEVEX0RVQ0tEQl9EUk9QX0VYVEVOU0lPTlNcbn0gZnJvbSAnLi4vdGFibGUvZHVja2RiLXRhYmxlLXV0aWxzJztcblxuY29uc3QgU3R5bGVkU3FsUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7c2lkZVBhbmVsQmd9O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkICMzMzM7XG5gO1xuXG5jb25zdCBTdHlsZWRTcWxBY3Rpb25zID0gc3R5bGVkLmRpdmBcbiAgZmxleDogMCAwIDUwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmctdG9wOiAxMnB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMzMzO1xuYDtcblxuY29uc3QgU3R5bGVkU3FsRWRpdG9yID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZmxleDogMTtcbiAgbWluLXdpZHRoOiAwOyAvLyBQcmV2ZW50cyBmbGV4IGNoaWxkIGZyb20gb3ZlcmZsb3dpbmdcbiAgaGVpZ2h0OiAxMDAlO1xuYDtcblxuY29uc3QgU3R5bGVkRWRpdG9yUGFuZWwgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3NpZGVQYW5lbEJnfTtcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDAlO1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IDVweDtcbiAgZmxleC1ncm93OiAxO1xuYDtcblxuY29uc3QgU3R5bGVkRGF0YVBhbmVsID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbmA7XG5cbmNvbnN0IFN0eWxlZEVkaXRvciA9IHN0eWxlZC5kaXY8e2lzUnVubmluZzogYm9vbGVhbn0+YFxuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAxMnB4IDEycHggMTJweCAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMzAsIDMwLCAzMCk7XG4gIG9wYWNpdHk6ICR7cHJvcHMgPT4gKHByb3BzLmlzUnVubmluZyA/IDAuNSA6IDEpfTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgbWluLWhlaWdodDogMDsgLy8gUHJldmVudHMgZmxleCBjaGlsZCBmcm9tIG92ZXJmbG93aW5nXG5gO1xuXG5jb25zdCBTdHlsZWRSZXN1bHRBY3Rpb25zID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gIHBhZGRpbmc6IDJweCAxMnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTJweDtcbmA7XG5cbmNvbnN0IFN0eWxlZFJlc2l6ZUhhbmRsZSA9IHN0eWxlZChQYW5lbFJlc2l6ZUhhbmRsZSlgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cGFuZWxCb3JkZXJDb2xvcn07XG4gIHdpZHRoOiA0cHg7XG4gIGN1cnNvcjogY29sLXJlc2l6ZTtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU1O1xuICB9XG5gO1xuXG5jb25zdCBTdHlsZWRWZXJ0aWNhbFJlc2l6ZUhhbmRsZSA9IHN0eWxlZChQYW5lbFJlc2l6ZUhhbmRsZSlgXG4gIGJhY2tncm91bmQtY29sb3I6ICR7cGFuZWxCb3JkZXJDb2xvcn07XG4gIGhlaWdodDogNHB4O1xuICBjdXJzb3I6IHJvdy1yZXNpemU7XG5cbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTtcbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkTG9hZGluZ0NvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMCU7XG5gO1xuXG5jb25zdCBTdHlsZWRFcnJvckNvbnRhaW5lciA9IHN0eWxlZC5wcmVgXG4gIHBhZGRpbmc6IDEycHg7XG4gIGNvbG9yOiByZWQ7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtzaWRlUGFuZWxCZ307XG4gIGhlaWdodDogMTAwJTtcbiAgb3ZlcmZsb3c6IGF1dG87XG5gO1xuXG5pbnRlcmZhY2UgU3R5bGVkRHJhZ1BhbmVsUHJvcHMge1xuICBkcmFnT3Zlcj86IGJvb2xlYW47XG59XG5cbmNvbnN0IFN0eWxlZEZpbGVEcm9wQXJlYSA9IHN0eWxlZChGaWxlRHJvcCk8U3R5bGVkRHJhZ1BhbmVsUHJvcHM+YFxuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci13aWR0aDogMXB4O1xuICBib3JkZXI6IDFweCAke3Byb3BzID0+IChwcm9wcy5kcmFnT3ZlciA/ICdzb2xpZCcgOiAnZGFzaGVkJyl9XG4gICAgJHtwcm9wcyA9PiAocHJvcHMuZHJhZ092ZXIgPyBwcm9wcy50aGVtZS5zdWJ0ZXh0Q29sb3JMVCA6ICd0cmFuc3BhcmVudCcpfTtcbiAgLmZpbGUtZHJvcC10YXJnZXQge1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuYDtcblxudHlwZSBTcWxQYW5lbFByb3BzID0ge1xuICBpbml0aWFsU3FsPzogc3RyaW5nO1xufTtcblxuY29uc3QgU0NIRU1BX1BBTkVMX1NUWUxFID0ge292ZXJmbG93OiAnYXV0byd9O1xuXG5leHBvcnQgY29uc3QgU3FsUGFuZWw6IFJlYWN0LkZDPFNxbFBhbmVsUHJvcHM+ID0gKHtpbml0aWFsU3FsID0gJyd9KSA9PiB7XG4gIGNvbnN0IFtzcWwsIHNldFNxbF0gPSB1c2VTdGF0ZSgoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICByZXR1cm4gcGFyYW1zLmdldCgnc3FsJykgfHwgaW5pdGlhbFNxbDtcbiAgfSk7XG4gIGNvbnN0IFtkcm9wcGVkRmlsZSwgc2V0RHJvcHBlZEZpbGVdID0gdXNlU3RhdGU8RmlsZSB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbZHJhZ1N0YXRlLCBzZXREcmFnU3RhdGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbcmVzdWx0LCBzZXRSZXN1bHRdID0gdXNlU3RhdGU8bnVsbCB8IFF1ZXJ5UmVzdWx0PihudWxsKTtcbiAgY29uc3QgW3NjaGVtYVVwZGF0ZVRyaWdnZXIsIHNldFNjaGVtYVVwZGF0ZVRyaWdnZXJdID0gdXNlU3RhdGU8bnVtYmVyPigwKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxFcnJvciB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbY291bnRlciwgc2V0Q291bnRlcl0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgW3RhYmxlU2NoZW1hLCBzZXRUYWJsZVNjaGVtYV0gPSB1c2VTdGF0ZTxTY2hlbWFTdWdnZXN0aW9uW10+KFtdKTtcbiAgY29uc3QgW2lzUnVubmluZywgc2V0SXNSdW5uaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzTWFjXSA9IHVzZVN0YXRlKCgpID0+IGlzQXBwbGVEZXZpY2UoKSk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICBjb25zdCBkcm9wcGVkRmlsZUFyZWFSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50VXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgaWYgKHNxbCkge1xuICAgICAgY3VycmVudFVybC5zZWFyY2hQYXJhbXMuc2V0KCdzcWwnLCBzcWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50VXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoJ3NxbCcpO1xuICAgIH1cbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCBjdXJyZW50VXJsLnRvU3RyaW5nKCkpO1xuICB9LCBbc3FsXSk7XG5cbiAgY29uc3QgcnVuUXVlcnkgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNSdW5uaW5nKHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhZGp1c3RlZFF1ZXJ5ID0gc3FsID8gcmVtb3ZlU1FMQ29tbWVudHMoc3FsKSA6IG51bGw7XG4gICAgICBpZiAoIWFkanVzdGVkUXVlcnkpIHtcbiAgICAgICAgc2V0RXJyb3IobmV3IEVycm9yKCdRdWVyeSBpcyBlbXB0eScpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkYiA9IGdldEFwcGxpY2F0aW9uQ29uZmlnKCkuZGF0YWJhc2U7XG4gICAgICBpZiAoIWRiKSB7XG4gICAgICAgIHNldEVycm9yKG5ldyBFcnJvcignVGhlIGRhdGFiYXNlIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5LicpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY29ubmVjdGlvbiA9IGF3YWl0IGRiLmNvbm5lY3QoKTtcblxuICAgICAgLy8gVE9ETyBmaW5kIGEgY2hlYXAgd2F5IHRvIGdldCBEdWNrRGIgdHlwZXMgd2l0aCBhIHNpbmdsZSBxdWVyeSB0byBhIHJlbW90ZSByZXNvdXJjZSAtIHRlbXAgdGFibGU/IGN0ZT9cbiAgICAgIGNvbnN0IHRlbXBUYWJsZU5hbWUgPSAndGVtcF9rZXBsZXJnbF90YWJsZSc7XG5cbiAgICAgIC8vIHJlbW92ZSBjb21tZW50c1xuICAgICAgY29uc3Qgc3FsU3RhdGVtZW50cyA9IHNwbGl0U3FsU3RhdGVtZW50cyhhZGp1c3RlZFF1ZXJ5KTtcblxuICAgICAgbGV0IGFycm93UmVzdWx0OiBhcnJvdy5UYWJsZSB8IG51bGwgPSBudWxsO1xuICAgICAgbGV0IHRhYmxlRHVja0RCVHlwZXMgPSB7fTtcblxuICAgICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2Ygc3FsU3RhdGVtZW50cykge1xuICAgICAgICBjb25zdCBpc0xhc3RRdWVyeSA9IHN0YXRlbWVudCA9PT0gc3FsU3RhdGVtZW50c1tzcWxTdGF0ZW1lbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoaXNMYXN0UXVlcnkgJiYgKGF3YWl0IGNoZWNrSXNTZWxlY3RRdWVyeShjb25uZWN0aW9uLCBzdGF0ZW1lbnQpKSkge1xuICAgICAgICAgIC8vIDEpIGNyZWF0ZSB0ZW1wIHRhYmxlIGZyb20gdGhlIG9yaWdpbmFsIHF1ZXJ5LlxuICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkoYENSRUFURSBPUiBSRVBMQUNFIFRBQkxFICcke3RlbXBUYWJsZU5hbWV9JyBBUyAke3N0YXRlbWVudH1gKTtcblxuICAgICAgICAgIC8vIDIpIHF1ZXJ5IGR1Y2tkYiB0eXBlcyBhbmQgZGV0ZWN0IGNhbmRpZGF0ZSBjb2x1bW5zIGZvciBTVF9hc1dLQiB0cmFuc2Zvcm0uXG4gICAgICAgICAgY29uc3QgZHVja0RiQ29sdW1ucyA9IGF3YWl0IGdldER1Y2tEQkNvbHVtblR5cGVzKGNvbm5lY3Rpb24sIHRlbXBUYWJsZU5hbWUpO1xuICAgICAgICAgIHRhYmxlRHVja0RCVHlwZXMgPSBnZXREdWNrREJDb2x1bW5UeXBlc01hcChkdWNrRGJDb2x1bW5zKTtcbiAgICAgICAgICBjb25zdCBjb2x1bW5zVG9Db252ZXJ0VG9XS0IgPSBnZXRHZW9tZXRyeUNvbHVtbnMoZHVja0RiQ29sdW1ucyk7XG5cbiAgICAgICAgICAvLyAzKSBxdWVyeSBHRU9NRVRSWSBjb2x1bW5zIGFzIFdLQi5cbiAgICAgICAgICBjb25zdCBhZGp1c3RlZFF1ZXJ5ID0gY29uc3RydWN0U1RfYXNXS0JRdWVyeSh0ZW1wVGFibGVOYW1lLCBjb2x1bW5zVG9Db252ZXJ0VG9XS0IpO1xuICAgICAgICAgIGFycm93UmVzdWx0ID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShhZGp1c3RlZFF1ZXJ5KTtcblxuICAgICAgICAgIC8vIDQpIHNldCBnZW9hcnJvdyBleHRlbnNpb24gZm9yIHRoZSBhcnJvdyB0YWJsZSBhcyBEdWNrREIgZG9lc24ndCBzdXBwb3J0IHRoZSBnZW9hcnJvdyBleHRlbnNpb24uXG4gICAgICAgICAgc2V0R2VvQXJyb3dXS0JFeHRlbnNpb24oYXJyb3dSZXN1bHQsIGR1Y2tEYkNvbHVtbnMpO1xuXG4gICAgICAgICAgLy8gNSkgcmVtb3ZlIHRlbXAgdGFibGVcbiAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KGBEUk9QIFRBQkxFICR7dGVtcFRhYmxlTmFtZX07YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5xdWVyeShzdGF0ZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFNob3cgcHJldmlldyBvbmx5IGZvciB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IHF1ZXJ5XG4gICAgICBpZiAoYXJyb3dSZXN1bHQpIHtcbiAgICAgICAgc2V0UmVzdWx0KHt0YWJsZTogYXJyb3dSZXN1bHQsIHRhYmxlRHVja0RCVHlwZXN9KTtcbiAgICAgICAgc2V0RXJyb3IobnVsbCk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBzZXRFcnJvcihlIGFzIEVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNSdW5uaW5nKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvLyBJbmRpY2F0ZSB0aGF0IHRoZXJlIG1heSBiZSBhIHBvc3NpYmxlIGNoYW5nZSBpbiBEdWNrREIuXG4gICAgc2V0U2NoZW1hVXBkYXRlVHJpZ2dlcihEYXRlLm5vdygpKTtcbiAgfSwgW3NxbF0pO1xuXG4gIGNvbnN0IG9uQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgdmFsdWUgPT4ge1xuICAgICAgc2V0U3FsKHZhbHVlKTtcbiAgICB9LFxuICAgIFtzZXRTcWxdXG4gICk7XG5cbiAgY29uc3Qgb25BZGRSZXN1bHRUb01hcCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuXG4gICAgY29uc3Qga2VwbGVyRmllbGRzID0gYXJyb3dTY2hlbWFUb0ZpZWxkcyhyZXN1bHQudGFibGUsIHJlc3VsdC50YWJsZUR1Y2tEQlR5cGVzKTtcblxuICAgIGNvbnN0IGRhdGFzZXRUb0FkZCA9IHtcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZmllbGRzOiBrZXBsZXJGaWVsZHMsXG4gICAgICAgIC8vIFRPRE8gdHlwZSBBZGREYXRhVG9NYXBQYXlsb2FkIC0+IHJvd3MgLT4gKyBhcnJvdy5UYWJsZVxuICAgICAgICByb3dzOiByZXN1bHQudGFibGUgYXMgYW55XG4gICAgICB9LFxuICAgICAgaW5mbzoge1xuICAgICAgICBpZDogZ2VuZXJhdGVIYXNoSWQoKSxcbiAgICAgICAgbGFiZWw6IGBxdWVyeV9yZXN1bHQke2NvdW50ZXIgPiAwID8gYF8ke2NvdW50ZXJ9YCA6ICcnfWAsXG4gICAgICAgIGZvcm1hdDogJ2Fycm93J1xuICAgICAgfVxuICAgIH07XG5cbiAgICBkaXNwYXRjaChhZGREYXRhVG9NYXAoe2RhdGFzZXRzOiBbZGF0YXNldFRvQWRkXX0pKTtcbiAgICBzZXRDb3VudGVyKGNvdW50ZXIgKyAxKTtcbiAgfSwgW3Jlc3VsdCwgY291bnRlciwgZGlzcGF0Y2hdKTtcblxuICBjb25zdCBpc1ZhbGlkRmlsZVR5cGUgPSB1c2VDYWxsYmFjayhmaWxlbmFtZSA9PiB7XG4gICAgY29uc3QgZmlsZUV4dCA9IFNVUFBPUlRFRF9EVUNLREJfRFJPUF9FWFRFTlNJT05TLmZpbmQoZXh0ID0+IGZpbGVuYW1lLmVuZHNXaXRoKGV4dCkpO1xuICAgIHJldHVybiBCb29sZWFuKGZpbGVFeHQpO1xuICB9LCBbXSk7XG5cbiAgY29uc3QgY3JlYXRlVGFibGVGcm9tRHJvcHBlZEZpbGUgPSB1c2VDYWxsYmFjayhhc3luYyAoZHJvcHBlZEZpbGU6IEZpbGUgfCBudWxsKSA9PiB7XG4gICAgaWYgKGRyb3BwZWRGaWxlKSB7XG4gICAgICBjb25zdCBlcnJvciA9IGF3YWl0IHRhYmxlRnJvbUZpbGUoZHJvcHBlZEZpbGUpO1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHNldEVycm9yKGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yKG51bGwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHNldERyb3BwZWRGaWxlKG51bGwpO1xuICAgIHNldERyYWdTdGF0ZShmYWxzZSk7XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNyZWF0ZVRhYmxlRnJvbURyb3BwZWRGaWxlKGRyb3BwZWRGaWxlKTtcbiAgfSwgW2Ryb3BwZWRGaWxlLCBjcmVhdGVUYWJsZUZyb21Ecm9wcGVkRmlsZV0pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbGVJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgIChmaWxlTGlzdDogRmlsZUxpc3QsIGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsZXMgPSBbLi4uZmlsZUxpc3RdLmZpbHRlcihCb29sZWFuKTtcblxuICAgICAgY29uc3QgZGlzYWJsZUV4dGVuc2lvbkZpbHRlciA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBmaWxlc1RvTG9hZDogRmlsZVtdID0gW107XG4gICAgICBjb25zdCBlcnJvckZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICAgIGlmIChkaXNhYmxlRXh0ZW5zaW9uRmlsdGVyIHx8IGlzVmFsaWRGaWxlVHlwZShmaWxlLm5hbWUpKSB7XG4gICAgICAgICAgZmlsZXNUb0xvYWQucHVzaChmaWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnJvckZpbGVzLnB1c2goZmlsZS5uYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlsZXNUb0xvYWQubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXREcm9wcGVkRmlsZShmaWxlc1RvTG9hZFswXSk7XG4gICAgICB9IGVsc2UgaWYgKGVycm9yRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRFcnJvcihuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIGZpbGUgZm9ybWF0czogJHtlcnJvckZpbGVzLmpvaW4oJywgJyl9YCkpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2lzVmFsaWRGaWxlVHlwZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRTcWxQYW5lbD5cbiAgICAgIDxQYW5lbEdyb3VwIGRpcmVjdGlvbj1cImhvcml6b250YWxcIj5cbiAgICAgICAgPFBhbmVsIGRlZmF1bHRTaXplPXsyMH0gbWluU2l6ZT17MTV9IHN0eWxlPXtTQ0hFTUFfUEFORUxfU1RZTEV9IGNsYXNzTmFtZT1cInNjaGVtYS1wYW5lbFwiPlxuICAgICAgICAgIDxTdHlsZWRGaWxlRHJvcEFyZWFcbiAgICAgICAgICAgIGRyYWdPdmVyPXtkcmFnU3RhdGV9XG4gICAgICAgICAgICBvbkRyYWdPdmVyPXsoKSA9PiBzZXREcmFnU3RhdGUodHJ1ZSl9XG4gICAgICAgICAgICBvbkRyYWdMZWF2ZT17KCkgPT4gc2V0RHJhZ1N0YXRlKGZhbHNlKX1cbiAgICAgICAgICAgIGZyYW1lPXtkcm9wcGVkRmlsZUFyZWFSZWYuY3VycmVudCB8fCBkb2N1bWVudH1cbiAgICAgICAgICAgIG9uRHJvcD17aGFuZGxlRmlsZUlucHV0fVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmlsZS11cGxvYWRlcl9fZmlsZS1kcm9wXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U2NoZW1hUGFuZWxcbiAgICAgICAgICAgICAgc2V0VGFibGVTY2hlbWE9e3NldFRhYmxlU2NoZW1hfVxuICAgICAgICAgICAgICBkcm9wcGVkRmlsZT17ZHJvcHBlZEZpbGV9XG4gICAgICAgICAgICAgIHNjaGVtYVVwZGF0ZVRyaWdnZXI9e3NjaGVtYVVwZGF0ZVRyaWdnZXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3R5bGVkRmlsZURyb3BBcmVhPlxuICAgICAgICA8L1BhbmVsPlxuXG4gICAgICAgIDxTdHlsZWRSZXNpemVIYW5kbGUgLz5cblxuICAgICAgICA8UGFuZWwgbWluU2l6ZT17NDB9PlxuICAgICAgICAgIDxTdHlsZWRTcWxFZGl0b3I+XG4gICAgICAgICAgICA8UGFuZWxHcm91cCBkaXJlY3Rpb249XCJ2ZXJ0aWNhbFwiPlxuICAgICAgICAgICAgICA8UGFuZWwgZGVmYXVsdFNpemU9ezMwfSBjbGFzc05hbWU9XCJlZGl0b3ItcGFuZWxcIj5cbiAgICAgICAgICAgICAgICA8U3R5bGVkRWRpdG9yUGFuZWw+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkU3FsQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRpcFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtZm9yPVwicnVuLXF1ZXJ5LXRvb2x0aXBcIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3J1blF1ZXJ5fVxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1J1bm5pbmcgfHwgIXNxbH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxJY29ucy5QbGF5IGhlaWdodD1cIjE4cHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIGlkPVwicnVuLXF1ZXJ5LXRvb2x0aXBcIiBwbGFjZT1cInRvcFwiIGVmZmVjdD1cInNvbGlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBSdW4gUXVlcnkgKHtpc01hYyA/ICfijJhFbnRlcicgOiAnQ3RybCtFbnRlcid9IG9yIFNoaWZ0K0VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRTcWxBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEVkaXRvciBpc1J1bm5pbmc9e2lzUnVubmluZ30+XG4gICAgICAgICAgICAgICAgICAgIDxNb25hY29FZGl0b3JcbiAgICAgICAgICAgICAgICAgICAgICBpc1JlYWRPbmx5PXtpc1J1bm5pbmd9XG4gICAgICAgICAgICAgICAgICAgICAgb25SdW5RdWVyeT17cnVuUXVlcnl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgICAgIHRhYmxlU2NoZW1hPXt0YWJsZVNjaGVtYX1cbiAgICAgICAgICAgICAgICAgICAgICBjb2RlPXtzcWx9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZEVkaXRvcj5cbiAgICAgICAgICAgICAgICA8L1N0eWxlZEVkaXRvclBhbmVsPlxuICAgICAgICAgICAgICA8L1BhbmVsPlxuXG4gICAgICAgICAgICAgIDxTdHlsZWRWZXJ0aWNhbFJlc2l6ZUhhbmRsZSAvPlxuICAgICAgICAgICAgICA8UGFuZWwgY2xhc3NOYW1lPVwicHJldmlldy1wYW5lbFwiPlxuICAgICAgICAgICAgICAgIHtpc1J1bm5pbmcgPyAoXG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTG9hZGluZ0NvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZExvYWRpbmdDb250YWluZXI+XG4gICAgICAgICAgICAgICAgKSA6IGVycm9yID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZEVycm9yQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PntlcnJvci5tZXNzYWdlfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRFcnJvckNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICApIDogcmVzdWx0ID8gKFxuICAgICAgICAgICAgICAgICAgPFN0eWxlZERhdGFQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZFJlc3VsdEFjdGlvbnM+XG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvbiBzZWNvbmRhcnkgb25DbGljaz17b25BZGRSZXN1bHRUb01hcH0+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGQgdG8gTWFwXG4gICAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj57cmVzdWx0LnRhYmxlLm51bVJvd3N9IHJvd3M8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRSZXN1bHRBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAgICA8UHJldmlld0RhdGFQYW5lbFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD17cmVzdWx0fVxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFUYWJsZVN0eWxlPXt7fX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkFkZFJlc3VsdFRvTWFwPXtvbkFkZFJlc3VsdFRvTWFwfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWREYXRhUGFuZWw+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDwvUGFuZWw+XG4gICAgICAgICAgICA8L1BhbmVsR3JvdXA+XG4gICAgICAgICAgPC9TdHlsZWRTcWxFZGl0b3I+XG4gICAgICAgIDwvUGFuZWw+XG4gICAgICA8L1BhbmVsR3JvdXA+XG4gICAgPC9TdHlsZWRTcWxQYW5lbD5cbiAgKTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE9BQUEsR0FBQVQsT0FBQTtB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
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export { KeplerGlDuckDbTable } from './table/duckdb-table';
|
|
1
|
+
export { DuckDBWasmAdapter } from './adapters/duckdb-wasm-adapter';
|
|
3
2
|
export { SqlPanel } from './components';
|
|
3
|
+
import { keplerGlDuckDBPlugin } from './plugin';
|
|
4
|
+
export { restoreGeoarrowMetadata, KeplerGlDuckDbTable } from './table/duckdb-table';
|
|
5
|
+
export * from './table/duckdb-table-utils';
|
|
4
6
|
export default keplerGlDuckDBPlugin;
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
DuckDBWasmAdapter: true,
|
|
8
|
+
SqlPanel: true,
|
|
9
|
+
restoreGeoarrowMetadata: true,
|
|
10
|
+
KeplerGlDuckDbTable: true
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "DuckDBWasmAdapter", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _duckdbWasmAdapter.DuckDBWasmAdapter;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
6
18
|
Object.defineProperty(exports, "KeplerGlDuckDbTable", {
|
|
7
19
|
enumerable: true,
|
|
8
20
|
get: function get() {
|
|
@@ -16,10 +28,29 @@ Object.defineProperty(exports, "SqlPanel", {
|
|
|
16
28
|
}
|
|
17
29
|
});
|
|
18
30
|
exports["default"] = void 0;
|
|
31
|
+
Object.defineProperty(exports, "restoreGeoarrowMetadata", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function get() {
|
|
34
|
+
return _duckdbTable.restoreGeoarrowMetadata;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
var _duckdbWasmAdapter = require("./adapters/duckdb-wasm-adapter");
|
|
38
|
+
var _components = require("./components");
|
|
19
39
|
var _plugin = require("./plugin");
|
|
20
40
|
var _duckdbTable = require("./table/duckdb-table");
|
|
21
|
-
var
|
|
41
|
+
var _duckdbTableUtils = require("./table/duckdb-table-utils");
|
|
42
|
+
Object.keys(_duckdbTableUtils).forEach(function (key) {
|
|
43
|
+
if (key === "default" || key === "__esModule") return;
|
|
44
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
45
|
+
if (key in exports && exports[key] === _duckdbTableUtils[key]) return;
|
|
46
|
+
Object.defineProperty(exports, key, {
|
|
47
|
+
enumerable: true,
|
|
48
|
+
get: function get() {
|
|
49
|
+
return _duckdbTableUtils[key];
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
22
53
|
// SPDX-License-Identifier: MIT
|
|
23
54
|
// Copyright contributors to the kepler.gl project
|
|
24
55
|
var _default = exports["default"] = _plugin.keplerGlDuckDBPlugin;
|
|
25
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHVja2RiV2FzbUFkYXB0ZXIiLCJyZXF1aXJlIiwiX2NvbXBvbmVudHMiLCJfcGx1Z2luIiwiX2R1Y2tkYlRhYmxlIiwiX2R1Y2tkYlRhYmxlVXRpbHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImV4cG9ydHMiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJfZGVmYXVsdCIsImtlcGxlckdsRHVja0RCUGx1Z2luIl0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmV4cG9ydCB7RHVja0RCV2FzbUFkYXB0ZXJ9IGZyb20gJy4vYWRhcHRlcnMvZHVja2RiLXdhc20tYWRhcHRlcic7XG5leHBvcnQge1NxbFBhbmVsfSBmcm9tICcuL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtrZXBsZXJHbER1Y2tEQlBsdWdpbn0gZnJvbSAnLi9wbHVnaW4nO1xuZXhwb3J0IHtyZXN0b3JlR2VvYXJyb3dNZXRhZGF0YSwgS2VwbGVyR2xEdWNrRGJUYWJsZX0gZnJvbSAnLi90YWJsZS9kdWNrZGItdGFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS9kdWNrZGItdGFibGUtdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQga2VwbGVyR2xEdWNrREJQbHVnaW47XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBLElBQUFBLGtCQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxXQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxpQkFBQSxHQUFBSixPQUFBO0FBQUFLLE1BQUEsQ0FBQUMsSUFBQSxDQUFBRixpQkFBQSxFQUFBRyxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFLLE9BQUEsSUFBQUEsT0FBQSxDQUFBTCxHQUFBLE1BQUFKLGlCQUFBLENBQUFJLEdBQUE7RUFBQUgsTUFBQSxDQUFBUyxjQUFBLENBQUFELE9BQUEsRUFBQUwsR0FBQTtJQUFBTyxVQUFBO0lBQUFDLEdBQUEsV0FBQUEsSUFBQTtNQUFBLE9BQUFaLGlCQUFBLENBQUFJLEdBQUE7SUFBQTtFQUFBO0FBQUE7QUFQQTtBQUNBO0FBQUEsSUFBQVMsUUFBQSxHQUFBSixPQUFBLGNBT2VLLDRCQUFvQiIsImlnbm9yZUxpc3QiOltdfQ==
|
package/dist/plugin.js
CHANGED
|
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.keplerGlDuckDBPlugin = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
-
var _init = require("./init");
|
|
11
10
|
// SPDX-License-Identifier: MIT
|
|
12
11
|
// Copyright contributors to the kepler.gl project
|
|
13
12
|
|
|
@@ -18,17 +17,8 @@ var keplerGlDuckDBPlugin = exports.keplerGlDuckDBPlugin = {
|
|
|
18
17
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
19
18
|
while (1) switch (_context.prev = _context.next) {
|
|
20
19
|
case 0:
|
|
21
|
-
_context.next = 2;
|
|
22
|
-
return (0, _init.initializeDuckDb)({
|
|
23
|
-
config: {
|
|
24
|
-
query: {
|
|
25
|
-
castBigIntToDouble: true
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
case 2:
|
|
30
20
|
console.log('kepler.gl DuckDB Plugin initialized');
|
|
31
|
-
case
|
|
21
|
+
case 1:
|
|
32
22
|
case "end":
|
|
33
23
|
return _context.stop();
|
|
34
24
|
}
|
|
@@ -36,4 +26,4 @@ var keplerGlDuckDBPlugin = exports.keplerGlDuckDBPlugin = {
|
|
|
36
26
|
}))();
|
|
37
27
|
}
|
|
38
28
|
};
|
|
39
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJrZXBsZXJHbER1Y2tEQlBsdWdpbiIsImV4cG9ydHMiLCJuYW1lIiwiaW5pdCIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImNvbnNvbGUiLCJsb2ciLCJzdG9wIl0sInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQgY29uc3Qga2VwbGVyR2xEdWNrREJQbHVnaW4gPSB7XG4gIG5hbWU6ICdkdWNrZGInLFxuICBhc3luYyBpbml0KCkge1xuICAgIGNvbnNvbGUubG9nKCdrZXBsZXIuZ2wgRHVja0RCIFBsdWdpbiBpbml0aWFsaXplZCcpO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTtBQUNBOztBQUVPLElBQU1BLG9CQUFvQixHQUFBQyxPQUFBLENBQUFELG9CQUFBLEdBQUc7RUFDbENFLElBQUksRUFBRSxRQUFRO0VBQ1JDLElBQUksV0FBSkEsSUFBSUEsQ0FBQSxFQUFHO0lBQUEsV0FBQUMsa0JBQUEsMkJBQUFDLFlBQUEsWUFBQUMsSUFBQSxVQUFBQyxRQUFBO01BQUEsT0FBQUYsWUFBQSxZQUFBRyxJQUFBLFVBQUFDLFNBQUFDLFFBQUE7UUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtVQUFBO1lBQ1hDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHFDQUFxQyxDQUFDO1VBQUM7VUFBQTtZQUFBLE9BQUFKLFFBQUEsQ0FBQUssSUFBQTtRQUFBO01BQUEsR0FBQVIsT0FBQTtJQUFBO0VBQ3JEO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|