@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
package/dist/init.js
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.getDuckDB = exports.DEBUG = void 0;
|
|
9
|
-
exports.initializeDuckDb = initializeDuckDb;
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
-
var _duckdbWasm = _interopRequireWildcard(require("@duckdb/duckdb-wasm"));
|
|
13
|
-
var duckdb = _duckdbWasm;
|
|
14
|
-
var _perf = require("./utils/perf");
|
|
15
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
16
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
17
|
-
// SPDX-License-Identifier: MIT
|
|
18
|
-
// Copyright contributors to the kepler.gl project
|
|
19
|
-
|
|
20
|
-
// git@github.com:holdenmatt/duckdb-wasm-kit.git
|
|
21
|
-
|
|
22
|
-
var DEBUG;
|
|
23
|
-
var DuckDB;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Initialize DuckDB, ensuring we only initialize it once.
|
|
27
|
-
*
|
|
28
|
-
* @param debug If true, log DuckDB logs and elapsed times to the console.
|
|
29
|
-
* @param config An optional DuckDBConfig object.
|
|
30
|
-
*/
|
|
31
|
-
function initializeDuckDb(_x) {
|
|
32
|
-
return _initializeDuckDb2.apply(this, arguments);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Initialize DuckDB with a browser-specific Wasm bundle.
|
|
36
|
-
*/
|
|
37
|
-
function _initializeDuckDb2() {
|
|
38
|
-
_initializeDuckDb2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(options) {
|
|
39
|
-
var _ref3, _ref3$debug, debug, config;
|
|
40
|
-
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
41
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
42
|
-
case 0:
|
|
43
|
-
_ref3 = options || {}, _ref3$debug = _ref3.debug, debug = _ref3$debug === void 0 ? false : _ref3$debug, config = _ref3.config;
|
|
44
|
-
exports.DEBUG = DEBUG = debug;
|
|
45
|
-
if (DuckDB === undefined) {
|
|
46
|
-
DuckDB = _initializeDuckDb(config);
|
|
47
|
-
}
|
|
48
|
-
return _context3.abrupt("return", DuckDB);
|
|
49
|
-
case 4:
|
|
50
|
-
case "end":
|
|
51
|
-
return _context3.stop();
|
|
52
|
-
}
|
|
53
|
-
}, _callee3);
|
|
54
|
-
}));
|
|
55
|
-
return _initializeDuckDb2.apply(this, arguments);
|
|
56
|
-
}
|
|
57
|
-
var _initializeDuckDb = /*#__PURE__*/function () {
|
|
58
|
-
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(config) {
|
|
59
|
-
var start, JSDELIVR_BUNDLES, bundle, worker_url, worker, logger, db, res, buffer, fileNameMatch;
|
|
60
|
-
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
61
|
-
while (1) switch (_context.prev = _context.next) {
|
|
62
|
-
case 0:
|
|
63
|
-
start = performance.now(); // Select a bundle based on browser checks
|
|
64
|
-
JSDELIVR_BUNDLES = duckdb.getJsDelivrBundles();
|
|
65
|
-
_context.next = 4;
|
|
66
|
-
return duckdb.selectBundle(JSDELIVR_BUNDLES);
|
|
67
|
-
case 4:
|
|
68
|
-
bundle = _context.sent;
|
|
69
|
-
if (bundle.mainWorker) {
|
|
70
|
-
_context.next = 7;
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
throw new Error('Failed to initialize DuckDB');
|
|
74
|
-
case 7:
|
|
75
|
-
worker_url = URL.createObjectURL(new Blob(["importScripts(\"".concat(bundle.mainWorker, "\");")], {
|
|
76
|
-
type: 'text/javascript'
|
|
77
|
-
})); // Instantiate the async version of DuckDB-wasm
|
|
78
|
-
worker = new Worker(worker_url);
|
|
79
|
-
logger = DEBUG ? new duckdb.ConsoleLogger() : new duckdb.VoidLogger();
|
|
80
|
-
db = new _duckdbWasm.AsyncDuckDB(logger, worker);
|
|
81
|
-
_context.next = 13;
|
|
82
|
-
return db.instantiate(bundle.mainModule, bundle.pthreadWorker);
|
|
83
|
-
case 13:
|
|
84
|
-
URL.revokeObjectURL(worker_url);
|
|
85
|
-
if (!config) {
|
|
86
|
-
_context.next = 28;
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
if (!config.path) {
|
|
90
|
-
_context.next = 26;
|
|
91
|
-
break;
|
|
92
|
-
}
|
|
93
|
-
_context.next = 18;
|
|
94
|
-
return fetch(config.path);
|
|
95
|
-
case 18:
|
|
96
|
-
res = _context.sent;
|
|
97
|
-
_context.next = 21;
|
|
98
|
-
return res.arrayBuffer();
|
|
99
|
-
case 21:
|
|
100
|
-
buffer = _context.sent;
|
|
101
|
-
fileNameMatch = config.path.match(/[^/]*$/);
|
|
102
|
-
if (fileNameMatch) {
|
|
103
|
-
config.path = fileNameMatch[0];
|
|
104
|
-
}
|
|
105
|
-
_context.next = 26;
|
|
106
|
-
return db.registerFileBuffer(config.path, new Uint8Array(buffer));
|
|
107
|
-
case 26:
|
|
108
|
-
_context.next = 28;
|
|
109
|
-
return db.open(config);
|
|
110
|
-
case 28:
|
|
111
|
-
if (DEBUG) {
|
|
112
|
-
(0, _perf.logElapsedTime)('DuckDB initialized', start);
|
|
113
|
-
if (config) {
|
|
114
|
-
console.debug("DuckDbConfig: ".concat(JSON.stringify(config, null, 2)));
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return _context.abrupt("return", db);
|
|
118
|
-
case 30:
|
|
119
|
-
case "end":
|
|
120
|
-
return _context.stop();
|
|
121
|
-
}
|
|
122
|
-
}, _callee);
|
|
123
|
-
}));
|
|
124
|
-
return function _initializeDuckDb(_x2) {
|
|
125
|
-
return _ref.apply(this, arguments);
|
|
126
|
-
};
|
|
127
|
-
}();
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Get the instance of DuckDB, initializing it if needed.
|
|
131
|
-
*
|
|
132
|
-
* Typically `useDuckDB` is used in React components instead, but this
|
|
133
|
-
* method provides access outside of React contexts.
|
|
134
|
-
*/
|
|
135
|
-
var getDuckDB = exports.getDuckDB = /*#__PURE__*/function () {
|
|
136
|
-
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
137
|
-
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
138
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
139
|
-
case 0:
|
|
140
|
-
if (!DuckDB) {
|
|
141
|
-
_context2.next = 4;
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
return _context2.abrupt("return", DuckDB);
|
|
145
|
-
case 4:
|
|
146
|
-
_context2.next = 6;
|
|
147
|
-
return initializeDuckDb();
|
|
148
|
-
case 6:
|
|
149
|
-
return _context2.abrupt("return", _context2.sent);
|
|
150
|
-
case 7:
|
|
151
|
-
case "end":
|
|
152
|
-
return _context2.stop();
|
|
153
|
-
}
|
|
154
|
-
}, _callee2);
|
|
155
|
-
}));
|
|
156
|
-
return function getDuckDB() {
|
|
157
|
-
return _ref2.apply(this, arguments);
|
|
158
|
-
};
|
|
159
|
-
}();
|
|
160
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZHVja2RiV2FzbSIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsImR1Y2tkYiIsIl9wZXJmIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiREVCVUciLCJEdWNrREIiLCJpbml0aWFsaXplRHVja0RiIiwiX3giLCJfaW5pdGlhbGl6ZUR1Y2tEYjIiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9hc3luY1RvR2VuZXJhdG9yMiIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlMyIsIm9wdGlvbnMiLCJfcmVmMyIsIl9yZWYzJGRlYnVnIiwiZGVidWciLCJjb25maWciLCJ3cmFwIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwicHJldiIsIm5leHQiLCJleHBvcnRzIiwidW5kZWZpbmVkIiwiX2luaXRpYWxpemVEdWNrRGIiLCJhYnJ1cHQiLCJzdG9wIiwiX3JlZiIsIl9jYWxsZWUiLCJzdGFydCIsIkpTREVMSVZSX0JVTkRMRVMiLCJidW5kbGUiLCJ3b3JrZXJfdXJsIiwid29ya2VyIiwibG9nZ2VyIiwiZGIiLCJyZXMiLCJidWZmZXIiLCJmaWxlTmFtZU1hdGNoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsInBlcmZvcm1hbmNlIiwibm93IiwiZ2V0SnNEZWxpdnJCdW5kbGVzIiwic2VsZWN0QnVuZGxlIiwic2VudCIsIm1haW5Xb3JrZXIiLCJFcnJvciIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsIkJsb2IiLCJjb25jYXQiLCJ0eXBlIiwiV29ya2VyIiwiQ29uc29sZUxvZ2dlciIsIlZvaWRMb2dnZXIiLCJBc3luY0R1Y2tEQiIsImluc3RhbnRpYXRlIiwibWFpbk1vZHVsZSIsInB0aHJlYWRXb3JrZXIiLCJyZXZva2VPYmplY3RVUkwiLCJwYXRoIiwiZmV0Y2giLCJhcnJheUJ1ZmZlciIsIm1hdGNoIiwicmVnaXN0ZXJGaWxlQnVmZmVyIiwiVWludDhBcnJheSIsIm9wZW4iLCJsb2dFbGFwc2VkVGltZSIsImNvbnNvbGUiLCJKU09OIiwic3RyaW5naWZ5IiwiX3gyIiwiZ2V0RHVja0RCIiwiX3JlZjIiLCJfY2FsbGVlMiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiJdLCJzb3VyY2VzIjpbIi4uL3NyYy9pbml0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbi8vIGdpdEBnaXRodWIuY29tOmhvbGRlbm1hdHQvZHVja2RiLXdhc20ta2l0LmdpdFxuaW1wb3J0ICogYXMgZHVja2RiIGZyb20gJ0BkdWNrZGIvZHVja2RiLXdhc20nO1xuaW1wb3J0IHtBc3luY0R1Y2tEQiwgRHVja0RCQ29uZmlnfSBmcm9tICdAZHVja2RiL2R1Y2tkYi13YXNtJztcbmltcG9ydCB7bG9nRWxhcHNlZFRpbWV9IGZyb20gJy4vdXRpbHMvcGVyZic7XG5cbmV4cG9ydCBsZXQgREVCVUc6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbmxldCBEdWNrREI6IFByb21pc2U8QXN5bmNEdWNrREI+IHwgdW5kZWZpbmVkO1xuXG4vKipcbiAqIEluaXRpYWxpemUgRHVja0RCLCBlbnN1cmluZyB3ZSBvbmx5IGluaXRpYWxpemUgaXQgb25jZS5cbiAqXG4gKiBAcGFyYW0gZGVidWcgSWYgdHJ1ZSwgbG9nIER1Y2tEQiBsb2dzIGFuZCBlbGFwc2VkIHRpbWVzIHRvIHRoZSBjb25zb2xlLlxuICogQHBhcmFtIGNvbmZpZyBBbiBvcHRpb25hbCBEdWNrREJDb25maWcgb2JqZWN0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaW5pdGlhbGl6ZUR1Y2tEYihvcHRpb25zPzoge1xuICBkZWJ1Zz86IGJvb2xlYW47XG4gIGNvbmZpZz86IER1Y2tEQkNvbmZpZztcbn0pOiBQcm9taXNlPEFzeW5jRHVja0RCPiB7XG4gIGNvbnN0IHtkZWJ1ZyA9IGZhbHNlLCBjb25maWd9ID0gb3B0aW9ucyB8fCB7fTtcbiAgREVCVUcgPSBkZWJ1ZztcblxuICBpZiAoRHVja0RCID09PSB1bmRlZmluZWQpIHtcbiAgICBEdWNrREIgPSBfaW5pdGlhbGl6ZUR1Y2tEYihjb25maWcpO1xuICB9XG4gIHJldHVybiBEdWNrREI7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZSBEdWNrREIgd2l0aCBhIGJyb3dzZXItc3BlY2lmaWMgV2FzbSBidW5kbGUuXG4gKi9cbmNvbnN0IF9pbml0aWFsaXplRHVja0RiID0gYXN5bmMgKGNvbmZpZz86IER1Y2tEQkNvbmZpZyk6IFByb21pc2U8QXN5bmNEdWNrREI+ID0+IHtcbiAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxuICAvLyBTZWxlY3QgYSBidW5kbGUgYmFzZWQgb24gYnJvd3NlciBjaGVja3NcbiAgY29uc3QgSlNERUxJVlJfQlVORExFUyA9IGR1Y2tkYi5nZXRKc0RlbGl2ckJ1bmRsZXMoKTtcbiAgY29uc3QgYnVuZGxlID0gYXdhaXQgZHVja2RiLnNlbGVjdEJ1bmRsZShKU0RFTElWUl9CVU5ETEVTKTtcbiAgaWYgKCFidW5kbGUubWFpbldvcmtlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGluaXRpYWxpemUgRHVja0RCJyk7XG4gIH1cblxuICBjb25zdCB3b3JrZXJfdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChcbiAgICBuZXcgQmxvYihbYGltcG9ydFNjcmlwdHMoXCIke2J1bmRsZS5tYWluV29ya2VyfVwiKTtgXSwge1xuICAgICAgdHlwZTogJ3RleHQvamF2YXNjcmlwdCdcbiAgICB9KVxuICApO1xuXG4gIC8vIEluc3RhbnRpYXRlIHRoZSBhc3luYyB2ZXJzaW9uIG9mIER1Y2tEQi13YXNtXG4gIGNvbnN0IHdvcmtlciA9IG5ldyBXb3JrZXIod29ya2VyX3VybCk7XG4gIGNvbnN0IGxvZ2dlciA9IERFQlVHID8gbmV3IGR1Y2tkYi5Db25zb2xlTG9nZ2VyKCkgOiBuZXcgZHVja2RiLlZvaWRMb2dnZXIoKTtcbiAgY29uc3QgZGIgPSBuZXcgQXN5bmNEdWNrREIobG9nZ2VyLCB3b3JrZXIpO1xuICBhd2FpdCBkYi5pbnN0YW50aWF0ZShidW5kbGUubWFpbk1vZHVsZSwgYnVuZGxlLnB0aHJlYWRXb3JrZXIpO1xuICBVUkwucmV2b2tlT2JqZWN0VVJMKHdvcmtlcl91cmwpO1xuXG4gIGlmIChjb25maWcpIHtcbiAgICBpZiAoY29uZmlnLnBhdGgpIHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGNvbmZpZy5wYXRoKTtcbiAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHJlcy5hcnJheUJ1ZmZlcigpO1xuICAgICAgY29uc3QgZmlsZU5hbWVNYXRjaCA9IGNvbmZpZy5wYXRoLm1hdGNoKC9bXi9dKiQvKTtcbiAgICAgIGlmIChmaWxlTmFtZU1hdGNoKSB7XG4gICAgICAgIGNvbmZpZy5wYXRoID0gZmlsZU5hbWVNYXRjaFswXTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGRiLnJlZ2lzdGVyRmlsZUJ1ZmZlcihjb25maWcucGF0aCwgbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSk7XG4gICAgfVxuICAgIGF3YWl0IGRiLm9wZW4oY29uZmlnKTtcbiAgfVxuXG4gIGlmIChERUJVRykge1xuICAgIGxvZ0VsYXBzZWRUaW1lKCdEdWNrREIgaW5pdGlhbGl6ZWQnLCBzdGFydCk7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgY29uc29sZS5kZWJ1ZyhgRHVja0RiQ29uZmlnOiAke0pTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMil9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBkYjtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBpbnN0YW5jZSBvZiBEdWNrREIsIGluaXRpYWxpemluZyBpdCBpZiBuZWVkZWQuXG4gKlxuICogVHlwaWNhbGx5IGB1c2VEdWNrREJgIGlzIHVzZWQgaW4gUmVhY3QgY29tcG9uZW50cyBpbnN0ZWFkLCBidXQgdGhpc1xuICogbWV0aG9kIHByb3ZpZGVzIGFjY2VzcyBvdXRzaWRlIG9mIFJlYWN0IGNvbnRleHRzLlxuICovXG5leHBvcnQgY29uc3QgZ2V0RHVja0RCID0gYXN5bmMgKCk6IFByb21pc2U8QXN5bmNEdWNrREI+ID0+IHtcbiAgaWYgKER1Y2tEQikge1xuICAgIHJldHVybiBEdWNrREI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGF3YWl0IGluaXRpYWxpemVEdWNrRGIoKTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFJQSxJQUFBQSxXQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFBOEMsSUFBQUMsTUFBQSxHQUFBSCxXQUFBO0FBRTlDLElBQUFJLEtBQUEsR0FBQUYsT0FBQTtBQUE0QyxTQUFBRyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUwsd0JBQUFLLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdB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
|