sliftutils 1.7.112 → 1.7.113

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 (66) hide show
  1. package/dist/treeSummary.ts.cache +2 -2
  2. package/index.d.ts +2 -1
  3. package/misc/dist/environment.ts.cache +2 -2
  4. package/misc/dist/getSecret.ts.cache +2 -2
  5. package/misc/dist/strings.ts.cache +2 -2
  6. package/misc/dist/zip.ts.cache +2 -2
  7. package/misc/https/dist/certs.ts.cache +2 -2
  8. package/misc/https/dist/persistentLocalStorage.ts.cache +2 -2
  9. package/package.json +1 -1
  10. package/render-utils/dist/observer.tsx.cache +2 -2
  11. package/storage/ArchivesDisk.ts +8 -7
  12. package/storage/IArchives.d.ts +1 -0
  13. package/storage/IArchives.ts +2 -1
  14. package/storage/TransactionFile.d.ts +1 -1
  15. package/storage/TransactionFile.ts +13 -2
  16. package/storage/archiveHelpers.ts +11 -9
  17. package/storage/dist/ArchivesDisk.ts.cache +10 -9
  18. package/storage/dist/FileFolderAPI.tsx.cache +2 -2
  19. package/storage/dist/IArchives.ts.cache +3 -3
  20. package/storage/dist/IndexedDBFileFolderAPI.ts.cache +2 -2
  21. package/storage/dist/JSONStorage.ts.cache +2 -2
  22. package/storage/dist/PendingManager.tsx.cache +2 -2
  23. package/storage/dist/StreamingLogs.ts.cache +2 -2
  24. package/storage/dist/TransactionFile.ts.cache +16 -5
  25. package/storage/dist/TransactionStorage.ts.cache +2 -2
  26. package/storage/dist/archiveHelpers.ts.cache +13 -11
  27. package/storage/dist/backblaze.ts.cache +2 -2
  28. package/storage/dist/fileSystemPointer.ts.cache +2 -2
  29. package/storage/dist/remoteFileStorage.ts.cache +2 -2
  30. package/storage/remoteStorage/ArchivesDelayed.ts +3 -3
  31. package/storage/remoteStorage/ArchivesRemote.ts +2 -2
  32. package/storage/remoteStorage/blobStore.ts +15 -15
  33. package/storage/remoteStorage/bucketDisk.ts +2 -1
  34. package/storage/remoteStorage/chainStartup.ts +2 -2
  35. package/storage/remoteStorage/createArchives.ts +13 -13
  36. package/storage/remoteStorage/deployTakeover.ts +1 -1
  37. package/storage/remoteStorage/dist/ArchivesDelayed.ts.cache +6 -6
  38. package/storage/remoteStorage/dist/ArchivesRemote.ts.cache +5 -5
  39. package/storage/remoteStorage/dist/ArchivesUrl.ts.cache +2 -2
  40. package/storage/remoteStorage/dist/accessStats.ts.cache +2 -2
  41. package/storage/remoteStorage/dist/blobStore.ts.cache +17 -17
  42. package/storage/remoteStorage/dist/bucketDisk.ts.cache +5 -4
  43. package/storage/remoteStorage/dist/certTrustModal.tsx.cache +2 -2
  44. package/storage/remoteStorage/dist/chainStartup.ts.cache +5 -5
  45. package/storage/remoteStorage/dist/cliArgs.ts.cache +2 -2
  46. package/storage/remoteStorage/dist/createArchives.ts.cache +14 -14
  47. package/storage/remoteStorage/dist/deployTakeover.ts.cache +4 -4
  48. package/storage/remoteStorage/dist/intermediateManagement.ts.cache +2 -2
  49. package/storage/remoteStorage/dist/intermediateSources.ts.cache +2 -2
  50. package/storage/remoteStorage/dist/remoteConfig.ts.cache +4 -4
  51. package/storage/remoteStorage/dist/serverConfig.ts.cache +2 -2
  52. package/storage/remoteStorage/dist/sourceWrapper.ts.cache +6 -6
  53. package/storage/remoteStorage/dist/sourcesList.ts.cache +2 -2
  54. package/storage/remoteStorage/dist/storageClientController.ts.cache +2 -2
  55. package/storage/remoteStorage/dist/storageController.ts.cache +7 -7
  56. package/storage/remoteStorage/dist/storageServerState.ts.cache +4 -4
  57. package/storage/remoteStorage/dist/storeConfig.ts.cache +2 -2
  58. package/storage/remoteStorage/dist/storePlan.ts.cache +2 -2
  59. package/storage/remoteStorage/dist/storeSources.ts.cache +2 -2
  60. package/storage/remoteStorage/dist/storeSync.ts.cache +8 -8
  61. package/storage/remoteStorage/dist/validation.ts.cache +2 -2
  62. package/storage/remoteStorage/remoteConfig.ts +1 -1
  63. package/storage/remoteStorage/sourceWrapper.ts +3 -3
  64. package/storage/remoteStorage/storageController.ts +4 -4
  65. package/storage/remoteStorage/storageServerState.ts +1 -1
  66. package/storage/remoteStorage/storeSync.ts +7 -7
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -52,7 +52,8 @@ async function readRoutingFile(folder) {
52
52
  try {
53
53
  let data = await fs_1.default.promises.readFile(filePath);
54
54
  let stats = await fs_1.default.promises.stat(filePath);
55
- return { data, writeTime: stats.mtimeMs };
55
+ // Floored like every time ArchivesDisk reports - sub-millisecond mtime digits can't round-trip through utimes, so they are noise, not ordering
56
+ return { data, writeTime: Math.floor(stats.mtimeMs) };
56
57
  }
57
58
  catch (e) {
58
59
  if (e.code === "ENOENT")
@@ -99,5 +100,5 @@ async function getDiskInfo(folder) {
99
100
  };
100
101
  }
101
102
  exports.getDiskInfo = getDiskInfo;
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVja2V0RGlzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1Y2tldERpc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUVwQixpREFBZ0U7QUFDaEUsaURBQXdEO0FBRXhELHFRQUFxUTtBQUVyUSx3TUFBd007QUFDeE0sTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBRWxDLHVUQUF1VDtBQUN2VCxTQUFnQixlQUFlLENBQUMsSUFBWSxFQUFFLE9BQWUsRUFBRSxVQUFrQjtJQUM3RSxPQUFPLGNBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSxxQ0FBc0IsR0FBRSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRkQsMENBRUM7QUFFRCxLQUFLLFVBQVUsYUFBYSxDQUFDLE1BQWM7SUFDdkMsSUFBSSxDQUFDO1FBQ0QsT0FBTyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsSUFBSyxDQUF1QixDQUFDLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDMUQsTUFBTSxDQUFDLENBQUM7SUFDWixDQUFDO0FBQ0wsQ0FBQztBQUlELCtFQUErRTtBQUN4RSxLQUFLLFVBQVUsdUJBQXVCLENBQUMsT0FBZTtJQUN6RCxJQUFJLGFBQWEsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLElBQUEscUNBQXNCLEdBQUUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hGLElBQUksS0FBSyxHQUFrQixFQUFFLENBQUM7SUFDOUIsS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ2xELEtBQUssSUFBSSxV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QyxPQUFlLEVBQUUsVUFBa0I7SUFDMUUsT0FBTyxNQUFNLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRkQsb0RBRUM7QUFRTSxLQUFLLFVBQVUsV0FBVyxDQUFDLE1BQWM7SUFDNUMsSUFBSSxLQUFLLEdBQUcsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQ2xELE9BQU87UUFDSCxVQUFVO1FBQ1YsMEZBQTBGO1FBQzFGLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVM7UUFDM0MsU0FBUyxFQUFFLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVM7S0FDMUQsQ0FBQztBQUNOLENBQUM7QUFWRCxrQ0FVQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBSZW1vdGVDb25maWcgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBST1VUSU5HX0ZJTEUsIHBhcnNlUm91dGluZ0RhdGEgfSBmcm9tIFwiLi9yZW1vdGVDb25maWdcIjtcbmltcG9ydCB7IGdldFN0b3JhZ2VTZXJ2ZXJDb25maWcgfSBmcm9tIFwiLi9zZXJ2ZXJDb25maWdcIjtcblxuLy8gVGhlIG9uLWRpc2sgbGF5b3V0LCBhbmQgd2hhdCBjYW4gYmUgbGVhcm5lZCBmcm9tIGl0IHdpdGhvdXQgb3BlbmluZyBhIHN0b3JlLiBUaGUgbGF5b3V0IElTIHRoZSBzdGF0ZTogPGFjY291bnQ+LzxuYW1lPi88YnVja2V0PiBpcyBhIHN0b3JlLCBhbmQgdGhlIHNldCBvZiBmb2xkZXJzIGlzIHRoZSBzZXQgb2Ygc3RvcmVzIHRoaXMgc2VydmVyIGhhcyAtIHRoZXJlIGlzIG5vIHNlcGFyYXRlIHJlY29yZCBvZiB0aGVtIHRvIGZhbGwgb3V0IG9mIHN0ZXAuXG5cbi8vIEV2ZXJ5dGhpbmcgdGhpcyBzZXJ2ZXIgc3RvcmVzIGZvciBidWNrZXRzLiBcImJ1Y2tldHMzXCIgYmVjYXVzZSB0aGUgbGF5b3V0IHVuZGVyIGl0IGNoYW5nZWQgc2hhcGUgLSB0aGUgcHJldmlvdXMgZ2VuZXJhdGlvbnMgbmFtZWQgZm9sZGVycyBhZnRlciB0aGUgcm91dGUsIHdoaWNoIG1lYW50IHJlLXJvdXRpbmcgcmVuYW1lZCB0aGUgc3RvcmFnZS5cbmNvbnN0IEJVQ0tFVFNfRk9MREVSID0gXCJidWNrZXRzNFwiO1xuXG4vKiogQSBzdG9yZSdzIGZvbGRlciwgZnJvbSB0aGUgb25seSB0aHJlZSB0aGluZ3MgdGhhdCBpZGVudGlmeSBpdC4gVGhlIG5hbWUgaXMgdGhlIGNvbmZpZyBlbnRyeSdzIG5hbWUgYW5kIG5vdGhpbmcgZWxzZTogdGhlIHNhbWUgbmFtZSBpcyB0aGUgc2FtZSBzdG9yYWdlLCB3aGF0ZXZlciBpdHMgd2luZG93IG9yIHJvdXRlIHNheSwgYW5kIGEgZGlmZmVyZW50IG5hbWUgaXMgZGlmZmVyZW50IHN0b3JhZ2UgZXZlbiBmb3IgdGhlIHNhbWUgVVJMLiBOb3RoaW5nIGFib3V0IGEgZm9sZGVyIGNoYW5nZXMgd2hlbiB0aGUgcm91dGluZyBkb2VzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1Y2tldEZvbGRlcihuYW1lOiBzdHJpbmcsIGFjY291bnQ6IHN0cmluZywgYnVja2V0TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5qb2luKGdldFN0b3JhZ2VTZXJ2ZXJDb25maWcoKS5mb2xkZXIsIEJVQ0tFVFNfRk9MREVSLCBhY2NvdW50LCBuYW1lLCBidWNrZXROYW1lKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZERpcmVjdG9yeShmb2xkZXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcihmb2xkZXIpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgaWYgKChlIGFzIHsgY29kZT86IHN0cmluZyB9KS5jb2RlID09PSBcIkVOT0VOVFwiKSByZXR1cm4gW107XG4gICAgICAgIHRocm93IGU7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBTdG9yZUZvbGRlciA9IHsgYWNjb3VudDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGJ1Y2tldE5hbWU6IHN0cmluZzsgZm9sZGVyOiBzdHJpbmcgfTtcblxuLyoqIEV2ZXJ5IHN0b3JlIHRoaXMgc2VydmVyIGhvbGRzIGZvciBhbiBhY2NvdW50LCBmb3VuZCBieSB3YWxraW5nIHRoZSBkaXNrLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RBY2NvdW50U3RvcmVGb2xkZXJzKGFjY291bnQ6IHN0cmluZyk6IFByb21pc2U8U3RvcmVGb2xkZXJbXT4ge1xuICAgIGxldCBhY2NvdW50Rm9sZGVyID0gcGF0aC5qb2luKGdldFN0b3JhZ2VTZXJ2ZXJDb25maWcoKS5mb2xkZXIsIEJVQ0tFVFNfRk9MREVSLCBhY2NvdW50KTtcbiAgICBsZXQgZm91bmQ6IFN0b3JlRm9sZGVyW10gPSBbXTtcbiAgICBmb3IgKGxldCBuYW1lIG9mIGF3YWl0IHJlYWREaXJlY3RvcnkoYWNjb3VudEZvbGRlcikpIHtcbiAgICAgICAgZm9yIChsZXQgYnVja2V0TmFtZSBvZiBhd2FpdCByZWFkRGlyZWN0b3J5KHBhdGguam9pbihhY2NvdW50Rm9sZGVyLCBuYW1lKSkpIHtcbiAgICAgICAgICAgIGZvdW5kLnB1c2goeyBhY2NvdW50LCBuYW1lLCBidWNrZXROYW1lLCBmb2xkZXI6IGdldEJ1Y2tldEZvbGRlcihuYW1lLCBhY2NvdW50LCBidWNrZXROYW1lKSB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm91bmQ7XG59XG5cbi8qKiBFdmVyeSBzdG9yZSB0aGlzIHNlcnZlciBob2xkcyBmb3IgT05FIGJ1Y2tldCAtIG9uZSBwZXIgbmFtZSBpdCBoYXMgZXZlciBiZWVuIGdpdmVuLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxpc3RCdWNrZXRTdG9yZUZvbGRlcnMoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0b3JlRm9sZGVyW10+IHtcbiAgICByZXR1cm4gKGF3YWl0IGxpc3RBY2NvdW50U3RvcmVGb2xkZXJzKGFjY291bnQpKS5maWx0ZXIoeCA9PiB4LmJ1Y2tldE5hbWUgPT09IGJ1Y2tldE5hbWUpO1xufVxuXG4vKiogVGhlIHJvdXRpbmcgZmlsZSBpcyBvdXJzLCBvbiBvdXIgb3duIGRpc2ssIGF0IGEgcGF0aCB3ZSBrbm93IC0gc28gaXQgaXMgcmVhZCBkaXJlY3RseS4gR29pbmcgdGhyb3VnaCBhbiBBcmNoaXZlc0Rpc2sgd291bGQgY29uc3RydWN0IGEgd2hvbGUgc3RvcmUgKGhhbmRsZSBjYWNoZSBzd2VlcCBsb29wLCB1cGxvYWRzLWZvbGRlciBjbGVhbnVwKSBqdXN0IHRvIHJlYWQgb25lIGZpbGUuICovXG5mdW5jdGlvbiBnZXRSb3V0aW5nRmlsZVBhdGgoZm9sZGVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLmpvaW4oZm9sZGVyLCBcImZpbGVzXCIsIFJPVVRJTkdfRklMRSk7XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFJvdXRpbmdGaWxlKGZvbGRlcjogc3RyaW5nKTogUHJvbWlzZTx7IGRhdGE6IEJ1ZmZlcjsgd3JpdGVUaW1lOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCBmaWxlUGF0aCA9IGdldFJvdXRpbmdGaWxlUGF0aChmb2xkZXIpO1xuICAgIHRyeSB7XG4gICAgICAgIGxldCBkYXRhID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZVBhdGgpO1xuICAgICAgICBsZXQgc3RhdHMgPSBhd2FpdCBmcy5wcm9taXNlcy5zdGF0KGZpbGVQYXRoKTtcbiAgICAgICAgcmV0dXJuIHsgZGF0YSwgd3JpdGVUaW1lOiBzdGF0cy5tdGltZU1zIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKGUgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGUgPT09IFwiRU5PRU5UXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgfVxufVxuXG4vKiogVGhlIGJ1Y2tldCdzIHJvdXRpbmcgY29uZmlnIGFzIHRoaXMgc2VydmVyIGhvbGRzIGl0OiB0aGUgbmV3ZXN0IGNvcHkgYW1vbmcgaXRzIHN0b3Jlcy4gRWFjaCBzdG9yZSBrZWVwcyBpdHMgb3duLCBhbmQgdGhleSBjb252ZXJnZSAtIHNvIHdoZW4gdGhleSBkaXNhZ3JlZSwgdGhlIG9uZSB3cml0dGVuIG1vc3QgcmVjZW50bHkgaXMgdGhlIG9uZSB0aGF0IGhhcyBoZWFyZCB0aGUgbW9zdC4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkTmV3ZXN0Um91dGluZ0ZpbGUoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcpOiBQcm9taXNlPHsgZGF0YTogQnVmZmVyOyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfSB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCBuZXdlc3Q6IHsgZGF0YTogQnVmZmVyOyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfSB8IHVuZGVmaW5lZDtcbiAgICBmb3IgKGxldCBzdG9yZSBvZiBhd2FpdCBsaXN0QnVja2V0U3RvcmVGb2xkZXJzKGFjY291bnQsIGJ1Y2tldE5hbWUpKSB7XG4gICAgICAgIGxldCBmaWxlID0gYXdhaXQgcmVhZFJvdXRpbmdGaWxlKHN0b3JlLmZvbGRlcik7XG4gICAgICAgIGlmICghZmlsZSkgY29udGludWU7XG4gICAgICAgIGlmIChuZXdlc3QgJiYgZmlsZS53cml0ZVRpbWUgPD0gbmV3ZXN0LndyaXRlVGltZSkgY29udGludWU7XG4gICAgICAgIG5ld2VzdCA9IHsgZGF0YTogZmlsZS5kYXRhLCB3cml0ZVRpbWU6IGZpbGUud3JpdGVUaW1lLCBzaXplOiBmaWxlLmRhdGEubGVuZ3RoLCBuYW1lOiBzdG9yZS5uYW1lIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdlc3Q7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUm91dGluZ0Zyb21EaXNrKGFjY291bnQ6IHN0cmluZywgYnVja2V0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZW1vdGVDb25maWcgfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgbmV3ZXN0ID0gYXdhaXQgcmVhZE5ld2VzdFJvdXRpbmdGaWxlKGFjY291bnQsIGJ1Y2tldE5hbWUpO1xuICAgIGlmICghbmV3ZXN0KSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBwYXJzZVJvdXRpbmdEYXRhKG5ld2VzdC5kYXRhKTtcbn1cblxuLyoqIFdoYXQgYW4gYW5vbnltb3VzIFVSTCByZWFkIG9mIHRoZSByb3V0aW5nIGZpbGUgZ2V0czogdGhlIHNhbWUgbmV3ZXN0IGNvcHkuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Um91dGluZ0ZpbGVSZXN1bHQoYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcpOiBQcm9taXNlPHsgZGF0YTogQnVmZmVyOyB3cml0ZVRpbWU6IG51bWJlcjsgc2l6ZTogbnVtYmVyIH0gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gYXdhaXQgcmVhZE5ld2VzdFJvdXRpbmdGaWxlKGFjY291bnQsIGJ1Y2tldE5hbWUpO1xufVxuXG5leHBvcnQgdHlwZSBCdWNrZXREaXNrSW5mbyA9IHtcbiAgICB0b3RhbEJ5dGVzOiBudW1iZXI7XG4gICAgZnJlZUJ5dGVzOiBudW1iZXI7XG4gICAgdXNlZEJ5dGVzOiBudW1iZXI7XG59O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGlza0luZm8oZm9sZGVyOiBzdHJpbmcpOiBQcm9taXNlPEJ1Y2tldERpc2tJbmZvPiB7XG4gICAgbGV0IHN0YXRzID0gYXdhaXQgZnMucHJvbWlzZXMuc3RhdGZzKGZvbGRlcik7XG4gICAgbGV0IGJsb2NrU2l6ZSA9IE51bWJlcihzdGF0cy5ic2l6ZSk7XG4gICAgbGV0IHRvdGFsQnl0ZXMgPSBOdW1iZXIoc3RhdHMuYmxvY2tzKSAqIGJsb2NrU2l6ZTtcbiAgICByZXR1cm4ge1xuICAgICAgICB0b3RhbEJ5dGVzLFxuICAgICAgICAvLyBNYXRjaGVzIHRoZSBzZXJ2ZXIncyBvd24gbG93LXNwYWNlIGNoZWNrOiB3aGF0IGFuIHVucHJpdmlsZWdlZCBwcm9jZXNzIGNhbiBhY3R1YWxseSB1c2VcbiAgICAgICAgZnJlZUJ5dGVzOiBOdW1iZXIoc3RhdHMuYmF2YWlsKSAqIGJsb2NrU2l6ZSxcbiAgICAgICAgdXNlZEJ5dGVzOiB0b3RhbEJ5dGVzIC0gTnVtYmVyKHN0YXRzLmJmcmVlKSAqIGJsb2NrU2l6ZSxcbiAgICB9O1xufVxuIl19
103
- /* _JS_SOURCE_HASH = "c0e213b17ecd57e393daa0a2a78d53cfb2cd824a861cf9ccbfd977f699b730d7"; */
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVja2V0RGlzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1Y2tldERpc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUVwQixpREFBZ0U7QUFDaEUsaURBQXdEO0FBRXhELHFRQUFxUTtBQUVyUSx3TUFBd007QUFDeE0sTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBRWxDLHVUQUF1VDtBQUN2VCxTQUFnQixlQUFlLENBQUMsSUFBWSxFQUFFLE9BQWUsRUFBRSxVQUFrQjtJQUM3RSxPQUFPLGNBQUksQ0FBQyxJQUFJLENBQUMsSUFBQSxxQ0FBc0IsR0FBRSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNqRyxDQUFDO0FBRkQsMENBRUM7QUFFRCxLQUFLLFVBQVUsYUFBYSxDQUFDLE1BQWM7SUFDdkMsSUFBSSxDQUFDO1FBQ0QsT0FBTyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1QsSUFBSyxDQUF1QixDQUFDLElBQUksS0FBSyxRQUFRO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDMUQsTUFBTSxDQUFDLENBQUM7SUFDWixDQUFDO0FBQ0wsQ0FBQztBQUlELCtFQUErRTtBQUN4RSxLQUFLLFVBQVUsdUJBQXVCLENBQUMsT0FBZTtJQUN6RCxJQUFJLGFBQWEsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLElBQUEscUNBQXNCLEdBQUUsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hGLElBQUksS0FBSyxHQUFrQixFQUFFLENBQUM7SUFDOUIsS0FBSyxJQUFJLElBQUksSUFBSSxNQUFNLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ2xELEtBQUssSUFBSSxV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QUFFRCxpRkFBaUY7QUFDMUUsS0FBSyxVQUFVLG9CQUFvQixDQUFDLE9BQWUsRUFBRSxVQUFrQjtJQUMxRSxPQUFPLE1BQU0scUJBQXFCLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFGRCxvREFFQztBQVFNLEtBQUssVUFBVSxXQUFXLENBQUMsTUFBYztJQUM1QyxJQUFJLEtBQUssR0FBRyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDbEQsT0FBTztRQUNILFVBQVU7UUFDViwwRkFBMEY7UUFDMUYsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUztRQUMzQyxTQUFTLEVBQUUsVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUztLQUMxRCxDQUFDO0FBQ04sQ0FBQztBQVZELGtDQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IFJlbW90ZUNvbmZpZyB9IGZyb20gXCIuLi9JQXJjaGl2ZXNcIjtcbmltcG9ydCB7IFJPVVRJTkdfRklMRSwgcGFyc2VSb3V0aW5nRGF0YSB9IGZyb20gXCIuL3JlbW90ZUNvbmZpZ1wiO1xuaW1wb3J0IHsgZ2V0U3RvcmFnZVNlcnZlckNvbmZpZyB9IGZyb20gXCIuL3NlcnZlckNvbmZpZ1wiO1xuXG4vLyBUaGUgb24tZGlzayBsYXlvdXQsIGFuZCB3aGF0IGNhbiBiZSBsZWFybmVkIGZyb20gaXQgd2l0aG91dCBvcGVuaW5nIGEgc3RvcmUuIFRoZSBsYXlvdXQgSVMgdGhlIHN0YXRlOiA8YWNjb3VudD4vPG5hbWU+LzxidWNrZXQ+IGlzIGEgc3RvcmUsIGFuZCB0aGUgc2V0IG9mIGZvbGRlcnMgaXMgdGhlIHNldCBvZiBzdG9yZXMgdGhpcyBzZXJ2ZXIgaGFzIC0gdGhlcmUgaXMgbm8gc2VwYXJhdGUgcmVjb3JkIG9mIHRoZW0gdG8gZmFsbCBvdXQgb2Ygc3RlcC5cblxuLy8gRXZlcnl0aGluZyB0aGlzIHNlcnZlciBzdG9yZXMgZm9yIGJ1Y2tldHMuIFwiYnVja2V0czNcIiBiZWNhdXNlIHRoZSBsYXlvdXQgdW5kZXIgaXQgY2hhbmdlZCBzaGFwZSAtIHRoZSBwcmV2aW91cyBnZW5lcmF0aW9ucyBuYW1lZCBmb2xkZXJzIGFmdGVyIHRoZSByb3V0ZSwgd2hpY2ggbWVhbnQgcmUtcm91dGluZyByZW5hbWVkIHRoZSBzdG9yYWdlLlxuY29uc3QgQlVDS0VUU19GT0xERVIgPSBcImJ1Y2tldHM0XCI7XG5cbi8qKiBBIHN0b3JlJ3MgZm9sZGVyLCBmcm9tIHRoZSBvbmx5IHRocmVlIHRoaW5ncyB0aGF0IGlkZW50aWZ5IGl0LiBUaGUgbmFtZSBpcyB0aGUgY29uZmlnIGVudHJ5J3MgbmFtZSBhbmQgbm90aGluZyBlbHNlOiB0aGUgc2FtZSBuYW1lIGlzIHRoZSBzYW1lIHN0b3JhZ2UsIHdoYXRldmVyIGl0cyB3aW5kb3cgb3Igcm91dGUgc2F5LCBhbmQgYSBkaWZmZXJlbnQgbmFtZSBpcyBkaWZmZXJlbnQgc3RvcmFnZSBldmVuIGZvciB0aGUgc2FtZSBVUkwuIE5vdGhpbmcgYWJvdXQgYSBmb2xkZXIgY2hhbmdlcyB3aGVuIHRoZSByb3V0aW5nIGRvZXMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnVja2V0Rm9sZGVyKG5hbWU6IHN0cmluZywgYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBwYXRoLmpvaW4oZ2V0U3RvcmFnZVNlcnZlckNvbmZpZygpLmZvbGRlciwgQlVDS0VUU19GT0xERVIsIGFjY291bnQsIG5hbWUsIGJ1Y2tldE5hbWUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkRGlyZWN0b3J5KGZvbGRlcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmcy5wcm9taXNlcy5yZWFkZGlyKGZvbGRlcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBpZiAoKGUgYXMgeyBjb2RlPzogc3RyaW5nIH0pLmNvZGUgPT09IFwiRU5PRU5UXCIpIHJldHVybiBbXTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFN0b3JlRm9sZGVyID0geyBhY2NvdW50OiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgYnVja2V0TmFtZTogc3RyaW5nOyBmb2xkZXI6IHN0cmluZyB9O1xuXG4vKiogRXZlcnkgc3RvcmUgdGhpcyBzZXJ2ZXIgaG9sZHMgZm9yIGFuIGFjY291bnQsIGZvdW5kIGJ5IHdhbGtpbmcgdGhlIGRpc2suICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdEFjY291bnRTdG9yZUZvbGRlcnMoYWNjb3VudDogc3RyaW5nKTogUHJvbWlzZTxTdG9yZUZvbGRlcltdPiB7XG4gICAgbGV0IGFjY291bnRGb2xkZXIgPSBwYXRoLmpvaW4oZ2V0U3RvcmFnZVNlcnZlckNvbmZpZygpLmZvbGRlciwgQlVDS0VUU19GT0xERVIsIGFjY291bnQpO1xuICAgIGxldCBmb3VuZDogU3RvcmVGb2xkZXJbXSA9IFtdO1xuICAgIGZvciAobGV0IG5hbWUgb2YgYXdhaXQgcmVhZERpcmVjdG9yeShhY2NvdW50Rm9sZGVyKSkge1xuICAgICAgICBmb3IgKGxldCBidWNrZXROYW1lIG9mIGF3YWl0IHJlYWREaXJlY3RvcnkocGF0aC5qb2luKGFjY291bnRGb2xkZXIsIG5hbWUpKSkge1xuICAgICAgICAgICAgZm91bmQucHVzaCh7IGFjY291bnQsIG5hbWUsIGJ1Y2tldE5hbWUsIGZvbGRlcjogZ2V0QnVja2V0Rm9sZGVyKG5hbWUsIGFjY291bnQsIGJ1Y2tldE5hbWUpIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmb3VuZDtcbn1cblxuLyoqIEV2ZXJ5IHN0b3JlIHRoaXMgc2VydmVyIGhvbGRzIGZvciBPTkUgYnVja2V0IC0gb25lIHBlciBuYW1lIGl0IGhhcyBldmVyIGJlZW4gZ2l2ZW4uICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbGlzdEJ1Y2tldFN0b3JlRm9sZGVycyhhY2NvdW50OiBzdHJpbmcsIGJ1Y2tldE5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RvcmVGb2xkZXJbXT4ge1xuICAgIHJldHVybiAoYXdhaXQgbGlzdEFjY291bnRTdG9yZUZvbGRlcnMoYWNjb3VudCkpLmZpbHRlcih4ID0+IHguYnVja2V0TmFtZSA9PT0gYnVja2V0TmFtZSk7XG59XG5cbi8qKiBUaGUgcm91dGluZyBmaWxlIGlzIG91cnMsIG9uIG91ciBvd24gZGlzaywgYXQgYSBwYXRoIHdlIGtub3cgLSBzbyBpdCBpcyByZWFkIGRpcmVjdGx5LiBHb2luZyB0aHJvdWdoIGFuIEFyY2hpdmVzRGlzayB3b3VsZCBjb25zdHJ1Y3QgYSB3aG9sZSBzdG9yZSAoaGFuZGxlIGNhY2hlIHN3ZWVwIGxvb3AsIHVwbG9hZHMtZm9sZGVyIGNsZWFudXApIGp1c3QgdG8gcmVhZCBvbmUgZmlsZS4gKi9cbmZ1bmN0aW9uIGdldFJvdXRpbmdGaWxlUGF0aChmb2xkZXI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguam9pbihmb2xkZXIsIFwiZmlsZXNcIiwgUk9VVElOR19GSUxFKTtcbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUm91dGluZ0ZpbGUoZm9sZGVyOiBzdHJpbmcpOiBQcm9taXNlPHsgZGF0YTogQnVmZmVyOyB3cml0ZVRpbWU6IG51bWJlciB9IHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IGZpbGVQYXRoID0gZ2V0Um91dGluZ0ZpbGVQYXRoKGZvbGRlcik7XG4gICAgdHJ5IHtcbiAgICAgICAgbGV0IGRhdGEgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShmaWxlUGF0aCk7XG4gICAgICAgIGxldCBzdGF0cyA9IGF3YWl0IGZzLnByb21pc2VzLnN0YXQoZmlsZVBhdGgpO1xuICAgICAgICAvLyBGbG9vcmVkIGxpa2UgZXZlcnkgdGltZSBBcmNoaXZlc0Rpc2sgcmVwb3J0cyAtIHN1Yi1taWxsaXNlY29uZCBtdGltZSBkaWdpdHMgY2FuJ3Qgcm91bmQtdHJpcCB0aHJvdWdoIHV0aW1lcywgc28gdGhleSBhcmUgbm9pc2UsIG5vdCBvcmRlcmluZ1xuICAgICAgICByZXR1cm4geyBkYXRhLCB3cml0ZVRpbWU6IE1hdGguZmxvb3Ioc3RhdHMubXRpbWVNcykgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICgoZSBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZSA9PT0gXCJFTk9FTlRcIikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZTtcbiAgICB9XG59XG5cbi8qKiBUaGUgYnVja2V0J3Mgcm91dGluZyBjb25maWcgYXMgdGhpcyBzZXJ2ZXIgaG9sZHMgaXQ6IHRoZSBuZXdlc3QgY29weSBhbW9uZyBpdHMgc3RvcmVzLiBFYWNoIHN0b3JlIGtlZXBzIGl0cyBvd24sIGFuZCB0aGV5IGNvbnZlcmdlIC0gc28gd2hlbiB0aGV5IGRpc2FncmVlLCB0aGUgb25lIHdyaXR0ZW4gbW9zdCByZWNlbnRseSBpcyB0aGUgb25lIHRoYXQgaGFzIGhlYXJkIHRoZSBtb3N0LiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWROZXdlc3RSb3V0aW5nRmlsZShhY2NvdW50OiBzdHJpbmcsIGJ1Y2tldE5hbWU6IHN0cmluZyk6IFByb21pc2U8eyBkYXRhOiBCdWZmZXI7IHdyaXRlVGltZTogbnVtYmVyOyBzaXplOiBudW1iZXI7IG5hbWU6IHN0cmluZyB9IHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IG5ld2VzdDogeyBkYXRhOiBCdWZmZXI7IHdyaXRlVGltZTogbnVtYmVyOyBzaXplOiBudW1iZXI7IG5hbWU6IHN0cmluZyB9IHwgdW5kZWZpbmVkO1xuICAgIGZvciAobGV0IHN0b3JlIG9mIGF3YWl0IGxpc3RCdWNrZXRTdG9yZUZvbGRlcnMoYWNjb3VudCwgYnVja2V0TmFtZSkpIHtcbiAgICAgICAgbGV0IGZpbGUgPSBhd2FpdCByZWFkUm91dGluZ0ZpbGUoc3RvcmUuZm9sZGVyKTtcbiAgICAgICAgaWYgKCFmaWxlKSBjb250aW51ZTtcbiAgICAgICAgaWYgKG5ld2VzdCAmJiBmaWxlLndyaXRlVGltZSA8PSBuZXdlc3Qud3JpdGVUaW1lKSBjb250aW51ZTtcbiAgICAgICAgbmV3ZXN0ID0geyBkYXRhOiBmaWxlLmRhdGEsIHdyaXRlVGltZTogZmlsZS53cml0ZVRpbWUsIHNpemU6IGZpbGUuZGF0YS5sZW5ndGgsIG5hbWU6IHN0b3JlLm5hbWUgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld2VzdDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRSb3V0aW5nRnJvbURpc2soYWNjb3VudDogc3RyaW5nLCBidWNrZXROYW1lOiBzdHJpbmcpOiBQcm9taXNlPFJlbW90ZUNvbmZpZyB8IHVuZGVmaW5lZD4ge1xuICAgIGxldCBuZXdlc3QgPSBhd2FpdCByZWFkTmV3ZXN0Um91dGluZ0ZpbGUoYWNjb3VudCwgYnVja2V0TmFtZSk7XG4gICAgaWYgKCFuZXdlc3QpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHBhcnNlUm91dGluZ0RhdGEobmV3ZXN0LmRhdGEpO1xufVxuXG4vKiogV2hhdCBhbiBhbm9ueW1vdXMgVVJMIHJlYWQgb2YgdGhlIHJvdXRpbmcgZmlsZSBnZXRzOiB0aGUgc2FtZSBuZXdlc3QgY29weS4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSb3V0aW5nRmlsZVJlc3VsdChhY2NvdW50OiBzdHJpbmcsIGJ1Y2tldE5hbWU6IHN0cmluZyk6IFByb21pc2U8eyBkYXRhOiBCdWZmZXI7IHdyaXRlVGltZTogbnVtYmVyOyBzaXplOiBudW1iZXIgfSB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBhd2FpdCByZWFkTmV3ZXN0Um91dGluZ0ZpbGUoYWNjb3VudCwgYnVja2V0TmFtZSk7XG59XG5cbmV4cG9ydCB0eXBlIEJ1Y2tldERpc2tJbmZvID0ge1xuICAgIHRvdGFsQnl0ZXM6IG51bWJlcjtcbiAgICBmcmVlQnl0ZXM6IG51bWJlcjtcbiAgICB1c2VkQnl0ZXM6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREaXNrSW5mbyhmb2xkZXI6IHN0cmluZyk6IFByb21pc2U8QnVja2V0RGlza0luZm8+IHtcbiAgICBsZXQgc3RhdHMgPSBhd2FpdCBmcy5wcm9taXNlcy5zdGF0ZnMoZm9sZGVyKTtcbiAgICBsZXQgYmxvY2tTaXplID0gTnVtYmVyKHN0YXRzLmJzaXplKTtcbiAgICBsZXQgdG90YWxCeXRlcyA9IE51bWJlcihzdGF0cy5ibG9ja3MpICogYmxvY2tTaXplO1xuICAgIHJldHVybiB7XG4gICAgICAgIHRvdGFsQnl0ZXMsXG4gICAgICAgIC8vIE1hdGNoZXMgdGhlIHNlcnZlcidzIG93biBsb3ctc3BhY2UgY2hlY2s6IHdoYXQgYW4gdW5wcml2aWxlZ2VkIHByb2Nlc3MgY2FuIGFjdHVhbGx5IHVzZVxuICAgICAgICBmcmVlQnl0ZXM6IE51bWJlcihzdGF0cy5iYXZhaWwpICogYmxvY2tTaXplLFxuICAgICAgICB1c2VkQnl0ZXM6IHRvdGFsQnl0ZXMgLSBOdW1iZXIoc3RhdHMuYmZyZWUpICogYmxvY2tTaXplLFxuICAgIH07XG59XG4iXX0=
104
+ /* _JS_SOURCE_HASH = "c5c198b4fa8ee69a5d2580ffdcc5677cc5e290e5fb1c1616933867a635cd13b8"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
4
4
  };
@@ -52,4 +52,4 @@ function CertTrustModal(props) {
52
52
  preact_1.default.createElement("button", { onClick: props.onClose }, "Close"))));
53
53
  }
54
54
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydFRydXN0TW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZXJ0VHJ1c3RNb2RhbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLG1EQUFrRDtBQUNsRCw2Q0FBa0M7QUFFbEMsNGFBQTRhO0FBRTVhLG9IQUFvSDtBQUNwSCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0FBRXpDLFNBQWdCLGtCQUFrQixDQUFDLFNBQWlCO0lBQ2hELElBQUksSUFBQSxhQUFNLEdBQUU7UUFBRSxPQUFPO0lBQ3JCLElBQUksTUFBYyxDQUFDO0lBQ25CLElBQUksQ0FBQztRQUNELE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsQ0FBQztJQUFDLFdBQU0sQ0FBQztRQUNMLE9BQU87SUFDWCxDQUFDO0lBQ0QsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU87SUFDdkMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUzQixJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtRQUNiLGdCQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUMvQixTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsK0dBQStHO0lBQ25ILENBQUMsQ0FBQztJQUNGLGdCQUFNLENBQUMsTUFBTSxDQUFDLCtCQUFDLGNBQWMsSUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNqRixDQUFDO0FBbkJELGdEQW1CQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQThDO0lBQ2xFLHVIQUF1SDtJQUN2SCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQztJQUM5QyxPQUFPLHdDQUFLLFNBQVMsRUFBRSxpQkFBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO2FBQ2pFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7UUFFekUsd0NBQUssU0FBUyxFQUFFLGlCQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUM5RTs7Z0JBQXVDLDZDQUFPLEtBQUssQ0FBQyxNQUFNLENBQVE7b0JBQU87WUFDekUscVFBRU07WUFDTixzQ0FBRyxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxRQUFRLEVBQUMsR0FBRyxFQUFDLFlBQVk7O2dCQUFPLEtBQUssQ0FBQyxNQUFNOzZDQUErQjtZQUNyRyx3Q0FBSyxTQUFTLEVBQUUsaUJBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQztnQkFDbEQsMkNBQVEsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLFlBQWdCLENBQzVDLENBQ0osQ0FDSixDQUFDO0FBQ1gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwcmVhY3QgZnJvbSBcInByZWFjdFwiO1xuaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSBcInR5cGVzYWZlY3NzXCI7XG5cbi8vIFNob3duIGluIHRoZSBicm93c2VyIHdoZW4gd2UgY2FuJ3QgZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhIHN0b3JhZ2Ugc2VydmVyIC0gbW9zdCBvZnRlbiBiZWNhdXNlIGl0IHNlcnZlcyBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIChzZWUgLS1zZWxmU2lnbmVkKSB0aGF0IHRoaXMgYnJvd3NlciBoYXMgbm90IGFjY2VwdGVkIHlldC4gR2l2ZXMgdGhlIHVzZXIgYSBsaW5rIHRvIHRoZSBzZXJ2ZXIsIHdoZXJlIHRoZSBicm93c2VyIGxldHMgdGhlbSBhY2NlcHQgdGhlIGNlcnRpZmljYXRlICh0aGUgP3RydXN0Q2VydD0xIHBhZ2UsIHNlZSBhY2Nlc3NQYWdlLnRzeCk7IG9uY2UgYWNjZXB0ZWQsIHRoZSBhcHAncyBvd24gYmFja2dyb3VuZCBjb25uZWN0aW9uIHRvIHRoYXQgc2VydmVyIHN0YXJ0cyB3b3JraW5nLiBBIG5vLW9wIGluIE5vZGUuXG5cbi8vIE9uZSBtb2RhbCBwZXIgc2VydmVyIG9yaWdpbiwgc28gcmVwZWF0ZWQgY29ubmVjdGlvbiBmYWlsdXJlcyAodGhlcmUgYXJlIG1hbnksIG9uIGEgcmV0cnkgbG9vcCkgbmV2ZXIgc3RhY2sgbW9kYWxzXG5jb25zdCBzaG93bkZvck9yaWdpbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5leHBvcnQgZnVuY3Rpb24gc2hvd0NlcnRUcnVzdE1vZGFsKHNlcnZlclVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzTm9kZSgpKSByZXR1cm47XG4gICAgbGV0IG9yaWdpbjogc3RyaW5nO1xuICAgIHRyeSB7XG4gICAgICAgIG9yaWdpbiA9IG5ldyBVUkwoc2VydmVyVXJsKS5vcmlnaW47XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHNob3duRm9yT3JpZ2luLmhhcyhvcmlnaW4pKSByZXR1cm47XG4gICAgc2hvd25Gb3JPcmlnaW4uYWRkKG9yaWdpbik7XG5cbiAgICBsZXQgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7XG4gICAgbGV0IGNsb3NlID0gKCkgPT4ge1xuICAgICAgICBwcmVhY3QucmVuZGVyKG51bGwsIGNvbnRhaW5lcik7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgICAgLy8gTGVhdmUgaXQgaW4gc2hvd25Gb3JPcmlnaW46IHRoZSB1c2VyIGRpc21pc3NlZCBpdCwgc28gZG9uJ3QgcmUtcG9wIGl0IG9uIHRoZSBuZXh0IGZhaWx1cmUgb2YgdGhlIHNhbWUgc2VydmVyXG4gICAgfTtcbiAgICBwcmVhY3QucmVuZGVyKDxDZXJ0VHJ1c3RNb2RhbCBvcmlnaW49e29yaWdpbn0gb25DbG9zZT17Y2xvc2V9IC8+LCBjb250YWluZXIpO1xufVxuXG5mdW5jdGlvbiBDZXJ0VHJ1c3RNb2RhbChwcm9wczogeyBvcmlnaW46IHN0cmluZzsgb25DbG9zZTogKCkgPT4gdm9pZCB9KSB7XG4gICAgLy8gTG9hZGluZyB0aGlzIHBhZ2UgYXQgYWxsIG1lYW5zIHRoZSBicm93c2VyIGFjY2VwdGVkIHRoZSBjZXJ0aWZpY2F0ZTsgdGhlIHBhZ2UgdGhlbiB0ZWxscyB0aGUgdXNlciB0aGV5IGNhbiBjb21lIGJhY2tcbiAgICBsZXQgdHJ1c3RVcmwgPSBwcm9wcy5vcmlnaW4gKyBcIi8/dHJ1c3RDZXJ0PTFcIjtcbiAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2Nzcy5maXhlZC5wb3MoMCwgMCkuZmlsbEJvdGguekluZGV4KDIxNDc0ODM2NDcpXG4gICAgICAgIC5oYm94KDApLmp1c3RpZnlDb250ZW50KFwiY2VudGVyXCIpLmFsaWduSXRlbXMoXCJjZW50ZXJcIikuaHNsYSgwLCAwLCAwLCAwLjUpXG4gICAgfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Nzcy52Ym94KDEyKS5wYWQyKDI0KS5tYXhXaWR0aCg0ODApLmhzbCgwLCAwLCAxMDApLmJvcmRlclJhZGl1cyg4KX0+XG4gICAgICAgICAgICA8ZGl2PkNhbid0IHJlYWNoIHRoZSBzdG9yYWdlIHNlcnZlciBhdCA8Y29kZT57cHJvcHMub3JpZ2lufTwvY29kZT4uPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIElmIHRoaXMgc2VydmVyIHVzZXMgYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSwgdGhlIGJyb3dzZXIgYmxvY2tzIHRoZSBjb25uZWN0aW9uIHVudGlsIHlvdSBhY2NlcHQgaXQuIE9wZW4gdGhlIHNlcnZlciBiZWxvdywgYWNjZXB0IHRoZSBjZXJ0aWZpY2F0ZSB3YXJuaW5nLCB0aGVuIHJldHVybiB0byB0aGlzIHBhZ2UgLSBpdCB3aWxsIGNvbm5lY3QgYXV0b21hdGljYWxseS5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGEgaHJlZj17dHJ1c3RVcmx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXJcIj5PcGVuIHtwcm9wcy5vcmlnaW59IGFuZCB0cnVzdCBpdHMgY2VydGlmaWNhdGU8L2E+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y3NzLmhib3goOCkuanVzdGlmeUNvbnRlbnQoXCJmbGV4LWVuZFwiKX0+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXtwcm9wcy5vbkNsb3NlfT5DbG9zZTwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2Pjtcbn1cbiJdfQ==
55
- /* _JS_SOURCE_HASH = "1635b5c83e18a8b25ddaaf59304ef04ce72a3da66ac0ac714090745126d1a7d1"; */
55
+ /* _JS_SOURCE_HASH = "c208909830b679cc6b4affa29a3eed8dce13b6b6caba37247794b599028b9c68"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.RoutingRewriteLoop = exports.writeRoutingToAllStores = exports.chooseStartupConfig = exports.disposeProbes = exports.probeSources = exports.ChainStateManager = exports.CONFIG_WRITE_REFRESH_INTERVAL = exports.CONFIG_WRITE_RETRY_INTERVAL = void 0;
4
4
  const misc_1 = require("socket-function/src/misc");
@@ -322,7 +322,7 @@ function chooseStartupConfig(config) {
322
322
  let { configured, probes, debugName } = config;
323
323
  let found = probes.find(x => x.responded);
324
324
  if (!found) {
325
- throw new Error(`Cannot initialize storage for ${debugName}: no source answered. ${probes.map(x => x.error).join(" | ")}`);
325
+ throw new Error(`Storage initialization failed - no source answered. For ${debugName}: ${probes.map(x => x.error).join(" | ")}`);
326
326
  }
327
327
  let existing = found.existing;
328
328
  let active = configured;
@@ -372,7 +372,7 @@ exports.chooseStartupConfig = chooseStartupConfig;
372
372
  async function writeRoutingToAllStores(config) {
373
373
  let { configured, sources, debugName } = config;
374
374
  let routingData = (0, remoteConfig_1.serializeRemoteConfig)(configured);
375
- let routingWriteTime = Date.now();
375
+ let routingWriteTime = Math.floor(Date.now());
376
376
  let targets = [];
377
377
  let seen = new Set();
378
378
  for (let source of sources) {
@@ -465,5 +465,5 @@ class RoutingRewriteLoop {
465
465
  }
466
466
  }
467
467
  exports.RoutingRewriteLoop = RoutingRewriteLoop;
468
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5TdGFydHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2hhaW5TdGFydHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFrRDtBQUVsRCxpREFBK0g7QUFDL0gsbURBQWtHO0FBQ2xHLCtEQUFtRTtBQUNuRSx1RUFBcUY7QUFFckYsNGRBQTRkO0FBRTVkLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDM0MsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQy9DLHNOQUFzTjtBQUN6TSxRQUFBLDJCQUEyQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3pELGdIQUFnSDtBQUNuRyxRQUFBLDZCQUE2QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBTzVELG1PQUFtTztBQUNuTyxNQUFhLGlCQUFpQjtJQWMxQixZQUFvQixNQUtuQjtRQUxtQixXQUFNLEdBQU4sTUFBTSxDQUt6QjtRQVpPLG1CQUFjLEdBQUcsaUNBQWlCLENBQUM7UUFHbkMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQXNOakIsNEJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBNU1oQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQztZQUMxQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVztTQUNqQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBQSxnREFBc0IsRUFBQyxHQUFHLEVBQUU7WUFDdEQsS0FBSyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxXQUFDLE9BQUEsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxNQUFBLENBQUMsQ0FBQyxLQUFLLG1DQUFJLENBQUMsRUFBRSxDQUFDLENBQUEsRUFBQSxDQUFDLENBQUM7UUFDaEosQ0FBQyxDQUFDLENBQUM7UUFDSCxxSEFBcUg7UUFDckgsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFBLDBDQUFnQixFQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFJRCx5RkFBeUY7SUFDbEYsTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRU0sUUFBUTtRQUNYLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1FBQ25HLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztZQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLGlDQUFpQixDQUFDO1lBQzVDLENBQUMsRUFBRSxDQUFDLENBQVEsRUFBRSxFQUFFOztnQkFDWixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGNBQWM7b0JBQUUsT0FBTztnQkFDakQsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxNQUFBLENBQUMsQ0FBQyxLQUFLLG1DQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdJLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7b0JBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVE7d0JBQUUsT0FBTztvQkFDMUIsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE9BQU8sRUFBRSxDQUFDO3dCQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztvQkFDbEMsQ0FBQztvQkFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUN4QixNQUFBLE1BQUMsSUFBSSxDQUFDLGNBQXlDLEVBQUMsS0FBSyxrREFBSSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsK0JBQWUsRUFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLDRCQUFZLENBQUMsQ0FBQztZQUN4RixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVPLEtBQUssQ0FBQyxJQUFJO1FBQ2QsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUFlLENBQUMsQ0FBQztRQUMzRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxJQUFJLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDO1lBQ0QsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3hJLElBQUksT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5QyxJQUFJLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUM5QixJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLG1DQUFtQyxRQUFRLElBQUksSUFBQSwrQkFBZ0IsRUFBQyxRQUFRLENBQUMsSUFBSSxNQUFNLFVBQVUsSUFBQSwrQkFBZ0IsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwTSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sdUJBQXVCLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN0SSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7b0JBQy9DLHNKQUFzSjtvQkFDdEosT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsYUFBYSxJQUFBLCtCQUFnQixFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsd0NBQXdDLEtBQUssWUFBWSxRQUFRLElBQUkseUNBQXlDLElBQUEsK0JBQWdCLEVBQUMsUUFBUSxDQUFDLDJCQUEyQixJQUFJLG9GQUFvRixnQkFBZ0IsbUNBQTJCLEdBQUcsSUFBSSxnQkFBZ0IsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQzFjLElBQUksUUFBUSxFQUFFLENBQUM7d0JBQ1gsTUFBTSxHQUFHLFFBQVEsQ0FBQzt3QkFDbEIsS0FBSyxJQUFJLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQzs0QkFDekIsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUNyQixDQUFDO3dCQUNELE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzlDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsYUFBYSxJQUFBLCtCQUFnQixFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxPQUFPLEtBQUssaUNBQWlDLG1DQUEyQixHQUFHLElBQUksaUVBQWlFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM1VSxDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3pCLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3RGLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksS0FBSyxHQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzlDLE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUM7Z0JBQVMsQ0FBQztZQUNQLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUVELGlMQUFpTDtJQUN6SyxVQUFVLENBQUMsTUFBb0I7UUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxJQUFBLGFBQU0sR0FBRTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLFlBQTBCLEVBQUUsUUFBaUI7UUFDekUsSUFBSSxNQUFNLEdBQUcsTUFBTSw2QkFBYSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU8sS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFvQjtRQUMzQyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksT0FBTyxHQUFvQixFQUFFLENBQUM7UUFDbEMsS0FBSyxJQUFJLFlBQVksSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBZSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRU8sZUFBZTs7UUFDbkIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDOUIsS0FBSyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRTs7Z0JBQy9DLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0RBQXdELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssTUFBQSxDQUFDLENBQUMsS0FBSyxtQ0FBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFDekIsTUFBQSxNQUFDLElBQUksQ0FBQyxTQUFvQyxFQUFDLEtBQUssa0RBQUksQ0FBQztJQUN6RCxDQUFDO0lBSU0sbUJBQW1CO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDL0QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUN0QyxDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQWlCOztRQUM3QyxJQUFJLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDMUIsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDO2dCQUNELElBQUksTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQzlDLElBQUksTUFBTTtvQkFBRSxPQUFPLElBQUEsb0NBQXFCLEVBQUMsTUFBTSxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLE1BQUMsQ0FBVyxDQUFDLEtBQUssbUNBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRSxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEksQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCO1FBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsT0FBTztRQUNoRCxJQUFJLEtBQWlCLENBQUM7UUFDdEIsSUFBSSxDQUFDO1lBQ0QsS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwQyxDQUFDO1FBQUMsV0FBTSxDQUFDO1lBQ0wsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDcEIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sS0FBSyxDQUFDLGNBQWMsQ0FBQyxLQUFpQixFQUFFLE1BQW9COztRQUNoRSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQUUsT0FBTztRQUNwRSxJQUFJLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLElBQUksd0JBQXdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFBLGdEQUEwQixFQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFBLGdEQUEwQixFQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQy9JLElBQUksd0JBQXdCLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLHVEQUF1RCxJQUFBLCtCQUFnQixFQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFBLCtCQUFnQixFQUFDLE1BQU0sQ0FBQyxlQUFlLFFBQVEscUNBQXFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFOLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQywyQ0FBMkMsSUFBQSwrQkFBZ0IsRUFBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBQSwrQkFBZ0IsRUFBQyxNQUFNLENBQUMsZUFBZSxRQUFRLHFDQUFxQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM5TSxDQUFDO1FBQ0QsSUFBSSxXQUFXLEdBQUcsQ0FBQyxNQUFvQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDbEcsSUFBSSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQTJCLENBQUM7UUFDckQsS0FBSyxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDL0IsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNyQyxJQUFJLElBQUksR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDUixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNWLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZDLElBQUksT0FBTyxHQUFvQixFQUFFLENBQUM7UUFDbEMsS0FBSyxJQUFJLFlBQVksSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBZSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLEdBQUcsR0FBRyxNQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLDBDQUFFLEtBQUssRUFBRSxDQUFDO1lBQzlELElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ04sR0FBRyxDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QixDQUFDO2lCQUFNLENBQUM7Z0JBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN2RSxDQUFDO1FBQ0wsQ0FBQztRQUNELEtBQUssSUFBSSxTQUFTLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDekMsS0FBSyxJQUFJLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDN0IsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDM0IsSUFBSSxRQUFRLEdBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBSUQseUxBQXlMO0lBQ2xMLG1CQUFtQjtRQUN0QixJQUFJLElBQUksQ0FBQywyQkFBMkI7WUFBRSxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQztRQUM5RSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsNkJBQTZCO1lBQUUsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEcsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTtZQUMxRSxJQUFJLENBQUMsMkJBQTJCLEdBQUcsU0FBUyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDNUMsQ0FBQztJQUNPLEtBQUssQ0FBQyxzQkFBc0I7UUFDaEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBQ2hELElBQUksS0FBaUIsQ0FBQztRQUN0QixJQUFJLENBQUM7WUFDRCxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3BDLENBQUM7UUFBQyxXQUFNLENBQUM7WUFDTCxPQUFPO1FBQ1gsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLHVCQUF1QixLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sb0RBQW9ELENBQUMsQ0FBQztRQUN2SyxJQUFJLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLE1BQU0sRUFBQyxFQUFFO1lBQzdELElBQUksQ0FBQztnQkFDRCxPQUFPLE1BQU0sTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDNUMsQ0FBQztZQUFDLFdBQU0sQ0FBQztnQkFDTCxPQUFPLFNBQVMsQ0FBQztZQUNyQixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDcEIsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sT0FBTzs7UUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckIsTUFBQSxJQUFJLENBQUMsc0JBQXNCLG9EQUFJLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3JDLElBQUksWUFBWSxFQUFFLENBQUM7WUFDZixLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQzNCLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUMvQixNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3JCLENBQUM7WUFDTCxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQXJSRCw4Q0FxUkM7QUFXRCx1UUFBdVE7QUFDaFEsS0FBSyxVQUFVLFlBQVksQ0FBQyxPQUF1QixFQUFFLFFBQWlCO0lBQ3pFLE9BQU8sTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLFlBQVksRUFBQyxFQUFFOztRQUN0RCxJQUFJLEtBQUssR0FBRyxNQUFNLDZCQUFhLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN0RixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDO1lBQ0QsSUFBSSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMvQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDdEcsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxPQUFPLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLENBQUMsR0FBRyxLQUFLLE1BQUMsQ0FBVyxDQUFDLEtBQUssbUNBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNoSixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUM7QUFYRCxvQ0FXQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxNQUFxQjtJQUMvQyxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztBQUNMLENBQUM7QUFKRCxzQ0FJQztBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLE1BQThFO0lBQzlHLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUMvQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLFNBQVMseUJBQXlCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvSCxDQUFDO0lBQ0QsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM5QixJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUM7SUFDeEIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLElBQUksUUFBUSxJQUFJLElBQUEsK0JBQWdCLEVBQUMsUUFBUSxDQUFDLElBQUksSUFBQSwrQkFBZ0IsRUFBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1FBQ3pFLElBQUksSUFBQSwrQkFBZ0IsRUFBQyxRQUFRLENBQUMsS0FBSyxJQUFBLCtCQUFnQixFQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3pILE9BQU8sQ0FBQyxLQUFLLENBQUMsb0VBQW9FLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxvRUFBb0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsZUFBZSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyUCxDQUFDO1FBQ0QsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUNsQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2IsSUFBSSxJQUE4QixDQUFDO1FBQ25DLElBQUksV0FBK0IsQ0FBQztRQUNwQyxLQUFLLElBQUksS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7WUFDNUIsSUFBSSxDQUFDLE1BQU07Z0JBQUUsU0FBUztZQUN0QixJQUFJLENBQUMsSUFBSSxJQUFJLElBQUEsK0JBQWdCLEVBQUMsTUFBTSxDQUFDLEdBQUcsSUFBQSwrQkFBZ0IsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUM3RCxJQUFJLEdBQUcsTUFBTSxDQUFDO1lBQ2xCLENBQUM7WUFDRCxJQUFJLElBQUEsK0JBQWdCLEVBQUMsTUFBTSxDQUFDLEtBQUssSUFBQSwrQkFBZ0IsRUFBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDckgsV0FBVyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDO1lBQ3pDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxJQUFJLElBQUksSUFBQSwrQkFBZ0IsRUFBQyxJQUFJLENBQUMsSUFBSSxJQUFBLCtCQUFnQixFQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDakUsSUFBSSxXQUFXLElBQUksSUFBQSwrQkFBZ0IsRUFBQyxJQUFJLENBQUMsS0FBSyxJQUFBLCtCQUFnQixFQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pFLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0VBQW9FLFdBQVcsb0VBQW9FLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdE8sQ0FBQztZQUNELE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDZCxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQXRDRCxrREFzQ0M7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSSxLQUFLLFVBQVUsdUJBQXVCLENBQUMsTUFBaUY7SUFDM0gsSUFBSSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ2hELElBQUksV0FBVyxHQUFHLElBQUEsb0NBQXFCLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEQsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbEMsSUFBSSxPQUFPLEdBQW9CLEVBQUUsQ0FBQztJQUNsQyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQzdCLEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDekIsSUFBSSxHQUFHLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFBRSxTQUFTO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUFrQyxJQUFBLCtCQUFnQixFQUFDLFVBQVUsQ0FBQyxRQUFRLFNBQVMsV0FBVyxPQUFPLENBQUMsTUFBTSx1QkFBdUIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcFIsSUFBSSxRQUFRLEdBQWEsRUFBRSxDQUFDO0lBQzVCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxNQUFNLEVBQUMsRUFBRTs7UUFDekMsSUFBSSxDQUFDO1lBQ0QsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQywyQkFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1RyxPQUFPLENBQUMsR0FBRyxDQUFDLHdDQUF3QyxJQUFBLCtCQUFnQixFQUFDLFVBQVUsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxXQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUosQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDVCxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLE1BQUMsQ0FBVyxDQUFDLEtBQUssbUNBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwSCxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNKLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBdkJELDBEQXVCQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQWEsa0JBQWtCO0lBQzNCLFlBQW9CLE1BS25CO1FBTG1CLFdBQU0sR0FBTixNQUFNLENBS3pCO1FBR08sYUFBUSxHQUFHLEtBQUssQ0FBQztJQUhwQixDQUFDO0lBS04seUlBQXlJO0lBQ2xJLEtBQUssQ0FBQyxlQUF3QjtRQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsSUFBSSxtQ0FBMkIsSUFBSSxxQ0FBNkIsQ0FBQyxDQUFDO0lBQ25HLENBQUM7SUFFTSxPQUFPO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDTCxDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQWE7O1FBQzFCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2IsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQVEsRUFBRSxFQUFFOztnQkFDbkMsT0FBTyxDQUFDLEtBQUssQ0FBQyw0Q0FBNEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxNQUFBLENBQUMsQ0FBQyxLQUFLLG1DQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdHLElBQUksQ0FBQyxRQUFRLENBQUMsbUNBQTJCLENBQUMsQ0FBQztZQUMvQyxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNWLE1BQUEsTUFBQyxJQUFJLENBQUMsS0FBZ0MsRUFBQyxLQUFLLGtEQUFJLENBQUM7SUFDckQsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFPO1FBQ2pCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzFCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3hDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQ0FBMkIsQ0FBQyxDQUFDO1lBQzNDLE9BQU87UUFDWCxDQUFDO1FBQ0QscUhBQXFIO1FBQ3JILElBQUksSUFBQSwrQkFBZ0IsRUFBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBQSwrQkFBZ0IsRUFBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMscUNBQTZCLENBQUMsQ0FBQztZQUM3QyxPQUFPO1FBQ1gsQ0FBQztRQUNELGtOQUFrTjtRQUNsTixJQUFJLElBQUEsK0JBQWdCLEVBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUEsK0JBQWdCLEVBQUMsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ2pJLElBQUksQ0FBQyxRQUFRLENBQUMscUNBQTZCLENBQUMsQ0FBQztZQUM3QyxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEksSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5Q0FBeUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsYUFBYSxJQUFBLCtCQUFnQixFQUFDLFVBQVUsQ0FBQyxlQUFlLFFBQVEsQ0FBQyxNQUFNLE9BQU8sS0FBSyx5QkFBeUIsbUNBQTJCLEdBQUcsSUFBSSxNQUFNLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFQLElBQUksQ0FBQyxRQUFRLENBQUMsbUNBQTJCLENBQUMsQ0FBQztZQUMzQyxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMscUNBQTZCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0o7QUFoRUQsZ0RBZ0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSBcInNvY2tldC1mdW5jdGlvbi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgUmVtb3RlQ29uZmlnLCBTb3VyY2VDb25maWcgfSBmcm9tIFwiLi4vSUFyY2hpdmVzXCI7XG5pbXBvcnQgeyBST1VUSU5HX0ZJTEUsIGdldENvbmZpZ1ZlcnNpb24sIHNlcmlhbGl6ZVJlbW90ZUNvbmZpZywgbm9ybWFsaXplUmVtb3RlQ29uZmlnLCBub3JtYWxpemVTb3VyY2UgfSBmcm9tIFwiLi9yZW1vdGVDb25maWdcIjtcbmltcG9ydCB7IFNvdXJjZVdyYXBwZXIsIFJFVFJZX1NUQVJUX0RFTEFZLCBSRVRSWV9NQVhfREVMQVksIFJFVFJZX0dST1dUSCB9IGZyb20gXCIuL3NvdXJjZVdyYXBwZXJcIjtcbmltcG9ydCB7IHJlc29sdmVJbnRlcm1lZGlhdGVTb3VyY2VzIH0gZnJvbSBcIi4vaW50ZXJtZWRpYXRlU291cmNlc1wiO1xuaW1wb3J0IHsgb25TZXJ2ZXJSb3V0aW5nQ2hhbmdlZCwgdHJhY2tDaGFpbkNvbmZpZyB9IGZyb20gXCIuL3N0b3JhZ2VDbGllbnRDb250cm9sbGVyXCI7XG5cbi8vIFRoZSBMSUZFQ1lDTEUgb2YgYW4gQXJjaGl2ZXNDaGFpbidzIHN0YXRlLCBhbmQgbm90aGluZyBlbHNlOiBpbml0aWFsaXppbmcgaXQgKHByb2JpbmcgZXZlcnkgY29uZmlndXJlZCBzb3VyY2UsIGRlY2lkaW5nIHdoaWNoIHJvdXRpbmcgY29uZmlnIHRvIHJ1biwgd3JpdGluZyBvdXJzIG91dCB3aGVuIGl0IGlzIHRoZSBuZXdlc3QpLCB0aGUgcmV0cnkgd2hlbiBpbml0aWFsaXphdGlvbiBmYWlscywgdGhlIHBvbGwgdGhhdCBhZG9wdHMgbmV3ZXIgY29uZmlncywgdGhlIGF2YWlsYWJpbGl0eSByZWNoZWNrLCBhbmQgdGhlIGxvb3AgdGhhdCBrZWVwcyByZS13cml0aW5nIG91ciBjb25maWcuIE5vbmUgb2YgdGhpcyBpcyByZXF1ZXN0IGRpc3BhdGNoIC0gdGhlIGNoYWluIChjcmVhdGVBcmNoaXZlcy50cykgYXNrcyB0aGUgQ2hhaW5TdGF0ZU1hbmFnZXIgZm9yIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBkaXNwYXRjaGVzIG92ZXIgaXQuXG5cbmNvbnN0IENPTkZJR19QT0xMX0lOVEVSVkFMID0gNSAqIDYwICogMTAwMDtcbmNvbnN0IEFWQUlMQUJJTElUWV9SRUNIRUNLX1RIUk9UVExFID0gNSAqIDEwMDA7XG4vLyBUaGUgcm91dGluZyBjb25maWcgd3JpdGUgaXMgcmV0cmllZCBvbiB0aGlzIGNhZGVuY2Ugd2hpbGUgaXQgaXMgZmFpbGluZy4gQSBzdG9yZSB0aGF0IG5ldmVyIHJlY2VpdmVkIHRoZSBjb25maWcgcmVqZWN0cyBldmVyeSB3cml0ZSBhaW1lZCBhdCBpdCwgc28gdGhpcyBub3QgbGFuZGluZyBpcyBhIGJpZyBkZWFsIC0gZWFjaCBmYWlsZWQgYXR0ZW1wdCBpcyBsb2dnZWQuXG5leHBvcnQgY29uc3QgQ09ORklHX1dSSVRFX1JFVFJZX0lOVEVSVkFMID0gNSAqIDYwICogMTAwMDtcbi8vIC4uLmFuZCBldmVuIGFmdGVyIHN1Y2Nlc3MgaXQgaXMgcmUtd3JpdHRlbiBvbiB0aGlzIGNhZGVuY2UsIGluIGNhc2UgYSBzdG9yZSBsb3N0IGl0IG9yIGEgc2VydmVyIGFwcGVhcmVkIGxhdGVcbmV4cG9ydCBjb25zdCBDT05GSUdfV1JJVEVfUkVGUkVTSF9JTlRFUlZBTCA9IDYwICogNjAgKiAxMDAwO1xuXG5leHBvcnQgdHlwZSBDaGFpblN0YXRlID0ge1xuICAgIGNvbmZpZzogUmVtb3RlQ29uZmlnO1xuICAgIHNvdXJjZXM6IFNvdXJjZVdyYXBwZXJbXTtcbn07XG5cbi8qKiBUaGUgY2hhaW4ncyBzdGF0ZSBhbmQgZXZlcnl0aGluZyBhYm91dCBIQVZJTkcgb25lOiBpbml0ICh3aXRoIGl0cyByZXRyeSksIHRoZSBjb25maWcgcG9sbCwgYXZhaWxhYmlsaXR5IHJlY2hlY2tzLCBhbmQgdGhlIHJvdXRpbmcgcmV3cml0ZSBsb29wLiBUaGUgY2hhaW4gY29uc3RydWN0cyBvbmUsIGFza3MgaXQgZ2V0U3RhdGUoKSBvbiBldmVyeSBjYWxsLCBhbmQgZGlzcG9zZXMgaXQuICovXG5leHBvcnQgY2xhc3MgQ2hhaW5TdGF0ZU1hbmFnZXIge1xuICAgIHB1YmxpYyByZWFkb25seSBjb25maWd1cmVkOiBSZW1vdGVDb25maWc7XG4gICAgLyoqIFRoZSBuZXdlc3QgYWRvcHRlZCBjb25maWcgLSB3aGF0IGdldERlYnVnTmFtZSBhbmQgZGlzcGF0Y2ggZGVjaXNpb25zIHJlYWQuIFN0YXJ0cyBhcyB0aGUgY29uZmlndXJlZCBvbmUgYW5kIG1vdmVzIHdpdGggZXZlcnkgYWRvcHRpb24uICovXG4gICAgcHVibGljIGFjdGl2ZUNvbmZpZzogUmVtb3RlQ29uZmlnO1xuICAgIHByaXZhdGUgc3RhdGVQcm9taXNlOiBQcm9taXNlPENoYWluU3RhdGU+IHwgdW5kZWZpbmVkO1xuICAgIC8vIFRoZSByZXNvbHZlZCBzdGF0ZSwgZm9yIHN5bmNocm9ub3VzIGFjY2VzcyAoZ2V0R2V0VVJMcykgLSBhbHdheXMgdGhlIG5ld2VzdCBhZG9wdGVkIGNvbmZpZywgd2hlcmUgc3RhdGVQcm9taXNlIG1heSBicmllZmx5IGxhZyBkdXJpbmcgYSByZWJ1aWxkXG4gICAgcHJpdmF0ZSBsYXRlc3RTdGF0ZTogQ2hhaW5TdGF0ZSB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIGluaXRSZXRyeURlbGF5ID0gUkVUUllfU1RBUlRfREVMQVk7XG4gICAgcHJpdmF0ZSBpbml0UmV0cnlUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSBwb2xsVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIGRpc3Bvc2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSB1bnN1YnNjcmliZVJvdXRpbmdQdXNoOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByb3V0aW5nUmV3cml0ZXI6IFJvdXRpbmdSZXdyaXRlTG9vcDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiB7XG4gICAgICAgIGNvbmZpZ3VyZWQ6IFJlbW90ZUNvbmZpZztcbiAgICAgICAgZGVidWdOYW1lOiAoKSA9PiBzdHJpbmc7XG4gICAgICAgIC8qKiBTZWUgQXJjaGl2ZXNDaGFpbk9wdGlvbnMuZGlyZWN0Q29ubmVjdC4gKi9cbiAgICAgICAgZGlyZWN0Q29ubmVjdD86IGJvb2xlYW47XG4gICAgfSkge1xuICAgICAgICB0aGlzLmNvbmZpZ3VyZWQgPSBjb25maWcuY29uZmlndXJlZDtcbiAgICAgICAgdGhpcy5hY3RpdmVDb25maWcgPSBjb25maWcuY29uZmlndXJlZDtcbiAgICAgICAgdGhpcy5yb3V0aW5nUmV3cml0ZXIgPSBuZXcgUm91dGluZ1Jld3JpdGVMb29wKHtcbiAgICAgICAgICAgIGNvbmZpZ3VyZWQ6IGNvbmZpZy5jb25maWd1cmVkLFxuICAgICAgICAgICAgZGVidWdOYW1lOiBjb25maWcuZGVidWdOYW1lLFxuICAgICAgICAgICAgbGF0ZXN0OiAoKSA9PiB0aGlzLmxhdGVzdFN0YXRlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZVJvdXRpbmdQdXNoID0gb25TZXJ2ZXJSb3V0aW5nQ2hhbmdlZCgoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMucmVmcmVzaEFjdGl2ZUNvbmZpZygpLmNhdGNoKChlOiBFcnJvcikgPT4gY29uc29sZS5lcnJvcihgQ29uZmlnIHJlZnJlc2ggZmFpbGVkIGZvciAke3RoaXMuY29uZmlnLmRlYnVnTmFtZSgpfTogJHtlLnN0YWNrID8/IGV9YCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gU28gYSBzZXJ2ZXIgY2FuIGFzayB3aGF0IGNvbmZpZyB3ZSBpbnRlbmRlZCBmb3IgYSBzdG9yZSBuYW1lIChzZWUgU3RvcmFnZUNsaWVudENvbnRyb2xsZXIuZ2V0Um91dGluZ0NvbmZpZ0Zvck5hbWUpXG4gICAgICAgIHRoaXMudW50cmFja0NvbmZpZyA9IHRyYWNrQ2hhaW5Db25maWcoeyBjb25maWd1cmVkOiBjb25maWcuY29uZmlndXJlZCwgYWN0aXZlOiAoKSA9PiB0aGlzLmFjdGl2ZUNvbmZpZyB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVudHJhY2tDb25maWc6ICgpID0+IHZvaWQ7XG5cbiAgICAvKiogVGhlIG5ld2VzdCBhZG9wdGVkIHN0YXRlLCBzeW5jaHJvbm91c2x5IC0gdW5kZWZpbmVkIHVudGlsIHRoZSBmaXJzdCBpbml0IGZpbmlzaGVzLiAqL1xuICAgIHB1YmxpYyBsYXRlc3QoKTogQ2hhaW5TdGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLmxhdGVzdFN0YXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdGF0ZSgpOiBQcm9taXNlPENoYWluU3RhdGU+IHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcG9zZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYEFyY2hpdmVzQ2hhaW4gJHt0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKX0gaGFzIGJlZW4gZGlzcG9zZWRgKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnN0YXRlUHJvbWlzZSkge1xuICAgICAgICAgICAgbGV0IHByb21pc2UgPSB0aGlzLmluaXQoKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVQcm9taXNlID0gcHJvbWlzZTtcbiAgICAgICAgICAgIHByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0UmV0cnlEZWxheSA9IFJFVFJZX1NUQVJUX0RFTEFZO1xuICAgICAgICAgICAgfSwgKGU6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzcG9zZWQgfHwgdGhpcy5pbml0UmV0cnlUaW1lcikgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFN0b3JhZ2UgaW5pdCBmYWlsZWQgZm9yICR7dGhpcy5jb25maWcuZGVidWdOYW1lKCl9LCByZXRyeWluZyBpbiAke01hdGgucm91bmQodGhpcy5pbml0UmV0cnlEZWxheSAvIDEwMDApfXMuICR7ZS5zdGFjayA/PyBlfWApO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdFJldHJ5VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0UmV0cnlUaW1lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGlzcG9zZWQpIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdGVQcm9taXNlID09PSBwcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlUHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFN0YXRlKCkuY2F0Y2goKCkgPT4geyB9KTtcbiAgICAgICAgICAgICAgICB9LCB0aGlzLmluaXRSZXRyeURlbGF5KTtcbiAgICAgICAgICAgICAgICAodGhpcy5pbml0UmV0cnlUaW1lciBhcyB7IHVucmVmPzogKCkgPT4gdm9pZCB9KS51bnJlZj8uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0UmV0cnlEZWxheSA9IE1hdGgubWluKFJFVFJZX01BWF9ERUxBWSwgdGhpcy5pbml0UmV0cnlEZWxheSAqIFJFVFJZX0dST1dUSCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZVByb21pc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBpbml0KCk6IFByb21pc2U8Q2hhaW5TdGF0ZT4ge1xuICAgICAgICBsZXQgY29uZmlncyA9IHRoaXMuY29uZmlndXJlZC5zb3VyY2VzLm1hcChub3JtYWxpemVTb3VyY2UpO1xuICAgICAgICBsZXQgcmVhZE9ubHkgPSB0aGlzLmlzUmVhZE9ubHkodGhpcy5jb25maWd1cmVkKTtcbiAgICAgICAgbGV0IHByb2JlcyA9IGF3YWl0IHByb2JlU291cmNlcyhjb25maWdzLCByZWFkT25seSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgeyBhY3RpdmUsIG5lZWRzV3JpdGUsIGV4aXN0aW5nIH0gPSBjaG9vc2VTdGFydHVwQ29uZmlnKHsgY29uZmlndXJlZDogdGhpcy5jb25maWd1cmVkLCBwcm9iZXMsIGRlYnVnTmFtZTogdGhpcy5jb25maWcuZGVidWdOYW1lKCkgfSk7XG4gICAgICAgICAgICBsZXQgc291cmNlcyA9IGF3YWl0IHRoaXMuYnVpbGRTb3VyY2VzKGFjdGl2ZSk7XG4gICAgICAgICAgICBsZXQgY29uZmlnV3JpdGVGYWlsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChuZWVkc1dyaXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFN0b3JhZ2Ugcm91dGluZyBjb25maWcgZm9yICR7dGhpcy5jb25maWcuZGVidWdOYW1lKCl9IGlzIG91dCBvZiBkYXRlIChzdG9yZWQgdmVyc2lvbiAke2V4aXN0aW5nICYmIGdldENvbmZpZ1ZlcnNpb24oZXhpc3RpbmcpIHx8IFwibm9uZVwifSwgb3VycyAke2dldENvbmZpZ1ZlcnNpb24odGhpcy5jb25maWd1cmVkKX0pYCk7XG4gICAgICAgICAgICAgICAgbGV0IHsgZmFpbHVyZXMsIHRvdGFsIH0gPSBhd2FpdCB3cml0ZVJvdXRpbmdUb0FsbFN0b3Jlcyh7IGNvbmZpZ3VyZWQ6IHRoaXMuY29uZmlndXJlZCwgc291cmNlcywgZGVidWdOYW1lOiB0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKSB9KTtcbiAgICAgICAgICAgICAgICBjb25maWdXcml0ZUZhaWxlZCA9IGZhaWx1cmVzLmxlbmd0aCA+IDA7XG4gICAgICAgICAgICAgICAgaWYgKGZhaWx1cmVzLmxlbmd0aCAmJiBmYWlsdXJlcy5sZW5ndGggPT09IHRvdGFsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vYm9keSBoYXMgb3VyIGNvbmZpZywgc28gcnVubmluZyBvbiBpdCB3b3VsZCBqdXN0IGRpc2FncmVlIHdpdGggZXZlcnkgc2VydmVyLiBUaGUgc3RvcmVkIG9uZSAod2hlbiB0aGVyZSBpcyBvbmUpIGlzIHdoYXQgdGhlIHNlcnZlcnMgYWN0dWFsbHkgcnVuLlxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBUaGUgc3RvcmFnZSByb3V0aW5nIGNvbmZpZyBmb3IgJHt0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKX0gKHZlcnNpb24gJHtnZXRDb25maWdWZXJzaW9uKHRoaXMuY29uZmlndXJlZCl9KSBjb3VsZCBub3QgYmUgd3JpdHRlbiB0byBBTlkgb2YgdGhlICR7dG90YWx9IHN0b3Jlcy4gJHtleGlzdGluZyAmJiBgUnVubmluZyBvbiB0aGUgc3RvcmVkIGNvbmZpZyAodmVyc2lvbiAke2dldENvbmZpZ1ZlcnNpb24oZXhpc3RpbmcpfSkgdW50aWwgYSB3cml0ZSBzdWNjZWVkcy5gIHx8IGBObyBzdG9yZWQgY29uZmlnIGV4aXN0cyBlaXRoZXIsIHNvIHNlcnZlcnMgd2lsbCByZWplY3Qgd3JpdGVzIHVudGlsIHRoaXMgc3VjY2VlZHMuYH0gUmV0cnlpbmcgaW4gJHtDT05GSUdfV1JJVEVfUkVUUllfSU5URVJWQUwgLyAxMDAwfXMuIEZhaWx1cmVzOiAke2ZhaWx1cmVzLmpvaW4oXCIgfCBcIil9YCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gZXhpc3Rpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5kaXNwb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzID0gYXdhaXQgdGhpcy5idWlsZFNvdXJjZXMoYWN0aXZlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmFpbHVyZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSBzdG9yYWdlIHJvdXRpbmcgY29uZmlnIGZvciAke3RoaXMuY29uZmlnLmRlYnVnTmFtZSgpfSAodmVyc2lvbiAke2dldENvbmZpZ1ZlcnNpb24odGhpcy5jb25maWd1cmVkKX0pIHdhcyB3cml0dGVuIHRvICR7dG90YWwgLSBmYWlsdXJlcy5sZW5ndGh9IG9mICR7dG90YWx9IHN0b3Jlcy4gUmV0cnlpbmcgdGhlIHJlc3QgaW4gJHtDT05GSUdfV1JJVEVfUkVUUllfSU5URVJWQUwgLyAxMDAwfXMgKHRoZXkgYWxzbyBwdWxsIGl0IGZyb20gdGhlIHN0b3JlcyB0aGF0IGhhdmUgaXQpLiBGYWlsdXJlczogJHtmYWlsdXJlcy5qb2luKFwiIHwgXCIpfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByb2JlID0gcHJvYmVzLmZpbmQoeCA9PiB4LnJlc3BvbmRlZCAmJiB4LnNvdXJjZUNvbmZpZy51cmwgPT09IHNvdXJjZS5jb25maWcudXJsKTtcbiAgICAgICAgICAgICAgICBpZiAocHJvYmUpIHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlLnNlZWRMYXRlbmN5KHByb2JlLmxhdGVuY3kpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQ29uZmlnID0gYWN0aXZlO1xuICAgICAgICAgICAgdGhpcy5zdGFydENvbmZpZ1BvbGwoKTtcbiAgICAgICAgICAgIGxldCBzdGF0ZTogQ2hhaW5TdGF0ZSA9IHsgY29uZmlnOiBhY3RpdmUsIHNvdXJjZXMgfTtcbiAgICAgICAgICAgIHRoaXMubGF0ZXN0U3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgICAgIHRoaXMucm91dGluZ1Jld3JpdGVyLnN0YXJ0KGNvbmZpZ1dyaXRlRmFpbGVkKTtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGRpc3Bvc2VQcm9iZXMocHJvYmVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDbGllbnRzaWRlLCBhIGNvbmZpZyB3aXRoIHB1YmxpYyBzb3VyY2VzIGlzIHNlcnZlZCBlbnRpcmVseSBvdmVyIHBsYWluIFVSTCBkb3dubG9hZHMgLSBubyBBUEkgY29ubmVjdGlvbiwgbm8gYWNjZXNzIGdyYW50LCBhbmQgbm8gd3JpdGluZy4gZGlyZWN0Q29ubmVjdCBvcHRzIG91dCBvZiB0aGF0LiAqL1xuICAgIHByaXZhdGUgaXNSZWFkT25seShjb25maWc6IFJlbW90ZUNvbmZpZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5jb25maWcuZGlyZWN0Q29ubmVjdCB8fCBpc05vZGUoKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gY29uZmlnLnNvdXJjZXMubWFwKG5vcm1hbGl6ZVNvdXJjZSkuc29tZSh4ID0+IHgucHVibGljKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNyZWF0ZUNoYWluU291cmNlKHNvdXJjZUNvbmZpZzogU291cmNlQ29uZmlnLCByZWFkT25seTogYm9vbGVhbik6IFByb21pc2U8U291cmNlV3JhcHBlcj4ge1xuICAgICAgICBsZXQgc291cmNlID0gYXdhaXQgU291cmNlV3JhcHBlci5jcmVhdGUoc291cmNlQ29uZmlnLCB7IHJlYWRPbmx5IH0pO1xuICAgICAgICBzb3VyY2Uuc3RhcnRQaW5naW5nKCk7XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBidWlsZFNvdXJjZXMoY29uZmlnOiBSZW1vdGVDb25maWcpOiBQcm9taXNlPFNvdXJjZVdyYXBwZXJbXT4ge1xuICAgICAgICBsZXQgcmVhZE9ubHkgPSB0aGlzLmlzUmVhZE9ubHkoY29uZmlnKTtcbiAgICAgICAgbGV0IHNvdXJjZXM6IFNvdXJjZVdyYXBwZXJbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBzb3VyY2VDb25maWcgb2YgY29uZmlnLnNvdXJjZXMubWFwKG5vcm1hbGl6ZVNvdXJjZSkpIHtcbiAgICAgICAgICAgIHNvdXJjZXMucHVzaChhd2FpdCB0aGlzLmNyZWF0ZUNoYWluU291cmNlKHNvdXJjZUNvbmZpZywgcmVhZE9ubHkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc291cmNlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0Q29uZmlnUG9sbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucG9sbFRpbWVyIHx8IHRoaXMuZGlzcG9zZWQpIHJldHVybjtcbiAgICAgICAgdGhpcy5wb2xsVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRoaXMucmVmcmVzaEFjdGl2ZUNvbmZpZygpLmNhdGNoKChlOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYENoZWNraW5nIGZvciBhIG5ldyBzdG9yYWdlIHJvdXRpbmcgY29uZmlnIGZhaWxlZCBmb3IgJHt0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKX06ICR7ZS5zdGFjayA/PyBlfWApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIENPTkZJR19QT0xMX0lOVEVSVkFMKTtcbiAgICAgICAgKHRoaXMucG9sbFRpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICB9XG5cbiAgICAvLyBEZWR1cGxpY2F0ZXMgY29uY3VycmVudCByZWZyZXNoZXMgKHRoZSBwb2xsIHRpbWVyIGFuZCB3cm9uZy10YXJnZXQgd3JpdGUgcmV0cmllcyBzaGFyZSB0aGlzKVxuICAgIHByaXZhdGUgY29uZmlnUmVmcmVzaEluRmxpZ2h0OiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuICAgIHB1YmxpYyByZWZyZXNoQWN0aXZlQ29uZmlnKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnUmVmcmVzaEluRmxpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZ1JlZnJlc2hJbkZsaWdodCA9IHRoaXMuY2hlY2tGb3JOZXdDb25maWcoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ1JlZnJlc2hJbkZsaWdodCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ1JlZnJlc2hJbkZsaWdodDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGZldGNoTGF0ZXN0Q29uZmlnKHN0YXRlOiBDaGFpblN0YXRlKTogUHJvbWlzZTxSZW1vdGVDb25maWcgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgbGV0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgc291cmNlIG9mIHN0YXRlLnNvdXJjZXMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbGV0IGxhdGVzdCA9IGF3YWl0IHNvdXJjZS5yZWFkUm91dGluZ0NvbmZpZygpO1xuICAgICAgICAgICAgICAgIGlmIChsYXRlc3QpIHJldHVybiBub3JtYWxpemVSZW1vdGVDb25maWcobGF0ZXN0KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChgJHtzb3VyY2UuY29uZmlnLnVybH06ICR7KGUgYXMgRXJyb3IpLnN0YWNrID8/IGV9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9ycy5sZW5ndGggPT09IHN0YXRlLnNvdXJjZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN0b3JhZ2Ugc291cmNlIGNvdWxkIGdpdmUgdXMgdGhlIHJvdXRpbmcgY29uZmlnIGZvciAke3RoaXMuY29uZmlnLmRlYnVnTmFtZSgpfTogJHtlcnJvcnMuam9pbihcIiB8IFwiKX1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tGb3JOZXdDb25maWcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmRpc3Bvc2VkIHx8ICF0aGlzLnN0YXRlUHJvbWlzZSkgcmV0dXJuO1xuICAgICAgICBsZXQgc3RhdGU6IENoYWluU3RhdGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGF3YWl0IHRoaXMuc3RhdGVQcm9taXNlO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbGF0ZXN0ID0gYXdhaXQgdGhpcy5mZXRjaExhdGVzdENvbmZpZyhzdGF0ZSk7XG4gICAgICAgIGlmICghbGF0ZXN0KSByZXR1cm47XG4gICAgICAgIGF3YWl0IHRoaXMuYWRvcHROZXdDb25maWcoc3RhdGUsIGxhdGVzdCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBhZG9wdE5ld0NvbmZpZyhzdGF0ZTogQ2hhaW5TdGF0ZSwgbGF0ZXN0OiBSZW1vdGVDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGxhdGVzdCkgPT09IEpTT04uc3RyaW5naWZ5KHN0YXRlLmNvbmZpZykpIHJldHVybjtcbiAgICAgICAgbGV0IHJlY2VpdmVkID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgICBsZXQgb25seUludGVybWVkaWF0ZXNDaGFuZ2VkID0gSlNPTi5zdHJpbmdpZnkocmVzb2x2ZUludGVybWVkaWF0ZVNvdXJjZXMobGF0ZXN0KSkgPT09IEpTT04uc3RyaW5naWZ5KHJlc29sdmVJbnRlcm1lZGlhdGVTb3VyY2VzKHN0YXRlLmNvbmZpZykpO1xuICAgICAgICBpZiAob25seUludGVybWVkaWF0ZXNDaGFuZ2VkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcmFnZSByb3V0aW5nIHN3aXRjaG92ZXIgd2luZG93cyBjaGFuZ2VkICh2ZXJzaW9uICR7Z2V0Q29uZmlnVmVyc2lvbihzdGF0ZS5jb25maWcpfSAtPiAke2dldENvbmZpZ1ZlcnNpb24obGF0ZXN0KX0pLCByZWNlaXZlZCAke3JlY2VpdmVkfSwgcmVidWlsZGluZyBzb3VyY2VzLiBOZXcgY29uZmlnOiAke0pTT04uc3RyaW5naWZ5KGxhdGVzdCl9YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcmFnZSByb3V0aW5nIGNvbmZpZyBjaGFuZ2VkICh2ZXJzaW9uICR7Z2V0Q29uZmlnVmVyc2lvbihzdGF0ZS5jb25maWcpfSAtPiAke2dldENvbmZpZ1ZlcnNpb24obGF0ZXN0KX0pLCByZWNlaXZlZCAke3JlY2VpdmVkfSwgcmVidWlsZGluZyBzb3VyY2VzLiBOZXcgY29uZmlnOiAke0pTT04uc3RyaW5naWZ5KGxhdGVzdCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHN0cmlwcGVkS2V5ID0gKGNvbmZpZzogU291cmNlQ29uZmlnKSA9PiBKU09OLnN0cmluZ2lmeSh7IC4uLmNvbmZpZywgdmFsaWRXaW5kb3c6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgbGV0IG9sZEJ5Q29uZmlnID0gbmV3IE1hcDxzdHJpbmcsIFNvdXJjZVdyYXBwZXJbXT4oKTtcbiAgICAgICAgZm9yIChsZXQgc291cmNlIG9mIHN0YXRlLnNvdXJjZXMpIHtcbiAgICAgICAgICAgIGxldCBrZXkgPSBzdHJpcHBlZEtleShzb3VyY2UuY29uZmlnKTtcbiAgICAgICAgICAgIGxldCBsaXN0ID0gb2xkQnlDb25maWcuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoIWxpc3QpIHtcbiAgICAgICAgICAgICAgICBsaXN0ID0gW107XG4gICAgICAgICAgICAgICAgb2xkQnlDb25maWcuc2V0KGtleSwgbGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsaXN0LnB1c2goc291cmNlKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVhZE9ubHkgPSB0aGlzLmlzUmVhZE9ubHkobGF0ZXN0KTtcbiAgICAgICAgbGV0IHNvdXJjZXM6IFNvdXJjZVdyYXBwZXJbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBzb3VyY2VDb25maWcgb2YgbGF0ZXN0LnNvdXJjZXMubWFwKG5vcm1hbGl6ZVNvdXJjZSkpIHtcbiAgICAgICAgICAgIGxldCBvbGQgPSBvbGRCeUNvbmZpZy5nZXQoc3RyaXBwZWRLZXkoc291cmNlQ29uZmlnKSk/LnNoaWZ0KCk7XG4gICAgICAgICAgICBpZiAob2xkKSB7XG4gICAgICAgICAgICAgICAgb2xkLnVwZGF0ZVZhbGlkV2luZG93KHNvdXJjZUNvbmZpZy52YWxpZFdpbmRvdyk7XG4gICAgICAgICAgICAgICAgc291cmNlcy5wdXNoKG9sZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNvdXJjZXMucHVzaChhd2FpdCB0aGlzLmNyZWF0ZUNoYWluU291cmNlKHNvdXJjZUNvbmZpZywgcmVhZE9ubHkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBsZWZ0b3ZlcnMgb2Ygb2xkQnlDb25maWcudmFsdWVzKCkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGxlZnRvdmVyIG9mIGxlZnRvdmVycykge1xuICAgICAgICAgICAgICAgIGxlZnRvdmVyLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2ZUNvbmZpZyA9IGxhdGVzdDtcbiAgICAgICAgbGV0IG5ld1N0YXRlOiBDaGFpblN0YXRlID0geyBjb25maWc6IGxhdGVzdCwgc291cmNlcyB9O1xuICAgICAgICB0aGlzLmxhdGVzdFN0YXRlID0gbmV3U3RhdGU7XG4gICAgICAgIHRoaXMuc3RhdGVQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKG5ld1N0YXRlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxhc3RBdmFpbGFiaWxpdHlSZWNoZWNrID0gMDtcbiAgICBwcml2YXRlIGF2YWlsYWJpbGl0eVJlY2hlY2tJbkZsaWdodDogUHJvbWlzZTx2b2lkPiB8IHVuZGVmaW5lZDtcbiAgICAvKiogRXZlcnkgc291cmNlIGZhaWxlZDogcmUtY29udGFjdCBhbGwgb2YgdGhlbSAocm91dGluZyByZS1yZWFkICsgY29ubmVjdGlvbiByZS1hdHRlbXB0KSBhbmQgYWRvcHQgd2hhdGV2ZXIgY29uZmlnIGNvbWVzIGJhY2suIFRocm90dGxlZCwgYW5kIGRlZHVwbGljYXRlZCBhY3Jvc3MgY29uY3VycmVudCBjYWxsZXJzLiAqL1xuICAgIHB1YmxpYyByZWNoZWNrQXZhaWxhYmlsaXR5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5hdmFpbGFiaWxpdHlSZWNoZWNrSW5GbGlnaHQpIHJldHVybiB0aGlzLmF2YWlsYWJpbGl0eVJlY2hlY2tJbkZsaWdodDtcbiAgICAgICAgaWYgKERhdGUubm93KCkgLSB0aGlzLmxhc3RBdmFpbGFiaWxpdHlSZWNoZWNrIDwgQVZBSUxBQklMSVRZX1JFQ0hFQ0tfVEhST1RUTEUpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgdGhpcy5sYXN0QXZhaWxhYmlsaXR5UmVjaGVjayA9IERhdGUubm93KCk7XG4gICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5UmVjaGVja0luRmxpZ2h0ID0gdGhpcy5yZWNoZWNrQXZhaWxhYmlsaXR5Tm93KCkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVJlY2hlY2tJbkZsaWdodCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzLmF2YWlsYWJpbGl0eVJlY2hlY2tJbkZsaWdodDtcbiAgICB9XG4gICAgcHJpdmF0ZSBhc3luYyByZWNoZWNrQXZhaWxhYmlsaXR5Tm93KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5kaXNwb3NlZCB8fCAhdGhpcy5zdGF0ZVByb21pc2UpIHJldHVybjtcbiAgICAgICAgbGV0IHN0YXRlOiBDaGFpblN0YXRlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc3RhdGUgPSBhd2FpdCB0aGlzLnN0YXRlUHJvbWlzZTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coYEV2ZXJ5IHN0b3JhZ2Ugc291cmNlIGZhaWxlZCBmb3IgJHt0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKX07IHJlLWNvbnRhY3RpbmcgYWxsICR7c3RhdGUuc291cmNlcy5sZW5ndGh9IHNvdXJjZXMgKHJvdXRpbmcgcmUtcmVhZCArIGNvbm5lY3Rpb24gcmUtYXR0ZW1wdClgKTtcbiAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChzdGF0ZS5zb3VyY2VzLm1hcChhc3luYyBzb3VyY2UgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgc291cmNlLnJlYWRSb3V0aW5nQ29uZmlnKCk7XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICAgIGxldCBsYXRlc3QgPSByZXN1bHRzLmZpbmQoeCA9PiB4KTtcbiAgICAgICAgaWYgKCFsYXRlc3QpIHJldHVybjtcbiAgICAgICAgYXdhaXQgdGhpcy5hZG9wdE5ld0NvbmZpZyhzdGF0ZSwgbGF0ZXN0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaXNwb3NlZCA9IHRydWU7XG4gICAgICAgIHRoaXMudW50cmFja0NvbmZpZygpO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlUm91dGluZ1B1c2g/LigpO1xuICAgICAgICBpZiAodGhpcy5wb2xsVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5wb2xsVGltZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluaXRSZXRyeVRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5pbml0UmV0cnlUaW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0aW5nUmV3cml0ZXIuZGlzcG9zZSgpO1xuICAgICAgICBsZXQgc3RhdGVQcm9taXNlID0gdGhpcy5zdGF0ZVByb21pc2U7XG4gICAgICAgIGlmIChzdGF0ZVByb21pc2UpIHtcbiAgICAgICAgICAgIHZvaWQgc3RhdGVQcm9taXNlLnRoZW4oc3RhdGUgPT4ge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBzdGF0ZS5zb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZS5kaXNwb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgKCkgPT4geyB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgU291cmNlUHJvYmUgPSB7XG4gICAgcHJvYmU6IFNvdXJjZVdyYXBwZXI7XG4gICAgc291cmNlQ29uZmlnOiBTb3VyY2VDb25maWc7XG4gICAgcmVzcG9uZGVkOiBib29sZWFuO1xuICAgIGxhdGVuY3k6IG51bWJlcjtcbiAgICBleGlzdGluZzogUmVtb3RlQ29uZmlnIHwgdW5kZWZpbmVkO1xuICAgIGVycm9yOiBzdHJpbmc7XG59O1xuXG4vKiogT25lIHRocm93YXdheSBTb3VyY2VXcmFwcGVyIHBlciBjb25maWd1cmVkIHNvdXJjZSwgZWFjaCBhc2tlZCBmb3IgaXRzIHN0b3JlZCByb3V0aW5nIGNvbmZpZyAtIHdoaWNoIGFsc28gbWVhc3VyZXMgZmlyc3QtY29udGFjdCBsYXRlbmN5LCBzZWVkZWQgaW50byB0aGUgcmVhbCBzb3VyY2VzIGFmdGVyd2FyZHMuIFRoZSBwcm9iZXMgTVVTVCBiZSBkaXNwb3NlZCAoZGlzcG9zZVByb2Jlcykgb25jZSB0aGUgY2FsbGVyIGlzIGRvbmUgd2l0aCB0aGVtLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2JlU291cmNlcyhjb25maWdzOiBTb3VyY2VDb25maWdbXSwgcmVhZE9ubHk6IGJvb2xlYW4pOiBQcm9taXNlPFNvdXJjZVByb2JlW10+IHtcbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoY29uZmlncy5tYXAoYXN5bmMgc291cmNlQ29uZmlnID0+IHtcbiAgICAgICAgbGV0IHByb2JlID0gYXdhaXQgU291cmNlV3JhcHBlci5jcmVhdGUoc291cmNlQ29uZmlnLCB7IGJhY2tncm91bmQ6IGZhbHNlLCByZWFkT25seSB9KTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBleGlzdGluZyA9IGF3YWl0IHByb2JlLnJlYWRSb3V0aW5nQ29uZmlnKCk7XG4gICAgICAgICAgICByZXR1cm4geyBwcm9iZSwgc291cmNlQ29uZmlnLCByZXNwb25kZWQ6IHRydWUsIGxhdGVuY3k6IERhdGUubm93KCkgLSBzdGFydCwgZXhpc3RpbmcsIGVycm9yOiBcIlwiIH07XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiB7IHByb2JlLCBzb3VyY2VDb25maWcsIHJlc3BvbmRlZDogZmFsc2UsIGxhdGVuY3k6IDAsIGV4aXN0aW5nOiB1bmRlZmluZWQsIGVycm9yOiBgJHtzb3VyY2VDb25maWcudXJsfTogJHsoZSBhcyBFcnJvcikuc3RhY2sgPz8gZX1gIH07XG4gICAgICAgIH1cbiAgICB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwb3NlUHJvYmVzKHByb2JlczogU291cmNlUHJvYmVbXSk6IHZvaWQge1xuICAgIGZvciAobGV0IHByb2JlIG9mIHByb2Jlcykge1xuICAgICAgICBwcm9iZS5wcm9iZS5kaXNwb3NlKCk7XG4gICAgfVxufVxuXG4vKipcbiAqIFdoaWNoIHJvdXRpbmcgY29uZmlnIHRoZSBjaGFpbiBzaG91bGQgUlVOOiB0aGUgbmV3ZXN0IG9mIG91cnMgYW5kIGV2ZXJ5IHN0b3JlZCBvbmUuIG5lZWRzV3JpdGVcbiAqIHdoZW4gb3VycyBpcyBzdHJpY3RseSB0aGUgbmV3ZXN0LCBtZWFuaW5nIHRoZSBzdG9yZXMgaGF2ZSB0byBiZSB0b2xkIGFib3V0IGl0LiBBIHN0b3JlZCBjb25maWdcbiAqIHdpdGggb3VyIGV4YWN0IHZlcnNpb24gYnV0IERJRkZFUkVOVCBjb250ZW50IHdpbnMgd2l0aG91dCBhIHdyaXRlLCBsb3VkbHk6IGNvbmZpZyB1cGRhdGVzIG11c3RcbiAqIGJ1bXAgdGhlIHZlcnNpb24sIG9yIHRoZXkgYXJlIGlnbm9yZWQgLSBzaWxlbnRseSB0YWtpbmcgdGhlIGNoYW5nZWQgb25lIHdvdWxkIG1ha2UgXCJ3aGF0IGlzIHRoZVxuICogYnVja2V0IHJ1bm5pbmdcIiBkZXBlbmQgb24gd2hpY2ggcHJvY2VzcyBzdGFydGVkIGxhc3QuXG4gKlxuICogVGhyb3dzIHdoZW4gbm8gc291cmNlIGFuc3dlcmVkIGF0IGFsbDogd2l0aCBub3RoaW5nIHN0b3JlZCBhbmQgbm9ib2R5IHRvIHdyaXRlIHRvLCB0aGVyZSBpcyBub1xuICogY29uZmlnIHRvIHJ1bi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNob29zZVN0YXJ0dXBDb25maWcoY29uZmlnOiB7IGNvbmZpZ3VyZWQ6IFJlbW90ZUNvbmZpZzsgcHJvYmVzOiBTb3VyY2VQcm9iZVtdOyBkZWJ1Z05hbWU6IHN0cmluZyB9KTogeyBhY3RpdmU6IFJlbW90ZUNvbmZpZzsgbmVlZHNXcml0ZTogYm9vbGVhbjsgZXhpc3Rpbmc6IFJlbW90ZUNvbmZpZyB8IHVuZGVmaW5lZCB9IHtcbiAgICBsZXQgeyBjb25maWd1cmVkLCBwcm9iZXMsIGRlYnVnTmFtZSB9ID0gY29uZmlnO1xuICAgIGxldCBmb3VuZCA9IHByb2Jlcy5maW5kKHggPT4geC5yZXNwb25kZWQpO1xuICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgaW5pdGlhbGl6ZSBzdG9yYWdlIGZvciAke2RlYnVnTmFtZX06IG5vIHNvdXJjZSBhbnN3ZXJlZC4gJHtwcm9iZXMubWFwKHggPT4geC5lcnJvcikuam9pbihcIiB8IFwiKX1gKTtcbiAgICB9XG4gICAgbGV0IGV4aXN0aW5nID0gZm91bmQuZXhpc3Rpbmc7XG4gICAgbGV0IGFjdGl2ZSA9IGNvbmZpZ3VyZWQ7XG4gICAgbGV0IG5lZWRzV3JpdGUgPSB0cnVlO1xuICAgIGlmIChleGlzdGluZyAmJiBnZXRDb25maWdWZXJzaW9uKGV4aXN0aW5nKSA+PSBnZXRDb25maWdWZXJzaW9uKGNvbmZpZ3VyZWQpKSB7XG4gICAgICAgIGlmIChnZXRDb25maWdWZXJzaW9uKGV4aXN0aW5nKSA9PT0gZ2V0Q29uZmlnVmVyc2lvbihjb25maWd1cmVkKSAmJiBKU09OLnN0cmluZ2lmeShleGlzdGluZykgIT09IEpTT04uc3RyaW5naWZ5KGNvbmZpZ3VyZWQpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBBcmNoaXZlcyBjb25maWd1cmF0aW9uIHVwZGF0ZWQgd2l0aG91dCB1cGRhdGluZyB0aGUgdmVyc2lvbiwgZm9yICR7Zm91bmQuc291cmNlQ29uZmlnLnVybH0uIFVwZGF0ZXMgd2lsbCBiZSBpZ25vcmVkIHVudGlsIHlvdSBpbmNyZWFzZSB0aGUgdmVyc2lvbi4gVXNpbmc6ICR7SlNPTi5zdHJpbmdpZnkoZXhpc3RpbmcpfSwgaWdub3Jpbmc6ICR7SlNPTi5zdHJpbmdpZnkoY29uZmlndXJlZCl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYWN0aXZlID0gZXhpc3Rpbmc7XG4gICAgICAgIG5lZWRzV3JpdGUgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG5lZWRzV3JpdGUpIHtcbiAgICAgICAgbGV0IGJlc3Q6IFJlbW90ZUNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGNvbmZsaWN0VXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAobGV0IHByb2JlIG9mIHByb2Jlcykge1xuICAgICAgICAgICAgbGV0IHN0b3JlZCA9IHByb2JlLmV4aXN0aW5nO1xuICAgICAgICAgICAgaWYgKCFzdG9yZWQpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCFiZXN0IHx8IGdldENvbmZpZ1ZlcnNpb24oc3RvcmVkKSA+IGdldENvbmZpZ1ZlcnNpb24oYmVzdCkpIHtcbiAgICAgICAgICAgICAgICBiZXN0ID0gc3RvcmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGdldENvbmZpZ1ZlcnNpb24oc3RvcmVkKSA9PT0gZ2V0Q29uZmlnVmVyc2lvbihjb25maWd1cmVkKSAmJiBKU09OLnN0cmluZ2lmeShzdG9yZWQpICE9PSBKU09OLnN0cmluZ2lmeShjb25maWd1cmVkKSkge1xuICAgICAgICAgICAgICAgIGNvbmZsaWN0VXJsID0gcHJvYmUuc291cmNlQ29uZmlnLnVybDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoYmVzdCAmJiBnZXRDb25maWdWZXJzaW9uKGJlc3QpID49IGdldENvbmZpZ1ZlcnNpb24oY29uZmlndXJlZCkpIHtcbiAgICAgICAgICAgIGlmIChjb25mbGljdFVybCAmJiBnZXRDb25maWdWZXJzaW9uKGJlc3QpID09PSBnZXRDb25maWdWZXJzaW9uKGNvbmZpZ3VyZWQpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQXJjaGl2ZXMgY29uZmlndXJhdGlvbiB1cGRhdGVkIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHZlcnNpb24sIGZvciAke2NvbmZsaWN0VXJsfS4gVXBkYXRlcyB3aWxsIGJlIGlnbm9yZWQgdW50aWwgeW91IGluY3JlYXNlIHRoZSB2ZXJzaW9uLiBVc2luZzogJHtKU09OLnN0cmluZ2lmeShiZXN0KX0sIGlnbm9yaW5nOiAke0pTT04uc3RyaW5naWZ5KGNvbmZpZ3VyZWQpfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlID0gYmVzdDtcbiAgICAgICAgICAgIG5lZWRzV3JpdGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBhY3RpdmUsIG5lZWRzV3JpdGUsIGV4aXN0aW5nIH07XG59XG5cbi8qKlxuICogV3JpdGVzIHRoZSBnaXZlbiByb3V0aW5nIGNvbmZpZyB0byBldmVyeSBjb25maWd1cmVkIHN0b3JlLCBvbmUgd3JpdGUgcGVyIHVybCtuYW1lOiB0aGUgd3JpdGVcbiAqIGxhbmRzIGluIHRoZSBzdG9yZSB0aGUgZW50cnkgTkFNRVMsIHNvIHR3byBlbnRyaWVzIHNoYXJpbmcgYSBVUkwgYnV0IG5hbWluZyBkaWZmZXJlbnQgc3RvcmVzIGFyZVxuICogdHdvIHNlcGFyYXRlIGRlbGl2ZXJpZXMgLSBkZWR1cGluZyBieSBVUkwgYWxvbmUgbGVhdmVzIHRoZSBzZWNvbmQgc3RvcmUgdW5jb25maWd1cmVkIGZvcmV2ZXIuIEFsbFxuICogaW4gcGFyYWxsZWwsIGV2ZXJ5IGZhaWx1cmUgdG9sZXJhdGVkIChuby13cml0ZS1hY2Nlc3MgaW5jbHVkZWQgLSB0aGUgYXR0ZW1wdCBjbGFzc2lmaWVzIGl0LFxuICogbm90aGluZyBwcmUtY2hlY2tzIGl0KTogYSBkb3duIG5vZGUgbXVzdCBub3Qgc3RvcCB0aGUgb3RoZXJzIGZyb20gZ2V0dGluZyB0aGUgY29uZmlnIC0gdGhleSB3b3VsZFxuICogdGhlbiByZWplY3Qgd3JpdGVzIGFzIHVuY29uZmlndXJlZCBwcmVjaXNlbHkgQkVDQVVTRSBpdCBuZXZlciBhcnJpdmVkIC0gYW5kIGl0IG11c3QgbmV2ZXIgc3RvcFxuICogdGhlIGNoYWluIGZyb20gc3RhcnRpbmcuIEEgc3RvcmUgdGhhdCBtaXNzZWQgaXQgcHVsbHMgaXQgb2ZmIGl0cyBwZWVycywgYW5kIHRoZSByZXdyaXRlIGxvb3BcbiAqIHRyaWVzIGFnYWluIChzZWUgUm91dGluZ1Jld3JpdGVMb29wKS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUm91dGluZ1RvQWxsU3RvcmVzKGNvbmZpZzogeyBjb25maWd1cmVkOiBSZW1vdGVDb25maWc7IHNvdXJjZXM6IFNvdXJjZVdyYXBwZXJbXTsgZGVidWdOYW1lOiBzdHJpbmcgfSk6IFByb21pc2U8eyBmYWlsdXJlczogc3RyaW5nW107IHRvdGFsOiBudW1iZXIgfT4ge1xuICAgIGxldCB7IGNvbmZpZ3VyZWQsIHNvdXJjZXMsIGRlYnVnTmFtZSB9ID0gY29uZmlnO1xuICAgIGxldCByb3V0aW5nRGF0YSA9IHNlcmlhbGl6ZVJlbW90ZUNvbmZpZyhjb25maWd1cmVkKTtcbiAgICBsZXQgcm91dGluZ1dyaXRlVGltZSA9IERhdGUubm93KCk7XG4gICAgbGV0IHRhcmdldHM6IFNvdXJjZVdyYXBwZXJbXSA9IFtdO1xuICAgIGxldCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChsZXQgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgICAgbGV0IGtleSA9IGAke3NvdXJjZS5jb25maWcudXJsfXwke3NvdXJjZS5jb25maWcubmFtZX1gO1xuICAgICAgICBpZiAoc2Vlbi5oYXMoa2V5KSkgY29udGludWU7XG4gICAgICAgIHNlZW4uYWRkKGtleSk7XG4gICAgICAgIHRhcmdldHMucHVzaChzb3VyY2UpO1xuICAgIH1cbiAgICBjb25zb2xlLmxvZyhgV3JpdGluZyByb3V0aW5nIGNvbmZpZyB2ZXJzaW9uICR7Z2V0Q29uZmlnVmVyc2lvbihjb25maWd1cmVkKX0gZm9yICR7ZGVidWdOYW1lfSB0byBhbGwgJHt0YXJnZXRzLmxlbmd0aH0gc3RvcmVzICh3cml0ZSB0aW1lICR7bmV3IERhdGUocm91dGluZ1dyaXRlVGltZSkudG9JU09TdHJpbmcoKX0pOiAke3RhcmdldHMubWFwKHggPT4gYCR7eC5jb25maWcudXJsfSAoc3RvcmUgJHtKU09OLnN0cmluZ2lmeSh4LmNvbmZpZy5uYW1lKX0pYCkuam9pbihcIiwgXCIpfWApO1xuICAgIGxldCBmYWlsdXJlczogc3RyaW5nW10gPSBbXTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0YXJnZXRzLm1hcChhc3luYyBzb3VyY2UgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgc291cmNlLndyaXRlKGFyY2hpdmVzID0+IGFyY2hpdmVzLnNldChST1VUSU5HX0ZJTEUsIHJvdXRpbmdEYXRhLCB7IGxhc3RNb2RpZmllZDogcm91dGluZ1dyaXRlVGltZSB9KSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgV3JvdGUgc3RvcmFnZSByb3V0aW5nIGNvbmZpZyB2ZXJzaW9uICR7Z2V0Q29uZmlnVmVyc2lvbihjb25maWd1cmVkKX0gdG8gJHtzb3VyY2UuY29uZmlnLnVybH0gKHN0b3JlICR7SlNPTi5zdHJpbmdpZnkoc291cmNlLmNvbmZpZy5uYW1lKX0pYCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGZhaWx1cmVzLnB1c2goYCR7c291cmNlLmNvbmZpZy51cmx9IChzdG9yZSAke0pTT04uc3RyaW5naWZ5KHNvdXJjZS5jb25maWcubmFtZSl9KTogJHsoZSBhcyBFcnJvcikuc3RhY2sgPz8gZX1gKTtcbiAgICAgICAgfVxuICAgIH0pKTtcbiAgICByZXR1cm4geyBmYWlsdXJlcywgdG90YWw6IHRhcmdldHMubGVuZ3RoIH07XG59XG5cbi8qKlxuICogVGhlIHBlcmlvZGljIHJlLXdyaXRlIG9mIHRoZSBjaGFpbidzIGluLWNvZGUgY29uZmlnOiBmYWlsdXJlcyByZXRyaWVkIG9uIHRoZSBzaG9ydCBpbnRlcnZhbCAtIGFcbiAqIHN0b3JlIHdpdGhvdXQgdGhlIGNvbmZpZyByZWplY3RzIGV2ZXJ5IHdyaXRlIGFpbWVkIGF0IGl0LCBzbyB0aGlzIG5vdCBsYW5kaW5nIGlzIGEgYmlnIGRlYWwsXG4gKiBsb2dnZWQgb24gZXZlcnkgYXR0ZW1wdCAtIGFuZCBldmVuIHN1Y2Nlc3MgcmVwZWF0ZWQgaG91cmx5LCBpbiBjYXNlIGEgc3RvcmUgbG9zdCBpdC4gVGhlIGZhaWx1cmVcbiAqIHRoaXMgZXhpc3RzIGZvcjogYSBzZXJ2ZXIgd2hvc2UgdHJ1c3Qgd2FzIG9ubHkgZ3JhbnRlZCBBRlRFUiBzdGFydHVwLCBzbyB0aGUgc3RhcnR1cCB3cml0ZSB3YXNcbiAqIHJlamVjdGVkIGFuZCBub3RoaW5nIGVsc2Ugd291bGQgZXZlciByZXRyeSBpdC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvdXRpbmdSZXdyaXRlTG9vcCB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IHtcbiAgICAgICAgY29uZmlndXJlZDogUmVtb3RlQ29uZmlnO1xuICAgICAgICBkZWJ1Z05hbWU6ICgpID0+IHN0cmluZztcbiAgICAgICAgLyoqIFRoZSBjaGFpbidzIG5ld2VzdCBhZG9wdGVkIHN0YXRlOiB3aGF0IGRlY2lkZXMgd2hldGhlciBvdXJzIGlzIHN0aWxsIHRoZSBjb25maWcgdG8gd3JpdGUsIGFuZCB0aGUgc291cmNlcyBpdCBpcyB3cml0dGVuIHRocm91Z2guIFVuZGVmaW5lZCB1bnRpbCB0aGUgZmlyc3QgaW5pdCBmaW5pc2hlcy4gKi9cbiAgICAgICAgbGF0ZXN0OiAoKSA9PiB7IGNvbmZpZzogUmVtb3RlQ29uZmlnOyBzb3VyY2VzOiBTb3VyY2VXcmFwcGVyW10gfSB8IHVuZGVmaW5lZDtcbiAgICB9KSB7IH1cblxuICAgIHByaXZhdGUgdGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgZGlzcG9zZWQgPSBmYWxzZTtcblxuICAgIC8qKiAoUmUpYXJtcyB0aGUgbG9vcCAtIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGluaXQsIHdpdGggd2hldGhlciB0aGF0IGluaXQncyB3cml0ZSBmYWlsZWQgKHdoaWNoIHBpY2tzIHRoZSBzaG9ydCByZXRyeSBpbnRlcnZhbCkuICovXG4gICAgcHVibGljIHN0YXJ0KGZhaWxlZEF0U3RhcnR1cDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnNjaGVkdWxlKGZhaWxlZEF0U3RhcnR1cCAmJiBDT05GSUdfV1JJVEVfUkVUUllfSU5URVJWQUwgfHwgQ09ORklHX1dSSVRFX1JFRlJFU0hfSU5URVJWQUwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc3Bvc2VkID0gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2NoZWR1bGUoZGVsYXk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGltZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB2b2lkIHRoaXMucmV3cml0ZSgpLmNhdGNoKChlOiBFcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFJld3JpdGluZyB0aGUgc3RvcmFnZSByb3V0aW5nIGNvbmZpZyBmb3IgJHt0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKX0gZmFpbGVkOiAke2Uuc3RhY2sgPz8gZX1gKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNjaGVkdWxlKENPTkZJR19XUklURV9SRVRSWV9JTlRFUlZBTCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZGVsYXkpO1xuICAgICAgICAodGhpcy50aW1lciBhcyB7IHVucmVmPzogKCkgPT4gdm9pZCB9KS51bnJlZj8uKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyByZXdyaXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5kaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgICBsZXQgY29uZmlndXJlZCA9IHRoaXMuY29uZmlnLmNvbmZpZ3VyZWQ7XG4gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY29uZmlnLmxhdGVzdCgpO1xuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlKENPTkZJR19XUklURV9SRVRSWV9JTlRFUlZBTCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlIGJ1Y2tldCBhZG9wdGVkIGEgTkVXRVIgY29uZmlnIHRoYW4gb3VyIGluLWNvZGUgb25lLCBzbyBvdXJzIGlzIHN0YWxlIGFuZCBldmVyeSBzdG9yZSB3b3VsZCAocmlnaHRseSkgcmVmdXNlIGl0XG4gICAgICAgIGlmIChnZXRDb25maWdWZXJzaW9uKHN0YXRlLmNvbmZpZykgPiBnZXRDb25maWdWZXJzaW9uKGNvbmZpZ3VyZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlKENPTkZJR19XUklURV9SRUZSRVNIX0lOVEVSVkFMKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBTYW1lIHZlcnNpb24gYnV0IGRpZmZlcmVudCBjb250ZW50OiBzdGFydHVwIGFscmVhZHkgZGVjaWRlZCB0aGUgc3RvcmVkIG9uZSB3aW5zIHVudGlsIHRoZSB2ZXJzaW9uIGlzIGJ1bXBlZCAoc2VlIGNob29zZVN0YXJ0dXBDb25maWcpLCBhbmQgcmUtd3JpdGluZyBvdXJzIHdvdWxkIGZsaXAgdGhlIGJ1Y2tldCBiYWNrIGFuZCBmb3J0aCBiZXR3ZWVuIHRoZSB0d29cbiAgICAgICAgaWYgKGdldENvbmZpZ1ZlcnNpb24oc3RhdGUuY29uZmlnKSA9PT0gZ2V0Q29uZmlnVmVyc2lvbihjb25maWd1cmVkKSAmJiBKU09OLnN0cmluZ2lmeShzdGF0ZS5jb25maWcpICE9PSBKU09OLnN0cmluZ2lmeShjb25maWd1cmVkKSkge1xuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZShDT05GSUdfV1JJVEVfUkVGUkVTSF9JTlRFUlZBTCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgZmFpbHVyZXMsIHRvdGFsIH0gPSBhd2FpdCB3cml0ZVJvdXRpbmdUb0FsbFN0b3Jlcyh7IGNvbmZpZ3VyZWQsIHNvdXJjZXM6IHN0YXRlLnNvdXJjZXMsIGRlYnVnTmFtZTogdGhpcy5jb25maWcuZGVidWdOYW1lKCkgfSk7XG4gICAgICAgIGlmIChmYWlsdXJlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSBwZXJpb2RpYyByb3V0aW5nIGNvbmZpZyB3cml0ZSBmb3IgJHt0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKX0gKHZlcnNpb24gJHtnZXRDb25maWdWZXJzaW9uKGNvbmZpZ3VyZWQpfSkgZmFpbGVkIG9uICR7ZmFpbHVyZXMubGVuZ3RofSBvZiAke3RvdGFsfSBzdG9yZXMgLSByZXRyeWluZyBpbiAke0NPTkZJR19XUklURV9SRVRSWV9JTlRFUlZBTCAvIDEwMDB9czogJHtmYWlsdXJlcy5qb2luKFwiIHwgXCIpfWApO1xuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZShDT05GSUdfV1JJVEVfUkVUUllfSU5URVJWQUwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2NoZWR1bGUoQ09ORklHX1dSSVRFX1JFRlJFU0hfSU5URVJWQUwpO1xuICAgIH1cbn1cbiJdfQ==
469
- /* _JS_SOURCE_HASH = "f40778515e01d00fb83418e599ab7966c9d23b7a22c5897fa8c5b594a0e9705d"; */
468
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5TdGFydHVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2hhaW5TdGFydHVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFrRDtBQUVsRCxpREFBK0g7QUFDL0gsbURBQWtHO0FBQ2xHLCtEQUFtRTtBQUNuRSx1RUFBcUY7QUFFckYsNGRBQTRkO0FBRTVkLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDM0MsTUFBTSw2QkFBNkIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQy9DLHNOQUFzTjtBQUN6TSxRQUFBLDJCQUEyQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3pELGdIQUFnSDtBQUNuRyxRQUFBLDZCQUE2QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBTzVELG1PQUFtTztBQUNuTyxNQUFhLGlCQUFpQjtJQWMxQixZQUFvQixNQUtuQjtRQUxtQixXQUFNLEdBQU4sTUFBTSxDQUt6QjtRQVpPLG1CQUFjLEdBQUcsaUNBQWlCLENBQUM7UUFHbkMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQXNOakIsNEJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBNU1oQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQztZQUMxQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVztTQUNqQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBQSxnREFBc0IsRUFBQyxHQUFHLEVBQUU7WUFDdEQsS0FBSyxJ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SUFBSSxDQUFDLFFBQVEsQ0FBQyxxQ0FBNkIsQ0FBQyxDQUFDO1lBQzdDLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLHVCQUF1QixDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwSSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLHlDQUF5QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxhQUFhLElBQUEsK0JBQWdCLEVBQUMsVUFBVSxDQUFDLGVBQWUsUUFBUSxDQUFDLE1BQU0sT0FBTyxLQUFLLHlCQUF5QixtQ0FBMkIsR0FBRyxJQUFJLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMVAsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQ0FBMkIsQ0FBQyxDQUFDO1lBQzNDLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQ0FBNkIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDSjtBQWhFRCxnREFnRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc05vZGUgfSBmcm9tIFwic29ja2V0LWZ1bmN0aW9uL3NyYy9taXNjXCI7XG5pbXBvcnQgeyBSZW1vdGVDb25maWcsIFNvdXJjZUNvbmZpZyB9IGZyb20gXCIuLi9JQXJjaGl2ZXNcIjtcbmltcG9ydCB7IFJPVVRJTkdfRklMRSwgZ2V0Q29uZmlnVmVyc2lvbiwgc2VyaWFsaXplUmVtb3RlQ29uZmlnLCBub3JtYWxpemVSZW1vdGVDb25maWcsIG5vcm1hbGl6ZVNvdXJjZSB9IGZyb20gXCIuL3JlbW90ZUNvbmZpZ1wiO1xuaW1wb3J0IHsgU291cmNlV3JhcHBlciwgUkVUUllfU1RBUlRfREVMQVksIFJFVFJZX01BWF9ERUxBWSwgUkVUUllfR1JPV1RIIH0gZnJvbSBcIi4vc291cmNlV3JhcHBlclwiO1xuaW1wb3J0IHsgcmVzb2x2ZUludGVybWVkaWF0ZVNvdXJjZXMgfSBmcm9tIFwiLi9pbnRlcm1lZGlhdGVTb3VyY2VzXCI7XG5pbXBvcnQgeyBvblNlcnZlclJvdXRpbmdDaGFuZ2VkLCB0cmFja0NoYWluQ29uZmlnIH0gZnJvbSBcIi4vc3RvcmFnZUNsaWVudENvbnRyb2xsZXJcIjtcblxuLy8gVGhlIExJRkVDWUNMRSBvZiBhbiBBcmNoaXZlc0NoYWluJ3Mgc3RhdGUsIGFuZCBub3RoaW5nIGVsc2U6IGluaXRpYWxpemluZyBpdCAocHJvYmluZyBldmVyeSBjb25maWd1cmVkIHNvdXJjZSwgZGVjaWRpbmcgd2hpY2ggcm91dGluZyBjb25maWcgdG8gcnVuLCB3cml0aW5nIG91cnMgb3V0IHdoZW4gaXQgaXMgdGhlIG5ld2VzdCksIHRoZSByZXRyeSB3aGVuIGluaXRpYWxpemF0aW9uIGZhaWxzLCB0aGUgcG9sbCB0aGF0IGFkb3B0cyBuZXdlciBjb25maWdzLCB0aGUgYXZhaWxhYmlsaXR5IHJlY2hlY2ssIGFuZCB0aGUgbG9vcCB0aGF0IGtlZXBzIHJlLXdyaXRpbmcgb3VyIGNvbmZpZy4gTm9uZSBvZiB0aGlzIGlzIHJlcXVlc3QgZGlzcGF0Y2ggLSB0aGUgY2hhaW4gKGNyZWF0ZUFyY2hpdmVzLnRzKSBhc2tzIHRoZSBDaGFpblN0YXRlTWFuYWdlciBmb3IgdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGRpc3BhdGNoZXMgb3ZlciBpdC5cblxuY29uc3QgQ09ORklHX1BPTExfSU5URVJWQUwgPSA1ICogNjAgKiAxMDAwO1xuY29uc3QgQVZBSUxBQklMSVRZX1JFQ0hFQ0tfVEhST1RUTEUgPSA1ICogMTAwMDtcbi8vIFRoZSByb3V0aW5nIGNvbmZpZyB3cml0ZSBpcyByZXRyaWVkIG9uIHRoaXMgY2FkZW5jZSB3aGlsZSBpdCBpcyBmYWlsaW5nLiBBIHN0b3JlIHRoYXQgbmV2ZXIgcmVjZWl2ZWQgdGhlIGNvbmZpZyByZWplY3RzIGV2ZXJ5IHdyaXRlIGFpbWVkIGF0IGl0LCBzbyB0aGlzIG5vdCBsYW5kaW5nIGlzIGEgYmlnIGRlYWwgLSBlYWNoIGZhaWxlZCBhdHRlbXB0IGlzIGxvZ2dlZC5cbmV4cG9ydCBjb25zdCBDT05GSUdfV1JJVEVfUkVUUllfSU5URVJWQUwgPSA1ICogNjAgKiAxMDAwO1xuLy8gLi4uYW5kIGV2ZW4gYWZ0ZXIgc3VjY2VzcyBpdCBpcyByZS13cml0dGVuIG9uIHRoaXMgY2FkZW5jZSwgaW4gY2FzZSBhIHN0b3JlIGxvc3QgaXQgb3IgYSBzZXJ2ZXIgYXBwZWFyZWQgbGF0ZVxuZXhwb3J0IGNvbnN0IENPTkZJR19XUklURV9SRUZSRVNIX0lOVEVSVkFMID0gNjAgKiA2MCAqIDEwMDA7XG5cbmV4cG9ydCB0eXBlIENoYWluU3RhdGUgPSB7XG4gICAgY29uZmlnOiBSZW1vdGVDb25maWc7XG4gICAgc291cmNlczogU291cmNlV3JhcHBlcltdO1xufTtcblxuLyoqIFRoZSBjaGFpbidzIHN0YXRlIGFuZCBldmVyeXRoaW5nIGFib3V0IEhBVklORyBvbmU6IGluaXQgKHdpdGggaXRzIHJldHJ5KSwgdGhlIGNvbmZpZyBwb2xsLCBhdmFpbGFiaWxpdHkgcmVjaGVja3MsIGFuZCB0aGUgcm91dGluZyByZXdyaXRlIGxvb3AuIFRoZSBjaGFpbiBjb25zdHJ1Y3RzIG9uZSwgYXNrcyBpdCBnZXRTdGF0ZSgpIG9uIGV2ZXJ5IGNhbGwsIGFuZCBkaXNwb3NlcyBpdC4gKi9cbmV4cG9ydCBjbGFzcyBDaGFpblN0YXRlTWFuYWdlciB7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZ3VyZWQ6IFJlbW90ZUNvbmZpZztcbiAgICAvKiogVGhlIG5ld2VzdCBhZG9wdGVkIGNvbmZpZyAtIHdoYXQgZ2V0RGVidWdOYW1lIGFuZCBkaXNwYXRjaCBkZWNpc2lvbnMgcmVhZC4gU3RhcnRzIGFzIHRoZSBjb25maWd1cmVkIG9uZSBhbmQgbW92ZXMgd2l0aCBldmVyeSBhZG9wdGlvbi4gKi9cbiAgICBwdWJsaWMgYWN0aXZlQ29uZmlnOiBSZW1vdGVDb25maWc7XG4gICAgcHJpdmF0ZSBzdGF0ZVByb21pc2U6IFByb21pc2U8Q2hhaW5TdGF0ZT4gfCB1bmRlZmluZWQ7XG4gICAgLy8gVGhlIHJlc29sdmVkIHN0YXRlLCBmb3Igc3luY2hyb25vdXMgYWNjZXNzIChnZXRHZXRVUkxzKSAtIGFsd2F5cyB0aGUgbmV3ZXN0IGFkb3B0ZWQgY29uZmlnLCB3aGVyZSBzdGF0ZVByb21pc2UgbWF5IGJyaWVmbHkgbGFnIGR1cmluZyBhIHJlYnVpbGRcbiAgICBwcml2YXRlIGxhdGVzdFN0YXRlOiBDaGFpblN0YXRlIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgaW5pdFJldHJ5RGVsYXkgPSBSRVRSWV9TVEFSVF9ERUxBWTtcbiAgICBwcml2YXRlIGluaXRSZXRyeVRpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIHBvbGxUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+IHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgZGlzcG9zZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHVuc3Vic2NyaWJlUm91dGluZ1B1c2g6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIHJvdXRpbmdSZXdyaXRlcjogUm91dGluZ1Jld3JpdGVMb29wO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IHtcbiAgICAgICAgY29uZmlndXJlZDogUmVtb3RlQ29uZmlnO1xuICAgICAgICBkZWJ1Z05hbWU6ICgpID0+IHN0cmluZztcbiAgICAgICAgLyoqIFNlZSBBcmNoaXZlc0NoYWluT3B0aW9ucy5kaXJlY3RDb25uZWN0LiAqL1xuICAgICAgICBkaXJlY3RDb25uZWN0PzogYm9vbGVhbjtcbiAgICB9KSB7XG4gICAgICAgIHRoaXMuY29uZmlndXJlZCA9IGNvbmZpZy5jb25maWd1cmVkO1xuICAgICAgICB0aGlzLmFjdGl2ZUNvbmZpZyA9IGNvbmZpZy5jb25maWd1cmVkO1xuICAgICAgICB0aGlzLnJvdXRpbmdSZXdyaXRlciA9IG5ldyBSb3V0aW5nUmV3cml0ZUxvb3Aoe1xuICAgICAgICAgICAgY29uZmlndXJlZDogY29uZmlnLmNvbmZpZ3VyZWQsXG4gICAgICAgICAgICBkZWJ1Z05hbWU6IGNvbmZpZy5kZWJ1Z05hbWUsXG4gICAgICAgICAgICBsYXRlc3Q6ICgpID0+IHRoaXMubGF0ZXN0U3RhdGUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVuc3Vic2NyaWJlUm91dGluZ1B1c2ggPSBvblNlcnZlclJvdXRpbmdDaGFuZ2VkKCgpID0+IHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5yZWZyZXNoQWN0aXZlQ29uZmlnKCkuY2F0Y2goKGU6IEVycm9yKSA9PiBjb25zb2xlLmVycm9yKGBDb25maWcgcmVmcmVzaCBmYWlsZWQgZm9yICR7dGhpcy5jb25maWcuZGVidWdOYW1lKCl9OiAke2Uuc3RhY2sgPz8gZX1gKSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBTbyBhIHNlcnZlciBjYW4gYXNrIHdoYXQgY29uZmlnIHdlIGludGVuZGVkIGZvciBhIHN0b3JlIG5hbWUgKHNlZSBTdG9yYWdlQ2xpZW50Q29udHJvbGxlci5nZXRSb3V0aW5nQ29uZmlnRm9yTmFtZSlcbiAgICAgICAgdGhpcy51bnRyYWNrQ29uZmlnID0gdHJhY2tDaGFpbkNvbmZpZyh7IGNvbmZpZ3VyZWQ6IGNvbmZpZy5jb25maWd1cmVkLCBhY3RpdmU6ICgpID0+IHRoaXMuYWN0aXZlQ29uZmlnIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdW50cmFja0NvbmZpZzogKCkgPT4gdm9pZDtcblxuICAgIC8qKiBUaGUgbmV3ZXN0IGFkb3B0ZWQgc3RhdGUsIHN5bmNocm9ub3VzbHkgLSB1bmRlZmluZWQgdW50aWwgdGhlIGZpcnN0IGluaXQgZmluaXNoZXMuICovXG4gICAgcHVibGljIGxhdGVzdCgpOiBDaGFpblN0YXRlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGF0ZXN0U3RhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN0YXRlKCk6IFByb21pc2U8Q2hhaW5TdGF0ZT4ge1xuICAgICAgICBpZiAodGhpcy5kaXNwb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihgQXJjaGl2ZXNDaGFpbiAke3RoaXMuY29uZmlnLmRlYnVnTmFtZSgpfSBoYXMgYmVlbiBkaXNwb3NlZGApKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc3RhdGVQcm9taXNlKSB7XG4gICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVByb21pc2UgPSBwcm9taXNlO1xuICAgICAgICAgICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRSZXRyeURlbGF5ID0gUkVUUllfU1RBUlRfREVMQVk7XG4gICAgICAgICAgICB9LCAoZTogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXNwb3NlZCB8fCB0aGlzLmluaXRSZXRyeVRpbWVyKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgU3RvcmFnZSBpbml0IGZhaWxlZCBmb3IgJHt0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKX0sIHJldHJ5aW5nIGluICR7TWF0aC5yb3VuZCh0aGlzLmluaXRSZXRyeURlbGF5IC8gMTAwMCl9cy4gJHtlLnN0YWNrID8/IGV9YCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbml0UmV0cnlUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRSZXRyeVRpbWVyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0ZVByb21pc2UgPT09IHByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3RhdGUoKS5jYXRjaCgoKSA9PiB7IH0pO1xuICAgICAgICAgICAgICAgIH0sIHRoaXMuaW5pdFJldHJ5RGVsYXkpO1xuICAgICAgICAgICAgICAgICh0aGlzLmluaXRSZXRyeVRpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRSZXRyeURlbGF5ID0gTWF0aC5taW4oUkVUUllfTUFYX0RFTEFZLCB0aGlzLmluaXRSZXRyeURlbGF5ICogUkVUUllfR1JPV1RIKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXRlUHJvbWlzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGluaXQoKTogUHJvbWlzZTxDaGFpblN0YXRlPiB7XG4gICAgICAgIGxldCBjb25maWdzID0gdGhpcy5jb25maWd1cmVkLnNvdXJjZXMubWFwKG5vcm1hbGl6ZVNvdXJjZSk7XG4gICAgICAgIGxldCByZWFkT25seSA9IHRoaXMuaXNSZWFkT25seSh0aGlzLmNvbmZpZ3VyZWQpO1xuICAgICAgICBsZXQgcHJvYmVzID0gYXdhaXQgcHJvYmVTb3VyY2VzKGNvbmZpZ3MsIHJlYWRPbmx5KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCB7IGFjdGl2ZSwgbmVlZHNXcml0ZSwgZXhpc3RpbmcgfSA9IGNob29zZVN0YXJ0dXBDb25maWcoeyBjb25maWd1cmVkOiB0aGlzLmNvbmZpZ3VyZWQsIHByb2JlcywgZGVidWdOYW1lOiB0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKSB9KTtcbiAgICAgICAgICAgIGxldCBzb3VyY2VzID0gYXdhaXQgdGhpcy5idWlsZFNvdXJjZXMoYWN0aXZlKTtcbiAgICAgICAgICAgIGxldCBjb25maWdXcml0ZUZhaWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKG5lZWRzV3JpdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU3RvcmFnZSByb3V0aW5nIGNvbmZpZyBmb3IgJHt0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKX0gaXMgb3V0IG9mIGRhdGUgKHN0b3JlZCB2ZXJzaW9uICR7ZXhpc3RpbmcgJiYgZ2V0Q29uZmlnVmVyc2lvbihleGlzdGluZykgfHwgXCJub25lXCJ9LCBvdXJzICR7Z2V0Q29uZmlnVmVyc2lvbih0aGlzLmNvbmZpZ3VyZWQpfSlgKTtcbiAgICAgICAgICAgICAgICBsZXQgeyBmYWlsdXJlcywgdG90YWwgfSA9IGF3YWl0IHdyaXRlUm91dGluZ1RvQWxsU3RvcmVzKHsgY29uZmlndXJlZDogdGhpcy5jb25maWd1cmVkLCBzb3VyY2VzLCBkZWJ1Z05hbWU6IHRoaXMuY29uZmlnLmRlYnVnTmFtZSgpIH0pO1xuICAgICAgICAgICAgICAgIGNvbmZpZ1dyaXRlRmFpbGVkID0gZmFpbHVyZXMubGVuZ3RoID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoZmFpbHVyZXMubGVuZ3RoICYmIGZhaWx1cmVzLmxlbmd0aCA9PT0gdG90YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gTm9ib2R5IGhhcyBvdXIgY29uZmlnLCBzbyBydW5uaW5nIG9uIGl0IHdvdWxkIGp1c3QgZGlzYWdyZWUgd2l0aCBldmVyeSBzZXJ2ZXIuIFRoZSBzdG9yZWQgb25lICh3aGVuIHRoZXJlIGlzIG9uZSkgaXMgd2hhdCB0aGUgc2VydmVycyBhY3R1YWxseSBydW4uXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSBzdG9yYWdlIHJvdXRpbmcgY29uZmlnIGZvciAke3RoaXMuY29uZmlnLmRlYnVnTmFtZSgpfSAodmVyc2lvbiAke2dldENvbmZpZ1ZlcnNpb24odGhpcy5jb25maWd1cmVkKX0pIGNvdWxkIG5vdCBiZSB3cml0dGVuIHRvIEFOWSBvZiB0aGUgJHt0b3RhbH0gc3RvcmVzLiAke2V4aXN0aW5nICYmIGBSdW5uaW5nIG9uIHRoZSBzdG9yZWQgY29uZmlnICh2ZXJzaW9uICR7Z2V0Q29uZmlnVmVyc2lvbihleGlzdGluZyl9KSB1bnRpbCBhIHdyaXRlIHN1Y2NlZWRzLmAgfHwgYE5vIHN0b3JlZCBjb25maWcgZXhpc3RzIGVpdGhlciwgc28gc2VydmVycyB3aWxsIHJlamVjdCB3cml0ZXMgdW50aWwgdGhpcyBzdWNjZWVkcy5gfSBSZXRyeWluZyBpbiAke0NPTkZJR19XUklURV9SRVRSWV9JTlRFUlZBTCAvIDEwMDB9cy4gRmFpbHVyZXM6ICR7ZmFpbHVyZXMuam9pbihcIiB8IFwiKX1gKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmUgPSBleGlzdGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHNvdXJjZSBvZiBzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZXMgPSBhd2FpdCB0aGlzLmJ1aWxkU291cmNlcyhhY3RpdmUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmYWlsdXJlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIHN0b3JhZ2Ugcm91dGluZyBjb25maWcgZm9yICR7dGhpcy5jb25maWcuZGVidWdOYW1lKCl9ICh2ZXJzaW9uICR7Z2V0Q29uZmlnVmVyc2lvbih0aGlzLmNvbmZpZ3VyZWQpfSkgd2FzIHdyaXR0ZW4gdG8gJHt0b3RhbCAtIGZhaWx1cmVzLmxlbmd0aH0gb2YgJHt0b3RhbH0gc3RvcmVzLiBSZXRyeWluZyB0aGUgcmVzdCBpbiAke0NPTkZJR19XUklURV9SRVRSWV9JTlRFUlZBTCAvIDEwMDB9cyAodGhleSBhbHNvIHB1bGwgaXQgZnJvbSB0aGUgc3RvcmVzIHRoYXQgaGF2ZSBpdCkuIEZhaWx1cmVzOiAke2ZhaWx1cmVzLmpvaW4oXCIgfCBcIil9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgcHJvYmUgPSBwcm9iZXMuZmluZCh4ID0+IHgucmVzcG9uZGVkICYmIHguc291cmNlQ29uZmlnLnVybCA9PT0gc291cmNlLmNvbmZpZy51cmwpO1xuICAgICAgICAgICAgICAgIGlmIChwcm9iZSkge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2Uuc2VlZExhdGVuY3kocHJvYmUubGF0ZW5jeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hY3RpdmVDb25maWcgPSBhY3RpdmU7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q29uZmlnUG9sbCgpO1xuICAgICAgICAgICAgbGV0IHN0YXRlOiBDaGFpblN0YXRlID0geyBjb25maWc6IGFjdGl2ZSwgc291cmNlcyB9O1xuICAgICAgICAgICAgdGhpcy5sYXRlc3RTdGF0ZSA9IHN0YXRlO1xuICAgICAgICAgICAgdGhpcy5yb3V0aW5nUmV3cml0ZXIuc3RhcnQoY29uZmlnV3JpdGVGYWlsZWQpO1xuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgZGlzcG9zZVByb2Jlcyhwcm9iZXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENsaWVudHNpZGUsIGEgY29uZmlnIHdpdGggcHVibGljIHNvdXJjZXMgaXMgc2VydmVkIGVudGlyZWx5IG92ZXIgcGxhaW4gVVJMIGRvd25sb2FkcyAtIG5vIEFQSSBjb25uZWN0aW9uLCBubyBhY2Nlc3MgZ3JhbnQsIGFuZCBubyB3cml0aW5nLiBkaXJlY3RDb25uZWN0IG9wdHMgb3V0IG9mIHRoYXQuICovXG4gICAgcHJpdmF0ZSBpc1JlYWRPbmx5KGNvbmZpZzogUmVtb3RlQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5kaXJlY3RDb25uZWN0IHx8IGlzTm9kZSgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiBjb25maWcuc291cmNlcy5tYXAobm9ybWFsaXplU291cmNlKS5zb21lKHggPT4geC5wdWJsaWMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY3JlYXRlQ2hhaW5Tb3VyY2Uoc291cmNlQ29uZmlnOiBTb3VyY2VDb25maWcsIHJlYWRPbmx5OiBib29sZWFuKTogUHJvbWlzZTxTb3VyY2VXcmFwcGVyPiB7XG4gICAgICAgIGxldCBzb3VyY2UgPSBhd2FpdCBTb3VyY2VXcmFwcGVyLmNyZWF0ZShzb3VyY2VDb25maWcsIHsgcmVhZE9ubHkgfSk7XG4gICAgICAgIHNvdXJjZS5zdGFydFBpbmdpbmcoKTtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGJ1aWxkU291cmNlcyhjb25maWc6IFJlbW90ZUNvbmZpZyk6IFByb21pc2U8U291cmNlV3JhcHBlcltdPiB7XG4gICAgICAgIGxldCByZWFkT25seSA9IHRoaXMuaXNSZWFkT25seShjb25maWcpO1xuICAgICAgICBsZXQgc291cmNlczogU291cmNlV3JhcHBlcltdID0gW107XG4gICAgICAgIGZvciAobGV0IHNvdXJjZUNvbmZpZyBvZiBjb25maWcuc291cmNlcy5tYXAobm9ybWFsaXplU291cmNlKSkge1xuICAgICAgICAgICAgc291cmNlcy5wdXNoKGF3YWl0IHRoaXMuY3JlYXRlQ2hhaW5Tb3VyY2Uoc291cmNlQ29uZmlnLCByZWFkT25seSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2VzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRDb25maWdQb2xsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wb2xsVGltZXIgfHwgdGhpcy5kaXNwb3NlZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnBvbGxUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5yZWZyZXNoQWN0aXZlQ29uZmlnKCkuY2F0Y2goKGU6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgQ2hlY2tpbmcgZm9yIGEgbmV3IHN0b3JhZ2Ugcm91dGluZyBjb25maWcgZmFpbGVkIGZvciAke3RoaXMuY29uZmlnLmRlYnVnTmFtZSgpfTogJHtlLnN0YWNrID8/IGV9YCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgQ09ORklHX1BPTExfSU5URVJWQUwpO1xuICAgICAgICAodGhpcy5wb2xsVGltZXIgYXMgeyB1bnJlZj86ICgpID0+IHZvaWQgfSkudW5yZWY/LigpO1xuICAgIH1cblxuICAgIC8vIERlZHVwbGljYXRlcyBjb25jdXJyZW50IHJlZnJlc2hlcyAodGhlIHBvbGwgdGltZXIgYW5kIHdyb25nLXRhcmdldCB3cml0ZSByZXRyaWVzIHNoYXJlIHRoaXMpXG4gICAgcHJpdmF0ZSBjb25maWdSZWZyZXNoSW5GbGlnaHQ6IFByb21pc2U8dm9pZD4gfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIHJlZnJlc2hBY3RpdmVDb25maWcoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWdSZWZyZXNoSW5GbGlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnUmVmcmVzaEluRmxpZ2h0ID0gdGhpcy5jaGVja0Zvck5ld0NvbmZpZygpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnUmVmcmVzaEluRmxpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnUmVmcmVzaEluRmxpZ2h0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZmV0Y2hMYXRlc3RDb25maWcoc3RhdGU6IENoYWluU3RhdGUpOiBQcm9taXNlPFJlbW90ZUNvbmZpZyB8IHVuZGVmaW5lZD4ge1xuICAgICAgICBsZXQgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc3RhdGUuc291cmNlcykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgbGF0ZXN0ID0gYXdhaXQgc291cmNlLnJlYWRSb3V0aW5nQ29uZmlnKCk7XG4gICAgICAgICAgICAgICAgaWYgKGxhdGVzdCkgcmV0dXJuIG5vcm1hbGl6ZVJlbW90ZUNvbmZpZyhsYXRlc3QpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKGAke3NvdXJjZS5jb25maWcudXJsfTogJHsoZSBhcyBFcnJvcikuc3RhY2sgPz8gZX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PT0gc3RhdGUuc291cmNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3RvcmFnZSBzb3VyY2UgY291bGQgZ2l2ZSB1cyB0aGUgcm91dGluZyBjb25maWcgZm9yICR7dGhpcy5jb25maWcuZGVidWdOYW1lKCl9OiAke2Vycm9ycy5qb2luKFwiIHwgXCIpfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBjaGVja0Zvck5ld0NvbmZpZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcG9zZWQgfHwgIXRoaXMuc3RhdGVQcm9taXNlKSByZXR1cm47XG4gICAgICAgIGxldCBzdGF0ZTogQ2hhaW5TdGF0ZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN0YXRlID0gYXdhaXQgdGhpcy5zdGF0ZVByb21pc2U7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsYXRlc3QgPSBhd2FpdCB0aGlzLmZldGNoTGF0ZXN0Q29uZmlnKHN0YXRlKTtcbiAgICAgICAgaWYgKCFsYXRlc3QpIHJldHVybjtcbiAgICAgICAgYXdhaXQgdGhpcy5hZG9wdE5ld0NvbmZpZyhzdGF0ZSwgbGF0ZXN0KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGFkb3B0TmV3Q29uZmlnKHN0YXRlOiBDaGFpblN0YXRlLCBsYXRlc3Q6IFJlbW90ZUNvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkobGF0ZXN0KSA9PT0gSlNPTi5zdHJpbmdpZnkoc3RhdGUuY29uZmlnKSkgcmV0dXJuO1xuICAgICAgICBsZXQgcmVjZWl2ZWQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIGxldCBvbmx5SW50ZXJtZWRpYXRlc0NoYW5nZWQgPSBKU09OLnN0cmluZ2lmeShyZXNvbHZlSW50ZXJtZWRpYXRlU291cmNlcyhsYXRlc3QpKSA9PT0gSlNPTi5zdHJpbmdpZnkocmVzb2x2ZUludGVybWVkaWF0ZVNvdXJjZXMoc3RhdGUuY29uZmlnKSk7XG4gICAgICAgIGlmIChvbmx5SW50ZXJtZWRpYXRlc0NoYW5nZWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdG9yYWdlIHJvdXRpbmcgc3dpdGNob3ZlciB3aW5kb3dzIGNoYW5nZWQgKHZlcnNpb24gJHtnZXRDb25maWdWZXJzaW9uKHN0YXRlLmNvbmZpZyl9IC0+ICR7Z2V0Q29uZmlnVmVyc2lvbihsYXRlc3QpfSksIHJlY2VpdmVkICR7cmVjZWl2ZWR9LCByZWJ1aWxkaW5nIHNvdXJjZXMuIE5ldyBjb25maWc6ICR7SlNPTi5zdHJpbmdpZnkobGF0ZXN0KX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBTdG9yYWdlIHJvdXRpbmcgY29uZmlnIGNoYW5nZWQgKHZlcnNpb24gJHtnZXRDb25maWdWZXJzaW9uKHN0YXRlLmNvbmZpZyl9IC0+ICR7Z2V0Q29uZmlnVmVyc2lvbihsYXRlc3QpfSksIHJlY2VpdmVkICR7cmVjZWl2ZWR9LCByZWJ1aWxkaW5nIHNvdXJjZXMuIE5ldyBjb25maWc6ICR7SlNPTi5zdHJpbmdpZnkobGF0ZXN0KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc3RyaXBwZWRLZXkgPSAoY29uZmlnOiBTb3VyY2VDb25maWcpID0+IEpTT04uc3RyaW5naWZ5KHsgLi4uY29uZmlnLCB2YWxpZFdpbmRvdzogdW5kZWZpbmVkIH0pO1xuICAgICAgICBsZXQgb2xkQnlDb25maWcgPSBuZXcgTWFwPHN0cmluZywgU291cmNlV3JhcHBlcltdPigpO1xuICAgICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc3RhdGUuc291cmNlcykge1xuICAgICAgICAgICAgbGV0IGtleSA9IHN0cmlwcGVkS2V5KHNvdXJjZS5jb25maWcpO1xuICAgICAgICAgICAgbGV0IGxpc3QgPSBvbGRCeUNvbmZpZy5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmICghbGlzdCkge1xuICAgICAgICAgICAgICAgIGxpc3QgPSBbXTtcbiAgICAgICAgICAgICAgICBvbGRCeUNvbmZpZy5zZXQoa2V5LCBsaXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpc3QucHVzaChzb3VyY2UpO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZWFkT25seSA9IHRoaXMuaXNSZWFkT25seShsYXRlc3QpO1xuICAgICAgICBsZXQgc291cmNlczogU291cmNlV3JhcHBlcltdID0gW107XG4gICAgICAgIGZvciAobGV0IHNvdXJjZUNvbmZpZyBvZiBsYXRlc3Quc291cmNlcy5tYXAobm9ybWFsaXplU291cmNlKSkge1xuICAgICAgICAgICAgbGV0IG9sZCA9IG9sZEJ5Q29uZmlnLmdldChzdHJpcHBlZEtleShzb3VyY2VDb25maWcpKT8uc2hpZnQoKTtcbiAgICAgICAgICAgIGlmIChvbGQpIHtcbiAgICAgICAgICAgICAgICBvbGQudXBkYXRlVmFsaWRXaW5kb3coc291cmNlQ29uZmlnLnZhbGlkV2luZG93KTtcbiAgICAgICAgICAgICAgICBzb3VyY2VzLnB1c2gob2xkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc291cmNlcy5wdXNoKGF3YWl0IHRoaXMuY3JlYXRlQ2hhaW5Tb3VyY2Uoc291cmNlQ29uZmlnLCByZWFkT25seSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGxlZnRvdmVycyBvZiBvbGRCeUNvbmZpZy52YWx1ZXMoKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgbGVmdG92ZXIgb2YgbGVmdG92ZXJzKSB7XG4gICAgICAgICAgICAgICAgbGVmdG92ZXIuZGlzcG9zZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZlQ29uZmlnID0gbGF0ZXN0O1xuICAgICAgICBsZXQgbmV3U3RhdGU6IENoYWluU3RhdGUgPSB7IGNvbmZpZzogbGF0ZXN0LCBzb3VyY2VzIH07XG4gICAgICAgIHRoaXMubGF0ZXN0U3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZVByb21pc2UgPSBQcm9taXNlLnJlc29sdmUobmV3U3RhdGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGFzdEF2YWlsYWJpbGl0eVJlY2hlY2sgPSAwO1xuICAgIHByaXZhdGUgYXZhaWxhYmlsaXR5UmVjaGVja0luRmxpZ2h0OiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuICAgIC8qKiBFdmVyeSBzb3VyY2UgZmFpbGVkOiByZS1jb250YWN0IGFsbCBvZiB0aGVtIChyb3V0aW5nIHJlLXJlYWQgKyBjb25uZWN0aW9uIHJlLWF0dGVtcHQpIGFuZCBhZG9wdCB3aGF0ZXZlciBjb25maWcgY29tZXMgYmFjay4gVGhyb3R0bGVkLCBhbmQgZGVkdXBsaWNhdGVkIGFjcm9zcyBjb25jdXJyZW50IGNhbGxlcnMuICovXG4gICAgcHVibGljIHJlY2hlY2tBdmFpbGFiaWxpdHkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmF2YWlsYWJpbGl0eVJlY2hlY2tJbkZsaWdodCkgcmV0dXJuIHRoaXMuYXZhaWxhYmlsaXR5UmVjaGVja0luRmxpZ2h0O1xuICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHRoaXMubGFzdEF2YWlsYWJpbGl0eVJlY2hlY2sgPCBBVkFJTEFCSUxJVFlfUkVDSEVDS19USFJPVFRMRSkgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB0aGlzLmxhc3RBdmFpbGFiaWxpdHlSZWNoZWNrID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlSZWNoZWNrSW5GbGlnaHQgPSB0aGlzLnJlY2hlY2tBdmFpbGFiaWxpdHlOb3coKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5UmVjaGVja0luRmxpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXZhaWxhYmlsaXR5UmVjaGVja0luRmxpZ2h0O1xuICAgIH1cbiAgICBwcml2YXRlIGFzeW5jIHJlY2hlY2tBdmFpbGFiaWxpdHlOb3coKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmRpc3Bvc2VkIHx8ICF0aGlzLnN0YXRlUHJvbWlzZSkgcmV0dXJuO1xuICAgICAgICBsZXQgc3RhdGU6IENoYWluU3RhdGU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGF3YWl0IHRoaXMuc3RhdGVQcm9taXNlO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmxvZyhgRXZlcnkgc3RvcmFnZSBzb3VyY2UgZmFpbGVkIGZvciAke3RoaXMuY29uZmlnLmRlYnVnTmFtZSgpfTsgcmUtY29udGFjdGluZyBhbGwgJHtzdGF0ZS5zb3VyY2VzLmxlbmd0aH0gc291cmNlcyAocm91dGluZyByZS1yZWFkICsgY29ubmVjdGlvbiByZS1hdHRlbXB0KWApO1xuICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKHN0YXRlLnNvdXJjZXMubWFwKGFzeW5jIHNvdXJjZSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBzb3VyY2UucmVhZFJvdXRpbmdDb25maWcoKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgICAgbGV0IGxhdGVzdCA9IHJlc3VsdHMuZmluZCh4ID0+IHgpO1xuICAgICAgICBpZiAoIWxhdGVzdCkgcmV0dXJuO1xuICAgICAgICBhd2FpdCB0aGlzLmFkb3B0TmV3Q29uZmlnKHN0YXRlLCBsYXRlc3QpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc3Bvc2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51bnRyYWNrQ29uZmlnKCk7XG4gICAgICAgIHRoaXMudW5zdWJzY3JpYmVSb3V0aW5nUHVzaD8uKCk7XG4gICAgICAgIGlmICh0aGlzLnBvbGxUaW1lcikge1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnBvbGxUaW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5pdFJldHJ5VGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmluaXRSZXRyeVRpbWVyKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRpbmdSZXdyaXRlci5kaXNwb3NlKCk7XG4gICAgICAgIGxldCBzdGF0ZVByb21pc2UgPSB0aGlzLnN0YXRlUHJvbWlzZTtcbiAgICAgICAgaWYgKHN0YXRlUHJvbWlzZSkge1xuICAgICAgICAgICAgdm9pZCBzdGF0ZVByb21pc2UudGhlbihzdGF0ZSA9PiB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgc291cmNlIG9mIHN0YXRlLnNvdXJjZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc291cmNlLmRpc3Bvc2UoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAoKSA9PiB7IH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBTb3VyY2VQcm9iZSA9IHtcbiAgICBwcm9iZTogU291cmNlV3JhcHBlcjtcbiAgICBzb3VyY2VDb25maWc6IFNvdXJjZUNvbmZpZztcbiAgICByZXNwb25kZWQ6IGJvb2xlYW47XG4gICAgbGF0ZW5jeTogbnVtYmVyO1xuICAgIGV4aXN0aW5nOiBSZW1vdGVDb25maWcgfCB1bmRlZmluZWQ7XG4gICAgZXJyb3I6IHN0cmluZztcbn07XG5cbi8qKiBPbmUgdGhyb3dhd2F5IFNvdXJjZVdyYXBwZXIgcGVyIGNvbmZpZ3VyZWQgc291cmNlLCBlYWNoIGFza2VkIGZvciBpdHMgc3RvcmVkIHJvdXRpbmcgY29uZmlnIC0gd2hpY2ggYWxzbyBtZWFzdXJlcyBmaXJzdC1jb250YWN0IGxhdGVuY3ksIHNlZWRlZCBpbnRvIHRoZSByZWFsIHNvdXJjZXMgYWZ0ZXJ3YXJkcy4gVGhlIHByb2JlcyBNVVNUIGJlIGRpc3Bvc2VkIChkaXNwb3NlUHJvYmVzKSBvbmNlIHRoZSBjYWxsZXIgaXMgZG9uZSB3aXRoIHRoZW0uICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvYmVTb3VyY2VzKGNvbmZpZ3M6IFNvdXJjZUNvbmZpZ1tdLCByZWFkT25seTogYm9vbGVhbik6IFByb21pc2U8U291cmNlUHJvYmVbXT4ge1xuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChjb25maWdzLm1hcChhc3luYyBzb3VyY2VDb25maWcgPT4ge1xuICAgICAgICBsZXQgcHJvYmUgPSBhd2FpdCBTb3VyY2VXcmFwcGVyLmNyZWF0ZShzb3VyY2VDb25maWcsIHsgYmFja2dyb3VuZDogZmFsc2UsIHJlYWRPbmx5IH0pO1xuICAgICAgICBsZXQgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGV4aXN0aW5nID0gYXdhaXQgcHJvYmUucmVhZFJvdXRpbmdDb25maWcoKTtcbiAgICAgICAgICAgIHJldHVybiB7IHByb2JlLCBzb3VyY2VDb25maWcsIHJlc3BvbmRlZDogdHJ1ZSwgbGF0ZW5jeTogRGF0ZS5ub3coKSAtIHN0YXJ0LCBleGlzdGluZywgZXJyb3I6IFwiXCIgfTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgcHJvYmUsIHNvdXJjZUNvbmZpZywgcmVzcG9uZGVkOiBmYWxzZSwgbGF0ZW5jeTogMCwgZXhpc3Rpbmc6IHVuZGVmaW5lZCwgZXJyb3I6IGAke3NvdXJjZUNvbmZpZy51cmx9OiAkeyhlIGFzIEVycm9yKS5zdGFjayA/PyBlfWAgfTtcbiAgICAgICAgfVxuICAgIH0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3Bvc2VQcm9iZXMocHJvYmVzOiBTb3VyY2VQcm9iZVtdKTogdm9pZCB7XG4gICAgZm9yIChsZXQgcHJvYmUgb2YgcHJvYmVzKSB7XG4gICAgICAgIHByb2JlLnByb2JlLmRpc3Bvc2UoKTtcbiAgICB9XG59XG5cbi8qKlxuICogV2hpY2ggcm91dGluZyBjb25maWcgdGhlIGNoYWluIHNob3VsZCBSVU46IHRoZSBuZXdlc3Qgb2Ygb3VycyBhbmQgZXZlcnkgc3RvcmVkIG9uZS4gbmVlZHNXcml0ZVxuICogd2hlbiBvdXJzIGlzIHN0cmljdGx5IHRoZSBuZXdlc3QsIG1lYW5pbmcgdGhlIHN0b3JlcyBoYXZlIHRvIGJlIHRvbGQgYWJvdXQgaXQuIEEgc3RvcmVkIGNvbmZpZ1xuICogd2l0aCBvdXIgZXhhY3QgdmVyc2lvbiBidXQgRElGRkVSRU5UIGNvbnRlbnQgd2lucyB3aXRob3V0IGEgd3JpdGUsIGxvdWRseTogY29uZmlnIHVwZGF0ZXMgbXVzdFxuICogYnVtcCB0aGUgdmVyc2lvbiwgb3IgdGhleSBhcmUgaWdub3JlZCAtIHNpbGVudGx5IHRha2luZyB0aGUgY2hhbmdlZCBvbmUgd291bGQgbWFrZSBcIndoYXQgaXMgdGhlXG4gKiBidWNrZXQgcnVubmluZ1wiIGRlcGVuZCBvbiB3aGljaCBwcm9jZXNzIHN0YXJ0ZWQgbGFzdC5cbiAqXG4gKiBUaHJvd3Mgd2hlbiBubyBzb3VyY2UgYW5zd2VyZWQgYXQgYWxsOiB3aXRoIG5vdGhpbmcgc3RvcmVkIGFuZCBub2JvZHkgdG8gd3JpdGUgdG8sIHRoZXJlIGlzIG5vXG4gKiBjb25maWcgdG8gcnVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlU3RhcnR1cENvbmZpZyhjb25maWc6IHsgY29uZmlndXJlZDogUmVtb3RlQ29uZmlnOyBwcm9iZXM6IFNvdXJjZVByb2JlW107IGRlYnVnTmFtZTogc3RyaW5nIH0pOiB7IGFjdGl2ZTogUmVtb3RlQ29uZmlnOyBuZWVkc1dyaXRlOiBib29sZWFuOyBleGlzdGluZzogUmVtb3RlQ29uZmlnIHwgdW5kZWZpbmVkIH0ge1xuICAgIGxldCB7IGNvbmZpZ3VyZWQsIHByb2JlcywgZGVidWdOYW1lIH0gPSBjb25maWc7XG4gICAgbGV0IGZvdW5kID0gcHJvYmVzLmZpbmQoeCA9PiB4LnJlc3BvbmRlZCk7XG4gICAgaWYgKCFmb3VuZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0b3JhZ2UgaW5pdGlhbGl6YXRpb24gZmFpbGVkIC0gbm8gc291cmNlIGFuc3dlcmVkLiBGb3IgJHtkZWJ1Z05hbWV9OiAke3Byb2Jlcy5tYXAoeCA9PiB4LmVycm9yKS5qb2luKFwiIHwgXCIpfWApO1xuICAgIH1cbiAgICBsZXQgZXhpc3RpbmcgPSBmb3VuZC5leGlzdGluZztcbiAgICBsZXQgYWN0aXZlID0gY29uZmlndXJlZDtcbiAgICBsZXQgbmVlZHNXcml0ZSA9IHRydWU7XG4gICAgaWYgKGV4aXN0aW5nICYmIGdldENvbmZpZ1ZlcnNpb24oZXhpc3RpbmcpID49IGdldENvbmZpZ1ZlcnNpb24oY29uZmlndXJlZCkpIHtcbiAgICAgICAgaWYgKGdldENvbmZpZ1ZlcnNpb24oZXhpc3RpbmcpID09PSBnZXRDb25maWdWZXJzaW9uKGNvbmZpZ3VyZWQpICYmIEpTT04uc3RyaW5naWZ5KGV4aXN0aW5nKSAhPT0gSlNPTi5zdHJpbmdpZnkoY29uZmlndXJlZCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEFyY2hpdmVzIGNvbmZpZ3VyYXRpb24gdXBkYXRlZCB3aXRob3V0IHVwZGF0aW5nIHRoZSB2ZXJzaW9uLCBmb3IgJHtmb3VuZC5zb3VyY2VDb25maWcudXJsfS4gVXBkYXRlcyB3aWxsIGJlIGlnbm9yZWQgdW50aWwgeW91IGluY3JlYXNlIHRoZSB2ZXJzaW9uLiBVc2luZzogJHtKU09OLnN0cmluZ2lmeShleGlzdGluZyl9LCBpZ25vcmluZzogJHtKU09OLnN0cmluZ2lmeShjb25maWd1cmVkKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBhY3RpdmUgPSBleGlzdGluZztcbiAgICAgICAgbmVlZHNXcml0ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAobmVlZHNXcml0ZSkge1xuICAgICAgICBsZXQgYmVzdDogUmVtb3RlQ29uZmlnIHwgdW5kZWZpbmVkO1xuICAgICAgICBsZXQgY29uZmxpY3RVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChsZXQgcHJvYmUgb2YgcHJvYmVzKSB7XG4gICAgICAgICAgICBsZXQgc3RvcmVkID0gcHJvYmUuZXhpc3Rpbmc7XG4gICAgICAgICAgICBpZiAoIXN0b3JlZCkgY29udGludWU7XG4gICAgICAgICAgICBpZiAoIWJlc3QgfHwgZ2V0Q29uZmlnVmVyc2lvbihzdG9yZWQpID4gZ2V0Q29uZmlnVmVyc2lvbihiZXN0KSkge1xuICAgICAgICAgICAgICAgIGJlc3QgPSBzdG9yZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZ2V0Q29uZmlnVmVyc2lvbihzdG9yZWQpID09PSBnZXRDb25maWdWZXJzaW9uKGNvbmZpZ3VyZWQpICYmIEpTT04uc3RyaW5naWZ5KHN0b3JlZCkgIT09IEpTT04uc3RyaW5naWZ5KGNvbmZpZ3VyZWQpKSB7XG4gICAgICAgICAgICAgICAgY29uZmxpY3RVcmwgPSBwcm9iZS5zb3VyY2VDb25maWcudXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChiZXN0ICYmIGdldENvbmZpZ1ZlcnNpb24oYmVzdCkgPj0gZ2V0Q29uZmlnVmVyc2lvbihjb25maWd1cmVkKSkge1xuICAgICAgICAgICAgaWYgKGNvbmZsaWN0VXJsICYmIGdldENvbmZpZ1ZlcnNpb24oYmVzdCkgPT09IGdldENvbmZpZ1ZlcnNpb24oY29uZmlndXJlZCkpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBBcmNoaXZlcyBjb25maWd1cmF0aW9uIHVwZGF0ZWQgd2l0aG91dCB1cGRhdGluZyB0aGUgdmVyc2lvbiwgZm9yICR7Y29uZmxpY3RVcmx9LiBVcGRhdGVzIHdpbGwgYmUgaWdub3JlZCB1bnRpbCB5b3UgaW5jcmVhc2UgdGhlIHZlcnNpb24uIFVzaW5nOiAke0pTT04uc3RyaW5naWZ5KGJlc3QpfSwgaWdub3Jpbmc6ICR7SlNPTi5zdHJpbmdpZnkoY29uZmlndXJlZCl9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY3RpdmUgPSBiZXN0O1xuICAgICAgICAgICAgbmVlZHNXcml0ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IGFjdGl2ZSwgbmVlZHNXcml0ZSwgZXhpc3RpbmcgfTtcbn1cblxuLyoqXG4gKiBXcml0ZXMgdGhlIGdpdmVuIHJvdXRpbmcgY29uZmlnIHRvIGV2ZXJ5IGNvbmZpZ3VyZWQgc3RvcmUsIG9uZSB3cml0ZSBwZXIgdXJsK25hbWU6IHRoZSB3cml0ZVxuICogbGFuZHMgaW4gdGhlIHN0b3JlIHRoZSBlbnRyeSBOQU1FUywgc28gdHdvIGVudHJpZXMgc2hhcmluZyBhIFVSTCBidXQgbmFtaW5nIGRpZmZlcmVudCBzdG9yZXMgYXJlXG4gKiB0d28gc2VwYXJhdGUgZGVsaXZlcmllcyAtIGRlZHVwaW5nIGJ5IFVSTCBhbG9uZSBsZWF2ZXMgdGhlIHNlY29uZCBzdG9yZSB1bmNvbmZpZ3VyZWQgZm9yZXZlci4gQWxsXG4gKiBpbiBwYXJhbGxlbCwgZXZlcnkgZmFpbHVyZSB0b2xlcmF0ZWQgKG5vLXdyaXRlLWFjY2VzcyBpbmNsdWRlZCAtIHRoZSBhdHRlbXB0IGNsYXNzaWZpZXMgaXQsXG4gKiBub3RoaW5nIHByZS1jaGVja3MgaXQpOiBhIGRvd24gbm9kZSBtdXN0IG5vdCBzdG9wIHRoZSBvdGhlcnMgZnJvbSBnZXR0aW5nIHRoZSBjb25maWcgLSB0aGV5IHdvdWxkXG4gKiB0aGVuIHJlamVjdCB3cml0ZXMgYXMgdW5jb25maWd1cmVkIHByZWNpc2VseSBCRUNBVVNFIGl0IG5ldmVyIGFycml2ZWQgLSBhbmQgaXQgbXVzdCBuZXZlciBzdG9wXG4gKiB0aGUgY2hhaW4gZnJvbSBzdGFydGluZy4gQSBzdG9yZSB0aGF0IG1pc3NlZCBpdCBwdWxscyBpdCBvZmYgaXRzIHBlZXJzLCBhbmQgdGhlIHJld3JpdGUgbG9vcFxuICogdHJpZXMgYWdhaW4gKHNlZSBSb3V0aW5nUmV3cml0ZUxvb3ApLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVSb3V0aW5nVG9BbGxTdG9yZXMoY29uZmlnOiB7IGNvbmZpZ3VyZWQ6IFJlbW90ZUNvbmZpZzsgc291cmNlczogU291cmNlV3JhcHBlcltdOyBkZWJ1Z05hbWU6IHN0cmluZyB9KTogUHJvbWlzZTx7IGZhaWx1cmVzOiBzdHJpbmdbXTsgdG90YWw6IG51bWJlciB9PiB7XG4gICAgbGV0IHsgY29uZmlndXJlZCwgc291cmNlcywgZGVidWdOYW1lIH0gPSBjb25maWc7XG4gICAgbGV0IHJvdXRpbmdEYXRhID0gc2VyaWFsaXplUmVtb3RlQ29uZmlnKGNvbmZpZ3VyZWQpO1xuICAgIGxldCByb3V0aW5nV3JpdGVUaW1lID0gTWF0aC5mbG9vcihEYXRlLm5vdygpKTtcbiAgICBsZXQgdGFyZ2V0czogU291cmNlV3JhcHBlcltdID0gW107XG4gICAgbGV0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICBsZXQga2V5ID0gYCR7c291cmNlLmNvbmZpZy51cmx9fCR7c291cmNlLmNvbmZpZy5uYW1lfWA7XG4gICAgICAgIGlmIChzZWVuLmhhcyhrZXkpKSBjb250aW51ZTtcbiAgICAgICAgc2Vlbi5hZGQoa2V5KTtcbiAgICAgICAgdGFyZ2V0cy5wdXNoKHNvdXJjZSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKGBXcml0aW5nIHJvdXRpbmcgY29uZmlnIHZlcnNpb24gJHtnZXRDb25maWdWZXJzaW9uKGNvbmZpZ3VyZWQpfSBmb3IgJHtkZWJ1Z05hbWV9IHRvIGFsbCAke3RhcmdldHMubGVuZ3RofSBzdG9yZXMgKHdyaXRlIHRpbWUgJHtuZXcgRGF0ZShyb3V0aW5nV3JpdGVUaW1lKS50b0lTT1N0cmluZygpfSk6ICR7dGFyZ2V0cy5tYXAoeCA9PiBgJHt4LmNvbmZpZy51cmx9IChzdG9yZSAke0pTT04uc3RyaW5naWZ5KHguY29uZmlnLm5hbWUpfSlgKS5qb2luKFwiLCBcIil9YCk7XG4gICAgbGV0IGZhaWx1cmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHRhcmdldHMubWFwKGFzeW5jIHNvdXJjZSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzb3VyY2Uud3JpdGUoYXJjaGl2ZXMgPT4gYXJjaGl2ZXMuc2V0KFJPVVRJTkdfRklMRSwgcm91dGluZ0RhdGEsIHsgbGFzdE1vZGlmaWVkOiByb3V0aW5nV3JpdGVUaW1lIH0pKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBXcm90ZSBzdG9yYWdlIHJvdXRpbmcgY29uZmlnIHZlcnNpb24gJHtnZXRDb25maWdWZXJzaW9uKGNvbmZpZ3VyZWQpfSB0byAke3NvdXJjZS5jb25maWcudXJsfSAoc3RvcmUgJHtKU09OLnN0cmluZ2lmeShzb3VyY2UuY29uZmlnLm5hbWUpfSlgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZmFpbHVyZXMucHVzaChgJHtzb3VyY2UuY29uZmlnLnVybH0gKHN0b3JlICR7SlNPTi5zdHJpbmdpZnkoc291cmNlLmNvbmZpZy5uYW1lKX0pOiAkeyhlIGFzIEVycm9yKS5zdGFjayA/PyBlfWApO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIHJldHVybiB7IGZhaWx1cmVzLCB0b3RhbDogdGFyZ2V0cy5sZW5ndGggfTtcbn1cblxuLyoqXG4gKiBUaGUgcGVyaW9kaWMgcmUtd3JpdGUgb2YgdGhlIGNoYWluJ3MgaW4tY29kZSBjb25maWc6IGZhaWx1cmVzIHJldHJpZWQgb24gdGhlIHNob3J0IGludGVydmFsIC0gYVxuICogc3RvcmUgd2l0aG91dCB0aGUgY29uZmlnIHJlamVjdHMgZXZlcnkgd3JpdGUgYWltZWQgYXQgaXQsIHNvIHRoaXMgbm90IGxhbmRpbmcgaXMgYSBiaWcgZGVhbCxcbiAqIGxvZ2dlZCBvbiBldmVyeSBhdHRlbXB0IC0gYW5kIGV2ZW4gc3VjY2VzcyByZXBlYXRlZCBob3VybHksIGluIGNhc2UgYSBzdG9yZSBsb3N0IGl0LiBUaGUgZmFpbHVyZVxuICogdGhpcyBleGlzdHMgZm9yOiBhIHNlcnZlciB3aG9zZSB0cnVzdCB3YXMgb25seSBncmFudGVkIEFGVEVSIHN0YXJ0dXAsIHNvIHRoZSBzdGFydHVwIHdyaXRlIHdhc1xuICogcmVqZWN0ZWQgYW5kIG5vdGhpbmcgZWxzZSB3b3VsZCBldmVyIHJldHJ5IGl0LlxuICovXG5leHBvcnQgY2xhc3MgUm91dGluZ1Jld3JpdGVMb29wIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzoge1xuICAgICAgICBjb25maWd1cmVkOiBSZW1vdGVDb25maWc7XG4gICAgICAgIGRlYnVnTmFtZTogKCkgPT4gc3RyaW5nO1xuICAgICAgICAvKiogVGhlIGNoYWluJ3MgbmV3ZXN0IGFkb3B0ZWQgc3RhdGU6IHdoYXQgZGVjaWRlcyB3aGV0aGVyIG91cnMgaXMgc3RpbGwgdGhlIGNvbmZpZyB0byB3cml0ZSwgYW5kIHRoZSBzb3VyY2VzIGl0IGlzIHdyaXR0ZW4gdGhyb3VnaC4gVW5kZWZpbmVkIHVudGlsIHRoZSBmaXJzdCBpbml0IGZpbmlzaGVzLiAqL1xuICAgICAgICBsYXRlc3Q6ICgpID0+IHsgY29uZmlnOiBSZW1vdGVDb25maWc7IHNvdXJjZXM6IFNvdXJjZVdyYXBwZXJbXSB9IHwgdW5kZWZpbmVkO1xuICAgIH0pIHsgfVxuXG4gICAgcHJpdmF0ZSB0aW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSBkaXNwb3NlZCA9IGZhbHNlO1xuXG4gICAgLyoqIChSZSlhcm1zIHRoZSBsb29wIC0gY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgaW5pdCwgd2l0aCB3aGV0aGVyIHRoYXQgaW5pdCdzIHdyaXRlIGZhaWxlZCAod2hpY2ggcGlja3MgdGhlIHNob3J0IHJldHJ5IGludGVydmFsKS4gKi9cbiAgICBwdWJsaWMgc3RhcnQoZmFpbGVkQXRTdGFydHVwOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGUoZmFpbGVkQXRTdGFydHVwICYmIENPTkZJR19XUklURV9SRVRSWV9JTlRFUlZBTCB8fCBDT05GSUdfV1JJVEVfUkVGUkVTSF9JTlRFUlZBTCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzcG9zZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy50aW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY2hlZHVsZShkZWxheTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm47XG4gICAgICAgIGlmICh0aGlzLnRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50aW1lciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHZvaWQgdGhpcy5yZXdyaXRlKCkuY2F0Y2goKGU6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgUmV3cml0aW5nIHRoZSBzdG9yYWdlIHJvdXRpbmcgY29uZmlnIGZvciAke3RoaXMuY29uZmlnLmRlYnVnTmFtZSgpfSBmYWlsZWQ6ICR7ZS5zdGFjayA/PyBlfWApO1xuICAgICAgICAgICAgICAgIHRoaXMuc2NoZWR1bGUoQ09ORklHX1dSSVRFX1JFVFJZX0lOVEVSVkFMKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBkZWxheSk7XG4gICAgICAgICh0aGlzLnRpbWVyIGFzIHsgdW5yZWY/OiAoKSA9PiB2b2lkIH0pLnVucmVmPy4oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHJld3JpdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmRpc3Bvc2VkKSByZXR1cm47XG4gICAgICAgIGxldCBjb25maWd1cmVkID0gdGhpcy5jb25maWcuY29uZmlndXJlZDtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5jb25maWcubGF0ZXN0KCk7XG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGUoQ09ORklHX1dSSVRFX1JFVFJZX0lOVEVSVkFMKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgYnVja2V0IGFkb3B0ZWQgYSBORVdFUiBjb25maWcgdGhhbiBvdXIgaW4tY29kZSBvbmUsIHNvIG91cnMgaXMgc3RhbGUgYW5kIGV2ZXJ5IHN0b3JlIHdvdWxkIChyaWdodGx5KSByZWZ1c2UgaXRcbiAgICAgICAgaWYgKGdldENvbmZpZ1ZlcnNpb24oc3RhdGUuY29uZmlnKSA+IGdldENvbmZpZ1ZlcnNpb24oY29uZmlndXJlZCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGUoQ09ORklHX1dSSVRFX1JFRlJFU0hfSU5URVJWQUwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNhbWUgdmVyc2lvbiBidXQgZGlmZmVyZW50IGNvbnRlbnQ6IHN0YXJ0dXAgYWxyZWFkeSBkZWNpZGVkIHRoZSBzdG9yZWQgb25lIHdpbnMgdW50aWwgdGhlIHZlcnNpb24gaXMgYnVtcGVkIChzZWUgY2hvb3NlU3RhcnR1cENvbmZpZyksIGFuZCByZS13cml0aW5nIG91cnMgd291bGQgZmxpcCB0aGUgYnVja2V0IGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIHR3b1xuICAgICAgICBpZiAoZ2V0Q29uZmlnVmVyc2lvbihzdGF0ZS5jb25maWcpID09PSBnZXRDb25maWdWZXJzaW9uKGNvbmZpZ3VyZWQpICYmIEpTT04uc3RyaW5naWZ5KHN0YXRlLmNvbmZpZykgIT09IEpTT04uc3RyaW5naWZ5KGNvbmZpZ3VyZWQpKSB7XG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlKENPTkZJR19XUklURV9SRUZSRVNIX0lOVEVSVkFMKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgeyBmYWlsdXJlcywgdG90YWwgfSA9IGF3YWl0IHdyaXRlUm91dGluZ1RvQWxsU3RvcmVzKHsgY29uZmlndXJlZCwgc291cmNlczogc3RhdGUuc291cmNlcywgZGVidWdOYW1lOiB0aGlzLmNvbmZpZy5kZWJ1Z05hbWUoKSB9KTtcbiAgICAgICAgaWYgKGZhaWx1cmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIHBlcmlvZGljIHJvdXRpbmcgY29uZmlnIHdyaXRlIGZvciAke3RoaXMuY29uZmlnLmRlYnVnTmFtZSgpfSAodmVyc2lvbiAke2dldENvbmZpZ1ZlcnNpb24oY29uZmlndXJlZCl9KSBmYWlsZWQgb24gJHtmYWlsdXJlcy5sZW5ndGh9IG9mICR7dG90YWx9IHN0b3JlcyAtIHJldHJ5aW5nIGluICR7Q09ORklHX1dSSVRFX1JFVFJZX0lOVEVSVkFMIC8gMTAwMH1zOiAke2ZhaWx1cmVzLmpvaW4oXCIgfCBcIil9YCk7XG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlKENPTkZJR19XUklURV9SRVRSWV9JTlRFUlZBTCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zY2hlZHVsZShDT05GSUdfV1JJVEVfUkVGUkVTSF9JTlRFUlZBTCk7XG4gICAgfVxufVxuIl19
469
+ /* _JS_SOURCE_HASH = "1bec7627fa84c567d50be88e93c5ae4b2e228478230d1cd360dcde9eb2e8829d"; */
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
3
  //exports.getFlag = exports.getArg = void 0;
4
4
  function getArg(name) {
@@ -18,4 +18,4 @@ function getFlag(name) {
18
18
  }
19
19
  exports.getFlag = getFlag;
20
20
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpQXJncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsaUFyZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsTUFBTSxDQUFDLElBQVk7SUFDL0IsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLElBQUksS0FBSyxHQUFHLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNoQyxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBUkQsd0JBUUM7QUFFRCxpR0FBaUc7QUFDakcsU0FBZ0IsT0FBTyxDQUFDLElBQVk7SUFDaEMsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUZELDBCQUVDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldEFyZyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGxldCBpbmRleCA9IHByb2Nlc3MuYXJndi5pbmRleE9mKGAtLSR7bmFtZX1gKTtcbiAgICBpZiAoaW5kZXggPCAwKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGxldCB2YWx1ZSA9IHByb2Nlc3MuYXJndltpbmRleCArIDFdO1xuICAgIGlmICghdmFsdWUgfHwgdmFsdWUuc3RhcnRzV2l0aChcIi0tXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyB2YWx1ZSBmb3IgLS0ke25hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqIEEgdmFsdWVsZXNzIGJvb2xlYW4gZmxhZzogdHJ1ZSB3aGVuIC0tbmFtZSBpcyBwcmVzZW50ICh3aXRoIG5vdGhpbmcsIG9yIGEgZm9sbG93aW5nIGZsYWcpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZsYWcobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHByb2Nlc3MuYXJndi5pbmNsdWRlcyhgLS0ke25hbWV9YCk7XG59XG4iXX0=
21
- /* _JS_SOURCE_HASH = "b0659c03406d03521ce38ac5f9ba314dcb2b4184db0b749117b20795220c3d97"; */
21
+ /* _JS_SOURCE_HASH = "278be05b4cc3ee4341865f15340f300a4c0f6ac3f0e3961e2de17b9f1108db2a"; */