socket-function 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/SocketFunction.d.ts +1 -1
  2. package/SocketFunctionTypes.d.ts +1 -1
  3. package/dist/SetProcessVariables.ts.cache +2 -2
  4. package/dist/SocketFunction.ts.cache +2 -2
  5. package/hot/HotReloadController.d.ts +3 -3
  6. package/hot/dist/HotReloadController.ts.cache +2 -2
  7. package/index.d.ts +9 -9
  8. package/package.json +1 -1
  9. package/require/CSSShim.d.ts +1 -1
  10. package/require/RequireController.d.ts +2 -2
  11. package/require/compileFlags.d.ts +1 -1
  12. package/require/dist/RequireController.ts.cache +2 -2
  13. package/require/dist/compileFlags.ts.cache +2 -2
  14. package/require/dist/extMapper.ts.cache +2 -2
  15. package/require/dist/require.ts.cache +2 -2
  16. package/require/require.d.ts +1 -1
  17. package/src/JSONLACKS/dist/JSONLACKS.ts.cache +2 -2
  18. package/src/callManager.d.ts +1 -1
  19. package/src/dist/CallFactory.ts.cache +2 -2
  20. package/src/dist/Zip.ts.cache +2 -2
  21. package/src/dist/bits.ts.cache +2 -2
  22. package/src/dist/buffers.ts.cache +2 -2
  23. package/src/dist/caching.ts.cache +2 -2
  24. package/src/dist/callHTTPHandler.ts.cache +2 -2
  25. package/src/dist/callManager.ts.cache +2 -2
  26. package/src/dist/certStore.ts.cache +2 -2
  27. package/src/dist/fixLargeNetworkCalls.ts.cache +2 -2
  28. package/src/dist/forwardPort.ts.cache +2 -2
  29. package/src/dist/https.ts.cache +2 -2
  30. package/src/dist/nodeCache.ts.cache +2 -2
  31. package/src/dist/nodeProxy.ts.cache +2 -2
  32. package/src/dist/protocolNegotiation.ts.cache +2 -2
  33. package/src/dist/tlsParsing.ts.cache +2 -2
  34. package/src/dist/webSocketServer.ts.cache +2 -2
  35. package/src/dist/websocketFactory.ts.cache +2 -2
  36. package/src/lz4/dist/LZ4.ts.cache +2 -2
  37. package/time/dist/trueTimeShim.ts.cache +86 -35
  38. package/time/trueTimeShim.ts +78 -27
@@ -1,4 +1,4 @@
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";
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"; 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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -927,4 +927,4 @@ const decompressObjLZ4 = (0, measure_1.measureWrap)(async function wireCallDecom
927
927
  throw new Error(`Unknown compression type ${type}`);
928
928
  });
929
929
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FsbEZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJDYWxsRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLCtDQUFtRjtBQUNuRixpQ0FBOEg7QUFDOUgseURBQTBFO0FBQzFFLHNEQUFtRDtBQUVuRCwyQ0FBcUY7QUFFckYsdUNBQWlDO0FBQ2pDLHNEQUFrRTtBQUNsRSxpRUFBZ0Y7QUFDaEYseUNBQWlFO0FBQ2pFLGdEQUErRDtBQUcvRCwwREFBa0Q7QUFDbEQsaURBQW1GO0FBRW5GLCtCQUE0QjtBQUM1QiwrREFBeUU7QUFDekUsWUFBWSxDQUFDLEdBQUcsRUFBRSxtREFBUSxXQUFXLEdBQUMsQ0FBQyxDQUFDO0FBRXhDLElBQUEsc0JBQU8sRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUU5QyxnR0FBZ0c7QUFDaEcsd0JBQXdCO0FBQ3hCLDJGQUEyRjtBQUMzRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUM7QUE2RDdCLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFcEMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDekIsSUFBSSxzQkFBc0IsR0FBRyxDQUFDLENBQUM7QUFDL0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMxQyxJQUFJLG9CQUFvQixHQUFzQyxFQUFFLENBQUM7QUFDakUsU0FBZ0Isc0JBQXNCO0lBQ2xDLElBQUksS0FBSyxHQUFHLHNCQUFzQixDQUFDO0lBQ25DLHNCQUFzQixHQUFHLENBQUMsQ0FBQztJQUMzQixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBSkQsd0RBSUM7QUFDRCxTQUFnQixtQkFBbUI7SUFDL0IsT0FBTyxnQkFBZ0IsQ0FBQztBQUM1QixDQUFDO0FBRkQsa0RBRUM7QUFDRCxTQUFnQixnQkFBZ0I7SUFD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QUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDeEQsTUFBTSxJQUFJLElBQUksQ0FBQztZQUNuQixDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNiLElBQUksTUFBTSxHQUFHLE1BQU0sK0JBQWMsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3hELENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FsbGVyQ29udGV4dCwgQ2FsbGVyQ29udGV4dEJhc2UsIENhbGxUeXBlLCBGdWxsQ2FsbFR5cGUgfSBmcm9tIFwiLi4vU29ja2V0RnVuY3Rpb25UeXBlc1wiO1xuaW1wb3J0ICogYXMgd3MgZnJvbSBcIndzXCI7XG5pbXBvcnQgeyBnZXRDYWxsRmxhZ3MsIHBlcmZvcm1Mb2NhbENhbGwsIHNob3VsZENvbXByZXNzQ2FsbCB9IGZyb20gXCIuL2NhbGxNYW5hZ2VyXCI7XG5pbXBvcnQgeyBjb252ZXJ0RXJyb3JTdGFja1RvRXJyb3IsIGZvcm1hdE51bWJlclN1ZmZpeGVkLCBpc0J1ZmZlclR5cGUsIGlzTm9kZSwgbGlzdCwgdGltZUluSG91ciwgdGltZUluTWludXRlIH0gZnJvbSBcIi4vbWlzY1wiO1xuaW1wb3J0IHsgY3JlYXRlV2Vic29ja2V0RmFjdG9yeSwgZ2V0VExTU29ja2V0IH0gZnJvbSBcIi4vd2Vic29ja2V0RmFjdG9yeVwiO1xuaW1wb3J0IHsgU29ja2V0RnVuY3Rpb24gfSBmcm9tIFwiLi4vU29ja2V0RnVuY3Rpb25cIjtcbmltcG9ydCAqIGFzIHRscyBmcm9tIFwidGxzXCI7XG5pbXBvcnQgeyBnZXRDbGllbnROb2RlSWQsIGdldE5vZGVJZExvY2F0aW9uLCByZWdpc3Rlck5vZGVDbGllbnQgfSBmcm9tIFwiLi9ub2RlQ2FjaGVcIjtcbmltcG9ydCBkZWJ1Z2JyZWFrIGZyb20gXCJkZWJ1Z2JyZWFrXCI7XG5pbXBvcnQgeyBsYXp5IH0gZnJvbSBcIi4vY2FjaGluZ1wiO1xuaW1wb3J0IHsgYmx1ZSwgZ3JlZW4sIHJlZCwgeWVsbG93IH0gZnJvbSBcIi4vZm9ybWF0dGluZy9sb2dDb2xvcnNcIjtcbmltcG9ydCB7IGlzU3BsaXRhYmxlQXJyYXksIG1hcmtBcnJheUFzU3BsaXRhYmxlIH0gZnJvbSBcIi4vZml4TGFyZ2VOZXR3b3JrQ2FsbHNcIjtcbmltcG9ydCB7IGRlbGF5LCBydW5JbmZpbml0ZVBvbGwsIHJ1bkluU2VyaWFsIH0gZnJvbSBcIi4vYmF0Y2hpbmdcIjtcbmltcG9ydCB7IGZvcm1hdE51bWJlciwgZm9ybWF0VGltZSB9IGZyb20gXCIuL2Zvcm1hdHRpbmcvZm9ybWF0XCI7XG5pbXBvcnQgemxpYiBmcm9tIFwiemxpYlwiO1xuaW1wb3J0IHBha28gZnJvbSBcInBha29cIjtcbmltcG9ydCB7IHNldEZsYWcgfSBmcm9tIFwiLi4vcmVxdWlyZS9jb21waWxlRmxhZ3NcIjtcbmltcG9ydCB7IG1lYXN1cmVGbmMsIG1lYXN1cmVXcmFwLCByZWdpc3Rlck1lYXN1cmVJbmZvIH0gZnJvbSBcIi4vcHJvZmlsaW5nL21lYXN1cmVcIjtcbmltcG9ydCB7IE1heWJlUHJvbWlzZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBaaXAgfSBmcm9tIFwiLi9aaXBcIjtcbmltcG9ydCB7IGRlY29kZVByb3RvY29sLCBwcm9wb3NlUHJvdG9jb2xzIH0gZnJvbSBcIi4vcHJvdG9jb2xOZWdvdGlhdGlvblwiO1xuc2V0SW1tZWRpYXRlKCgpID0+IGltcG9ydChcIi4vbHo0L0xaNFwiKSk7XG5cbnNldEZsYWcocmVxdWlyZSwgXCJwYWtvXCIsIFwiYWxsb3djbGllbnRcIiwgdHJ1ZSk7XG5cbi8vIE5PVEU6IElmIGl0IGlzIHRvbyBsb3csIGFuZCB0b28gbWFueSBzZXJ2ZXJzIGRpc2Nvbm5lY3QsIHdlIGNhbiBlYXNpbHkgc3BlbmQgMTAwJSBvZiBvdXIgdGltZVxuLy8gIHRyeWluZyB0byByZWNvbm5lY3QuXG4vLyAgKE9yLi4uIG1heWJlIHRoZSBkZWxheSBpcyBqdXN0IHdhaXRpbmcsIGFuZCB3ZSBhcmVuJ3QgYWN0dWFsbHkgb3ZlcmxvYWRpbmcgdGhlIHNlcnZlcj8pXG5jb25zdCBNSU5fUkVUUllfREVMQVkgPSA1MDAwO1xuXG50eXBlIEludGVybmFsQ2FsbFR5cGUgPSBGdWxsQ2FsbFR5cGUgJiB7XG4gICAgc2VxTnVtOiBudW1iZXI7XG4gICAgaXNSZXR1cm46IGZhbHNlO1xuICAgIGlzQXJnc0NvbXByZXNzZWQ/OiBib29sZWFuIHwgXCJMWjRcIiB8IFwiemlwXCI7XG59XG5cbnR5cGUgSW50ZXJuYWxSZXR1cm5UeXBlID0ge1xuICAgIGlzUmV0dXJuOiB0cnVlO1xuICAgIHJlc3VsdDogdW5rbm93bjtcbiAgICBlcnJvcj86IHN0cmluZztcbiAgICBzZXFOdW06IG51bWJlcjtcbiAgICBpc1Jlc3VsdENvbXByZXNzZWQ/OiBib29sZWFuIHwgXCJMWjRcIiB8IFwiemlwXCI7XG59O1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsbEZhY3Rvcnkge1xuICAgIG5vZGVJZDogc3RyaW5nO1xuICAgIHJlYWxOb2RlSWQ/OiBzdHJpbmc7XG4gICAgbGFzdENsb3NlZDogbnVtYmVyO1xuICAgIGNsb3NlZEZvcmV2ZXI/OiBib29sZWFuO1xuICAgIGlzQ29ubmVjdGVkPzogYm9vbGVhbjtcbiAgICByZWNlaXZlZEluaXRpYWxpemVTdGF0ZT86IEluaXRpYWxpemVTdGF0ZTtcbiAgICAvLyBUcnVlIGlmIHRoZSBjb25uZWN0aW9uIHdhcyBlc3RhYmxpc2hlZCB3aXRoIGEgbmVnb3RpYXRlZFxuICAgIC8vIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgKHNvIHRoZSBsZWdhY3kgaW5pdGlhbGl6ZSBwYWNrZXQgc2hvdWxkIGJlIHNraXBwZWQpLlxuICAgIHByb3RvY29sTmVnb3RpYXRlZD86IGJvb2xlYW47XG4gICAgLy8gTk9URTogTWF5IG9yIG1heSBub3QgaGF2ZSByZWNvbm5lY3Rpb24gb3IgcmV0cnkgbG9naWMgaW5zaWRlIG9mIHBlcmZvcm1DYWxsLlxuICAgIC8vICBUcmlnZ2VyIHBlcmZvcm1Mb2NhbENhbGwgb24gdGhlIG90aGVyIHNpZGUgb2YgdGhlIGNvbm5lY3Rpb25cbiAgICBwZXJmb3JtQ2FsbChjYWxsOiBDYWxsVHlwZSk6IFByb21pc2U8dW5rbm93bj47XG4gICAgb25OZXh0RGlzY29ubmVjdChjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQ7XG4gICAgZGlzY29ubmVjdCgpOiB2b2lkO1xuICAgIC8vIElmIHdlIGNoYW5nZSB0aGUgbm9kZSBJRCB3ZSBuZWVkIHRvIHJlY3JlYXRlIHRoaXMgb2JqZWN0LCBlc3NlbnRpYWxseSB0aGlzIG9iamVjdCBzaG91bGQgYmUgaW1tdXRhYmxlLiBJIGZvcmdldCB3aHkgd2Ugd2FudGVkIHRoaXMuIEkgdGhpbmsgaXQncyBiZWNhdXNlIHdlIGRpZG4ndCBrbm93IGZvciBzdXJlIGlmIG5vZGUgSUQgd291bGQgYmUgdW5pcXVlLCBidXQgaXQgd2lsbCBiZS4gXG4gICAgY29ubmVjdGlvbklkOiB7IG5vZGVJZDogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZGVySW50ZXJmYWNlIHtcbiAgICBub2RlSWQ/OiBzdHJpbmc7XG4gICAgLy8gT25seSBzZXQgQUZURVIgXCJvcGVuXCIgKGlmIHNldCBhdCBhbGwsIGFzIGluIHRoZSBicm93c2VyIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIHRoZSBzb2NrZXQpLlxuICAgIF9zb2NrZXQ/OiB0bHMuVExTU29ja2V0O1xuICAgIC8vIFRoZSBjaG9zZW4gU2VjLVdlYlNvY2tldC1Qcm90b2NvbCB2YWx1ZSAoc2V0IGFmdGVyIFwib3BlblwiIGJ5IGJvdGggTm9kZSBgd3NgXG4gICAgLy8gYW5kIHRoZSBicm93c2VyIFdlYlNvY2tldCkuIEVtcHR5IHN0cmluZyBtZWFucyBub25lIHdhcyBuZWdvdGlhdGVkLlxuICAgIHByb3RvY29sPzogc3RyaW5nO1xuXG4gICAgc2VuZChkYXRhOiBzdHJpbmcgfCBCdWZmZXIpOiB2b2lkO1xuICAgIGNsb3NlKCk6IHZvaWQ7XG5cbiAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50OiBcIm9wZW5cIiwgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB2b2lkO1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnQ6IFwiY2xvc2VcIiwgbGlzdGVuZXI6ICgpID0+IHZvaWQpOiB2b2lkO1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnQ6IFwiZXJyb3JcIiwgbGlzdGVuZXI6IChlcnI6IHsgbWVzc2FnZTogc3RyaW5nIH0pID0+IHZvaWQpOiB2b2lkO1xuICAgIGFkZEV2ZW50TGlzdGVuZXIoZXZlbnQ6IFwibWVzc2FnZVwiLCBsaXN0ZW5lcjogKGRhdGE6IHdzLlJhd0RhdGEgfCB3cy5NZXNzYWdlRXZlbnQgfCBzdHJpbmcpID0+IHZvaWQpOiB2b2lkO1xuXG4gICAgcmVhZHlTdGF0ZTogbnVtYmVyO1xuXG4gICAgcGluZz8oKTogdm9pZDtcbn1cblxudHlwZSBJbml0aWFsaXplU3RhdGUgPSB7XG4gICAgc3VwcG9ydHNMWjQ/OiBib29sZWFuO1xufTtcblxuY29uc3QgSU5JVElBTElaRV9TVEFURV9TRVFfTlVNID0gLTE7XG5cbmxldCBwZW5kaW5nQ2FsbENvdW50ID0gMDtcbmxldCBoYXJ2ZXN0YWJsZUZhaWxlZENhbGxzID0gMDtcbmNvbnN0IENBTExfVElNRVNfTElNSVQgPSAxMDAwICogMTAwMCAqIDEwO1xubGV0IGhhcnZlc3RhYmxlQ2FsbFRpbWVzOiB7IHN0YXJ0OiBudW1iZXI7IGVuZDogbnVtYmVyOyB9W10gPSBbXTtcbmV4cG9ydCBmdW5jdGlvbiBoYXJ2ZXN0RmFpbGVkQ2FsbENvdW50KCkge1xuICAgIGxldCBjb3VudCA9IGhhcnZlc3RhYmxlRmFpbGVkQ2FsbHM7XG4gICAgaGFydmVzdGFibGVGYWlsZWRDYWxscyA9IDA7XG4gICAgcmV0dXJuIGNvdW50O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFBlbmRpbmdDYWxsQ291bnQoKSB7XG4gICAgcmV0dXJuIHBlbmRpbmdDYWxsQ291bnQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaGFydmVzdENhbGxUaW1lcygpIHtcbiAgICBsZXQgdGltZXMgPSBoYXJ2ZXN0YWJsZUNhbGxUaW1lcztcbiAgICBoYXJ2ZXN0YWJsZUNhbGxUaW1lcyA9IFtdO1xuICAgIHJldHVybiB0aW1lcztcbn1cbnJ1bkluZmluaXRlUG9sbCh0aW1lSW5NaW51dGUgKiAxNSwgKCkgPT4ge1xuICAgIGlmIChoYXJ2ZXN0YWJsZUNhbGxUaW1lcy5sZW5ndGggPiBDQUxMX1RJTUVTX0xJTUlUKSB7XG4gICAgICAgIGhhcnZlc3RhYmxlQ2FsbFRpbWVzID0gaGFydmVzdGFibGVDYWxsVGltZXMuc2xpY2UoLUNBTExfVElNRVNfTElNSVQpO1xuICAgIH1cbn0pO1xuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDYWxsRmFjdG9yeShcbiAgICB3ZWJTb2NrZXRCYXNlOiBTZW5kZXJJbnRlcmZhY2UgfCB1bmRlZmluZWQsXG4gICAgLy8gVGhlIG5vZGUgaWQgd2UgYXJlIGNvbm5lY3RpbmcgdG8gKG9yIHRoYXQgY29ubmVjdGVkIHRvIHVzKVxuICAgIG5vZGVJZDogc3RyaW5nLFxuICAgIC8vIFRoZSBub2RlIGlkIHRoYXQgd2Ugd2VyZSBjb250YWN0ZWQgb25cbiAgICBsb2NhbE5vZGVJZCA9IFwiXCIsXG4pOiBQcm9taXNlPENhbGxGYWN0b3J5PiB7XG4gICAgbGV0IG5pY2VDb25uZWN0aW9uTmFtZSA9IG5vZGVJZDtcblxuICAgIGNvbnN0IGNyZWF0ZVdlYnNvY2tldCA9IGNyZWF0ZVdlYnNvY2tldEZhY3RvcnkoKTtcbiAgICBjb25zdCByZWdpc3Rlck9uY2UgPSBsYXp5KCgpID0+IHJlZ2lzdGVyTm9kZUNsaWVudChjYWxsRmFjdG9yeSkpO1xuXG4gICAgbGV0IGNhblJlY29ubmVjdCA9ICEhZ2V0Tm9kZUlkTG9jYXRpb24obm9kZUlkKTtcblxuICAgIGxldCBwZW5kaW5nQ2FsbHM6IE1hcDxudW1iZXIsIHtcbiAgICAgICAgZGF0YTogQnVmZmVyW107XG4gICAgICAgIGNhbGw6IEludGVybmFsQ2FsbFR5cGU7XG4gICAgICAgIGNhbGxiYWNrOiAocmVzdWx0SlNPTjogSW50ZXJuYWxSZXR1cm5UeXBlKSA9PiB2b2lkO1xuICAgIH0+ID0gbmV3IE1hcCgpO1xuICAgIC8vIE5PVEU6IEl0IGlzIGltcG9ydGFudCB0byBtYWtlIHRoaXMgYXMgcmFuZG9tIGFzIHBvc3NpYmxlLCB0byBwcmV2ZW50XG4gICAgLy8gIHJlY29ubmVjdGlvbnMgZHVlcyB0byBhIHByb2Nlc3MgYmVpbmcgcmVzZXQgY2F1c2luZyBzZXFOdW0gY29sbGlzaW9uc1xuICAgIC8vICBpbiByZXR1cm4gY2FsbHMuXG4gICAgbGV0IG5leHRTZXFOdW0gPSBEYXRlLm5vdygpICsgTWF0aC5yYW5kb20oKTtcblxuICAgIC8vIE5PVEU6IEknbSBub3Qgc3VyZSBpZiB0aGlzIGlzIG5lZWRlZCwgSSB0aG91Z2h0IGl0IHdhcywgYnV0Li4uIG5vdyBJIHRoaW5rXG4gICAgLy8gIGl0IHByb2JhYmx5IGlzbid0Li4uXG4gICAgLy8gaWYgKHdlYlNvY2tldEJhc2U/LnJlYWR5U3RhdGUgPT09IDEgLyogT1BFTiAqLyAmJiB3ZWJTb2NrZXRCYXNlLnBpbmcpIHtcbiAgICAvLyAgICAgLy8gSGVhcnRiZWF0IGxvb3AsIG90aGVyd2lzZSBvbkRpc2Nvbm5lY3QgaXMgbmV2ZXIgY2FsbGVkLlxuICAgIC8vICAgICAoKGFzeW5jICgpID0+IHtcbiAgICAvLyAgICAgICAgIHdoaWxlICh3ZWJTb2NrZXRCYXNlPy5yZWFkeVN0YXRlID09PSAxIC8qIE9QRU4gKi8gJiYgd2ViU29ja2V0QmFzZS5waW5nKSB7XG4gICAgLy8gICAgICAgICAgICAgYXdhaXQgZGVsYXkoMTAwMCAqIDYwKTtcbiAgICAvLyAgICAgICAgICAgICB3ZWJTb2NrZXRCYXNlLnBpbmc/LigpO1xuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICB9KSkoKS5jYXRjaCgoKSA9PiB7IH0pO1xuICAgIC8vIH1cblxuICAgIGxldCBsYXN0Q29ubmVjdGlvbkF0dGVtcHQgPSAwO1xuXG4gICAgbGV0IGNhbGxlckNvbnRleHQ6IENhbGxlckNvbnRleHRCYXNlID0ge1xuICAgICAgICBub2RlSWQsXG4gICAgICAgIGxvY2FsTm9kZUlkXG4gICAgfTtcblxuICAgIGxldCBkaXNjb25uZWN0Q2FsbGJhY2tzID0gbmV3IFNldDwoKSA9PiB2b2lkPigpO1xuICAgIGZ1bmN0aW9uIG9uTmV4dERpc2Nvbm5lY3QoY2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgZGlzY29ubmVjdENhbGxiYWNrcy5hZGQoY2FsbGJhY2spO1xuICAgIH1cblxuICAgIGxldCBjYWxsRmFjdG9yeTogQ2FsbEZhY3RvcnkgPSB7XG4gICAgICAgIG5vZGVJZCxcbiAgICAgICAgbGFzdENsb3NlZDogMCxcbiAgICAgICAgY29ubmVjdGlvbklkOiB7IG5vZGVJZCB9LFxuICAgICAgICByZWNlaXZlZEluaXRpYWxpemVTdGF0ZTogdW5kZWZpbmVkLFxuICAgICAgICBvbk5leHREaXNjb25uZWN0LFxuICAgICAgICBkaXNjb25uZWN0KCkge1xuICAgICAgICAgICAgY2FuUmVjb25uZWN0ID0gZmFsc2U7XG4gICAgICAgICAgICBjYWxsRmFjdG9yeS5jbG9zZWRGb3JldmVyID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmICh3ZWJTb2NrZXRQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgd2ViU29ja2V0UHJvbWlzZS50aGVuKHdzID0+IHdzLmNsb3NlKCkpLmNhdGNoKCgpID0+IHsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIHBlcmZvcm1DYWxsKGNhbGw6IENhbGxUeXBlKSB7XG4gICAgICAgICAgICBsZXQgc2VxTnVtID0gbmV4dFNlcU51bSsrO1xuICAgICAgICAgICAgbGV0IGZ1bGxDYWxsOiBJbnRlcm5hbENhbGxUeXBlID0ge1xuICAgICAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgICAgICBpc1JldHVybjogZmFsc2UsXG4gICAgICAgICAgICAgICAgYXJnczogY2FsbC5hcmdzLFxuICAgICAgICAgICAgICAgIGNsYXNzR3VpZDogY2FsbC5jbGFzc0d1aWQsXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBjYWxsLmZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICBzZXFOdW0sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IGRhdGE6IEJ1ZmZlcltdO1xuICAgICAgICAgICAgbGV0IG9yaWdpbmFsQXJncyA9IGNhbGwuYXJncztcbiAgICAgICAgICAgIGxldCB0aW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGxldCBzZW5kU3RhdHM6IENvbXByZXNzaW9uU3RhdHMgPSB7XG4gICAgICAgICAgICAgICAgdW5jb21wcmVzc2VkU2l6ZTogMCxcbiAgICAgICAgICAgICAgICBjb21wcmVzc2VkU2l6ZTogMCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChjYWxsRmFjdG9yeS5yZWNlaXZlZEluaXRpYWxpemVTdGF0ZT8uc3VwcG9ydHNMWjQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXByZXNzTW9kZSA9IHNob3VsZENvbXByZXNzQ2FsbChmdWxsQ2FsbCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGl0J3MgdW5kZWZpbmVkLCB0aGVuIHdlIGNvbXByZXNzIGl0LiBXZSBiYXNpY2FsbHkgYWx3YXlzIHdhbnQgdG8gY29tcHJlc3MgZnJvbSBub3cgb24sIGJlY2F1c2UgTFo0IGlzIHNvIGZhc3QuIFxuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcHJlc3NNb2RlICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbENhbGwuYXJncyA9IGF3YWl0IGNvbXByZXNzT2JqTFo0KGZ1bGxDYWxsLmFyZ3MsIHNlbmRTdGF0cykgYXMgYW55O1xuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbENhbGwuaXNBcmdzQ29tcHJlc3NlZCA9IFwiTFo0XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQ29tcHJlc3NDYWxsKGZ1bGxDYWxsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbENhbGwuYXJncyA9IGF3YWl0IGNvbXByZXNzT2JqKGZ1bGxDYWxsLmFyZ3MsIHNlbmRTdGF0cykgYXMgYW55O1xuICAgICAgICAgICAgICAgICAgICAgICAgZnVsbENhbGwuaXNBcmdzQ29tcHJlc3NlZCA9IFwiemlwXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGRhdGFNYXliZVByb21pc2UgPSBTb2NrZXRGdW5jdGlvbi5XSVJFX1NFUklBTElaRVIuc2VyaWFsaXplKGZ1bGxDYWxsKTtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YU1heWJlUHJvbWlzZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGF3YWl0IGRhdGFNYXliZVByb21pc2U7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFNYXliZVByb21pc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghc2VuZFN0YXRzLmNvbXByZXNzZWRTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3RhbFNpemUgPSAwO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBkIG9mIGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBkLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzZW5kU3RhdHMudW5jb21wcmVzc2VkU2l6ZSA9IHRvdGFsU2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgc2VuZFN0YXRzLmNvbXByZXNzZWRTaXplID0gdG90YWxTaXplO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhZGRTZW5kU3RhdHMoc2VuZFN0YXRzKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3Igc2VyaWFsaXppbmcgZGF0YSBmb3IgY2FsbCAke2NhbGwuY2xhc3NHdWlkfS4ke2NhbGwuZnVuY3Rpb25OYW1lfVxcbiR7ZS5zdGFja31gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRpbWUgPSBEYXRlLm5vdygpIC0gdGltZTtcbiAgICAgICAgICAgIGxldCBzaXplID0gZGF0YS5tYXAoeCA9PiB4Lmxlbmd0aCkucmVkdWNlKChhLCBiKSA9PiBhICsgYiwgMCk7XG4gICAgICAgICAgICBpZiAodGltZSA+IFNvY2tldEZ1bmN0aW9uLldJUkVfV0FSTl9USU1FKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVkKGBTbG93IHNlcmlhbGl6ZSwgdG9vayAke2Zvcm1hdFRpbWUodGltZSl9IHRvIHNlcmlhbGl6ZSAke2Zvcm1hdE51bWJlcihzaXplKX0gYnl0ZXMuIEZvciAke2NhbGwuY2xhc3NHdWlkfS4ke2NhbGwuZnVuY3Rpb25OYW1lfWApKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNpemUgPiBTb2NrZXRGdW5jdGlvbi5NQVhfTUVTU0FHRV9TSVpFICogMS41KSB7XG4gICAgICAgICAgICAgICAgbGV0IHNwbGl0QXJnSW5kZXggPSBvcmlnaW5hbEFyZ3MuZmluZEluZGV4KGlzU3BsaXRhYmxlQXJyYXkpO1xuICAgICAgICAgICAgICAgIGlmIChzcGxpdEFyZ0luZGV4ID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coeWVsbG93KGBTcGxpdHRpbmcgbGFyZ2UgY2FsbCBkdWUgdG8gbGFyZ2UgYXJnczogJHtjYWxsLmNsYXNzR3VpZH0uJHtjYWxsLmZ1bmN0aW9uTmFtZX1gKSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBTUExJVF9HUk9VUFMgPSAxMDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNwbGl0QXJnID0gb3JpZ2luYWxBcmdzW3NwbGl0QXJnSW5kZXhdIGFzIHVua25vd25bXTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN1YkNhbGxzID0gbGlzdChTUExJVF9HUk9VUFMpLm1hcChpbmRleCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBNYXRoLmZsb29yKGluZGV4IC8gU1BMSVRfR1JPVVBTICogc3BsaXRBcmcubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbmQgPSBNYXRoLmZsb29yKChpbmRleCArIDEpIC8gU1BMSVRfR1JPVVBTICogc3BsaXRBcmcubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcGxpdEFyZy5zbGljZShzdGFydCwgZW5kKTtcbiAgICAgICAgICAgICAgICAgICAgfSkuZmlsdGVyKHggPT4geC5sZW5ndGggPiAwKTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgY2FsbHMgPSBzdWJDYWxscy5tYXAoYXN5bmMgc3BsaXRMaXN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJDYWxsID0geyAuLi5jYWxsIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJDYWxsLmFyZ3MgPSBzdWJDYWxsLmFyZ3Muc2xpY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YkNhbGwuYXJnc1tzcGxpdEFyZ0luZGV4XSA9IG1hcmtBcnJheUFzU3BsaXRhYmxlKHNwbGl0TGlzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBjYWxsRmFjdG9yeS5wZXJmb3JtQ2FsbChzdWJDYWxsKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChjYWxscyk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGNhbGxzKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRWguLi4gd2UgQ09VTEQgcmV0dXJuIHRoZSBhcnJheSBvZiByZXN1bHRzLCBidXQuLi4gdGhlbiB0aGUgcmVzdWx0IHdvdWxkIHNvbWV0aW1lcyBiZSBhbiBhcnJheSxcbiAgICAgICAgICAgICAgICAgICAgLy8gIHNvbWUgdGltZXMgbm90LCBzbywgaXQgaXMgYmV0dGVyIHRvIHJldHVybiBhIHN0cmluZyB3aGljaCB3aWxsIG1ha2UgaXQgbW9yZSBjbGVhciB3aHkgaXQgc29tZXRpbWVzIHZhcmllcy5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiQ0FMTFNfU1BMSVRfRFVFX1RPX0xBUkdFX0FSR1NcIjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbGwgdG9vIGxhcmdlIHRvIHNlbmQgKCR7Y2FsbC5jbGFzc0d1aWR9LiR7Y2FsbC5mdW5jdGlvbk5hbWV9LCBzaXplOiAke2Zvcm1hdE51bWJlcihzaXplKX0gPiAke2Zvcm1hdE51bWJlcihTb2NrZXRGdW5jdGlvbi5NQVhfTUVTU0FHRV9TSVpFKX0pLiBJZiB5b3UgbmVlZCB0byBoYW5kbGUgdmVyeSBsYXJnZSBzdGF0aWMgZGF0YSB1c2Ugc29tZSBleHRlcm5hbCBzZXJ2aWNlLCBzdWNoIGFzIEJhY2tibGF6ZSBCMiBvciBBV1MgUzMuIE9yIGNvbnNpZGVyIGZyYWdtZW50aW5nIGRhdGEgYXQgYW4gYXBwbGljYXRpb24gbGV2ZWwsIGJlY2F1c2Ugc2VuZGluZyBsYXJnZSBkYXRhIHdpbGwgY2F1c2UgbGFyZ2UgbGFnIHNwaWtlcyBmb3Igb3RoZXIgY2xpZW50cyB1c2luZyB0aGlzIHNlcnZlci4gT3IsIGlmIGFic29sdXRlbHkgcmVxdWlyZWQsIHNldCBTb2NrZXRGdW5jdGlvbi5NQVhfTUVTU0FHRV9TSVpFIHRvIGEgaGlnaGVyIHZhbHVlLmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmVzdWx0UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nQ2FsbENvdW50Kys7XG4gICAgICAgICAgICAgICAgbGV0IGNhbGxiYWNrID0gKHJlc3VsdDogSW50ZXJuYWxSZXR1cm5UeXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdDYWxsQ291bnQtLTtcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0NhbGxzLmRlbGV0ZShzZXFOdW0pO1xuICAgICAgICAgICAgICAgICAgICBoYXJ2ZXN0YWJsZUNhbGxUaW1lcy5wdXNoKHsgc3RhcnQ6IHN0YXJ0VGltZSwgZW5kOiBEYXRlLm5vdygpLCB9KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoY29udmVydEVycm9yU3RhY2tUb0Vycm9yKHJlc3VsdC5lcnJvcikpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQucmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcGVuZGluZ0NhbGxzLnNldChzZXFOdW0sIHsgY2FsbGJhY2ssIGRhdGEsIGNhbGw6IGZ1bGxDYWxsIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0U2l6ZSA9IGRhdGEubWFwKHggPT4geC5sZW5ndGgpLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGNhbGxiYWNrIG9mIFNvY2tldEZ1bmN0aW9uLnRyYWNrTWVzc2FnZVNpemVzLnVwbG9hZCkge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHRTaXplKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKFNvY2tldEZ1bmN0aW9uLmxvZ01lc3NhZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBmbmNIYWNrID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGwuZnVuY3Rpb25OYW1lID09PSBcImFkZENhbGxcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFyZyA9IG9yaWdpbmFsQXJnc1swXSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbmNIYWNrID0gYC4ke2FyZy5Eb21haW5OYW1lfS4ke2FyZy5Nb2R1bGVJZH0uJHthcmcuRnVuY3Rpb25JZH1gO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTSVpFXFx0JHsoZm9ybWF0TnVtYmVyU3VmZml4ZWQocmVzdWx0U2l6ZSkgKyBgQmApLnBhZEVuZCg0LCBcIiBcIil9XFx0JHtmb3JtYXROdW1iZXIoZGF0YS5sZW5ndGgpfSBidWZmZXJzXFx0UkVNT1RFIENBTExcXHQke2NhbGwuY2xhc3NHdWlkfS4ke2NhbGwuZnVuY3Rpb25OYW1lfSR7Zm5jSGFja30gYXQgJHtEYXRlLm5vdygpfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHNlbmRpbmcgT1IgcmVzdWx0UHJvbWlzZSB0aHJvd3MsIHdlIHdhbnQgdG8gZXJyb3Igb3V0LiBUaGlzIHNvbHZlcyBzb21lIGlzc3VlcyB3aXRoIHJlc3VsdFByb21pc2VcbiAgICAgICAgICAgIC8vICAgICAgZXJyb3Jpbmcgb3V0IGZpcnN0LCB3aGljaCBpcyBiZWZvcmUgd2UgYXdhaXQgaXQsIHdoaWNoIG1ha2VzIE5vZGVKUyBhbmdyeSAodW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uKS5cbiAgICAgICAgICAgIC8vICAgICAgQWxzbywgdGVjaG5pY2FsbHksIHdlIGNvdWxkIHJlY2VpdmUgdGhlIHJlc3VsdCBiZWZvcmUgd2UgZmluaXNoIHNlbmRpbmcsIGluIHdoaWNoIGNhc2UsIHdlIG1pZ2h0XG4gICAgICAgICAgICAvLyAgICAgIGFzIHdlbGwgcmV0dXJuIGl0IGltbWVkaWF0ZWx5LlxuICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5yYWNlKFtzZW5kKGRhdGEpLCByZXN1bHRQcm9taXNlXSk7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcmVzdWx0UHJvbWlzZTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBsZXQgd2ViU29ja2V0UHJvbWlzZTogUHJvbWlzZTxTZW5kZXJJbnRlcmZhY2U+IHwgdW5kZWZpbmVkO1xuICAgIGxldCBoYXNFdmVyQ29ubmVjdGVkID0gZmFsc2U7XG4gICAgaWYgKHdlYlNvY2tldEJhc2UpIHtcbiAgICAgICAgd2ViU29ja2V0UHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZSh3ZWJTb2NrZXRCYXNlKTtcbiAgICAgICAgYXdhaXQgaW5pdGlhbGl6ZVdlYnNvY2tldCh3ZWJTb2NrZXRCYXNlKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBpbml0aWFsaXplV2Vic29ja2V0KG5ld1dlYlNvY2tldDogU2VuZGVySW50ZXJmYWNlLCBza2lwQ2xvc2VIYW5kbGluZyA9IGZhbHNlKSB7XG4gICAgICAgIHJlZ2lzdGVyT25jZSgpO1xuICAgICAgICBjYWxsRmFjdG9yeS5yZWNlaXZlZEluaXRpYWxpemVTdGF0ZSA9IHVuZGVmaW5lZDtcblxuICAgICAgICBmdW5jdGlvbiBvbkNsb3NlKGVycm9yOiBzdHJpbmcpIHtcbiAgICAgICAgICAgIC8vIFdlIHRyeSB2YXJpb3VzIGNvbm5lY3Rpb25zLCBhbmQgaWYgdGhleSBmYWlsLCB3ZSB3aWxsIGp1c3QgdHJ5IG90aGVyIG5vZGUgSURzIHVudGlsIHdlIGZpbmFsbHkgZG8gY29ubmVjdCwgYW5kIHRoZW4gd2Ugc3RpY2sgd2l0aCB0aGF0IG5vZGVJZCwgYW5kIHdoZW4gaXQgZGlzY29ubmVjdHMgd2UgbmVlZCB0byBoYW5kbGUgZGlzY29ubmVjdGlvbnMgbm9ybWFsbHkuXG4gICAgICAgICAgICBpZiAoc2tpcENsb3NlSGFuZGxpbmcgJiYgIWhhc0V2ZXJDb25uZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhbGxGYWN0b3J5LmNvbm5lY3Rpb25JZCA9IHsgbm9kZUlkIH07XG4gICAgICAgICAgICBjYWxsRmFjdG9yeS5sYXN0Q2xvc2VkID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIGNhbGxGYWN0b3J5LmlzQ29ubmVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB3ZWJTb2NrZXRQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKCFjYW5SZWNvbm5lY3QpIHtcbiAgICAgICAgICAgICAgICBjYWxsRmFjdG9yeS5jbG9zZWRGb3JldmVyID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IFtrZXksIGNhbGxdIG9mIHBlbmRpbmdDYWxscykge1xuICAgICAgICAgICAgICAgIGhhcnZlc3RhYmxlRmFpbGVkQ2FsbHMrKztcbiAgICAgICAgICAgICAgICBwZW5kaW5nQ2FsbHMuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICAgICAgY2FsbC5jYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgICAgIGlzUmV0dXJuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBzZXFOdW06IGNhbGwuY2FsbC5zZXFOdW0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjYWxsYmFja3MgPSBkaXNjb25uZWN0Q2FsbGJhY2tzO1xuICAgICAgICAgICAgZGlzY29ubmVjdENhbGxiYWNrcyA9IG5ldyBTZXQoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGNhbGxiYWNrIG9mIGNhbGxiYWNrcykge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCB7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG5ld1dlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgZSA9PiB7XG4gICAgICAgICAgICAvLyBOT1RFOiBObyBtb3JlIGxvZ2dpbmcsIGFzIHdlIHRocm93LCBzbyB0aGUgY2FsbGVyIHNob3VsZCBiZSBsb2dnaW5nIHRoZVxuICAgICAgICAgICAgLy8gIGVycm9yIChvciBzd2FsbG93aW5nIGl0LCBpZiB0aGF0IGlzIHdoYXQgaXQgd2FudHMgdG8gZG8pLlxuICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgV2Vic29ja2V0IGVycm9yIGZvciAke25pY2VDb25uZWN0aW9uTmFtZX1gLCBlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgb25DbG9zZShuZXcgRXJyb3IoYENvbm5lY3Rpb24gZXJyb3IgZm9yICR7bmljZUNvbm5lY3Rpb25OYW1lfTogJHtlLm1lc3NhZ2V9YCkuc3RhY2shKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3V2ViU29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbG9zZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBXZWJzb2NrZXQgY2xvc2VkICR7bmljZUNvbm5lY3Rpb25OYW1lfWApO1xuICAgICAgICAgICAgb25DbG9zZShuZXcgRXJyb3IoYENvbm5lY3Rpb24gY2xvc2VkIHRvICR7bmljZUNvbm5lY3Rpb25OYW1lfWApLnN0YWNrISk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG5ld1dlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBvbk1lc3NhZ2UpO1xuXG5cbiAgICAgICAgaWYgKG5ld1dlYlNvY2tldC5yZWFkeVN0YXRlID09PSAwIC8qIENPTk5FQ1RJTkcgKi8pIHtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICAgIG5ld1dlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKFwib3BlblwiLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghU29ja2V0RnVuY3Rpb24uc2lsZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ29ubmVjdGlvbiBlc3RhYmxpc2hlZCB0byAke25pY2VDb25uZWN0aW9uTmFtZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWxsRmFjdG9yeS5pc0Nvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGhhc0V2ZXJDb25uZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbmV3V2ViU29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoXCJjbG9zZVwiLCAoKSA9PiByZXNvbHZlKCkpO1xuICAgICAgICAgICAgICAgIG5ld1dlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgKCkgPT4gcmVzb2x2ZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKG5ld1dlYlNvY2tldC5yZWFkeVN0YXRlID09PSAxIC8qIE9QRU4gKi8pIHtcbiAgICAgICAgICAgIGNhbGxGYWN0b3J5LmlzQ29ubmVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGhhc0V2ZXJDb25uZWN0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb25DbG9zZShuZXcgRXJyb3IoYFdlYnNvY2tldCByZWNlaXZlZCBpbiBjbG9zZWQgc3RhdGVgKS5zdGFjayEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNhbGxGYWN0b3J5Lmxhc3RDbG9zZWQgJiYgY2FsbEZhY3RvcnkuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdWNjZXNzZnVsbHkgcmVjb25uZWN0ZWQgdG8gJHtub2RlSWR9LCB3aGljaCBoYXMgYmVlbiBjbG9zZWQgZm9yICR7Zm9ybWF0VGltZShEYXRlLm5vdygpIC0gY2FsbEZhY3RvcnkubGFzdENsb3NlZCl9YCwgeyBub2RlSWQgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FsbEZhY3RvcnkuaXNDb25uZWN0ZWQgJiYgbmV3V2ViU29ja2V0LnByb3RvY29sKSB7XG4gICAgICAgICAgICBsZXQgZGVjb2RlZCA9IGRlY29kZVByb3RvY29sKG5ld1dlYlNvY2tldC5wcm90b2NvbCk7XG4gICAgICAgICAgICBpZiAoZGVjb2RlZCkge1xuICAgICAgICAgICAgICAgIGNhbGxGYWN0b3J5LnJlY2VpdmVkSW5pdGlhbGl6ZVN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0xaNDogZGVjb2RlZC5mbGFncy5zZXJ2ZXJMWjQsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjYWxsRmFjdG9yeS5wcm90b2NvbE5lZ290aWF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChTb2NrZXRGdW5jdGlvbi5sb2dNZXNzYWdlcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhncmVlbihgTmVnb3RpYXRlZCBwcm90b2NvbCB3aXRoICR7bmljZUNvbm5lY3Rpb25OYW1lfTogdGFyZ2V0PSR7ZGVjb2RlZC50YXJnZXR9LCBjbGllbnRMWjQ9JHtkZWNvZGVkLmZsYWdzLmNsaWVudExaNH0sIHNlcnZlckxaND0ke2RlY29kZWQuZmxhZ3Muc2VydmVyTFo0fWApKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBCQVNFX0xFTkdUSF9PRkZTRVQgPSAzMjRfNDMyXzQ2MV81OTJfNjEyO1xuICAgIHR5cGUgTWVzc2FnZUhlYWRlciA9IHtcbiAgICAgICAgdHlwZTogXCJzZXJpYWxpemVkXCI7XG4gICAgICAgIGJ1ZmZlckNvdW50OiBudW1iZXI7XG4gICAgfSB8IHtcbiAgICAgICAgdHlwZTogXCJCdWZmZXJbXVwiIHwgXCJCdWZmZXJcIjtcbiAgICAgICAgYnVmZmVyQ291bnQ6IG51bWJlcjtcbiAgICAgICAgYnVmZmVyTGVuZ3Rocz86IG51bWJlcltdO1xuICAgICAgICBtZXRhZGF0YTogT21pdDxJbnRlcm5hbFJldHVyblR5cGUsIFwicmVzdWx0XCI+O1xuICAgIH07XG4gICAgbGV0IHNlbmRJblNlcmlhbCA9IHJ1bkluU2VyaWFsKGFzeW5jICh2YWw6ICgpID0+IFByb21pc2U8dm9pZD4pID0+IHZhbCgpKTtcbiAgICBhc3luYyBmdW5jdGlvbiBzZW5kUmF3KGRhdGE6IChzdHJpbmcgfCBCdWZmZXIpW10pIHtcbiAgICAgICAgaWYgKCF3ZWJTb2NrZXRQcm9taXNlKSB7XG4gICAgICAgICAgICBpZiAoY2FuUmVjb25uZWN0KSB7XG4gICAgICAgICAgICAgICAgd2ViU29ja2V0UHJvbWlzZSA9IHRyeVRvUmVjb25uZWN0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNlbmQgZGF0YSB0byAke25pY2VDb25uZWN0aW9uTmFtZX0gYXMgdGhlIGNvbm5lY3Rpb24gaGFzIGNsb3NlZGApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCB3ZWJTb2NrZXQgPSBhd2FpdCB3ZWJTb2NrZXRQcm9taXNlO1xuICAgICAgICBhd2FpdCBzZW5kSW5TZXJpYWwoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgZm9yIChsZXQgZCBvZiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKGQubGVuZ3RoID4gMTAwMCAqIDEwMDAgKiAxMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU2VuZGluZyBsYXJnZSBwYWNrZXQgJHtmb3JtYXROdW1iZXIoZC5sZW5ndGgpfUIgdG8gJHtub2RlSWR9IGF0ICR7RGF0ZS5ub3coKX1gKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBOT1RFOiBJZiBvdXIgbGF0ZW5jeSBpcyA1MDBtcywgd2l0aCAxME1CL3MsIHRoZW4gd2UgbmVlZCBhIGhpZ2ggd2F0ZXJcbiAgICAgICAgICAgICAgICAvLyAgbWFyayBvZiBhdCBsZWFzdCA1TUIsIG90aGVyd2lzZSBvdXIgY29ubmVjdGlvbiBpcyBzbG93ZWQgZG93bi5cbiAgICAgICAgICAgICAgICAvLyAgLSBVc2luZyB0aGUgYWN0dWFsIGhpZ2ggd2F0ZXIgbWFyayBpcyB0b28gZGlmZmljdWx0LCBhcyB3ZSByZWNlaXZlIGluY29taW5nIGNvbm5lY3Rpb25zLlxuICAgICAgICAgICAgICAgIC8vICAgICAgVGhpcyBpcyBhbHNvIGVhc2llciB0byBjb25maWd1cmUsIGFuZCB3ZSBjYW4gZHluYW1pY2FsbHkgY2hhbmdlIGl0IGlmIHdlIGhhdmUgdG8uXG4gICAgICAgICAgICAgICAgLy8gTk9URTogSW4gcHJhY3RpY2Ugd2Ugb25seSBoaXQgdGhpcyB3aGVuIHNlbmRpbmcgbGFyZ2UgQnVmZmVycyAofjMwTUIpLCBzbyBsb3cgdmFsdWVzXG4gICAgICAgICAgICAgICAgLy8gIGFyZSBlcXVpdmFsZW50IHRvIHdhaXRpbmcgZm9yIGRyYWluLiBXZSB3YW50IHRvIGF2b2lkIHdhaXRpbmcgZm9yIGRyYWluLCBzbyB3ZSB1c2UgYSBoaWdoIHZhbHVlLlxuICAgICAgICAgICAgICAgIGNvbnN0IG1heFdyaXRlQnVmZmVyID0gMTI4ICogMTAyNCAqIDEwMjQ7XG4gICAgICAgICAgICAgICAgd2ViU29ja2V0LnNlbmQoZCk7XG5cbiAgICAgICAgICAgICAgICBsZXQgc29ja2V0ID0gd2ViU29ja2V0Ll9zb2NrZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHNvY2tldCkge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc29ja2V0LndyaXRhYmxlTGVuZ3RoID4gbWF4V3JpdGVCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IFdhaXRpbmcgMW1zIHByb2JhYmx5IHdhaXRzIG1vcmUgbGlrZSAxNm1zLlxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDEpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIHNlbmQoZGF0YTogQnVmZmVyW10pIHtcbiAgICAgICAgYXdhaXQgc2VuZFJhdyhbXG4gICAgICAgICAgICAoZGF0YS5sZW5ndGggKyBCQVNFX0xFTkdUSF9PRkZTRVQpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICBdKTtcbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gc2VuZFdpdGhIZWFkZXIoZGF0YTogQnVmZmVyW10sIGhlYWRlcjogTWVzc2FnZUhlYWRlcikge1xuICAgICAgICBpZiAoZGF0YS5zb21lKHggPT4geC5sZW5ndGggPiBTb2NrZXRGdW5jdGlvbi5NQVhfTUVTU0FHRV9TSVpFICogMS41KSkge1xuICAgICAgICAgICAgaWYgKGhlYWRlci50eXBlID09PSBcIkJ1ZmZlclwiIHx8IGhlYWRlci50eXBlID09PSBcIkJ1ZmZlcltdXCIpIHtcbiAgICAgICAgICAgICAgICBoZWFkZXIuYnVmZmVyTGVuZ3RocyA9IGRhdGEubWFwKHggPT4geC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBmaXRCdWZmZXJzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGJ1ZiBvZiBkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWYubGVuZ3RoID4gU29ja2V0RnVuY3Rpb24uTUFYX01FU1NBR0VfU0laRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAob2Zmc2V0IDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpdEJ1ZmZlcnMucHVzaChidWYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBTb2NrZXRGdW5jdGlvbi5NQVhfTUVTU0FHRV9TSVpFKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IFNvY2tldEZ1bmN0aW9uLk1BWF9NRVNTQUdFX1NJWkU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaXRCdWZmZXJzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkYXRhID0gZml0QnVmZmVycztcbiAgICAgICAgICAgICAgICBoZWFkZXIuYnVmZmVyQ291bnQgPSBmaXRCdWZmZXJzLmxlbmd0aDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2VuZCBsYXJnZSBhbW91bnRzIG9mIGRhdGEgdW5sZXNzIHdlIGFyZSByZXR1cm5pbmcgQnVmZmVyIG9yIEJ1ZmZlcltdYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgKHRvdGFsUmVzdWx0U2l6ZSA+IFNvY2tldEZ1bmN0aW9uLk1BWF9NRVNTQUdFX1NJWkUgKiAxLjUpIHtcbiAgICAgICAgLy8gU3BsaXQgdXAgQnVmZmVyW10gaWYgdGhleSBhcmUgdG9vIGxhcmdlXG4gICAgICAgIGF3YWl0IHNlbmRSYXcoW1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaGVhZGVyKSxcbiAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgIF0pO1xuICAgIH1cbiAgICAvLyBJTVBPUlRBTlQhIE5FVkVSIGFsbG93IGZvciByZWNvbm5lY3Rpb24gb2YgY2xpZW50IGlkcy4gQSBsb3Qgb2YgY29kZSBkZXBlbmRzIG9uIHRoZSBmYWN0IHRoYXQgY2xpZW50cyB3aWxsIHJlY29ubmVjdCB3aXRoIGEgbmV3IGNsaWVudCBub2RlIGlkIHdoZW4gdGhleSBkaXNjb25uZWN0IVxuICAgIGFzeW5jIGZ1bmN0aW9uIHRyeVRvUmVjb25uZWN0KCk6IFByb21pc2U8U2VuZGVySW50ZXJmYWNlPiB7XG4gICAgICAgIC8vIERvbid0IHRyeSB0byByZWNvbm5lY3QgdG9vIG9mdGVuIVxuICAgICAgICBsZXQgdGltZVNpbmNlTGFzdEF0dGVtcHQgPSBEYXRlLm5vdygpIC0gbGFzdENvbm5lY3Rpb25BdHRlbXB0O1xuICAgICAgICBpZiAodGltZVNpbmNlTGFzdEF0dGVtcHQgPCBNSU5fUkVUUllfREVMQVkpIHtcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCBNSU5fUkVUUllfREVMQVkgLSB0aW1lU2luY2VMYXN0QXR0ZW1wdCkpO1xuICAgICAgICB9XG4gICAgICAgIGxhc3RDb25uZWN0aW9uQXR0ZW1wdCA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gVHJ5IGFsdGVybmF0ZXMsIGFuZCBpZiBhbnkgd29yaywgdXNlIHRoZW0uXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgYWx0ZXJuYXRlcyA9IGF3YWl0IFNvY2tldEZ1bmN0aW9uLkdFVF9BTFRFUk5BVEVfTk9ERV9JRFMobm9kZUlkKTtcbiAgICAgICAgICAgIGlmIChhbHRlcm5hdGVzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgYWx0ZXJuYXRlTm9kZUlkIG9mIGFsdGVybmF0ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1dlYlNvY2tldCA9IGNyZWF0ZVdlYnNvY2tldChhbHRlcm5hdGVOb2RlSWQsIHByb3Bvc2VQcm90b2NvbHMoaXNOb2RlKCkgPyBub2RlSWQgOiB1bmRlZmluZWQsIHsgbHo0OiB0cnVlIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgaW5pdGlhbGl6ZVdlYnNvY2tldChuZXdXZWJTb2NrZXQsIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjYWxsRmFjdG9yeS5pc0Nvbm5lY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ld1dlYlNvY2tldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGdldHRpbmcgYWx0ZXJuYXRlIG5vZGUgSURzXCIsIGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld1dlYlNvY2tldCA9IGNyZWF0ZVdlYnNvY2tldChub2RlSWQsIHByb3Bvc2VQcm90b2NvbHMoIVNvY2tldEZ1bmN0aW9uLmlzQ2xpZW50KCkgPyBub2RlSWQgOiB1bmRlZmluZWQsIHsgbHo0OiB0cnVlIH0pKTtcbiAgICAgICAgYXdhaXQgaW5pdGlhbGl6ZVdlYnNvY2tldChuZXdXZWJTb2NrZXQpO1xuXG4gICAgICAgIHJldHVybiBuZXdXZWJTb2NrZXQ7XG4gICAgfVxuXG4gICAgbGV0IHBlbmRpbmdDYWxsOiBNZXNzYWdlSGVhZGVyICYge1xuICAgICAgICBidWZmZXJzOiBCdWZmZXJbXTtcbiAgICAgICAgZmlyc3RSZWNlaXZlZFRpbWU/OiBudW1iZXI7XG4gICAgfSB8IHVuZGVmaW5lZDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NQZW5kaW5nQ2FsbCgpIHtcbiAgICAgICAgaWYgKCFwZW5kaW5nQ2FsbCkgdGhyb3cgbmV3IEVycm9yKGBObyBwZW5kaW5nIGNhbGxgKTtcbiAgICAgICAgbGV0IGN1cnJlbnRDYWxsID0gcGVuZGluZ0NhbGw7XG4gICAgICAgIHBlbmRpbmdDYWxsID0gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgY3VycmVudEJ1ZmZlcnMgPSBjdXJyZW50Q2FsbC5idWZmZXJzO1xuICAgICAgICBsZXQgY2FsbDogSW50ZXJuYWxDYWxsVHlwZSB8IEludGVybmFsUmV0dXJuVHlwZTtcbiAgICAgICAgbGV0IHJlc3VsdFNpemU6IG51bWJlcjtcbiAgICAgICAgbGV0IHRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBpZiAoY3VycmVudENhbGwudHlwZSA9PT0gXCJCdWZmZXJcIiB8fCBjdXJyZW50Q2FsbC50eXBlID09PSBcIkJ1ZmZlcltdXCIpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQ6IEJ1ZmZlciB8IEJ1ZmZlcltdID0gY3VycmVudEJ1ZmZlcnM7XG4gICAgICAgICAgICBpZiAoY3VycmVudENhbGwuYnVmZmVyTGVuZ3Rocykge1xuICAgICAgICAgICAgICAgIGxldCBwZW5kaW5nQnVmZmVycyA9IGN1cnJlbnRCdWZmZXJzO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRha2VCdWZmZXIobGVuOiBudW1iZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxlbkxlZnQgPSBsZW47XG4gICAgICAgICAgICAgICAgICAgIGxldCBidWZmZXJzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAobGVuTGVmdCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidWYgPSBjdXJyZW50QnVmZmVycy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFidWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBlbm91Z2ggYnVmZmVycyByZWNlaXZlZC5gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWYubGVuZ3RoID4gbGVuTGVmdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnMucHVzaChidWYuc2xpY2UoMCwgbGVuTGVmdCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCdWZmZXJzLnVuc2hpZnQoYnVmLnNsaWNlKGxlbkxlZnQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVycy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuTGVmdCAtPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcnNbMF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoYnVmZmVycyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGN1cnJlbnRDYWxsLmJ1ZmZlckxlbmd0aHMubWFwKHRha2VCdWZmZXIpO1xuICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nQnVmZmVycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUmVjZWl2ZWQgdG9vIG1hbnkgYnVmZmVycy5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRTaXplID0gcmVzdWx0Lm1hcCh4ID0+IHgubGVuZ3RoKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50Q2FsbC50eXBlID09PSBcIkJ1ZmZlclwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IEJ1ZmZlci5jb25jYXQocmVzdWx0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsID0ge1xuICAgICAgICAgICAgICAgIC4uLmN1cnJlbnRDYWxsLm1ldGFkYXRhLFxuICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRTaXplID0gY3VycmVudEJ1ZmZlcnMubWFwKHggPT4geC5sZW5ndGgpLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xuICAgICAgICAgICAgY2FsbCA9IGF3YWl0IFNvY2tldEZ1bmN0aW9uLldJUkVfU0VSSUFMSVpFUi5kZXNlcmlhbGl6ZShjdXJyZW50QnVmZmVycykgYXMgSW50ZXJuYWxDYWxsVHlwZSB8IEludGVybmFsUmV0dXJuVHlwZTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcGFyc2VUaW1lID0gRGF0ZS5ub3coKSAtIHRpbWU7XG4gICAgICAgIGZvciAobGV0IGNhbGxiYWNrIG9mIFNvY2tldEZ1bmN0aW9uLnRyYWNrTWVzc2FnZVNpemVzLmRvd25sb2FkKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHRTaXplKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZWNlaXZlU3RhdHM6IENvbXByZXNzaW9uU3RhdHMgPSB7XG4gICAgICAgICAgICB1bmNvbXByZXNzZWRTaXplOiByZXN1bHRTaXplLFxuICAgICAgICAgICAgY29tcHJlc3NlZFNpemU6IHJlc3VsdFNpemUsXG4gICAgICAgIH07XG4gICAgICAgIGxldCBzZW5kU3RhdHM6IENvbXByZXNzaW9uU3RhdHMgPSB7XG4gICAgICAgICAgICB1bmNvbXByZXNzZWRTaXplOiAwLFxuICAgICAgICAgICAgY29tcHJlc3NlZFNpemU6IDAsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGNhbGwuaXNSZXR1cm4pIHtcbiAgICAgICAgICAgIC8vIFRvbGVyYXRlIHRoZSBsZWdhY3kgaW5pdGlhbGl6ZSBwYWNrZXQgZnJvbSBvbGQgcGVlcnMg4oCUIHNpbGVudGx5XG4gICAgICAgICAgICAvLyBpZ25vcmUgc28gaXQgZG9lc24ndCBnZXQgbG9nZ2VkIGFzIGFuIHVua25vd24gY2FsbC4gT3VyIGFjdHVhbFxuICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBzdGF0ZSBjb21lcyBmcm9tIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgbmVnb3RpYXRpb24uXG4gICAgICAgICAgICBpZiAoY2FsbC5zZXFOdW0gPT09IElOSVRJQUxJWkVfU1RBVEVfU0VRX05VTSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBjYWxsYmFja09iaiA9IHBlbmRpbmdDYWxscy5nZXQoY2FsbC5zZXFOdW0pO1xuICAgICAgICAgICAgaWYgKHBhcnNlVGltZSA+IFNvY2tldEZ1bmN0aW9uLldJUkVfV0FSTl9USU1FKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVkKGBTbG93IHBhcnNlLCB0b29rICR7cGFyc2VUaW1lfW1zIHRvIHBhcnNlICR7cmVzdWx0U2l6ZX0gYnl0ZXMsIGZvciByZWNlaXZpbmcgcmVzdWx0IG9mIGNhbGwgdG8gJHtjYWxsYmFja09iaj8uY2FsbC5jbGFzc0d1aWR9LiR7Y2FsbGJhY2tPYmo/LmNhbGwuZnVuY3Rpb25OYW1lfWApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2FsbGJhY2tPYmopIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhibHVlKGBHb3QgcmV0dXJuIGZvciB1bmtub3duIGNhbGwgJHtjYWxsLnNlcU51bX0gKGNyZWF0ZWQgYXQgdGltZSAke25ldyBEYXRlKGNhbGwuc2VxTnVtKX0pLCAke25vZGVJZH0gLyAke2xvY2FsTm9kZUlkfWApKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoU29ja2V0RnVuY3Rpb24ubG9nTWVzc2FnZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2FsbCA9IGNhbGxiYWNrT2JqLmNhbGw7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFNJWkVcXHQkeyhmb3JtYXROdW1iZXJTdWZmaXhlZChyZXN1bHRTaXplKSArIFwiQlwiKS5wYWRFbmQoNCwgXCIgXCIpfVxcdCR7Zm9ybWF0TnVtYmVyKGN1cnJlbnRCdWZmZXJzLmxlbmd0aCl9IGJ1ZmZlcnNcXHRSRVRVUk5cXHQke2NhbGwuY2xhc3NHdWlkfS4ke2NhbGwuZnVuY3Rpb25OYW1lfSBhdCAke0RhdGUubm93KCl9LCAoJHtub2RlSWR9IC8gJHtsb2NhbE5vZGVJZH0pYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FsbC5pc1Jlc3VsdENvbXByZXNzZWQgPT09IFwiTFo0XCIpIHtcbiAgICAgICAgICAgICAgICBjYWxsLnJlc3VsdCA9IGF3YWl0IGRlY29tcHJlc3NPYmpMWjQoY2FsbC5yZXN1bHQgYXMgQnVmZmVyW10sIHJlY2VpdmVTdGF0cyk7XG4gICAgICAgICAgICAgICAgY2FsbC5pc1Jlc3VsdENvbXByZXNzZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhbGwuaXNSZXN1bHRDb21wcmVzc2VkID09PSBcInppcFwiIHx8IGNhbGwuaXNSZXN1bHRDb21wcmVzc2VkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FsbC5yZXN1bHQgPSBhd2FpdCBkZWNvbXByZXNzT2JqKGNhbGwucmVzdWx0IGFzIEJ1ZmZlciwgcmVjZWl2ZVN0YXRzKTtcbiAgICAgICAgICAgICAgICBjYWxsLmlzUmVzdWx0Q29tcHJlc3NlZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhbGxiYWNrT2JqLmNhbGxiYWNrKGNhbGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbGwuaXNBcmdzQ29tcHJlc3NlZCA9PT0gXCJMWjRcIikge1xuICAgICAgICAgICAgICAgIGNhbGwuYXJncyA9IGF3YWl0IGRlY29tcHJlc3NPYmpMWjQoY2FsbC5hcmdzIGFzIGFueSBhcyBCdWZmZXJbXSwgc2VuZFN0YXRzKSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgY2FsbC5pc0FyZ3NDb21wcmVzc2VkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjYWxsLmlzQXJnc0NvbXByZXNzZWQgPT09IFwiemlwXCIgfHwgY2FsbC5pc0FyZ3NDb21wcmVzc2VkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY2FsbC5hcmdzID0gYXdhaXQgZGVjb21wcmVzc09iaihjYWxsLmFyZ3MgYXMgYW55IGFzIEJ1ZmZlciwgc2VuZFN0YXRzKSBhcyBhbnk7XG4gICAgICAgICAgICAgICAgY2FsbC5pc0FyZ3NDb21wcmVzc2VkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFNvY2tldEZ1bmN0aW9uLmxvZ01lc3NhZ2VzKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFNJWkVcXHQkeyhmb3JtYXROdW1iZXJTdWZmaXhlZChyZXN1bHRTaXplKSArIFwiQlwiKS5wYWRFbmQoNCwgXCIgXCIpfVxcdEVWQUxVQVRFXFx0JHtjYWxsLmNsYXNzR3VpZH0uJHtjYWxsLmZ1bmN0aW9uTmFtZX0gYXQgJHtEYXRlLm5vdygpfSwgKCR7bm9kZUlkfSAvICR7bG9jYWxOb2RlSWR9KWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcnNlVGltZSA+IFNvY2tldEZ1bmN0aW9uLldJUkVfV0FSTl9USU1FKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVkKGBTbG93IHBhcnNlLCB0b29rICR7cGFyc2VUaW1lfW1zIHRvIHBhcnNlICR7cmVzdWx0U2l6ZX0gYnl0ZXMsIGZvciBjYWxsIHRvICR7Y2FsbC5jbGFzc0d1aWR9LiR7Y2FsbC5mdW5jdGlvbk5hbWV9YCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmVzcG9uc2U6IEludGVybmFsUmV0dXJuVHlwZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgU29ja2V0RnVuY3Rpb24uVE9UQUxfQ0FMTFMrKztcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgcGVyZm9ybUxvY2FsQ2FsbCh7IGNhbGwsIGNhbGxlcjogY2FsbGVyQ29udGV4dCB9KTtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgaXNSZXR1cm46IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgc2VxTnVtOiBjYWxsLnNlcU51bSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChTb2NrZXRGdW5jdGlvbi5sb2dNZXNzYWdlcykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdGltZVRha2VuID0gRGF0ZS5ub3coKSAtIHRpbWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEVVJcXHQkeyhmb3JtYXRUaW1lKHRpbWVUYWtlbikpLnBhZEVuZCg2LCBcIiBcIil9XFx0RklOSVNIXFx0JHtjYWxsLmNsYXNzR3VpZH0uJHtjYWxsLmZ1bmN0aW9uTmFtZX0gYXQgJHtEYXRlLm5vdygpfSwgKCR7bm9kZUlkfSAvICR7bG9jYWxOb2RlSWR9KWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2FsbEZhY3RvcnkucmVjZWl2ZWRJbml0aWFsaXplU3RhdGU/LnN1cHBvcnRzTFo0KSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb21wcmVzc01vZGUgPSBzaG91bGRDb21wcmVzc0NhbGwoY2FsbCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wcmVzc01vZGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5yZXN1bHQgPSBhd2FpdCBjb21wcmVzc09iakxaNChyZXNwb25zZS5yZXN1bHQsIHNlbmRTdGF0cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5pc1Jlc3VsdENvbXByZXNzZWQgPSBcIkxaNFwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZENvbXByZXNzQ2FsbChjYWxsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UucmVzdWx0ID0gYXdhaXQgY29tcHJlc3NPYmoocmVzcG9uc2UucmVzdWx0LCBzZW5kU3RhdHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuaXNSZXN1bHRDb21wcmVzc2VkID0gXCJ6aXBcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgICAgICAgICBpc1JldHVybjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHNlcU51bTogY2FsbC5zZXFOdW0sXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBlLnN0YWNrLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gdGltZTtcbiAgICAgICAgICAgICAgICBsZXQgZW5kID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBmbmMgb2YgU29ja2V0RnVuY3Rpb24udHJhY2tNZXNzYWdlU2l6ZXMuY2FsbFRpbWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZuYyh7IHN0YXJ0LCBlbmQgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgc2l6ZSA9IDA7XG5cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQgaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgICAgICAgICBsZXQgeyByZXN1bHQsIC4uLnJlbWFpbmluZyB9ID0gcmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgc2l6ZSA9IHJlc3VsdC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgYXdhaXQgc2VuZFdpdGhIZWFkZXIoW3Jlc3VsdF0sIHsgdHlwZTogXCJCdWZmZXJcIiwgYnVmZmVyQ291bnQ6IDEsIG1ldGFkYXRhOiByZW1haW5pbmcgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVzcG9uc2UucmVzdWx0KSAmJiByZXNwb25zZS5yZXN1bHQuZXZlcnkoeCA9PiB4IGluc3RhbmNlb2YgQnVmZmVyKSkge1xuICAgICAgICAgICAgICAgIGxldCB7IHJlc3VsdCwgLi4ucmVtYWluaW5nIH0gPSByZXNwb25zZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCByIG9mIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICBzaXplICs9IHIubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCBzZW5kV2l0aEhlYWRlcihyZXN1bHQsIHsgdHlwZTogXCJCdWZmZXJbXVwiLCBidWZmZXJDb3VudDogcmVzdWx0Lmxlbmd0aCwgbWV0YWRhdGE6IHJlbWFpbmluZyB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgTElNSVQgPSBnZXRDYWxsRmxhZ3MoY2FsbCk/LnJlc3BvbnNlTGltaXQgfHwgU29ja2V0RnVuY3Rpb24uTUFYX01FU1NBR0VfU0laRSAqIDEuNTtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0OiBCdWZmZXJbXSA9IGF3YWl0IFNvY2tldEZ1bmN0aW9uLldJUkVfU0VSSUFMSVpFUi5zZXJpYWxpemUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIGxldCB0b3RhbFJlc3VsdFNpemUgPSByZXN1bHQubWFwKHggPT4geC5sZW5ndGgpLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xuICAgICAgICAgICAgICAgIGlmICh0b3RhbFJlc3VsdFNpemUgPiBMSU1JVCkge1xuICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmV0dXJuOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXFOdW06IGNhbGwuc2VxTnVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IG5ldyBFcnJvcihgUmVzcG9uc2UgdG9vIGxhcmdlIHRvIHNlbmQuIFJldHVybiBCdWZmZXJbXSB0byBleGNlZWQgdGhlIGxpbWl0cywgb3Igc2V0IHJlc3BvbnNlTGltaXQgd2hlbiByZWdpc3RlcmluZyB0aGUgY29sbGVjdGlvbi4gJHtjYWxsLmNsYXNzR3VpZH0uJHtjYWxsLmZ1bmN0aW9uTmFtZX0sIHNpemU6ICR7Zm9ybWF0TnVtYmVyKHRvdGFsUmVzdWx0U2l6ZSl9ID4gJHtmb3JtYXROdW1iZXIoU29ja2V0RnVuY3Rpb24uTUFYX01FU1NBR0VfU0laRSl9LiBJZiB5b3UgbmVlZCB0byBoYW5kbGUgdmVyeSBsYXJnZSBzdGF0aWMgZGF0YSB1c2Ugc29tZSBleHRlcm5hbCBzZXJ2aWNlLCBzdWNoIGFzIEJhY2tibGF6ZSBCMiBvciBBV1MgUzMuIE9yLCBpZiBhYnNvbHV0ZWx5IHJlcXVpcmVkLCBzZXQgU29ja2V0RnVuY3Rpb24uTUFYX01FU1NBR0VfU0laRSB0byBhIGhpZ2hlciB2YWx1ZS5gKS5zdGFjayxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgU29ja2V0RnVuY3Rpb24uV0lSRV9TRVJJQUxJWkVSLnNlcmlhbGl6ZShyZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IHIgb2YgcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHNpemUgKz0gci5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGF3YWl0IHNlbmQocmVzdWx0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBubyBzaXplLCB0aGVuIGl0J3MgcHJvYmFibHkgdW5jb21wcmVzc2VkXG4gICAgICAgICAgICBpZiAoIXNlbmRTdGF0cy5jb21wcmVzc2VkU2l6ZSkge1xuICAgICAgICAgICAgICAgIHNlbmRTdGF0cy5jb21wcmVzc2VkU2l6ZSA9IHNpemU7XG4gICAgICAgICAgICAgICAgc2VuZFN0YXRzLnVuY29tcHJlc3NlZFNpemUgPSBzaXplO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYWRkU2VuZFN0YXRzKHNlbmRTdGF0cyk7XG4gICAgICAgIGFkZFJlY2VpdmVTdGF0cyhyZWNlaXZlU3RhdHMpO1xuICAgIH1cblxuICAgIGxldCBjbGllbnRzaWRlU2VyaWFsID0gcnVuSW5TZXJpYWwoYXN5bmMgPFQ+KHZhbDogUHJvbWlzZTxUPikgPT4gdmFsKTtcbiAgICBhc3luYyBmdW5jdGlvbiBvbk1lc3NhZ2UobWVzc2FnZTogd3MuUmF3RGF0YSB8IHdzLk1lc3NhZ2VFdmVudCB8IHN0cmluZykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcIm9iamVjdFwiICYmIFwiZGF0YVwiIGluIG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5kYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRXh0cmEgY2xpZW5zaWRlIHBhcnNpbmcgaXMgcmVxdWlyZWRcbiAgICAgICAgICAgIGlmICghaXNOb2RlKCkpIHtcbiAgICAgICAgICAgICAgICAvLyBJbW1lZGlhdGVseSBzdGFydCB0aGUgYXJyYXlCdWZmZXIgY29udmVyc2lvbi4gVGhpcyBzaG91bGQgYmUgZmFzdCwgYnV0Li4uXG4gICAgICAgICAgICAgICAgLy8gIG1heWJlIHdlIHdpbGwgYWRkIG1vcmUgaGVyZSwgYW5kIHNvIGRvaW5nIGl0IGluIHBhcmFsbGVsIG1pZ2h0IGJlIHVzZWZ1bC5cbiAgICAgICAgICAgICAgICBsZXQgZml4TWVzc2FnZUJsb2IgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZSBpbnN0YW5jZW9mIEJsb2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBCdWZmZXIuZnJvbShhd2FpdCBtZXNzYWdlLmFycmF5QnVmZmVyKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSkoKTtcbiAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGZvcmNlIHRoZSByZXN1bHRzIHRvIGJlIGluIHNlcmlhbCwgb3RoZXJ3aXNlIHN0cmluZ3MgbGVhcGZyb2dcbiAgICAgICAgICAgICAgICAvLyAgYWhlYWQgb2YgYnVmZmVycywgd2hpY2ggYnJlYWtzIHRoaW5ncy5cbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnRzaWRlU2VyaWFsKGZpeE1lc3NhZ2VCbG9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLnN0YXJ0c1dpdGgoXCJ7XCIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvYmogPSBKU09OLnBhcnNlKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQ2FsbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLm9iaixcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudCA9IHBhcnNlSW50KG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4oY291bnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbWVzc2FnZSBjb3VudCAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50IDwgQkFTRV9MRU5HVEhfT0ZGU0VUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgbWVzc2FnZSBjb3VudCAke21lc3NhZ2V9YCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY291bnQgLT0gQkFTRV9MRU5HVEhfT0ZGU0VUO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAxMDAwICogMTAwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1lc3NhZ2UgY291bnQgJHtjb3VudH1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQ2FsbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyQ291bnQ6IGNvdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJzZXJpYWxpemVkXCIsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FsbD8uYnVmZmVyQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1BlbmRpbmdDYWxsKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtZXNzYWdlIGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwZW5kaW5nQ2FsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFJlY2VpdmVkIGRhdGEgd2l0aG91dCBzaXplICR7bWVzc2FnZS5ieXRlTGVuZ3RofUIsIGZpcnN0IDEwMCBieXRlczogJHttZXNzYWdlLnNsaWNlKDAsIDEwMCkudG9TdHJpbmcoXCJoZXhcIil9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxldCB0b3RhbFNpemUgPSBtZXNzYWdlLmJ5dGVMZW5ndGggKyBwZW5kaW5nQ2FsbC5idWZmZXJzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIubGVuZ3RoLCAwKTtcbiAgICAgICAgICAgICAgICBpZiAodG90YWxTaXplID4gMTAwMCAqIDEwMDAgKiAxMCB8fCBwZW5kaW5nQ2FsbC5idWZmZXJDb3VudCA+IDEwMDAgJiYgKHBlbmRpbmdDYWxsLmJ1ZmZlcnMubGVuZ3RoICUgMTAwID09PSAwKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVuZGluZ0NhbGwuYnVmZmVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBSZWNlaXZlZCBsYXJnZS9tYW55IHBhY2tldHMgJHtmb3JtYXROdW1iZXIodG90YWxTaXplKX1CICgke3BlbmRpbmdDYWxsLmJ1ZmZlcnMubGVuZ3RofSAvICR7cGVuZGluZ0NhbGwuYnVmZmVyQ291bnR9KSBhdCAke0RhdGUubm93KCl9YCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZWxhcHNlZCA9IERhdGUubm93KCkgLSAocGVuZGluZ0NhbGwuZmlyc3RSZWNlaXZlZFRpbWUgfHwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgUmVjZWl2ZWQgbGFyZ2UvbWFueSBwYWNrZXRzICR7Zm9ybWF0TnVtYmVyKHRvdGFsU2l6ZSl9QiAoJHtwZW5kaW5nQ2FsbC5idWZmZXJzLmxlbmd0aH0gLyAke3BlbmRpbmdDYWxsLmJ1ZmZlckNvdW50fSkgYWZ0ZXIgJHtmb3JtYXRUaW1lKGVsYXBzZWQpfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nQ2FsbC5idWZmZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQ2FsbC5maXJzdFJlY2VpdmVkVGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlbmRpbmdDYWxsLmJ1ZmZlcnMucHVzaChtZXNzYWdlKTtcbiAgICAgICAgICAgICAgICBpZiAocGVuZGluZ0NhbGwuYnVmZmVycy5sZW5ndGggIT09IHBlbmRpbmdDYWxsLmJ1ZmZlckNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhd2FpdCBwcm9jZXNzUGVuZGluZ0NhbGwoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBkYXRhIHR5cGUgJHt0eXBlb2YgbWVzc2FnZX1gKTtcbiAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICBsZXQgZXJyID0gZS5zdGFjayB8fCBlLm1lc3NhZ2UgfHwgZTtcbiAgICAgICAgICAgIC8vIE5PVEU6IEknbSBsb29raW5nIGZvciBhbGwgdHlwZXMgb2YgZXJyb3JzIGhlcmUgKHNwZWNpZmljYWxseSwgLnNlbmQgZXJyb3JzKSwgaW4gY2FzZVxuICAgICAgICAgICAgLy8gIHRoZXJlIGFyZSBlcnJvcnMgSSBzaG91bGQgYmUgaGFuZGxpbmcuXG4gICAgICAgICAgICBpZiAoZXJyLnN0YXJ0c1dpdGgoXCJFcnJvcjogQ2Fubm90IHNlbmQgZGF0YSB0b1wiKSAmJiBlcnIuaW5jbHVkZXMoXCJhcyB0aGUgY29ubmVjdGlvbiBoYXMgY2xvc2VkXCIpKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmaW5lLCBqdXN0IGlnbm9yZSBpdFxuICAgICAgICAgICAgfSBlbHNlIGlmIChlcnIuaW5jbHVkZXMoXCJUaGUgcmVxdWVzdGVkIGZpbGUgY291bGQgbm90IGJlIHJlYWQsIHR5cGljYWxseSBkdWUgdG8gcGVybWlzc2lvbiBwcm9ibGVtcyB0aGF0IGhhdmUgb2NjdXJyZWQgYWZ0ZXIgYSByZWZlcmVuY2UgdG8gYSBmaWxlIHdhcyBhY3F1aXJlZC5cIikpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBXZWJTb2NrZXQgZGF0YSB3YXMgZHJvcHBlZCBieSB0aGUgYnJvd3NlciBkdWUgdG8gZXhjZWVkaW5nIHRoZSBCbG9iIGxpbWl0LiBFaXRoZXIgeW91IGFyZSBhYm91dCB0byBydW4gb3V0IG9mIG1lbW9yeSwgb3IgeW91IGhpdCB0aGUgbXVjaCBsb3dlciBJbmNvZ25pdG8gQmxvYiBsaW1pdC4gVGhpcyB3aWxsIGxpa2VseSBicmVhayB0aGUgYXBwbGljYXRpb24uIFRvIHJlc2V0IHRoZSBtZW1vcnkgeW91IG11c3QgY2xvc2UgYWxsIHRhYnMgb2YgdGhpcyBzaXRlLiBUaGlzIGlzIGEgYnVnL2ZlYXR1cmUgaW4gY2hyb21lLmApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUuc3RhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICByZXR1cm4gY2FsbEZhY3Rvcnk7XG59XG5cblxubGV0IHVuY29tcHJlc3NlZFNlbnQgPSAwO1xubGV0IGNvbXByZXNzZWRTZW50ID0gMDtcbmxldCB1bmNvbXByZXNzZWRSZWNlaXZlZCA9IDA7XG5sZXQgY29tcHJlc3NlZFJlY2VpdmVkID0gMDtcblxubGV0IHNlbmRDb3VudCA9IDA7XG5sZXQgcmVjZWl2ZUNvdW50ID0gMDtcblxuZnVuY3Rpb24gYWRkU2VuZFN0YXRzKHN0YXRzOiBDb21wcmVzc2lvblN0YXRzKSB7XG4gICAgdW5jb21wcmVzc2VkU2VudCArPSBzdGF0cy51bmNvbXByZXNzZWRTaXplO1xuICAgIGNvbXByZXNzZWRTZW50ICs9IHN0YXRzLmNvbXByZXNzZWRTaXplO1xuICAgIHNlbmRDb3VudCsrO1xufVxuZnVuY3Rpb24gYWRkUmVjZWl2ZVN0YXRzKHN0YXRzOiBDb21wcmVzc2lvblN0YXRzKSB7XG4gICAgdW5jb21wcmVzc2VkUmVjZWl2ZWQgKz0gc3RhdHMudW5jb21wcmVzc2VkU2l6ZTtcbiAgICBjb21wcmVzc2VkUmVjZWl2ZWQgKz0gc3RhdHMuY29tcHJlc3NlZFNpemU7XG4gICAgcmVjZWl2ZUNvdW50Kys7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdW5jb21wcmVzc2VkU2VudCxcbiAgICAgICAgY29tcHJlc3NlZFNlbnQsXG4gICAgICAgIHVuY29tcHJlc3NlZFJlY2VpdmVkLFxuICAgICAgICBjb21wcmVzc2VkUmVjZWl2ZWQsXG4gICAgICAgIHNlbmRDb3VudCxcbiAgICAgICAgcmVjZWl2ZUNvdW50LFxuICAgIH07XG59XG4vLyBSZWdpc3RlciB0aGlzIGxhdGUgYXMgSSBkb24ndCB3YW50IGl0IHRvIGFwcGVhciBiZWZvcmUgdGhlIG1lbW9yeSByZWdpc3RlciBpbmZvLCB3aGljaCBpcyB1c2UgbW9yZSB1c2VmdWwgdGhhbiB0aGUgbmV0d29yayBvbmUuIFxuc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICByZWdpc3Rlck1lYXN1cmVJbmZvKCgpID0+IGBORVQgPT4gJHtmb3JtYXROdW1iZXIoY29tcHJlc3NlZFNlbnQpfUIgKCR7Zm9ybWF0TnVtYmVyKHVuY29tcHJlc3NlZFNlbnQpfUIvJHtmb3JtYXROdW1iZXIoc2VuZENvdW50KX0pIC8gPD0gJHtmb3JtYXROdW1iZXIoY29tcHJlc3NlZFJlY2VpdmVkKX1CICgke2Zvcm1hdE51bWJlcih1bmNvbXByZXNzZWRSZWNlaXZlZCl9Qi8ke2Zvcm1hdE51bWJlcihyZWNlaXZlQ291bnQpfSlgKTtcbn0pO1xuXG50eXBlIENvbXByZXNzaW9uU3RhdHMgPSB7XG4gICAgdW5jb21wcmVzc2VkU2l6ZTogbnVtYmVyO1xuICAgIGNvbXByZXNzZWRTaXplOiBudW1iZXI7XG59O1xuXG5jb25zdCBjb21wcmVzc09iaiA9IG1lYXN1cmVXcmFwKGFzeW5jIGZ1bmN0aW9uIHdpcmVDYWxsQ29tcHJlc3Mob2JqOiB1bmtub3duLCBzdGF0czogQ29tcHJlc3Npb25TdGF0cyk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgbGV0IGJ1ZmZlcnMgPSBhd2FpdCBTb2NrZXRGdW5jdGlvbi5XSVJFX1NFUklBTElaRVIuc2VyaWFsaXplKG9iaik7XG4gICAgaWYgKGJ1ZmZlcnMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMZWdhY3kgQ29tcHJlc3NPYmogb25seSBzdXBwb3J0cyBzaW5nbGUgYnVmZmVyXCIpO1xuICAgIH1cbiAgICBsZXQgbGVuZ3RoQnVmZmVyID0gQnVmZmVyLmZyb20oKG5ldyBGbG9hdDY0QXJyYXkoYnVmZmVycy5tYXAoeCA9PiB4Lmxlbmd0aCkpKS5idWZmZXIpO1xuICAgIGxldCBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtsZW5ndGhCdWZmZXIsIC4uLmJ1ZmZlcnNdKTtcbiAgICBzdGF0cy51bmNvbXByZXNzZWRTaXplICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgbGV0IHJlc3VsdCA9IGF3YWl0IFppcC5nemlwKGJ1ZmZlcik7XG4gICAgc3RhdHMuY29tcHJlc3NlZFNpemUgKz0gcmVzdWx0Lmxlbmd0aDtcbiAgICByZXR1cm4gcmVzdWx0O1xufSk7XG4vLyBBc3N1bWVzIHRoZSBjYWxsZXIgYWxyZWFkeSBhZGRlZCB0aGUgb2JqLmxlbmd0aCB0byBib3RoIHRoZSB1bmNvbXByZXNzZWRTaXplIGFuZCBjb21wcmVzc2VkU2l6ZSwgYW5kIGlzIGp1c3QgbG9va2luZyB0byB1cGRhdGUgdGhlIHVuY29tcHJlc3NlZFNpemUgdG8gYmUgbGFyZ2VyIGFjY29yZGluZyB0byB0aGUgc2l6ZSBhZnRlciB3ZSB1bmNvbXByZXNzXG5jb25zdCBkZWNvbXByZXNzT2JqID0gbWVhc3VyZVdyYXAoYXN5bmMgZnVuY3Rpb24gd2lyZUNhbGxEZWNvbXByZXNzKG9iajogQnVmZmVyLCBzdGF0czogQ29tcHJlc3Npb25TdGF0cyk6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIGxldCBidWZmZXIgPSBhd2FpdCBaaXAuZ3VuemlwKG9iaik7XG4gICAgc3RhdHMudW5jb21wcmVzc2VkU2l6ZSArPSBidWZmZXIubGVuZ3RoIC0gb2JqLmxlbmd0aDtcbiAgICBsZXQgbGVuZ3RoQnVmZmVyID0gYnVmZmVyLnNsaWNlKDAsIDgpO1xuICAgIGxldCBsZW5ndGhzID0gbmV3IEZsb2F0NjRBcnJheShsZW5ndGhCdWZmZXIuYnVmZmVyLCBsZW5ndGhCdWZmZXIuYnl0ZU9mZnNldCwgbGVuZ3RoQnVmZmVyLmJ5dGVMZW5ndGggLyA4KTtcbiAgICBsZXQgYnVmZmVyczogQnVmZmVyW10gPSBbXTtcbiAgICBsZXQgb2Zmc2V0ID0gODtcbiAgICBmb3IgKGxldCBsZW5ndGggb2YgbGVuZ3Rocykge1xuICAgICAgICBidWZmZXJzLnB1c2goYnVmZmVyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSk7XG4gICAgICAgIG9mZnNldCArPSBsZW5ndGg7XG4gICAgfVxuICAgIGxldCByZXN1bHQgPSBhd2FpdCBTb2NrZXRGdW5jdGlvbi5XSVJFX1NFUklBTElaRVIuZGVzZXJpYWxpemUoYnVmZmVycyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn0pO1xuXG5jb25zdCBjb21wcmVzc09iakxaNCA9IG1lYXN1cmVXcmFwKGFzeW5jIGZ1bmN0aW9uIHdpcmVDYWxsQ29tcHJlc3NMWjQob2JqOiB1bmtub3duLCBzdGF0czogQ29tcHJlc3Npb25TdGF0cyk6IFByb21pc2U8QnVmZmVyW10+IHtcbiAgICBjb25zdCB7IExaNCB9ID0gYXdhaXQgaW1wb3J0KFwiLi9sejQvTFo0XCIpO1xuICAgIGxldCBoZWFkZXJQYXJ0czogbnVtYmVyW107XG4gICAgbGV0IGRhdGFCdWZmZXJzOiBCdWZmZXJbXTtcblxuICAgIGlmIChvYmogaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgaGVhZGVyUGFydHMgPSBbMV07XG4gICAgICAgIGRhdGFCdWZmZXJzID0gW29ial07XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG9iaikgJiYgb2JqLmV2ZXJ5KCh4OiBhbnkpID0+IHggaW5zdGFuY2VvZiBCdWZmZXIpKSB7XG4gICAgICAgIGxldCBidWZmZXJBcnJheSA9IG9iaiBhcyBCdWZmZXJbXTtcbiAgICAgICAgY29uc3QgVEFSR0VUX1NJWkUgPSA1MCAqIDEwMjQgKiAxMDI0O1xuICAgICAgICBjb25zdCBNSU5fSU5ESVZJRFVBTF9TSVpFID0gMTAgKiAxMDI0ICogMTAyNDtcbiAgICAgICAgY29uc3QgTUFYX1VOU1BMSVRfU0laRSA9IDEwMCAqIDEwMjQgKiAxMDI0O1xuXG4gICAgICAgIGxldCBvdXRwdXRCdWZmZXJzOiBCdWZmZXJbXSA9IFtdO1xuICAgICAgICBsZXQgb3V0cHV0RGVzY3JpcHRvcnM6IG51bWJlcltdW10gPSBbXTtcbiAgICAgICAgbGV0IGN1cnJlbnRHcm91cDogQnVmZmVyW10gPSBbXTtcbiAgICAgICAgbGV0IGN1cnJlbnRHcm91cFNpemUgPSAwO1xuXG4gICAgICAgIGZ1bmN0aW9uIGZsdXNoQ3VycmVudEdyb3VwKCkge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0QnVmZmVycy5wdXNoKEJ1ZmZlci5jb25jYXQoY3VycmVudEdyb3VwKSk7XG4gICAgICAgICAgICAgICAgb3V0cHV0RGVzY3JpcHRvcnMucHVzaChjdXJyZW50R3JvdXAubWFwKGIgPT4gYi5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50R3JvdXAgPSBbXTtcbiAgICAgICAgICAgICAgICBjdXJyZW50R3JvdXBTaXplID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGJ1ZiBvZiBidWZmZXJBcnJheSkge1xuICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGggPj0gTUlOX0lORElWSURVQUxfU0laRSkge1xuICAgICAgICAgICAgICAgIGZsdXNoQ3VycmVudEdyb3VwKCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCA+IE1BWF9VTlNQTElUX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChvZmZzZXQgPCBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2h1bmtTaXplID0gTWF0aC5taW4oVEFSR0VUX1NJWkUsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0QnVmZmVycy5wdXNoKGJ1Zi5zbGljZShvZmZzZXQsIG9mZnNldCArIGNodW5rU2l6ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0RGVzY3JpcHRvcnMucHVzaChbY2h1bmtTaXplXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKz0gY2h1bmtTaXplO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0QnVmZmVycy5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dERlc2NyaXB0b3JzLnB1c2goW2J1Zi5sZW5ndGhdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRHcm91cC5wdXNoKGJ1Zik7XG4gICAgICAgICAgICAgICAgY3VycmVudEdyb3VwU2l6ZSArPSBidWYubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRHcm91cFNpemUgPj0gVEFSR0VUX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmx1c2hDdXJyZW50R3JvdXAoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmbHVzaEN1cnJlbnRHcm91cCgpO1xuXG4gICAgICAgIGhlYWRlclBhcnRzID0gWzIsIG91dHB1dEJ1ZmZlcnMubGVuZ3RoXTtcbiAgICAgICAgZm9yIChsZXQgZGVzY3JpcHRvciBvZiBvdXRwdXREZXNjcmlwdG9ycykge1xuICAgICAgICAgICAgaGVhZGVyUGFydHMucHVzaChkZXNjcmlwdG9yLmxlbmd0aCwgLi4uZGVzY3JpcHRvcik7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YUJ1ZmZlcnMgPSBvdXRwdXRCdWZmZXJzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBidWZmZXJzID0gYXdhaXQgU29ja2V0RnVuY3Rpb24uV0lSRV9TRVJJQUxJWkVSLnNlcmlhbGl6ZShvYmopO1xuICAgICAgICBoZWFkZXJQYXJ0cyA9IFszLCBidWZmZXJzLmxlbmd0aF07XG4gICAgICAgIGRhdGFCdWZmZXJzID0gYnVmZmVycztcbiAgICB9XG5cbiAgICBsZXQgaGVhZGVyQnVmZmVyID0gQnVmZmVyLmZyb20oKG5ldyBGbG9hdDY0QXJyYXkoaGVhZGVyUGFydHMpKS5idWZmZXIpO1xuICAgIGxldCBhbGxCdWZmZXJzID0gW2hlYWRlckJ1ZmZlciwgLi4uZGF0YUJ1ZmZlcnNdO1xuXG4gICAgc3RhdHMudW5jb21wcmVzc2VkU2l6ZSArPSBhbGxCdWZmZXJzLnJlZHVjZSgoc3VtLCBidWYpID0+IHN1bSArIGJ1Zi5sZW5ndGgsIDApO1xuXG4gICAgbGV0IGNvbXByZXNzZWQ6IEJ1ZmZlcltdID0gW107XG4gICAgbGV0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgbGV0IGxhc3RXYXJuVGltZSA9IHN0YXJ0VGltZTtcbiAgICBsZXQgY3VycmVudFVuY29tcHJlc3NlZFNpemUgPSAwO1xuICAgIGxldCBjdXJyZW50Q29tcHJlc3NlZFNpemUgPSAwO1xuXG4gICAgZnVuY3Rpb24gbG9nSWZTbG93KGk6IG51bWJlcikge1xuICAgICAgICBsZXQgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgaWYgKG5vdyAtIGxhc3RXYXJuVGltZSA+IDUwMCkge1xuICAgICAgICAgICAgbGV0IGVsYXBzZWQgPSBub3cgLSBzdGFydFRpbWU7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU2xvdyBMWjQgY29tcHJlc3MgKCR7Zm9ybWF0VGltZShlbGFwc2VkKX06ICR7aSArIDF9LyR7YWxsQnVmZmVycy5sZW5ndGh9IGJ1ZmZlcnMsICR7Zm9ybWF0TnVtYmVyKGN1cnJlbnRVbmNvbXByZXNzZWRTaXplKX1CID0+ICR7Zm9ybWF0TnVtYmVyKGN1cnJlbnRDb21wcmVzc2VkU2l6ZSl9QmApO1xuICAgICAgICAgICAgbGFzdFdhcm5UaW1lID0gbm93O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxCdWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBidWYgPSBhbGxCdWZmZXJzW2ldO1xuICAgICAgICBjdXJyZW50VW5jb21wcmVzc2VkU2l6ZSArPSBidWYubGVuZ3RoO1xuICAgICAgICBsZXQgY29tcHJlc3NlZEJ1ZiA9IExaNC5jb21wcmVzcyhidWYpO1xuICAgICAgICBjb21wcmVzc2VkLnB1c2goY29tcHJlc3NlZEJ1Zik7XG4gICAgICAgIGN1cnJlbnRDb21wcmVzc2VkU2l6ZSArPSBjb21wcmVzc2VkQnVmLmxlbmd0aDtcblxuICAgICAgICBsb2dJZlNsb3coaSk7XG4gICAgfVxuICAgIGxvZ0lmU2xvdyhhbGxCdWZmZXJzLmxlbmd0aCk7XG5cbiAgICBzdGF0cy5jb21wcmVzc2VkU2l6ZSArPSBjdXJyZW50Q29tcHJlc3NlZFNpemU7XG5cbiAgICByZXR1cm4gY29tcHJlc3NlZDtcbn0pO1xuXG5jb25zdCBkZWNvbXByZXNzT2JqTFo0ID0gbWVhc3VyZVdyYXAoYXN5bmMgZnVuY3Rpb24gd2lyZUNhbGxEZWNvbXByZXNzTFo0KG9iajogQnVmZmVyW10sIHN0YXRzOiBDb21wcmVzc2lvblN0YXRzKTogUHJvbWlzZTx1bmtub3duPiB7XG5cbiAgICBjb25zdCB7IExaNCB9ID0gYXdhaXQgaW1wb3J0KFwiLi9sejQvTFo0XCIpO1xuICAgIHN0YXRzLmNvbXByZXNzZWRTaXplICs9IG9iai5yZWR1Y2UoKHN1bSwgYnVmKSA9PiBzdW0gKyBidWYubGVuZ3RoLCAwKTtcblxuICAgIGxldCBkZWNvbXByZXNzZWQ6IEJ1ZmZlcltdID0gW107XG4gICAgbGV0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgbGV0IGxhc3RXYXJuVGltZSA9IHN0YXJ0VGltZTtcbiAgICBsZXQgY3VycmVudENvbXByZXNzZWRTaXplID0gMDtcbiAgICBsZXQgY3VycmVudFVuY29tcHJlc3NlZFNpemUgPSAwO1xuICAgIGZ1bmN0aW9uIGxvZ0lmU2xvdyhpOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IG5vdyA9IERhdGUubm93KCk7XG4gICAgICAgIGlmIChub3cgLSBsYXN0V2FyblRpbWUgPiA1MDApIHtcbiAgICAgICAgICAgIGxldCBlbGFwc2VkID0gbm93IC0gc3RhcnRUaW1lO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYFNsb3cgTFo0IGRlY29tcHJlc3MgKCR7Zm9ybWF0VGltZShlbGFwc2VkKX0pOiAke2kgKyAxfS8ke29iai5sZW5ndGh9IGJ1ZmZlcnMsICR7Zm9ybWF0TnVtYmVyKGN1cnJlbnRDb21wcmVzc2VkU2l6ZSl9QiA9PiAke2Zvcm1hdE51bWJlcihjdXJyZW50VW5jb21wcmVzc2VkU2l6ZSl9QmApO1xuICAgICAgICAgICAgbGFzdFdhcm5UaW1lID0gbm93O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGJ1ZiA9IG9ialtpXTtcbiAgICAgICAgY3VycmVudENvbXByZXNzZWRTaXplICs9IGJ1Zi5sZW5ndGg7XG4gICAgICAgIGxldCBkZWNvbXByZXNzZWRCdWYgPSBMWjQuZGVjb21wcmVzcyhidWYpO1xuICAgICAgICBkZWNvbXByZXNzZWQucHVzaChkZWNvbXByZXNzZWRCdWYpO1xuICAgICAgICBjdXJyZW50VW5jb21wcmVzc2VkU2l6ZSArPSBkZWNvbXByZXNzZWRCdWYubGVuZ3RoO1xuXG4gICAgICAgIGxvZ0lmU2xvdyhpKTtcbiAgICB9XG4gICAgbG9nSWZTbG93KG9iai5sZW5ndGgpO1xuXG4gICAgc3RhdHMudW5jb21wcmVzc2VkU2l6ZSArPSBjdXJyZW50VW5jb21wcmVzc2VkU2l6ZTtcblxuICAgIGxldCBoZWFkZXJCdWZmZXIgPSBkZWNvbXByZXNzZWRbMF07XG4gICAgbGV0IGRhdGFCdWZmZXJzID0gZGVjb21wcmVzc2VkLnNsaWNlKDEpO1xuXG4gICAgbGV0IHR5cGVCdWZmZXIgPSBoZWFkZXJCdWZmZXIuc2xpY2UoMCwgOCk7XG4gICAgbGV0IHR5cGUgPSBuZXcgRmxvYXQ2NEFycmF5KHR5cGVCdWZmZXIuYnVmZmVyLCB0eXBlQnVmZmVyLmJ5dGVPZmZzZXQsIDEpWzBdO1xuXG4gICAgaWYgKHR5cGUgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGRhdGFCdWZmZXJzWzBdO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAyKSB7XG4gICAgICAgIGxldCBoZWFkZXJEYXRhID0gbmV3IEZsb2F0NjRBcnJheShoZWFkZXJCdWZmZXIuYnVmZmVyLCBoZWFkZXJCdWZmZXIuYnl0ZU9mZnNldCwgaGVhZGVyQnVmZmVyLmJ5dGVMZW5ndGggLyA4KTtcbiAgICAgICAgbGV0IG91dHB1dEJ1ZmZlckNvdW50ID0gaGVhZGVyRGF0YVsxXTtcblxuICAgICAgICBsZXQgYnVmZmVyczogQnVmZmVyW10gPSBbXTtcbiAgICAgICAgbGV0IGhlYWRlckluZGV4ID0gMjtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dHB1dEJ1ZmZlckNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBpbnB1dEJ1ZmZlckNvdW50ID0gaGVhZGVyRGF0YVtoZWFkZXJJbmRleCsrXTtcbiAgICAgICAgICAgIGxldCBzaXplczogbnVtYmVyW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5wdXRCdWZmZXJDb3VudDsgaisrKSB7XG4gICAgICAgICAgICAgICAgc2l6ZXMucHVzaChoZWFkZXJEYXRhW2hlYWRlckluZGV4KytdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG91dHB1dEJ1ZmZlciA9IGRhdGFCdWZmZXJzW2ldO1xuICAgICAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBzaXplIG9mIHNpemVzKSB7XG4gICAgICAgICAgICAgICAgYnVmZmVycy5wdXNoKG91dHB1dEJ1ZmZlci5zbGljZShvZmZzZXQsIG9mZnNldCArIHNpemUpKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gc2l6ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidWZmZXJzO1xuICAgIH1cblxuICAgIGlmICh0eXBlID09PSAzKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCBTb2NrZXRGdW5jdGlvbi5XSVJFX1NFUklBTElaRVIuZGVzZXJpYWxpemUoZGF0YUJ1ZmZlcnMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBjb21wcmVzc2lvbiB0eXBlICR7dHlwZX1gKTtcbn0pOyJdfQ==
930
- /* _JS_SOURCE_HASH = "c820da5d99596a319d37e9cb71d1bd23c38c5f13285953febf1fb51ed2b0b578"; */
930
+ /* _JS_SOURCE_HASH = "dda71e5b802e2381d3abdcba068e868fa08242c064c83808ce610e33b0ca8f25"; */
@@ -1,4 +1,4 @@
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";
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"; 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 __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
4
  var desc = Object.getOwnPropertyDescriptor(m, k);
@@ -153,4 +153,4 @@ async function doStream(stream, buffer) {
153
153
  }
154
154
  }
155
155
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWmlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiWmlwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQWdDO0FBQ2hDLGlEQUFpRDtBQUNqRCxnREFBd0I7QUFDeEIsMkNBQTZCO0FBRTdCLDBEQUFrRDtBQUVsRCxJQUFBLHNCQUFPLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFFOUMsTUFBTSxvQkFBb0IsR0FBRyxTQUFXLENBQUM7QUFDekMsTUFBTSx3QkFBd0IsR0FBRyxRQUFVLENBQUM7QUFFNUMsa1FBQWtRO0FBQ2xRLE1BQWEsR0FBRztJQUVRLEFBQWIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBYyxFQUFFLEtBQWM7UUFDbkQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLHdCQUF3QixFQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsSUFBSSxJQUFBLGFBQU0sR0FBRSxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO2dCQUNuQyxjQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBUSxFQUFFLE1BQWMsRUFBRSxFQUFFO29CQUN0RCxJQUFJLEdBQUc7d0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDOzt3QkFDaEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDSixhQUFhO1lBQ2IsT0FBTyxNQUFNLFFBQVEsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FB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Q0FBQztBQUVMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05vZGUgfSBmcm9tIFwiLi9taXNjXCI7XG5pbXBvcnQgeyBtZWFzdXJlRm5jIH0gZnJvbSBcIi4vcHJvZmlsaW5nL21lYXN1cmVcIjtcbmltcG9ydCB6bGliIGZyb20gXCJ6bGliXCI7XG5pbXBvcnQgKiBhcyBwYWtvIGZyb20gXCJwYWtvXCI7XG5cbmltcG9ydCB7IHNldEZsYWcgfSBmcm9tIFwiLi4vcmVxdWlyZS9jb21waWxlRmxhZ3NcIjtcbmltcG9ydCB7IE1heWJlUHJvbWlzZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5zZXRGbGFnKHJlcXVpcmUsIFwicGFrb1wiLCBcImFsbG93Y2xpZW50XCIsIHRydWUpO1xuXG5jb25zdCBTWU5DX1RIUkVTSE9MRF9CWVRFUyA9IDEwMF8wMDBfMDAwO1xuY29uc3QgWklQX1NZTkNfVEhSRVNIT0xEX0JZVEVTID0gMTBfMDAwXzAwMDtcblxuLy8gSU1QT1JUQU5UISBJZiB0aGlzIGlzIHNsb3csIGFkZCBhIExaNCB2ZXJzaW9uLCB3aGljaCB1c2VzIGx6NC13YXNtLW5vZGVqcy4gVGhpcyBzaG91bGQgYmUgYWJvdXQgMTBYIGZhc3RlciBpbiBib3RoIGRjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiwgb25seSB1c2luZyA1MCUgbW9yZSBzcGFjZSAod2hpY2ggaXNuJ3QgZ3JlYXQsIGJ1dC4uLiBpZiBpdCBpcyBsYWdnaW5nIHRoZSBtYWluIHRocmVhZCBpdCBtaWdodCBiZSB3b3J0aCBpdCkuXG5leHBvcnQgY2xhc3MgWmlwIHtcbiAgICBAbWVhc3VyZUZuY1xuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgZ3ppcChidWZmZXI6IEJ1ZmZlciwgbGV2ZWw/OiBudW1iZXIpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCA8IFpJUF9TWU5DX1RIUkVTSE9MRF9CWVRFUykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3ppcFN5bmMoYnVmZmVyLCBsZXZlbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTm9kZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHpsaWIuZ3ppcChidWZmZXIsIHsgbGV2ZWwgfSwgKGVycjogYW55LCByZXN1bHQ6IEJ1ZmZlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBkb1N0cmVhbShuZXcgQ29tcHJlc3Npb25TdHJlYW0oXCJnemlwXCIpLCBidWZmZXIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIEBtZWFzdXJlRm5jXG4gICAgcHVibGljIHN0YXRpYyBnemlwU3luYyhidWZmZXI6IEJ1ZmZlciwgbGV2ZWw/OiBudW1iZXIpOiBCdWZmZXIge1xuICAgICAgICBpZiAoaXNOb2RlKCkgJiYgYnVmZmVyLmxlbmd0aCA8IFpJUF9TWU5DX1RIUkVTSE9MRF9CWVRFUykge1xuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHpsaWIuZ3ppcFN5bmMoYnVmZmVyLCB7IGxldmVsIH0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20ocGFrby5nemlwKGJ1ZmZlcikpO1xuICAgIH1cblxuICAgIEBtZWFzdXJlRm5jXG4gICAgcHVibGljIHN0YXRpYyBndW56aXAoYnVmZmVyOiBCdWZmZXIpOiBNYXliZVByb21pc2U8QnVmZmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmd1bnppcFVudHJhY2tlZChidWZmZXIpO1xuICAgIH1cbiAgICBAbWVhc3VyZUZuY1xuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgZ3VuemlwQXN5bmNCYXNlKGJ1ZmZlcjogQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3VuemlwVW50cmFja2VkKGJ1ZmZlcik7XG4gICAgfVxuXG4gICAgQG1lYXN1cmVGbmNcbiAgICBwdWJsaWMgc3RhdGljIGd1bnppcFN5bmMoYnVmZmVyOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5ndW56aXBVbnRyYWNrZWRTeW5jKGJ1ZmZlcik7XG4gICAgfVxuXG4gICAgQG1lYXN1cmVGbmNcbiAgICBwdWJsaWMgc3RhdGljIGFzeW5jIGd1bnppcEJhdGNoKGJ1ZmZlcnM6IEJ1ZmZlcltdKTogUHJvbWlzZTxCdWZmZXJbXT4ge1xuICAgICAgICBsZXQgdGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIGJ1ZmZlcnMgPSBhd2FpdCBQcm9taXNlLmFsbChidWZmZXJzLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmd1bnppcFVudHJhY2tlZCh4KTtcbiAgICAgICAgfSkpO1xuICAgICAgICB0aW1lID0gRGF0ZS5ub3coKSAtIHRpbWU7XG4gICAgICAgIC8vIGxldCB0b3RhbFNpemUgPSBidWZmZXJzLnJlZHVjZSgoYWNjLCBidWZmZXIpID0+IGFjYyArIGJ1ZmZlci5sZW5ndGgsIDApO1xuICAgICAgICAvL2NvbnNvbGUubG9nKGBHdW56aXAgJHtmb3JtYXROdW1iZXIodG90YWxTaXplKX1CIGF0ICR7Zm9ybWF0TnVtYmVyKHRvdGFsU2l6ZSAvIHRpbWUgKiAxMDAwKX1CL3NgKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmZlcnM7XG4gICAgfVxuXG5cblxuICAgIHB1YmxpYyBzdGF0aWMgZ3VuemlwVW50cmFja2VkKGJ1ZmZlcjogQnVmZmVyKTogTWF5YmVQcm9taXNlPEJ1ZmZlcj4ge1xuICAgICAgICAvLyBTd2l0Y2ggdG8gdGhlIHN5bmNocm9ub3VzIHZlcnNpb24gaWYgdGhlIGJ1ZmZlciBpcyBzbWFsbC4gVGhpcyBpcyBhIGxvdCBmYXN0ZXIgaW4gTm9kZS5qcyBhbmQgY2xpZW50c2lkZS5cbiAgICAgICAgLy8gIC0gT24gdGVzdHMgb2YgcmFuZG9tIHNtYWxsIGFtb3VudHMgb2YgZGF0YSwgdGhpcyBzZWVtcyB0byBiZSB1cCB0byA3WCBmYXN0ZXIgKG9uIG5vZGUpLiBIb3dldmVyLCBvbiBub24tcmFuZG9tIGRhdGEsIG9uIHRoZSBhY3R1YWwgZGF0YSB3ZSdyZSB1c2luZywgaXQgc2VlbXMgdG8gYmUgYWxtb3N0IDUwIHRpbWVzIGZhc3Rlci4gU28uLi4gZGVmaW5pdGVseSB3b3J0aCBpdC4uLlxuICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCA8IFNZTkNfVEhSRVNIT0xEX0JZVEVTKSB7XG4gICAgICAgICAgICBsZXQgdGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gWmlwLmd1bnppcFVudHJhY2tlZFN5bmMoYnVmZmVyKTtcbiAgICAgICAgICAgIGxldCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSB0aW1lO1xuICAgICAgICAgICAgaWYgKGR1cmF0aW9uID4gNTApIHtcbiAgICAgICAgICAgICAgICAvLyBXYWl0LCBzbyB3ZSBkb24ndCBsb2NrIHVwIHRoZSBtYWluIHRocmVhZC4gQW5kIGlmIHdlIGFscmVhZHkgd2FpdCBpdCA1MG1zLCB0aGVuIHdhaXRpbmcgZm9yIG9uZSBmcmFtZSBpcyBtYXJnaW5hbCwgZXZlbiBjbGllbnQtc2lkZS4gXG4gICAgICAgICAgICAgICAgcmV0dXJuICgoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgICAgIH0pKSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOb2RlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBkb1N0cmVhbShuZXcgRGVjb21wcmVzc2lvblN0cmVhbShcImd6aXBcIiksIGJ1ZmZlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gWmlwLmd1bnppcFVudHJhY2tlZFN5bmMoYnVmZmVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGd1bnppcFVudHJhY2tlZFN5bmMoYnVmZmVyOiBCdWZmZXIpOiBCdWZmZXIge1xuICAgICAgICBpZiAoaXNOb2RlKCkgJiYgYnVmZmVyLmxlbmd0aCA8IFpJUF9TWU5DX1RIUkVTSE9MRF9CWVRFUykge1xuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHpsaWIuZ3VuemlwU3luYyhidWZmZXIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gQnVmZmVyLmZyb20ocGFrby51bmd6aXAoYnVmZmVyKSk7XG4gICAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBkb1N0cmVhbShzdHJlYW06IEdlbmVyaWNUcmFuc2Zvcm1TdHJlYW0sIGJ1ZmZlcjogQnVmZmVyKTogUHJvbWlzZTxCdWZmZXI+IHtcbiAgICBsZXQgcmVhZGVyID0gc3RyZWFtLnJlYWRhYmxlLmdldFJlYWRlcigpO1xuICAgIGxldCB3cml0ZXIgPSBzdHJlYW0ud3JpdGFibGUuZ2V0V3JpdGVyKCk7XG4gICAgbGV0IHdyaXRlUHJvbWlzZSA9IHdyaXRlci53cml0ZShidWZmZXIpO1xuICAgIGxldCBjbG9zZVByb21pc2UgPSB3cml0ZXIuY2xvc2UoKTtcblxuICAgIGxldCBvdXRwdXRCdWZmZXJzOiBCdWZmZXJbXSA9IFtdO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGxldCB7IHZhbHVlLCBkb25lIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVQcm9taXNlO1xuICAgICAgICAgICAgYXdhaXQgY2xvc2VQcm9taXNlO1xuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQob3V0cHV0QnVmZmVycyk7XG4gICAgICAgIH1cbiAgICAgICAgb3V0cHV0QnVmZmVycy5wdXNoKEJ1ZmZlci5mcm9tKHZhbHVlKSk7XG4gICAgfVxuXG59Il19
156
- /* _JS_SOURCE_HASH = "09b1b496be1d6f5cbcff6c1d73b1d1389ec6bd46eedf3b8fb71cbea47aa26dde"; */
156
+ /* _JS_SOURCE_HASH = "bafabd4976ce01311009f7fde726d2bb7a8236733f9e7381cbaa0153ed865d15"; */
@@ -1,4 +1,4 @@
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";
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"; 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.getTimeUnique = exports.getBufferFraction = exports.getBufferInt = exports.getShortNumber = exports.xor64BitsSafe = exports.setLowHighUint32Safe = exports.setLowHighUint32 = exports.getLowUint32 = exports.getHighUint32 = exports.addEpsilons = exports.minusEpsilon = void 0;
4
4
  /** Subtracts the smallest possible value from a number (a double). This makes it possible to convert an exclusive range end
@@ -118,4 +118,4 @@ function getTimeUnique() {
118
118
  }
119
119
  exports.getTimeUnique = getTimeUnique;
120
120
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJpdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0E7O0dBRUc7QUFDSCxTQUFnQixZQUFZLENBQUMsS0FBYTtJQUN0QyxJQUFJLElBQUksR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTlCLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ1osR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksRUFBRSxDQUFDO0lBQ1gsQ0FBQztTQUFNLENBQUM7UUFDSixHQUFHLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFRCxPQUFPLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBWkQsb0NBWUM7QUFDRCxNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM5QixTQUFnQixXQUFXLENBQUMsS0FBYSxFQUFFLEtBQWE7SUFDcEQsSUFBSSxJQUFJLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5QixHQUFHLElBQUksS0FBSyxDQUFDO0lBQ2IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDVixHQUFHLElBQUksU0FBUyxDQUFDO1FBQ2pCLElBQUksRUFBRSxDQUFDO0lBQ1gsQ0FBQztTQUFNLElBQUksR0FBRyxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ3pCLEdBQUcsSUFBSSxTQUFTLENBQUM7UUFDakIsSUFBSSxFQUFFLENBQUM7SUFDWCxDQUFDO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQWRELGtDQWND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QyxNQUFjO0lBQzVDLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUM7QUFDeEIsQ0FBQztBQUhELDhDQUdDO0FBRUQ7Ozs7Ozs7O0VBUUU7QUFHRixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFDakIsU0FBZ0IsYUFBYTtJQUN6QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdEIsSUFBSSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7UUFDbkIsSUFBSSxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUNELFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQVBELHNDQU9DIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKiogU3VidHJhY3RzIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSB2YWx1ZSBmcm9tIGEgbnVtYmVyIChhIGRvdWJsZSkuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gY29udmVydCBhbiBleGNsdXNpdmUgcmFuZ2UgZW5kXG4gKiAgICAgIHRvIGFuIGluY2x1c2l2ZSByYW5nZSBlbmQsIHdoaWNoIGlzIHNvbWV0aW1lcyByZXF1aXJlZCAoYXMgaW4sIDwgeCBpcyB0aGUgc2FtZSBhcyA8PSBtaW51c0Vwc2lsb24oeCkpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWludXNFcHNpbG9uKHZhbHVlOiBudW1iZXIpIHtcbiAgICBsZXQgaGlnaCA9IGdldEhpZ2hVaW50MzIodmFsdWUpO1xuICAgIGxldCBsb3cgPSBnZXRMb3dVaW50MzIodmFsdWUpO1xuXG4gICAgaWYgKGxvdyA9PT0gMCkge1xuICAgICAgICBsb3cgPSAyICoqIDMyIC0gMTtcbiAgICAgICAgaGlnaC0tO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxvdy0tO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRMb3dIaWdoVWludDMyKGxvdywgaGlnaCk7XG59XG5jb25zdCBtYXhVaW50MzIgPSAyICoqIDMyIC0gMTtcbmV4cG9ydCBmdW5jdGlvbiBhZGRFcHNpbG9ucyh2YWx1ZTogbnVtYmVyLCBjb3VudDogbnVtYmVyKSB7XG4gICAgbGV0IGhpZ2ggPSBnZXRIaWdoVWludDMyKHZhbHVlKTtcbiAgICBsZXQgbG93ID0gZ2V0TG93VWludDMyKHZhbHVlKTtcblxuICAgIGxvdyArPSBjb3VudDtcbiAgICBpZiAobG93IDwgMCkge1xuICAgICAgICBsb3cgKz0gbWF4VWludDMyO1xuICAgICAgICBoaWdoKys7XG4gICAgfSBlbHNlIGlmIChsb3cgPiBtYXhVaW50MzIpIHtcbiAgICAgICAgbG93IC09IG1heFVpbnQzMjtcbiAgICAgICAgaGlnaC0tO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRMb3dIaWdoVWludDMyKGxvdywgaGlnaCk7XG59XG5cbmxldCBjb252ZXJzaW9uQnVmZmVyID0gbmV3IEZsb2F0NjRBcnJheSgxKTtcbmxldCBjb252ZXJzaW9uVWludDhCdWZmZXIgPSBuZXcgVWludDhBcnJheShjb252ZXJzaW9uQnVmZmVyLmJ1ZmZlcik7XG5sZXQgY29udmVyc2lvblVpbnQzMkJ1ZmZlciA9IG5ldyBVaW50MzJBcnJheShjb252ZXJzaW9uQnVmZmVyLmJ1ZmZlcik7XG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlnaFVpbnQzMihudW06IG51bWJlcik6IG51bWJlciB7XG4gICAgY29udmVyc2lvbkJ1ZmZlclswXSA9IG51bTtcbiAgICByZXR1cm4gY29udmVyc2lvblVpbnQzMkJ1ZmZlclsxXTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb3dVaW50MzIobnVtOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnZlcnNpb25CdWZmZXJbMF0gPSBudW07XG4gICAgcmV0dXJuIGNvbnZlcnNpb25VaW50MzJCdWZmZXJbMF07XG59XG5cbi8qKiBJTVBPUlRBTlQhIEJld2FyZSBvZiBjb21wYXJpc29ucyB3aXRoIDY0IGJpdCBudW1iZXJzLiBnZXRGbG9hdDY0X2Zyb21CeXRlcyg0Mjk0MTM2NDM4LCAxNjgpICE9PSBnZXRGbG9hdDY0X2Zyb21CeXRlcyg0Mjk0MTM2NDM4LCAxNjgpLlxuICogICAgICBVU0UgaXM2NEJpdEVxdWFsIGluc3RlYWQsIE9SLCBlbnN1cmUgdGhlIDIgaGlnaGVzdCBiaXRzIGFyZSBhbHdheXMgMC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldExvd0hpZ2hVaW50MzIobG93OiBudW1iZXIsIGhpZ2g6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29udmVyc2lvblVpbnQzMkJ1ZmZlclswXSA9IGxvdztcbiAgICBjb252ZXJzaW9uVWludDMyQnVmZmVyWzFdID0gaGlnaDtcbiAgICByZXR1cm4gY29udmVyc2lvbkJ1ZmZlclswXTtcbn1cblxuLyoqIEFkZHMgcHJvdGVjdGlvbiBhZ2FpbnN0IE5hTiB2YWx1ZXMsIGNoYW5naW5nIHRoZSByZXN1bHQgaWYgaXQgd291bGQgYmUgTmFOLiBUaGlzIGlzIGJlY2F1c2UgTmFOIHZhbHVlcyB3aWxsIGNvbXBhcmUgdG8gYmUgbm90IGVxdWFsIGV2ZW4gaWYgdGhleSBhcmUgZXF1YWwgaW4gY2VydGFpbiBjYXNlcywgYW5kIGluIG90aGVyIGNhc2VzLCB0aGV5J2xsIGFsd2F5cyBiZSBlcXVhbCwgZXZlbiBpZiB0aGVpciBiaXRzIGFyZSBub3QgZXF1YWwuXG4gICAgLSBUaGlzIG1lYW5zIHRoaXMgaXMgbm90IGEgcmV2ZXJzaWJsZSBvcGVyYXRpb24uIEhvd2V2ZXIsIGluIGEgbG90IG9mIGNhc2VzLCB0aGF0IGRvZXNuJ3QgbWF0dGVyLiBcbiovXG5leHBvcnQgZnVuY3Rpb24gc2V0TG93SGlnaFVpbnQzMlNhZmUobG93OiBudW1iZXIsIGhpZ2g6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29udmVyc2lvblVpbnQzMkJ1ZmZlclswXSA9IGxvdztcbiAgICAvLyBQcmV2ZW50IE5hTiBieSBub3Qgc2V0dGluZyBhbGwgdGhlIGV4cG9uZW50IGJpdHMgdG8gMVxuICAgIGNvbnZlcnNpb25VaW50MzJCdWZmZXJbMV0gPSBoaWdoICYgMHhCRkZGRkZGRjtcbiAgICByZXR1cm4gY29udmVyc2lvbkJ1ZmZlclswXTtcbn1cblxuLy8gTk9URTogTm90IHJldmVyc2libGUsIHNlZSBzZXRMb3dIaWdoVWludDMyU2FmZVxuZXhwb3J0IGZ1bmN0aW9uIHhvcjY0Qml0c1NhZmUoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBoaWdoID0gZ2V0SGlnaFVpbnQzMihhKTtcbiAgICBsZXQgbG93ID0gZ2V0TG93VWludDMyKGEpO1xuICAgIGxldCBoaWdoMiA9IGdldEhpZ2hVaW50MzIoYik7XG4gICAgbGV0IGxvdzIgPSBnZXRMb3dVaW50MzIoYik7XG4gICAgcmV0dXJuIHNldExvd0hpZ2hVaW50MzJTYWZlKGxvdyBeIGxvdzIsIGhpZ2ggXiBoaWdoMik7XG59XG5cbi8vIEdldHMgYml0cyB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gYSBudW1iZXIuIFNwZWNpZmljYWxseSwgdGhlIGZpcnN0IDYyIGJpdHMsXG4vLyAgYXMgNjQgYml0cyB3aWxsIG5vdCBjb21wYXJlIGNvcnJlY3RseSB3aGVuIHRyZWF0ZWQgYXMgYSBkb3VibGUuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2hvcnROdW1iZXIoYnVmZmVyOiBCdWZmZXIpOiBudW1iZXIge1xuICAgIGxldCBoaWdoID0gYnVmZmVyLnJlYWRVSW50MzJCRSgwKSAmIDB4M0ZGRkZGRkY7XG4gICAgbGV0IGxvdyA9IGJ1ZmZlci5yZWFkVUludDMyQkUoNCk7XG4gICAgcmV0dXJuIHNldExvd0hpZ2hVaW50MzIobG93LCBoaWdoKTtcbn1cbi8qIFJldHVybnMgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAyKio0OCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1ZmZlckludChidWZmZXI6IEJ1ZmZlcik6IG51bWJlciB7XG4gICAgbGV0IG51bSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1pbihidWZmZXIubGVuZ3RoLCA2KTsgaSsrKSB7XG4gICAgICAgIG51bSA9IG51bSAqIDI1NiArIGJ1ZmZlcltpXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbn1cbmNvbnN0IGludE1heCA9IDIgKiogNDg7XG4vKiogUmV0dXJucyBhIG51bWJlciBiZXR3ZWVuIDAgKGluY2x1c2l2ZSkgYW5kIDEgKGV4Y2x1c2l2ZSkgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCdWZmZXJGcmFjdGlvbihidWZmZXI6IEJ1ZmZlcik6IG51bWJlciB7XG4gICAgbGV0IGludCA9IGdldEJ1ZmZlckludChidWZmZXIpO1xuICAgIHJldHVybiBpbnQgLyBpbnRNYXg7XG59XG5cbi8qXG5leHBvcnQgZnVuY3Rpb24gbnVtYmVyVG9CYXNlNjQobnVtOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnZlcnNpb25CdWZmZXJbMF0gPSBudW07XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNvbnZlcnNpb25CdWZmZXIuYnVmZmVyKS50b1N0cmluZyhcImJhc2U2NFwiKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJGcm9tQmFzZTY0KGJhc2U2NDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkoQnVmZmVyLmZyb20oYmFzZTY0LCBcImJhc2U2NFwiKSlbMF07XG59XG4qL1xuXG5cbmxldCBwcmV2VGltZSA9IDA7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZVVuaXF1ZSgpIHtcbiAgICBsZXQgdGltZSA9IERhdGUubm93KCk7XG4gICAgaWYgKHRpbWUgPD0gcHJldlRpbWUpIHtcbiAgICAgICAgdGltZSA9IGFkZEVwc2lsb25zKHByZXZUaW1lLCAxKTtcbiAgICB9XG4gICAgcHJldlRpbWUgPSB0aW1lO1xuICAgIHJldHVybiB0aW1lO1xufSJdfQ==
121
- /* _JS_SOURCE_HASH = "6fd551828fef1e8f457b997ea04889957872cb51682949d9912465695bb77ef6"; */
121
+ /* _JS_SOURCE_HASH = "7474dac6ad47abfc3e1024d9b79f0429a22e46a14dd1006f8d0d92552f1c3761"; */
@@ -1,4 +1,4 @@
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";
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"; 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.asFloat64MaybeCopy = exports.asInt32 = exports.asUint32 = exports.asFloat32 = exports.asFloat64 = exports.asBuffer = exports.cloneBuffer = void 0;
4
4
  const types_1 = require("./types");
@@ -73,4 +73,4 @@ function asFloat64MaybeCopy(data) {
73
73
  }
74
74
  exports.asFloat64MaybeCopy = asFloat64MaybeCopy;
75
75
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1ZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQTBDO0FBSzFDLFNBQWdCLFdBQVcsQ0FBQyxJQUFZO0lBQ3BDLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckIsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQUpELGtDQUlDO0FBR0QsU0FBZ0IsUUFBUSxDQUFDLElBQWdCO0lBQ3JDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdkIsSUFBSSxJQUFJLFlBQVksTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3hDLElBQUksQ0FBQyxJQUFBLHVCQUFlLEVBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFXLENBQUM7SUFDL0MsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzVFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBRSxJQUFZLENBQUMsTUFBTSxFQUFHLElBQVksQ0FBQyxVQUFVLEVBQUcsSUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ25HLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFURCw0QkFTQztBQUNELFNBQWdCLFNBQVMsQ0FBQyxJQUFZO0lBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxt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VSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsQ0FBQztBQVJELGdEQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2FuSGF2ZUNoaWxkcmVuIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgQXJyYXlCdWZmZXJWaWV3VHlwZXMgPSBVaW50OEFycmF5IHwgSW50OEFycmF5IHwgVWludDE2QXJyYXkgfCBJbnQxNkFycmF5IHwgVWludDMyQXJyYXkgfCBJbnQzMkFycmF5IHwgQmlnVWludDY0QXJyYXkgfCBCaWdJbnQ2NEFycmF5IHwgRmxvYXQ2NEFycmF5IHwgRmxvYXQzMkFycmF5IHwgVWludDhDbGFtcGVkQXJyYXk7XG5leHBvcnQgdHlwZSBCdWZmZXJUeXBlID0gQXJyYXlCdWZmZXIgfCBTaGFyZWRBcnJheUJ1ZmZlciB8IEFycmF5QnVmZmVyVmlld1R5cGVzO1xuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVCdWZmZXIoZGF0YTogQnVmZmVyKTogQnVmZmVyIHtcbiAgICBsZXQgbmV3QnVmZmVyID0gQnVmZmVyLmFsbG9jKGRhdGEubGVuZ3RoKTtcbiAgICBkYXRhLmNvcHkobmV3QnVmZmVyKTtcbiAgICByZXR1cm4gbmV3QnVmZmVyO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhc0J1ZmZlcihkYXRhOiBCdWZmZXJUeXBlKTogQnVmZmVyIHtcbiAgICBpZiAoIWRhdGEpIHJldHVybiBkYXRhO1xuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgQnVmZmVyKSByZXR1cm4gZGF0YTtcbiAgICBpZiAoIWNhbkhhdmVDaGlsZHJlbihkYXRhKSkgcmV0dXJuIGRhdGEgYXMgYW55O1xuICAgIGlmICghKFwiYnVmZmVyXCIgaW4gZGF0YSkgfHwgIShcImJ5dGVPZmZzZXRcIiBpbiBkYXRhKSB8fCAhKFwiYnl0ZUxlbmd0aFwiIGluIGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBCdWZmZXIuZnJvbShkYXRhKTtcbiAgICB9XG4gICAgbGV0IHJlc3VsdCA9IEJ1ZmZlci5mcm9tKChkYXRhIGFzIGFueSkuYnVmZmVyLCAoZGF0YSBhcyBhbnkpLmJ5dGVPZmZzZXQsIChkYXRhIGFzIGFueSkuYnl0ZUxlbmd0aCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc0Zsb2F0NjQoZGF0YTogQnVmZmVyKTogRmxvYXQ2NEFycmF5IHtcbiAgICBpZiAoZGF0YS5sZW5ndGggJSA4ICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRGF0YSBpcyBub3QgOCBjb3VudCBhbGlnbmVkLCByZWNlaXZlZCBsZW5ndGggb2YgJHtkYXRhLmxlbmd0aH1gKTtcbiAgICB9XG4gICAgaWYgKGRhdGEuYnl0ZU9mZnNldCAlIDggIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEYXRhIGlzIG5vdCA4IGJ5dGUgYWxpZ25lZCwgcmVjZWl2ZWQgb2Zmc2V0IG9mICR7ZGF0YS5ieXRlT2Zmc2V0fWApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEZsb2F0NjRBcnJheShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCBNYXRoLmZsb29yKGRhdGEubGVuZ3RoIC8gOCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFzRmxvYXQzMihkYXRhOiBCdWZmZXIpOiBGbG9hdDMyQXJyYXkge1xuICAgIGlmIChkYXRhLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEYXRhIGlzIG5vdCA0IGJ5dGUgYWxpZ25lZCwgcmVjZWl2ZWQgbGVuZ3RoIG9mICR7ZGF0YS5sZW5ndGh9YCk7XG4gICAgfVxuICAgIGlmIChkYXRhLmJ5dGVPZmZzZXQgJSA0ICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRGF0YSBpcyBub3QgNCBieXRlIGFsaWduZWQsIHJlY2VpdmVkIG9mZnNldCBvZiAke2RhdGEuYnl0ZU9mZnNldH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoZGF0YS5idWZmZXIsIGRhdGEuYnl0ZU9mZnNldCwgTWF0aC5mbG9vcihkYXRhLmxlbmd0aCAvIDQpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBhc1VpbnQzMihkYXRhOiBCdWZmZXIpOiBVaW50MzJBcnJheSB7XG4gICAgaWYgKGRhdGEubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERhdGEgaXMgbm90IDQgYnl0ZSBhbGlnbmVkLCByZWNlaXZlZCBsZW5ndGggb2YgJHtkYXRhLmxlbmd0aH1gKTtcbiAgICB9XG4gICAgaWYgKGRhdGEuYnl0ZU9mZnNldCAlIDQgIT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEYXRhIGlzIG5vdCA0IGJ5dGUgYWxpZ25lZCwgcmVjZWl2ZWQgb2Zmc2V0IG9mICR7ZGF0YS5ieXRlT2Zmc2V0fWApO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFVpbnQzMkFycmF5KGRhdGEuYnVmZmVyLCBkYXRhLmJ5dGVPZmZzZXQsIE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyA0KSk7XG59XG5leHBvcnQgZnVuY3Rpb24gYXNJbnQzMihkYXRhOiBCdWZmZXIpOiBJbnQzMkFycmF5IHtcbiAgICBpZiAoZGF0YS5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRGF0YSBpcyBub3QgNCBieXRlIGFsaWduZWQsIHJlY2VpdmVkIGxlbmd0aCBvZiAke2RhdGEubGVuZ3RofWApO1xuICAgIH1cbiAgICBpZiAoZGF0YS5ieXRlT2Zmc2V0ICUgNCAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERhdGEgaXMgbm90IDQgYnl0ZSBhbGlnbmVkLCByZWNlaXZlZCBvZmZzZXQgb2YgJHtkYXRhLmJ5dGVPZmZzZXR9YCk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW50MzJBcnJheShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCBNYXRoLmZsb29yKGRhdGEubGVuZ3RoIC8gNCkpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhc0Zsb2F0NjRNYXliZUNvcHkoZGF0YTogQnVmZmVyKSB7XG4gICAgaWYgKGRhdGEubGVuZ3RoICUgOCAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERhdGEgaXMgbm90IDggY291bnQgYWxpZ25lZCwgcmVjZWl2ZWQgbGVuZ3RoIG9mICR7ZGF0YS5sZW5ndGh9YCk7XG4gICAgfVxuICAgIGlmIChkYXRhLmJ5dGVPZmZzZXQgJSA4ICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBhc0Zsb2F0NjQoY2xvbmVCdWZmZXIoZGF0YSkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEZsb2F0NjRBcnJheShkYXRhLmJ1ZmZlciwgZGF0YS5ieXRlT2Zmc2V0LCBNYXRoLmZsb29yKGRhdGEubGVuZ3RoIC8gOCkpO1xufVxuIl19
76
- /* _JS_SOURCE_HASH = "5d67435fc79be050d69cf9b1ce1c39b5d7911a52ee00e73af54477e9fe10f566"; */
76
+ /* _JS_SOURCE_HASH = "27a8d0c2352cb05b3688c192d18d334d68ff09615cc34efac308e9f79c0c91b1"; */
@@ -1,4 +1,4 @@
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";
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"; 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.externalCache = exports.cacheShallowConfigArgEqual = exports.cacheJSONArgsEqual = exports.cacheArgsEqual = exports.cacheArrayEqual = exports.cacheList = exports.cacheWeak = exports.cacheLimited = exports.cache = exports.cacheEmptyArray = exports.lazy = void 0;
4
4
  const misc_1 = require("./misc");
@@ -299,4 +299,4 @@ function externalCache() {
299
299
  }
300
300
  exports.externalCache = externalCache;
301
301
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNhY2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaUNBQW9DO0FBQ3BDLG1DQUE2RDtBQUU3RCxTQUFnQixJQUFJLENBQUksT0FBZ0I7SUFDcEMsSUFBSSxLQUFLLEdBQTZCLFNBQVMsQ0FBQztJQUNoRCxTQUFTLEdBQUc7UUFDUixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFBQSxDQUFDO0lBQ0YsR0FBRyxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUU7UUFDYixLQUFLLEdBQUcsU0FBUyxDQUFDO0lBQ3RCLENBQUMsQ0FBQztJQUNGLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxRQUFXLEVBQUUsRUFBRTtRQUN0QixLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBZkQsb0JBZUM7QUFhRCxvRkFBb0Y7QUFDcEYsNkNBQTZDO0FBQzdDLE1BQU0sVUFBVSxHQUFVLEVBQUUsQ0FBQztBQUM3QixTQUFnQixlQUFlLENBQUksS0FBVTtJQUN6QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sVUFBVSxDQUFDO0lBQzFDLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFIRCwwQ0FHQztBQUVELFNBQWdCLEtBQUssQ0FDakIsUUFBdUQ7SUFVdkQsSUFBSSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBTyxDQUFDO0lBQ3pDLElBQUksTUFBTSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7SUFDcEMsU0FBUyxLQUFLLENBQUMsS0FBVSxFQUFFLEdBQUcsU0FB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Q0ksS0FBSyxDQUFDLFNBQWlCO1lBQ25CLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDcEMsQ0FBQztRQUNELFFBQVE7WUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckIsQ0FBQztRQUNELFNBQVMsRUFBRSxDQUFDO1FBQ1osU0FBUyxFQUFFLENBQUM7S0FDZixDQUNKLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBOUNELGdFQThDQztBQUdELFNBQWdCLGFBQWE7SUFJekIsSUFBSSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWMsQ0FBQztJQUNuQyxPQUFPO1FBQ0gsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNoQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDO0tBQ0osQ0FBQztBQUNOLENBQUM7QUFiRCxzQ0FhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFycmF5RXF1YWwgfSBmcm9tIFwiLi9taXNjXCI7XG5pbXBvcnQgeyBBbnlGdW5jdGlvbiwgQXJncywgY2FuSGF2ZUNoaWxkcmVuIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGxhenk8VD4oZmFjdG9yeTogKCkgPT4gVCkge1xuICAgIGxldCB2YWx1ZTogeyB2YWx1ZTogVCB9IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgdmFsdWUgPSB7IHZhbHVlOiBmYWN0b3J5KCkgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWUudmFsdWU7XG4gICAgfTtcbiAgICBnZXQucmVzZXQgPSAoKSA9PiB7XG4gICAgICAgIHZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgZ2V0LnNldCA9IChuZXdWYWx1ZTogVCkgPT4ge1xuICAgICAgICB2YWx1ZSA9IHsgdmFsdWU6IG5ld1ZhbHVlIH07XG4gICAgfTtcbiAgICByZXR1cm4gZ2V0O1xufVxuXG4vLyBOT1RFOiBUaGUgcmVhc29uIHdlIG5lZWQgdG8gcGVyaW9kaWNhbGx5IGNsZWFyLCBpcyBiZWNhdXNlIHNvbWV0aW1lcyBhIHZlcnkgc21hbGxcbi8vICAgICAgcGFydCBvZiBhIGxhcmdlIHBheWxvYWQgKGV4LCBwZXJzaXN0ZWQgb3ZlcnJpZGVzKSBpcyBjYWNoZWQsIHdoaWNoIHRoZW4gcmVzdWx0c1xuLy8gICAgICBpbiB0aGUgd2hvbGUgcGF5bG9hZCBiZWluZyBjYWNoZWQsIHdoaWNoIHJlc3VsdHMgaW4gYSBsb3Qgb2YgbWVtb3J5IGJlaW5nIHVzZWQuXG5cbi8vIElNUE9SVEFOVCEgVGhlIGNsZWFudXAgZnVuY3Rpb25zIENBTk5PVCBjbG9zZSB1cG9uIGFueXRoaW5nLCBvciBlbHNlIHRoZXkgd2lsbCBjYXVzZSBsZWFrcyFcbi8vICBBbGwgZGF0YSB0aGV5IHVzZSBzaG91bGQgYmUgaW4gZGF0YS5cbmludGVyZmFjZSBDbGVhbnVwRm5jPFQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgICAoZGF0YTogVCk6IHZvaWQ7XG59XG5cblxuLy8gTk9URTogRW1wdHkgYXJyYXlzIGFyZSBzbyBjb21tb24sIHRoYXQgaXQgaXMgdXNlZnVsIHRvIHJlcHJlc2VudCB0aGVtIGFzIHRoZSBzYW1lXG4vLyAgZW10cHkgYXJyYXksIHRvIGluY3JlYXNlIGNhY2hlIGhpdCByYXRlcy5cbmNvbnN0IGVtcHR5QXJyYXk6IGFueVtdID0gW107XG5leHBvcnQgZnVuY3Rpb24gY2FjaGVFbXB0eUFycmF5PFQ+KGFycmF5OiBUW10pOiBUW10ge1xuICAgIGlmIChhcnJheS5sZW5ndGggPT09IDApIHJldHVybiBlbXB0eUFycmF5O1xuICAgIHJldHVybiBhcnJheTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlPE91dHB1dCwgS2V5LCBVbnRyYWNrZWQgZXh0ZW5kcyB1bmtub3duW10+KFxuICAgIGdldFZhbHVlOiAoa2V5OiBLZXksIC4uLnVudHJhY2tlZDogVW50cmFja2VkKSA9PiBPdXRwdXRcbik6IHtcbiAgICAoa2V5OiBLZXksIC4uLnVudHJhY2tlZDogVW50cmFja2VkKTogT3V0cHV0O1xuICAgIC8vIE5PVEU6IElmIHlvdSB3YW50IHRvIGNsZWFyIGFsbCwganVzdCBtYWtlIGEgbmV3IGNhY2hlIVxuICAgIGNsZWFyKGtleTogS2V5KTogdm9pZDtcbiAgICBjbGVhckFsbCgpOiB2b2lkO1xuICAgIGZvcmNlU2V0KGtleTogS2V5LCB2YWx1ZTogT3V0cHV0KTogdm9pZDtcbiAgICBnZXRBbGxLZXlzKCk6IEtleVtdO1xuICAgIGdldChrZXk6IEtleSk6IE91dHB1dCB8IHVuZGVmaW5lZDtcbn0ge1xuICAgIGxldCBzdGFydGluZ0NhbGN1bGF0aW5nID0gbmV3IFNldDxLZXk+KCk7XG4gICAgbGV0IHZhbHVlcyA9IG5ldyBNYXA8S2V5LCBPdXRwdXQ+KCk7XG4gICAgZnVuY3Rpb24gY2FjaGUoaW5wdXQ6IEtleSwgLi4udW50cmFja2VkOiBVbnRyYWNrZWQpIHtcbiAgICAgICAgbGV0IGtleSA9IGlucHV0O1xuICAgICAgICBpZiAodmFsdWVzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzLmdldChrZXkpIGFzIGFueTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnRpbmdDYWxjdWxhdGluZy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgLy8gVE9ETzogRml4IHRoZSB0eXBlcyBoZXJlLCBieSB0aHJvd2luZywgYW5kIHRoZW4gZm9yIHRoZSBjYXNlc1xuICAgICAgICAgICAgLy8gIHRoYXQgZG9uJ3QgdGhyb3csIG1ha2Ugb3VyIG91dHB1dCB0eXBlIGluY2x1ZGUgdW5kZWZpbmVkXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0aW5nQ2FsY3VsYXRpbmcuYWRkKGtleSk7XG4gICAgICAgIGxldCB2YWx1ZSA9IGdldFZhbHVlKGlucHV0LCAuLi51bnRyYWNrZWQpO1xuICAgICAgICB2YWx1ZXMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGNhY2hlLmNsZWFyID0gKGtleTogS2V5KSA9PiB7XG4gICAgICAgIHZhbHVlcy5kZWxldGUoa2V5KTtcbiAgICAgICAgc3RhcnRpbmdDYWxjdWxhdGluZy5kZWxldGUoa2V5KTtcbiAgICB9O1xuICAgIGNhY2hlLmZvcmNlU2V0ID0gKGtleTogS2V5LCB2YWx1ZTogT3V0cHV0KSA9PiB7XG4gICAgICAgIHZhbHVlcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHN0YXJ0aW5nQ2FsY3VsYXRpbmcuYWRkKGtleSk7XG4gICAgfTtcbiAgICBjYWNoZS5nZXRBbGxLZXlzID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gWy4uLnZhbHVlcy5rZXlzKCldO1xuICAgIH07XG4gICAgY2FjaGUuZ2V0ID0gKGtleTogS2V5KSA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuZ2V0KGtleSk7XG4gICAgfTtcbiAgICBjYWNoZS5jbGVhckFsbCA9ICgpID0+IHtcbiAgICAgICAgdmFsdWVzLmNsZWFyKCk7XG4gICAgICAgIHN0YXJ0aW5nQ2FsY3VsYXRpbmcuY2xlYXIoKTtcbiAgICB9O1xuICAgIHJldHVybiBjYWNoZTtcbn1cblxuXG4vKiogTWFrZXMgYSBjYWNoZSB0aGF0IGxpbWl0cyB0aGUgbnVtYmVyIG9mIGVudHJpZXMsIGFsbG93aW5nIHlvdSB0byBwdXQgYXJiaXRyYXJ5IGRhdGEgaW4gaXRcbiAqICAgICAgd2l0aG91dCB3b3JyeWluZyBhYm91dCBsZWFraW5nIG1lbW9yeVxuICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlTGltaXRlZDxPdXRwdXQsIEtleT4oXG4gICAgLy8gTk9URTogV2UgY2FuJ3QgY2FsY3VsYXRlIHdoYXQgbGltaXQgc2hvdWxkIGJlIGJhc2VkIG9uIGNvbXBhcmluZyB0aGUgZXZhbHVhdGlvbiB0aW1lXG4gICAgLy8gIGFuZCB0aGUgdGltZSB0byBjb21wYXJlIGFnYWluc3QgdGhlIHZhbHVlcy4gQmVjYXVzZSwgZXZlbiBpZiBmaW5kaW5nIGEgbWF0Y2ggdGFrZXMgZmFyIGxvbmdlciB0aGFuXG4gICAgLy8gIGNhbGN1bGF0aW5nLCBrZWVwaW5nIGEgY29uc2lzdGVudCBvdXRwdXQgY2FuIHNhdmUgKGEgY29uc2lkZXJhYmxlIGFtb3VudCBvZikgdGltZSBpbiBkb3duc3RyZWFtIGNhY2hlcy5cbiAgICBtYXhDb3VudDogbnVtYmVyLFxuICAgIGdldFZhbHVlOiAoa2V5OiBLZXkpID0+IE91dHB1dFxuKSB7XG4gICAgbGV0IHN0YXJ0aW5nQ2FsY3VsYXRpbmcgPSBuZXcgU2V0PEtleT4oKTtcbiAgICBsZXQgdmFsdWVzID0gbmV3IE1hcDxLZXksIE91dHB1dD4oKTtcbiAgICBmdW5jdGlvbiBnZXQoaW5wdXQ6IEtleSk6IE91dHB1dCB7XG4gICAgICAgIGxldCBrZXkgPSBpbnB1dDtcbiAgICAgICAgaWYgKHZhbHVlcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5nZXQoa2V5KSBhcyBhbnk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXJ0aW5nQ2FsY3VsYXRpbmcuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3ljbGljIGFjY2VzcyBpbiBjYWNoZWApO1xuICAgICAgICB9XG4gICAgICAgIHN0YXJ0aW5nQ2FsY3VsYXRpbmcuYWRkKGtleSk7XG5cbiAgICAgICAgLy8gQ2xlYXIgd2hlbiBpdCBnZXRzIHRvbyBiaWcuIFRoaXMgaXMga2luZCBvZiBsaWtlIGEgd29yc2VcbiAgICAgICAgLy8gIGxlYXN0IHJlY2VudGx5IHVzZWQgY2FjaGUsIGJlY2F1c2UgZW50cmllcyB0aGF0IGFyZSBhY2Nlc3NlZFxuICAgICAgICAvLyAgb2Z0ZW4gd2lsbCBxdWlja2x5IGdldCBwdXQgYmFjayBpbi4gVGhpcyBpcyBlZmZlY3RpdmUgYXMgbG9uZ1xuICAgICAgICAvLyAgYXMgYWNjZXNzZXMgdGFrZSBzaW1pbGFyIGFtb3VudHMgb2YgdGltZS4gSWYgdGhlcmUgaXMgYSB2ZXJ5IHNsb3dcbiAgICAgICAgLy8gIGFuZCB2ZXJ5IGNvbW1vbmx5IGFjY2Vzc2VkIHZhbHVlLCBpdCBjb3VsZCBiZSBldmljdGVkIGJ5IG1hbnkgdmVyeVxuICAgICAgICAvLyAgZmFzdCBhY2Nlc3Nlcywgd2hpY2ggd291bGQgYmUgdW5mb3J0dW5hdGUuXG4gICAgICAgIGlmICh2YWx1ZXMuc2l6ZSA+PSBtYXhDb3VudCkge1xuICAgICAgICAgICAgdmFsdWVzLmNsZWFyKCk7XG4gICAgICAgICAgICBzdGFydGluZ0NhbGN1bGF0aW5nLmNsZWFyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmFsdWUgPSBnZXRWYWx1ZShpbnB1dCk7XG4gICAgICAgIHZhbHVlcy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0W1wiZm9yY2VTZXRcIl0gPSAoa2V5OiBLZXksIHZhbHVlOiBPdXRwdXQpID0+IHtcbiAgICAgICAgdmFsdWVzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgc3RhcnRpbmdDYWxjdWxhdGluZy5hZGQoa2V5KTtcbiAgICB9O1xuICAgIGdldFtcImNsZWFyS2V5XCJdID0gKGtleTogS2V5KSA9PiB7XG4gICAgICAgIHZhbHVlcy5kZWxldGUoa2V5KTtcbiAgICAgICAgc3RhcnRpbmdDYWxjdWxhdGluZy5kZWxldGUoa2V5KTtcbiAgICB9O1xuICAgIGdldFtcImNsZWFyXCJdID0gKCkgPT4ge1xuICAgICAgICB2YWx1ZXMuY2xlYXIoKTtcbiAgICAgICAgc3RhcnRpbmdDYWxjdWxhdGluZy5jbGVhcigpO1xuICAgIH07XG5cbiAgICByZXR1cm4gZ2V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVXZWFrPE91dHB1dCwgS2V5IGV4dGVuZHMgb2JqZWN0PihnZXRWYWx1ZTogKGtleTogS2V5KSA9PiBPdXRwdXQpOiAoa2V5OiBLZXkpID0+IE91dHB1dCB7XG4gICAgbGV0IHN0YXRlID0ge1xuICAgICAgICBzdGFydGluZ0NhbGN1bGF0aW5nOiBuZXcgV2Vha1NldDxLZXk+KCksXG4gICAgICAgIHZhbHVlczogbmV3IFdlYWtNYXA8S2V5LCBPdXRwdXQ+KCksXG4gICAgfTtcblxuICAgIHJldHVybiAoaW5wdXQpID0+IHtcbiAgICAgICAgbGV0IGtleSA9IGlucHV0O1xuICAgICAgICBpZiAoc3RhdGUudmFsdWVzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUudmFsdWVzLmdldChrZXkpIGFzIGFueTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuc3RhcnRpbmdDYWxjdWxhdGluZy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDeWNsaWMgYWNjZXNzIGluIGNhY2hlV2Vha2ApO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLnN0YXJ0aW5nQ2FsY3VsYXRpbmcuYWRkKGtleSk7XG4gICAgICAgIGxldCB2YWx1ZSA9IGdldFZhbHVlKGlucHV0KTtcbiAgICAgICAgc3RhdGUudmFsdWVzLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH07XG59XG5cbi8vIEEgbGlzdCBjYWNoZSwgd2hpY2guLi4gbWF5YmUgZmFzdGVyIHRoYW4gYSBNYXA/XG5leHBvcnQgZnVuY3Rpb24gY2FjaGVMaXN0PFZhbHVlPihcbiAgICBnZXRMZW5ndGg6ICgpID0+IG51bWJlcixcbiAgICBnZXRWYWx1ZTogKGluZGV4OiBudW1iZXIpID0+IFZhbHVlLFxuKTogeyAoaW5kZXg6IG51bWJlcik6IFZhbHVlOyB9IHtcbiAgICBsZXQgc3RhdGUgPSB7XG4gICAgICAgIGNhY2hlOiBbXSBhcyBWYWx1ZVtdLFxuICAgICAgICBsZW5ndGg6IHVuZGVmaW5lZCBhcyB1bmRlZmluZWQgfCBudW1iZXIsXG4gICAgICAgIGdldExlbmd0aCxcbiAgICB9O1xuICAgIGZ1bmN0aW9uIGdldChpOiBudW1iZXIpIHtcbiAgICAgICAgbGV0IGNhY2hlID0gc3RhdGUuY2FjaGU7XG4gICAgICAgIGxldCBsZW5ndGggPSBzdGF0ZS5sZW5ndGg7XG4gICAgICAgIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGVuZ3RoID0gc3RhdGUubGVuZ3RoID0gc3RhdGUuZ2V0TGVuZ3RoKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPCAwIHx8IGkgPj0gbGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEluZGV4IG91dCBvZiBib3VuZHNgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShpIGluIGNhY2hlKSkge1xuICAgICAgICAgICAgY2FjaGVbaV0gPSBnZXRWYWx1ZShpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FjaGVbaV07XG4gICAgfTtcbiAgICByZXR1cm4gZ2V0O1xufVxuXG5mdW5jdGlvbiBjYWNoZUFycmF5RXF1YWxDbGVhbnVwKHN0YXRlOiBhbnkpIHtcbiAgICBzdGF0ZS5jYWNoZSA9IFtdO1xufVxuXG4vKiogQSBjYWNoZSBoYWxmIHdheSBiZXR3ZWVuIGNhY2hpbmcgYmFzZWQgb24gPT09IGFuZCBjYWNoaW5nIGJhc2VkIG9uIGhhc2guIENhY2hlc1xuICogICAgICBiYXNlZCBvbiBhcnJheUVxdWFsLCB3aGljaCBkb2VzID09PSBvbiBhbGwgdmFsdWVzIGluIGFuIGFycmF5LiBSZXF1aXJlcyBsb2NhbGl6ZWRcbiAqICAgICAgY2FjaGluZyAoYXMgdGhlIGNvbXBhcmlzb25zIGRvbid0IHNjYWxlIHdpdGggbWFueSBjYW5kaWRhdGVzLCB1bmxpa2UgaGFzaGluZyksXG4gKiAgICAgIGhvd2V2ZXIgd29ya3Mgd2l0aCBub24gdHJpdmFsIHRyYW5zZm9ybWF0aW9ucyAoZXgsIHJlc29sdmluZyBtYW55IHBlcnNpc3RlZCBvdmVycmlkZXNcbiAqICAgICAgdG8gZ2V0IGEgdmFsdWUpLCB1bmxpa2UgY2FjaGUoKS5cbiAqICBBbHNvLCBsaW1pdHMgaXRzZWxmLCBtb3JlIG9mIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRoYW4gbWVtb3J5IG9wdGltaXphdGlvbiwgYXMgaXQgc2NhbGVzXG4gKiAgICAgIHZlcnkgcG9vcmx5IHdpdGggdGhlIG51bWJlciBvZiBjYW5kaWRhdGVzLlxuICogIFxuICogIFRJTUlORzogQWJvdXQgNnVzIHdpdGggbGltaXQgPSAxMDAsIGFycmF5IHNpemUgPSAyOTQsIGFuZCB0aGUgY2FjaGUgYmVpbmcgZnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlQXJyYXlFcXVhbDxJbnB1dCBleHRlbmRzIHVua25vd25bXSB8IHVuZGVmaW5lZCwgT3V0cHV0PihcbiAgICBtYXA6IChhcnJheXM6IElucHV0KSA9PiBPdXRwdXQsXG4gICAgbGltaXQgPSAxMFxuKToge1xuICAgIChhcnJheTogSW5wdXQpOiBPdXRwdXQ7XG4gICAgY2xlYXIoYXJyYXk6IElucHV0KTogdm9pZDtcbiAgICBjbGVhckFsbCgpOiB2b2lkO1xufSB7XG4gICAgbGV0IHN0YXRlOiB7XG4gICAgICAgIGNhY2hlOiB7XG4gICAgICAgICAgICBpbnB1dDogSW5wdXQ7XG4gICAgICAgICAgICBvdXRwdXQ6IE91dHB1dDtcbiAgICAgICAgfVtdXG4gICAgfSA9IHsgY2FjaGU6IFtdIH07XG4gICAgZnVuY3Rpb24gaXNNYXRjaChsaHM6IElucHV0LCByaHM6IElucHV0KSB7XG4gICAgICAgIGlmIChsaHMgPT09IHJocykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxocyA9PT0gdW5kZWZpbmVkIHx8IHJocyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFycmF5RXF1YWwobGhzLCByaHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKFxuICAgICAgICAoaW5wdXQ6IElucHV0KSA9PiB7XG4gICAgICAgICAgICBsZXQgY2FjaGUgPSBzdGF0ZS5jYWNoZTtcbiAgICAgICAgICAgIGZvciAobGV0IG9iaiBvZiBjYWNoZSkge1xuICAgICAgICAgICAgICAgIGlmIChpc01hdGNoKG9iai5pbnB1dCwgaW5wdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvYmoub3V0cHV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBvdXRwdXQgPSBtYXAoaW5wdXQpO1xuICAgICAgICAgICAgY2FjaGUudW5zaGlmdCh7IGlucHV0LCBvdXRwdXQgfSk7XG4gICAgICAgICAgICB3aGlsZSAoY2FjaGUubGVuZ3RoID4gbGltaXQpIHtcbiAgICAgICAgICAgICAgICBjYWNoZS5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNsZWFyKGFycmF5OiBJbnB1dCkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBzdGF0ZS5jYWNoZS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXRjaChzdGF0ZS5jYWNoZVtpXS5pbnB1dCwgYXJyYXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jYWNoZS5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xlYXJBbGwoKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuY2FjaGUgPSBbXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICApO1xufVxuXG4vKiogQ2FjaGVzIHdoZW4gYXJndW1lbnRzIGFyZSA9PT0uIFNlZSBjYWNoZUFycmF5RXF1YWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWNoZUFyZ3NFcXVhbDxGbmMgZXh0ZW5kcyBBbnlGdW5jdGlvbj4oXG4gICAgZm5jOiBGbmMsXG4gICAgbGltaXQgPSAxMFxuKTogRm5jICYgeyBjbGVhciguLi5hcmdzOiBBcmdzPEZuYz4pOiB2b2lkIH0ge1xuICAgIGxldCBjYWNoZSA9IGNhY2hlQXJyYXlFcXVhbChmdW5jdGlvbiBjYWNoZUFyZ3NFcXVhbChhcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgcmV0dXJuIGZuYyguLi5hcmdzKTtcbiAgICB9LCBsaW1pdCk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICgoLi4uYXJnczogdW5rbm93bltdKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGUoYXJncyk7XG4gICAgICAgIH0pIGFzIEZuYyxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xlYXIoLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUuY2xlYXIoYXJncyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhY2hlSlNPTkFyZ3NFcXVhbDxGbmMgZXh0ZW5kcyBBbnlGdW5jdGlvbj4oXG4gICAgZm5jOiBGbmMsXG4gICAgbGltaXQgPSAxMFxuKSB7XG4gICAgbGV0IGNhY2hlID0gY2FjaGVMaW1pdGVkKGxpbWl0LCAoYXJnc0pTT046IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gZm5jKC4uLkpTT04ucGFyc2UoYXJnc0pTT04pKTtcbiAgICB9KTtcbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgKCguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZShKU09OLnN0cmluZ2lmeShhcmdzKSk7XG4gICAgICAgIH0pIGFzIEZuYyxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xlYXIoLi4uYXJnczogdW5rbm93bltdKSB7XG4gICAgICAgICAgICAgICAgY2FjaGUuY2xlYXJLZXkoSlNPTi5zdHJpbmdpZnkoYXJncykpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyQWxsKCkge1xuICAgICAgICAgICAgICAgIGNhY2hlLmNsZWFyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FjaGVTaGFsbG93Q29uZmlnQXJnRXF1YWw8Rm5jIGV4dGVuZHMgQW55RnVuY3Rpb24+KFxuICAgIGZuYzogRm5jLFxuICAgIGxpbWl0ID0gMTBcbik6IEZuYyAmIHtcbiAgICBjbGVhcihjb25maWdPYmo6IEFyZ3M8Rm5jPlswXSk6IHZvaWQ7XG4gICAgY2xlYXJBbGwoKTogdm9pZDtcbn0ge1xuICAgIGxldCBjYWNoZSA9IGNhY2hlQXJyYXlFcXVhbCgoa3Zwc0ZsYXQ6IHVua25vd25bXSkgPT4ge1xuICAgICAgICBvdXRwdXQubWlzc0NvdW50Kys7XG4gICAgICAgIGxldCBhcmc6IGFueTtcbiAgICAgICAgaWYgKGt2cHNGbGF0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgYXJnID0ga3Zwc0ZsYXRbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQga3ZwczogW3Vua25vd24sIHVua25vd25dW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga3Zwc0ZsYXQubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgICAgICAgICBrdnBzLnB1c2goW2t2cHNGbGF0W2ldLCBrdnBzRmxhdFtpICsgMV1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFyZyA9IE9iamVjdC5mcm9tRW50cmllcyhrdnBzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm5jKGFyZyk7XG4gICAgfSwgbGltaXQpO1xuICAgIGZ1bmN0aW9uIGdldEtWUHMoY29uZmlnQXJnOiBvYmplY3QpIHtcbiAgICAgICAgaWYgKCFjYW5IYXZlQ2hpbGRyZW4oY29uZmlnQXJnKSB8fCBBcnJheS5pc0FycmF5KGNvbmZpZ0FyZykpIHtcbiAgICAgICAgICAgIHJldHVybiBbY29uZmlnQXJnXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZ0FyZyk7XG4gICAgICAgIGtleXMuc29ydCgpO1xuICAgICAgICByZXR1cm4ga2V5cy5mbGF0TWFwKGtleSA9PiBba2V5LCBjb25maWdBcmdba2V5XV0pO1xuICAgIH1cbiAgICBsZXQgb3V0cHV0ID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgKChjb25maWdBcmc6IG9iamVjdCkgPT4ge1xuICAgICAgICAgICAgb3V0cHV0LmNhbGxDb3VudCsrO1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlKGdldEtWUHMoY29uZmlnQXJnKSk7XG4gICAgICAgIH0pIGFzIEZuYyxcbiAgICAgICAge1xuICAgICAgICAgICAgY2xlYXIoY29uZmlnQXJnOiBvYmplY3QpIHtcbiAgICAgICAgICAgICAgICBjYWNoZS5jbGVhcihnZXRLVlBzKGNvbmZpZ0FyZykpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyQWxsKCkge1xuICAgICAgICAgICAgICAgIGNhY2hlLmNsZWFyQWxsKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FsbENvdW50OiAwLFxuICAgICAgICAgICAgbWlzc0NvdW50OiAwLFxuICAgICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gb3V0cHV0O1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlcm5hbENhY2hlPEtleSwgVmFsdWU+KCk6IHtcbiAgICBnZXQ6IChrZXk6IEtleSkgPT4gVmFsdWUgfCB1bmRlZmluZWQ7XG4gICAgc2V0OiAoa2V5OiBLZXksIHZhbHVlOiBWYWx1ZSkgPT4gdm9pZDtcbn0ge1xuICAgIGxldCB2YWx1ZXMgPSBuZXcgTWFwPEtleSwgVmFsdWU+KCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZ2V0OiAoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVzLmdldChrZXkpO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB2YWx1ZXMuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgICB9LFxuICAgIH07XG59Il19
302
- /* _JS_SOURCE_HASH = "cfc19e21a28cd6de3caf3ba9b26f13ac0c827759c8cb633634a3990212104ec4"; */
302
+ /* _JS_SOURCE_HASH = "e5964017f21326708ab4acf53a9ad4f981b3277ceb2092ca364a6db5df598144"; */
@@ -1,4 +1,4 @@
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";
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"; 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
  };
@@ -261,4 +261,4 @@ function setHTTPResultHeaders(result, headers) {
261
261
  }
262
262
  exports.setHTTPResultHeaders = setHTTPResultHeaders;
263
263
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbEhUVFBIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2FsbEhUVFBIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLCtDQUFrRTtBQUNsRSxzREFBbUQ7QUFFbkQsZ0RBQXdCO0FBQ3hCLGlDQUF5RTtBQUN6RSwyQ0FBeUQ7QUFDekQsdURBQW9EO0FBRXBELGlHQUFpRztBQUNqRyw0REFBNEQ7QUFDNUQsTUFBTSxlQUFlLEdBQUcsSUFBQSxpQ0FBZSxFQUFDLGlDQUFpQyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQWlDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFbkksU0FBZ0Isa0JBQWtCLENBQUMsSUFBYztJQUM3QyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN0QyxDQUFDO0FBRkQsZ0RBRUM7QUFFRCxTQUFnQiw0QkFBNEIsQ0FBQyxPQUE2QjtJQUN0RSxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUNoQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDUixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUNELElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztJQUNmLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU87UUFDSCxPQUFPLEVBQUUsSUFBSTtRQUNiLHFGQUFxRjtRQUNyRixtREFBbUQ7UUFDbkQsSUFB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Q0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUQsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztZQUFTLENBQUM7UUFDUCxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkIsQ0FBQztBQUNMLENBQUM7QUFoTkQsMENBZ05DO0FBR0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBRzlDLFNBQWdCLG9CQUFvQixDQUNoQyxNQUFzQixFQUN0QixPQUFxQztJQUVyQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFORCxvREFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBodHRwIGZyb20gXCJodHRwXCI7XG5pbXBvcnQgdGxzIGZyb20gXCJ0bHNcIjtcbmltcG9ydCB7IENhbGxlckNvbnRleHQsIENhbGxUeXBlLCBGdWxsQ2FsbFR5cGUgfSBmcm9tIFwiLi4vU29ja2V0RnVuY3Rpb25UeXBlc1wiO1xuaW1wb3J0IHsgaXNEYXRhSW1tdXRhYmxlLCBwZXJmb3JtTG9jYWxDYWxsIH0gZnJvbSBcIi4vY2FsbE1hbmFnZXJcIjtcbmltcG9ydCB7IFNvY2tldEZ1bmN0aW9uIH0gZnJvbSBcIi4uL1NvY2tldEZ1bmN0aW9uXCI7XG5pbXBvcnQgeyBnemlwIH0gZnJvbSBcInpsaWJcIjtcbmltcG9ydCB6bGliIGZyb20gXCJ6bGliXCI7XG5pbXBvcnQgeyBmb3JtYXROdW1iZXJTdWZmaXhlZCwgZ2V0Um9vdERvbWFpbiwgc2hhMjU2SGFzaCB9IGZyb20gXCIuL21pc2NcIjtcbmltcG9ydCB7IGdldENsaWVudE5vZGVJZCwgZ2V0Tm9kZUlkIH0gZnJvbSBcIi4vbm9kZUNhY2hlXCI7XG5pbXBvcnQgeyBjcmVhdGVTaW5nbGV0b24gfSBmcm9tIFwiLi9jcmVhdGVTaW5nbGV0b25cIjtcblxuLy8gU2hhcmVkIGFjcm9zcyBjb3BpZXMgb2YgdGhpcyBwYWNrYWdlLCBzbyB0aGUgZGVmYXVsdCBIVFRQIGNhbGwgc2V0IHRocm91Z2ggb25lIGNvcHkgaXMgdXNlZCBieVxuLy8gIHRoZSBIVFRQIGhhbmRsZXIgb2YgYW55IG90aGVyIGNvcHkuIFNlZSBjcmVhdGVTaW5nbGV0b24uXG5jb25zdCBkZWZhdWx0SFRUUENhbGwgPSBjcmVhdGVTaW5nbGV0b24oXCJjYWxsSFRUUEhhbmRsZXIuZGVmYXVsdEhUVFBDYWxsXCIsIDEsICgpID0+ICh7IGNhbGw6IHVuZGVmaW5lZCBhcyBDYWxsVHlwZSB8IHVuZGVmaW5lZCB9KSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREZWZhdWx0SFRUUENhbGwoY2FsbDogQ2FsbFR5cGUpIHtcbiAgICBkZWZhdWx0SFRUUENhbGwuZ2V0KCkuY2FsbCA9IGNhbGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXJ2ZXJMb2NhdGlvbkZyb21SZXF1ZXN0KHJlcXVlc3Q6IGh0dHAuSW5jb21pbmdNZXNzYWdlKSB7XG4gICAgbGV0IGhvc3QgPSByZXF1ZXN0LmhlYWRlcnMuaG9zdDtcbiAgICBpZiAoIWhvc3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIGhvc3QgaW4gcmVxdWVzdCBoZWFkZXJzYCk7XG4gICAgfVxuICAgIGxldCBwb3J0ID0gNDQzO1xuICAgIGlmIChob3N0LmluY2x1ZGVzKFwiOlwiKSkge1xuICAgICAgICBwb3J0ID0gK2hvc3Quc3BsaXQoXCI6XCIpWzFdO1xuICAgICAgICBob3N0ID0gaG9zdC5zcGxpdChcIjpcIilbMF07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGFkZHJlc3M6IGhvc3QsXG4gICAgICAgIC8vIFRoaXMgaXMgT1VSIGxvY2F0aW9uLCBzbyB3aGF0ZXZlciB0aGV5IGNvbm5lY3RlZCB0byB1cy4uLiB3ZSBtdXN0IGJlIGxpc3RlbmluZyBvbiFcbiAgICAgICAgLy8gIChhbmQgdGhlIGxvY2FsUG9ydCBkb2Vzbid0IG1hdHRlciBpbiB0aGlzIGNhc2UpXG4gICAgICAgIHBvcnQsXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGVJZHNGcm9tUmVxdWVzdChyZXF1ZXN0OiBodHRwLkluY29taW5nTWVzc2FnZSkge1xuICAgIC8vIFRPRE86IFN1cHBvcnQgcGFzc2luZyBzaWduZWQgcHJvb2Ygb2YgdXNlckNlcnRpZmljYXRlIHZpYSBoZWFkZXJzIGluIHRoZSBIVFRQIHJlcXVlc3QuXG4gICAgLy8gIFRIQVQgV0FZIEhUVFAgY2FuIGhhdmUgY29uc2lzdGVudCBub2RlSWRzLCBpbnN0ZWFkIG9mIG1ha2luZyB0aGVtIHJhbmRvbWx5IGV2ZXJ5IHRpbWUhXG4gICAgLy8gIChUaGlzIGlzbid0IG5lZWRlZCBvciBwb3NzaWJsZSBmb3Igd2Vic29ja2V0cywgYnV0IHRoZXkgc3RheSBvcGVuLCBzbyBjYWxsaW5nIGZ1bmN0aW9uc1xuICAgIC8vICAgICAgYWZ0ZXIgdGhleSBvcGVuIHRvIHNldCB0aGUgbm9kZUlkIGlzIHBvc3NpYmxlLCBhbmQgcHJlZmVycmVkKS5cbiAgICBsZXQgcmVtb3RlQWRkcmVzcyA9IHJlcXVlc3Quc29ja2V0LnJlbW90ZUFkZHJlc3M/LnNwbGl0KFwiOlwiKS5wb3AoKTtcbiAgICBpZiAoIXJlbW90ZUFkZHJlc3MpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHJlbW90ZUFkZHJlc3NgKTtcbiAgICB9XG4gICAgY29uc3Qgbm9kZUlkID0gZ2V0Q2xpZW50Tm9kZUlkKHJlbW90ZUFkZHJlc3MpO1xuXG4gICAgY29uc3Qgc2VydmVyTG9jYXRpb24gPSBnZXRTZXJ2ZXJMb2NhdGlvbkZyb21SZXF1ZXN0KHJlcXVlc3QpO1xuICAgIC8vIElNUE9SVEFOVCEgTm90IHRoZSBhY3R1YWwgbG9jYWwgaWQsIGJ1dCBpcyB0aGUgaWQgdGhlIGNsaWVudCBjYWxsZWRcbiAgICBjb25zdCBsb2NhbE5vZGVJZCA9IGdldE5vZGVJZChzZXJ2ZXJMb2NhdGlvbi5hZGRyZXNzLCBzZXJ2ZXJMb2NhdGlvbi5wb3J0KTtcbiAgICByZXR1cm4geyBub2RlSWQsIGxvY2FsTm9kZUlkIH07XG59XG5cbi8vIFNoYXJlZCBhY3Jvc3MgY29waWVzIG9mIHRoaXMgcGFja2FnZSwgc28gZ2V0Q3VycmVudEhUVFBSZXF1ZXN0IHdvcmtzIGV2ZW4gd2hlbiB0aGUgY2FsbCB3YXMgc2V0XG4vLyAgdXAgYnkgYSBkaWZmZXJlbnQgY29weSdzIEhUVFAgaGFuZGxlci4gU2VlIGNyZWF0ZVNpbmdsZXRvbi5cbmNvbnN0IHJlcXVlc3RzID0gY3JlYXRlU2luZ2xldG9uKFwiY2FsbEhUVFBIYW5kbGVyLnJlcXVlc3RzXCIsIDEsICgpID0+IG5ldyBNYXA8Q2FsbGVyQ29udGV4dCwgaHR0cC5JbmNvbWluZ01lc3NhZ2U+KCkpLmdldCgpO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEN1cnJlbnRIVFRQUmVxdWVzdCgpOiBodHRwLkluY29taW5nTWVzc2FnZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHJlcXVlc3RzLmdldChTb2NrZXRGdW5jdGlvbi5nZXRDYWxsZXIoKSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBodHRwQ2FsbEhhbmRsZXIocmVxdWVzdDogaHR0cC5JbmNvbWluZ01lc3NhZ2UsIHJlc3BvbnNlOiBodHRwLlNlcnZlclJlc3BvbnNlKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gQWx3YXlzIHNldCB4LWZyYW1lLW9wdGlvbnMsIHRvIHByZXZlbnQgaWZyYW1lIGVtYmVkZGluZyBjbGljayBoaWphY2tpbmdcbiAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiWC1GcmFtZS1PcHRpb25zXCIsIFwiU0FNRU9SSUdJTlwiKTtcbiAgICAgICAgLy8gRG9uJ3Qga2VlcCBhbGl2ZSwgdG8gcHJldmVudCBpc3N1ZXMgd2l0aCB6b21iaWUgc29ja2V0cy5cbiAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQ29ubmVjdGlvblwiLCBcImNsb3NlXCIpO1xuXG4gICAgICAgIC8vIENPUlMgYnMgKGR1ZSB0byBoYXZpbmcgdG8gZXhwbGljdGx5IGFsbG93IHN1YmRvbWFpbnMpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIlN0cmljdC1UcmFuc3BvcnQtU2VjdXJpdHlcIiwgXCJtYXgtYWdlPTYzMDcyMDAwOyBpbmNsdWRlU3ViRG9tYWluczsgcHJlbG9hZFwiKTtcbiAgICAgICAgICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5XCIsIFNvY2tldEZ1bmN0aW9uLkNPT1ApO1xuICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQ3Jvc3MtT3JpZ2luLUVtYmVkZGVyLVBvbGljeVwiLCBTb2NrZXRGdW5jdGlvbi5DT0VQKTtcblxuICAgICAgICAgICAgbGV0IG9yaWdpbiA9IHJlcXVlc3QuaGVhZGVycy5vcmlnaW4gfHwgcmVxdWVzdC5oZWFkZXJzLnJlZmVyZXI7XG4gICAgICAgICAgICBsZXQgYWxsb3dlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCFvcmlnaW4pIHtcbiAgICAgICAgICAgICAgICAvLyBJIGd1ZXNzIGl0J3MgYSBzY3JpcHQsIHNvIGp1c3QgYWxsb3cgaXQgKGFzIGl0IGNvdWxkIGVhc2lseSBzZXQgYW55IGhlYWRlciBpdCB3YW50ZWQgYW55d2F5cylcbiAgICAgICAgICAgICAgICBhbGxvd2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBvcmlnaW4gPSBcIipcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV0IGhvc3QgPSByZXF1ZXN0LmhlYWRlcnMuaG9zdDtcbiAgICAgICAgICAgICAgICBpZiAoIWhvc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyBob3N0IGluIHJlcXVlc3QgaGVhZGVyc1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IGhvc3REb21haW4gPSBnZXRSb290RG9tYWluKGhvc3QpO1xuICAgICAgICAgICAgICAgIGxldCBvcmlnaW5Eb21haW4gPSBnZXRSb290RG9tYWluKG9yaWdpbik7XG4gICAgICAgICAgICAgICAgYWxsb3dlZCA9IGhvc3REb21haW4gPT09IG9yaWdpbkRvbWFpbjtcbiAgICAgICAgICAgICAgICBpZiAoIWFsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlamVjdGVkIENPUlMsIGhvc3REb21haW46ICR7aG9zdERvbWFpbn0gIT09ICR7b3JpZ2luRG9tYWlufWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWxsb3cgaWYgaXQgaGFzIG5vIG9yaWdpbiwgYXMgdGhhdCBtZWFucyBpdCBpc24ndCBhIENPUlMgcmVxdWVzdD9cbiAgICAgICAgICAgIGlmIChhbGxvd2VkKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeVwiLCBcImNyb3NzLW9yaWdpblwiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQ3Jvc3MtT3JpZ2luLVJlc291cmNlLVBvbGljeVwiLCBcInNhbWUtc2l0ZVwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwidmFyeVwiLCBcIkFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVyc1wiKTtcbiAgICAgICAgICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkFjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpblwiLCBhbGxvd2VkID8gb3JpZ2luIDogXCJcIik7XG5cbiAgICAgICAgICAgIGlmIChhbGxvd2VkKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQWNjZXNzLUNvbnRyb2wtQWxsb3ctQ3JlZGVudGlhbHNcIiwgXCJ0cnVlXCIpO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkFjY2Vzcy1Db250cm9sLUFsbG93LU1ldGhvZHNcIiwgXCJHRVQsIFBPU1QsIFBVVCwgREVMRVRFLCBPUFRJT05TXCIpO1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnNcIiwgXCJDb250ZW50LVR5cGUsIEF1dGhvcml6YXRpb24sIENvbnRlbnQtTGVuZ3RoLCBYLVJlcXVlc3RlZC1XaXRoLCB4LXVuY29tcHJlc3NlZC1jb250ZW50LWxlbmd0aCwgQ29va2llXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQWNjZXNzLUNvbnRyb2wtRXhwb3NlLUhlYWRlcnNcIiwgXCJ4LXVuY29tcHJlc3NlZC1jb250ZW50LWxlbmd0aFwiKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHVybEJhc2UgPSByZXF1ZXN0LnVybDtcbiAgICAgICAgaWYgKCF1cmxCYXNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIFVSTFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwcm90b2NvbCA9IFwiaHR0cHNcIjtcbiAgICAgICAgbGV0IHVybCA9IHByb3RvY29sICsgXCI6Ly9cIiArIHJlcXVlc3QuaGVhZGVycy5ob3N0ICsgcmVxdWVzdC51cmw7XG5cbiAgICAgICAgaWYgKFNvY2tldEZ1bmN0aW9uLmxvZ01lc3NhZ2VzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgSFRUUCByZXF1ZXN0ICgke3JlcXVlc3QubWV0aG9kfSkgJHt1cmx9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHVybE9iaiA9IG5ldyBVUkwodXJsKTtcblxuICAgICAgICBsZXQgcGF5bG9hZCA9IGF3YWl0IG5ldyBQcm9taXNlPEJ1ZmZlcj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgbGV0IGRhdGE6IEJ1ZmZlcltdID0gW107XG4gICAgICAgICAgICByZXF1ZXN0XG4gICAgICAgICAgICAgICAgLm9uKFwiZGF0YVwiLCBjaHVuayA9PiBkYXRhLnB1c2goY2h1bmspKVxuICAgICAgICAgICAgICAgIC5vbihcImVuZFwiLCAoKSA9PiByZXNvbHZlKEJ1ZmZlci5jb25jYXQoZGF0YSkpKVxuICAgICAgICAgICAgICAgIC5vbihcImVycm9yXCIsIChlcnIpID0+IHJlamVjdChlcnIpKVxuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgeyBub2RlSWQsIGxvY2FsTm9kZUlkIH0gPSBnZXROb2RlSWRzRnJvbVJlcXVlc3QocmVxdWVzdCk7XG5cbiAgICAgICAgbGV0IGNhbGxlcjogQ2FsbGVyQ29udGV4dCA9IHtcbiAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIGxvY2FsTm9kZUlkLFxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBjbGFzc0d1aWQgPSB1cmxPYmouc2VhcmNoUGFyYW1zLmdldChcImNsYXNzR3VpZFwiKTtcbiAgICAgICAgbGV0IGZ1bmN0aW9uTmFtZSA9IHVybE9iai5zZWFyY2hQYXJhbXMuZ2V0KFwiZnVuY3Rpb25OYW1lXCIpO1xuICAgICAgICBsZXQgYXJnczogc3RyaW5nIHwgdW5rbm93bltdIHwgbnVsbCA9IHVybE9iai5zZWFyY2hQYXJhbXMuZ2V0KFwiYXJnc1wiKTtcblxuICAgICAgICBpZiAoIWNsYXNzR3VpZCkge1xuICAgICAgICAgICAgbGV0IGRlZmF1bHRDYWxsID0gZGVmYXVsdEhUVFBDYWxsLmdldCgpLmNhbGw7XG4gICAgICAgICAgICBpZiAoZGVmYXVsdENhbGwpIHtcbiAgICAgICAgICAgICAgICBjbGFzc0d1aWQgPSBkZWZhdWx0Q2FsbC5jbGFzc0d1aWQ7XG4gICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gZGVmYXVsdENhbGwuZnVuY3Rpb25OYW1lO1xuICAgICAgICAgICAgICAgIGFyZ3MgPSBkZWZhdWx0Q2FsbC5hcmdzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIGNsYXNzR3VpZCBpbiBVUkwgcXVlcnlcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFmdW5jdGlvbk5hbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgZnVuY3Rpb25OYW1lIGluIFVSTCBxdWVyeVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghYXJncykge1xuICAgICAgICAgICAgYXJncyA9IFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmdzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgYXJncyA9IEpTT04ucGFyc2UoYXJncykgYXMgdW5rbm93bltdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBheWxvYWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgYXJncyA9IEpTT04ucGFyc2UocGF5bG9hZC50b1N0cmluZygpKVtcImFyZ3NcIl0gYXMgdW5rbm93bltdO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhbGw6IEZ1bGxDYWxsVHlwZSA9IHtcbiAgICAgICAgICAgIG5vZGVJZCxcbiAgICAgICAgICAgIGNsYXNzR3VpZCxcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGlzRGF0YUltbXV0YWJsZShjYWxsKSkge1xuICAgICAgICAgICAgLyoqIEVUYWcgY2FjaGUsIEJVVCwgaGFzaGVzIG9ubHkgdGhlIGlucHV0LiBPbmx5IHZhbGlkIGZvciBmdWxseSBpbW11dGFibGUgcmVzb3VyY2VzXG4gICAgICAgICAgICAgKiAgICAgIChleCBkYXRhIHN0b3JhZ2UsIGFzIGFueSBlbmRwb2ludHMgdGhhdCBydW4gY29kZSBjb3VsZCBoYXZlIHRoYXQgY29kZSBjaGFuZ2UpLlxuICAgICAgICAgICAgICogICAgICAtIFNob3VsZG4ndCBiZSBuZWVkZWQsIGJ1dCBJIGFtIHNlZWluZyBjaHJvbWUgZmFpbCB0byBjYWNoZSBhIGxvdCBvZiByZXF1ZXN0cyxcbiAgICAgICAgICAgICAqICAgICAgICAgIHdoaWNoIGNvdWxkIGNvc3QgdXMgbXVsdGlwbGUgZG9sbGFycyBpbiBzZXJ2ZXIgY29zdHMgZnJvbSBhdGxhcy5cbiAgICAgICAgICAgICovXG4gICAgICAgICAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJjYWNoZS1jb250cm9sXCIsIFwicHVibGljLCBtYXgtYWdlPTE1MjA2NDAwLCBpbW11dGFibGVcIik7XG4gICAgICAgICAgICBsZXQgaGFzaCA9IHNoYTI1Nkhhc2goQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoY2FsbCkpKTtcbiAgICAgICAgICAgIHJlc3BvbnNlLnNldEhlYWRlcihcIkVUYWdcIiwgaGFzaCk7XG4gICAgICAgICAgICBpZiAocmVxdWVzdC5oZWFkZXJzW1wiaWYtbm9uZS1tYXRjaFwiXSA9PT0gaGFzaCkge1xuICAgICAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlSGVhZCgzMDQpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBDQUNIRUQgSW1tdXRhYmxlIEhUVFAgcmVzcG9uc2UgKCR7cmVxdWVzdC5tZXRob2R9KSAke3VybH1gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXF1ZXN0cy5zZXQoY2FsbGVyLCByZXF1ZXN0KTtcbiAgICAgICAgbGV0IHJlc3VsdDogdW5rbm93bjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IHBlcmZvcm1Mb2NhbENhbGwoe1xuICAgICAgICAgICAgICAgIGNhbGxlcixcbiAgICAgICAgICAgICAgICBjYWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHJlcXVlc3RzLmRlbGV0ZShjYWxsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3VsdEJ1ZmZlcjogQnVmZmVyO1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gXCJvYmplY3RcIiAmJiByZXN1bHQgJiYgcmVzdWx0IGluc3RhbmNlb2YgQnVmZmVyKSB7XG4gICAgICAgICAgICByZXN1bHRCdWZmZXIgPSByZXN1bHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRCdWZmZXIgPSBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShyZXN1bHQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJzID0gKHJlc3VsdEJ1ZmZlciBhcyBIVFRQUmVzdWx0VHlwZSlbcmVzdWx0SGVhZGVyc107XG5cbiAgICAgICAgLy8gTk9URTogT3VyIEVUYWcgY2FjaGluZyBpcyBvbmx5IHRvIHJlZHVjZSBkYXRhIHNlbnQgb24gdGhlIHdpcmUsIHdlIGV2YWx1YXRlIHRoZSBjYWxsc1xuICAgICAgICAvLyAgZXZlcnkgdGltZSAoc28gaXQgaXMgc3RyaWN0bHkgYSB3aXJlIGNhY2hlIGZvciBIVFRQLCBub3QgYSBjb21wdXRhdGlvbiBjYWNoZSlcbiAgICAgICAgaWYgKFNvY2tldEZ1bmN0aW9uLkhUVFBfRVRBR19DQUNIRSkge1xuICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiY2FjaGUtY29udHJvbFwiLCBcInByaXZhdGUsIG1heC1hZ2U9MCwgbXVzdC1yZXZhbGlkYXRlXCIpO1xuICAgICAgICAgICAgbGV0IGhhc2ggPSBzaGEyNTZIYXNoKHJlc3VsdEJ1ZmZlcik7XG4gICAgICAgICAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJFVGFnXCIsIGhhc2gpO1xuICAgICAgICAgICAgaWYgKHJlcXVlc3QuaGVhZGVyc1tcImlmLW5vbmUtbWF0Y2hcIl0gPT09IGhhc2gpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoMzA0KTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ0FDSEVEIEhUVFAgcmVzcG9uc2UgICR7Zm9ybWF0TnVtYmVyU3VmZml4ZWQocmVzdWx0QnVmZmVyLmxlbmd0aCl9QiAgKCR7cmVxdWVzdC5tZXRob2R9KSAke3VybH1gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGVhZGVycykge1xuICAgICAgICAgICAgZm9yIChsZXQgaGVhZGVyTmFtZSBpbiBoZWFkZXJzKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKGhlYWRlck5hbWUsIGhlYWRlcnNbaGVhZGVyTmFtZV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHN0YXR1cyA9IGhlYWRlcnNbXCJzdGF0dXNcIl07XG4gICAgICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVIZWFkKCtzdGF0dXMpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgdW5jb21wcmVzc2VkTGVuZ3RoID0gcmVzdWx0QnVmZmVyLmxlbmd0aDtcbiAgICAgICAgaWYgKFNvY2tldEZ1bmN0aW9uLkhUVFBfQ09NUFJFU1MgJiYgcmVxdWVzdC5oZWFkZXJzW1wiYWNjZXB0LWVuY29kaW5nXCJdPy5pbmNsdWRlcyhcImd6aXBcIikgJiYgIWhlYWRlcnM/LltcIkNvbnRlbnQtRW5jb2RpbmdcIl0pIHtcbiAgICAgICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgYSBCSVQgc2xvdy4gVG8gc3BlZWQgaXQgdXAsIGZ1bmN0aW9ucyBjYW4gdXNlIGFuIGludGVybmFsIGNhY2hlLCBhY2NvcmRpbmcgdG8gdGhlaXIgZnVuY3Rpb24sXG4gICAgICAgICAgICAvLyAgYW5kIHJldHVybiBhIEJ1ZmZlciAod2hpY2ggdGhleSBjYW4gYXMgYW55IGNhc3QgdG8gbWFrZSB0aGUgcmV0dXJuZWQgdHlwZSBhbGxvd2VkLCBhcyByZXR1cm5lZCBCdWZmZXJzIHdpbGxcbiAgICAgICAgICAgIC8vICBqdXN0IGJlIHRyZWF0ZWQgbGlrZSBhIGJ1ZmZlciBvZiBKU09OIGRhdGEpLlxuICAgICAgICAgICAgLy8gIC0gVGhlIGNhbGxlciBzaG91bGQgdXNlIGdldEN1cnJlbnRIVFRQUmVxdWVzdCBmaXJzdCB0aG91Z2gsIHRvIGNoZWNrIGlmIGd6aXAgaXMgYWxsb3dlZFxuICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKFwiQ29udGVudC1FbmNvZGluZ1wiLCBcImd6aXBcIik7XG4gICAgICAgICAgICByZXN1bHRCdWZmZXIgPSBhd2FpdCBuZXcgUHJvbWlzZTxCdWZmZXI+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB6bGliLmd6aXAocmVzdWx0QnVmZmVyLCB7fSwgKGVyciwgcmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJDb250ZW50LUxlbmd0aFwiLCByZXN1bHRCdWZmZXIubGVuZ3RoLnRvU3RyaW5nKCkpO1xuICAgICAgICBpZiAoIXJlc3BvbnNlLmdldEhlYWRlcihcIlgtVW5jb21wcmVzc2VkLUNvbnRlbnQtTGVuZ3RoXCIpKSB7XG4gICAgICAgICAgICByZXNwb25zZS5zZXRIZWFkZXIoXCJYLVVuY29tcHJlc3NlZC1Db250ZW50LUxlbmd0aFwiLCB1bmNvbXByZXNzZWRMZW5ndGgudG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzcG9uc2Uud3JpdGUocmVzdWx0QnVmZmVyKTtcbiAgICAgICAgaWYgKFNvY2tldEZ1bmN0aW9uLmxvZ01lc3NhZ2VzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgSFRUUCByZXNwb25zZSAgJHtmb3JtYXROdW1iZXJTdWZmaXhlZChyZXN1bHRCdWZmZXIubGVuZ3RoKX1CICAoJHtyZXF1ZXN0Lm1ldGhvZH0pICR7dXJsfWApO1xuICAgICAgICB9XG5cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgY29uc29sZS5sb2coYEhUVFAgZXJyb3IgICgke3JlcXVlc3QubWV0aG9kfSkgJHtlLnN0YWNrfWApO1xuICAgICAgICByZXNwb25zZS53cml0ZUhlYWQoNTAwLCBTdHJpbmcoZS5tZXNzYWdlKS5yZXBsYWNlKC9bXlxceDIwLVxceDdFXS9nLCBcIlwiKSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcmVzcG9uc2UuZW5kKCk7XG4gICAgfVxufVxuXG5cbmNvbnN0IHJlc3VsdEhlYWRlcnMgPSBTeW1ib2woXCJyZXN1bHRIZWFkZXJzXCIpO1xudHlwZSBIVFRQUmVzdWx0VHlwZSA9IEJ1ZmZlciAmIHsgW3Jlc3VsdEhlYWRlcnNdPzogeyBbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0SFRUUFJlc3VsdEhlYWRlcnMoXG4gICAgcmVzdWx0OiBIVFRQUmVzdWx0VHlwZSxcbiAgICBoZWFkZXJzOiB7IFtoZWFkZXI6IHN0cmluZ106IHN0cmluZyB9LFxuKTogSFRUUFJlc3VsdFR5cGUge1xuICAgIHJlc3VsdFtyZXN1bHRIZWFkZXJzXSA9IGhlYWRlcnM7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn0iXX0=
264
- /* _JS_SOURCE_HASH = "3d6960a14b632f45ab1c002bb5e7c9352f6f554aa8be29835b13cad26a35b297"; */
264
+ /* _JS_SOURCE_HASH = "180c9614368e3d3cb562e27cf24aee4937124d85bbaeef07ffa1404186102e0e"; */