@kepler.gl/duckdb 3.3.0-alpha.1 → 3.3.0-alpha.10

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.
Files changed (40) hide show
  1. package/dist/cjs/adapters/duckdb-wasm-adapter.js +258 -0
  2. package/dist/{components → cjs/components}/index.js +1 -1
  3. package/dist/cjs/components/monaco-editor.js +174 -0
  4. package/dist/cjs/components/preview-data-panel.js +127 -0
  5. package/dist/cjs/components/schema-panel.js +170 -0
  6. package/dist/cjs/components/sql-panel.js +395 -0
  7. package/dist/cjs/components/tree.js +90 -0
  8. package/dist/{index.js → cjs/index.js} +1 -1
  9. package/dist/{plugin.js → cjs/plugin.js} +2 -2
  10. package/dist/cjs/processors/data-processor.js +353 -0
  11. package/dist/cjs/table/duckdb-table-utils.js +670 -0
  12. package/dist/cjs/table/duckdb-table.js +482 -0
  13. package/dist/{table → cjs/table}/index.js +1 -1
  14. package/dist/cjs/utils/perf.js +46 -0
  15. package/dist/esm/adapters/duckdb-wasm-adapter.js +251 -0
  16. package/dist/esm/components/index.js +9 -0
  17. package/dist/esm/components/monaco-editor.js +167 -0
  18. package/dist/esm/components/preview-data-panel.js +120 -0
  19. package/dist/esm/components/schema-panel.js +164 -0
  20. package/dist/esm/components/sql-panel.js +388 -0
  21. package/dist/esm/components/tree.js +82 -0
  22. package/dist/esm/index.js +9 -0
  23. package/dist/esm/plugin.js +22 -0
  24. package/dist/esm/processors/data-processor.js +342 -0
  25. package/dist/esm/table/duckdb-table-utils.js +645 -0
  26. package/dist/esm/table/duckdb-table.js +477 -0
  27. package/dist/esm/table/index.js +5 -0
  28. package/dist/esm/utils/perf.js +40 -0
  29. package/dist/table/duckdb-table-utils.d.ts +7 -0
  30. package/package.json +24 -21
  31. package/dist/adapters/duckdb-wasm-adapter.js +0 -259
  32. package/dist/components/monaco-editor.js +0 -175
  33. package/dist/components/preview-data-panel.js +0 -128
  34. package/dist/components/schema-panel.js +0 -171
  35. package/dist/components/sql-panel.js +0 -396
  36. package/dist/components/tree.js +0 -91
  37. package/dist/processors/data-processor.js +0 -353
  38. package/dist/table/duckdb-table-utils.js +0 -669
  39. package/dist/table/duckdb-table.js +0 -480
  40. package/dist/utils/perf.js +0 -46
@@ -0,0 +1,251 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
6
+ // SPDX-License-Identifier: MIT
7
+ // Copyright contributors to the kepler.gl project
8
+
9
+ import * as duckdb from '@duckdb/duckdb-wasm';
10
+ import { AsyncDuckDB } from '@duckdb/duckdb-wasm';
11
+ import { logElapsedTime } from '../utils/perf';
12
+ var Connection = /*#__PURE__*/function () {
13
+ function Connection(connection) {
14
+ _classCallCheck(this, Connection);
15
+ _defineProperty(this, "connection", void 0);
16
+ this.connection = connection;
17
+ }
18
+ return _createClass(Connection, [{
19
+ key: "query",
20
+ value: function () {
21
+ var _query = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(statement) {
22
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
23
+ while (1) switch (_context.prev = _context.next) {
24
+ case 0:
25
+ return _context.abrupt("return", this.connection.query(statement));
26
+ case 1:
27
+ case "end":
28
+ return _context.stop();
29
+ }
30
+ }, _callee, this);
31
+ }));
32
+ function query(_x) {
33
+ return _query.apply(this, arguments);
34
+ }
35
+ return query;
36
+ }()
37
+ }, {
38
+ key: "insertArrowTable",
39
+ value: function () {
40
+ var _insertArrowTable = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(arrowTable, params) {
41
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
42
+ while (1) switch (_context2.prev = _context2.next) {
43
+ case 0:
44
+ _context2.next = 2;
45
+ return this.connection.insertArrowTable(arrowTable, params);
46
+ case 2:
47
+ case "end":
48
+ return _context2.stop();
49
+ }
50
+ }, _callee2, this);
51
+ }));
52
+ function insertArrowTable(_x2, _x3) {
53
+ return _insertArrowTable.apply(this, arguments);
54
+ }
55
+ return insertArrowTable;
56
+ }()
57
+ }, {
58
+ key: "close",
59
+ value: function () {
60
+ var _close = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
61
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
62
+ while (1) switch (_context3.prev = _context3.next) {
63
+ case 0:
64
+ _context3.next = 2;
65
+ return this.connection.close();
66
+ case 2:
67
+ case "end":
68
+ return _context3.stop();
69
+ }
70
+ }, _callee3, this);
71
+ }));
72
+ function close() {
73
+ return _close.apply(this, arguments);
74
+ }
75
+ return close;
76
+ }()
77
+ }]);
78
+ }();
79
+ export var DuckDBWasmAdapter = /*#__PURE__*/function () {
80
+ function DuckDBWasmAdapter(options) {
81
+ _classCallCheck(this, DuckDBWasmAdapter);
82
+ _defineProperty(this, "duckDB", void 0);
83
+ // pass existing AsyncDuckDB object created elsewhere
84
+ if (options instanceof Promise || options instanceof AsyncDuckDB) {
85
+ this.duckDB = options;
86
+ return;
87
+ }
88
+
89
+ // or create a new AsyncDuckDB object
90
+ var _ref = options || {},
91
+ _ref$debug = _ref.debug,
92
+ debug = _ref$debug === void 0 ? false : _ref$debug,
93
+ config = _ref.config;
94
+ this.duckDB = initializeDuckDbWasm(config, debug);
95
+ }
96
+ return _createClass(DuckDBWasmAdapter, [{
97
+ key: "connect",
98
+ value: function () {
99
+ var _connect = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
100
+ var db, c;
101
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
102
+ while (1) switch (_context4.prev = _context4.next) {
103
+ case 0:
104
+ _context4.next = 2;
105
+ return this.duckDB;
106
+ case 2:
107
+ db = _context4.sent;
108
+ _context4.next = 5;
109
+ return db.connect();
110
+ case 5:
111
+ c = _context4.sent;
112
+ return _context4.abrupt("return", new Connection(c));
113
+ case 7:
114
+ case "end":
115
+ return _context4.stop();
116
+ }
117
+ }, _callee4, this);
118
+ }));
119
+ function connect() {
120
+ return _connect.apply(this, arguments);
121
+ }
122
+ return connect;
123
+ }()
124
+ }, {
125
+ key: "registerFileText",
126
+ value: function () {
127
+ var _registerFileText = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(filename, content) {
128
+ var db;
129
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
130
+ while (1) switch (_context5.prev = _context5.next) {
131
+ case 0:
132
+ _context5.next = 2;
133
+ return this.duckDB;
134
+ case 2:
135
+ db = _context5.sent;
136
+ _context5.next = 5;
137
+ return db.registerFileText(filename, content);
138
+ case 5:
139
+ case "end":
140
+ return _context5.stop();
141
+ }
142
+ }, _callee5, this);
143
+ }));
144
+ function registerFileText(_x4, _x5) {
145
+ return _registerFileText.apply(this, arguments);
146
+ }
147
+ return registerFileText;
148
+ }()
149
+ }, {
150
+ key: "registerFileHandle",
151
+ value: function () {
152
+ var _registerFileHandle = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6(name, handle, protocol, directIO) {
153
+ var db;
154
+ return _regeneratorRuntime.wrap(function _callee6$(_context6) {
155
+ while (1) switch (_context6.prev = _context6.next) {
156
+ case 0:
157
+ _context6.next = 2;
158
+ return this.duckDB;
159
+ case 2:
160
+ db = _context6.sent;
161
+ _context6.next = 5;
162
+ return db.registerFileHandle(name, handle, protocol, directIO);
163
+ case 5:
164
+ case "end":
165
+ return _context6.stop();
166
+ }
167
+ }, _callee6, this);
168
+ }));
169
+ function registerFileHandle(_x6, _x7, _x8, _x9) {
170
+ return _registerFileHandle.apply(this, arguments);
171
+ }
172
+ return registerFileHandle;
173
+ }()
174
+ }]);
175
+ }();
176
+
177
+ /**
178
+ * Initialize DuckDB with a browser-specific Wasm bundle.
179
+ */
180
+ var initializeDuckDbWasm = /*#__PURE__*/function () {
181
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee7(config, debug) {
182
+ var start, JSDELIVR_BUNDLES, bundle, worker_url, worker, logger, db, res, buffer, fileNameMatch;
183
+ return _regeneratorRuntime.wrap(function _callee7$(_context7) {
184
+ while (1) switch (_context7.prev = _context7.next) {
185
+ case 0:
186
+ start = performance.now(); // Select a bundle based on browser checks
187
+ JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles();
188
+ _context7.next = 4;
189
+ return duckdb.selectBundle(JSDELIVR_BUNDLES);
190
+ case 4:
191
+ bundle = _context7.sent;
192
+ if (bundle.mainWorker) {
193
+ _context7.next = 7;
194
+ break;
195
+ }
196
+ throw new Error('Failed to initialize DuckDB');
197
+ case 7:
198
+ worker_url = URL.createObjectURL(new Blob(["importScripts(\"".concat(bundle.mainWorker, "\");")], {
199
+ type: 'text/javascript'
200
+ })); // Instantiate the async version of DuckDB-wasm
201
+ worker = new Worker(worker_url);
202
+ logger = debug ? new duckdb.ConsoleLogger() : new duckdb.VoidLogger();
203
+ db = new AsyncDuckDB(logger, worker);
204
+ _context7.next = 13;
205
+ return db.instantiate(bundle.mainModule, bundle.pthreadWorker);
206
+ case 13:
207
+ URL.revokeObjectURL(worker_url);
208
+ if (!config) {
209
+ _context7.next = 28;
210
+ break;
211
+ }
212
+ if (!config.path) {
213
+ _context7.next = 26;
214
+ break;
215
+ }
216
+ _context7.next = 18;
217
+ return fetch(config.path);
218
+ case 18:
219
+ res = _context7.sent;
220
+ _context7.next = 21;
221
+ return res.arrayBuffer();
222
+ case 21:
223
+ buffer = _context7.sent;
224
+ fileNameMatch = config.path.match(/[^/]*$/);
225
+ if (fileNameMatch) {
226
+ config.path = fileNameMatch[0];
227
+ }
228
+ _context7.next = 26;
229
+ return db.registerFileBuffer(config.path, new Uint8Array(buffer));
230
+ case 26:
231
+ _context7.next = 28;
232
+ return db.open(config);
233
+ case 28:
234
+ if (debug) {
235
+ logElapsedTime('DuckDB initialized', start);
236
+ if (config) {
237
+ console.debug("DuckDbConfig: ".concat(JSON.stringify(config, null, 2)));
238
+ }
239
+ }
240
+ return _context7.abrupt("return", db);
241
+ case 30:
242
+ case "end":
243
+ return _context7.stop();
244
+ }
245
+ }, _callee7);
246
+ }));
247
+ return function initializeDuckDbWasm(_x0, _x1) {
248
+ return _ref2.apply(this, arguments);
249
+ };
250
+ }();
251
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkdWNrZGIiLCJBc3luY0R1Y2tEQiIsImxvZ0VsYXBzZWRUaW1lIiwiQ29ubmVjdGlvbiIsImNvbm5lY3Rpb24iLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJ2YWx1ZSIsIl9xdWVyeSIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwic3RhdGVtZW50Iiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImFicnVwdCIsInF1ZXJ5Iiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfaW5zZXJ0QXJyb3dUYWJsZSIsIl9jYWxsZWUyIiwiYXJyb3dUYWJsZSIsInBhcmFtcyIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImluc2VydEFycm93VGFibGUiLCJfeDIiLCJfeDMiLCJfY2xvc2UiLCJfY2FsbGVlMyIsIl9jYWxsZWUzJCIsIl9jb250ZXh0MyIsImNsb3NlIiwiRHVja0RCV2FzbUFkYXB0ZXIiLCJvcHRpb25zIiwiUHJvbWlzZSIsImR1Y2tEQiIsIl9yZWYiLCJfcmVmJGRlYnVnIiwiZGVidWciLCJjb25maWciLCJpbml0aWFsaXplRHVja0RiV2FzbSIsIl9jb25uZWN0IiwiX2NhbGxlZTQiLCJkYiIsImMiLCJfY2FsbGVlNCQiLCJfY29udGV4dDQiLCJzZW50IiwiY29ubmVjdCIsIl9yZWdpc3RlckZpbGVUZXh0IiwiX2NhbGxlZTUiLCJmaWxlbmFtZSIsImNvbnRlbnQiLCJfY2FsbGVlNSQiLCJfY29udGV4dDUiLCJyZWdpc3RlckZpbGVUZXh0IiwiX3g0IiwiX3g1IiwiX3JlZ2lzdGVyRmlsZUhhbmRsZSIsIl9jYWxsZWU2IiwibmFtZSIsImhhbmRsZSIsInByb3RvY29sIiwiZGlyZWN0SU8iLCJfY2FsbGVlNiQiLCJfY29udGV4dDYiLCJyZWdpc3RlckZpbGVIYW5kbGUiLCJfeDYiLCJfeDciLCJfeDgiLCJfeDkiLCJfcmVmMiIsIl9jYWxsZWU3Iiwic3RhcnQiLCJKU0RFTElWUl9CVU5ETEVTIiwiYnVuZGxlIiwid29ya2VyX3VybCIsIndvcmtlciIsImxvZ2dlciIsInJlcyIsImJ1ZmZlciIsImZpbGVOYW1lTWF0Y2giLCJfY2FsbGVlNyQiLCJfY29udGV4dDciLCJwZXJmb3JtYW5jZSIsIm5vdyIsImdldEpzRGVsaXZyQnVuZGxlcyIsInNlbGVjdEJ1bmRsZSIsIm1haW5Xb3JrZXIiLCJFcnJvciIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJjb25jYXQiLCJ0eXBlIiwiV29ya2VyIiwiQ29uc29sZUxvZ2dlciIsIlZvaWRMb2dnZXIiLCJpbnN0YW50aWF0ZSIsIm1haW5Nb2R1bGUiLCJwdGhyZWFkV29ya2VyIiwicmV2b2tlT2JqZWN0VVJMIiwicGF0aCIsImZldGNoIiwiYXJyYXlCdWZmZXIiLCJtYXRjaCIsInJlZ2lzdGVyRmlsZUJ1ZmZlciIsIlVpbnQ4QXJyYXkiLCJvcGVuIiwiY29uc29sZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJfeDAiLCJfeDEiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvZHVja2RiLXdhc20tYWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgKiBhcyBhcnJvdyBmcm9tICdhcGFjaGUtYXJyb3cnO1xuaW1wb3J0ICogYXMgZHVja2RiIGZyb20gJ0BkdWNrZGIvZHVja2RiLXdhc20nO1xuaW1wb3J0IHtBc3luY0R1Y2tEQiwgRHVja0RCQ29uZmlnLCBBc3luY0R1Y2tEQkNvbm5lY3Rpb259IGZyb20gJ0BkdWNrZGIvZHVja2RiLXdhc20nO1xuXG5pbXBvcnQge0RhdGFiYXNlQWRhcHRlciwgRGF0YWJhc2VDb25uZWN0aW9ufSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcblxuaW1wb3J0IHtsb2dFbGFwc2VkVGltZX0gZnJvbSAnLi4vdXRpbHMvcGVyZic7XG5cbmNsYXNzIENvbm5lY3Rpb24gaW1wbGVtZW50cyBEYXRhYmFzZUNvbm5lY3Rpb24ge1xuICBwcml2YXRlIGNvbm5lY3Rpb246IEFzeW5jRHVja0RCQ29ubmVjdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihjb25uZWN0aW9uOiBBc3luY0R1Y2tEQkNvbm5lY3Rpb24pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuICB9XG5cbiAgYXN5bmMgcXVlcnkoc3RhdGVtZW50OiBzdHJpbmcpOiBQcm9taXNlPGFycm93LlRhYmxlPiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5xdWVyeShzdGF0ZW1lbnQpO1xuICB9XG5cbiAgYXN5bmMgaW5zZXJ0QXJyb3dUYWJsZShhcnJvd1RhYmxlOiBhcnJvdy5UYWJsZSwgcGFyYW1zOiB7bmFtZTogc3RyaW5nfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuY29ubmVjdGlvbi5pbnNlcnRBcnJvd1RhYmxlKGFycm93VGFibGUsIHBhcmFtcyk7XG4gIH1cblxuICBhc3luYyBjbG9zZSgpIHtcbiAgICBhd2FpdCB0aGlzLmNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfVxufVxuXG50eXBlIER1Y2tEQldhc21BZGFwdGVyUHJvcHMgPVxuICB8IHtcbiAgICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICAgIGNvbmZpZz86IER1Y2tEQkNvbmZpZztcbiAgICB9XG4gIHwgUHJvbWlzZTxBc3luY0R1Y2tEQj47XG5cbmV4cG9ydCBjbGFzcyBEdWNrREJXYXNtQWRhcHRlciBpbXBsZW1lbnRzIERhdGFiYXNlQWRhcHRlciB7XG4gIHByaXZhdGUgZHVja0RCOiBQcm9taXNlPEFzeW5jRHVja0RCPjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBEdWNrREJXYXNtQWRhcHRlclByb3BzKSB7XG4gICAgLy8gcGFzcyBleGlzdGluZyBBc3luY0R1Y2tEQiBvYmplY3QgY3JlYXRlZCBlbHNld2hlcmVcbiAgICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIFByb21pc2UgfHwgb3B0aW9ucyBpbnN0YW5jZW9mIEFzeW5jRHVja0RCKSB7XG4gICAgICB0aGlzLmR1Y2tEQiA9IG9wdGlvbnMgYXMgYW55O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIG9yIGNyZWF0ZSBhIG5ldyBBc3luY0R1Y2tEQiBvYmplY3RcbiAgICBjb25zdCB7ZGVidWcgPSBmYWxzZSwgY29uZmlnfSA9IG9wdGlvbnMgfHwge307XG4gICAgdGhpcy5kdWNrREIgPSBpbml0aWFsaXplRHVja0RiV2FzbShjb25maWcsIGRlYnVnKTtcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QoKSB7XG4gICAgY29uc3QgZGIgPSBhd2FpdCB0aGlzLmR1Y2tEQjtcbiAgICBjb25zdCBjID0gYXdhaXQgZGIuY29ubmVjdCgpO1xuICAgIHJldHVybiBuZXcgQ29ubmVjdGlvbihjKTtcbiAgfVxuXG4gIGFzeW5jIHJlZ2lzdGVyRmlsZVRleHQoZmlsZW5hbWU6IHN0cmluZywgY29udGVudCkge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5kdWNrREI7XG4gICAgYXdhaXQgZGIucmVnaXN0ZXJGaWxlVGV4dChmaWxlbmFtZSwgY29udGVudCk7XG4gIH1cblxuICBhc3luYyByZWdpc3RlckZpbGVIYW5kbGUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGhhbmRsZTogYW55LFxuICAgIHByb3RvY29sOiBkdWNrZGIuRHVja0RCRGF0YVByb3RvY29sLFxuICAgIGRpcmVjdElPOiBib29sZWFuXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGRiID0gYXdhaXQgdGhpcy5kdWNrREI7XG4gICAgYXdhaXQgZGIucmVnaXN0ZXJGaWxlSGFuZGxlKG5hbWUsIGhhbmRsZSwgcHJvdG9jb2wsIGRpcmVjdElPKTtcbiAgfVxufVxuXG4vKipcbiAqIEluaXRpYWxpemUgRHVja0RCIHdpdGggYSBicm93c2VyLXNwZWNpZmljIFdhc20gYnVuZGxlLlxuICovXG5jb25zdCBpbml0aWFsaXplRHVja0RiV2FzbSA9IGFzeW5jIChcbiAgY29uZmlnPzogRHVja0RCQ29uZmlnLFxuICBkZWJ1Zz86IGJvb2xlYW5cbik6IFByb21pc2U8QXN5bmNEdWNrREI+ID0+IHtcbiAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAvLyBTZWxlY3QgYSBidW5kbGUgYmFzZWQgb24gYnJvd3NlciBjaGVja3NcbiAgY29uc3QgSlNERUxJVlJfQlVORExFUyA9IGR1Y2tkYi5nZXRKc0RlbGl2ckJ1bmRsZXMoKTtcbiAgY29uc3QgYnVuZGxlID0gYXdhaXQgZHVja2RiLnNlbGVjdEJ1bmRsZShKU0RFTElWUl9CVU5ETEVTKTtcbiAgaWYgKCFidW5kbGUubWFpbldvcmtlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGluaXRpYWxpemUgRHVja0RCJyk7XG4gIH1cblxuICBjb25zdCB3b3JrZXJfdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChcbiAgICBuZXcgQmxvYihbYGltcG9ydFNjcmlwdHMoXCIke2J1bmRsZS5tYWluV29ya2VyfVwiKTtgXSwge1xuICAgICAgdHlwZTogJ3RleHQvamF2YXNjcmlwdCdcbiAgICB9KVxuICApO1xuXG4gIC8vIEluc3RhbnRpYXRlIHRoZSBhc3luYyB2ZXJzaW9uIG9mIER1Y2tEQi13YXNtXG4gIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIod29ya2VyX3VybCk7XG4gIGNvbnN0IGxvZ2dlciA9IGRlYnVnID8gbmV3IGR1Y2tkYi5Db25zb2xlTG9nZ2VyKCkgOiBuZXcgZHVja2RiLlZvaWRMb2dnZXIoKTtcbiAgY29uc3QgZGIgPSBuZXcgQXN5bmNEdWNrREIobG9nZ2VyLCB3b3JrZXIpO1xuICBhd2FpdCBkYi5pbnN0YW50aWF0ZShidW5kbGUubWFpbk1vZHVsZSwgYnVuZGxlLnB0aHJlYWRXb3JrZXIpO1xuICBVUkwucmV2b2tlT2JqZWN0VVJMKHdvcmtlcl91cmwpO1xuXG4gIGlmIChjb25maWcpIHtcbiAgICBpZiAoY29uZmlnLnBhdGgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGNvbmZpZy5wYXRoKTtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpO1xuICAgICAgY29uc3QgZmlsZU5hbWVNYXRjaCA9IGNvbmZpZy5wYXRoLm1hdGNoKC9bXi9dKiQvKTtcbiAgICAgIGlmIChmaWxlTmFtZU1hdGNoKSB7XG4gICAgICAgIGNvbmZpZy5wYXRoID0gZmlsZU5hbWVNYXRjaFswXTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZUJ1ZmZlcihjb25maWcucGF0aCwgbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSk7XG4gICAgfVxuICAgIGF3YWl0IGRiLm9wZW4oY29uZmlnKTtcbiAgfVxuXG4gIGlmIChkZWJ1Zykge1xuICAgIGxvZ0VsYXBzZWRUaW1lKCdEdWNrREIgaW5pdGlhbGl6ZWQnLCBzdGFydCk7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgRHVja0RiQ29uZmlnOiAke0pTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMil9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkYjtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTs7QUFHQSxPQUFPLEtBQUtBLE1BQU0sTUFBTSxxQkFBcUI7QUFDN0MsU0FBUUMsV0FBVyxRQUE0QyxxQkFBcUI7QUFJcEYsU0FBUUMsY0FBYyxRQUFPLGVBQWU7QUFBQyxJQUV2Q0MsVUFBVTtFQUdkLFNBQUFBLFdBQVlDLFVBQWlDLEVBQUU7SUFBQUMsZUFBQSxPQUFBRixVQUFBO0lBQUFHLGVBQUE7SUFDN0MsSUFBSSxDQUFDRixVQUFVLEdBQUdBLFVBQVU7RUFDOUI7RUFBQyxPQUFBRyxZQUFBLENBQUFKLFVBQUE7SUFBQUssR0FBQTtJQUFBQyxLQUFBO01BQUEsSUFBQUMsTUFBQSxHQUFB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
@@ -0,0 +1,9 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright contributors to the kepler.gl project
3
+
4
+ export { SqlPanel } from './sql-panel';
5
+ export { SchemaPanel, SchemaPanelDropMessage } from './schema-panel';
6
+ export { PreviewDataPanel } from './preview-data-panel';
7
+ export { Tree, DatasetNode, ColumnNode } from './tree';
8
+ export { default as MonacoEditor } from './monaco-editor';
9
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTcWxQYW5lbCIsIlNjaGVtYVBhbmVsIiwiU2NoZW1hUGFuZWxEcm9wTWVzc2FnZSIsIlByZXZpZXdEYXRhUGFuZWwiLCJUcmVlIiwiRGF0YXNldE5vZGUiLCJDb2x1bW5Ob2RlIiwiZGVmYXVsdCIsIk1vbmFjb0VkaXRvciJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5leHBvcnQge1NxbFBhbmVsfSBmcm9tICcuL3NxbC1wYW5lbCc7XG5leHBvcnQge1NjaGVtYVBhbmVsLCBTY2hlbWFQYW5lbERyb3BNZXNzYWdlfSBmcm9tICcuL3NjaGVtYS1wYW5lbCc7XG5leHBvcnQge1ByZXZpZXdEYXRhUGFuZWx9IGZyb20gJy4vcHJldmlldy1kYXRhLXBhbmVsJztcbmV4cG9ydCB7VHJlZSwgRGF0YXNldE5vZGUsIENvbHVtbk5vZGV9IGZyb20gJy4vdHJlZSc7XG5leHBvcnQge2RlZmF1bHQgYXMgTW9uYWNvRWRpdG9yfSBmcm9tICcuL21vbmFjby1lZGl0b3InO1xuXG5leHBvcnQgdHlwZSB7U2NoZW1hU3VnZ2VzdGlvbn0gZnJvbSAnLi9zY2hlbWEtcGFuZWwnO1xuZXhwb3J0IHR5cGUge1ByZXZpZXdEYXRhUGFuZWxQcm9wcywgUXVlcnlSZXN1bHQsIERhdGFUYWJsZVN0eWxlfSBmcm9tICcuL3ByZXZpZXctZGF0YS1wYW5lbCc7XG5leHBvcnQgdHlwZSB7VHJlZU5vZGVEYXRhLCBUcmVlTm9kZVByb3BzLCBUcmVlUHJvcHN9IGZyb20gJy4vdHJlZSc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7O0FBRUEsU0FBUUEsUUFBUSxRQUFPLGFBQWE7QUFDcEMsU0FBUUMsV0FBVyxFQUFFQyxzQkFBc0IsUUFBTyxnQkFBZ0I7QUFDbEUsU0FBUUMsZ0JBQWdCLFFBQU8sc0JBQXNCO0FBQ3JELFNBQVFDLElBQUksRUFBRUMsV0FBVyxFQUFFQyxVQUFVLFFBQU8sUUFBUTtBQUNwRCxTQUFRQyxPQUFPLElBQUlDLFlBQVksUUFBTyxpQkFBaUIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,167 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ // SPDX-License-Identifier: MIT
6
+ // Copyright contributors to the kepler.gl project
7
+
8
+ import React, { useCallback, useMemo, useRef } from 'react';
9
+ import Editor from '@monaco-editor/react';
10
+ import * as monaco from 'monaco-editor';
11
+ // import {tableSchema as DEFAULT_SCHEMA} from './table-schema';
12
+ import uniq from 'es-toolkit/compat/uniq';
13
+ import uniqBy from 'es-toolkit/compat/uniqBy';
14
+ var MONACO_OPTIONS = {
15
+ minimap: {
16
+ enabled: false
17
+ },
18
+ language: 'sql',
19
+ contextmenu: false,
20
+ renderLineHighlight: 'none',
21
+ scrollBeyondLastLine: false,
22
+ scrollbar: {
23
+ alwaysConsumeMouseWheel: false
24
+ },
25
+ overviewRulerLanes: 0,
26
+ automaticLayout: true,
27
+ acceptSuggestionOnEnter: 'on',
28
+ quickSuggestionsDelay: 400,
29
+ matchOnWordStartOnly: false,
30
+ tabCompletion: 'off',
31
+ lineNumbers: 'off'
32
+ };
33
+ function parseSqlAndFindTableNameAndAliases(sql) {
34
+ var regex = /\b(?:FROM|JOIN)\s+([^\s.]+(?:\.[^\s.]+)?)\s*(?:AS)?\s*([^\s,]+)?/gi;
35
+ var tables = [];
36
+ while (true) {
37
+ var match = regex.exec(sql);
38
+ if (!match) {
39
+ break;
40
+ }
41
+ var table_name = match[1];
42
+ if (!/\(/.test(table_name)) {
43
+ // exclude function calls
44
+ var alias = match[2];
45
+ if (alias && /on|where|inner|left|right|join/.test(alias)) {
46
+ alias = null;
47
+ }
48
+ tables.push({
49
+ table_name: table_name,
50
+ alias: alias || table_name
51
+ });
52
+ }
53
+ }
54
+ return tables;
55
+ }
56
+ var MonacoEditor = function MonacoEditor(_ref) {
57
+ var onRunQuery = _ref.onRunQuery,
58
+ onChange = _ref.onChange,
59
+ code = _ref.code,
60
+ tableSchema = _ref.tableSchema,
61
+ isReadOnly = _ref.isReadOnly;
62
+ // private editor?: monaco.editor.IStandaloneCodeEditor;
63
+ var schemaTableNames = useMemo(function () {
64
+ return tableSchema ? uniq(tableSchema.map(function (d) {
65
+ return d.table_name;
66
+ })) : [];
67
+ }, [tableSchema]);
68
+ var schemaTableNamesSet = useMemo(function () {
69
+ return new Set(schemaTableNames);
70
+ }, [schemaTableNames]);
71
+ var handleRunQueryRef = useRef(onRunQuery);
72
+ handleRunQueryRef.current = onRunQuery;
73
+ var handleEditorDidMount = useCallback(function (editor) {
74
+ // this.editor = editor;
75
+ editor.focus();
76
+ editor.addAction({
77
+ id: 'run-query',
78
+ label: 'Run Query',
79
+ keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter, monaco.KeyMod.Shift | monaco.KeyCode.Enter],
80
+ contextMenuGroupId: 'custom',
81
+ contextMenuOrder: 0,
82
+ run: function run() {
83
+ return handleRunQueryRef.current();
84
+ }
85
+ });
86
+ monaco.languages.registerCompletionItemProvider('*', {
87
+ provideCompletionItems: function provideCompletionItems(model, position, _context, _cancelationToken) {
88
+ var _thisLine$trim$split$, _exec, _exec2;
89
+ var suggestions = [{
90
+ label: 'myCustomSnippet',
91
+ kind: monaco.languages.CompletionItemKind.Snippet,
92
+ insertText: 'This is a piece of custom code',
93
+ insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
94
+ documentation: 'This is a piece of custom code'
95
+ // TODO: range is missing
96
+ }];
97
+ var fullQueryText = model.getValue();
98
+ var tableNamesAndAliases = new Map(parseSqlAndFindTableNameAndAliases(fullQueryText).map(function (_ref2) {
99
+ var table_name = _ref2.table_name,
100
+ alias = _ref2.alias;
101
+ return [alias, table_name];
102
+ }));
103
+ var thisLine = model.getValueInRange({
104
+ startLineNumber: position.lineNumber,
105
+ startColumn: 1,
106
+ endLineNumber: position.lineNumber,
107
+ endColumn: position.column
108
+ });
109
+ var thisToken = ((_thisLine$trim$split$ = thisLine.trim().split(' ').slice(-1)) === null || _thisLine$trim$split$ === void 0 ? void 0 : _thisLine$trim$split$[0]) || '';
110
+ var lastTokenBeforeSpace = (_exec = /\s?(\w+)\s+\w+$/.exec(thisLine.trim())) === null || _exec === void 0 ? void 0 : _exec[1];
111
+ var lastTokenBeforeDot = (_exec2 = /(\w+)\.\w*$/.exec(thisToken)) === null || _exec2 === void 0 ? void 0 : _exec2[1];
112
+
113
+ // console.log(tableNamesAndAliases, thisToken, lastTokenBeforeSpace, lastTokenBeforeDot);
114
+
115
+ if (lastTokenBeforeSpace && /from|join|update|into/.test(lastTokenBeforeSpace)) {
116
+ suggestions.push.apply(suggestions, _toConsumableArray(schemaTableNames.map(function (table_name) {
117
+ return {
118
+ label: table_name,
119
+ kind: monaco.languages.CompletionItemKind.Field,
120
+ insertText: table_name
121
+ // TODO: range is missing
122
+ };
123
+ })));
124
+ }
125
+ if (lastTokenBeforeDot) {
126
+ var table_name = null;
127
+ if (schemaTableNamesSet.has(lastTokenBeforeDot)) {
128
+ table_name = lastTokenBeforeDot;
129
+ } else if (tableNamesAndAliases.get(lastTokenBeforeDot)) {
130
+ table_name = tableNamesAndAliases.get(lastTokenBeforeDot);
131
+ }
132
+ if (table_name && tableSchema) {
133
+ suggestions.push.apply(suggestions, _toConsumableArray(tableSchema.filter(function (d) {
134
+ return d.table_name === table_name;
135
+ }).map(function (_ref3) {
136
+ var column_name = _ref3.column_name;
137
+ return {
138
+ label: column_name,
139
+ kind: monaco.languages.CompletionItemKind.Field,
140
+ insertText: column_name
141
+ // TODO: range is missing
142
+ };
143
+ })));
144
+ }
145
+ }
146
+ return {
147
+ suggestions: uniqBy(suggestions, function (s) {
148
+ return s.insertText;
149
+ })
150
+ };
151
+ }
152
+ });
153
+ }, [tableSchema, schemaTableNames, schemaTableNamesSet]);
154
+ return /*#__PURE__*/React.createElement(Editor, {
155
+ height: "100%",
156
+ theme: "vs-dark",
157
+ defaultLanguage: "sql",
158
+ defaultValue: code,
159
+ onChange: onChange,
160
+ onMount: handleEditorDidMount,
161
+ options: _objectSpread(_objectSpread({}, MONACO_OPTIONS), {}, {
162
+ readOnly: isReadOnly
163
+ })
164
+ });
165
+ };
166
+ export default MonacoEditor;
167
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsInVzZVJlZiIsIkVkaXRvciIsIm1vbmFjbyIsInVuaXEiLCJ1bmlxQnkiLCJNT05BQ09fT1BUSU9OUyIsIm1pbmltYXAiLCJlbmFibGVkIiwibGFuZ3VhZ2UiLCJjb250ZXh0bWVudSIsInJlbmRlckxpbmVIaWdobGlnaHQiLCJzY3JvbGxCZXlvbmRMYXN0TGluZSIsInNjcm9sbGJhciIsImFsd2F5c0NvbnN1bWVNb3VzZVdoZWVsIiwib3ZlcnZpZXdSdWxlckxhbmVzIiwiYXV0b21hdGljTGF5b3V0IiwiYWNjZXB0U3VnZ2VzdGlvbk9uRW50ZXIiLCJxdWlja1N1Z2dlc3Rpb25zRGVsYXkiLCJtYXRjaE9uV29yZFN0YXJ0T25seSIsInRhYkNvbXBsZXRpb24iLCJsaW5lTnVtYmVycyIsInBhcnNlU3FsQW5kRmluZFRhYmxlTmFtZUFuZEFsaWFzZXMiLCJzcWwiLCJyZWdleCIsInRhYmxlcyIsIm1hdGNoIiwiZXhlYyIsInRhYmxlX25hbWUiLCJ0ZXN0IiwiYWxpYXMiLCJwdXNoIiwiTW9uYWNvRWRpdG9yIiwiX3JlZiIsIm9uUnVuUXVlcnkiLCJvbkNoYW5nZSIsImNvZGUiLCJ0YWJsZVNjaGVtYSIsImlzUmVhZE9ubHkiLCJzY2hlbWFUYWJsZU5hbWVzIiwibWFwIiwiZCIsInNjaGVtYVRhYmxlTmFtZXNTZXQiLCJTZXQiLCJoYW5kbGVSdW5RdWVyeVJlZiIsImN1cnJlbnQiLCJoYW5kbGVFZGl0b3JEaWRNb3VudCIsImVkaXRvciIsImZvY3VzIiwiYWRkQWN0aW9uIiwiaWQiLCJsYWJlbCIsImtleWJpbmRpbmdzIiwiS2V5TW9kIiwiQ3RybENtZCIsIktleUNvZGUiLCJFbnRlciIsIlNoaWZ0IiwiY29udGV4dE1lbnVHcm91cElkIiwiY29udGV4dE1lbnVPcmRlciIsInJ1biIsImxhbmd1YWdlcyIsInJlZ2lzdGVyQ29tcGxldGlvbkl0ZW1Qcm92aWRlciIsInByb3ZpZGVDb21wbGV0aW9uSXRlbXMiLCJtb2RlbCIsInBvc2l0aW9uIiwiX2NvbnRleHQiLCJfY2FuY2VsYXRpb25Ub2tlbiIsIl90aGlzTGluZSR0cmltJHNwbGl0JCIsIl9leGVjIiwiX2V4ZWMyIiwic3VnZ2VzdGlvbnMiLCJraW5kIiwiQ29tcGxldGlvbkl0ZW1LaW5kIiwiU25pcHBldCIsImluc2VydFRleHQiLCJpbnNlcnRUZXh0UnVsZXMiLCJDb21wbGV0aW9uSXRlbUluc2VydFRleHRSdWxlIiwiSW5zZXJ0QXNTbmlwcGV0IiwiZG9jdW1lbnRhdGlvbiIsImZ1bGxRdWVyeVRleHQiLCJnZXRWYWx1ZSIsInRhYmxlTmFtZXNBbmRBbGlhc2VzIiwiTWFwIiwiX3JlZjIiLCJ0aGlzTGluZSIsImdldFZhbHVlSW5SYW5nZSIsInN0YXJ0TGluZU51bWJlciIsImxpbmVOdW1iZXIiLCJzdGFydENvbHVtbiIsImVuZExpbmVOdW1iZXIiLCJlbmRDb2x1bW4iLCJjb2x1bW4iLCJ0aGlzVG9rZW4iLCJ0cmltIiwic3BsaXQiLCJzbGljZSIsImxhc3RUb2tlbkJlZm9yZVNwYWNlIiwibGFzdFRva2VuQmVmb3JlRG90IiwiYXBwbHkiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJGaWVsZCIsImhhcyIsImdldCIsImZpbHRlciIsIl9yZWYzIiwiY29sdW1uX25hbWUiLCJzIiwiY3JlYXRlRWxlbWVudCIsImhlaWdodCIsInRoZW1lIiwiZGVmYXVsdExhbmd1YWdlIiwiZGVmYXVsdFZhbHVlIiwib25Nb3VudCIsIm9wdGlvbnMiLCJfb2JqZWN0U3ByZWFkIiwicmVhZE9ubHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb25hY28tZWRpdG9yLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgRWRpdG9yLCB7T25DaGFuZ2UsIE9uTW91bnR9IGZyb20gJ0Btb25hY28tZWRpdG9yL3JlYWN0JztcbmltcG9ydCAqIGFzIG1vbmFjbyBmcm9tICdtb25hY28tZWRpdG9yJztcbi8vIGltcG9ydCB7dGFibGVTY2hlbWEgYXMgREVGQVVMVF9TQ0hFTUF9IGZyb20gJy4vdGFibGUtc2NoZW1hJztcbmltcG9ydCB1bmlxIGZyb20gJ2VzLXRvb2xraXQvY29tcGF0L3VuaXEnO1xuaW1wb3J0IHVuaXFCeSBmcm9tICdlcy10b29sa2l0L2NvbXBhdC91bmlxQnknO1xuXG5jb25zdCBNT05BQ09fT1BUSU9OUzogbW9uYWNvLmVkaXRvci5JU3RhbmRhbG9uZUVkaXRvckNvbnN0cnVjdGlvbk9wdGlvbnMgPSB7XG4gIG1pbmltYXA6IHtlbmFibGVkOiBmYWxzZX0sXG4gIGxhbmd1YWdlOiAnc3FsJyxcbiAgY29udGV4dG1lbnU6IGZhbHNlLFxuICByZW5kZXJMaW5lSGlnaGxpZ2h0OiAnbm9uZScsXG4gIHNjcm9sbEJleW9uZExhc3RMaW5lOiBmYWxzZSxcbiAgc2Nyb2xsYmFyOiB7YWx3YXlzQ29uc3VtZU1vdXNlV2hlZWw6IGZhbHNlfSxcbiAgb3ZlcnZpZXdSdWxlckxhbmVzOiAwLFxuICBhdXRvbWF0aWNMYXlvdXQ6IHRydWUsXG4gIGFjY2VwdFN1Z2dlc3Rpb25PbkVudGVyOiAnb24nLFxuICBxdWlja1N1Z2dlc3Rpb25zRGVsYXk6IDQwMCxcbiAgbWF0Y2hPbldvcmRTdGFydE9ubHk6IGZhbHNlLFxuICB0YWJDb21wbGV0aW9uOiAnb2ZmJyxcbiAgbGluZU51bWJlcnM6ICdvZmYnXG59O1xuXG5mdW5jdGlvbiBwYXJzZVNxbEFuZEZpbmRUYWJsZU5hbWVBbmRBbGlhc2VzKHNxbDogc3RyaW5nKSB7XG4gIGNvbnN0IHJlZ2V4ID0gL1xcYig/OkZST018Sk9JTilcXHMrKFteXFxzLl0rKD86XFwuW15cXHMuXSspPylcXHMqKD86QVMpP1xccyooW15cXHMsXSspPy9naTtcbiAgY29uc3QgdGFibGVzOiB7dGFibGVfbmFtZTogc3RyaW5nOyBhbGlhczogc3RyaW5nfVtdID0gW107XG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMoc3FsKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY29uc3QgdGFibGVfbmFtZSA9IG1hdGNoWzFdO1xuICAgIGlmICghL1xcKC8udGVzdCh0YWJsZV9uYW1lKSkge1xuICAgICAgLy8gZXhjbHVkZSBmdW5jdGlvbiBjYWxsc1xuICAgICAgbGV0IGFsaWFzID0gbWF0Y2hbMl0gYXMgc3RyaW5nIHwgbnVsbDtcbiAgICAgIGlmIChhbGlhcyAmJiAvb258d2hlcmV8aW5uZXJ8bGVmdHxyaWdodHxqb2luLy50ZXN0KGFsaWFzKSkge1xuICAgICAgICBhbGlhcyA9IG51bGw7XG4gICAgICB9XG4gICAgICB0YWJsZXMucHVzaCh7XG4gICAgICAgIHRhYmxlX25hbWUsXG4gICAgICAgIGFsaWFzOiBhbGlhcyB8fCB0YWJsZV9uYW1lXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFibGVzO1xufVxuXG5pbnRlcmZhY2UgTW9uYWNvRWRpdG9yUHJvcHMge1xuICBjb2RlOiBzdHJpbmc7XG4gIGlzUmVhZE9ubHk/OiBib29sZWFuO1xuICBvbkNoYW5nZTogT25DaGFuZ2U7XG4gIG9uUnVuUXVlcnk6ICgpID0+IHZvaWQ7XG4gIHRhYmxlU2NoZW1hPzoge3RhYmxlX25hbWU6IHN0cmluZzsgY29sdW1uX25hbWU6IHN0cmluZ31bXTtcbn1cblxuY29uc3QgTW9uYWNvRWRpdG9yOiBSZWFjdC5GQzxNb25hY29FZGl0b3JQcm9wcz4gPSAoe1xuICBvblJ1blF1ZXJ5LFxuICBvbkNoYW5nZSxcbiAgY29kZSxcbiAgdGFibGVTY2hlbWEsXG4gIGlzUmVhZE9ubHlcbn0pID0+IHtcbiAgLy8gcHJpdmF0ZSBlZGl0b3I/OiBtb25hY28uZWRpdG9yLklTdGFuZGFsb25lQ29kZUVkaXRvcjtcbiAgY29uc3Qgc2NoZW1hVGFibGVOYW1lcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHRhYmxlU2NoZW1hID8gdW5pcSh0YWJsZVNjaGVtYS5tYXAoZCA9PiBkLnRhYmxlX25hbWUpKSA6IFtdKSxcbiAgICBbdGFibGVTY2hlbWFdXG4gICk7XG4gIGNvbnN0IHNjaGVtYVRhYmxlTmFtZXNTZXQgPSB1c2VNZW1vKCgpID0+IG5ldyBTZXQoc2NoZW1hVGFibGVOYW1lcyksIFtzY2hlbWFUYWJsZU5hbWVzXSk7XG4gIGNvbnN0IGhhbmRsZVJ1blF1ZXJ5UmVmID0gdXNlUmVmKG9uUnVuUXVlcnkpO1xuICBoYW5kbGVSdW5RdWVyeVJlZi5jdXJyZW50ID0gb25SdW5RdWVyeTtcblxuICBjb25zdCBoYW5kbGVFZGl0b3JEaWRNb3VudDogT25Nb3VudCA9IHVzZUNhbGxiYWNrKFxuICAgIGVkaXRvciA9PiB7XG4gICAgICAvLyB0aGlzLmVkaXRvciA9IGVkaXRvcjtcbiAgICAgIGVkaXRvci5mb2N1cygpO1xuXG4gICAgICBlZGl0b3IuYWRkQWN0aW9uKHtcbiAgICAgICAgaWQ6ICdydW4tcXVlcnknLFxuICAgICAgICBsYWJlbDogJ1J1biBRdWVyeScsXG4gICAgICAgIGtleWJpbmRpbmdzOiBbXG4gICAgICAgICAgbW9uYWNvLktleU1vZC5DdHJsQ21kIHwgbW9uYWNvLktleUNvZGUuRW50ZXIsXG4gICAgICAgICAgbW9uYWNvLktleU1vZC5TaGlmdCB8IG1vbmFjby5LZXlDb2RlLkVudGVyXG4gICAgICAgIF0sXG4gICAgICAgIGNvbnRleHRNZW51R3JvdXBJZDogJ2N1c3RvbScsXG4gICAgICAgIGNvbnRleHRNZW51T3JkZXI6IDAsXG4gICAgICAgIHJ1bjogKCkgPT4gaGFuZGxlUnVuUXVlcnlSZWYuY3VycmVudCgpXG4gICAgICB9KTtcblxuICAgICAgbW9uYWNvLmxhbmd1YWdlcy5yZWdpc3RlckNvbXBsZXRpb25JdGVtUHJvdmlkZXIoJyonLCB7XG4gICAgICAgIHByb3ZpZGVDb21wbGV0aW9uSXRlbXM6IChtb2RlbCwgcG9zaXRpb24sIF9jb250ZXh0LCBfY2FuY2VsYXRpb25Ub2tlbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zOiBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiAnbXlDdXN0b21TbmlwcGV0JyxcbiAgICAgICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuU25pcHBldCxcbiAgICAgICAgICAgICAgaW5zZXJ0VGV4dDogJ1RoaXMgaXMgYSBwaWVjZSBvZiBjdXN0b20gY29kZScsXG4gICAgICAgICAgICAgIGluc2VydFRleHRSdWxlczogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUluc2VydFRleHRSdWxlLkluc2VydEFzU25pcHBldCxcbiAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbjogJ1RoaXMgaXMgYSBwaWVjZSBvZiBjdXN0b20gY29kZSdcbiAgICAgICAgICAgICAgLy8gVE9ETzogcmFuZ2UgaXMgbWlzc2luZ1xuICAgICAgICAgICAgfSBhcyBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtXG4gICAgICAgICAgXTtcblxuICAgICAgICAgIGNvbnN0IGZ1bGxRdWVyeVRleHQgPSBtb2RlbC5nZXRWYWx1ZSgpO1xuXG4gICAgICAgICAgY29uc3QgdGFibGVOYW1lc0FuZEFsaWFzZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihcbiAgICAgICAgICAgIHBhcnNlU3FsQW5kRmluZFRhYmxlTmFtZUFuZEFsaWFzZXMoZnVsbFF1ZXJ5VGV4dCkubWFwKCh7dGFibGVfbmFtZSwgYWxpYXN9KSA9PiBbXG4gICAgICAgICAgICAgIGFsaWFzLFxuICAgICAgICAgICAgICB0YWJsZV9uYW1lXG4gICAgICAgICAgICBdKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCB0aGlzTGluZSA9IG1vZGVsLmdldFZhbHVlSW5SYW5nZSh7XG4gICAgICAgICAgICBzdGFydExpbmVOdW1iZXI6IHBvc2l0aW9uLmxpbmVOdW1iZXIsXG4gICAgICAgICAgICBzdGFydENvbHVtbjogMSxcbiAgICAgICAgICAgIGVuZExpbmVOdW1iZXI6IHBvc2l0aW9uLmxpbmVOdW1iZXIsXG4gICAgICAgICAgICBlbmRDb2x1bW46IHBvc2l0aW9uLmNvbHVtblxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IHRoaXNUb2tlbiA9IHRoaXNMaW5lLnRyaW0oKS5zcGxpdCgnICcpLnNsaWNlKC0xKT8uWzBdIHx8ICcnO1xuXG4gICAgICAgICAgY29uc3QgbGFzdFRva2VuQmVmb3JlU3BhY2UgPSAvXFxzPyhcXHcrKVxccytcXHcrJC8uZXhlYyh0aGlzTGluZS50cmltKCkpPy5bMV07XG4gICAgICAgICAgY29uc3QgbGFzdFRva2VuQmVmb3JlRG90ID0gLyhcXHcrKVxcLlxcdyokLy5leGVjKHRoaXNUb2tlbik/LlsxXTtcblxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKHRhYmxlTmFtZXNBbmRBbGlhc2VzLCB0aGlzVG9rZW4sIGxhc3RUb2tlbkJlZm9yZVNwYWNlLCBsYXN0VG9rZW5CZWZvcmVEb3QpO1xuXG4gICAgICAgICAgaWYgKGxhc3RUb2tlbkJlZm9yZVNwYWNlICYmIC9mcm9tfGpvaW58dXBkYXRlfGludG8vLnRlc3QobGFzdFRva2VuQmVmb3JlU3BhY2UpKSB7XG4gICAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAuLi5zY2hlbWFUYWJsZU5hbWVzLm1hcChcbiAgICAgICAgICAgICAgICB0YWJsZV9uYW1lID0+XG4gICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGFibGVfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuRmllbGQsXG4gICAgICAgICAgICAgICAgICAgIGluc2VydFRleHQ6IHRhYmxlX25hbWVcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogcmFuZ2UgaXMgbWlzc2luZ1xuICAgICAgICAgICAgICAgICAgfSBhcyBtb25hY28ubGFuZ3VhZ2VzLkNvbXBsZXRpb25JdGVtKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChsYXN0VG9rZW5CZWZvcmVEb3QpIHtcbiAgICAgICAgICAgIGxldCB0YWJsZV9uYW1lID0gbnVsbCBhcyBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgaWYgKHNjaGVtYVRhYmxlTmFtZXNTZXQuaGFzKGxhc3RUb2tlbkJlZm9yZURvdCkpIHtcbiAgICAgICAgICAgICAgdGFibGVfbmFtZSA9IGxhc3RUb2tlbkJlZm9yZURvdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGFibGVOYW1lc0FuZEFsaWFzZXMuZ2V0KGxhc3RUb2tlbkJlZm9yZURvdCkpIHtcbiAgICAgICAgICAgICAgdGFibGVfbmFtZSA9IHRhYmxlTmFtZXNBbmRBbGlhc2VzLmdldChsYXN0VG9rZW5CZWZvcmVEb3QpIGFzIHN0cmluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0YWJsZV9uYW1lICYmIHRhYmxlU2NoZW1hKSB7XG4gICAgICAgICAgICAgIHN1Z2dlc3Rpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgLi4udGFibGVTY2hlbWFcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoZCA9PiBkLnRhYmxlX25hbWUgPT09IHRhYmxlX25hbWUpXG4gICAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAoe2NvbHVtbl9uYW1lfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNvbHVtbl9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAga2luZDogbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbUtpbmQuRmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRUZXh0OiBjb2x1bW5fbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogcmFuZ2UgaXMgbWlzc2luZ1xuICAgICAgICAgICAgICAgICAgICAgIH0gYXMgbW9uYWNvLmxhbmd1YWdlcy5Db21wbGV0aW9uSXRlbSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3VnZ2VzdGlvbnM6IHVuaXFCeShzdWdnZXN0aW9ucywgcyA9PiBzLmluc2VydFRleHQpXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbdGFibGVTY2hlbWEsIHNjaGVtYVRhYmxlTmFtZXMsIHNjaGVtYVRhYmxlTmFtZXNTZXRdXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8RWRpdG9yXG4gICAgICBoZWlnaHQ9XCIxMDAlXCJcbiAgICAgIHRoZW1lPVwidnMtZGFya1wiXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2U9XCJzcWxcIlxuICAgICAgZGVmYXVsdFZhbHVlPXtjb2RlfVxuICAgICAgb25DaGFuZ2U9e29uQ2hhbmdlfVxuICAgICAgb25Nb3VudD17aGFuZGxlRWRpdG9yRGlkTW91bnR9XG4gICAgICBvcHRpb25zPXt7XG4gICAgICAgIC4uLk1PTkFDT19PUFRJT05TLFxuICAgICAgICByZWFkT25seTogaXNSZWFkT25seVxuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9uYWNvRWRpdG9yO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTs7QUFFQSxPQUFPQSxLQUFLLElBQUdDLFdBQVcsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLFFBQU8sT0FBTztBQUN6RCxPQUFPQyxNQUFNLE1BQTJCLHNCQUFzQjtBQUM5RCxPQUFPLEtBQUtDLE1BQU0sTUFBTSxlQUFlO0FBQ3ZDO0FBQ0EsT0FBT0MsSUFBSSxNQUFNLHdCQUF3QjtBQUN6QyxPQUFPQyxNQUFNLE1BQU0sMEJBQTBCO0FBRTdDLElBQU1DLGNBQWtFLEdBQUc7RUFDekVDLE9BQU8sRUFBRTtJQUFDQyxPQUFPLEVBQUU7RUFBSyxDQUFDO0VBQ3pCQyxRQUFRLEVBQUUsS0FBSztFQUNmQyxXQUFXLEVBQUUsS0FBSztFQUNsQkMsbUJBQW1CLEVBQUUsTUFBTTtFQUMzQkMsb0JBQW9CLEVBQUUsS0FBSztFQUMzQkMsU0FBUyxFQUFFO0lBQUNDLHVCQUF1QixFQUFFO0VBQUssQ0FBQztFQUMzQ0Msa0JBQWtCLEVBQUUsQ0FBQztFQUNyQkMsZUFBZSxFQUFFLElBQUk7RUFDckJDLHVCQUF1QixFQUFFLElBQUk7RUFDN0JDLHFCQUFxQixFQUFFLEdBQUc7RUFDMUJDLG9CQUFvQixFQUFFLEtBQUs7RUFDM0JDLGFBQWEsRUFBRSxLQUFLO0VBQ3BCQyxXQUFXLEVBQUU7QUFDZixDQUFDO0FBRUQsU0FBU0Msa0NBQWtDQSxDQUFDQyxHQUFXLEVBQUU7RUFDdkQsSUFBTUMsS0FBSyxHQUFHLG9FQUFvRTtFQUNsRixJQUFNQyxNQUE2QyxHQUFHLEVBQUU7RUFFeEQsT0FBTyxJQUFJLEVBQUU7SUFDWCxJQUFNQyxLQUFLLEdBQUdGLEtBQUssQ0FBQ0csSUFBSSxDQUFDSixHQUFHLENBQUM7SUFDN0IsSUFBSSxDQUFDRyxLQUFLLEVBQUU7TUFDVjtJQUNGO0lBQ0EsSUFBTUUsVUFBVSxHQUFHRixLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksQ0FBQyxJQUFJLENBQUNHLElBQUksQ0FBQ0QsVUFBVSxDQUFDLEVBQUU7TUFDMUI7TUFDQSxJQUFJRSxLQUFLLEdBQUdKLEtBQUssQ0FBQyxDQUFDLENBQWtCO01BQ3JDLElBQUlJLEtBQUssSUFBSSxnQ0FBZ0MsQ0FBQ0QsSUFBSSxDQUFDQyxLQUFLLENBQUMsRUFBRTtRQUN6REEsS0FBSyxHQUFHLElBQUk7TUFDZDtNQUNBTCxNQUFNLENBQUNNLElBQUksQ0FBQztRQUNWSCxVQUFVLEVBQVZBLFVBQVU7UUFDVkUsS0FBSyxFQUFFQSxLQUFLLElBQUlGO01BQ2xCLENBQUMsQ0FBQztJQUNKO0VBQ0Y7RUFFQSxPQUFPSCxNQUFNO0FBQ2Y7QUFVQSxJQUFNTyxZQUF5QyxHQUFHLFNBQTVDQSxZQUF5Q0EsQ0FBQUMsSUFBQSxFQU16QztFQUFBLElBTEpDLFVBQVUsR0FBQUQsSUFBQSxDQUFWQyxVQUFVO0lBQ1ZDLFFBQVEsR0FBQUYsSUFBQSxDQUFSRSxRQUFRO0lBQ1JDLElBQUksR0FBQUgsSUFBQSxDQUFKRyxJQUFJO0lBQ0pDLFdBQVcsR0FBQUosSUFBQSxDQUFYSSxXQUFXO0lBQ1hDLFVBQVUsR0FBQUwsSUFBQSxDQUFWSyxVQUFVO0VBRVY7RUFDQSxJQUFNQyxnQkFBZ0IsR0FBR3ZDLE9BQU8sQ0FDOUI7SUFBQSxPQUFPcUMsV0FBVyxHQUFHakMsSUFBSSxDQUFDaUMsV0FBVyxDQUFDRyxHQUFHLENBQUMsVUFBQUMsQ0FBQztNQUFBLE9BQUlBLENBQUMsQ0FBQ2IsVUFBVTtJQUFBLEVBQUMsQ0FBQyxHQUFHLEVBQUU7RUFBQSxDQUFDLEVBQ25FLENBQUNTLFdBQVcsQ0FDZCxDQUFDO0VBQ0QsSUFBTUssbUJBQW1CLEdBQUcxQyxPQUFPLENBQUM7SUFBQSxPQUFNLElBQUkyQyxHQUFHLENBQUNKLGdCQUFnQixDQUFDO0VBQUEsR0FBRSxDQUFDQSxnQkFBZ0IsQ0FBQyxDQUFDO0VBQ3hGLElBQU1LLGlCQUFpQixHQUFHM0MsTUFBTSxDQUFDaUMsVUFBVSxDQUFDO0VBQzVDVSxpQkFBaUIsQ0FBQ0MsT0FBTyxHQUFHWCxVQUFVO0VBRXRDLElBQU1ZLG9CQUE2QixHQUFHL0MsV0FBVyxDQUMvQyxVQUFBZ0QsTUFBTSxFQUFJO0lBQ1I7SUFDQUEsTUFBTSxDQUFDQyxLQUFLLENBQUMsQ0FBQztJQUVkRCxNQUFNLENBQUNFLFNBQVMsQ0FBQztNQUNmQyxFQUFFLEVBQUUsV0FBVztNQUNmQyxLQUFLLEVBQUUsV0FBVztNQUNsQkMsV0FBVyxFQUFFLENBQ1hqRCxNQUFNLENBQUNrRCxNQUFNLENBQUNDLE9BQU8sR0FBR25ELE1BQU0sQ0FBQ29ELE9BQU8sQ0FBQ0MsS0FBSyxFQUM1Q3JELE1BQU0sQ0FBQ2tELE1BQU0sQ0FBQ0ksS0FBSyxHQUFHdEQsTUFBTSxDQUFDb0QsT0FBTyxDQUFDQyxLQUFLLENBQzNDO01BQ0RFLGtCQUFrQixFQUFFLFFBQVE7TUFDNUJDLGdCQUFnQixFQUFFLENBQUM7TUFDbkJDLEdBQUcsRUFBRSxTQUFMQSxHQUFHQSxDQUFBO1FBQUEsT0FBUWhCLGlCQUFpQixDQUFDQyxPQUFPLENBQUMsQ0FBQztNQUFBO0lBQ3hDLENBQUMsQ0FBQztJQUVGMUMsTUFBTSxDQUFDMEQsU0FBUyxDQUFDQyw4QkFBOEIsQ0FBQyxHQUFHLEVBQUU7TUFDbkRDLHNCQUFzQixFQUFFLFNBQXhCQSxzQkFBc0JBLENBQUdDLEtBQUssRUFBRUMsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLGlCQUFpQixFQUFLO1FBQUEsSUFBQUMscUJBQUEsRUFBQUMsS0FBQSxFQUFBQyxNQUFBO1FBQ3hFLElBQU1DLFdBQThDLEdBQUcsQ0FDckQ7VUFDRXBCLEtBQUssRUFBRSxpQkFBaUI7VUFDeEJxQixJQUFJLEVBQUVyRSxNQUFNLENBQUMwRCxTQUFTLENBQUNZLGtCQUFrQixDQUFDQyxPQUFPO1VBQ2pEQyxVQUFVLEVBQUUsZ0NBQWdDO1VBQzVDQyxlQUFlLEVBQUV6RSxNQUFNLENBQUMwRCxTQUFTLENBQUNnQiw0QkFBNEIsQ0FBQ0MsZUFBZTtVQUM5RUMsYUFBYSxFQUFFO1VBQ2Y7UUFDRixDQUFDLENBQ0Y7UUFFRCxJQUFNQyxhQUFhLEdBQUdoQixLQUFLLENBQUNpQixRQUFRLENBQUMsQ0FBQztRQUV0QyxJQUFNQyxvQkFBb0IsR0FBRyxJQUFJQyxHQUFHLENBQ2xDN0Qsa0NBQWtDLENBQUMwRCxhQUFhLENBQUMsQ0FBQ3hDLEdBQUcsQ0FBQyxVQUFBNEMsS0FBQTtVQUFBLElBQUV4RCxVQUFVLEdBQUF3RCxLQUFBLENBQVZ4RCxVQUFVO1lBQUVFLEtBQUssR0FBQXNELEtBQUEsQ0FBTHRELEtBQUs7VUFBQSxPQUFNLENBQzdFQSxLQUFLLEVBQ0xGLFVBQVUsQ0FDWDtRQUFBLEVBQ0gsQ0FBQztRQUVELElBQU15RCxRQUFRLEdBQUdyQixLQUFLLENBQUNzQixlQUFlLENBQUM7VUFDckNDLGVBQWUsRUFBRXRCLFFBQVEsQ0FBQ3VCLFVBQVU7VUFDcENDLFdBQVcsRUFBRSxDQUFDO1VBQ2RDLGFBQWEsRUFBRXpCLFFBQVEsQ0FBQ3VCLFVBQVU7VUFDbENHLFNBQVMsRUFBRTFCLFFBQVEsQ0FBQzJCO1FBQ3RCLENBQUMsQ0FBQztRQUNGLElBQU1DLFNBQVMsR0FBRyxFQUFBekIscUJBQUEsR0FBQWlCLFFBQVEsQ0FBQ1MsSUFBSSxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBQTVCLHFCQUFBLHVCQUFwQ0EscUJBQUEsQ0FBdUMsQ0FBQyxDQUFDLEtBQUksRUFBRTtRQUVqRSxJQUFNNkIsb0JBQW9CLElBQUE1QixLQUFBLEdBQUcsaUJBQWlCLENBQUMxQyxJQUFJLENBQUMwRCxRQUFRLENBQUNTLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBQXpCLEtBQUEsdUJBQXZDQSxLQUFBLENBQTBDLENBQUMsQ0FBQztRQUN6RSxJQUFNNkIsa0JBQWtCLElBQUE1QixNQUFBLEdBQUcsYUFBYSxDQUFDM0MsSUFBSSxDQUFDa0UsU0FBUyxDQUFDLGNBQUF2QixNQUFBLHVCQUE3QkEsTUFBQSxDQUFnQyxDQUFDLENBQUM7O1FBRTdEOztRQUVBLElBQUkyQixvQkFBb0IsSUFBSSx1QkFBdUIsQ0FBQ3BFLElBQUksQ0FBQ29FLG9CQUFvQixDQUFDLEVBQUU7VUFDOUUxQixXQUFXLENBQUN4QyxJQUFJLENBQUFvRSxLQUFBLENBQWhCNUIsV0FBVyxFQUFBNkIsa0JBQUEsQ0FDTjdELGdCQUFnQixDQUFDQyxHQUFHLENBQ3JCLFVBQUFaLFVBQVU7WUFBQSxPQUNQO2NBQ0N1QixLQUFLLEVBQUV2QixVQUFVO2NBQ2pCNEMsSUFBSSxFQUFFckUsTUFBTSxDQUFDMEQsU0FBUyxDQUFDWSxrQkFBa0IsQ0FBQzRCLEtBQUs7Y0FDL0MxQixVQUFVLEVBQUUvQztjQUNaO1lBQ0YsQ0FBQztVQUFBLENBQ0wsQ0FBQyxDQUNILENBQUM7UUFDSDtRQUVBLElBQUlzRSxrQkFBa0IsRUFBRTtVQUN0QixJQUFJdEUsVUFBVSxHQUFHLElBQXFCO1VBQ3RDLElBQUljLG1CQUFtQixDQUFDNEQsR0FBRyxDQUFDSixrQkFBa0IsQ0FBQyxFQUFFO1lBQy9DdEUsVUFBVSxHQUFHc0Usa0JBQWtCO1VBQ2pDLENBQUMsTUFBTSxJQUFJaEIsb0JBQW9CLENBQUNxQixHQUFHLENBQUNMLGtCQUFrQixDQUFDLEVBQUU7WUFDdkR0RSxVQUFVLEdBQUdzRCxvQkFBb0IsQ0FBQ3FCLEdBQUcsQ0FBQ0wsa0JBQWtCLENBQVc7VUFDckU7VUFDQSxJQUFJdEUsVUFBVSxJQUFJUyxXQUFXLEVBQUU7WUFDN0JrQyxXQUFXLENBQUN4QyxJQUFJLENBQUFvRSxLQUFBLENBQWhCNUIsV0FBVyxFQUFBNkIsa0JBQUEsQ0FDTi9ELFdBQVcsQ0FDWG1FLE1BQU0sQ0FBQyxVQUFBL0QsQ0FBQztjQUFBLE9BQUlBLENBQUMsQ0FBQ2IsVUFBVSxLQUFLQSxVQUFVO1lBQUEsRUFBQyxDQUN4Q1ksR0FBRyxDQUNGLFVBQUFpRSxLQUFBO2NBQUEsSUFBRUMsV0FBVyxHQUFBRCxLQUFBLENBQVhDLFdBQVc7Y0FBQSxPQUNWO2dCQUNDdkQsS0FBSyxFQUFFdUQsV0FBVztnQkFDbEJsQyxJQUFJLEVBQUVyRSxNQUFNLENBQUMwRCxTQUFTLENBQUNZLGtCQUFrQixDQUFDNEIsS0FBSztnQkFDL0MxQixVQUFVLEVBQUUrQjtnQkFDWjtjQUNGLENBQUM7WUFBQSxDQUNMLENBQUMsQ0FDTCxDQUFDO1VBQ0g7UUFDRjtRQUVBLE9BQU87VUFDTG5DLFdBQVcsRUFBRWxFLE1BQU0sQ0FBQ2tFLFdBQVcsRUFBRSxVQUFBb0MsQ0FBQztZQUFBLE9BQUlBLENBQUMsQ0FBQ2hDLFVBQVU7VUFBQTtRQUNwRCxDQUFDO01BQ0g7SUFDRixDQUFDLENBQUM7RUFDSixDQUFDLEVBQ0QsQ0FBQ3RDLFdBQVcsRUFBRUUsZ0JBQWdCLEVBQUVHLG1CQUFtQixDQUNyRCxDQUFDO0VBRUQsb0JBQ0U1QyxLQUFBLENBQUE4RyxhQUFBLENBQUMxRyxNQUFNO0lBQ0wyRyxNQUFNLEVBQUMsTUFBTTtJQUNiQyxLQUFLLEVBQUMsU0FBUztJQUNmQyxlQUFlLEVBQUMsS0FBSztJQUNyQkMsWUFBWSxFQUFFNUUsSUFBSztJQUNuQkQsUUFBUSxFQUFFQSxRQUFTO0lBQ25COEUsT0FBTyxFQUFFbkUsb0JBQXFCO0lBQzlCb0UsT0FBTyxFQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FDRjdHLGNBQWM7TUFDakI4RyxRQUFRLEVBQUU5RTtJQUFVO0VBQ3BCLENBQ0gsQ0FBQztBQUVOLENBQUM7QUFFRCxlQUFlTixZQUFZIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,120 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
+ // SPDX-License-Identifier: MIT
7
+ // Copyright contributors to the kepler.gl project
8
+
9
+ import React, { useCallback, useMemo, useState } from 'react';
10
+ import { withTheme } from 'styled-components';
11
+ import { DataTable, renderedSize } from '@kepler.gl/components';
12
+ import { arrowSchemaToFields } from '@kepler.gl/processors';
13
+ import { parseFieldValue, createDataContainer, DataForm } from '@kepler.gl/utils';
14
+ var DEFAULT_ROWS_TO_CALCULATE_PREVIEW = 100;
15
+ // min Cellsize should take into account option button and field token
16
+ var minCellSize = 80;
17
+ // option buttons and field token
18
+ var optionButtonWidth = 20;
19
+ var pinButton = 20;
20
+ var cellPadding = 20;
21
+ var PreviewDataPanelWOTheme = function PreviewDataPanelWOTheme(_ref) {
22
+ var result = _ref.result,
23
+ _ref$rowsToCalculateP = _ref.rowsToCalculatePreview,
24
+ rowsToCalculatePreview = _ref$rowsToCalculateP === void 0 ? DEFAULT_ROWS_TO_CALCULATE_PREVIEW : _ref$rowsToCalculateP,
25
+ _ref$defaultPinnedCol = _ref.defaultPinnedColumns,
26
+ defaultPinnedColumns = _ref$defaultPinnedCol === void 0 ? [] : _ref$defaultPinnedCol,
27
+ theme = _ref.theme;
28
+ var _useState = useState(defaultPinnedColumns),
29
+ _useState2 = _slicedToArray(_useState, 2),
30
+ pinnedColumns = _useState2[0],
31
+ setPinnedColumns = _useState2[1];
32
+ var fields = useMemo(function () {
33
+ return arrowSchemaToFields(result.table, result.tableDuckDBTypes);
34
+ }, [result]);
35
+ var dataContainer = useMemo(function () {
36
+ var cols = _toConsumableArray(Array(result.table.numCols).keys()).map(function (i) {
37
+ return result.table.getChildAt(i);
38
+ });
39
+ var dataContainer = createDataContainer(cols, {
40
+ fields: fields,
41
+ inputDataFormat: DataForm.COLS_ARRAY
42
+ });
43
+ return dataContainer;
44
+ }, [result, fields]);
45
+ var columns = useMemo(function () {
46
+ return fields.map(function (f) {
47
+ return f.name;
48
+ });
49
+ }, [fields]);
50
+ var colMeta = useMemo(function () {
51
+ return fields.reduce(function (acc, _ref2, colIdx) {
52
+ var name = _ref2.name,
53
+ displayName = _ref2.displayName,
54
+ type = _ref2.type,
55
+ displayFormat = _ref2.displayFormat;
56
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, name, {
57
+ // because '' || 'aaa' = 'aaa'
58
+ name: displayName !== undefined ? displayName : name,
59
+ displayName: displayName,
60
+ displayFormat: displayFormat,
61
+ type: type,
62
+ colIdx: colIdx
63
+ }));
64
+ }, {});
65
+ }, [fields]);
66
+ var copyTableColumn = useCallback(function (column) {
67
+ var _navigator;
68
+ var _colMeta$column = colMeta[column],
69
+ colIdx = _colMeta$column.colIdx,
70
+ type = _colMeta$column.type;
71
+ var text = dataContainer.mapIndex(function (row) {
72
+ return parseFieldValue(dataContainer.valueAt(row.index, colIdx), type);
73
+ }).join('\n');
74
+ (_navigator = navigator) === null || _navigator === void 0 || _navigator.clipboard.writeText(text);
75
+ }, [colMeta, dataContainer]);
76
+ var pinTableColumn = useCallback(function (column) {
77
+ return pinnedColumns.includes(column) ? setPinnedColumns(pinnedColumns.filter(function (c) {
78
+ return c !== column;
79
+ })) : setPinnedColumns([].concat(_toConsumableArray(pinnedColumns), [column]));
80
+ }, [pinnedColumns]);
81
+
82
+ // TODO Potentially costly operation for non row based data containers. Revisit sorting below.
83
+ var dataTableStyle = useMemo(function () {
84
+ return {
85
+ minCellSize: minCellSize,
86
+ cellPadding: cellPadding,
87
+ optionsButton: theme.fieldTokenWidth + theme.fieldTokenRightMargin + optionButtonWidth + pinButton,
88
+ fontSize: theme.cellFontSize,
89
+ font: theme.fontFamily
90
+ };
91
+ }, [theme]);
92
+ var cellSizeCache = useMemo(function () {
93
+ return columns.reduce(function (acc, column) {
94
+ var _colMeta$column2 = colMeta[column],
95
+ colIdx = _colMeta$column2.colIdx,
96
+ displayName = _colMeta$column2.displayName,
97
+ type = _colMeta$column2.type;
98
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, column, renderedSize(_objectSpread({
99
+ text: {
100
+ dataContainer: dataContainer,
101
+ column: displayName
102
+ },
103
+ colIdx: colIdx,
104
+ type: type,
105
+ numRowsToCalculate: rowsToCalculatePreview
106
+ }, dataTableStyle))));
107
+ }, {});
108
+ }, [columns, colMeta, dataContainer, rowsToCalculatePreview, dataTableStyle]);
109
+ return /*#__PURE__*/React.createElement(DataTable, {
110
+ colMeta: colMeta,
111
+ columns: columns,
112
+ cellSizeCache: cellSizeCache,
113
+ dataContainer: dataContainer,
114
+ pinnedColumns: pinnedColumns,
115
+ copyTableColumn: copyTableColumn,
116
+ pinTableColumn: pinTableColumn
117
+ });
118
+ };
119
+ export var PreviewDataPanel = withTheme(PreviewDataPanelWOTheme);
120
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlTWVtbyIsInVzZVN0YXRlIiwid2l0aFRoZW1lIiwiRGF0YVRhYmxlIiwicmVuZGVyZWRTaXplIiwiYXJyb3dTY2hlbWFUb0ZpZWxkcyIsInBhcnNlRmllbGRWYWx1ZSIsImNyZWF0ZURhdGFDb250YWluZXIiLCJEYXRhRm9ybSIsIkRFRkFVTFRfUk9XU19UT19DQUxDVUxBVEVfUFJFVklFVyIsIm1pbkNlbGxTaXplIiwib3B0aW9uQnV0dG9uV2lkdGgiLCJwaW5CdXR0b24iLCJjZWxsUGFkZGluZyIsIlByZXZpZXdEYXRhUGFuZWxXT1RoZW1lIiwiX3JlZiIsInJlc3VsdCIsIl9yZWYkcm93c1RvQ2FsY3VsYXRlUCIsInJvd3NUb0NhbGN1bGF0ZVByZXZpZXciLCJfcmVmJGRlZmF1bHRQaW5uZWRDb2wiLCJkZWZhdWx0UGlubmVkQ29sdW1ucyIsInRoZW1lIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwicGlubmVkQ29sdW1ucyIsInNldFBpbm5lZENvbHVtbnMiLCJmaWVsZHMiLCJ0YWJsZSIsInRhYmxlRHVja0RCVHlwZXMiLCJkYXRhQ29udGFpbmVyIiwiY29scyIsIl90b0NvbnN1bWFibGVBcnJheSIsIkFycmF5IiwibnVtQ29scyIsImtleXMiLCJtYXAiLCJpIiwiZ2V0Q2hpbGRBdCIsImlucHV0RGF0YUZvcm1hdCIsIkNPTFNfQVJSQVkiLCJjb2x1bW5zIiwiZiIsIm5hbWUiLCJjb2xNZXRhIiwicmVkdWNlIiwiYWNjIiwiX3JlZjIiLCJjb2xJZHgiLCJkaXNwbGF5TmFtZSIsInR5cGUiLCJkaXNwbGF5Rm9ybWF0IiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsInVuZGVmaW5lZCIsImNvcHlUYWJsZUNvbHVtbiIsImNvbHVtbiIsIl9uYXZpZ2F0b3IiLCJfY29sTWV0YSRjb2x1bW4iLCJ0ZXh0IiwibWFwSW5kZXgiLCJyb3ciLCJ2YWx1ZUF0IiwiaW5kZXgiLCJqb2luIiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0IiwicGluVGFibGVDb2x1bW4iLCJpbmNsdWRlcyIsImZpbHRlciIsImMiLCJjb25jYXQiLCJkYXRhVGFibGVTdHlsZSIsIm9wdGlvbnNCdXR0b24iLCJmaWVsZFRva2VuV2lkdGgiLCJmaWVsZFRva2VuUmlnaHRNYXJnaW4iLCJmb250U2l6ZSIsImNlbGxGb250U2l6ZSIsImZvbnQiLCJmb250RmFtaWx5IiwiY2VsbFNpemVDYWNoZSIsIl9jb2xNZXRhJGNvbHVtbjIiLCJudW1Sb3dzVG9DYWxjdWxhdGUiLCJjcmVhdGVFbGVtZW50IiwiUHJldmlld0RhdGFQYW5lbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ByZXZpZXctZGF0YS1wYW5lbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0ICogYXMgYXJyb3cgZnJvbSAnYXBhY2hlLWFycm93JztcbmltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VNZW1vLCB1c2VTdGF0ZSwgQ1NTUHJvcGVydGllc30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt3aXRoVGhlbWV9IGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IHtEYXRhVGFibGUsIHJlbmRlcmVkU2l6ZX0gZnJvbSAnQGtlcGxlci5nbC9jb21wb25lbnRzJztcbmltcG9ydCB7YXJyb3dTY2hlbWFUb0ZpZWxkc30gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7cGFyc2VGaWVsZFZhbHVlLCBjcmVhdGVEYXRhQ29udGFpbmVyLCBEYXRhRm9ybX0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5cbnR5cGUgQmFzZUNvbXBvbmVudFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIHN0eWxlPzogQ1NTUHJvcGVydGllcztcbn07XG5cbmNvbnN0IERFRkFVTFRfUk9XU19UT19DQUxDVUxBVEVfUFJFVklFVyA9IDEwMDtcbi8vIG1pbiBDZWxsc2l6ZSBzaG91bGQgdGFrZSBpbnRvIGFjY291bnQgb3B0aW9uIGJ1dHRvbiBhbmQgZmllbGQgdG9rZW5cbmNvbnN0IG1pbkNlbGxTaXplID0gODA7XG4vLyBvcHRpb24gYnV0dG9ucyBhbmQgZmllbGQgdG9rZW5cbmNvbnN0IG9wdGlvbkJ1dHRvbldpZHRoID0gMjA7XG5jb25zdCBwaW5CdXR0b24gPSAyMDtcbmNvbnN0IGNlbGxQYWRkaW5nID0gMjA7XG5cbmV4cG9ydCB0eXBlIENvbE1ldGEgPSB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICBjb2xJZHg6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEYXRhVGFibGVTdHlsZSA9IHtcbiAgbWluQ2VsbFNpemU/OiBudW1iZXI7XG4gIGNlbGxQYWRkaW5nPzogbnVtYmVyO1xuICBmb250U2l6ZT86IG51bWJlcjtcbiAgZm9udD86IHN0cmluZztcbiAgb3B0aW9uc0J1dHRvbj86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5UmVzdWx0ID0ge1xuICB0YWJsZTogYXJyb3cuVGFibGU7XG4gIHRhYmxlRHVja0RCVHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG5leHBvcnQgdHlwZSBQcmV2aWV3RGF0YVBhbmVsUHJvcHMgPSBCYXNlQ29tcG9uZW50UHJvcHMgJiB7XG4gIHJlc3VsdDogUXVlcnlSZXN1bHQ7XG4gIHJvd3NUb0NhbGN1bGF0ZVByZXZpZXc/OiBudW1iZXI7XG4gIHRoZW1lPzogYW55O1xuICBzZXRDb2x1bW5EaXNwbGF5Rm9ybWF0PzogKGZvcm1hdHM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9KSA9PiB2b2lkO1xuICBkZWZhdWx0UGlubmVkQ29sdW1ucz86IHN0cmluZ1tdO1xuICBkYXRhVGFibGVTdHlsZTogRGF0YVRhYmxlU3R5bGU7XG4gIG9uQWRkUmVzdWx0VG9NYXA6IChyZXN1bHQ6IFF1ZXJ5UmVzdWx0KSA9PiB2b2lkO1xufTtcblxuY29uc3QgUHJldmlld0RhdGFQYW5lbFdPVGhlbWU6IFJlYWN0LkZDPFByZXZpZXdEYXRhUGFuZWxQcm9wcz4gPSAoe1xuICByZXN1bHQsXG4gIHJvd3NUb0NhbGN1bGF0ZVByZXZpZXcgPSBERUZBVUxUX1JPV1NfVE9fQ0FMQ1VMQVRFX1BSRVZJRVcsXG4gIGRlZmF1bHRQaW5uZWRDb2x1bW5zID0gW10sXG4gIHRoZW1lXG59KSA9PiB7XG4gIGNvbnN0IFtwaW5uZWRDb2x1bW5zLCBzZXRQaW5uZWRDb2x1bW5zXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihkZWZhdWx0UGlubmVkQ29sdW1ucyk7XG4gIGNvbnN0IGZpZWxkcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gYXJyb3dTY2hlbWFUb0ZpZWxkcyhyZXN1bHQudGFibGUsIHJlc3VsdC50YWJsZUR1Y2tEQlR5cGVzKSxcbiAgICBbcmVzdWx0XVxuICApO1xuICBjb25zdCBkYXRhQ29udGFpbmVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY29scyA9IFsuLi5BcnJheShyZXN1bHQudGFibGUubnVtQ29scykua2V5cygpXS5tYXAoaSA9PiByZXN1bHQudGFibGUuZ2V0Q2hpbGRBdChpKSk7XG5cbiAgICBjb25zdCBkYXRhQ29udGFpbmVyID0gY3JlYXRlRGF0YUNvbnRhaW5lcihjb2xzLCB7XG4gICAgICBmaWVsZHMsXG4gICAgICBpbnB1dERhdGFGb3JtYXQ6IERhdGFGb3JtLkNPTFNfQVJSQVlcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YUNvbnRhaW5lcjtcbiAgfSwgW3Jlc3VsdCwgZmllbGRzXSk7XG5cbiAgY29uc3QgY29sdW1ucyA9IHVzZU1lbW8oKCkgPT4gZmllbGRzLm1hcChmID0+IGYubmFtZSksIFtmaWVsZHNdKTtcbiAgY29uc3QgY29sTWV0YSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGZpZWxkcy5yZWR1Y2UoXG4gICAgICAgIChhY2MsIHtuYW1lLCBkaXNwbGF5TmFtZSwgdHlwZSwgZGlzcGxheUZvcm1hdH0sIGNvbElkeCkgPT4gKHtcbiAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgW25hbWVdOiB7XG4gICAgICAgICAgICAvLyBiZWNhdXNlICcnIHx8ICdhYWEnID0gJ2FhYSdcbiAgICAgICAgICAgIG5hbWU6IGRpc3BsYXlOYW1lICE9PSB1bmRlZmluZWQgPyBkaXNwbGF5TmFtZSA6IG5hbWUsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZSxcbiAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQsXG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgY29sSWR4XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICAgICksXG4gICAgW2ZpZWxkc11cbiAgKTtcbiAgY29uc3QgY29weVRhYmxlQ29sdW1uID0gdXNlQ2FsbGJhY2soXG4gICAgY29sdW1uID0+IHtcbiAgICAgIGNvbnN0IHtjb2xJZHgsIHR5cGV9ID0gY29sTWV0YVtjb2x1bW5dO1xuICAgICAgY29uc3QgdGV4dCA9IGRhdGFDb250YWluZXJcbiAgICAgICAgLm1hcEluZGV4KHJvdyA9PiBwYXJzZUZpZWxkVmFsdWUoZGF0YUNvbnRhaW5lci52YWx1ZUF0KHJvdy5pbmRleCwgY29sSWR4KSwgdHlwZSkpXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICAgIG5hdmlnYXRvcj8uY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgICB9LFxuICAgIFtjb2xNZXRhLCBkYXRhQ29udGFpbmVyXVxuICApO1xuICBjb25zdCBwaW5UYWJsZUNvbHVtbiA9IHVzZUNhbGxiYWNrKFxuICAgIGNvbHVtbiA9PlxuICAgICAgcGlubmVkQ29sdW1ucy5pbmNsdWRlcyhjb2x1bW4pXG4gICAgICAgID8gc2V0UGlubmVkQ29sdW1ucyhwaW5uZWRDb2x1bW5zLmZpbHRlcihjID0+IGMgIT09IGNvbHVtbikpXG4gICAgICAgIDogc2V0UGlubmVkQ29sdW1ucyhbLi4ucGlubmVkQ29sdW1ucywgY29sdW1uXSksXG4gICAgW3Bpbm5lZENvbHVtbnNdXG4gICk7XG5cbiAgLy8gVE9ETyBQb3RlbnRpYWxseSBjb3N0bHkgb3BlcmF0aW9uIGZvciBub24gcm93IGJhc2VkIGRhdGEgY29udGFpbmVycy4gUmV2aXNpdCBzb3J0aW5nIGJlbG93LlxuICBjb25zdCBkYXRhVGFibGVTdHlsZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIG1pbkNlbGxTaXplLFxuICAgICAgY2VsbFBhZGRpbmcsXG4gICAgICBvcHRpb25zQnV0dG9uOlxuICAgICAgICB0aGVtZS5maWVsZFRva2VuV2lkdGggKyB0aGVtZS5maWVsZFRva2VuUmlnaHRNYXJnaW4gKyBvcHRpb25CdXR0b25XaWR0aCArIHBpbkJ1dHRvbixcbiAgICAgIGZvbnRTaXplOiB0aGVtZS5jZWxsRm9udFNpemUsXG4gICAgICBmb250OiB0aGVtZS5mb250RmFtaWx5XG4gICAgfSksXG4gICAgW3RoZW1lXVxuICApO1xuICBjb25zdCBjZWxsU2l6ZUNhY2hlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGNvbHVtbnMucmVkdWNlKChhY2MsIGNvbHVtbikgPT4ge1xuICAgICAgY29uc3Qge2NvbElkeCwgZGlzcGxheU5hbWUsIHR5cGV9ID0gY29sTWV0YVtjb2x1bW5dO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICBbY29sdW1uXTogcmVuZGVyZWRTaXplKHtcbiAgICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICBkYXRhQ29udGFpbmVyLFxuICAgICAgICAgICAgY29sdW1uOiBkaXNwbGF5TmFtZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29sSWR4LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgbnVtUm93c1RvQ2FsY3VsYXRlOiByb3dzVG9DYWxjdWxhdGVQcmV2aWV3LFxuICAgICAgICAgIC4uLmRhdGFUYWJsZVN0eWxlXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIH0sIHt9KTtcbiAgfSwgW2NvbHVtbnMsIGNvbE1ldGEsIGRhdGFDb250YWluZXIsIHJvd3NUb0NhbGN1bGF0ZVByZXZpZXcsIGRhdGFUYWJsZVN0eWxlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGF0YVRhYmxlXG4gICAgICBjb2xNZXRhPXtjb2xNZXRhfVxuICAgICAgY29sdW1ucz17Y29sdW1uc31cbiAgICAgIGNlbGxTaXplQ2FjaGU9e2NlbGxTaXplQ2FjaGV9XG4gICAgICBkYXRhQ29udGFpbmVyPXtkYXRhQ29udGFpbmVyfVxuICAgICAgcGlubmVkQ29sdW1ucz17cGlubmVkQ29sdW1uc31cbiAgICAgIGNvcHlUYWJsZUNvbHVtbj17Y29weVRhYmxlQ29sdW1ufVxuICAgICAgcGluVGFibGVDb2x1bW49e3BpblRhYmxlQ29sdW1ufVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgUHJldmlld0RhdGFQYW5lbCA9IHdpdGhUaGVtZShcbiAgUHJldmlld0RhdGFQYW5lbFdPVGhlbWVcbikgYXMgUmVhY3QuRkM8UHJldmlld0RhdGFQYW5lbFByb3BzPjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBOztBQUdBLE9BQU9BLEtBQUssSUFBR0MsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsUUFBc0IsT0FBTztBQUMxRSxTQUFRQyxTQUFTLFFBQU8sbUJBQW1CO0FBRTNDLFNBQVFDLFNBQVMsRUFBRUMsWUFBWSxRQUFPLHVCQUF1QjtBQUM3RCxTQUFRQyxtQkFBbUIsUUFBTyx1QkFBdUI7QUFDekQsU0FBUUMsZUFBZSxFQUFFQyxtQkFBbUIsRUFBRUMsUUFBUSxRQUFPLGtCQUFrQjtBQU8vRSxJQUFNQyxpQ0FBaUMsR0FBRyxHQUFHO0FBQzdDO0FBQ0EsSUFBTUMsV0FBVyxHQUFHLEVBQUU7QUFDdEI7QUFD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