sliftutils 1.7.12 → 1.7.13

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 (30) hide show
  1. package/index.d.ts +31 -1
  2. package/misc/dist/getSecret.ts.cache +2 -2
  3. package/misc/dist/strings.ts.cache +2 -2
  4. package/misc/dist/yaml.ts.cache +2 -2
  5. package/misc/dist/yamlBase.ts.cache +2 -2
  6. package/misc/https/dist/certs.ts.cache +2 -2
  7. package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
  8. package/package.json +2 -2
  9. package/storage/BulkDatabase2/dist/BulkDatabaseBase.ts.cache +2 -2
  10. package/storage/BulkDatabase2/dist/BulkDatabaseFormat.ts.cache +2 -2
  11. package/storage/BulkDatabase2/dist/BulkDatabaseMerge.ts.cache +2 -2
  12. package/storage/BulkDatabase2/dist/BulkDatabaseReader.ts.cache +2 -2
  13. package/storage/BulkDatabase2/dist/LoadedIndex.ts.cache +2 -2
  14. package/storage/BulkDatabase2/dist/WriteOverlay.ts.cache +2 -2
  15. package/storage/BulkDatabase2/dist/blockCache.ts.cache +2 -2
  16. package/storage/BulkDatabase2/dist/mergeLock.ts.cache +2 -2
  17. package/storage/BulkDatabase2/dist/mergeMarkers.ts.cache +2 -2
  18. package/storage/BulkDatabase2/dist/streamLog.ts.cache +2 -2
  19. package/storage/BulkDatabase2/dist/syncClient.ts.cache +2 -2
  20. package/storage/dist/embeddingFormats.ts.cache +2 -2
  21. package/storage/proxydatabase/dist/Database.ts.cache +2 -2
  22. package/storage/proxydatabase/dist/ivfEmbeddingDatabase.ts.cache +123 -61
  23. package/storage/proxydatabase/dist/transactionSet.ts.cache +16 -4
  24. package/storage/remoteStorage/createArchives.d.ts +16 -0
  25. package/storage/remoteStorage/createArchives.ts +30 -2
  26. package/storage/remoteStorage/storageController.d.ts +2 -0
  27. package/storage/remoteStorage/storageController.ts +9 -9
  28. package/storage/remoteStorage/storageServerState.d.ts +13 -1
  29. package/storage/remoteStorage/storageServerState.ts +64 -9
  30. package/yarn.lock +4 -4
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.blockCache = exports.BlockCache = exports.encodeCompressedBlocks = void 0;
4
4
  const LZ4_1 = require("socket-function/src/lz4/LZ4");
@@ -176,4 +176,4 @@ exports.BlockCache = BlockCache;
176
176
  // Shared across every BulkDatabase2 collection/file (the 512MB budget is global).
177
177
  exports.blockCache = new BlockCache();
178
178
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tDYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJsb2NrQ2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBRWxELCtGQUErRjtBQUMvRixFQUFFO0FBQ0YsaUdBQWlHO0FBQ2pHLHFHQUFxRztBQUNyRyxzR0FBc0c7QUFDdEcscUZBQXFGO0FBQ3JGLEVBQUU7QUFDRixpRkFBaUY7QUFDakYsRUFBRTtBQUNGLGlHQUFpRztBQUNqRyxxR0FBcUc7QUFDckcsOEZBQThGO0FBQzlGLCtGQUErRjtBQUMvRixFQUFFO0FBQ0YscUdBQXFHO0FBQ3JHLHNDQUFzQztBQUV0QyxNQUFNLFVBQVUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQzlCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO0FBQ2hFLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRWhDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFXLENBQUM7QUFheEMsK0VBQStFO0FBQy9FLFNBQWdCLHNCQUFzQixDQUFDLElBQVk7SUFDL0MsSUFBSSxNQUFNLEdBQWdCLEVBQUUsQ0FBQztJQUM3QixJQUFJLFdBQVcsR0FBYSxFQUFFLENBQUM7SUFDL0IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENB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O1lBQ2hELG1GQUFtRjtZQUNuRix5RUFBeUU7WUFDekUsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLFVBQVUsR0FBRyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksVUFBVSxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQywrQkFBK0IsS0FBSyxLQUFLLEdBQUcsUUFBUSxNQUFNLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDaEosQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNKO0FBM0hELGdDQTJIQztBQUVELGtGQUFrRjtBQUNyRSxRQUFBLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTFo0IH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbHo0L0xaNFwiO1xuXG4vLyBCbG9jay1hbGlnbmVkLCBwcm9taXNlLWRlZHVwZWQsIGRlY29tcHJlc3NpbmcgcmFuZ2UgY2FjaGUgZm9yIEJ1bGtEYXRhYmFzZTIncyBvbi1kaXNrIGZpbGVzLlxuLy9cbi8vIE9uLWRpc2sgZm9ybWF0IChwcm9kdWNlZCBieSBlbmNvZGVDb21wcmVzc2VkQmxvY2tzKTogdGhlIGxvZ2ljYWwgKHVuY29tcHJlc3NlZCkgYnVsayBidWZmZXIgaXNcbi8vIHNwbGl0IGludG8gZml4ZWQgQkxPQ0tfU0laRSBibG9ja3M7IGVhY2ggYmxvY2sgaXMgTFo0LWNvbXByZXNzZWQgdW5sZXNzIHRoYXQgd291bGRuJ3Qgc2hyaW5rIGl0IGJ5XG4vLyBhdCBsZWFzdCAyeCwgaW4gd2hpY2ggY2FzZSBpdCdzIHN0b3JlZCByYXcuIFRoZSBmaWxlIHN0YXJ0cyB3aXRoIGEgSlNPTiBpbmRleCBtYXBwaW5nIGVhY2ggYmxvY2sgdG9cbi8vIGl0cyBzdG9yZWQgbGVuZ3RoICsgYSBjb21wcmVzc2VkIGZsYWcsIHNvIGEgcmVhZGVyIGNhbiBzZWVrIHN0cmFpZ2h0IHRvIGFueSBibG9jazpcbi8vXG4vLyAgIFt1MzIgaW5kZXhMZW5ndGhdW2luZGV4IEpTT05dW2Jsb2NrIDAgc3RvcmVkIGJ5dGVzXVtibG9jayAxIHN0b3JlZCBieXRlc10uLi5cbi8vXG4vLyBUaGUgY2FjaGUgcHJlc2VudHMgYSAqbG9naWNhbCogZ2V0UmFuZ2UgKG92ZXIgdW5jb21wcmVzc2VkIGJ5dGVzKSBzbyBCdWxrRGF0YWJhc2UyJ3MgcmVhZGVyIGlzXG4vLyBvYmxpdmlvdXMgdG8gY29tcHJlc3Npb24uIEl0IHJlYWRzIGNvbXByZXNzZWQgYnl0ZXMgdmlhIHRoZSB1bmRlcmx5aW5nIGdldFJhbmdlLCBkZWNvbXByZXNzZXMsIGFuZFxuLy8gY2FjaGVzIHRoZSB1bmNvbXByZXNzZWQgYmxvY2tzLiBSZWFkcyBhcmUgcHJvbWlzZS1kZWR1cGVkIGFuZCBjb250aWd1b3VzIG1pc3NpbmcgYmxvY2tzIGFyZVxuLy8gY29hbGVzY2VkIGludG8gb25lIHVuZGVybHlpbmcgcmVhZC4gRmlsZXMgYXJlIGltbXV0YWJsZSwgc28gY2FjaGVkIGJsb2NrcyBhcmUgdmFsaWQgZm9yZXZlci5cbi8vXG4vLyBQZXItYmxvY2sgY29tcHJlc3Npb24gbWFpbmx5IGhlbHBzIHNsb3cgc3RvcmFnZSAoSEREKTogZmV3ZXIgYnl0ZXMgb2ZmIGRpc2sgcGVyIGJsb2NrLCBhdCB0aGUgY29zdFxuLy8gb2YgYSBmYXN0IGluLW1lbW9yeSBMWjQgZGVjb21wcmVzcy5cblxuY29uc3QgQkxPQ0tfU0laRSA9IDI1NiAqIDEwMjQ7XG5jb25zdCBNQVhfQkxPQ0tTID0gTWF0aC5mbG9vcigoNTEyICogMTAyNCAqIDEwMjQpIC8gQkxPQ0tfU0laRSk7XG5jb25zdCBNSU5fQ09NUFJFU1NJT05fUkFUSU8gPSAyO1xuXG5jb25zdCBFTVBUWSA9IEJ1ZmZlci5hbGxvYygwKSBhcyBCdWZmZXI7XG5cbmV4cG9ydCB0eXBlIEdldFJhbmdlID0gKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKSA9PiBQcm9taXNlPEJ1ZmZlcj47XG5cbnR5cGUgQmxvY2tNZXRhID0geyBsZW46IG51bWJlcjsgYzogMCB8IDEgfTtcbnR5cGUgRmlsZUluZGV4ID0ge1xuICAgIHVuY29tcHJlc3NlZFNpemU6IG51bWJlcjtcbiAgICBibG9ja1NpemU6IG51bWJlcjtcbiAgICBibG9ja3M6IEJsb2NrTWV0YVtdO1xuICAgIC8vIFN0b3JlZCBieXRlIG9mZnNldCBvZiBlYWNoIGJsb2NrIChvZmZzZXRzW2ldLi5vZmZzZXRzW2ldK2Jsb2Nrc1tpXS5sZW4pLCBmaWxsZWQgaW4gb24gcGFyc2UuXG4gICAgb2Zmc2V0czogbnVtYmVyW107XG59O1xuXG4vLyBXcml0ZXMgYSBsb2dpY2FsIGJ1bGsgYnVmZmVyIGluIHRoZSBjb21wcmVzc2VkLWJsb2NrIGZvcm1hdCBkZXNjcmliZWQgYWJvdmUuXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlQ29tcHJlc3NlZEJsb2NrcyhkYXRhOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgIGxldCBibG9ja3M6IEJsb2NrTWV0YVtdID0gW107XG4gICAgbGV0IHN0b3JlZFBhcnRzOiBCdWZmZXJbXSA9IFtdO1xuICAgIGxldCBibG9ja0NvdW50ID0gTWF0aC5jZWlsKGRhdGEubGVuZ3RoIC8gQkxPQ0tfU0laRSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBibG9ja0NvdW50OyBpKyspIHtcbiAgICAgICAgbGV0IHJhdyA9IGRhdGEuc3ViYXJyYXkoaSAqIEJMT0NLX1NJWkUsIE1hdGgubWluKChpICsgMSkgKiBCTE9DS19TSVpFLCBkYXRhLmxlbmd0aCkpO1xuICAgICAgICBsZXQgY29tcHJlc3NlZCA9IExaNC5jb21wcmVzcyhyYXcpO1xuICAgICAgICAvLyBPbmx5IGtlZXAgdGhlIGNvbXByZXNzZWQgZm9ybSBpZiBpdCBzaHJpbmtzIHRoZSBibG9jayBieSBhdCBsZWFzdCBNSU5fQ09NUFJFU1NJT05fUkFUSU8uXG4gICAgICAgIGlmIChjb21wcmVzc2VkLmxlbmd0aCAqIE1JTl9DT01QUkVTU0lPTl9SQVRJTyA8PSByYXcubGVuZ3RoKSB7XG4gICAgICAgICAgICBzdG9yZWRQYXJ0cy5wdXNoKGNvbXByZXNzZWQpO1xuICAgICAgICAgICAgYmxvY2tzLnB1c2goeyBsZW46IGNvbXByZXNzZWQubGVuZ3RoLCBjOiAxIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RvcmVkUGFydHMucHVzaChyYXcpO1xuICAgICAgICAgICAgYmxvY2tzLnB1c2goeyBsZW46IHJhdy5sZW5ndGgsIGM6IDAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGluZGV4QnVmID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoeyB1bmNvbXByZXNzZWRTaXplOiBkYXRhLmxlbmd0aCwgYmxvY2tTaXplOiBCTE9DS19TSVpFLCBibG9ja3MgfSksIFwidXRmOFwiKTtcbiAgICBsZXQgcHJlZml4ID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIHByZWZpeC53cml0ZVVJbnQzMkxFKGluZGV4QnVmLmxlbmd0aCwgMCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3ByZWZpeCwgaW5kZXhCdWYsIC4uLnN0b3JlZFBhcnRzXSk7XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja0NhY2hlIHtcbiAgICAvLyBVbmNvbXByZXNzZWQgYmxvY2tzOyBpbnNlcnRpb24gb3JkZXIgaXMgTFJVIG9yZGVyIChyZS1pbnNlcnRlZCBvbiBhY2Nlc3MpLlxuICAgIHByaXZhdGUgYmxvY2tzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8QnVmZmVyPj4oKTtcbiAgICAvLyBQYXJzZWQgZmlsZSBpbmRleCBwZXIgZmlsZUlkIChzbWFsbDsgbm90IHN1YmplY3QgdG8gdGhlIGJsb2NrIExSVSkuXG4gICAgcHJpdmF0ZSBpbmRleGVzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8RmlsZUluZGV4Pj4oKTtcblxuICAgIHB1YmxpYyBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5ibG9ja3MuY2xlYXIoKTtcbiAgICAgICAgdGhpcy5pbmRleGVzLmNsZWFyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGV2aWN0KGZpbGVJZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaW5kZXhlcy5kZWxldGUoZmlsZUlkKTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gZmlsZUlkICsgXCI6XCI7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIHRoaXMuYmxvY2tzLmtleXMoKSkgaWYgKGtleS5zdGFydHNXaXRoKHByZWZpeCkpIHRoaXMuYmxvY2tzLmRlbGV0ZShrZXkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG91Y2goa2V5OiBzdHJpbmcsIHZhbHVlOiBQcm9taXNlPEJ1ZmZlcj4pIHtcbiAgICAgICAgdGhpcy5ibG9ja3MuZGVsZXRlKGtleSk7XG4gICAgICAgIHRoaXMuYmxvY2tzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgd2hpbGUgKHRoaXMuYmxvY2tzLnNpemUgPiBNQVhfQkxPQ0tTKSB7XG4gICAgICAgICAgICBsZXQgb2xkZXN0ID0gdGhpcy5ibG9ja3Mua2V5cygpLm5leHQoKS52YWx1ZTtcbiAgICAgICAgICAgIGlmIChvbGRlc3QgPT09IHVuZGVmaW5lZCkgYnJlYWs7XG4gICAgICAgICAgICB0aGlzLmJsb2Nrcy5kZWxldGUob2xkZXN0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlYWRzICsgdmFsaWRhdGVzIHRoZSBmaWxlIGluZGV4LiBSZWplY3RzIHRoZSBXSE9MRSBmaWxlIGlmIGl0IGlzbid0IGV4YWN0bHkgdGhlIHNpemUgaXRzIGluZGV4XG4gICAgLy8gaW1wbGllcyDigJQgYSB0cnVuY2F0ZWQvcGFydGlhbCB3cml0ZSAoZS5nLiBhIGNyYXNoIG1pZC13cml0ZSkgaXMgZGV0ZWN0ZWQgaGVyZSByYXRoZXIgdGhhblxuICAgIC8vIHNpbGVudGx5IHJldHVybmluZyBjb3JydXB0ZWQgdmFsdWVzIGZvciB0aGUgcm93cyBuZWFyIHRoZSBlbmQuXG4gICAgcHJpdmF0ZSBhc3luYyByZWFkSW5kZXgocmF3R2V0UmFuZ2U6IEdldFJhbmdlLCBmaWxlU2l6ZTogbnVtYmVyKTogUHJvbWlzZTxGaWxlSW5kZXg+IHtcbiAgICAgICAgbGV0IGhlYWQgPSBhd2FpdCByYXdHZXRSYW5nZSgwLCA0KTtcbiAgICAgICAgaWYgKGhlYWQubGVuZ3RoIDwgNCkgdGhyb3cgbmV3IEVycm9yKGBidWxrIGZpbGUgdG9vIHNob3J0IGZvciBhbiBpbmRleCBoZWFkZXIgKCR7ZmlsZVNpemV9IGJ5dGVzKWApO1xuICAgICAgICBsZXQgaW5kZXhMZW5ndGggPSBoZWFkLnJlYWRVSW50MzJMRSgwKTtcbiAgICAgICAgaWYgKGluZGV4TGVuZ3RoIDw9IDAgfHwgNCArIGluZGV4TGVuZ3RoID4gZmlsZVNpemUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYnVsayBmaWxlIGluZGV4IGxlbmd0aCAke2luZGV4TGVuZ3RofSBpcyBpbnZhbGlkIGZvciBhICR7ZmlsZVNpemV9LWJ5dGUgZmlsZWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBpbmRleEJ1ZiA9IGF3YWl0IHJhd0dldFJhbmdlKDQsIDQgKyBpbmRleExlbmd0aCk7XG4gICAgICAgIGxldCBwYXJzZWQgPSBKU09OLnBhcnNlKGluZGV4QnVmLnRvU3RyaW5nKFwidXRmOFwiKSkgYXMgeyB1bmNvbXByZXNzZWRTaXplOiBudW1iZXI7IGJsb2NrU2l6ZTogbnVtYmVyOyBibG9ja3M6IEJsb2NrTWV0YVtdIH07XG4gICAgICAgIGxldCBkYXRhQmFzZSA9IDQgKyBpbmRleExlbmd0aDtcbiAgICAgICAgbGV0IG9mZnNldHM6IG51bWJlcltdID0gW107XG4gICAgICAgIGxldCBvZmZzZXQgPSBkYXRhQmFzZTtcbiAgICAgICAgZm9yIChsZXQgYmxvY2sgb2YgcGFyc2VkLmJsb2Nrcykge1xuICAgICAgICAgICAgb2Zmc2V0cy5wdXNoKG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gYmxvY2subGVuO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBibG9ja3MgbXVzdCBhY2NvdW50IGZvciBleGFjdGx5IHRoZSByZXN0IG9mIHRoZSBmaWxlLiBBbnkgbWlzbWF0Y2ggbWVhbnMgdGhlIGZpbGUgaXNcbiAgICAgICAgLy8gdHJ1bmNhdGVkIG9yIG90aGVyd2lzZSBjb3JydXB0IOKAlCByZWplY3QgaXQgZW50aXJlbHkuXG4gICAgICAgIGlmIChvZmZzZXQgIT09IGZpbGVTaXplKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJ1bGsgZmlsZSBpcyAke2ZpbGVTaXplfSBieXRlcyBidXQgaXRzIGluZGV4IGltcGxpZXMgJHtvZmZzZXR9ICh0cnVuY2F0ZWQvY29ycnVwdClgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5wYXJzZWQsIG9mZnNldHMgfTtcbiAgICB9XG5cbiAgICAvLyBPcGVucyBhbiBpbW11dGFibGUgZmlsZTogcmVhZHMgKyB2YWxpZGF0ZXMgaXRzIGluZGV4IChjYWNoZWQpIGFuZCByZXR1cm5zIHRoZSBsb2dpY2FsXG4gICAgLy8gKHVuY29tcHJlc3NlZCkgc2l6ZSBwbHVzIGEgbG9naWNhbCBnZXRSYW5nZSB0aGF0IHRoZSBjYWxsZXIgY2FuIHVzZSBleGFjdGx5IGxpa2UgYW5cbiAgICAvLyB1bmNvbXByZXNzZWQgZmlsZS4gYGZpbGVTaXplYCBpcyB0aGUgYWN0dWFsIG9uLWRpc2sgYnl0ZSBsZW5ndGgsIHVzZWQgdG8gZGV0ZWN0IHRydW5jYXRpb24uXG4gICAgcHVibGljIGFzeW5jIG9wZW4oZmlsZUlkOiBzdHJpbmcsIGZpbGVTaXplOiBudW1iZXIsIHJhd0dldFJhbmdlOiBHZXRSYW5nZSk6IFByb21pc2U8eyB1bmNvbXByZXNzZWRTaXplOiBudW1iZXI7IGdldFJhbmdlOiBHZXRSYW5nZSB9PiB7XG4gICAgICAgIGxldCBpbmRleFByb21pc2UgPSB0aGlzLmluZGV4ZXMuZ2V0KGZpbGVJZCk7XG4gICAgICAgIGlmICghaW5kZXhQcm9taXNlKSB7XG4gICAgICAgICAgICBpbmRleFByb21pc2UgPSB0aGlzLnJlYWRJbmRleChyYXdHZXRSYW5nZSwgZmlsZVNpemUpO1xuICAgICAgICAgICAgdGhpcy5pbmRleGVzLnNldChmaWxlSWQsIGluZGV4UHJvbWlzZSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGluZGV4ID0gYXdhaXQgaW5kZXhQcm9taXNlO1xuICAgICAgICByZXR1cm4geyB1bmNvbXByZXNzZWRTaXplOiBpbmRleC51bmNvbXByZXNzZWRTaXplLCBnZXRSYW5nZTogdGhpcy5tYWtlR2V0UmFuZ2UoZmlsZUlkLCBpbmRleCwgcmF3R2V0UmFuZ2UpIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYWtlR2V0UmFuZ2UoZmlsZUlkOiBzdHJpbmcsIGluZGV4OiBGaWxlSW5kZXgsIHJhd0dldFJhbmdlOiBHZXRSYW5nZSk6IEdldFJhbmdlIHtcbiAgICAgICAgbGV0IGJsb2NrU2l6ZSA9IGluZGV4LmJsb2NrU2l6ZTtcbiAgICAgICAgcmV0dXJuIGFzeW5jIChzdGFydCwgZW5kKSA9PiB7XG4gICAgICAgICAgICBpZiAoZW5kIDw9IHN0YXJ0KSByZXR1cm4gRU1QVFk7XG4gICAgICAgICAgICBsZXQgZmlyc3RCbG9jayA9IE1hdGguZmxvb3Ioc3RhcnQgLyBibG9ja1NpemUpO1xuICAgICAgICAgICAgbGV0IGxhc3RCbG9jayA9IE1hdGguZmxvb3IoKGVuZCAtIDEpIC8gYmxvY2tTaXplKTtcblxuICAgICAgICAgICAgbGV0IHBhcnRzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICAgICAgbGV0IGJsb2NrID0gZmlyc3RCbG9jaztcbiAgICAgICAgICAgIHdoaWxlIChibG9jayA8PSBsYXN0QmxvY2spIHtcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gYCR7ZmlsZUlkfToke2Jsb2NrfWA7XG4gICAgICAgICAgICAgICAgbGV0IGNhY2hlZCA9IHRoaXMuYmxvY2tzLmdldChrZXkpO1xuICAgICAgICAgICAgICAgIGlmIChjYWNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3VjaChrZXksIGNhY2hlZCk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYXdhaXQgY2FjaGVkKTtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2srKztcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIENvYWxlc2NlIGEgcnVuIG9mIGNvbnNlY3V0aXZlIG1pc3NpbmcgYmxvY2tzIGludG8gb25lIHVuZGVybHlpbmcgKGNvbXByZXNzZWQpIHJlYWQuXG4gICAgICAgICAgICAgICAgbGV0IHJ1blN0YXJ0ID0gYmxvY2s7XG4gICAgICAgICAgICAgICAgbGV0IHJ1bkVuZCA9IGJsb2NrICsgMTtcbiAgICAgICAgICAgICAgICB3aGlsZSAocnVuRW5kIDw9IGxhc3RCbG9jayAmJiAhdGhpcy5ibG9ja3MuaGFzKGAke2ZpbGVJZH06JHtydW5FbmR9YCkpIHJ1bkVuZCsrO1xuICAgICAgICAgICAgICAgIGxldCBjb21wU3RhcnQgPSBpbmRleC5vZmZzZXRzW3J1blN0YXJ0XTtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdE1ldGEgPSBpbmRleC5ibG9ja3NbcnVuRW5kIC0gMV07XG4gICAgICAgICAgICAgICAgbGV0IGNvbXBFbmQgPSBpbmRleC5vZmZzZXRzW3J1bkVuZCAtIDFdICsgbGFzdE1ldGEubGVuO1xuICAgICAgICAgICAgICAgIGxldCBydW5Db21wcmVzc2VkID0gcmF3R2V0UmFuZ2UoY29tcFN0YXJ0LCBjb21wRW5kKTtcbiAgICAgICAgICAgICAgICAvLyBIb2xkIHRoaXMgcnVuJ3MgcHJvbWlzZXMgbG9jYWxseS4gUmVnaXN0ZXJpbmcgdGhlbSBpbiB0aGUgTFJVIGNhbiBldmljdCBlYXJsaWVyXG4gICAgICAgICAgICAgICAgLy8gYmxvY2tzIG9mIHRoZSBzYW1lIHJ1biAob3Igb2YgYSBjb25jdXJyZW50IHJ1bikgYmVmb3JlIHdlIGdldCB0byBhd2FpdCB0aGVtLCBzb1xuICAgICAgICAgICAgICAgIC8vIHJlYWRpbmcgdGhlbSBiYWNrIG91dCBvZiB0aGUgY2FjaGUgd291bGQgc2lsZW50bHkgZHJvcCBibG9ja3MgYW5kIHJldHVybiBhIHNob3J0XG4gICAgICAgICAgICAgICAgLy8gYnVmZmVyLiBXZSBzdGlsbCByZWdpc3RlciBpbiB0aGUgTFJVIHNvIGNvbmN1cnJlbnQgcmVhZHMgZGVkdXBlIG9udG8gdGhlbS5cbiAgICAgICAgICAgICAgICBsZXQgcnVuUHJvbWlzZXM6IFByb21pc2U8QnVmZmVyPltdID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IHJ1blN0YXJ0OyBpIDwgcnVuRW5kOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1ldGEgPSBpbmRleC5ibG9ja3NbaV07XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWxPZmZzZXQgPSBpbmRleC5vZmZzZXRzW2ldIC0gY29tcFN0YXJ0O1xuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tQcm9taXNlID0gcnVuQ29tcHJlc3NlZC50aGVuKGJ1ZiA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RvcmVkID0gYnVmLnN1YmFycmF5KHJlbE9mZnNldCwgcmVsT2Zmc2V0ICsgbWV0YS5sZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGEuYykgcmV0dXJuIExaNC5kZWNvbXByZXNzKHN0b3JlZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmVkO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcnVuUHJvbWlzZXMucHVzaChibG9ja1Byb21pc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdWNoKGAke2ZpbGVJZH06JHtpfWAsIGJsb2NrUHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IHByb21pc2Ugb2YgcnVuUHJvbWlzZXMpIHBhcnRzLnB1c2goYXdhaXQgcHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgYmxvY2sgPSBydW5FbmQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjb21iaW5lZCA9IHBhcnRzLmxlbmd0aCA9PT0gMSAmJiBwYXJ0c1swXSB8fCBCdWZmZXIuY29uY2F0KHBhcnRzKTtcbiAgICAgICAgICAgIGxldCBzbGljZVN0YXJ0ID0gc3RhcnQgLSBmaXJzdEJsb2NrICogYmxvY2tTaXplO1xuICAgICAgICAgICAgLy8gQSBzaG9ydCBjb21iaW5lZCBidWZmZXIgbWVhbnMgd2UgbG9zdCBibG9ja3M7IHN1YmFycmF5IHdvdWxkIGNsYW1wIGFuZCBoYW5kIGJhY2tcbiAgICAgICAgICAgIC8vIHRydW5jYXRlZCBkYXRhIHRoYXQgZXZlcnkgY2FsbGVyIHRyZWF0cyBhcyB2YWxpZC4gRmFpbCBsb3VkbHkgaW5zdGVhZC5cbiAgICAgICAgICAgIGlmIChjb21iaW5lZC5sZW5ndGggPCBzbGljZVN0YXJ0ICsgKGVuZCAtIHN0YXJ0KSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtzbGljZVN0YXJ0ICsgKGVuZCAtIHN0YXJ0KX0gYnl0ZXMgb2YgYmxvY2tzIGZvciByYW5nZSBbJHtzdGFydH0sICR7ZW5kfSkgb2YgJHtmaWxlSWR9LCB3YXMgJHtjb21iaW5lZC5sZW5ndGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29tYmluZWQuc3ViYXJyYXkoc2xpY2VTdGFydCwgc2xpY2VTdGFydCArIChlbmQgLSBzdGFydCkpO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuLy8gU2hhcmVkIGFjcm9zcyBldmVyeSBCdWxrRGF0YWJhc2UyIGNvbGxlY3Rpb24vZmlsZSAodGhlIDUxMk1CIGJ1ZGdldCBpcyBnbG9iYWwpLlxuZXhwb3J0IGNvbnN0IGJsb2NrQ2FjaGUgPSBuZXcgQmxvY2tDYWNoZSgpO1xuIl19
179
- /* _JS_SOURCE_HASH = "9a96e6fce74c45d2fc49828b785a0df0b264d6ff85be9746eacf6c58d523ce37"; */
179
+ /* _JS_SOURCE_HASH = "ae0872179d992679057d79f1a8bbd404fe3d2ca353467c495d54658fd673e05d"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  // Best-effort "only one tab merges this collection at a time" guard. This is purely an efficiency
3
3
  // measure: correctness does NOT depend on it. Reads resolve by per-row write-time, merges write new
4
4
  // files before deleting consumed ones, and a duplicate-heavy region gets re-merged — so two tabs
@@ -146,4 +146,4 @@ async function releaseMergeFileLock(storage, holderId) {
146
146
  }
147
147
  exports.releaseMergeFileLock = releaseMergeFileLock;
148
148
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VMb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVyZ2VMb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrR0FBa0c7QUFDbEcsb0dBQW9HO0FBQ3BHLGlHQUFpRztBQUNqRyxzR0FBc0c7QUFDdEcscUdBQXFHO0FBQ3JHLG1HQUFtRztBQUNuRyxxR0FBcUc7QUFDckcsNkZBQTZGO0FBQzdGLEVBQUU7QUFDRixnR0FBZ0c7QUFDaEcsbUdBQW1HO0FBQ25HLG9HQUFvRztBQUNwRyxxR0FBcUc7QUFDckcsc0VBQXNFOzs7QUFJdEUsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUk5QixTQUFTLGNBQWMsQ0FBQyxLQUFhO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsSUFBSSxLQUFLLEdBQUcsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2hDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3JELENBQUM7QUFFRCxTQUFTLGVBQWU7SUFDcEIsSUFBSSxDQUFDO1FBQ0QsT0FBTyxPQUFPLFlBQVksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzFFLENBQUM7SUFBQyxXQUFNLENBQUM7UUFDTCxPQUFPLFNBQVMsQ0FBQyxDQUFDLDJEQUEyRDtJQUNqRixDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsT0FBTyxDQUFDLFVBQWtCO0lBQy9CLE9BQU8sc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQy9DLENBQUM7QUFFRCx3R0FBd0c7QUFDeEcscUdBQXFHO0FBQ3JHLHVHQUF1RztBQUN2RyxtR0FBbUc7QUFDbkcsU0FBZ0IsbUJBQW1CLENBQUMsVUFBa0IsRUFBRSxRQUFnQjtJQUNwRSxNQUFNLEVBQUUsR0FBRyxlQUFlLEVBQUUsQ0FBQztJQUM3QixJQUFJLENBQUMsRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3JCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLFdBQVc7WUFBRSxPQUFPLEtBQUssQ0FBQztJQUNoRSxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDbkMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkIsZ0ZBQWdGO0lBQ2hGLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUM7QUFDckMsQ0FBQztBQWRELGtEQWNDO0FBRUQsdUdBQXVHO0FBQ3ZHLCtDQUErQztBQUMvQyxTQUFnQixhQUFhLENBQUMsVUFBa0I7SUFDNUMsTUFBTSxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7SUFDN0IsSUFBSSxDQUFDLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUMxQixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQyxRQUFRO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDaEMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUM5RixDQUFDO0FBUkQsc0NBUUM7QUFFRCxTQUFnQixnQkFBZ0IsQ0FBQyxVQUFrQixFQUFFLFFBQWdCO0lBQ2pFLE1BQU0sRUFBRSxHQUFHLGVBQWUsRUFBRSxDQUFDO0lBQzdCLElBQUksQ0FBQyxFQUFFO1FBQUUsT0FBTztJQUNoQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEMsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7UUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVFLENBQUM7QUFORCw0Q0FNQztBQUVELHFHQUFxRztBQUNyRyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUM7QUFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUN2QyxNQUFNLG1CQUFtQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDdEMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUU3QyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsT0FBb0I7SUFDakQsSUFBSSxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxHQUFHO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDM0IsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFBQyxXQUFNLENBQUM7UUFBQyxPQUFPLFNBQVMsQ0FBQztJQUFDLENBQUM7QUFDakMsQ0FBQztBQUVELHdFQUF3RTtBQUNqRSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsT0FBb0I7SUFDeEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsUUFBUTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN2RyxDQUFDO0FBSkQsOENBSUM7QUFFRCxLQUFLLFVBQVUsa0JBQWtCLENBQUMsT0FBb0IsRUFBRSxRQUFnQixFQUFFLElBQVk7SUFDbEYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxJQUFJLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBVyxDQUFDLENBQUM7QUFDM0YsQ0FBQztBQUVELGtHQUFrRztBQUNsRyw2RkFBNkY7QUFDN0YsbUVBQW1FO0FBQzVELEtBQUssVUFBVSx1QkFBdUIsQ0FBQyxPQUFvQixFQUFFLFFBQWdCO0lBQ2hGLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN2QixNQUFNLFFBQVEsR0FBRyxNQUFNLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLEtBQUssUUFBUSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLGdCQUFnQjtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3ZHLE1BQU0sa0JBQWtCLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFDM0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7QUFDbEQsQ0FBQztBQVJELDBEQVFDO0FBRUQsdUdBQXVHO0FBQ3ZHLHVHQUF1RztBQUN2Ryx1RkFBdUY7QUFDdkYsU0FBZ0IsMkJBQTJCLENBQUMsT0FBb0IsRUFBRSxRQUFnQjs7SUFDOUUsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRTtRQUM5QixLQUFLLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFxQixDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUMzQixNQUFBLE1BQUMsUUFBbUMsRUFBQyxLQUFLLGtEQUFJLENBQUM7SUFDL0MsT0FBTyxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekMsQ0FBQztBQU5ELGtFQU1DO0FBRU0sS0FBSyxVQUFVLG9CQUFvQixDQUFDLE9BQW9CLEVBQUUsUUFBZ0I7SUFDN0UsSUFBSSxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsRCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxLQUFLLFFBQVE7WUFBRSxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUFDLFFBQVEsWUFBWSxJQUFkLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBTEQsb0RBS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCZXN0LWVmZm9ydCBcIm9ubHkgb25lIHRhYiBtZXJnZXMgdGhpcyBjb2xsZWN0aW9uIGF0IGEgdGltZVwiIGd1YXJkLiBUaGlzIGlzIHB1cmVseSBhbiBlZmZpY2llbmN5XG4vLyBtZWFzdXJlOiBjb3JyZWN0bmVzcyBkb2VzIE5PVCBkZXBlbmQgb24gaXQuIFJlYWRzIHJlc29sdmUgYnkgcGVyLXJvdyB3cml0ZS10aW1lLCBtZXJnZXMgd3JpdGUgbmV3XG4vLyBmaWxlcyBiZWZvcmUgZGVsZXRpbmcgY29uc3VtZWQgb25lcywgYW5kIGEgZHVwbGljYXRlLWhlYXZ5IHJlZ2lvbiBnZXRzIHJlLW1lcmdlZCDigJQgc28gdHdvIHRhYnNcbi8vIG1lcmdpbmcgYXQgb25jZSBvbmx5IHdhc3RlIHdvcmsgYW5kIGJyaWVmbHkgZHVwbGljYXRlIGRhdGEsIG5ldmVyIGNvcnJ1cHQgb3IgbG9zZSBpdC4gVGhlIGxvY2sganVzdFxuLy8gc3RvcHMgdGhhdCB3YXN0ZWQgd29yay4gSXQgdXNlcyBsb2NhbFN0b3JhZ2UgKHNoYXJlZCBhY3Jvc3Mgc2FtZS1vcmlnaW4gdGFicykgYW5kIGlzIGEgbm8tb3Agd2hlcmVcbi8vIGxvY2FsU3RvcmFnZSBpcyB1bmF2YWlsYWJsZSAoTm9kZSkg4oCUIHRoZXJlIGNvbmN1cnJlbnQgbWVyZ2VzIGFyZSBoYXJtbGVzcywgd2hpY2ggdGhlIE5vZGUgc3RyZXNzXG4vLyB0ZXN0cyBleGVyY2lzZS4gbG9jYWxTdG9yYWdlIGhhcyBubyBhdG9taWMgY29tcGFyZS1hbmQtc3dhcCwgc28gd2Ugd3JpdGUtdGhlbi1yZXJlYWQgdG8gc2hyaW5rIHRoZVxuLy8gcmFjZSB3aW5kb3csIGFuZCBhIFRUTCBmcmVlcyBhIGxvY2sgbGVmdCBiZWhpbmQgYnkgYSB0YWIgdGhhdCBjcmFzaGVkIG9yIGNsb3NlZCBtaWQtbWVyZ2UuXG4vL1xuLy8gRmlsZS1sb2NrIGxheWVyIChzZWUgYWNxdWlyZU1lcmdlRmlsZUxvY2sgYXQgdGhlIGJvdHRvbSk6IGZvciBjcm9zcy1QUk9DRVNTIHNhZmV0eSAoZGlmZmVyZW50XG4vLyBicm93c2VycywgZGlmZmVyZW50IG1hY2hpbmVzIHBvaW50aW5nIGF0IHRoZSBzYW1lIHJlbW90ZSBzdG9yYWdlKSwgd2UgQUxTTyB3cml0ZSBhIGAubWVyZ2UtbG9ja2Bcbi8vIGZpbGUgaW5zaWRlIHRoZSBjb2xsZWN0aW9uJ3Mgc3RvcmFnZSB3aXRoIG91ciBJRC4gVGhlIHByb3RvY29sIGlzIGNoZWNrLXdyaXRlLXdhaXQtcmVjaGVjayDigJQgbGFzdFxuLy8gd3JpdGVyIHdpbnMgYWZ0ZXIgdGhlIDE1cyBzZXR0bGUgd2luZG93LiBUaGUgbG9jYWxTdG9yYWdlIGxvY2sgYWJvdmUgY292ZXJzIHNhbWUtb3JpZ2luIHRhYnM7IHRoaXNcbi8vIGNvdmVycyBldmVyeXRoaW5nIGVsc2UgKHNlcGFyYXRlIHByb2Nlc3NlcywgcmVtb3RlIHNoYXJlZCBzdG9yYWdlKS5cblxuaW1wb3J0IHR5cGUgeyBGaWxlU3RvcmFnZSB9IGZyb20gXCIuLi9GaWxlRm9sZGVyQVBJXCI7XG5cbmNvbnN0IExPQ0tfVFRMX01TID0gMzAgKiAxMDAwO1xuXG5leHBvcnQgdHlwZSBNZXJnZUxvY2tJbmZvID0geyBob2xkZXJJZDogc3RyaW5nOyBleHBpcmVzSW5NczogbnVtYmVyIH07XG5cbmZ1bmN0aW9uIHBhcnNlTG9ja1Rva2VuKHRva2VuOiBzdHJpbmcpOiB7IGhvbGRlcklkOiBzdHJpbmc7IHRpbWU6IG51bWJlciB9IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb2xvbiA9IHRva2VuLmxhc3RJbmRleE9mKFwiOlwiKTtcbiAgICBpZiAoY29sb24gPCAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRpbWUgPSBwYXJzZUludCh0b2tlbi5zbGljZShjb2xvbiArIDEpLCAxMCk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodGltZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHsgaG9sZGVySWQ6IHRva2VuLnNsaWNlKDAsIGNvbG9uKSwgdGltZSB9O1xufVxuXG5mdW5jdGlvbiBnZXRMb2NhbFN0b3JhZ2UoKTogU3RvcmFnZSB8IHVuZGVmaW5lZCB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBsb2NhbFN0b3JhZ2UgIT09IFwidW5kZWZpbmVkXCIgPyBsb2NhbFN0b3JhZ2UgOiB1bmRlZmluZWQ7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7IC8vIGFjY2Vzc2luZyBsb2NhbFN0b3JhZ2UgY2FuIHRocm93IChlLmcuIGRpc2FibGVkIGNvb2tpZXMpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2NrS2V5KGNvbGxlY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiYnVsa0RhdGFiYXNlMi1tZXJnZTpcIiArIGNvbGxlY3Rpb247XG59XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBub3cgaG9sZCB0aGUgbG9jayAob3IgdGhlcmUncyBubyBsb2NhbFN0b3JhZ2UgdG8gY29vcmRpbmF0ZSB0aHJvdWdoLCBpbiB3aGljaCBjYXNlXG4vLyB3ZSBwcm9jZWVkIOKAlCBjb25jdXJyZW50IG1lcmdlcyBhcmUgaGFybWxlc3MpLiBSZXR1cm5zIGZhbHNlIG9ubHkgaWYgYSBESUZGRVJFTlQgaG9sZGVyIGhhcyBhIGZyZXNoXG4vLyBsb2NrLiBSZS1zdGFtcGluZyBvdXIgb3duIGxvY2sgYWx3YXlzIHN1Y2NlZWRzLCBzbyB0aGlzIGRvdWJsZXMgYXMgYSBoZWFydGJlYXQ6IGNhbGwgaXQgcGVyaW9kaWNhbGx5XG4vLyBkdXJpbmcgYSBsb25nLCBzcGFjZWQtb3V0IG1lcmdlIHRvIGtlZXAgdGhlIGxvY2sgYWxpdmUgKGFuZCBkZXRlY3QgaWYgYW5vdGhlciB0YWIgdG9vayBpdCBvdmVyKS5cbmV4cG9ydCBmdW5jdGlvbiB0cnlBY3F1aXJlTWVyZ2VMb2NrKGNvbGxlY3Rpb246IHN0cmluZywgaG9sZGVySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxzID0gZ2V0TG9jYWxTdG9yYWdlKCk7XG4gICAgaWYgKCFscykgcmV0dXJuIHRydWU7XG4gICAgY29uc3Qga2V5ID0gbG9ja0tleShjb2xsZWN0aW9uKTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gbHMuZ2V0SXRlbShrZXkpO1xuICAgIGlmIChleGlzdGluZyAmJiAhZXhpc3Rpbmcuc3RhcnRzV2l0aChob2xkZXJJZCArIFwiOlwiKSkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUxvY2tUb2tlbihleGlzdGluZyk7XG4gICAgICAgIGlmIChwYXJzZWQgJiYgbm93IC0gcGFyc2VkLnRpbWUgPCBMT0NLX1RUTF9NUykgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0b2tlbiA9IGhvbGRlcklkICsgXCI6XCIgKyBub3c7XG4gICAgbHMuc2V0SXRlbShrZXksIHRva2VuKTtcbiAgICAvLyBSZS1yZWFkIHRvIGNhdGNoIGEgcmFjaW5nIHNldEl0ZW0gZnJvbSBhbm90aGVyIHRhYiAoYmVzdC1lZmZvcnQsIG5vdCBhdG9taWMpLlxuICAgIHJldHVybiBscy5nZXRJdGVtKGtleSkgPT09IHRva2VuO1xufVxuXG4vLyBOb24tbXV0YXRpbmcgbG9vayBhdCB0aGUgdGFiIGxvY2s6IHdobyBob2xkcyBpdCBhbmQgaG93IGxvbmcgdW50aWwgaXQgZ29lcyBzdGFsZSAobmVnYXRpdmUgPSBhbHJlYWR5XG4vLyBzdGFsZSkuIEZvciBsb2dnaW5nIHdoeSBhIG1lcmdlIHdhcyBza2lwcGVkLlxuZXhwb3J0IGZ1bmN0aW9uIHBlZWtNZXJnZUxvY2soY29sbGVjdGlvbjogc3RyaW5nKTogTWVyZ2VMb2NrSW5mbyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgbHMgPSBnZXRMb2NhbFN0b3JhZ2UoKTtcbiAgICBpZiAoIWxzKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gbHMuZ2V0SXRlbShsb2NrS2V5KGNvbGxlY3Rpb24pKTtcbiAgICBpZiAoIWV4aXN0aW5nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlTG9ja1Rva2VuKGV4aXN0aW5nKTtcbiAgICBpZiAoIXBhcnNlZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4geyBob2xkZXJJZDogcGFyc2VkLmhvbGRlcklkLCBleHBpcmVzSW5NczogcGFyc2VkLnRpbWUgKyBMT0NLX1RUTF9NUyAtIERhdGUubm93KCkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbGVhc2VNZXJnZUxvY2soY29sbGVjdGlvbjogc3RyaW5nLCBob2xkZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgbHMgPSBnZXRMb2NhbFN0b3JhZ2UoKTtcbiAgICBpZiAoIWxzKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gbG9ja0tleShjb2xsZWN0aW9uKTtcbiAgICBjb25zdCBleGlzdGluZyA9IGxzLmdldEl0ZW0oa2V5KTtcbiAgICBpZiAoZXhpc3RpbmcgJiYgZXhpc3Rpbmcuc3RhcnRzV2l0aChob2xkZXJJZCArIFwiOlwiKSkgbHMucmVtb3ZlSXRlbShrZXkpO1xufVxuXG4vLyDilIDilIAgRmlsZS1iYXNlZCBsb2NrIChjcm9zcy1wcm9jZXNzIC8gc2hhcmVkIHN0b3JhZ2UpIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuY29uc3QgRklMRV9MT0NLX0tFWSA9IFwiLm1lcmdlLWxvY2tcIjtcbmNvbnN0IEZJTEVfTE9DS19UVExfTVMgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgRklMRV9MT0NLX1NFVFRMRV9NUyA9IDE1ICogMTAwMDtcbmNvbnN0IEZJTEVfTE9DS19IRUFSVEJFQVRfTVMgPSAyICogNjAgKiAxMDAwO1xuXG5hc3luYyBmdW5jdGlvbiByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlOiBGaWxlU3RvcmFnZSk6IFByb21pc2U8eyBob2xkZXJJZDogc3RyaW5nOyB0aW1lOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IGF3YWl0IHN0b3JhZ2UuZ2V0KEZJTEVfTE9DS19LRVkpO1xuICAgICAgICBpZiAoIWJ1ZikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHBhcnNlTG9ja1Rva2VuKGJ1Zi50b1N0cmluZyhcInV0ZjhcIikpO1xuICAgIH0gY2F0Y2ggeyByZXR1cm4gdW5kZWZpbmVkOyB9XG59XG5cbi8vIE5vbi1tdXRhdGluZyBsb29rIGF0IHRoZSBjcm9zcy1wcm9jZXNzIGxvY2sgZmlsZSAoc2VlIHBlZWtNZXJnZUxvY2spLlxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBlZWtNZXJnZUZpbGVMb2NrKHN0b3JhZ2U6IEZpbGVTdG9yYWdlKTogUHJvbWlzZTxNZXJnZUxvY2tJbmZvIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlKTtcbiAgICBpZiAoIWV4aXN0aW5nKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IGhvbGRlcklkOiBleGlzdGluZy5ob2xkZXJJZCwgZXhwaXJlc0luTXM6IGV4aXN0aW5nLnRpbWUgKyBGSUxFX0xPQ0tfVFRMX01TIC0gRGF0ZS5ub3coKSB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZU1lcmdlRmlsZUxvY2soc3RvcmFnZTogRmlsZVN0b3JhZ2UsIGhvbGRlcklkOiBzdHJpbmcsIHRpbWU6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN0b3JhZ2Uuc2V0KEZJTEVfTE9DS19LRVksIEJ1ZmZlci5mcm9tKGAke2hvbGRlcklkfToke3RpbWV9YCwgXCJ1dGY4XCIpIGFzIEJ1ZmZlcik7XG59XG5cbi8vIEFjcXVpcmUgdGhlIGNyb3NzLXByb2Nlc3MgZmlsZSBsb2NrLiBSZXNvbHZlcyB0byB0cnVlIE9OTFkgaWYsIGFmdGVyIHdyaXRpbmcgb3VyIElEIGFuZCB3YWl0aW5nXG4vLyBGSUxFX0xPQ0tfU0VUVExFX01TIGZvciBjb25jdXJyZW50IHdyaXRlcnMgdG8gc2V0dGxlLCB0aGUgZmlsZSBzdGlsbCBuYW1lcyB1cy4gQ2FsbGVyIG11c3Rcbi8vIHJlbGVhc2VNZXJnZUZpbGVMb2NrKCkgb24gdGhlIHNhbWUgc3RvcmFnZSArIGhvbGRlcklkIHdoZW4gZG9uZS5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlBY3F1aXJlTWVyZ2VGaWxlTG9jayhzdG9yYWdlOiBGaWxlU3RvcmFnZSwgaG9sZGVySWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlKTtcbiAgICBpZiAoZXhpc3RpbmcgJiYgZXhpc3RpbmcuaG9sZGVySWQgIT09IGhvbGRlcklkICYmIG5vdyAtIGV4aXN0aW5nLnRpbWUgPCBGSUxFX0xPQ0tfVFRMX01TKSByZXR1cm4gZmFsc2U7XG4gICAgYXdhaXQgd3JpdGVNZXJnZUZpbGVMb2NrKHN0b3JhZ2UsIGhvbGRlcklkLCBub3cpO1xuICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCBGSUxFX0xPQ0tfU0VUVExFX01TKSk7XG4gICAgY29uc3QgYWZ0ZXIgPSBhd2FpdCByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlKTtcbiAgICByZXR1cm4gISFhZnRlciAmJiBhZnRlci5ob2xkZXJJZCA9PT0gaG9sZGVySWQ7XG59XG5cbi8vIEtlZXAgdGhlIGxvY2sgZnJlc2guIFRoZSBtZXJnZSBtaWdodCBydW4gbG9uZ2VyIHRoYW4gRklMRV9MT0NLX1RUTF9NUzsgd2l0aG91dCBwZXJpb2RpYyByZS1zdGFtcGluZyxcbi8vIGFub3RoZXIgcHJvY2VzcyB3b3VsZCBzZWUgdGhlIGxvY2sgYXMgc3RhbGUgYW5kIGFjcXVpcmUgaXQuIFJldHVybnMgYSBzdG9wIGZ1bmN0aW9uIHRoZSBjYWxsZXIgY2FsbHNcbi8vIGluIGBmaW5hbGx5YC4gSGVhcnRiZWF0IGlzIGJlc3QtZWZmb3J0OiBhIGZhaWxlZCB3cml0ZSBpcyBsb2dnZWQgYnV0IG5vdCBwcm9wYWdhdGVkLlxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0TWVyZ2VGaWxlTG9ja0hlYXJ0YmVhdChzdG9yYWdlOiBGaWxlU3RvcmFnZSwgaG9sZGVySWQ6IHN0cmluZyk6ICgpID0+IHZvaWQge1xuICAgIGNvbnN0IGludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICB2b2lkIHdyaXRlTWVyZ2VGaWxlTG9jayhzdG9yYWdlLCBob2xkZXJJZCwgRGF0ZS5ub3coKSkuY2F0Y2goKCkgPT4geyAvKiBiZXN0LWVmZm9ydCAqLyB9KTtcbiAgICB9LCBGSUxFX0xPQ0tfSEVBUlRCRUFUX01TKTtcbiAgICAoaW50ZXJ2YWwgYXMgeyB1bnJlZj86ICgpID0+IHZvaWQgfSkudW5yZWY/LigpO1xuICAgIHJldHVybiAoKSA9PiBjbGVhckludGVydmFsKGludGVydmFsKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlbGVhc2VNZXJnZUZpbGVMb2NrKHN0b3JhZ2U6IEZpbGVTdG9yYWdlLCBob2xkZXJJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkTWVyZ2VGaWxlTG9jayhzdG9yYWdlKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nICYmIGV4aXN0aW5nLmhvbGRlcklkID09PSBob2xkZXJJZCkgYXdhaXQgc3RvcmFnZS5yZW1vdmUoRklMRV9MT0NLX0tFWSk7XG4gICAgfSBjYXRjaCB7IC8qIGlnbm9yZSAqLyB9XG59XG4iXX0=
149
- /* _JS_SOURCE_HASH = "2aac3ba2f7436a4c1d62546c0460b7653a910453df0d38de41be658805d69ee3"; */
149
+ /* _JS_SOURCE_HASH = "e7bec42cb036e4af660bca26523aae2328b1f1d898b944ddd3727256033a5b44"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  // Deletion markers: how a merge retires the input files it consumed WITHOUT deleting them inline.
3
3
  //
4
4
  // The old approach deleted consumed inputs on a 15-min timer. If the tab closed before the timer fired
@@ -98,4 +98,4 @@ async function processDeleteMarkers(name, storage, markers, allNames) {
98
98
  }
99
99
  exports.processDeleteMarkers = processDeleteMarkers;
100
100
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2VNYXJrZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWVyZ2VNYXJrZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxrR0FBa0c7QUFDbEcsRUFBRTtBQUNGLHVHQUF1RztBQUN2RyxxR0FBcUc7QUFDckcsa0dBQWtHO0FBQ2xHLG9HQUFvRztBQUNwRyxvRkFBb0Y7QUFDcEYsRUFBRTtBQUNGLHdHQUF3RztBQUN4RyxvQ0FBb0M7QUFDcEMsMkdBQTJHO0FBQzNHLDJHQUEyRztBQUMzRywwR0FBMEc7QUFDMUcseUdBQXlHO0FBQ3pHLDZHQUE2Rzs7O0FBRzdHLHdFQUF5RTtBQUV6RSxNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztBQUN4QyxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQVN0QyxTQUFnQixZQUFZLENBQUMsSUFBWTtJQUNyQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUZELG9DQUVDO0FBRU0sS0FBSyxVQUFVLGlCQUFpQixDQUFDLE9BQW9CLEVBQUUsTUFBdUQ7SUFDakgsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sSUFBSSxHQUFHLEdBQUcsYUFBYSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENB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Q2IsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRyxJQUFJLGNBQWMsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxlQUFlLEVBQUUsQ0FBQztZQUN4RCxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxlQUFlLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDakgsSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2hCLEtBQUssTUFBTSxDQUFDLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQztvQkFBQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQUMsQ0FBQztnQkFBQyxRQUFRLGtCQUFrQixJQUFwQixDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUM1RSxDQUFDO1lBQ0QsSUFBSSxPQUFPO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFBLGdCQUFJLEVBQUMsSUFBSSxDQUFDLElBQUksSUFBQSxtQkFBTyxFQUFDLFFBQVEsQ0FBQyxhQUFhLE9BQU8sK0JBQStCLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDN0gsQ0FBQztJQUNMLENBQUM7QUFDTCxDQUFDO0FBdEJELG9EQXNCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIERlbGV0aW9uIG1hcmtlcnM6IGhvdyBhIG1lcmdlIHJldGlyZXMgdGhlIGlucHV0IGZpbGVzIGl0IGNvbnN1bWVkIFdJVEhPVVQgZGVsZXRpbmcgdGhlbSBpbmxpbmUuXG4vL1xuLy8gVGhlIG9sZCBhcHByb2FjaCBkZWxldGVkIGNvbnN1bWVkIGlucHV0cyBvbiBhIDE1LW1pbiB0aW1lci4gSWYgdGhlIHRhYiBjbG9zZWQgYmVmb3JlIHRoZSB0aW1lciBmaXJlZFxuLy8gdGhlIGlucHV0cyBzdXJ2aXZlZCBBTkQgd2VyZSBzdGlsbCByZWFkIOKAlCBzbyB0aGUgbmV4dCBtZXJnZSByZS1tZXJnZWQgdGhlIHNhbWUgZHVwbGljYXRlcywgZm9yZXZlclxuLy8gKHRoZSBcIjE3MzkgZmlsZXMsIDE1NUdCLCA5OSUgZHVwbGljYXRlXCIgbG9vcCkuIE1hcmtlcnMgZml4IGJvdGggaGFsdmVzOiB0aGUgY29uc3VtZWQgaW5wdXRzIGFyZVxuLy8gRVhDTFVERUQgZnJvbSByZWFkcyB0aGUgbW9tZW50IHRoZSBtYXJrZXIgZXhpc3RzIChzbyB0aGV5J3JlIG5ldmVyIHJlLW1lcmdlZCksIGFuZCB0aGVpciBwaHlzaWNhbFxuLy8gZGVsZXRpb24gaXMgZHJpdmVuIG9mZiB0aGUgbWFya2VyIG9uIGEgbGF0ZXIgcmVhZCBpbnN0ZWFkIG9mIGFuIGluLXByb2Nlc3MgdGltZXIuXG4vL1xuLy8gQSBtYXJrZXIgbmFtZXMgdGhlIGlucHV0IGZpbGVzIGl0IHdhbnRzIGdvbmUgKGBkZWxldGVGaWxlc2ApIGFuZCB0aGUgb3V0cHV0IGZpbGVzIHRoYXQgc3VwZXJzZWRlIHRoZW1cbi8vIChgcmVwbGFjZWRCeWApLiBPbiBldmVyeSByZWFkIHdlOlxuLy8gICAxKSBleGNsdWRlIGV2ZXJ5IGBkZWxldGVGaWxlc2AgZW50cnkgZnJvbSB0aGUgYWN0aXZlIGZpbGUgc2V0ICh1bmNvbmRpdGlvbmFsbHkg4oCUIHRoYXQncyB0aGUgbG9vcCBmaXgpO1xuLy8gICAyKSBkZWxldGUgYSBtYXJrZXIncyBgZGVsZXRlRmlsZXNgIG9uY2UgaXRzIGByZXBsYWNlZEJ5YCBvdXRwdXRzIGFsbCBleGlzdCBPUiB0aGUgbWFya2VyIGlzIG9sZGVyIHRoYW5cbi8vICAgICAgdGhlIGdyYWNlIHdpbmRvdyAoYSBjcmFzaC1zYWZldHkgZmxvb3Igc28gYSBtYXJrZXIgd2hvc2Ugb3V0cHV0cyBuZXZlciBsYW5kZWQgc3RpbGwgZ2V0cyBjbGVhbmVkKTtcbi8vICAgMykgb25jZSBhIG1hcmtlcidzIGBkZWxldGVGaWxlc2AgYXJlIGFsbCBnb25lLCBhbmQgdGhlIG1hcmtlciBoYXMgYWdlZCBwYXN0IHRoZSBncmFjZSB3aW5kb3csIGRlbGV0ZVxuLy8gICAgICB0aGUgbWFya2VyIGl0c2VsZiAoa2VwdCBhcm91bmQgYnJpZWZseSBzbyBhIGNvbmN1cnJlbnQgcmVhZGVyIHN0aWxsIGV4Y2x1ZGVzIHRoZSBmaWxlcyBjb25zaXN0ZW50bHkpLlxuXG5pbXBvcnQgdHlwZSB7IEZpbGVTdG9yYWdlIH0gZnJvbSBcIi4uL0ZpbGVGb2xkZXJBUElcIjtcbmltcG9ydCB7IGJsdWUsIG1hZ2VudGEgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9mb3JtYXR0aW5nL2xvZ0NvbG9yc1wiO1xuXG5jb25zdCBNQVJLRVJfUFJFRklYID0gXCIuZGVsZXRlLW1hcmtlcl9cIjtcbmNvbnN0IE1BUktFUl9HUkFDRV9NUyA9IDUgKiA2MCAqIDEwMDA7XG5cbmV4cG9ydCB0eXBlIERlbGV0ZU1hcmtlciA9IHtcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xuICAgIGRlbGV0ZUZpbGVzOiBzdHJpbmdbXTtcbiAgICByZXBsYWNlZEJ5OiBzdHJpbmdbXTtcbiAgICB0aW1lOiBudW1iZXI7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNNYXJrZXJGaWxlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYW1lLnN0YXJ0c1dpdGgoTUFSS0VSX1BSRUZJWCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZURlbGV0ZU1hcmtlcihzdG9yYWdlOiBGaWxlU3RvcmFnZSwgY29uZmlnOiB7IGRlbGV0ZUZpbGVzOiBzdHJpbmdbXTsgcmVwbGFjZWRCeTogc3RyaW5nW10gfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRpbWUgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG5hbWUgPSBgJHtNQVJLRVJfUFJFRklYfSR7dGltZX1fJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCAxMCl9YDtcbiAgICBjb25zdCBib2R5ID0gSlNPTi5zdHJpbmdpZnkoeyBkZWxldGVGaWxlczogY29uZmlnLmRlbGV0ZUZpbGVzLCByZXBsYWNlZEJ5OiBjb25maWcucmVwbGFjZWRCeSwgdGltZSB9KTtcbiAgICBhd2FpdCBzdG9yYWdlLnNldChuYW1lLCBCdWZmZXIuZnJvbShib2R5LCBcInV0ZjhcIikgYXMgQnVmZmVyKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWREZWxldGVNYXJrZXJzKHN0b3JhZ2U6IEZpbGVTdG9yYWdlLCBhbGxOYW1lczogc3RyaW5nW10pOiBQcm9taXNlPERlbGV0ZU1hcmtlcltdPiB7XG4gICAgY29uc3QgbWFya2VyTmFtZXMgPSBhbGxOYW1lcy5maWx0ZXIoaXNNYXJrZXJGaWxlKTtcbiAgICBjb25zdCBtYXJrZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwobWFya2VyTmFtZXMubWFwKGFzeW5jIChmaWxlTmFtZSk6IFByb21pc2U8RGVsZXRlTWFya2VyIHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBidWYgPSBhd2FpdCBzdG9yYWdlLmdldChmaWxlTmFtZSk7XG4gICAgICAgICAgICBpZiAoIWJ1ZikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZCA9IEpTT04ucGFyc2UoYnVmLnRvU3RyaW5nKFwidXRmOFwiKSkgYXMgeyBkZWxldGVGaWxlcz86IHVua25vd247IHJlcGxhY2VkQnk/OiB1bmtub3duOyB0aW1lPzogdW5rbm93biB9O1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhcnNlZC5kZWxldGVGaWxlcykgfHwgIUFycmF5LmlzQXJyYXkocGFyc2VkLnJlcGxhY2VkQnkpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgICBkZWxldGVGaWxlczogcGFyc2VkLmRlbGV0ZUZpbGVzIGFzIHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgIHJlcGxhY2VkQnk6IHBhcnNlZC5yZXBsYWNlZEJ5IGFzIHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgIHRpbWU6IHR5cGVvZiBwYXJzZWQudGltZSA9PT0gXCJudW1iZXJcIiA/IHBhcnNlZC50aW1lIDogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICByZXR1cm4gbWFya2Vycy5maWx0ZXIoKG0pOiBtIGlzIERlbGV0ZU1hcmtlciA9PiAhIW0pO1xufVxuXG4vLyBUaGUgc2V0IG9mIGZpbGVzIHRoYXQgYW55IG1hcmtlciB3YW50cyBkZWxldGVkIOKAlCB0aGVzZSBtdXN0IGJlIGRyb3BwZWQgZnJvbSB0aGUgYWN0aXZlIHJlYWQgc2V0LlxuZXhwb3J0IGZ1bmN0aW9uIG1hcmtlckV4Y2x1c2lvbnMobWFya2VyczogRGVsZXRlTWFya2VyW10pOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29uc3QgZXhjbHVkZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IG0gb2YgbWFya2VycykgZm9yIChjb25zdCBuIG9mIG0uZGVsZXRlRmlsZXMpIGV4Y2x1ZGVkLmFkZChuKTtcbiAgICByZXR1cm4gZXhjbHVkZWQ7XG59XG5cbi8vIEFjdCBvbiBlYWNoIG1hcmtlciAoc2VlIGZpbGUgaGVhZGVyKS4gSWRlbXBvdGVudCBhbmQgYmVzdC1lZmZvcnQ6IGV2ZXJ5IHJlbW92YWwgaXMgZ3VhcmRlZCwgc28gdHdvXG4vLyBwcm9jZXNzZXMgKG9yIHR3byByZWFkcykgcnVubmluZyB0aGlzIGF0IG9uY2UganVzdCByYWNlIHRvIHRoZSBzYW1lIGFscmVhZHktY29ycmVjdCBlbmQgc3RhdGUuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0RlbGV0ZU1hcmtlcnMobmFtZTogc3RyaW5nLCBzdG9yYWdlOiBGaWxlU3RvcmFnZSwgbWFya2VyczogRGVsZXRlTWFya2VyW10sIGFsbE5hbWVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHByZXNlbnQgPSBuZXcgU2V0KGFsbE5hbWVzKTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGZvciAoY29uc3QgbWFya2VyIG9mIG1hcmtlcnMpIHtcbiAgICAgICAgY29uc3Qgc3RpbGxQcmVzZW50ID0gbWFya2VyLmRlbGV0ZUZpbGVzLmZpbHRlcihuID0+IHByZXNlbnQuaGFzKG4pKTtcbiAgICAgICAgaWYgKCFzdGlsbFByZXNlbnQubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBUaGUgZmlsZXMgdGhpcyBtYXJrZXIgcmV0aXJlZCBhcmUgZ29uZTsgb25jZSBpdCdzIGFnZWQgcGFzdCB0aGUgZ3JhY2Ugd2luZG93LCByZXRpcmUgdGhlIG1hcmtlciB0b28uXG4gICAgICAgICAgICBpZiAobm93IC0gbWFya2VyLnRpbWUgPiBNQVJLRVJfR1JBQ0VfTVMpIHtcbiAgICAgICAgICAgICAgICB0cnkgeyBhd2FpdCBzdG9yYWdlLnJlbW92ZShtYXJrZXIuZmlsZU5hbWUpOyB9IGNhdGNoIHsgLyogYWxyZWFkeSBnb25lICovIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkRXhpc3RzID0gbWFya2VyLnJlcGxhY2VkQnkubGVuZ3RoID4gMCAmJiBtYXJrZXIucmVwbGFjZWRCeS5ldmVyeShuID0+IHByZXNlbnQuaGFzKG4pKTtcbiAgICAgICAgaWYgKHJlcGxhY2VkRXhpc3RzIHx8IG5vdyAtIG1hcmtlci50aW1lID4gTUFSS0VSX0dSQUNFX01TKSB7XG4gICAgICAgICAgICBjb25zdCByZWFzb24gPSByZXBsYWNlZEV4aXN0cyA/IGByZXBsYWNlbWVudHMgbGFuZGVkYCA6IGBtYXJrZXIgYWdlZCAke01hdGgucm91bmQoKG5vdyAtIG1hcmtlci50aW1lKSAvIDEwMDApfXNgO1xuICAgICAgICAgICAgbGV0IGRlbGV0ZWQgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBuIG9mIHN0aWxsUHJlc2VudCkge1xuICAgICAgICAgICAgICAgIHRyeSB7IGF3YWl0IHN0b3JhZ2UucmVtb3ZlKG4pOyBkZWxldGVkKys7IH0gY2F0Y2ggeyAvKiBhbHJlYWR5IGdvbmUgKi8gfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlbGV0ZWQpIGNvbnNvbGUubG9nKGAke2JsdWUobmFtZSl9ICR7bWFnZW50YShcInJldGlyZVwiKX06IGRlbGV0ZWQgJHtkZWxldGVkfSBtZXJnZWQtYXdheSBpbnB1dCBmaWxlKHMpICgke3JlYXNvbn0pYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
101
- /* _JS_SOURCE_HASH = "77027f83d4d551a0568e2117f614c13ae4cac060aa7870e7357bbda2526ff717"; */
101
+ /* _JS_SOURCE_HASH = "336bbc6da44e336a5daa341af1dffe2b22768fff60ed4f0db6d036fdd3a61a23"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -224,4 +224,4 @@ function getStreamColumnIndex(keys, byKey, column) {
224
224
  // streamReaderFromEntries call produces a fresh map, so this is effectively per-reader).
225
225
  const columnIndexCache = new WeakMap();
226
226
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtTG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RyZWFtTG9nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUEyQjtBQUMzQiw2REFBd0k7QUFFeEkscUdBQXFHO0FBQ3JHLG9HQUFvRztBQUNwRyxFQUFFO0FBQ0YsMkRBQTJEO0FBQzNELEVBQUU7QUFDRix1R0FBdUc7QUFDdkcsbUdBQW1HO0FBQ25HLHNHQUFzRztBQUN0RyxvR0FBb0c7QUFDcEcsbUdBQW1HO0FBRXRGLFFBQUEsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0FBRTFDLE1BQU0sV0FBVyxHQUFHLElBQUksZ0JBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUlqRSxTQUFTLEtBQUssQ0FBQyxPQUFlO0lBQzFCLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQsdUdBQXVHO0FBQ3ZHLHlHQUF5RztBQUN6RyxxR0FBcUc7QUFDckcsZ0dBQWdHO0FBRWhHLHFHQUFxRztBQUNyRyxpR0FBaUc7QUFDakcsU0FBZ0IsU0FBUyxDQUFDLE9BQXlEO0lBQy9FLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FB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RyxHQUFnQjtRQUNyQixPQUFPO1FBQ1AsS0FBSztRQUNMLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU07WUFDakMsSUFBSSxNQUFNLElBQUksUUFBUTtnQkFBRSxPQUFPLGlDQUFZLENBQUM7WUFDNUMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QixJQUFJLEdBQUcsSUFBSSxLQUFLO2dCQUFFLE9BQU8saUNBQVksQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7S0FDSixDQUFDO0lBQ0YsSUFBSSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUFDLENBQUM7SUFDbEYsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0IsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBRUQsMEZBQTBGO0FBQzFGLHlGQUF5RjtBQUN6RixNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFrRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNib3J4IGZyb20gXCJjYm9yLXhcIjtcbmltcG9ydCB7IEFCU0VOVCwgQmFzZUJ1bGtEYXRhYmFzZVJlYWRlciwgQ29sdW1uSW5kZXgsIEVNUFRZX0JVRkZFUiwgZW5jb2RlVmFsdWUsIFJhd0NlbGwsIFRZUEVfQUJTRU5UX1RBRyB9IGZyb20gXCIuL0J1bGtEYXRhYmFzZUZvcm1hdFwiO1xuXG4vLyBUaWVyLTAgc3RyZWFtaW5nIGZvcm1hdDogYW4gYXBwZW5kIGxvZyBvZiB3aG9sZS1yb3cgd3JpdGVzIGFuZCBkZWxldGVzIChyb3ctZm9ybWF0LCBub3QgY29sdW1uYXIpLFxuLy8gc28gc21hbGwgbXV0YXRpb25zIGFyZSBhIHNpbmdsZSBjaGVhcCBhcHBlbmQgaW5zdGVhZCBvZiByZXdyaXRpbmcgYSBjb2x1bW5hciBmaWxlLiBFYWNoIGJsb2NrIGlzOlxuLy9cbi8vICAgW3UzMiBsZW5dW0NCT1IoeyB0LCB2IH0pICBvciAgQ0JPUih7IHQsIGQgfSldW3UzMiBsZW5dXG4vL1xuLy8gYHRgIGlzIGEgcGVyLXdyaXRlIHVuaXF1ZSB0aW1lc3RhbXAgKGdldFRpbWVVbmlxdWUpOyBgdmAgaXMgYSBzZXQgcm93OyBgZGAgaXMgYSBkZWxldGVkIGtleS4gQmVjYXVzZVxuLy8gZXZlcnkgdGhyZWFkIHN0cmVhbXMgdG8gaXRzIG93biBmaWxlLCB0aGUgb25seSB3YXkgdG8gcmVjb3ZlciB0aGUgZ2xvYmFsIG11dGF0aW9uIG9yZGVyIOKAlCBuZWVkZWRcbi8vIGZvciBuZXdlc3Qtd2lucyDigJQgaXMgYSBwZXItd3JpdGUgdGltZXN0YW1wLCB3aXRoIHRpZXMgYnJva2VuIGJ5IGZpbGUgbmFtZS4gVGhlIHRyYWlsaW5nIGxlbmd0aCBtdXN0XG4vLyBtYXRjaCB0aGUgbGVhZGluZyBvbmU7IGEgdG9ybi9pbmNvbXBsZXRlIGFwcGVuZCBsZWF2ZXMgYSBtaXNtYXRjaGVkIG9yIG1pc3Npbmcgc3VmZml4LCBzbyB3ZSBzdG9wXG4vLyB0aGVyZSBhbmQgcmVwb3J0IHRyYWlsaW5nIGJhZCBieXRlcyBpbnN0ZWFkIG9mIHRocm93aW5nLiBzdHJ1Y3R1cmVkQ2xvbmUgcHJlc2VydmVzIHR5cGVkIGFycmF5cy5cblxuZXhwb3J0IGNvbnN0IFNUUkVBTV9FWFRFTlNJT04gPSBcIi5zdHJlYW1cIjtcblxuY29uc3QgY2JvckVuY29kZXIgPSBuZXcgY2JvcnguRW5jb2Rlcih7IHN0cnVjdHVyZWRDbG9uZTogdHJ1ZSB9KTtcblxuZXhwb3J0IHR5cGUgU3RyZWFtRW50cnkgPSB7IHRpbWU6IG51bWJlcjsgcm93PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IGRlbGV0ZWRLZXk/OiBzdHJpbmcgfTtcblxuZnVuY3Rpb24gZnJhbWUocGF5bG9hZDogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBsZXQgbGVuID0gQnVmZmVyLmFsbG9jKDQpO1xuICAgIGxlbi53cml0ZVVJbnQzMkxFKHBheWxvYWQubGVuZ3RoLCAwKTtcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbbGVuLCBwYXlsb2FkLCBsZW5dKTtcbn1cblxuLy8gRnJhbWluZyBvbmx5IOKAlCBubyBiYXRjaGluZyBoZXJlLiBCdWxrRGF0YWJhc2UyIGNvYWxlc2NlcyBhbmQgZmx1c2hlcyB0aGVzZSBmcmFtZWQgYnl0ZXMgb24gYSByYW1waW5nXG4vLyBwZXItY29sbGVjdGlvbiBzY2hlZHVsZSAoc2VlIHN0cmVhbUFwcGVuZCBpbiBCdWxrRGF0YWJhc2VCYXNlKSwgYmVjYXVzZSB0aGUgYnJvd3NlciBGaWxlIFN5c3RlbSBBY2Nlc3Ncbi8vIEFQSSByZXdyaXRlcyB0aGUgd2hvbGUgZmlsZSBvbiBldmVyeSBhcHBlbmQsIHNvIG9uZS1hcHBlbmQtcGVyLXdyaXRlIGlzIHF1YWRyYXRpYy4gVGhlIGZpcnN0IHdyaXRlXG4vLyBhZnRlciBhIGx1bGwgc3RpbGwgZmx1c2hlcyBpbW1lZGlhdGVseSwgc28gYSBzaW5nbGUgYWN0aW9uIHRoZW4gYSB0YWIgY2xvc2UgaXMgc2F2ZWQgYXQgb25jZS5cblxuLy8gVGltZXMgYXJlIGFzc2lnbmVkIGJ5IHRoZSBjYWxsZXIgKEJ1bGtEYXRhYmFzZTIpIHNvIHRoZSBleGFjdCBzYW1lIHRpbWVzdGFtcCBsYW5kcyBvbiBkaXNrLCBpbiB0aGVcbi8vIGluLW1lbW9yeSBvdmVybGF5LCBhbmQgaW4gdGhlIGNyb3NzLXRhYiBicm9hZGNhc3Qg4oCUIGtlZXBpbmcgdGhlIGdsb2JhbCB3cml0ZSBvcmRlciBjb25zaXN0ZW50LlxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lUm93cyhlbnRyaWVzOiB7IHRpbWU6IG51bWJlcjsgcm93OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9W10pOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KGVudHJpZXMubWFwKGUgPT4gZnJhbWUoQnVmZmVyLmZyb20oY2JvckVuY29kZXIuZW5jb2RlKHsgdDogZS50aW1lLCB2OiBlLnJvdyB9KSkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZURlbGV0ZXMoZW50cmllczogeyB0aW1lOiBudW1iZXI7IGtleTogc3RyaW5nIH1bXSk6IEJ1ZmZlciB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoZW50cmllcy5tYXAoZSA9PiBmcmFtZShCdWZmZXIuZnJvbShjYm9yRW5jb2Rlci5lbmNvZGUoeyB0OiBlLnRpbWUsIGQ6IGUua2V5IH0pKSkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RyZWFtKGJ1ZmZlcjogQnVmZmVyKTogeyBlbnRyaWVzOiBTdHJlYW1FbnRyeVtdOyBiYWRCeXRlczogbnVtYmVyIH0ge1xuICAgIGxldCBlbnRyaWVzOiBTdHJlYW1FbnRyeVtdID0gW107XG4gICAgbGV0IHBvcyA9IDA7XG4gICAgd2hpbGUgKHBvcyArIDQgPD0gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICBsZXQgbGVuID0gYnVmZmVyLnJlYWRVSW50MzJMRShwb3MpO1xuICAgICAgICBsZXQgcGF5bG9hZFN0YXJ0ID0gcG9zICsgNDtcbiAgICAgICAgbGV0IHN1ZmZpeFN0YXJ0ID0gcGF5bG9hZFN0YXJ0ICsgbGVuO1xuICAgICAgICBpZiAoc3VmZml4U3RhcnQgKyA0ID4gYnVmZmVyLmxlbmd0aCkgYnJlYWs7XG4gICAgICAgIGlmIChidWZmZXIucmVhZFVJbnQzMkxFKHN1ZmZpeFN0YXJ0KSAhPT0gbGVuKSBicmVhaztcbiAgICAgICAgbGV0IGRlY29kZWQ6IHsgdDogbnVtYmVyOyB2PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47IGQ/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRlY29kZWQgPSBjYm9yRW5jb2Rlci5kZWNvZGUoYnVmZmVyLnN1YmFycmF5KHBheWxvYWRTdGFydCwgc3VmZml4U3RhcnQpKTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVjb2RlZCAmJiBkZWNvZGVkLmQgIT09IHVuZGVmaW5lZCkgZW50cmllcy5wdXNoKHsgdGltZTogZGVjb2RlZC50LCBkZWxldGVkS2V5OiBkZWNvZGVkLmQgfSk7XG4gICAgICAgIGVsc2UgaWYgKGRlY29kZWQgJiYgZGVjb2RlZC52KSBlbnRyaWVzLnB1c2goeyB0aW1lOiBkZWNvZGVkLnQsIHJvdzogZGVjb2RlZC52IH0pO1xuICAgICAgICBwb3MgPSBzdWZmaXhTdGFydCArIDQ7XG4gICAgfVxuICAgIHJldHVybiB7IGVudHJpZXMsIGJhZEJ5dGVzOiBidWZmZXIubGVuZ3RoIC0gcG9zIH07XG59XG5cbi8vIFdyYXBzIHN0cmVhbWVkIGVudHJpZXMgKGFscmVhZHkgb3JkZXJlZCBvbGRlc3QtZmlyc3QpIGFzIGEgQmFzZUJ1bGtEYXRhYmFzZVJlYWRlci4gRWFjaCBzZXQgTUVSR0VTXG4vLyBpdHMgZmllbGRzIG9udG8gdGhlIGtleSdzIGN1cnJlbnQgcm93IChzbyBhIHBhcnRpYWwgd3JpdGUvdXBkYXRlIG9ubHkgY2hhbmdlcyB0aGUgY29sdW1ucyBpdFxuLy8gaW5jbHVkZXMpOyBhIGRlbGV0ZSB0b21ic3RvbmVzIHRoZSBrZXkgKGV4cG9zZWQgdmlhIGRlbGV0ZWRLZXlzIHNvIHRoZSBqb2luIHN1cHByZXNzZXMgaXQgaW4gb2xkZXJcbi8vIGJ1bGsgcmVhZGVycykgYW5kIHJlc2V0cyB0aGUgbWVyZ2UuIEEgY29sdW1uIHRoZSBtZXJnZWQgcm93IG5ldmVyIHNldCByZWFkcyBhcyBBQlNFTlQsIHNvIHRoZSBqb2luXG4vLyBmYWxscyB0aHJvdWdoIHRvIG9sZGVyIHJlYWRlcnMgZm9yIGl0LiBBbHNvIHJldHVybnMgdGhlIGxhdGVzdCB0aW1lc3RhbXAgc2VlbiBwZXIga2V5IChsaXZlIG9yXG4vLyBkZWxldGVkKSwgdXNlZCBmb3IgY3Jvc3MtdGFiIGNvbmZsaWN0IHJlc29sdXRpb24uXG5leHBvcnQgZnVuY3Rpb24gc3RyZWFtUmVhZGVyRnJvbUVudHJpZXMoZW50cmllczogU3RyZWFtRW50cnlbXSwgdG90YWxCeXRlczogbnVtYmVyKTogeyByZWFkZXI6IEJhc2VCdWxrRGF0YWJhc2VSZWFkZXI7IHRpbWVzOiBNYXA8c3RyaW5nLCBudW1iZXI+IH0ge1xuICAgIGxldCBieUtleSA9IG5ldyBNYXA8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oKTtcbiAgICBsZXQgZGVsZXRlZEtleXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBsZXQgdGltZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIGZvciAobGV0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgaWYgKGVudHJ5LmRlbGV0ZWRLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYnlLZXkuZGVsZXRlKGVudHJ5LmRlbGV0ZWRLZXkpO1xuICAgICAgICAgICAgZGVsZXRlZEtleXMuYWRkKGVudHJ5LmRlbGV0ZWRLZXkpO1xuICAgICAgICAgICAgdGltZXMuc2V0KGVudHJ5LmRlbGV0ZWRLZXksIGVudHJ5LnRpbWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGVudHJ5LnJvdykge1xuICAgICAgICAgICAgbGV0IGtleSA9IGVudHJ5LnJvdy5rZXkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgYnlLZXkuc2V0KGtleSwgeyAuLi5ieUtleS5nZXQoa2V5KSwgLi4uZW50cnkucm93IH0pO1xuICAgICAgICAgICAgZGVsZXRlZEtleXMuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICB0aW1lcy5zZXQoa2V5LCBlbnRyeS50aW1lKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQga2V5cyA9IFsuLi5ieUtleS5rZXlzKCldO1xuICAgIGxldCBjb2x1bW5OYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGZvciAobGV0IHJvdyBvZiBieUtleS52YWx1ZXMoKSkge1xuICAgICAgICBmb3IgKGxldCBmaWVsZCBvZiBPYmplY3Qua2V5cyhyb3cpKSB7XG4gICAgICAgICAgICBpZiAoc2Vlbi5oYXMoZmllbGQpKSBjb250aW51ZTtcbiAgICAgICAgICAgIHNlZW4uYWRkKGZpZWxkKTtcbiAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2goZmllbGQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGxldCBjb2x1bW5zID0gY29sdW1uTmFtZXMubWFwKGNvbHVtbiA9PiAoeyBjb2x1bW4sIGJ5dGVTaXplOiAwIH0pKTtcbiAgICAvLyBQZXIta2V5IHRvbWJzdG9uZSB0aW1lcyBmb3IgdGhlIGpvaW4ncyBkZWxldGUgcmVzb2x1dGlvbi5cbiAgICBsZXQgZGVsZXRlVGltZXMgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIGZvciAobGV0IGtleSBvZiBkZWxldGVkS2V5cykgZGVsZXRlVGltZXMuc2V0KGtleSwgdGltZXMuZ2V0KGtleSkgfHwgMCk7XG4gICAgLy8gSXRlcmF0ZSB0byBmaW5kIG1pbi9tYXgg4oCUIE5PVCBNYXRoLm1pbiguLi50aW1lcykvTWF0aC5tYXgoLi4udGltZXMpOiBzcHJlYWRpbmcgYSBsYXJnZSBhcnJheSBhcyBjYWxsXG4gICAgLy8gYXJndW1lbnRzIG92ZXJmbG93cyB0aGUgc3RhY2sgKFwiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIikgb25jZSBhIHN0cmVhbSBoYXMgbWFueSBrZXlzLlxuICAgIGxldCBtaW5UaW1lID0gSW5maW5pdHksIG1heFRpbWUgPSAtSW5maW5pdHk7XG4gICAgZm9yIChsZXQgdCBvZiB0aW1lcy52YWx1ZXMoKSkge1xuICAgICAgICBpZiAodCA8IG1pblRpbWUpIG1pblRpbWUgPSB0O1xuICAgICAgICBpZiAodCA+IG1heFRpbWUpIG1heFRpbWUgPSB0O1xuICAgIH1cbiAgICBjb25zdCBrZXlJbmRleE1hcCA9IGJ1aWxkS2V5SW5kZXgoa2V5cyk7XG4gICAgbGV0IHJlYWRlcjogQmFzZUJ1bGtEYXRhYmFzZVJlYWRlciA9IHtcbiAgICAgICAgbmFtZTogXCIoc3RyZWFtcylcIixcbiAgICAgICAgdG90YWxCeXRlcyxcbiAgICAgICAgcm93Q291bnQ6IGtleXMubGVuZ3RoLFxuICAgICAgICBtaW5UaW1lOiB0aW1lcy5zaXplID8gbWluVGltZSA6IDAsXG4gICAgICAgIG1heFRpbWU6IHRpbWVzLnNpemUgPyBtYXhUaW1lIDogMCxcbiAgICAgICAga2V5cyxcbiAgICAgICAga2V5VGltZXM6IG5ldyBNYXAoa2V5cy5tYXAoa2V5ID0+IFtrZXksIHRpbWVzLmdldChrZXkpIHx8IDBdKSksXG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIGRlbGV0ZVRpbWVzLFxuICAgICAgICAvLyBBIGtleSdzIHRpbWUgaXMgaXRzIGxhdGVzdCB3cml0ZSBhY3Jvc3MgYWxsIGNvbHVtbnMgKHBlci1rZXksIG5vdCBwZXItY29sdW1uKS4gRm9yIGEgY29sdW1uXG4gICAgICAgIC8vIGl0IG5ldmVyIHNldCB3ZSByZXR1cm4gQUJTRU5UIHNvIHRoZSBqb2luIGZhbGxzIHRocm91Z2ggdG8gYW4gb2xkZXIgcmVhZGVyLlxuICAgICAgICBhc3luYyBnZXRDb2x1bW4oY29sdW1uKSB7XG4gICAgICAgICAgICByZXR1cm4ga2V5cy5tYXAoa2V5ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgcm93ID0gYnlLZXkuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsga2V5LCB2YWx1ZTogcm93ICYmIGNvbHVtbiBpbiByb3cgPyByb3dbY29sdW1uXSA6IEFCU0VOVCwgdGltZTogdGltZXMuZ2V0KGtleSkgfHwgMCB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIGdldFNpbmdsZUZpZWxkKGtleSwgY29sdW1uKSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gYnlLZXkuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoIXJvdyB8fCAhKGNvbHVtbiBpbiByb3cpKSByZXR1cm4gQUJTRU5UO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHJvd1tjb2x1bW5dLCB0aW1lOiB0aW1lcy5nZXQoa2V5KSB8fCAwIH07XG4gICAgICAgIH0sXG4gICAgICAgIC8vIFN0cmVhbSB2YWx1ZXMgYXJlIGRlY29kZWQgb2JqZWN0cyAoQ0JPUiksIHNvIHVubGlrZSBhIGJ1bGsgZmlsZSB3ZSBoYXZlIHRvIGVuY29kZSB0aGVtIHRvIHJhd1xuICAgICAgICAvLyBjZWxscyBoZXJlLiBTdHJlYW0gZGF0YSBpcyBzbWFsbCAodGllci0wLCBzaXplLWNhcHBlZCksIHNvIHRoaXMgaXMgY2hlYXAuIEEgY29sdW1uIHRoZSByb3cgbmV2ZXJcbiAgICAgICAgLy8gc2V0IGlzIG9taXR0ZWQgKEFCU0VOVCDihpIgZmFsbCB0aHJvdWdoKTsgYSBzdG9yZWQgdW5kZWZpbmVkIGlzIGtlcHQgKGEgcmVhbCBjbGVhcikuXG4gICAgICAgIGFzeW5jIGdldFJhd0NvbHVtbihjb2x1bW4pIHtcbiAgICAgICAgICAgIGxldCBtYXAgPSBuZXcgTWFwPHN0cmluZywgUmF3Q2VsbD4oKTtcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgICAgICAgbGV0IHJvdyA9IGJ5S2V5LmdldChrZXkpO1xuICAgICAgICAgICAgICAgIGlmICghcm93IHx8ICEoY29sdW1uIGluIHJvdykpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIG1hcC5zZXQoa2V5LCBlbmNvZGVWYWx1ZShyb3dbY29sdW1uXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gUGVyLWNvbHVtbiBpbmRleCBpbiB0aGUgc2FtZSBzaGFwZSBhIGJ1bGsgZmlsZSBleHBvc2VzLCBtYXRlcmlhbGl6ZWQgaW4gbWVtb3J5IG9uY2UgKHN0cmVhbSBkYXRhXG4gICAgICAgIC8vIGlzIHRpZXItMCwgc2l6ZS1jYXBwZWQsIHNvIHRoZSBlbmNvZGUgaXMgY2hlYXApLiBMZXRzIHRoZSBwbGFubmVkIG1lcmdlIHRyZWF0IHN0cmVhbSArIGJ1bGtcbiAgICAgICAgLy8gc291cmNlcyB1bmlmb3JtbHk6IGl0IGxvYWRzIGVhY2ggKHNvdXJjZSwgY29sdW1uKSBpbmRleCwgdXNlcyBvZmZzZXRzL3R5cGVzIHRvIHBsYW4gdGhlIG91dHB1dCdzXG4gICAgICAgIC8vIGJ5dGUgbGF5b3V0LCBhbmQgcmVhZHMgY29udGlndW91cyBydW5zIGZyb20gdGhpcyBpbmRleCdzIGluLW1lbW9yeSBkYXRhIGJ1ZmZlciBkdXJpbmcgZXhlY3V0ZS5cbiAgICAgICAgYXN5bmMgZ2V0Q29sdW1uSW5kZXgoY29sdW1uKSB7XG4gICAgICAgICAgICByZXR1cm4gZ2V0U3RyZWFtQ29sdW1uSW5kZXgoa2V5cywgYnlLZXksIGNvbHVtbik7XG4gICAgICAgIH0sXG4gICAgICAgIHJvd09mS2V5KGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIGtleUluZGV4TWFwLmdldChrZXkpO1xuICAgICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIHsgcmVhZGVyLCB0aW1lcyB9O1xufVxuXG4vLyBrZXlzW10gaXMgdGhlIGNvbHVtbi1zaWRlIHJvdyBvcmRlciBmb3IgdGhpcyBzdHJlYW0gcmVhZGVyOyByb3dPZktleSBpcyB1c2VkIGJ5IHRoZSBwbGFubmVyIHRvIGxvb2sgdXBcbi8vIGEgd2lubmluZyBjZWxsJ3Mgc291cmNlIHJvdyB3aXRob3V0IGdvaW5nIHRocm91Z2ggYSBjb2x1bW4gcmVhZC4gU3RheXMgY29uc2lzdGVudCB3aXRoIGdldENvbHVtbkluZGV4LFxuLy8gd2hpY2ggYnVpbGRzIGl0cyBvZmZzZXRzL3R5cGVzIG92ZXIgdGhlIHNhbWUgYGtleXNgIGFycmF5IGluIHRoZSBzYW1lIG9yZGVyLlxuZnVuY3Rpb24gYnVpbGRLZXlJbmRleChrZXlzOiBzdHJpbmdbXSk6IE1hcDxzdHJpbmcsIG51bWJlcj4ge1xuICAgIGNvbnN0IG0gPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgbS5zZXQoa2V5c1tpXSwgaSk7XG4gICAgcmV0dXJuIG07XG59XG5cbi8vIEJ1aWxkIGEgc3RyZWFtLXNpZGUgQ29sdW1uSW5kZXggKG9mZnNldHMgKyB0eXBlcyArIGEgY29udGlndW91cy1yb3cgYnl0ZSBzbGljZXIpIG92ZXIgdGhlIGluLW1lbW9yeVxuLy8gbWVyZ2VkIHJvd3MuIEVuY29kZXMgZWFjaCByb3cncyB2YWx1ZSBmb3IgdGhpcyBjb2x1bW4gb25jZSBpbnRvIGEgc2luZ2xlIGJhY2tpbmcgYnVmZmVyOyByZWFkVmFsdWVCeXRlc1xuLy8gdGhlbiBzbGljZXMgaXQuIENhY2hlZCBwZXIgKHJlYWRlciwgY29sdW1uKSBzbyBhIG1lcmdlIHBsYW5uaW5nICsgZXhlY3V0aW9uIHBhc3MgZG9lc24ndCByZS1lbmNvZGUuXG5mdW5jdGlvbiBnZXRTdHJlYW1Db2x1bW5JbmRleChrZXlzOiBzdHJpbmdbXSwgYnlLZXk6IE1hcDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiwgY29sdW1uOiBzdHJpbmcpOiBDb2x1bW5JbmRleCB7XG4gICAgbGV0IGNhY2hlZCA9IGNvbHVtbkluZGV4Q2FjaGUuZ2V0KGJ5S2V5KT8uZ2V0KGNvbHVtbik7XG4gICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgICBjb25zdCBvZmZzZXRzID0gbmV3IFVpbnQzMkFycmF5KGtleXMubGVuZ3RoICsgMSk7XG4gICAgY29uc3QgdHlwZXMgPSBuZXcgVWludDhBcnJheShrZXlzLmxlbmd0aCk7XG4gICAgY29uc3QgcGFydHM6IEJ1ZmZlcltdID0gW107XG4gICAgbGV0IHBvcyA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IGJ5S2V5LmdldChrZXlzW2ldKTtcbiAgICAgICAgb2Zmc2V0c1tpXSA9IHBvcztcbiAgICAgICAgaWYgKCFyb3cgfHwgIShjb2x1bW4gaW4gcm93KSkge1xuICAgICAgICAgICAgdHlwZXNbaV0gPSBUWVBFX0FCU0VOVF9UQUc7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IHR5cGUsIGJ5dGVzIH0gPSBlbmNvZGVWYWx1ZShyb3dbY29sdW1uXSk7XG4gICAgICAgIHR5cGVzW2ldID0gdHlwZTtcbiAgICAgICAgcGFydHMucHVzaChieXRlcyk7XG4gICAgICAgIHBvcyArPSBieXRlcy5sZW5ndGg7XG4gICAgfVxuICAgIG9mZnNldHNba2V5cy5sZW5ndGhdID0gcG9zO1xuICAgIGNvbnN0IGRhdGEgPSBwYXJ0cy5sZW5ndGggPyBCdWZmZXIuY29uY2F0KHBhcnRzKSA6IEVNUFRZX0JVRkZFUjtcbiAgICBjb25zdCBpZHg6IENvbHVtbkluZGV4ID0ge1xuICAgICAgICBvZmZzZXRzLFxuICAgICAgICB0eXBlcyxcbiAgICAgICAgYXN5bmMgcmVhZFZhbHVlQnl0ZXMoc3RhcnRSb3csIGVuZFJvdykge1xuICAgICAgICAgICAgaWYgKGVuZFJvdyA8PSBzdGFydFJvdykgcmV0dXJuIEVNUFRZX0JVRkZFUjtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gb2Zmc2V0c1tzdGFydFJvd107XG4gICAgICAgICAgICBjb25zdCBlbmQgPSBvZmZzZXRzW2VuZFJvd107XG4gICAgICAgICAgICBpZiAoZW5kIDw9IHN0YXJ0KSByZXR1cm4gRU1QVFlfQlVGRkVSO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEuc3ViYXJyYXkoc3RhcnQsIGVuZCk7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBsZXQgcGVyUmVhZGVyID0gY29sdW1uSW5kZXhDYWNoZS5nZXQoYnlLZXkpO1xuICAgIGlmICghcGVyUmVhZGVyKSB7IHBlclJlYWRlciA9IG5ldyBNYXAoKTsgY29sdW1uSW5kZXhDYWNoZS5zZXQoYnlLZXksIHBlclJlYWRlcik7IH1cbiAgICBwZXJSZWFkZXIuc2V0KGNvbHVtbiwgaWR4KTtcbiAgICByZXR1cm4gaWR4O1xufVxuXG4vLyBQZXIgc3RyZWFtLXJlYWRlciBjYWNoZSBvZiBpdHMgY29sdW1uIGluZGV4ZXMuIEtleWVkIGJ5IHRoZSByZWFkZXIncyBieUtleSBtYXAgKGEgZnJlc2hcbi8vIHN0cmVhbVJlYWRlckZyb21FbnRyaWVzIGNhbGwgcHJvZHVjZXMgYSBmcmVzaCBtYXAsIHNvIHRoaXMgaXMgZWZmZWN0aXZlbHkgcGVyLXJlYWRlcikuXG5jb25zdCBjb2x1bW5JbmRleENhY2hlID0gbmV3IFdlYWtNYXA8TWFwPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+LCBNYXA8c3RyaW5nLCBDb2x1bW5JbmRleD4+KCk7XG4iXX0=
227
- /* _JS_SOURCE_HASH = "08eaba4c0c9769af93ebb263b95b81e1794078b5b393f952ec461f32722944e8"; */
227
+ /* _JS_SOURCE_HASH = "a4fc6391ae0f33bd7c9a4b190f34d4131f9dfca04c5875e59da795f032c4c8c0"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  // Browser-side cross-tab write sync for BulkDatabase2, over BroadcastChannel (one channel per
3
3
  // collection, same-origin tabs and workers). It does NOT persist anything — each side writes to disk
4
4
  // itself; this just relays live writes to other open tabs/workers and, when one starts up, asks peers
@@ -101,4 +101,4 @@ function broadcastSeal(collection) {
101
101
  }
102
102
  exports.broadcastSeal = broadcastSeal;
103
103
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luY0NsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN5bmNDbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDhGQUE4RjtBQUM5RixxR0FBcUc7QUFDckcsc0dBQXNHO0FBQ3RHLHNGQUFzRjtBQUN0RiwrRkFBK0Y7QUFDL0YsNkNBQTZDOzs7QUFJN0MsaUdBQWlHO0FBQ2pHLHNGQUFzRjtBQUN0RixNQUFNLGdCQUFnQixHQUFHLEtBQU0sQ0FBQztBQVdoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQUU1QyxTQUFnQixlQUFlO0lBQzNCLCtGQUErRjtJQUMvRix5RkFBeUY7SUFDekYsSUFBSSxpQkFBaUIsR0FBRyxPQUFPLE1BQU0sS0FBSyxXQUFXO1dBQzlDLG1CQUFtQixJQUFJLFVBQVUsQ0FBQztJQUN6QyxPQUFPLGlCQUFpQixJQUFJLE9BQU8sZ0JBQWdCLEtBQUssV0FBVyxDQUFDO0FBQ3hFLENBQUM7QUFORCwwQ0FNQztBQUVELFNBQVMsV0FBVyxDQUFDLE9BQWdCO0lBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQztJQUM3QyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsT0FBZ0IsRUFBRSxLQUFrQjtJQUNqRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXO1FBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFFRCxTQUFTLE1BQU0sQ0FBQyxVQUFrQjtJQUM5QixJQUFJLENBQUMsZUFBZSxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDekMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdB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QUFPLENBQUMsQ0FBQztJQUNyQixPQUFPLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBTkQsOEJBTUM7QUFFRCxzR0FBc0c7QUFDdEcsdUdBQXVHO0FBQ3ZHLG9HQUFvRztBQUNwRyxzRUFBc0U7QUFDdEUsU0FBZ0IsYUFBYSxDQUFDLFVBQWtCO0lBQzVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxJQUFJLENBQUMsT0FBTztRQUFFLE9BQU87SUFDckIsT0FBTyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBSkQsc0NBSUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCcm93c2VyLXNpZGUgY3Jvc3MtdGFiIHdyaXRlIHN5bmMgZm9yIEJ1bGtEYXRhYmFzZTIsIG92ZXIgQnJvYWRjYXN0Q2hhbm5lbCAob25lIGNoYW5uZWwgcGVyXG4vLyBjb2xsZWN0aW9uLCBzYW1lLW9yaWdpbiB0YWJzIGFuZCB3b3JrZXJzKS4gSXQgZG9lcyBOT1QgcGVyc2lzdCBhbnl0aGluZyDigJQgZWFjaCBzaWRlIHdyaXRlcyB0byBkaXNrXG4vLyBpdHNlbGY7IHRoaXMganVzdCByZWxheXMgbGl2ZSB3cml0ZXMgdG8gb3RoZXIgb3BlbiB0YWJzL3dvcmtlcnMgYW5kLCB3aGVuIG9uZSBzdGFydHMgdXAsIGFza3MgcGVlcnNcbi8vIGZvciB3cml0ZXMgdGhleSd2ZSBtYWRlIHJlY2VudGx5IHRoYXQgbWF5IG5vdCBiZSBvbiBkaXNrIHlldC4gTm8tb3AgaW4gTm9kZSAvIHdoZXJlXG4vLyBCcm9hZGNhc3RDaGFubmVsIGlzIHVuYXZhaWxhYmxlLCBzbyBCdWxrRGF0YWJhc2UyIGNhbiBjYWxsIHRoZXNlIHVuY29uZGl0aW9uYWxseS4gVGhpcyBpcyBhblxuLy8gb3B0aW9uYWwgZmVhdHVyZSwgc28gdGhlcmUgaXMgbm8gZmFsbGJhY2suXG5cbmV4cG9ydCB0eXBlIFJlbW90ZVdyaXRlID0geyBrZXk6IHN0cmluZzsgdGltZTogbnVtYmVyOyBkZWxldGVkPzogYm9vbGVhbjsgdmFsdWU/OiB1bmtub3duIH07XG5cbi8vIFdyaXRlcyBvbGRlciB0aGFuIHRoaXMgYXJlIGFzc3VtZWQgYWxyZWFkeSBmbHVzaGVkIHRvIGRpc2sgKGEgZnJlc2hseS1vcGVuZWQgdGFiIGdldHMgdGhvc2UgYnlcbi8vIHJlYWRpbmcgZGlzayksIHNvIGEgdGFiIG9ubHkgcmVwbGF5cyB3cml0ZXMgbmV3ZXIgdGhhbiB0aGlzIHdoZW4gYSBwZWVyIHNheXMgaGVsbG8uXG5jb25zdCBSRUNFTlRfV0lORE9XX01TID0gNjBfMDAwO1xuXG50eXBlIENoYW5uZWwgPSB7XG4gICAgYmM6IEJyb2FkY2FzdENoYW5uZWw7XG4gICAgc3Vic2NyaWJlcnM6ICgod3JpdGU6IFJlbW90ZVdyaXRlKSA9PiB2b2lkKVtdO1xuICAgIC8vIENhbGxlZCB3aGVuIGEgcGVlciBhc2tzIGV2ZXJ5b25lIHRvIHNlYWwgKHN0b3AgYXBwZW5kaW5nIHRvKSB0aGVpciBjdXJyZW50IHN0cmVhbSBmaWxlLlxuICAgIHNlYWxTdWJzY3JpYmVyczogKCgpID0+IHZvaWQpW107XG4gICAgLy8gVGhpcyB0YWIncyBvd24gcmVjZW50IHdyaXRlcywga2VwdCBzbyBpdCBjYW4gYW5zd2VyIGFub3RoZXIgdGFiJ3MgXCJoZWxsb1wiLlxuICAgIHJlY2VudDogUmVtb3RlV3JpdGVbXTtcbn07XG5cbmNvbnN0IGNoYW5uZWxzID0gbmV3IE1hcDxzdHJpbmcsIENoYW5uZWw+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N5bmNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gd2luZG93IChtYWluLXRocmVhZCBicm93c2VyKSBvciBXb3JrZXJHbG9iYWxTY29wZSAoV2ViL1NlcnZpY2UvU2hhcmVkIHdvcmtlcikg4oCUIGJ1dCBub3QgTm9kZVxuICAgIC8vICh0eXBlc2FmZWNzcydzIGlzTm9kZSBpcyBgdHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcImAsIHdoaWNoIG1pc2NsYXNzaWZpZXMgd29ya2VycylcbiAgICBsZXQgaXNCcm93c2VyT3JXb3JrZXIgPSB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiXG4gICAgICAgIHx8IFwiV29ya2VyR2xvYmFsU2NvcGVcIiBpbiBnbG9iYWxUaGlzO1xuICAgIHJldHVybiBpc0Jyb3dzZXJPcldvcmtlciAmJiB0eXBlb2YgQnJvYWRjYXN0Q2hhbm5lbCAhPT0gXCJ1bmRlZmluZWRcIjtcbn1cblxuZnVuY3Rpb24gcHJ1bmVSZWNlbnQoY2hhbm5lbDogQ2hhbm5lbCkge1xuICAgIGNvbnN0IGN1dG9mZiA9IERhdGUubm93KCkgLSBSRUNFTlRfV0lORE9XX01TO1xuICAgIGNoYW5uZWwucmVjZW50ID0gY2hhbm5lbC5yZWNlbnQuZmlsdGVyKHcgPT4gdy50aW1lID49IGN1dG9mZik7XG59XG5cbmZ1bmN0aW9uIGRlbGl2ZXIoY2hhbm5lbDogQ2hhbm5lbCwgd3JpdGU6IFJlbW90ZVdyaXRlKSB7XG4gICAgZm9yIChjb25zdCBzdWIgb2YgY2hhbm5lbC5zdWJzY3JpYmVycykgc3ViKHdyaXRlKTtcbn1cblxuZnVuY3Rpb24gZW5zdXJlKGNvbGxlY3Rpb246IHN0cmluZyk6IENoYW5uZWwgfCB1bmRlZmluZWQge1xuICAgIGlmICghaXNTeW5jU3VwcG9ydGVkKCkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgbGV0IGNoYW5uZWwgPSBjaGFubmVscy5nZXQoY29sbGVjdGlvbik7XG4gICAgaWYgKGNoYW5uZWwpIHJldHVybiBjaGFubmVsO1xuICAgIC8vIEJyb2FkY2FzdENoYW5uZWwgbmV2ZXIgZGVsaXZlcnMgYSBtZXNzYWdlIGJhY2sgdG8gdGhlIGluc3RhbmNlIHRoYXQgc2VudCBpdCwgc28gYSB0YWIgbmV2ZXJcbiAgICAvLyBoZWFycyBpdHMgb3duIHdyaXRlcyDigJQgb25seSB0aGUgb3RoZXIgb3BlbiB0YWJzIGRvLlxuICAgIGNvbnN0IGJjID0gbmV3IEJyb2FkY2FzdENoYW5uZWwoYGJ1bGtEYXRhYmFzZTI6JHtjb2xsZWN0aW9ufWApO1xuICAgIGNvbnN0IGNyZWF0ZWQ6IENoYW5uZWwgPSB7IGJjLCBzdWJzY3JpYmVyczogW10sIHNlYWxTdWJzY3JpYmVyczogW10sIHJlY2VudDogW10gfTtcbiAgICBiYy5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCBtc2cgPSBldmVudC5kYXRhIGFzIHsgdHlwZTogc3RyaW5nOyB3cml0ZT86IFJlbW90ZVdyaXRlOyB3cml0ZXM/OiBSZW1vdGVXcml0ZVtdIH07XG4gICAgICAgIGlmICghbXNnKSByZXR1cm47XG4gICAgICAgIGlmIChtc2cudHlwZSA9PT0gXCJ3cml0ZVwiICYmIG1zZy53cml0ZSkge1xuICAgICAgICAgICAgZGVsaXZlcihjcmVhdGVkLCBtc2cud3JpdGUpO1xuICAgICAgICB9IGVsc2UgaWYgKG1zZy50eXBlID09PSBcInJlY2VudFwiICYmIG1zZy53cml0ZXMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgd3JpdGUgb2YgbXNnLndyaXRlcykgZGVsaXZlcihjcmVhdGVkLCB3cml0ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAobXNnLnR5cGUgPT09IFwic2VhbFwiKSB7XG4gICAgICAgICAgICAvLyBBIHBlZXIgaXMgYWJvdXQgdG8gZm9sZCByZWNlbnQgZGF0YTsgc3RvcCBhcHBlbmRpbmcgdG8gb3VyIGN1cnJlbnQgc3RyZWFtIGZpbGUgc28gaXRcbiAgICAgICAgICAgIC8vIGJlY29tZXMgY29tcGxldGUgYW5kIHRoZSBtZXJnZSBjYW4gZm9sZCBpdCB3aG9sZS4gT3VyIG5leHQgd3JpdGUgc3RhcnRzIGEgZnJlc2ggZmlsZS5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViIG9mIGNyZWF0ZWQuc2VhbFN1YnNjcmliZXJzKSBzdWIoKTtcbiAgICAgICAgfSBlbHNlIGlmIChtc2cudHlwZSA9PT0gXCJoZWxsb1wiKSB7XG4gICAgICAgICAgICAvLyBBbm90aGVyIHRhYiBqdXN0IHN0YXJ0ZWQ7IHJlcGxheSBvdXIgcmVjZW50IHdyaXRlcyBzbyBpdCBkb2Vzbid0IG1pc3MgYW55LiBUaGUgcmVwbHkgZ29lc1xuICAgICAgICAgICAgLy8gdG8gZXZlcnkgdGFiLCBidXQgcGVlcnMgdGhhdCBhbHJlYWR5IGhhdmUgYSB3cml0ZSBpZ25vcmUgaXQgKGl0cyB0aW1lc3RhbXAgaXNuJ3QgbmV3ZXJcbiAgICAgICAgICAgIC8vIHRoYW4gd2hhdCB0aGV5IGhvbGQpLCBzbyB0aGUgcmVkdW5kYW50IGJyb2FkY2FzdCBpcyBoYXJtbGVzcy5cbiAgICAgICAgICAgIHBydW5lUmVjZW50KGNyZWF0ZWQpO1xuICAgICAgICAgICAgaWYgKGNyZWF0ZWQucmVjZW50Lmxlbmd0aCkgY3JlYXRlZC5iYy5wb3N0TWVzc2FnZSh7IHR5cGU6IFwicmVjZW50XCIsIHdyaXRlczogY3JlYXRlZC5yZWNlbnQgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGNoYW5uZWxzLnNldChjb2xsZWN0aW9uLCBjcmVhdGVkKTtcbiAgICByZXR1cm4gY3JlYXRlZDtcbn1cblxuLy8gU3Vic2NyaWJlIHRvIHJlbW90ZSB3cml0ZXMgZm9yIGEgY29sbGVjdGlvbi4gUmVjZW50IHdyaXRlcyBmcm9tIGFscmVhZHktb3BlbiB0YWJzIGFycml2ZSB0aHJvdWdoIHRoZVxuLy8gc2FtZSBvbldyaXRlIGNhbGxiYWNrIChhcyB0aGUgcmVwbHkgdG8gb3VyIGhlbGxvKSwgc28gdGhlIHJldHVybmVkIGFycmF5IGlzIGFsd2F5cyBlbXB0eSDigJQgaXQncyBrZXB0XG4vLyBvbmx5IGZvciBBUEkgY29tcGF0aWJpbGl0eSB3aXRoIGNhbGxlcnMgdGhhdCBhd2FpdCBpdC5cbmV4cG9ydCBmdW5jdGlvbiBjb25uZWN0KGNvbGxlY3Rpb246IHN0cmluZywgb25Xcml0ZTogKHdyaXRlOiBSZW1vdGVXcml0ZSkgPT4gdm9pZCwgb25TZWFsPzogKCkgPT4gdm9pZCk6IFByb21pc2U8UmVtb3RlV3JpdGVbXT4ge1xuICAgIGNvbnN0IGNoYW5uZWwgPSBlbnN1cmUoY29sbGVjdGlvbik7XG4gICAgaWYgKCFjaGFubmVsKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgICBjaGFubmVsLnN1YnNjcmliZXJzLnB1c2gob25Xcml0ZSk7XG4gICAgaWYgKG9uU2VhbCkgY2hhbm5lbC5zZWFsU3Vic2NyaWJlcnMucHVzaChvblNlYWwpO1xuICAgIGNoYW5uZWwuYmMucG9zdE1lc3NhZ2UoeyB0eXBlOiBcImhlbGxvXCIgfSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBicm9hZGNhc3QoY29sbGVjdGlvbjogc3RyaW5nLCB3cml0ZTogUmVtb3RlV3JpdGUpOiB2b2lkIHtcbiAgICBjb25zdCBjaGFubmVsID0gZW5zdXJlKGNvbGxlY3Rpb24pO1xuICAgIGlmICghY2hhbm5lbCkgcmV0dXJuO1xuICAgIGNoYW5uZWwucmVjZW50LnB1c2god3JpdGUpO1xuICAgIHBydW5lUmVjZW50KGNoYW5uZWwpO1xuICAgIGNoYW5uZWwuYmMucG9zdE1lc3NhZ2UoeyB0eXBlOiBcIndyaXRlXCIsIHdyaXRlIH0pO1xufVxuXG4vLyBBc2sgZXZlcnkgb3RoZXIgb3BlbiB0YWIgb2YgdGhpcyBjb2xsZWN0aW9uIHRvIHNlYWwgKHN0b3AgYXBwZW5kaW5nIHRvKSBpdHMgY3VycmVudCBzdHJlYW0gZmlsZSwgc29cbi8vIGEgbWVyZ2UgY2FuIGZvbGQgcmVjZW50IGRhdGEgdXAgdG8gdGhlIHByZXNlbnQgd2l0aG91dCByYWNpbmcgYW4gYXBwZW5kLiBCZXN0LWVmZm9ydDogbm8tb3AgaW4gTm9kZSxcbi8vIGFuZCBhIHBlZXIgdGhhdCBtaXNzZXMgaXQganVzdCBrZWVwcyBhcHBlbmRpbmcg4oCUIHdvcnN0IGNhc2UgdGhlIG1lcmdlIGZvbGRzIGEgcHJlZml4IGFuZCB0aGUgcmVzdFxuLy8gZm9sZHMgbGF0ZXIgKGR1cGxpY2F0aW9uLCByZXNvbHZlZCBieSB3cml0ZS10aW1lKSwgbmV2ZXIgZGF0YSBsb3NzLlxuZXhwb3J0IGZ1bmN0aW9uIGJyb2FkY2FzdFNlYWwoY29sbGVjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbm5lbCA9IGVuc3VyZShjb2xsZWN0aW9uKTtcbiAgICBpZiAoIWNoYW5uZWwpIHJldHVybjtcbiAgICBjaGFubmVsLmJjLnBvc3RNZXNzYWdlKHsgdHlwZTogXCJzZWFsXCIgfSk7XG59XG4iXX0=
104
- /* _JS_SOURCE_HASH = "b93362d0415ac9f4de1e50ad306197d3fe8c05e347176699d05643c2663e079a"; */
104
+ /* _JS_SOURCE_HASH = "7f2ce8b648f263d684f7090f1fc3ab985b5780de258994dfbf0f1625abd00670"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.hashEmbedding = exports.averageEmbeddings = exports.deserializeStoredEmbedding = exports.serializeStoredEmbedding = exports.encodeEmbedding = exports.getCloseness = exports.embeddingToFloat32 = exports.releaseFloat32 = exports.embeddingLength = exports.DEFAULT_EMBEDDING_FORMAT = exports.EMBEDDING_FORMATS = void 0;
4
4
  const measure_1 = require("socket-function/src/profiling/measure");
@@ -337,4 +337,4 @@ function hashEmbedding(stored) {
337
337
  }
338
338
  exports.hashEmbedding = hashEmbedding;
339
339
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkaW5nRm9ybWF0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVtYmVkZGluZ0Zvcm1hdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQW9FO0FBQ3BFLHlEQUFrRTtBQU9yRCxRQUFBLGlCQUFpQixHQUFzQixDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzlGLFFBQUEsd0JBQXdCLEdBQW9CLFdBQVcsQ0FBQztBQUtyRSxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFRckIsTUFBTSxjQUFjLEdBQWtEO0lBQ2xFLFNBQVMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUN2RSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3ZFLE9BQU8sRUFBRSxFQUFFO0NBQ2QsQ0FBQztBQWlDRixNQUFNLGdCQUFnQixHQUFJLFVBQXlELENBQUMsWUFBWSxDQUFDO0FBRWpHLE1BQU0sVUFBVSxHQUFHLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyRCxTQUFTLFdBQVcsQ0FBQyxLQUFhO0lBQzlCLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDdEIsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUNuQyxJQUFJLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDdkMsSUFBSSxRQUFRLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JDLElBQUksUUFBUSxHQUFHLEdBQUc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUNoQyxJQUFJLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLElBQUksTUFBTSxDQUFDO1FBQ2YsSUFBSSxRQUFRLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbkIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsSUFBSSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDakIsUUFBUSxJQUFJLE1BQU0sQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELElBQUksSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxTQUFTLFdBQVcsQ0FBQyxJQUFZO0lBQzdCLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxJQUFJLFFBQVEsR0FBRyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsSUFBSSxRQUFRLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUM3QixJQUFJLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELElBQUksUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3BCLElBQUksUUFBUTtZQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3pCLE9BQU8sY0FBYyxHQUFHLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBQ0QsT0FBTyxjQUFjLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUMvRSxDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsS0FBaUI7SUFDN0IsT0FBTyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFDRCxTQUFTLGFBQWEsQ0FBQyxNQUFvQjtJQUN2QyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELElBQUksR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBQ0QsU0FBUyxrQkFBa0IsQ0FBQyxLQUFpQjtJQUN6QyxnR0FBZ0c7SUFDaEcsSUFBSSxLQUFLLENBQUMsVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QixLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDbkIsT0FBTyxJQUFJLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLElBQUksR0FBRyxHQUFHLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUN6QyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsS0FBcUM7SUFDakUsSUFBSSxLQUFLLFlBQVksWUFBWTtRQUFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztRQUFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDekQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUM3QixDQUFDO0FBSkQsMENBSUM7QUFFRCwwR0FBMEc7QUFDMUcsbUdBQW1HO0FBQ25HLDRHQUE0RztBQUM1RyxFQUFFO0FBQ0YsNEdBQTRHO0FBQzVHLHlHQUF5RztBQUN6RyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBRXhDLE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUEyQixDQUFDO0FBQ3ZELFNBQVMsY0FBYyxDQUFDLE1BQWM7SUFDbEMsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFHLENBQUMsTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFDRCxPQUFPLElBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFDRCxTQUFnQixjQUFjLENBQUMsTUFBb0I7SUFDL0MsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBUEQsd0NBT0M7QUFDRCxTQUFTLGdCQUFnQjtJQUNyQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsZ0JBQWdCLENBQUM7SUFDM0MsS0FBSyxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDbkIsS0FBSyxJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUMzRCxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7QUFDTCxDQUFDO0FBQ0QsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixDQUFzQyxDQUFDO0FBQzVHLElBQUksT0FBTyxjQUFjLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRSxDQUFDO0lBQzdDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUMzQixDQUFDO0FBRUQsMEdBQTBHO0FBQzFHLDRHQUE0RztBQUM1RywwR0FBMEc7QUFDMUcsNENBQTRDO0FBQzVDLFNBQWdCLGtCQUFrQixDQUFDLEtBQXFDLEVBQUUsT0FBTyxHQUFHLEtBQUs7SUFDckYsSUFBSSxLQUFLLFlBQVksWUFBWSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEtBQUssQ0FBQztRQUMzQixJQUFJLEdBQUcsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDZixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDbEMsSUFBSSxHQUFHLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixJQUFJLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUNoQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3pCLElBQUksR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNyRCxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM1QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUMsS0FBSyxJQUFJLEtBQUssR0FBRyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzNDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBM0JELGdEQTJCQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsR0FBVztJQUNqQyxtR0FBbUc7SUFDbkcsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLENBQWUsRUFBRSxDQUFlO0lBQ2hELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzFDLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFFRCwwR0FBMEc7QUFDMUcseUdBQXlHO0FBQ3pHLDhEQUE4RDtBQUNqRCxRQUFBLFlBQVksR0FBRyxJQUFBLHFCQUFXLEVBQUMsU0FBUyxZQUFZLENBQUMsQ0FBaUMsRUFBRSxDQUFpQztJQUM5SCxJQUFJLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3JDLElBQUksTUFBTSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRCxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkIsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25CLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBRUgseUdBQXlHO0FBQ3pHLDBHQUEwRztBQUMxRyxnRUFBZ0U7QUFDaEUsU0FBZ0IsZUFBZSxDQUFDLE1BSS9CO0lBQ0csSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3RDLElBQUksWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxJQUFJLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUM1QixJQUFJLFlBQVksQ0FBQyxVQUFVLEtBQUssU0FBUyxJQUFJLFlBQVksQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDNUUsTUFBTSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7SUFDckMsQ0FBQztJQUNELElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNiLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMxQyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksTUFBdUIsQ0FBQztJQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDL0YsQ0FBQztTQUFNLENBQUM7UUFDSixJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDN0MsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDL0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzlDLElBQUksS0FBSyxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDOUIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNmLEtBQUssSUFBSSxLQUFLLEdBQUcsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDM0MsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxRQUFRLEdBQUcsTUFBTTtvQkFBRSxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLEtBQUssR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUs7Z0JBQUUsU0FBUztZQUNyQixLQUFLLElBQUksS0FBSyxHQUFHLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzNDLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLFNBQVMsR0FBRyxRQUFRO29CQUFFLFNBQVMsR0FBRyxRQUFRLENBQUM7Z0JBQy9DLElBQUksU0FBUyxHQUFHLENBQUMsUUFBUTtvQkFBRSxTQUFTLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxTQUFTLENBQUM7WUFDNUIsQ0FBQztRQUNMLENBQUM7UUFDRCxNQUFNLEdBQUc7WUFDTCxJQUFJLEVBQUUsT0FBTztZQUNiLEtBQUs7WUFDTCxJQUFJO1lBQ0osU0FBUztZQUNULElBQUksRUFBRSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuRSxNQUFNLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQztTQUNoQyxDQUFDO0lBQ04sQ0FBQztJQUNELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBMURELDBDQTBEQztBQU1ELG9HQUFvRztBQUNwRyxpRkFBaUY7QUFDakYsU0FBZ0Isd0JBQXdCLENBQUMsTUFBdUI7SUFDNUQsSUFBSSxNQUF3QixDQUFDO0lBQzdCLElBQUksT0FBcUIsQ0FBQztJQUMxQixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUIsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2xELE9BQU8sR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDO1NBQU0sQ0FBQztRQUNKLE1BQU0sR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkksT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQUksV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RCxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLFlBQVksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuRyxDQUFDO0FBZEQsNERBY0M7QUFDRCxTQUFnQiwwQkFBMEIsQ0FBQyxNQUFjO0lBQ3JELElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxNQUFNLENBQUMsTUFBTSxZQUFZLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBQ0QsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxJQUFJLFNBQVMsR0FBRyxDQUFDLEdBQUcsWUFBWSxDQUFDO0lBQ2pDLElBQUksWUFBWSxJQUFJLENBQUMsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLFlBQVksbUJBQW1CLE1BQU0sQ0FBQyxNQUFNLFdBQVcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pJLENBQUM7SUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBcUIsQ0FBQztJQUNuRixJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1QixPQUFPLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBQSxtQkFBUyxFQUFDLElBQUEsa0JBQVEsRUFBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNHLENBQUM7SUFDRCxPQUFPO1FBQ0gsSUFBSSxFQUFFLE9BQU87UUFDYixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDbkIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1FBQ2pCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztRQUMzQixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUQsTUFBTSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDOUQsQ0FBQztBQUNOLENBQUM7QUF2QkQsZ0VBdUJDO0FBRUQsMEdBQTBHO0FBQzFHLGVBQWU7QUFDZixTQUFnQixpQkFBaUIsQ0FBQyxVQUE2QixFQUFFLE1BQWtEO0lBQy9HLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUN0QixLQUFLLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQy9CLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBQ0QsSUFBSSxHQUFHLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWixLQUFLLElBQUksU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQy9CLElBQUksTUFBTSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxLQUFLLElBQUksU0FBUyxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDdEQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLE1BQU0sR0FBRyxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBakJELDhDQWlCQztBQUVELHlHQUF5RztBQUN6RyxzR0FBc0c7QUFDdEcsU0FBZ0IsYUFBYSxDQUFDLE1BQXVCO0lBQ2pELElBQUksTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzNCLElBQUksS0FBSyxHQUFHLElBQUksV0FBVyxDQUFDLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN6RSxLQUFLLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDMUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUM3QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqRixDQUFDO0lBQ0wsQ0FBQztJQUNELGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBYkQsc0NBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZWFzdXJlV3JhcCB9IGZyb20gXCJzb2NrZXQtZnVuY3Rpb24vc3JjL3Byb2ZpbGluZy9tZWFzdXJlXCI7XG5pbXBvcnQgeyBhc0J1ZmZlciwgYXNGbG9hdDMyIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvYnVmZmVyc1wiO1xuXG4vLyBUaGUgZm9ybWF0cyBhbiBlbWJlZGRpbmcgY2FuIGJlIHN0b3JlZCAmIGNvbXBhcmVkIGluLiBUaGUgdHJhaWxpbmcgbnVtYmVyIGlzIHRoZSBNYXRyeW9zaGthXG4vLyB0cnVuY2F0aW9uIGxlbmd0aCAodGhlIGNvdW50IG9mIGxlYWRpbmcgZGltZW5zaW9ucyBrZXB0KS4gXCJxOGdOXCIgbWVhbnMgc2lnbmVkIGludDggdmFsdWVzIHdpdGhcbi8vIG9uZSBzY2FsZSBzaGFyZWQgYWNyb3NzIGV2ZXJ5IE4gZGltZW5zaW9ucy4gXCJmbG9hdDMyXCIga2VlcHMgdGhlIHJhdyAodHJ1bmNhdGVkKSB2ZWN0b3IuXG5leHBvcnQgdHlwZSBFbWJlZGRpbmdGb3JtYXQgPSBcInE4ZzhfMjA0OFwiIHwgXCJxOF9nMTZfMjA0OFwiIHwgXCJxOF9nMTZfMTAyNFwiIHwgXCJmbG9hdDMyXCI7XG5cbmV4cG9ydCBjb25zdCBFTUJFRERJTkdfRk9STUFUUzogRW1iZWRkaW5nRm9ybWF0W10gPSBbXCJxOGc4XzIwNDhcIiwgXCJxOF9nMTZfMjA0OFwiLCBcInE4X2cxNl8xMDI0XCIsIFwiZmxvYXQzMlwiXTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0VNQkVERElOR19GT1JNQVQ6IEVtYmVkZGluZ0Zvcm1hdCA9IFwicThnOF8yMDQ4XCI7XG5cbi8vIFRoZSBvbmx5IGVsZW1lbnQgcXVhbnRpemF0aW9uIHdlIHN1cHBvcnQgcmlnaHQgbm93IChzaWduZWQgaW50OCwgdmFsdWVzIGluIFstMTI3LCAxMjddKS5cbmV4cG9ydCB0eXBlIFF1YW50VHlwZSA9IFwicThcIjtcblxuY29uc3QgSU5UOF9NQVggPSAxMjc7XG5cbnR5cGUgRm9ybWF0Q29uZmlnID0ge1xuICAgIC8vIExlYWRpbmcgZGltZW5zaW9ucyBrZXB0LiB1bmRlZmluZWQga2VlcHMgdGhlIGZ1bGwgdmVjdG9yLlxuICAgIHRydW5jYXRpb24/OiBudW1iZXI7XG4gICAgLy8gaW50OCBncm91cCBxdWFudGl6YXRpb24gcGFyYW1ldGVycy4gdW5kZWZpbmVkIHN0b3JlcyB0aGUgcmF3IGZsb2F0MzIgdmVjdG9yLlxuICAgIHF1YW50PzogeyB0eXBlOiBRdWFudFR5cGU7IGdyb3VwU2l6ZTogbnVtYmVyIH07XG59O1xuY29uc3QgRk9STUFUX0NPTkZJR1M6IHsgW2Zvcm1hdCBpbiBFbWJlZGRpbmdGb3JtYXRdOiBGb3JtYXRDb25maWcgfSA9IHtcbiAgICBxOGc4XzIwNDg6IHsgdHJ1bmNhdGlvbjogMjA0OCwgcXVhbnQ6IHsgdHlwZTogXCJxOFwiLCBncm91cFNpemU6IDggfSB9LFxuICAgIHE4X2cxNl8yMDQ4OiB7IHRydW5jYXRpb246IDIwNDgsIHF1YW50OiB7IHR5cGU6IFwicThcIiwgZ3JvdXBTaXplOiAxNiB9IH0sXG4gICAgcThfZzE2XzEwMjQ6IHsgdHJ1bmNhdGlvbjogMTAyNCwgcXVhbnQ6IHsgdHlwZTogXCJxOFwiLCBncm91cFNpemU6IDE2IH0gfSxcbiAgICBmbG9hdDMyOiB7fSxcbn07XG5cbmV4cG9ydCB0eXBlIFN0b3JlZEVtYmVkZGluZyA9IHtcbiAgICBraW5kOiBcImZsb2F0MzJcIjtcbiAgICBtb2RlbDogc3RyaW5nO1xuICAgIHZhbHVlczogRmxvYXQzMkFycmF5O1xufSB8IHtcbiAgICBraW5kOiBcInF1YW50XCI7XG4gICAgbW9kZWw6IHN0cmluZztcbiAgICAvLyBFbGVtZW50IHF1YW50aXphdGlvbi4gXCJxOFwiIGlzIHNpZ25lZCBpbnQ4ICh2YWx1ZXMgaW4gWy0xMjcsIDEyN10pLlxuICAgIHR5cGU6IFF1YW50VHlwZTtcbiAgICAvLyBOdW1iZXIgb2YgY29uc2VjdXRpdmUgZGltZW5zaW9ucyBzaGFyaW5nIG9uZSBzY2FsZS5cbiAgICBncm91cFNpemU6IG51bWJlcjtcbiAgICAvLyBpbnQ4IHZhbHVlcyAob25lIHBlciBrZXB0IGRpbWVuc2lvbiksIHJlaW50ZXJwcmV0ZWQgYXMgcmF3IGJ5dGVzLlxuICAgIGRhdGE6IFVpbnQ4QXJyYXk7XG4gICAgLy8gZmxvYXQxNiBzY2FsZXMgKG9uZSBwZXIgZ3JvdXApLCByZWludGVycHJldGVkIGFzIHJhdyBieXRlcy5cbiAgICBzY2FsZXM6IFVpbnQ4QXJyYXk7XG59O1xuXG4vLyBGbG9hdDE2QXJyYXkgaXNuJ3QgaW4gb3VyIFR5cGVTY3JpcHQgbGliIGFuZCBpc24ndCBndWFyYW50ZWVkIGF0IHJ1bnRpbWUsIHNvIHdlIHJlYWQgaXQgb2ZmXG4vLyBnbG9iYWxUaGlzIGFuZCBmYWxsIGJhY2sgdG8gYSBtYW51YWwgaGFsZjwtPmZsb2F0IGNvbnZlcnNpb24gd2hlbiBpdCdzIG1pc3NpbmcuXG5pbnRlcmZhY2UgRmxvYXQxNkFycmF5TGlrZSB7XG4gICAgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7XG4gICAgW2luZGV4OiBudW1iZXJdOiBudW1iZXI7XG4gICAgcmVhZG9ubHkgYnVmZmVyOiBBcnJheUJ1ZmZlckxpa2U7XG4gICAgcmVhZG9ubHkgYnl0ZU9mZnNldDogbnVtYmVyO1xuICAgIHJlYWRvbmx5IGJ5dGVMZW5ndGg6IG51bWJlcjtcbn1cbmludGVyZmFjZSBGbG9hdDE2QXJyYXlDb25zdHJ1Y3RvciB7XG4gICAgbmV3KGxlbmd0aDogbnVtYmVyKTogRmxvYXQxNkFycmF5TGlrZTtcbiAgICBuZXcoZWxlbWVudHM6IEFycmF5TGlrZTxudW1iZXI+KTogRmxvYXQxNkFycmF5TGlrZTtcbiAgICBuZXcoYnVmZmVyOiBBcnJheUJ1ZmZlckxpa2UsIGJ5dGVPZmZzZXQ/OiBudW1iZXIsIGxlbmd0aD86IG51bWJlcik6IEZsb2F0MTZBcnJheUxpa2U7XG59XG5jb25zdCBGbG9hdDE2QXJyYXlDdG9yID0gKGdsb2JhbFRoaXMgYXMgeyBGbG9hdDE2QXJyYXk/OiBGbG9hdDE2QXJyYXlDb25zdHJ1Y3RvciB9KS5GbG9hdDE2QXJyYXk7XG5cbmNvbnN0IGYzMlNjcmF0Y2ggPSBuZXcgRmxvYXQzMkFycmF5KDEpO1xuY29uc3QgaTMyU2NyYXRjaCA9IG5ldyBJbnQzMkFycmF5KGYzMlNjcmF0Y2guYnVmZmVyKTtcbmZ1bmN0aW9uIGZsb2F0VG9IYWxmKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGYzMlNjcmF0Y2hbMF0gPSB2YWx1ZTtcbiAgICBsZXQgYml0c0luID0gaTMyU2NyYXRjaFswXTtcbiAgICBsZXQgYml0cyA9IChiaXRzSW4gPj4gMTYpICYgMHg4MDAwO1xuICAgIGxldCBtYW50aXNzYSA9IChiaXRzSW4gPj4gMTIpICYgMHgwN2ZmO1xuICAgIGxldCBleHBvbmVudCA9IChiaXRzSW4gPj4gMjMpICYgMHhmZjtcbiAgICBpZiAoZXhwb25lbnQgPCAxMDMpIHJldHVybiBiaXRzO1xuICAgIGlmIChleHBvbmVudCA+IDE0Mikge1xuICAgICAgICBiaXRzIHw9IDB4N2MwMDtcbiAgICAgICAgaWYgKGV4cG9uZW50ICE9PSAyNTUpIHtcbiAgICAgICAgICAgIGJpdHMgfD0gKGJpdHNJbiAmIDB4MDA3ZmZmZmYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaXRzO1xuICAgIH1cbiAgICBpZiAoZXhwb25lbnQgPCAxMTMpIHtcbiAgICAgICAgbWFudGlzc2EgfD0gMHgwODAwO1xuICAgICAgICBiaXRzIHw9IChtYW50aXNzYSA+PiAoMTE0IC0gZXhwb25lbnQpKSArICgobWFudGlzc2EgPj4gKDExMyAtIGV4cG9uZW50KSkgJiAxKTtcbiAgICAgICAgcmV0dXJuIGJpdHM7XG4gICAgfVxuICAgIGJpdHMgfD0gKChleHBvbmVudCAtIDExMikgPDwgMTApIHwgKG1hbnRpc3NhID4+IDEpO1xuICAgIGJpdHMgKz0gbWFudGlzc2EgJiAxO1xuICAgIHJldHVybiBiaXRzO1xufVxuZnVuY3Rpb24gaGFsZlRvRmxvYXQoaGFsZjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgc2lnbiA9IChoYWxmICYgMHg4MDAwKSA+PiAxNTtcbiAgICBsZXQgZXhwb25lbnQgPSAoaGFsZiAmIDB4N2MwMCkgPj4gMTA7XG4gICAgbGV0IGZyYWN0aW9uID0gaGFsZiAmIDB4MDNmZjtcbiAgICBsZXQgc2lnbk11bHRpcGxpZXIgPSBzaWduICYmIC0xIHx8IDE7XG4gICAgaWYgKGV4cG9uZW50ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBzaWduTXVsdGlwbGllciAqIE1hdGgucG93KDIsIC0xNCkgKiAoZnJhY3Rpb24gLyAxMDI0KTtcbiAgICB9XG4gICAgaWYgKGV4cG9uZW50ID09PSAweDFmKSB7XG4gICAgICAgIGlmIChmcmFjdGlvbikgcmV0dXJuIE5hTjtcbiAgICAgICAgcmV0dXJuIHNpZ25NdWx0aXBsaWVyICogSW5maW5pdHk7XG4gICAgfVxuICAgIHJldHVybiBzaWduTXVsdGlwbGllciAqIE1hdGgucG93KDIsIGV4cG9uZW50IC0gMTUpICogKDEgKyBmcmFjdGlvbiAvIDEwMjQpO1xufVxuXG5mdW5jdGlvbiBhc0ludDgoYnl0ZXM6IFVpbnQ4QXJyYXkpOiBJbnQ4QXJyYXkge1xuICAgIHJldHVybiBuZXcgSW50OEFycmF5KGJ5dGVzLmJ1ZmZlciwgYnl0ZXMuYnl0ZU9mZnNldCwgYnl0ZXMuYnl0ZUxlbmd0aCk7XG59XG5mdW5jdGlvbiBlbmNvZGVGbG9hdDE2KHZhbHVlczogRmxvYXQzMkFycmF5KTogVWludDhBcnJheSB7XG4gICAgaWYgKEZsb2F0MTZBcnJheUN0b3IpIHtcbiAgICAgICAgbGV0IGhhbGYgPSBuZXcgRmxvYXQxNkFycmF5Q3Rvcih2YWx1ZXMpO1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoaGFsZi5idWZmZXIsIGhhbGYuYnl0ZU9mZnNldCwgaGFsZi5ieXRlTGVuZ3RoKTtcbiAgICB9XG4gICAgbGV0IG91dCA9IG5ldyBVaW50OEFycmF5KHZhbHVlcy5sZW5ndGggKiAyKTtcbiAgICBsZXQgdmlldyA9IG5ldyBEYXRhVmlldyhvdXQuYnVmZmVyKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdmFsdWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICB2aWV3LnNldFVpbnQxNihpbmRleCAqIDIsIGZsb2F0VG9IYWxmKHZhbHVlc1tpbmRleF0pLCB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIGFzRmxvYXQxNkluZGV4YWJsZShieXRlczogVWludDhBcnJheSk6IHsgcmVhZG9ubHkgbGVuZ3RoOiBudW1iZXI7W2luZGV4OiBudW1iZXJdOiBudW1iZXIgfSB7XG4gICAgLy8gRmxvYXQxNkFycmF5IC8gVWludDE2QXJyYXkgdmlld3MgcmVxdWlyZSAyLWJ5dGUgYWxpZ25tZW50OyBjb3B5IHdoZW4gdGhlIHN0b3JlZCBieXRlcyBhcmVuJ3QuXG4gICAgaWYgKGJ5dGVzLmJ5dGVPZmZzZXQgJSAyICE9PSAwKSB7XG4gICAgICAgIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpO1xuICAgIH1cbiAgICBsZXQgY291bnQgPSBNYXRoLmZsb29yKGJ5dGVzLmJ5dGVMZW5ndGggLyAyKTtcbiAgICBpZiAoRmxvYXQxNkFycmF5Q3Rvcikge1xuICAgICAgICByZXR1cm4gbmV3IEZsb2F0MTZBcnJheUN0b3IoYnl0ZXMuYnVmZmVyLCBieXRlcy5ieXRlT2Zmc2V0LCBjb3VudCk7XG4gICAgfVxuICAgIGxldCBoYWx2ZXMgPSBuZXcgVWludDE2QXJyYXkoYnl0ZXMuYnVmZmVyLCBieXRlcy5ieXRlT2Zmc2V0LCBjb3VudCk7XG4gICAgbGV0IG91dCA9IG5ldyBGbG9hdDMyQXJyYXkoY291bnQpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgaW5kZXgrKykge1xuICAgICAgICBvdXRbaW5kZXhdID0gaGFsZlRvRmxvYXQoaGFsdmVzW2luZGV4XSk7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbWJlZGRpbmdMZW5ndGgoaW5wdXQ6IEZsb2F0MzJBcnJheSB8IFN0b3JlZEVtYmVkZGluZyk6IG51bWJlciB7XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5KSByZXR1cm4gaW5wdXQubGVuZ3RoO1xuICAgIGlmIChpbnB1dC5raW5kID09PSBcImZsb2F0MzJcIikgcmV0dXJuIGlucHV0LnZhbHVlcy5sZW5ndGg7XG4gICAgcmV0dXJuIGlucHV0LmRhdGEubGVuZ3RoO1xufVxuXG4vLyBBIHBvb2wgb2YgcmV1c2FibGUgRmxvYXQzMiBidWZmZXJzIGtleWVkIGJ5IGxlbmd0aC4gTW9zdCBlbWJlZGRpbmdzIHNoYXJlIGEgc2l6ZSwgc28gaW50ZXJuYWwgaG90IHBhdGhzXG4vLyBib3Jyb3cgYSBidWZmZXIgKGVtYmVkZGluZ1RvRmxvYXQzMiB3aXRoIHVzZVBvb2wpIGFuZCByZXR1cm4gaXQgKHJlbGVhc2VGbG9hdDMyKSB0byBhdm9pZCBwZXItb3Bcbi8vIGFsbG9jYXRpb25zIGFuZCBHQyB0aHJhc2hpbmcuIEEgYm9ycm93ZWQgYnVmZmVyIGhvbGRzIHN0YWxlIGRhdGE7IHdob2V2ZXIgYm9ycm93cyBpdCBvdmVyd3JpdGVzIGl0IGZ1bGx5LlxuLy9cbi8vIEVhY2ggZnJlZSBidWZmZXIgcmVjb3JkcyB3aGVuIGl0IHdhcyBsYXN0IHJlbGVhc2VkOyBhbiBob3VybHkgc3dlZXAgZHJvcHMgYW55IHRoYXQgaGF2ZSBzYXQgaWRsZSBmb3Igb3ZlclxuLy8gYW4gaG91ciwgc28gdGhlIHJ1bnRpbWUgY2FuIGZyZWUgYnVmZmVycyBhIGJ1cnN0IG9mIHdvcmsgYWxsb2NhdGVkIGJ1dCBpc24ndCBhY3R1YWxseSByZXVzaW5nIGFueW1vcmUuXG5jb25zdCBQT09MX01BWF9JRExFX01TID0gNjAgKiA2MCAqIDEwMDA7XG50eXBlIFBvb2xlZEZsb2F0MzIgPSB7IGJ1ZmZlcjogRmxvYXQzMkFycmF5OyByZWxlYXNlZEF0OiBudW1iZXIgfTtcbmNvbnN0IGZsb2F0MzJQb29sID0gbmV3IE1hcDxudW1iZXIsIFBvb2xlZEZsb2F0MzJbXT4oKTtcbmZ1bmN0aW9uIGFjcXVpcmVGbG9hdDMyKGxlbmd0aDogbnVtYmVyKTogRmxvYXQzMkFycmF5IHtcbiAgICBsZXQgZnJlZSA9IGZsb2F0MzJQb29sLmdldChsZW5ndGgpO1xuICAgIGlmIChmcmVlICYmIGZyZWUubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBmcmVlLnBvcCgpIS5idWZmZXI7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRmxvYXQzMkFycmF5KGxlbmd0aCk7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVsZWFzZUZsb2F0MzIoYnVmZmVyOiBGbG9hdDMyQXJyYXkpOiB2b2lkIHtcbiAgICBsZXQgZnJlZSA9IGZsb2F0MzJQb29sLmdldChidWZmZXIubGVuZ3RoKTtcbiAgICBpZiAoIWZyZWUpIHtcbiAgICAgICAgZnJlZSA9IFtdO1xuICAgICAgICBmbG9hdDMyUG9vbC5zZXQoYnVmZmVyLmxlbmd0aCwgZnJlZSk7XG4gICAgfVxuICAgIGZyZWUucHVzaCh7IGJ1ZmZlciwgcmVsZWFzZWRBdDogRGF0ZS5ub3coKSB9KTtcbn1cbmZ1bmN0aW9uIHN3ZWVwRmxvYXQzMlBvb2woKTogdm9pZCB7XG4gICAgbGV0IGN1dG9mZiA9IERhdGUubm93KCkgLSBQT09MX01BWF9JRExFX01TO1xuICAgIGZvciAobGV0IGZyZWUgb2YgZmxvYXQzMlBvb2wudmFsdWVzKCkpIHtcbiAgICAgICAgbGV0IHdyaXRlSW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCByZWFkSW5kZXggPSAwOyByZWFkSW5kZXggPCBmcmVlLmxlbmd0aDsgcmVhZEluZGV4KyspIHtcbiAgICAgICAgICAgIGlmIChmcmVlW3JlYWRJbmRleF0ucmVsZWFzZWRBdCA+IGN1dG9mZikge1xuICAgICAgICAgICAgICAgIGZyZWVbd3JpdGVJbmRleCsrXSA9IGZyZWVbcmVhZEluZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmcmVlLmxlbmd0aCA9IHdyaXRlSW5kZXg7XG4gICAgfVxufVxuY29uc3QgcG9vbFN3ZWVwVGltZXIgPSBzZXRJbnRlcnZhbChzd2VlcEZsb2F0MzJQb29sLCBQT09MX01BWF9JRExFX01TKSBhcyB1bmtub3duIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH07XG5pZiAodHlwZW9mIHBvb2xTd2VlcFRpbWVyLnVucmVmID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBwb29sU3dlZXBUaW1lci51bnJlZigpO1xufVxuXG4vLyBEZWNvZGUgdG8gYSBGbG9hdDMyQXJyYXkgKGZ1bGwgbGVuZ3RoKS4gU3RvcmVkIHZhbHVlcyBhcmUgYWxyZWFkeSB1bml0LW5vcm1hbGl6ZWQgKGVuY29kZUVtYmVkZGluZyBkb2VzXG4vLyB0aGF0KSwgc28gdGhpcyBvbmx5IGRlLXF1YW50aXplcy4gQnkgZGVmYXVsdCBpdCBhbGxvY2F0ZXMgYSBmcmVzaCBhcnJheSAoYSBmbG9hdCBpbnB1dCBpcyByZXR1cm5lZCBhcy1pcyxcbi8vIG5vIGNvcHkpLiBXaXRoIHVzZVBvb2wgaXQgYm9ycm93cyBhIHBvb2xlZCBidWZmZXIgdGhlIGNhbGxlciBtdXN0IHJlbGVhc2VGbG9hdDMyIOKAlCB1c2VkIGJ5IGhvdCBpbnRlcm5hbFxuLy8gcGF0aHMgc28gcmVwZWF0ZWQgZGVjb2RlcyBkb24ndCBhbGxvY2F0ZS5cbmV4cG9ydCBmdW5jdGlvbiBlbWJlZGRpbmdUb0Zsb2F0MzIoaW5wdXQ6IEZsb2F0MzJBcnJheSB8IFN0b3JlZEVtYmVkZGluZywgdXNlUG9vbCA9IGZhbHNlKTogRmxvYXQzMkFycmF5IHtcbiAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpIHtcbiAgICAgICAgaWYgKCF1c2VQb29sKSByZXR1cm4gaW5wdXQ7XG4gICAgICAgIGxldCBvdXQgPSBhY3F1aXJlRmxvYXQzMihpbnB1dC5sZW5ndGgpO1xuICAgICAgICBvdXQuc2V0KGlucHV0KTtcbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgaWYgKGlucHV0LmtpbmQgPT09IFwiZmxvYXQzMlwiKSB7XG4gICAgICAgIGlmICghdXNlUG9vbCkgcmV0dXJuIGlucHV0LnZhbHVlcztcbiAgICAgICAgbGV0IG91dCA9IGFjcXVpcmVGbG9hdDMyKGlucHV0LnZhbHVlcy5sZW5ndGgpO1xuICAgICAgICBvdXQuc2V0KGlucHV0LnZhbHVlcyk7XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICAgIGxldCBpbnQ4ID0gYXNJbnQ4KGlucHV0LmRhdGEpO1xuICAgIGxldCBzY2FsZXMgPSBhc0Zsb2F0MTZJbmRleGFibGUoaW5wdXQuc2NhbGVzKTtcbiAgICBsZXQgZ3JvdXBTaXplID0gaW5wdXQuZ3JvdXBTaXplO1xuICAgIGxldCBsZW5ndGggPSBpbnQ4Lmxlbmd0aDtcbiAgICBsZXQgb3V0ID0gdXNlUG9vbCA/IGFjcXVpcmVGbG9hdDMyKGxlbmd0aCkgOiBuZXcgRmxvYXQzMkFycmF5KGxlbmd0aCk7XG4gICAgbGV0IGdyb3VwID0gMDtcbiAgICBmb3IgKGxldCBzdGFydCA9IDA7IHN0YXJ0IDwgbGVuZ3RoOyBzdGFydCArPSBncm91cFNpemUpIHtcbiAgICAgICAgbGV0IHNjYWxlID0gc2NhbGVzW2dyb3VwKytdO1xuICAgICAgICBsZXQgZW5kID0gTWF0aC5taW4oc3RhcnQgKyBncm91cFNpemUsIGxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgZW5kOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBvdXRbaW5kZXhdID0gaW50OFtpbmRleF0gKiBzY2FsZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBjbG9zZW5lc3NGcm9tRG90KGRvdDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBJbnB1dHMgYXJlIHVuaXQgdmVjdG9ycywgc28gZXVjbGlkZWFuXjIgPSAyIC0gMipkb3Q7IGNsYW1wIGF3YXkgdGlueSBuZWdhdGl2ZXMgZnJvbSBmbG9hdCBlcnJvci5cbiAgICByZXR1cm4gMSAtIE1hdGguc3FydChNYXRoLm1heCgwLCAyIC0gMiAqIGRvdCkpO1xufVxuXG5mdW5jdGlvbiBkb3RGbG9hdDMyKGE6IEZsb2F0MzJBcnJheSwgYjogRmxvYXQzMkFycmF5KTogbnVtYmVyIHtcbiAgICBsZXQgbGVuZ3RoID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICBsZXQgZG90ID0gMDtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGRvdCArPSBhW2luZGV4XSAqIGJbaW5kZXhdO1xuICAgIH1cbiAgICByZXR1cm4gZG90O1xufVxuXG4vLyBDbG9zZW5lc3MgPSAxIC0gZXVjbGlkZWFuIGRpc3RhbmNlIG9mIHR3byB1bml0IHZlY3RvcnMuIEFsd2F5cyBkZWNvZGUgYm90aCB0byAocG9vbGVkKSBmbG9hdDMyIGFuZCBkb3Q6XG4vLyBzaW1wbGUsIGFuZCBvbmNlIHRoZSBkZWNvZGVzIGFyZSBwb29sZWQgaXQncyB0aGUgZmFzdGVzdCBwZXItY2FsbCBwYXRoLiBCYXRjaCBjYWxsZXJzIChrLW1lYW5zKSBkZWNvZGVcbi8vIGV2ZXJ5IHZlY3RvciBvbmNlIHRoZW1zZWx2ZXMgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoIGhlcmUuXG5leHBvcnQgY29uc3QgZ2V0Q2xvc2VuZXNzID0gbWVhc3VyZVdyYXAoZnVuY3Rpb24gZ2V0Q2xvc2VuZXNzKGE6IEZsb2F0MzJBcnJheSB8IFN0b3JlZEVtYmVkZGluZywgYjogRmxvYXQzMkFycmF5IHwgU3RvcmVkRW1iZWRkaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgdmEgPSBlbWJlZGRpbmdUb0Zsb2F0MzIoYSwgdHJ1ZSk7XG4gICAgbGV0IHZiID0gZW1iZWRkaW5nVG9GbG9hdDMyKGIsIHRydWUpO1xuICAgIGxldCByZXN1bHQgPSBjbG9zZW5lc3NGcm9tRG90KGRvdEZsb2F0MzIodmEsIHZiKSk7XG4gICAgcmVsZWFzZUZsb2F0MzIodmEpO1xuICAgIHJlbGVhc2VGbG9hdDMyKHZiKTtcbiAgICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbi8vIEVuY29kZSBhIHZlY3RvciAob3IgcmUtZW5jb2RlIGFuIGVtYmVkZGluZykgaW50byB0aGUgcmVxdWVzdGVkIGZvcm1hdC4gVGhpcyBpcyBUSEUgcGxhY2Ugd2Ugbm9ybWFsaXplOlxuLy8gdGhlICh0cnVuY2F0ZWQpIHZlY3RvciBpcyBtYWRlIHVuaXQgbGVuZ3RoIGhlcmUsIHNvIGFueXRoaW5nIHRoYXQncyBiZWVuIGVuY29kZWQgaXMgcmVsaWFibHkgbm9ybWFsaXplZFxuLy8gYW5kIHRoZSBjb21wYXJpc29uL2RlY29kaW5nIHBhdGhzIG5ldmVyIGhhdmUgdG8gcmUtbm9ybWFsaXplLlxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUVtYmVkZGluZyhjb25maWc6IHtcbiAgICBpbnB1dDogRmxvYXQzMkFycmF5IHwgU3RvcmVkRW1iZWRkaW5nO1xuICAgIGZvcm1hdDogRW1iZWRkaW5nRm9ybWF0O1xuICAgIG1vZGVsOiBzdHJpbmc7XG59KTogU3RvcmVkRW1iZWRkaW5nIHtcbiAgICBsZXQgeyBpbnB1dCwgZm9ybWF0LCBtb2RlbCB9ID0gY29uZmlnO1xuICAgIGxldCBmb3JtYXRDb25maWcgPSBGT1JNQVRfQ09ORklHU1tmb3JtYXRdO1xuICAgIGxldCBkZWNvZGVkID0gZW1iZWRkaW5nVG9GbG9hdDMyKGlucHV0LCB0cnVlKTtcbiAgICBsZXQgbGVuZ3RoID0gZGVjb2RlZC5sZW5ndGg7XG4gICAgaWYgKGZvcm1hdENvbmZpZy50cnVuY2F0aW9uICE9PSB1bmRlZmluZWQgJiYgZm9ybWF0Q29uZmlnLnRydW5jYXRpb24gPCBsZW5ndGgpIHtcbiAgICAgICAgbGVuZ3RoID0gZm9ybWF0Q29uZmlnLnRydW5jYXRpb247XG4gICAgfVxuICAgIGxldCBub3JtID0gMDtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIG5vcm0gKz0gZGVjb2RlZFtpbmRleF0gKiBkZWNvZGVkW2luZGV4XTtcbiAgICB9XG4gICAgbGV0IG1hZ25pdHVkZSA9IE1hdGguc3FydChub3JtKSB8fCAxO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgZGVjb2RlZFtpbmRleF0gLz0gbWFnbml0dWRlO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQ6IFN0b3JlZEVtYmVkZGluZztcbiAgICBpZiAoIWZvcm1hdENvbmZpZy5xdWFudCkge1xuICAgICAgICByZXN1bHQgPSB7IGtpbmQ6IFwiZmxvYXQzMlwiLCBtb2RlbCwgdmFsdWVzOiBuZXcgRmxvYXQzMkFycmF5KGRlY29kZWQuc3ViYXJyYXkoMCwgbGVuZ3RoKSkgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgeyB0eXBlLCBncm91cFNpemUgfSA9IGZvcm1hdENvbmZpZy5xdWFudDtcbiAgICAgICAgbGV0IGdyb3VwQ291bnQgPSBNYXRoLmNlaWwobGVuZ3RoIC8gZ3JvdXBTaXplKTtcbiAgICAgICAgbGV0IGludDggPSBuZXcgSW50OEFycmF5KGxlbmd0aCk7XG4gICAgICAgIGxldCBzY2FsZXMgPSBuZXcgRmxvYXQzMkFycmF5KGdyb3VwQ291bnQpO1xuICAgICAgICBmb3IgKGxldCBncm91cCA9IDA7IGdyb3VwIDwgZ3JvdXBDb3VudDsgZ3JvdXArKykge1xuICAgICAgICAgICAgbGV0IHN0YXJ0ID0gZ3JvdXAgKiBncm91cFNpemU7XG4gICAgICAgICAgICBsZXQgZW5kID0gTWF0aC5taW4oc3RhcnQgKyBncm91cFNpemUsIGxlbmd0aCk7XG4gICAgICAgICAgICBsZXQgbWF4QWJzID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gc3RhcnQ7IGluZGV4IDwgZW5kOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGFic1ZhbHVlID0gTWF0aC5hYnMoZGVjb2RlZFtpbmRleF0pO1xuICAgICAgICAgICAgICAgIGlmIChhYnNWYWx1ZSA+IG1heEFicykgbWF4QWJzID0gYWJzVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgc2NhbGUgPSBtYXhBYnMgLyBJTlQ4X01BWDtcbiAgICAgICAgICAgIHNjYWxlc1tncm91cF0gPSBzY2FsZTtcbiAgICAgICAgICAgIGlmICghc2NhbGUpIGNvbnRpbnVlO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSBzdGFydDsgaW5kZXggPCBlbmQ7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBsZXQgcXVhbnRpemVkID0gTWF0aC5yb3VuZChkZWNvZGVkW2luZGV4XSAvIHNjYWxlKTtcbiAgICAgICAgICAgICAgICBpZiAocXVhbnRpemVkID4gSU5UOF9NQVgpIHF1YW50aXplZCA9IElOVDhfTUFYO1xuICAgICAgICAgICAgICAgIGlmIChxdWFudGl6ZWQgPCAtSU5UOF9NQVgpIHF1YW50aXplZCA9IC1JTlQ4X01BWDtcbiAgICAgICAgICAgICAgICBpbnQ4W2luZGV4XSA9IHF1YW50aXplZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBraW5kOiBcInF1YW50XCIsXG4gICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBncm91cFNpemUsXG4gICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShpbnQ4LmJ1ZmZlciwgaW50OC5ieXRlT2Zmc2V0LCBpbnQ4LmJ5dGVMZW5ndGgpLFxuICAgICAgICAgICAgc2NhbGVzOiBlbmNvZGVGbG9hdDE2KHNjYWxlcyksXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJlbGVhc2VGbG9hdDMyKGRlY29kZWQpO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbnR5cGUgU2VyaWFsaXplZEhlYWRlciA9XG4gICAgfCB7IGtpbmQ6IFwiZmxvYXQzMlwiOyBtb2RlbDogc3RyaW5nIH1cbiAgICB8IHsga2luZDogXCJxdWFudFwiOyBtb2RlbDogc3RyaW5nOyB0eXBlOiBRdWFudFR5cGU7IGdyb3VwU2l6ZTogbnVtYmVyOyBkYXRhQnl0ZXM6IG51bWJlciB9O1xuXG4vLyBTZXJpYWxpemUgdG8gYmFzZTY0IHNvIGEgU3RvcmVkRW1iZWRkaW5nIGNhbiB0cmF2ZWwgdGhyb3VnaCB0aGUgKHN0cmluZykgQVBJIGNhbGwgcmVzdWx0LiBMYXlvdXQ6XG4vLyBbNC1ieXRlIGxpdHRsZS1lbmRpYW4gaGVhZGVyIGxlbmd0aF1bSlNPTiBoZWFkZXJdW3JhdyB0eXBlZC1hcnJheSBwYXlsb2FkKHMpXS5cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVTdG9yZWRFbWJlZGRpbmcoc3RvcmVkOiBTdG9yZWRFbWJlZGRpbmcpOiBzdHJpbmcge1xuICAgIGxldCBoZWFkZXI6IFNlcmlhbGl6ZWRIZWFkZXI7XG4gICAgbGV0IHBheWxvYWQ6IFVpbnQ4QXJyYXlbXTtcbiAgICBpZiAoc3RvcmVkLmtpbmQgPT09IFwiZmxvYXQzMlwiKSB7XG4gICAgICAgIGhlYWRlciA9IHsga2luZDogXCJmbG9hdDMyXCIsIG1vZGVsOiBzdG9yZWQubW9kZWwgfTtcbiAgICAgICAgcGF5bG9hZCA9IFtuZXcgVWludDhBcnJheShzdG9yZWQudmFsdWVzLmJ1ZmZlciwgc3RvcmVkLnZhbHVlcy5ieXRlT2Zmc2V0LCBzdG9yZWQudmFsdWVzLmJ5dGVMZW5ndGgpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBoZWFkZXIgPSB7IGtpbmQ6IFwicXVhbnRcIiwgbW9kZWw6IHN0b3JlZC5tb2RlbCwgdHlwZTogc3RvcmVkLnR5cGUsIGdyb3VwU2l6ZTogc3RvcmVkLmdyb3VwU2l6ZSwgZGF0YUJ5dGVzOiBzdG9yZWQuZGF0YS5ieXRlTGVuZ3RoIH07XG4gICAgICAgIHBheWxvYWQgPSBbc3RvcmVkLmRhdGEsIHN0b3JlZC5zY2FsZXNdO1xuICAgIH1cbiAgICBsZXQgaGVhZGVyQnl0ZXMgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShoZWFkZXIpLCBcInV0ZjhcIik7XG4gICAgbGV0IGhlYWRlckxlbmd0aCA9IEJ1ZmZlci5hbGxvYyg0KTtcbiAgICBoZWFkZXJMZW5ndGgud3JpdGVVSW50MzJMRShoZWFkZXJCeXRlcy5sZW5ndGgsIDApO1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtoZWFkZXJMZW5ndGgsIGhlYWRlckJ5dGVzLCAuLi5wYXlsb2FkLm1hcChhc0J1ZmZlcildKS50b1N0cmluZyhcImJhc2U2NFwiKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZVN0b3JlZEVtYmVkZGluZyhiYXNlNjQ6IHN0cmluZyk6IFN0b3JlZEVtYmVkZGluZyB7XG4gICAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgXCJiYXNlNjRcIik7XG4gICAgaWYgKGJ1ZmZlci5sZW5ndGggPCA0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU2VyaWFsaXplZCBlbWJlZGRpbmcgaXMgdG9vIHNob3J0ICgke2J1ZmZlci5sZW5ndGh9IGJ5dGVzKTogJHtiYXNlNjQuc2xpY2UoMCwgMjAwKX1gKTtcbiAgICB9XG4gICAgbGV0IGhlYWRlckxlbmd0aCA9IGJ1ZmZlci5yZWFkVUludDMyTEUoMCk7XG4gICAgbGV0IGhlYWRlckVuZCA9IDQgKyBoZWFkZXJMZW5ndGg7XG4gICAgaWYgKGhlYWRlckxlbmd0aCA8PSAwIHx8IGhlYWRlckVuZCA+IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJpYWxpemVkIGVtYmVkZGluZyBoZWFkZXIgbGVuZ3RoICR7aGVhZGVyTGVuZ3RofSBpcyBpbnZhbGlkIGZvciAke2J1ZmZlci5sZW5ndGh9IGJ5dGVzOiAke2Jhc2U2NC5zbGljZSgwLCAyMDApfWApO1xuICAgIH1cbiAgICBsZXQgaGVhZGVyID0gSlNPTi5wYXJzZShidWZmZXIudG9TdHJpbmcoXCJ1dGY4XCIsIDQsIGhlYWRlckVuZCkpIGFzIFNlcmlhbGl6ZWRIZWFkZXI7XG4gICAgbGV0IHBheWxvYWQgPSBidWZmZXIuc3ViYXJyYXkoaGVhZGVyRW5kKTtcbiAgICBpZiAoaGVhZGVyLmtpbmQgPT09IFwiZmxvYXQzMlwiKSB7XG4gICAgICAgIHJldHVybiB7IGtpbmQ6IFwiZmxvYXQzMlwiLCBtb2RlbDogaGVhZGVyLm1vZGVsLCB2YWx1ZXM6IGFzRmxvYXQzMihhc0J1ZmZlcihVaW50OEFycmF5LmZyb20ocGF5bG9hZCkpKSB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiBcInF1YW50XCIsXG4gICAgICAgIG1vZGVsOiBoZWFkZXIubW9kZWwsXG4gICAgICAgIHR5cGU6IGhlYWRlci50eXBlLFxuICAgICAgICBncm91cFNpemU6IGhlYWRlci5ncm91cFNpemUsXG4gICAgICAgIGRhdGE6IFVpbnQ4QXJyYXkuZnJvbShwYXlsb2FkLnN1YmFycmF5KDAsIGhlYWRlci5kYXRhQnl0ZXMpKSxcbiAgICAgICAgc2NhbGVzOiBVaW50OEFycmF5LmZyb20ocGF5bG9hZC5zdWJhcnJheShoZWFkZXIuZGF0YUJ5dGVzKSksXG4gICAgfTtcbn1cblxuLy8gTWVhbiBvZiBzZXZlcmFsIGVtYmVkZGluZ3MgKGVuY29kZUVtYmVkZGluZyBub3JtYWxpemVzIHRoZSByZXN1bHQgdG8gYSB1bml0IGNlbnRyb2lkKS4gQm9ycm93cyBhIHBvb2xlZFxuLy8gYWNjdW11bGF0b3IuXG5leHBvcnQgZnVuY3Rpb24gYXZlcmFnZUVtYmVkZGluZ3MoZW1iZWRkaW5nczogU3RvcmVkRW1iZWRkaW5nW10sIGNvbmZpZzogeyBmb3JtYXQ6IEVtYmVkZGluZ0Zvcm1hdDsgbW9kZWw6IHN0cmluZyB9KTogU3RvcmVkRW1iZWRkaW5nIHtcbiAgICBsZXQgbGVuZ3RoID0gSW5maW5pdHk7XG4gICAgZm9yIChsZXQgZW1iZWRkaW5nIG9mIGVtYmVkZGluZ3MpIHtcbiAgICAgICAgbGVuZ3RoID0gTWF0aC5taW4obGVuZ3RoLCBlbWJlZGRpbmdMZW5ndGgoZW1iZWRkaW5nKSk7XG4gICAgfVxuICAgIGxldCBzdW0gPSBhY3F1aXJlRmxvYXQzMihsZW5ndGgpO1xuICAgIHN1bS5maWxsKDApO1xuICAgIGZvciAobGV0IGVtYmVkZGluZyBvZiBlbWJlZGRpbmdzKSB7XG4gICAgICAgIGxldCB2ZWN0b3IgPSBlbWJlZGRpbmdUb0Zsb2F0MzIoZW1iZWRkaW5nLCB0cnVlKTtcbiAgICAgICAgZm9yIChsZXQgZGltZW5zaW9uID0gMDsgZGltZW5zaW9uIDwgbGVuZ3RoOyBkaW1lbnNpb24rKykge1xuICAgICAgICAgICAgc3VtW2RpbWVuc2lvbl0gKz0gdmVjdG9yW2RpbWVuc2lvbl07XG4gICAgICAgIH1cbiAgICAgICAgcmVsZWFzZUZsb2F0MzIodmVjdG9yKTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdCA9IGVuY29kZUVtYmVkZGluZyh7IGlucHV0OiBzdW0uc3ViYXJyYXkoMCwgbGVuZ3RoKSwgZm9ybWF0OiBjb25maWcuZm9ybWF0LCBtb2RlbDogY29uZmlnLm1vZGVsIH0pO1xuICAgIHJlbGVhc2VGbG9hdDMyKHN1bSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gQSBzdGFibGUgMTYtYnl0ZSAoYmFzZTY0KSBjb250ZW50IGhhc2ggb2YgYW4gZW1iZWRkaW5nJ3MgdmFsdWVzLCBmb3IgdXNlIGFzIGEgY2VsbCBpZCBkZXJpdmVkIGZyb20gaXRzXG4vLyBjZW50cm9pZC4gSXRlcmF0ZXMgdmlhIHRoZSBhY2Nlc3NvciAodGhlIHZhbHVlIGJpdHMgYXJlIGhhc2hlZCwgc28gYW55IGZvcm1hdCBoYXNoZXMgY29uc2lzdGVudGx5KS5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoRW1iZWRkaW5nKHN0b3JlZDogU3RvcmVkRW1iZWRkaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdmVjdG9yID0gZW1iZWRkaW5nVG9GbG9hdDMyKHN0b3JlZCwgdHJ1ZSk7XG4gICAgbGV0IGxlbmd0aCA9IHZlY3Rvci5sZW5ndGg7XG4gICAgbGV0IGxhbmVzID0gbmV3IFVpbnQzMkFycmF5KFsyMTY2MTM2MjYxLCAyNjU0NDM1NzYxLCA0MDUwMywgMzI2NjQ4OTkxN10pO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgZjMyU2NyYXRjaFswXSA9IHZlY3RvcltpbmRleF07XG4gICAgICAgIGxldCBiaXRzID0gaTMyU2NyYXRjaFswXTtcbiAgICAgICAgZm9yIChsZXQgbGFuZSA9IDA7IGxhbmUgPCBsYW5lcy5sZW5ndGg7IGxhbmUrKykge1xuICAgICAgICAgICAgbGFuZXNbbGFuZV0gPSBNYXRoLmltdWwobGFuZXNbbGFuZV0gXiAoYml0cyArIGxhbmUgKiAxMzEgKyBpbmRleCksIDE2Nzc3NjE5KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWxlYXNlRmxvYXQzMih2ZWN0b3IpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShsYW5lcy5idWZmZXIpLnRvU3RyaW5nKFwiYmFzZTY0XCIpO1xufVxuIl19
340
- /* _JS_SOURCE_HASH = "252bf7f8cc3cfd27bebc9b3e1ddee9aa39631ffeffa137c02456c63deb496996"; */
340
+ /* _JS_SOURCE_HASH = "667dde839f46c7c3f10ea92a2c74c5c2c98824118f56e021de748b660953952e"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.namespaceDatabase = void 0;
4
4
  function namespaceDatabase(database, into) {
@@ -10,4 +10,4 @@ function namespaceDatabase(database, into) {
10
10
  }
11
11
  exports.namespaceDatabase = namespaceDatabase;
12
12
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJEYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPQSxTQUFnQixpQkFBaUIsQ0FDN0IsUUFBd0IsRUFDeEIsSUFBeUI7SUFFekIsT0FBTztRQUNILFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQztRQUN2RixVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDeEUsQ0FBQztBQUNOLENBQUM7QUFURCw4Q0FTQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHVuZGVmaW5lZCBmcm9tIGEgcmVhZCBtZWFucyBcIm5vdCBzeW5jZWQgeWV0XCIsIE5PVCBcImFic2VudFwiIOKAlCBzdG9yYWdlIGluaXRpYWxpemVzIG9uIGl0cyBvd24uIFNvIHJlYWQgZXZlcnl0aGluZyBhIHN0YWdlIG5lZWRzIGluIG9uZSByZWFkRGF0YSBhbmQgYmFpbCBpZiB0aGUgd2hvbGUgcmVzdWx0IGlzIHVuZGVmaW5lZDsgdGhlIGRhdGFiYXNlIG5ldmVyIHJldHVybnMgYW4gaW5kaXZpZHVhbCB1bnN5bmNlZCB2YWx1ZSBpbnNpZGUgYW4gb3RoZXJ3aXNlLXN1Y2Nlc3NmdWwgcmVhZC5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2U8Um9vdD4ge1xuICAgIHJlYWREYXRhOiA8VmFsdWU+KGRlcmVmOiAocm9vdDogUm9vdCkgPT4gVmFsdWUpID0+IFZhbHVlIHwgdW5kZWZpbmVkO1xuICAgIHdyaXRlRGF0YTogPFZhbHVlPihkZXJlZjogKHJvb3Q6IFJvb3QpID0+IFZhbHVlLCBuZXdWYWx1ZTogVmFsdWUpID0+IHZvaWQ7XG4gICAgZGVsZXRlRGF0YTogKGRlcmVmOiAocm9vdDogUm9vdCkgPT4gdW5rbm93bikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hbWVzcGFjZURhdGFiYXNlPFJvb3QsIFN1Yj4oXG4gICAgZGF0YWJhc2U6IERhdGFiYXNlPFJvb3Q+LFxuICAgIGludG86IChyb290OiBSb290KSA9PiBTdWIsXG4pOiBEYXRhYmFzZTxTdWI+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICByZWFkRGF0YTogKGRlcmVmKSA9PiBkYXRhYmFzZS5yZWFkRGF0YShyb290ID0+IGRlcmVmKGludG8ocm9vdCkpKSxcbiAgICAgICAgd3JpdGVEYXRhOiAoZGVyZWYsIG5ld1ZhbHVlKSA9PiBkYXRhYmFzZS53cml0ZURhdGEocm9vdCA9PiBkZXJlZihpbnRvKHJvb3QpKSwgbmV3VmFsdWUpLFxuICAgICAgICBkZWxldGVEYXRhOiAoZGVyZWYpID0+IGRhdGFiYXNlLmRlbGV0ZURhdGEocm9vdCA9PiBkZXJlZihpbnRvKHJvb3QpKSksXG4gICAgfTtcbn1cbiJdfQ==
13
- /* _JS_SOURCE_HASH = "93a620d26b6a59665b5f7dab689d9739693a4990e1c4781abcddc6cda24bda11"; */
13
+ /* _JS_SOURCE_HASH = "a66e8405ab4b7b49928062632c915e26904e833e3d97a1f7e7f635613bb15809"; */