tnp-core 18.0.40 → 18.0.42

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 (46) hide show
  1. package/README.md +20 -20
  2. package/assets/shared/shared_folder_info.txt +1 -1
  3. package/browser/README.md +24 -24
  4. package/browser/esm2022/lib/core-imports.mjs +4 -1
  5. package/browser/esm2022/lib/helpers-messages.mjs +28 -16
  6. package/browser/esm2022/lib/utils.mjs +37 -2
  7. package/browser/fesm2022/tnp-core.mjs +66 -17
  8. package/browser/fesm2022/tnp-core.mjs.map +1 -1
  9. package/browser/lib/helpers-messages.d.ts +5 -0
  10. package/browser/lib/utils.d.ts +9 -0
  11. package/cli.backend.js +2 -2
  12. package/client/README.md +24 -24
  13. package/client/esm2022/lib/core-imports.mjs +4 -1
  14. package/client/esm2022/lib/helpers-messages.mjs +28 -16
  15. package/client/esm2022/lib/utils.mjs +37 -2
  16. package/client/fesm2022/tnp-core.mjs +66 -17
  17. package/client/fesm2022/tnp-core.mjs.map +1 -1
  18. package/client/lib/helpers-messages.d.ts +5 -0
  19. package/client/lib/utils.d.ts +9 -0
  20. package/lib/core-imports.d.ts +5 -1
  21. package/lib/core-imports.js.map +1 -1
  22. package/lib/helpers-messages.d.ts +5 -0
  23. package/lib/helpers-messages.js +39 -16
  24. package/lib/helpers-messages.js.map +1 -1
  25. package/lib/node-chalk-mock.js +2 -2
  26. package/lib/node-path-mock.js +2 -2
  27. package/lib/utils.d.ts +9 -0
  28. package/lib/utils.js +63 -23
  29. package/lib/utils.js.map +1 -1
  30. package/migrations/index.d.ts +1 -0
  31. package/migrations/index.js +6 -0
  32. package/migrations/index.js.map +1 -0
  33. package/migrations/migrations_index._auto-generated_.d.ts +0 -0
  34. package/migrations/migrations_index._auto-generated_.js +4 -0
  35. package/migrations/migrations_index._auto-generated_.js.map +1 -0
  36. package/package.json +2 -2
  37. package/taon.jsonc +65 -65
  38. package/tmp-environment.json +32 -29
  39. package/websql/README.md +24 -24
  40. package/websql/esm2022/lib/core-imports.mjs +4 -1
  41. package/websql/esm2022/lib/helpers-messages.mjs +28 -16
  42. package/websql/esm2022/lib/utils.mjs +37 -2
  43. package/websql/fesm2022/tnp-core.mjs +66 -17
  44. package/websql/fesm2022/tnp-core.mjs.map +1 -1
  45. package/websql/lib/helpers-messages.d.ts +5 -0
  46. package/websql/lib/utils.d.ts +9 -0
@@ -1,6 +1,7 @@
1
1
  import { CoreModels } from './core-models';
2
2
  import axios from 'axios';
3
- import { path, } from './core-imports'; /* */
3
+ import { path, _, } from './core-imports'; /* */
4
+ import { dateformat } from './core-imports';
4
5
  /* */
5
6
  /* */
6
7
  /* */
@@ -670,6 +671,7 @@ export var UtilsOs;
670
671
  * windows subsystem for linux (WSL).
671
672
  */
672
673
  UtilsOs.isRunningInWsl = () => {
674
+ return false;
673
675
  /* */
674
676
  /* */
675
677
  /* */
@@ -690,6 +692,7 @@ export var UtilsOs;
690
692
  return (void 0);
691
693
  };
692
694
  UtilsOs.isRunningInDocker = () => {
695
+ return false;
693
696
  /* */
694
697
  /* */
695
698
  /* */
@@ -719,6 +722,38 @@ export var UtilsString;
719
722
  .toLowerCase());
720
723
  };
721
724
  })(UtilsString || (UtilsString = {}));
725
+ /**
726
+ * Taon migration utilities
727
+ */
728
+ export var UtilsMigrations;
729
+ (function (UtilsMigrations) {
730
+ UtilsMigrations.getTimestampFromClassName = (className) => {
731
+ const [maybeTimestamp1, maybeTimestamp2] = className.split('_') || [];
732
+ const timestamp1 = parseInt(maybeTimestamp1);
733
+ const timestamp2 = parseInt(maybeTimestamp2);
734
+ const timestamp = !_.isNaN(timestamp1) ? timestamp1 : timestamp2;
735
+ return UtilsMigrations.isValidTimestamp(timestamp) ? timestamp : void 0;
736
+ };
737
+ UtilsMigrations.getFormattedTimestampFromClassName = (className) => {
738
+ const timestamp = UtilsMigrations.getTimestampFromClassName(className);
739
+ if (!timestamp) {
740
+ return void 0;
741
+ }
742
+ return UtilsMigrations.formatTimestamp(timestamp);
743
+ };
744
+ UtilsMigrations.formatTimestamp = (timestamp) => {
745
+ const dateFromTimestamp = new Date(timestamp);
746
+ return `${dateformat(dateFromTimestamp, 'dd-mm-yyyy HH:MM:ss')}`;
747
+ };
748
+ UtilsMigrations.isValidTimestamp = (value) => {
749
+ if (typeof value !== 'number') {
750
+ return false; // Must be a number
751
+ }
752
+ const minTimestamp = 0; // Minimum possible timestamp (Unix epoch)
753
+ const maxTimestamp = 8640000000000000; // Max safe timestamp in JS (represents year ~275760)
754
+ return value >= minTimestamp && value <= maxTimestamp;
755
+ };
756
+ })(UtilsMigrations || (UtilsMigrations = {}));
722
757
  ;
723
758
  ({}); // @--end-of-file-for-module=tnp-core lib/utils.ts
724
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdG5wLWNvcmUvcHJvamVjdHMvdG5wLWNvcmUvc3JjL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUM7QUFDN0MsT0FBTyxFQUFJLElBQUksR0FBa0QsTUFBTSxnQkFBZ0IsQ0FBQyxDQUFBLEtBQUs7QUFVN0YsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUdMLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxDQUFDO0FBR3RDLE1BQU0sS0FBVyxLQUFLLENBa25CckI7QUFsbkJELFdBQWlCLEtBQUs7SUFFUCxlQUFTLEdBQUcsQ0FDdkIsS0FBWSxFQUNaLGNBQXdCLEVBQ3hCLEVBQUU7UUFDRixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZCxPQUFPLEtBQUs7YUFDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hCLE1BQU0sQ0FBQyxVQUFVLElBQUk7WUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RFLENBQUMsQ0FBQyxLQUFLO2dCQUNQLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFRLENBQUM7SUFDZCxDQUFDLENBQUM7SUFJRjs7O09BR0c7SUFDVSwwQkFBb0IsR0FBRyxDQUFDLGVBQXVCLEVBQUUs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Q0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLCtCQUFrQixHQUFHLEdBVXpCLEVBQUU7UUFFVCxPQUFPLFNBQVMsQ0FBQztRQUVyQixLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztBQUVKLENBQUMsRUFyUWdCLFlBQVksS0FBWixZQUFZLFFBcVE1QjtBQUtELE1BQU0sS0FBVyxPQUFPLENBeUl2QjtBQXpJRCxXQUFpQixPQUFPO0lBRXRCOzs7O09BSUc7SUFDVSwwQkFBa0IsR0FBRyxHQUFZLEVBQUU7UUFDbEQsS0FBSztRQUNMLEtBQUs7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUlGOzs7T0FHRztJQUNVLHVCQUFlLEdBQUcsR0FBWSxFQUFFO1FBQy9DLEtBQUs7UUFDTCxLQUFLO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7SUFJRjs7OztPQUlHO0lBQ1UseUJBQWlCLEdBQUcsR0FBWSxFQUFFO1FBQ2pELEtBQUs7UUFDTCxLQUFLO1FBSUQsT0FBTyxJQUFJLENBQUM7UUFFWixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUlGOzs7T0FHRztJQUNVLDJCQUFtQixHQUFHLEdBQVksRUFBRTtRQUUvQyxhQUFhO1FBQ2IsSUFDRSxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQzdCLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxRQUFRO1lBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFDbEMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUdELGFBQWE7UUFDYixJQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVc7WUFDOUIsT0FBTyxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVE7WUFDcEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUMzQixDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBR0QsSUFDRSxPQUFPLFNBQVMsS0FBSyxRQUFRO1lBQzdCLE9BQU8sU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRO1lBQ3ZDLFNBQVMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFDNUMsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBSUY7OztPQUdHO0lBQ1Usc0JBQWMsR0FBRyxHQUFZLEVBQUU7UUFDOUMsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJVyx5QkFBaUIsR0FBRyxHQUFZLEVBQUU7UUFDakQsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlXLGtEQUEwQyxHQUFHLEdBQVksRUFBRTtRQUMxRSxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0FBRUosQ0FBQyxFQXpJZ0IsT0FBTyxLQUFQLE9BQU8sUUF5SXZCO0FBSUQsTUFBTSxLQUFXLFdBQVcsQ0FjM0I7QUFkRCxXQUFpQixXQUFXO0lBRWIsbUNBQXVCLEdBQUcsQ0FBQyxLQUFhLEVBQVUsRUFBRTtRQUMvRCxPQUFPLENBQ0wsS0FBSzthQUVGLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDO2FBRXBCLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxPQUFPLENBQUM7YUFFdEMsV0FBVyxFQUFFLENBQ2pCLENBQUM7SUFDSixDQUFDLENBQUM7QUFFSixDQUFDLEVBZGdCLFdBQVcsS0FBWCxXQUFXLFFBYzNCO0FBR0EsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrREFBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgQ29yZU1vZGVscyB9IGZyb20gJy4vY29yZS1tb2RlbHMnO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVzcG9uc2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyAgIHBhdGgsICAgXywgICBjcm9zc1BsYXRmb3JtUGF0aCwgLyogKi8gLyogKi8gLyogKi8gICAgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7LyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICcuL2luZGV4Jztcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5jb25zdCBCTE9CX1NVUFBPUlRFRF9JTl9TUUxKUyA9IGZhbHNlO1xuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVXRpbHMge1xuXG4gIGV4cG9ydCBjb25zdCB1bmlxQXJyYXkgPSA8VCA9IGFueT4oXG4gICAgYXJyYXk6IGFueVtdLFxuICAgIHVuaXF1ZVByb3BlcnR5Pzoga2V5b2YgVCxcbiAgKSA9PiB7XG4gICAgdmFyIHNlZW4gPSB7fTtcbiAgICByZXR1cm4gYXJyYXlcbiAgICAgIC5maWx0ZXIoZiA9PiAhIWYpXG4gICAgICAuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHJldHVybiBzZWVuLmhhc093blByb3BlcnR5KHVuaXF1ZVByb3BlcnR5ID8gaXRlbVt1bmlxdWVQcm9wZXJ0eV0gOiBpdGVtKVxuICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICA6IChzZWVuW3VuaXF1ZVByb3BlcnR5ID8gaXRlbVt1bmlxdWVQcm9wZXJ0eV0gOiBpdGVtXSA9IHRydWUpO1xuICAgICAgfSkgYXMgVFtdO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogRXhhbXBsZTpcbiAgICogbmV3IFJlZ0V4cChlc2NhcGVTdHJpbmdGb3JSZWdFeCgnYS5iLmMnKSwnZycpID0+IC9hXFwuYlxcLmMvZ1xuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGVzY2FwZVN0cmluZ0ZvclJlZ0V4ID0gKHN0cmluZ0ZvclJlZ0V4cDogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHN0cmluZ0ZvclJlZ0V4cC5yZXBsYWNlKC9bLVxcL1xcXFxeJCorPy4oKXxbXFxde31dL2csICdcXFxcJCYnKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUNoYWxrU3BlY2lhbENoYXJzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcblxuICAgIGNvbnN0IGFuc2lSZWdleCA9IC9cXHUwMDFiXFxbWzAtOTtdKm0vZztcblxuXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKGFuc2lSZWdleCwgJycpO1xuICB9XG5cblxuXG4gIGV4cG9ydCBjb25zdCBmdWxsRGF0ZVRpbWUgPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBmdWxsRGF0ZSA9ICgpID0+IHtcbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgY29uc3QgdGFrZW5Qb3J0cyA9IFtdO1xuICBleHBvcnQgY29uc3QgZ2V0RnJlZVBvcnQgPSBhc3luYyAob3B0aW9ucz86IHtcbiAgICBzdGFydEZyb20/OiBudW1iZXI7XG4gICAgaG93TWFueUZyZWVQb3J0c0FmdGVyVGhhdFBvcnQ/OiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgaW50ZXJmYWNlIEF0dHJKc29uY1Byb3Age1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZT86IGFueTtcbiAgfVxuICBleHBvcnQgbmFtZXNwYWNlIGpzb24ge1xuICAgIGV4cG9ydCBjb25zdCBnZXRBdHJyaWJ1dGllcyA9IChcbiAgICAgIGpzb25EZWVwUGF0aDogc3RyaW5nLCAvLyBsb2Rhc2ggcGF0aCB0byBwcm9wZXJ0eSBpbiBqc29uIGV4LiBkZWVwLnBhdGgudG8ucHJvcFxuICAgICAgZmlsZUNvbnRlbnQ6IHN0cmluZywgLy8ganNvbmMgb3IganNvbjUgLSBqc29uIHdpdGggY29tbWVudHNcbiAgICApOiBBdHRySnNvbmNQcm9wW10gPT4ge1xuICAgICAgY29uc3QgbGluZXMgPSBmaWxlQ29udGVudC5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIGNvbnN0IHBhdGhQYXJ0cyA9IGpzb25EZWVwUGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYSwgYikgPT4ge1xuICAgICAgICBpZiAoYS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gW2JdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3Q6IHN0cmluZyA9IGFbYS5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChsYXN0LnN0YXJ0c1dpdGgoYFsnYCkgJiYgYi5lbmRzV2l0aChgJ11gKSkgfHxcbiAgICAgICAgICAobGFzdC5zdGFydHNXaXRoKGBbXCJgKSAmJiBiLmVuZHNXaXRoKGBcIl1gKSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgYVthLmxlbmd0aCAtIDFdID0gW2xhc3QsIGJdLmpvaW4oJy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhLnB1c2goYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9LCBbXSk7XG5cblxuICAgICAgY29uc3Qga2V5TmFtZSA9IHBhdGhQYXJ0cy5wb3AoKSEucmVwbGFjZSgvXlxcW1wiKC4rKVwiXFxdJC8sICckMScpO1xuICAgICAgbGV0IGN1cnJlbnRQYXRoID0gJyc7XG4gICAgICBsZXQgYXR0cmlidXRlczogQXR0ckpzb25jUHJvcFtdID0gW107XG4gICAgICBsZXQgY29sbGVjdGVkQ29tbWVudHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBjb25zdCB0cmltbWVkTGluZSA9IGxpbmUudHJpbSgpO1xuXG4gICAgICAgIGlmICh0cmltbWVkTGluZS5zdGFydHNXaXRoKCcvLycpKSB7XG5cbiAgICAgICAgICBjb2xsZWN0ZWRDb21tZW50cy5wdXNoKHRyaW1tZWRMaW5lKTtcblxuXG4gICAgICAgIH0gZWxzZSBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aCgnXCInKSB8fCB0cmltbWVkTGluZS5zdGFydHNXaXRoKFwiJ1wiKSkge1xuXG4gICAgICAgICAgY29uc3QgbWF0Y2ggPSB0cmltbWVkTGluZS5tYXRjaCgvW1wiJ10oW15cIiddKylbXCInXVxccyo6Lyk7XG5cbiAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgY3VycmVudFBhdGggPSBjdXJyZW50UGF0aFxuICAgICAgICAgICAgICA/IGAke2N1cnJlbnRQYXRofS4ke2tleS5pbmNsdWRlcygnLicpID8gYFsnJHtrZXl9J11gIDoga2V5fWBcbiAgICAgICAgICAgICAgOiBrZXk7XG5cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAoY3VycmVudFBhdGguZW5kc1dpdGgoa2V5TmFtZSkgJiZcbiAgICAgICAgICAgICAgICAhY3VycmVudFBhdGguZW5kc1dpdGgoJy8nICsga2V5TmFtZSkpIHx8XG4gICAgICAgICAgICAgIGN1cnJlbnRQYXRoLmVuZHNXaXRoKGBbJyR7a2V5TmFtZX0nXWApXG4gICAgICAgICAgICApIHtcblxuXG5cblxuXG4gICAgICAgICAgICAgIGF0dHJpYnV0ZXMgPSBleHRyYWN0QXR0cmlidXRlc0Zyb21Db21tZW50cyhjb2xsZWN0ZWRDb21tZW50cyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGNvbGxlY3RlZENvbW1lbnRzID0gW107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH07XG5cbiAgICBjb25zdCBleHRyYWN0QXR0cmlidXRlc0Zyb21Db21tZW50cyA9IChcbiAgICAgIGNvbW1lbnRzOiBzdHJpbmdbXSxcbiAgICApOiBBdHRySnNvbmNQcm9wW10gPT4ge1xuICAgICAgY29uc3QgYXR0cmlidXRlczogQXR0ckpzb25jUHJvcFtdID0gW107XG4gICAgICBjb25zdCBhdHRyUmVnZXggPSAvQChcXHcrKSg/Olxccyo9XFxzKihbXlxcc0BdKykpPy9nO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICB3aGlsZSAoKG1hdGNoID0gYXR0clJlZ2V4LmV4ZWMoY29tbWVudCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgWywgbmFtZSwgdmFsdWVdID0gbWF0Y2g7XG5cbiAgICAgICAgICBjb25zdCBleGlzdGluZ0F0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMuZmluZChcbiAgICAgICAgICAgIGF0dHIgPT4gYXR0ci5uYW1lID09PSBgQCR7bmFtZX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZXhpc3RpbmdBdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZS5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSA9IFtleGlzdGluZ0F0dHJpYnV0ZS52YWx1ZSwgdmFsdWVdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IGBAJHtuYW1lfWAsXG4gICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSA/IHZhbHVlIDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG5cbiAgICAgIGF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyID0+IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXR0ci52YWx1ZSkgJiYgYXR0ci52YWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBhdHRyLnZhbHVlID0gYXR0ci52YWx1ZVswXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBhdHRyaWJ1dGVzO1xuICAgIH07XG4gIH1cblxuXG5cblxuXG4gIGV4cG9ydCBlbnVtIERiQmluYXJ5Rm9ybWF0RW51bSB7XG4gICAgQmxvYiA9ICdCbG9iJyxcbiAgICBGaWxlID0gJ0ZpbGUnLFxuICAgIHN0cmluZyA9ICdzdHJpbmcnLFxuLyogKi9cbi8qICovXG4gIFxuICB9XG5cbiAgZXhwb3J0IHR5cGUgRGJCaW5hcnlGb3JtYXRGb3JCcm93c2VyID0gQmxvYiB8IEZpbGUgfCBzdHJpbmc7XG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgLyoqXG4gICAqIEJpbmFyeSBmb3JtYXQgdGhhdCBjYW4gYmUgc3RvcmVkIGluIGRhdGFiYXNlXG4gICAqXG4gICAqIGZvciBub2RlanMgPT4gQnVmZmVyXG4gICAqIGZvciBzcWwuanMgPT4gc3RyaW5nIChzaG91bGIgYmUgYmxvYiAtIGJ1dCBub3Qgc3VwcG9ydGVkKVxuICAgKlxuICAgKi9cbiAgZXhwb3J0IHR5cGUgRGJCaW5hcnlGb3JtYXQgPVxuICAgIHwgRGJCaW5hcnlGb3JtYXRGb3JCcm93c2VyXG4vKiAqL1xuLyogKi9cbiAgXG5cbiAgZXhwb3J0IG5hbWVzcGFjZSBiaW5hcnkge1xuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGZvciBCUk9XU0VSIE9OTFlcbiAgICAgKlxuICAgICAqIEBwYXJhbSBidWZmZXJcbiAgICAgKiBAcGFyYW0gY29udGVudFR5cGVcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcnJheUJ1ZmZlclRvQmxvYihcbiAgICAgIGJ1ZmZlcjogQXJyYXlCdWZmZXIsXG4gICAgICBjb250ZW50VHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSxcbiAgICApOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgQmxvYihbYnVmZmVyXSwgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcbiAgICB9XG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGZvciBCUk9XU0VSIE9OTFlcbiAgICAgKiBAcGFyYW0gYmxvYlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0FycmF5QnVmZmVyKGJsb2I6IEJsb2IpOiBQcm9taXNlPEFycmF5QnVmZmVyPiB7XG4gICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVuZCcsICgpID0+IHtcbiAgICAgICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgYW55KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJlYWRlci5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIHJlamVjdCk7IC8vIEB0cy1pZ25vcmVcbiAgICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpO1xuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIGl0IGlzIHJldmVycyB0byBiYXNlNjR0b0Jsb2JcbiAgICAgKiBAcGFyYW0gYmxvYlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGJsb2JUb0Jhc2U2NChibG9iOiBCbG9iKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCBfKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpOyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIGl0IGlzIHJldmVycyB0byBibG9iVG9CYXNlNjQoKVxuICAgICAqIEBwYXJhbSBiYXNlNjREYXRhXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmFzZTY0dG9CbG9iKFxuICAgICAgYmFzZTY0RGF0YTogc3RyaW5nLFxuICAgICAgY29udGVudFR5cGVPdmVycmlkZT86IENvcmVNb2RlbHMuQ29udGVudFR5cGUsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICBsZXQgY29udGVudF90eXBlOiBDb3JlTW9kZWxzLkNvbnRlbnRUeXBlID0gdm9pZCAwIGFzIGFueTtcbiAgICAgIGxldCBmaWxlX2Jhc2U2NDogc3RyaW5nID0gdm9pZCAwIGFzIGFueTtcbiAgICAgIGlmICghY29udGVudFR5cGVPdmVycmlkZSkge1xuICAgICAgICBjb25zdCBtID0gL15kYXRhOiguKz8pO2Jhc2U2NCwoLispJC8uZXhlYyhiYXNlNjREYXRhKTtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFt0YW9uLWZyYW1ld29ya11bYmFzZTY0dG9CbG9iXSBOb3QgYSBiYXNlNjQgYmxvYiBbJHtiYXNlNjREYXRhfV1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgW19fLCBjb250ZW50dHlwZSwgZmlsZWJhc2U2NF0gPSBtO1xuICAgICAgICBjb250ZW50X3R5cGUgPSBjb250ZW50dHlwZSBhcyBhbnk7XG4gICAgICAgIGZpbGVfYmFzZTY0ID0gZmlsZWJhc2U2NDtcbiAgICAgIH1cbiAgICAgIGNvbnRlbnRfdHlwZSA9IChcbiAgICAgICAgY29udGVudFR5cGVPdmVycmlkZSA/IGNvbnRlbnRUeXBlT3ZlcnJpZGUgOiBjb250ZW50X3R5cGUgfHwgJydcbiAgICAgICkgYXMgYW55O1xuICAgICAgYmFzZTY0RGF0YSA9IGNvbnRlbnRUeXBlT3ZlcnJpZGUgPyBiYXNlNjREYXRhIDogZmlsZV9iYXNlNjQ7XG4gICAgICBjb25zdCBzbGljZVNpemUgPSAxMDI0O1xuICAgICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xuICAgICAgY29uc3QgYnl0ZXNMZW5ndGggPSBieXRlQ2hhcmFjdGVycy5sZW5ndGg7XG4gICAgICBjb25zdCBzbGljZXNDb3VudCA9IE1hdGguY2VpbChieXRlc0xlbmd0aCAvIHNsaWNlU2l6ZSk7XG4gICAgICBjb25zdCBieXRlQXJyYXlzID0gbmV3IEFycmF5KHNsaWNlc0NvdW50KTtcblxuICAgICAgZm9yIChsZXQgc2xpY2VJbmRleCA9IDA7IHNsaWNlSW5kZXggPCBzbGljZXNDb3VudDsgKytzbGljZUluZGV4KSB7XG4gICAgICAgIGNvbnN0IGJlZ2luID0gc2xpY2VJbmRleCAqIHNsaWNlU2l6ZTtcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oYmVnaW4gKyBzbGljZVNpemUsIGJ5dGVzTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBieXRlcyA9IG5ldyBBcnJheShlbmQgLSBiZWdpbik7XG5cbiAgICAgICAgZm9yIChsZXQgb2Zmc2V0ID0gYmVnaW4sIGkgPSAwOyBvZmZzZXQgPCBlbmQ7ICsraSwgKytvZmZzZXQpIHtcbiAgICAgICAgICBieXRlc1tpXSA9IGJ5dGVDaGFyYWN0ZXJzW29mZnNldF0uY2hhckNvZGVBdCgwKTtcbiAgICAgICAgfVxuICAgICAgICBieXRlQXJyYXlzW3NsaWNlSW5kZXhdID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBCbG9iKGJ5dGVBcnJheXMsIHsgdHlwZTogY29udGVudF90eXBlIH0pO1xuICAgIH1cblxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBiYXNlNjR0b0RiQmluYXJ5Rm9ybWF0KFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICk6IFByb21pc2U8RGJCaW5hcnlGb3JtYXQ+IHtcbiAgICAgIGxldCByZXN1bHQ6IERiQmluYXJ5Rm9ybWF0O1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCBibG9iID0gYXdhaXQgYmFzZTY0dG9CbG9iKHRleHQpO1xuICAgICAgICAgIHJldHVybiBibG9iO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkYkJpbmFyeUZvcm1hdFRvQmFzZTY0KFxuICAgICAgYmluYXJ5Rm9ybWF0OiBEYkJpbmFyeUZvcm1hdCxcbiAgICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgYmxvYlRvQmFzZTY0KGJpbmFyeUZvcm1hdCBhcyBhbnkpO1xuICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiaW5hcnlGb3JtYXQgYXMgYW55O1xuICAgICAgfSkoKTtcblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9EYkJpbmFyeUZvcm1hdChcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPERiQmluYXJ5Rm9ybWF0PiB7XG4gICAgICBsZXQgcmVzdWx0OiBEYkJpbmFyeUZvcm1hdDtcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHRleHRUb0Jsb2IodGV4dCk7XG4gICAgICAgICAgcmV0dXJuIGJsb2I7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRleHQgYXMgYW55O1xuICAgICAgfSkoKTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRiQmluYXJ5Rm9ybWF0VG9UZXh0KFxuICAgICAgYmluYXJ5Rm9ybWF0OiBEYkJpbmFyeUZvcm1hdCxcbiAgICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nO1xuXG4gICAgICByZXN1bHQgPSBhd2FpdCAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoQkxPQl9TVVBQT1JURURfSU5fU1FMSlMpIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgYmxvYlRvVGV4dChiaW5hcnlGb3JtYXQgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmluYXJ5Rm9ybWF0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZmlsZVRvQmxvYihmaWxlOiBGaWxlKSB7XG4gICAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBVaW50OEFycmF5KGF3YWl0IGZpbGUuYXJyYXlCdWZmZXIoKSldLCB7XG4gICAgICAgIHR5cGU6IGZpbGUudHlwZSxcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvRmlsZShcbiAgICAgIGJsb2I6IEJsb2IsXG4gICAgICBuYW1lRm9yRmlsZTogc3RyaW5nID0gJ215LWZpbGUtbmFtZScsXG4gICAgKTogUHJvbWlzZTxGaWxlPiB7XG4gICAgICBpZiAoIW5hbWVGb3JGaWxlKSB7XG4gICAgICAgIG5hbWVGb3JGaWxlID0gJ25vbmFtZWZpbGUnICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IEZpbGUoW2Jsb2JdLCBuYW1lRm9yRmlsZSk7XG4gICAgfVxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9CbG9iKFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgdHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSA9ICd0ZXh0L3BsYWluJyxcbiAgICApOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbdGV4dF0sIHsgdHlwZSB9KTtcbiAgICAgIHJldHVybiBibG9iO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlRvVGV4dChibG9iOiBCbG9iKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIHJldHVybiBhd2FpdCBibG9iLnRleHQoKTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRleHRUb0ZpbGUoXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgICBmaWxlUmVsYXRpdmVQYXRoT3JOYW1lOiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxGaWxlPiB7XG5cbiAgICAgIGNvbnN0IGV4dCA9IHBhdGguZXh0bmFtZShmaWxlUmVsYXRpdmVQYXRoT3JOYW1lKTtcblxuICAgICAgY29uc3QgdHlwZSA9IENvcmVNb2RlbHMubWltZVR5cGVzW2V4dF07XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RleHRdLCB7IHR5cGUgfSk7XG4gICAgICBjb25zdCBmaWxlID0gYXdhaXQgYmxvYlRvRmlsZShibG9iLCBmaWxlUmVsYXRpdmVQYXRoT3JOYW1lKTtcblxuXG5cblxuXG4gICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbGVUb1RleHQoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gYXdhaXQgZmlsZS50ZXh0KCk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBqc29uVG9CbG9iKGpzb25PYmo6IG9iamVjdCk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShqc29uT2JqLCBudWxsLCAyKV0sIHtcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYmxvYjtcbiAgICB9XG5cblxuXG4gICAgLyoqXG4gICAgICogVE9ETyBOT1QgVEVTVEVEXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0pzb24oYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShhd2FpdCBibG9iLnRleHQoKSk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRCbG9iRnJvbSh1cmw6IHN0cmluZyk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IEF4aW9zUmVzcG9uc2U8QmxvYj4gPSBhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybCxcbiAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYicsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH1cblxuICB9XG5cblxuXG4gIGV4cG9ydCBuYW1lc3BhY2UgY3NzIHtcblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIHBpeGVsc0NzcyBwaXhlbHMgZXguIDEwMHB4XG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgZnVuY3Rpb24gbnVtVmFsdWUocGl4ZWxzQ3NzOiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIge1xuXG4gICAgICByZXR1cm4gcGFyc2VJbnQoXG4gICAgICAgIHBpeGVsc0Nzcz8udG9TdHJpbmcoKT8ucmVwbGFjZSgncHgnLCAnJyksXG5cblxuICAgICAgKTtcbiAgICB9XG5cbiAgfVxuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzUHJvY2VzcyB7XG5cbiAgZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzU3RhcnRPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBieSBkZWZhdWx0IGlzIHByb2Nlc3MuY3dkKCk7XG4gICAgICovXG4gICAgY3dkPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIGJ5IGRlZmF1bHQgaXMgZmFsc2VcbiAgICAgKi9cbiAgICBzaG93Q29tbWFuZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogTW9kaWZ5IG91dHB1dCBsaW5lIGJ5IGxpbmVcbiAgICAgKi9cbiAgICBvdXRwdXRMaW5lUmVwbGFjZT86IChvdXRwdXRMaW5lU3RkZXJPclN0ZG91dDogc3RyaW5nKSA9PiBzdHJpbmc7XG4gICAgcmVzb2x2ZVByb21pc2VNc2c/OiB7XG4gICAgICAvKipcbiAgICAgICAqIHVudGlsIHRoaXMgc3RyaW5nIGlzIGluIG91dHB1dCBvZiBzdGRvdXRcbiAgICAgICAqL1xuICAgICAgc3Rkb3V0Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIHVudGlsIHRoaXMgc3RyaW5nIGlzIGluIG91dHB1dCBvZiBzdGRlcnJcbiAgICAgICAqL1xuICAgICAgc3RkZXJyPzogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgICAvKipcbiAgICAgICAqIGJ5IGRlZmF1bHQgb25seSByZXNvbHZlIHdoZW4gZXhpdCBjb2RlIGlzIDBcbiAgICAgICAqL1xuICAgICAgcmVzb2x2ZUFmdGVyQW55RXhpdENvZGU/OiBib29sZWFuO1xuICAgIH07XG4gICAgLyoqXG4gICAgICogUHJlZml4IG1lc3NhZ2VzIG91dHB1dCBmcm9tIGNoaWxkX3Byb2Nlc3NcbiAgICAgKi9cbiAgICBwcmVmaXg/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVHJ5IGNvbW1hbmQgYWdhaW4gYWZ0ZXIgZmFpbCBhZnRlciBuIG1pbGxpc2Vjb25kc1xuICAgICAqL1xuICAgIHRyeUFnYWluV2hlbkZhaWxBZnRlcj86IG51bWJlcjtcbiAgICBhc2tUb1RyeUFnYWluT25FcnJvcj86IGJvb2xlYW47XG4gICAgZXhpdE9uRXJyb3JDYWxsYmFjaz86IChjb2RlOiBudW1iZXIpID0+IHZvaWQ7XG4gICAgLyoqXG4gICAgICogVXNlIGJpZyBidWZmZXIgZm9yIGJpZyB3ZWJwYWNrIGxvZ3NcbiAgICAgKiAoaXQgbWF5IHNsb3cgZG93biBzbWFsbGVyIHByb2Nlc3NlcyBleGVjdXRpb24pXG4gICAgICovXG4gICAgYmlnZ2VyQnVmZmVyPzogYm9vbGVhbjtcbiAgICBoaWRlT3V0cHV0Pzoge1xuICAgICAgc3Rkb3V0PzogYm9vbGVhbjtcbiAgICAgIHN0ZGVycj86IGJvb2xlYW47XG4gICAgfTtcbiAgfVxuXG5cblxuICAvKipcbiAgICogVE9ETyBJTVBMRU1FTlRcbiAgICogc3RhcnQgYXN5bmMgbm9kZSBwcm9jZXNzXG4gICAqL1xuICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRBc3luYyhcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFByb2Nlc3NTdGFydE9wdGlvbnMsXG4gICkge1xuXG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFRPRE8gSU1QTEVNRU5UXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gc3RhcnRTeW5jKGNvbW1hbmQ6IHN0cmluZywgb3B0aW9ucz86IFByb2Nlc3NTdGFydE9wdGlvbnMpIHtcblxuICB9XG5cblxuXG4gIGV4cG9ydCBjb25zdCBnZXRHaXRCYXNoUGF0aCA9ICgpID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBUT0RPIElNUExFTUVOVFxuICAgKiBzdGFydCBhc3luYyBub2RlIHByb2Nlc3NcbiAgICovXG4gIGV4cG9ydCBjb25zdCBzdGFydEluTmV3VGVybWluYWxXaW5kb3cgPSAoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBQaWNrPFByb2Nlc3NTdGFydE9wdGlvbnMsICdjd2QnIHwgJ2hpZGVPdXRwdXQnPixcbiAgKSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBnZXRCYXNoT3JTaGVsbE5hbWUgPSAoKTpcbiAgICB8ICdicm93c2VyJ1xuICAgIHwgJ2NtZCdcbiAgICB8ICdwb3dlcnNoZWxsJ1xuICAgIHwgJ2dpdGJhc2gnXG4gICAgfCAnY3lnd2luJ1xuICAgIHwgJ3Vua25vd24nXG4gICAgfCAnYmFzaCdcbiAgICB8ICd6c2gnXG4gICAgfCAnZmlzaCdcbiAgICB8ICdzaCcgPT4ge1xuXG4gICAgcmV0dXJuICdicm93c2VyJztcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cbn1cblxuXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc09zIHtcblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gY2xpZW50IGJyb3dzZXJcbiAgICogKHdlYnNxbCBtb2RlbCAtPiBpcyBhbHNvIGNvbnNpZGVyZWQgYXMgYnJvd3NlclxuICAgKiBiZWNhdXNlIGl0IGlzIHJ1bm5pbmcgaW4gYnJvd3NlcilcbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkJyb3dzZXIgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBjaGVjayBpZiBzY3JpcHQgaXMgcnVubmluZyBpbiBub2RlanNcbiAgICogKGJhY2tlbmQgc2NyaXB0IG9yIGVsZWN0cm9uIHNjcmlwdClcbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbk5vZGUgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgc3BlY2lhbFxuICAgKiBicm93c2VyIG1vZGUgdGhhdCBoYXMgc3FsLmpzIGJhY2tlbmRcbiAgICogYW5kIGV4ZWN1dGVzIHNxbCBxdWVyaWVzIGluIGJyb3dzZXJcbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbldlYlNRTCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuICBcblxuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IHByb2Nlc3MgaXMgcnVubmluZyBpbnNpZGVcbiAgICogRWxlY3Ryb24gYmFja2VuZCBvciBicm93c2VyLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luRWxlY3Ryb24gPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiB3aW5kb3cucHJvY2VzcyA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcidcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdHlwZW9mIHByb2Nlc3MudmVyc2lvbnMgPT09ICdvYmplY3QnICYmXG4gICAgICAhIXByb2Nlc3MudmVyc2lvbnMuZWxlY3Ryb25cbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5hdmlnYXRvciA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBuYXZpZ2F0b3IudXNlckFnZW50ID09PSAnc3RyaW5nJyAmJlxuICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdFbGVjdHJvbicpID49IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIENoZWNrIHdldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW5zaWRlXG4gICAqIHdpbmRvd3Mgc3Vic3lzdGVtIGZvciBsaW51eCAoV1NMKS5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbldzbCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luRG9ja2VyID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkxpbnV4R3JhcGhpY3NDYXBhYmxlRW52aXJvbm1lbnQgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxufVxuXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc1N0cmluZyB7XG5cbiAgZXhwb3J0IGNvbnN0IGtlYmFiQ2FzZU5vU3BsaXROdW1iZXJzID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICBpbnB1dFxuXG4gICAgICAgIC5yZXBsYWNlKC9cXHMrL2csICctJylcblxuICAgICAgICAucmVwbGFjZSgvKFthLXowLTldKShbQS1aXSkvZywgJyQxLSQyJylcblxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICk7XG4gIH07XG5cbn1cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWNvcmUgbGliL3V0aWxzLnRzIl19
759
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90bXAtbGlicy1mb3ItZGlzdC13ZWJzcWwvdG5wLWNvcmUvcHJvamVjdHMvdG5wLWNvcmUvc3JjL2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBd0IsTUFBTSxPQUFPLENBQUM7QUFDN0MsT0FBTyxFQUFJLElBQUksRUFBSSxDQUFDLEdBQTZDLE1BQU0sZ0JBQWdCLENBQUMsQ0FBQSxLQUFLO0FBVTdGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0wsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUM7QUFHdEMsTUFBTSxLQUFXLEtBQUssQ0FrbkJyQjtBQWxuQkQsV0FBaUIsS0FBSztJQUVQLGVBQVMsR0FBRyxDQUN2QixLQUFZLEVBQ1osY0FBd0IsRUFDeEIsRUFBRTtRQUNGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLE9BQU8sS0FBSzthQUNULE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsTUFBTSxDQUFDLFVBQVUsSUFBSTtZQUNwQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDdEUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ1AsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQVEsQ0FBQztJQUNkLENBQUMsQ0FBQztJQUlGOzs7T0FHRztJQUNVLDBCQUFvQixHQUFHLENBQUMsZUFBdUIsRUFBRSxFQUFFO1FBQzlELE9BQU8sZUFBZSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUM7SUFJRixTQUFnQix1QkFBdUIsQ0FBQyxHQUFXO1FBRWpELE1BQU0sU0FBUyxHQUFHLG1CQUFtQixDQUFDO1FBR3RDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQU5lLDZCQUF1QiwwQkFNdEMsQ0FBQTtJQUlZLGtCQUFZLEdBQUcsR0FBRyxFQUFFO1FBQ25DLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsY0FBUSxHQUFHLEdBQUcsRUFBRTtRQUMvQixLQUFLO1FBQ0wsS0FBSztRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztJQUlGLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUNULGlCQUFXLEdBQUcsS0FBSyxFQUFFLE9BR2pDLEVBQW1CLEVBQUU7UUFDeEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBUUYsSUFBaUIsSUFBSSxDQWdIcEI7SUFoSEQsV0FBaUIsSUFBSTtRQUNOLG1CQUFjLEdBQUcsQ0FDNUIsWUFBb0IsRUFBRSx3REFBd0Q7UUFDOUUsV0FBbUIsRUFDRixFQUFFO1lBQ25CLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFdEMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDbkIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNiLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLElBQ0UsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzNDLENBQUM7b0JBQ0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWixDQUFDO2dCQUNELE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBR1AsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDL0QsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksVUFBVSxHQUFvQixFQUFFLENBQUM7WUFDckMsSUFBSSxpQkFBaUIsR0FBYSxFQUFFLENBQUM7WUFFckMsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUVoQyxJQUFJLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFFakMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUd0QyxDQUFDO3FCQUFNLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBRXRFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztvQkFFeEQsSUFBSSxLQUFLLEVBQUUsQ0FBQzt3QkFDVixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLFdBQVcsR0FBRyxXQUFXOzRCQUN2QixDQUFDLENBQUMsR0FBRyxXQUFXLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFOzRCQUM1RCxDQUFDLENBQUMsR0FBRyxDQUFDO3dCQUdSLElBQ0UsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQzs0QkFDNUIsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsQ0FBQzs0QkFDdkMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLE9BQU8sSUFBSSxDQUFDLEVBQ3RDLENBQUM7NEJBTUQsVUFBVSxHQUFHLDZCQUE2QixDQUFDLGlCQUFpQixDQUFDLENBQUM7NEJBQzlELE1BQU07d0JBQ1IsQ0FBQzt3QkFHRCxpQkFBaUIsR0FBRyxFQUFFLENBQUM7b0JBQ3pCLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLENBQUM7UUFFRixNQUFNLDZCQUE2QixHQUFHLENBQ3BDLFFBQWtCLEVBQ0QsRUFBRTtZQUNuQixNQUFNLFVBQVUsR0FBb0IsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLDhCQUE4QixDQUFDO1lBRWpELEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQy9CLElBQUksS0FBSyxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO29CQUNsRCxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUU5QixNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQ3ZDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUNqQyxDQUFDO29CQUVGLElBQUksaUJBQWlCLEVBQUUsQ0FBQzt3QkFDdEIsSUFBSSxLQUFLLEVBQUUsQ0FBQzs0QkFDVixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQ0FDM0MsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDdEMsQ0FBQztpQ0FBTSxDQUFDO2dDQUNOLGlCQUFpQixDQUFDLEtBQUssR0FBRyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQzs0QkFDN0QsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixVQUFVLENBQUMsSUFBSSxDQUFDOzRCQUNkLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTs0QkFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJO3lCQUM1QixDQUFDLENBQUM7b0JBQ0wsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUdELFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3hCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxFQWhIZ0IsSUFBSSxHQUFKLFVBQUksS0FBSixVQUFJLFFBZ0hwQjtJQU1ELElBQVksa0JBT1g7SUFQRCxXQUFZLGtCQUFrQjtRQUM1QixtQ0FBYSxDQUFBO1FBQ2IsbUNBQWEsQ0FBQTtRQUNiLHVDQUFpQixDQUFBO1FBQ3JCLEtBQUs7UUFDTCxLQUFLO0lBRUgsQ0FBQyxFQVBXLGtCQUFrQixHQUFsQix3QkFBa0IsS0FBbEIsd0JBQWtCLFFBTzdCO0lBZ0JILEtBQUs7SUFDTCxLQUFLO0lBR0gsSUFBaUIsTUFBTSxDQXNXdEI7SUF0V0QsV0FBaUIsTUFBTTtRQUdyQjs7Ozs7O1dBTUc7UUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLE1BQW1CLEVBQ25CLFdBQW1DO1lBRW5DLGFBQWE7WUFDYixPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBTnFCLHdCQUFpQixvQkFNdEMsQ0FBQTtRQUtEOzs7O1dBSUc7UUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQUMsSUFBVTtZQUNoRCxPQUFPLE1BQU0sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO29CQUN0QyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQWEsQ0FBQyxDQUFDO2dCQUNoQyxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYTtnQkFDdkQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQVRxQix3QkFBaUIsb0JBU3RDLENBQUE7UUFJRDs7OztXQUlHO1FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQVU7WUFDckMsT0FBTyxJQUFJLE9BQU8sQ0FBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsYUFBYTtnQkFDOUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFOZSxtQkFBWSxlQU0zQixDQUFBO1FBSUQ7Ozs7V0FJRztRQUNJLEtBQUssVUFBVSxZQUFZLENBQ2hDLFVBQWtCLEVBQ2xCLG1CQUE0QztZQUU1QyxJQUFJLFlBQVksR0FBMkIsS0FBSyxDQUFRLENBQUM7WUFDekQsSUFBSSxXQUFXLEdBQVcsS0FBSyxDQUFRLENBQUM7WUFDeEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sQ0FBQyxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNQLE1BQU0sSUFBSSxLQUFLLENBQ2IscURBQXFELFVBQVUsR0FBRyxDQUNuRSxDQUFDO2dCQUNKLENBQUM7Z0JBRUQsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN0QyxZQUFZLEdBQUcsV0FBa0IsQ0FBQztnQkFDbEMsV0FBVyxHQUFHLFVBQVUsQ0FBQztZQUMzQixDQUFDO1lBQ0QsWUFBWSxHQUFHLENBQ2IsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUN4RCxDQUFDO1lBQ1QsVUFBVSxHQUFHLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUM1RCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdkIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDMUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFMUMsS0FBSyxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxHQUFHLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDO2dCQUNoRSxNQUFNLEtBQUssR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUFDO2dCQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRXJELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQztnQkFFckMsS0FBSyxJQUFJLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQzVELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDO2dCQUNELFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxDQUFDO1lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBeENxQixtQkFBWSxlQXdDakMsQ0FBQTtRQUtNLEtBQUssVUFBVSxzQkFBc0IsQ0FDMUMsSUFBWTtZQUVaLElBQUksTUFBc0IsQ0FBQztZQUUzQixNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUN6QixJQUFJLHVCQUF1QixFQUFFLENBQUM7b0JBQzVCLE1BQU0sSUFBSSxHQUFHLE1BQU0sWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN0QyxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELE9BQU8sSUFBVyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFWCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUVDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFwQnFCLDZCQUFzQix5QkFvQjNDLENBQUE7UUFJTSxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLFlBQTRCO1lBRTVCLElBQUksTUFBYyxDQUFDO1lBRW5CLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxZQUFZLENBQUMsWUFBbUIsQ0FBQyxDQUFDO29CQUNyRCxPQUFPLElBQUksQ0FBQztnQkFDZCxDQUFDO2dCQUNELE9BQU8sWUFBbUIsQ0FBQztZQUM3QixDQUFDLENBQUMsRUFBRSxDQUFDO1lBR1gsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFFQyxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBckJxQiw2QkFBc0IseUJBcUIzQyxDQUFBO1FBS00sS0FBSyxVQUFVLG9CQUFvQixDQUN4QyxJQUFZO1lBRVosSUFBSSxNQUFzQixDQUFDO1lBRTNCLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztvQkFDNUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3BDLE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsT0FBTyxJQUFXLENBQUM7WUFDckIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUVYLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBRUMsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQXBCcUIsMkJBQW9CLHVCQW9CekMsQ0FBQTtRQUlNLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsWUFBNEI7WUFFNUIsSUFBSSxNQUFjLENBQUM7WUFFbkIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDekIsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO29CQUM1QixNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQyxZQUFtQixDQUFDLENBQUM7b0JBQ25ELE9BQU8sSUFBSSxDQUFDO2dCQUNkLENBQUM7Z0JBQ0QsT0FBTyxZQUFtQixDQUFDO1lBQzdCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFHWCxLQUFLO1lBQ0wsS0FBSztZQUNMLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztZQUVDLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFyQnFCLDJCQUFvQix1QkFxQnpDLENBQUE7UUFJTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFLTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFLTSxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQVU7WUFDekMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDMUQsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFKcUIsaUJBQVUsYUFJL0IsQ0FBQTtRQUlNLEtBQUssVUFBVSxVQUFVLENBQzlCLElBQVUsRUFDVixjQUFzQixjQUFjO1lBRXBDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsV0FBVyxHQUFHLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BELENBQUM7WUFDRCxhQUFhO1lBQ2IsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFUcUIsaUJBQVUsYUFTL0IsQ0FBQTtRQUlMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUtMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBS0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBS0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBS00sS0FBSyxVQUFVLFVBQVUsQ0FDOUIsSUFBWSxFQUNaLE9BQStCLFlBQVk7WUFFM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBTnFCLGlCQUFVLGFBTS9CLENBQUE7UUFJTSxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQVU7WUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRnFCLGlCQUFVLGFBRS9CLENBQUE7UUFJTSxLQUFLLFVBQVUsVUFBVSxDQUM5QixJQUFZLEVBQ1osc0JBQThCO1lBRzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztZQUVqRCxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sVUFBVSxDQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1lBTTVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQWhCcUIsaUJBQVUsYUFnQi9CLENBQUE7UUFJTSxLQUFLLFVBQVUsVUFBVSxDQUFDLElBQVU7WUFDekMsT0FBTyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBRnFCLGlCQUFVLGFBRS9CLENBQUE7UUFJTSxLQUFLLFVBQVUsVUFBVSxDQUFDLE9BQWU7WUFDOUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDeEQsSUFBSSxFQUFFLGtCQUFrQjthQUN6QixDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFMcUIsaUJBQVUsYUFLL0IsQ0FBQTtRQUlEOztXQUVHO1FBQ0ksS0FBSyxVQUFVLFVBQVUsQ0FBQyxJQUFVO1lBQ3pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFGcUIsaUJBQVUsYUFFL0IsQ0FBQTtRQUlNLEtBQUssVUFBVSxXQUFXLENBQUMsR0FBVztZQUMzQyxNQUFNLFFBQVEsR0FBd0IsTUFBTSxLQUFLLENBQUM7Z0JBQ2hELEdBQUc7Z0JBQ0gsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsWUFBWSxFQUFFLE1BQU07YUFDckIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFQcUIsa0JBQVcsY0FPaEMsQ0FBQTtJQUVILENBQUMsRUF0V2dCLE1BQU0sR0FBTixZQUFNLEtBQU4sWUFBTSxRQXNXdEI7SUFJRCxJQUFpQixHQUFHLENBZ0JuQjtJQWhCRCxXQUFpQixHQUFHO1FBRWxCOzs7O1dBSUc7UUFDSCxTQUFnQixRQUFRLENBQUMsU0FBMEI7WUFFakQsT0FBTyxRQUFRLENBQ2IsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBR3pDLENBQUM7UUFDSixDQUFDO1FBUGUsWUFBUSxXQU92QixDQUFBO0lBRUgsQ0FBQyxFQWhCZ0IsR0FBRyxHQUFILFNBQUcsS0FBSCxTQUFHLFFBZ0JuQjtBQUVILENBQUMsRUFsbkJnQixLQUFLLEtBQUwsS0FBSyxRQWtuQnJCO0FBSUQsTUFBTSxLQUFXLFlBQVksQ0FxUTVCO0FBclFELFdBQWlCLFlBQVk7SUFvRDNCOzs7T0FHRztJQUNJLEtBQUssVUFBVSxVQUFVLENBQzlCLE9BQWUsRUFDZixPQUE2QjtJQUcvQixDQUFDO0lBTHFCLHVCQUFVLGFBSy9CLENBQUE7SUFJRDs7T0FFRztJQUNILFNBQWdCLFNBQVMsQ0FBQyxPQUFlLEVBQUUsT0FBNkI7SUFFeEUsQ0FBQztJQUZlLHNCQUFTLFlBRXhCLENBQUE7SUFJWSwyQkFBYyxHQUFHLEdBQUcsRUFBRTtRQUNyQyxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFJRjs7O09BR0c7SUFDVSxxQ0FBd0IsR0FBRyxDQUN0QyxPQUFlLEVBQ2YsT0FBeUQsRUFDekQsRUFBRTtRQUNOLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBSVcsK0JBQWtCLEdBQUcsR0FVekIsRUFBRTtRQUVULE9BQU8sU0FBUyxDQUFDO1FBRXJCLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFL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QUM7UUFDcEQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7SUFDbkUsQ0FBQyxDQUFBO0lBRVksZ0NBQWdCLEdBQUcsQ0FBQyxLQUFVLEVBQVcsRUFBRTtRQUN0RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE9BQU8sS0FBSyxDQUFDLENBQUMsbUJBQW1CO1FBQ25DLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQywwQ0FBMEM7UUFDbEUsTUFBTSxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxxREFBcUQ7UUFFNUYsT0FBTyxLQUFLLElBQUksWUFBWSxJQUFJLEtBQUssSUFBSSxZQUFZLENBQUM7SUFDeEQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxFQXJDZ0IsZUFBZSxLQUFmLGVBQWUsUUFxQy9CO0FBR0EsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrREFBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IHsgQ29yZU1vZGVscyB9IGZyb20gJy4vY29yZS1tb2RlbHMnO1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zUmVzcG9uc2UgfSBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyAgIHBhdGgsICAgXywgICBjcm9zc1BsYXRmb3JtUGF0aCwgLyogKi8gLyogKi8gLyogKi8gICAgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7LyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IEhlbHBlcnMgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IGRhdGVmb3JtYXQgfSBmcm9tICcuL2NvcmUtaW1wb3J0cyc7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuY29uc3QgQkxPQl9TVVBQT1JURURfSU5fU1FMSlMgPSBmYWxzZTtcblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzIHtcblxuICBleHBvcnQgY29uc3QgdW5pcUFycmF5ID0gPFQgPSBhbnk+KFxuICAgIGFycmF5OiBhbnlbXSxcbiAgICB1bmlxdWVQcm9wZXJ0eT86IGtleW9mIFQsXG4gICkgPT4ge1xuICAgIHZhciBzZWVuID0ge307XG4gICAgcmV0dXJuIGFycmF5XG4gICAgICAuZmlsdGVyKGYgPT4gISFmKVxuICAgICAgLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gc2Vlbi5oYXNPd25Qcm9wZXJ0eSh1bmlxdWVQcm9wZXJ0eSA/IGl0ZW1bdW5pcXVlUHJvcGVydHldIDogaXRlbSlcbiAgICAgICAgICA/IGZhbHNlXG4gICAgICAgICAgOiAoc2Vlblt1bmlxdWVQcm9wZXJ0eSA/IGl0ZW1bdW5pcXVlUHJvcGVydHldIDogaXRlbV0gPSB0cnVlKTtcbiAgICAgIH0pIGFzIFRbXTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIEV4YW1wbGU6XG4gICAqIG5ldyBSZWdFeHAoZXNjYXBlU3RyaW5nRm9yUmVnRXgoJ2EuYi5jJyksJ2cnKSA9PiAvYVxcLmJcXC5jL2dcbiAgICovXG4gIGV4cG9ydCBjb25zdCBlc2NhcGVTdHJpbmdGb3JSZWdFeCA9IChzdHJpbmdGb3JSZWdFeHA6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBzdHJpbmdGb3JSZWdFeHAucmVwbGFjZSgvWy1cXC9cXFxcXiQqKz8uKCl8W1xcXXt9XS9nLCAnXFxcXCQmJyk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBmdW5jdGlvbiByZW1vdmVDaGFsa1NwZWNpYWxDaGFycyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBjb25zdCBhbnNpUmVnZXggPSAvXFx1MDAxYlxcW1swLTk7XSptL2c7XG5cblxuICAgIHJldHVybiBzdHIucmVwbGFjZShhbnNpUmVnZXgsICcnKTtcbiAgfVxuXG5cblxuICBleHBvcnQgY29uc3QgZnVsbERhdGVUaW1lID0gKCkgPT4ge1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZnVsbERhdGUgPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGNvbnN0IHRha2VuUG9ydHMgPSBbXTtcbiAgZXhwb3J0IGNvbnN0IGdldEZyZWVQb3J0ID0gYXN5bmMgKG9wdGlvbnM/OiB7XG4gICAgc3RhcnRGcm9tPzogbnVtYmVyO1xuICAgIGhvd01hbnlGcmVlUG9ydHNBZnRlclRoYXRQb3J0PzogbnVtYmVyO1xuICB9KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGludGVyZmFjZSBBdHRySnNvbmNQcm9wIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmFsdWU/OiBhbnk7XG4gIH1cbiAgZXhwb3J0IG5hbWVzcGFjZSBqc29uIHtcbiAgICBleHBvcnQgY29uc3QgZ2V0QXRycmlidXRpZXMgPSAoXG4gICAgICBqc29uRGVlcFBhdGg6IHN0cmluZywgLy8gbG9kYXNoIHBhdGggdG8gcHJvcGVydHkgaW4ganNvbiBleC4gZGVlcC5wYXRoLnRvLnByb3BcbiAgICAgIGZpbGVDb250ZW50OiBzdHJpbmcsIC8vIGpzb25jIG9yIGpzb241IC0ganNvbiB3aXRoIGNvbW1lbnRzXG4gICAgKTogQXR0ckpzb25jUHJvcFtdID0+IHtcbiAgICAgIGNvbnN0IGxpbmVzID0gZmlsZUNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuXG4gICAgICBjb25zdCBwYXRoUGFydHMgPSBqc29uRGVlcFBhdGguc3BsaXQoJy4nKS5yZWR1Y2UoKGEsIGIpID0+IHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIFtiXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0OiBzdHJpbmcgPSBhW2EubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChcbiAgICAgICAgICAobGFzdC5zdGFydHNXaXRoKGBbJ2ApICYmIGIuZW5kc1dpdGgoYCddYCkpIHx8XG4gICAgICAgICAgKGxhc3Quc3RhcnRzV2l0aChgW1wiYCkgJiYgYi5lbmRzV2l0aChgXCJdYCkpXG4gICAgICAgICkge1xuICAgICAgICAgIGFbYS5sZW5ndGggLSAxXSA9IFtsYXN0LCBiXS5qb2luKCcuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYS5wdXNoKGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgW10pO1xuXG5cbiAgICAgIGNvbnN0IGtleU5hbWUgPSBwYXRoUGFydHMucG9wKCkhLnJlcGxhY2UoL15cXFtcIiguKylcIlxcXSQvLCAnJDEnKTtcbiAgICAgIGxldCBjdXJyZW50UGF0aCA9ICcnO1xuICAgICAgbGV0IGF0dHJpYnV0ZXM6IEF0dHJKc29uY1Byb3BbXSA9IFtdO1xuICAgICAgbGV0IGNvbGxlY3RlZENvbW1lbnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgY29uc3QgdHJpbW1lZExpbmUgPSBsaW5lLnRyaW0oKTtcblxuICAgICAgICBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aCgnLy8nKSkge1xuXG4gICAgICAgICAgY29sbGVjdGVkQ29tbWVudHMucHVzaCh0cmltbWVkTGluZSk7XG5cblxuICAgICAgICB9IGVsc2UgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoJ1wiJykgfHwgdHJpbW1lZExpbmUuc3RhcnRzV2l0aChcIidcIikpIHtcblxuICAgICAgICAgIGNvbnN0IG1hdGNoID0gdHJpbW1lZExpbmUubWF0Y2goL1tcIiddKFteXCInXSspW1wiJ11cXHMqOi8pO1xuXG4gICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBtYXRjaFsxXTtcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoID0gY3VycmVudFBhdGhcbiAgICAgICAgICAgICAgPyBgJHtjdXJyZW50UGF0aH0uJHtrZXkuaW5jbHVkZXMoJy4nKSA/IGBbJyR7a2V5fSddYCA6IGtleX1gXG4gICAgICAgICAgICAgIDoga2V5O1xuXG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgKGN1cnJlbnRQYXRoLmVuZHNXaXRoKGtleU5hbWUpICYmXG4gICAgICAgICAgICAgICAgIWN1cnJlbnRQYXRoLmVuZHNXaXRoKCcvJyArIGtleU5hbWUpKSB8fFxuICAgICAgICAgICAgICBjdXJyZW50UGF0aC5lbmRzV2l0aChgWycke2tleU5hbWV9J11gKVxuICAgICAgICAgICAgKSB7XG5cblxuXG5cblxuICAgICAgICAgICAgICBhdHRyaWJ1dGVzID0gZXh0cmFjdEF0dHJpYnV0ZXNGcm9tQ29tbWVudHMoY29sbGVjdGVkQ29tbWVudHMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBjb2xsZWN0ZWRDb21tZW50cyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuXG4gICAgY29uc3QgZXh0cmFjdEF0dHJpYnV0ZXNGcm9tQ29tbWVudHMgPSAoXG4gICAgICBjb21tZW50czogc3RyaW5nW10sXG4gICAgKTogQXR0ckpzb25jUHJvcFtdID0+IHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXM6IEF0dHJKc29uY1Byb3BbXSA9IFtdO1xuICAgICAgY29uc3QgYXR0clJlZ2V4ID0gL0AoXFx3KykoPzpcXHMqPVxccyooW15cXHNAXSspKT8vZztcblxuICAgICAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgICAgIGxldCBtYXRjaDtcbiAgICAgICAgd2hpbGUgKChtYXRjaCA9IGF0dHJSZWdleC5leGVjKGNvbW1lbnQpKSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IFssIG5hbWUsIHZhbHVlXSA9IG1hdGNoO1xuXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdBdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLmZpbmQoXG4gICAgICAgICAgICBhdHRyID0+IGF0dHIubmFtZSA9PT0gYEAke25hbWV9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGV4aXN0aW5nQXR0cmlidXRlKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUgPSBbZXhpc3RpbmdBdHRyaWJ1dGUudmFsdWUsIHZhbHVlXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBgQCR7bmFtZX1gLFxuICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUgPyB2YWx1ZSA6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuXG4gICAgICBhdHRyaWJ1dGVzLmZvckVhY2goYXR0ciA9PiB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGF0dHIudmFsdWUpICYmIGF0dHIudmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgYXR0ci52YWx1ZSA9IGF0dHIudmFsdWVbMF07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9O1xuICB9XG5cblxuXG5cblxuICBleHBvcnQgZW51bSBEYkJpbmFyeUZvcm1hdEVudW0ge1xuICAgIEJsb2IgPSAnQmxvYicsXG4gICAgRmlsZSA9ICdGaWxlJyxcbiAgICBzdHJpbmcgPSAnc3RyaW5nJyxcbi8qICovXG4vKiAqL1xuICBcbiAgfVxuXG4gIGV4cG9ydCB0eXBlIERiQmluYXJ5Rm9ybWF0Rm9yQnJvd3NlciA9IEJsb2IgfCBGaWxlIHwgc3RyaW5nO1xuLyogKi9cbi8qICovXG4gIFxuXG4gIC8qKlxuICAgKiBCaW5hcnkgZm9ybWF0IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBkYXRhYmFzZVxuICAgKlxuICAgKiBmb3Igbm9kZWpzID0+IEJ1ZmZlclxuICAgKiBmb3Igc3FsLmpzID0+IHN0cmluZyAoc2hvdWxiIGJlIGJsb2IgLSBidXQgbm90IHN1cHBvcnRlZClcbiAgICpcbiAgICovXG4gIGV4cG9ydCB0eXBlIERiQmluYXJ5Rm9ybWF0ID1cbiAgICB8IERiQmluYXJ5Rm9ybWF0Rm9yQnJvd3NlclxuLyogKi9cbi8qICovXG4gIFxuXG4gIGV4cG9ydCBuYW1lc3BhY2UgYmluYXJ5IHtcblxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBmb3IgQlJPV1NFUiBPTkxZXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYnVmZmVyXG4gICAgICogQHBhcmFtIGNvbnRlbnRUeXBlXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYXJyYXlCdWZmZXJUb0Jsb2IoXG4gICAgICBidWZmZXI6IEFycmF5QnVmZmVyLFxuICAgICAgY29udGVudFR5cGU6IENvcmVNb2RlbHMuQ29udGVudFR5cGUsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogY29udGVudFR5cGUgfSk7XG4gICAgfVxuXG5cblxuXG4gICAgLyoqXG4gICAgICogVGhpcyBpcyBmb3IgQlJPV1NFUiBPTkxZXG4gICAgICogQHBhcmFtIGJsb2JcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9BcnJheUJ1ZmZlcihibG9iOiBCbG9iKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgICAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlbmQnLCAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0IGFzIGFueSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZWFkZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCByZWplY3QpOyAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICAvKipcbiAgICAgKiBpdCBpcyByZXZlcnMgdG8gYmFzZTY0dG9CbG9iXG4gICAgICogQHBhcmFtIGJsb2JcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGV4cG9ydCBmdW5jdGlvbiBibG9iVG9CYXNlNjQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgXykgPT4ge1xuICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTsgLy8gQHRzLWlnbm9yZVxuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTtcbiAgICAgIH0pO1xuICAgIH1cblxuXG5cbiAgICAvKipcbiAgICAgKiBpdCBpcyByZXZlcnMgdG8gYmxvYlRvQmFzZTY0KClcbiAgICAgKiBAcGFyYW0gYmFzZTY0RGF0YVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJhc2U2NHRvQmxvYihcbiAgICAgIGJhc2U2NERhdGE6IHN0cmluZyxcbiAgICAgIGNvbnRlbnRUeXBlT3ZlcnJpZGU/OiBDb3JlTW9kZWxzLkNvbnRlbnRUeXBlLFxuICAgICk6IFByb21pc2U8QmxvYj4ge1xuICAgICAgbGV0IGNvbnRlbnRfdHlwZTogQ29yZU1vZGVscy5Db250ZW50VHlwZSA9IHZvaWQgMCBhcyBhbnk7XG4gICAgICBsZXQgZmlsZV9iYXNlNjQ6IHN0cmluZyA9IHZvaWQgMCBhcyBhbnk7XG4gICAgICBpZiAoIWNvbnRlbnRUeXBlT3ZlcnJpZGUpIHtcbiAgICAgICAgY29uc3QgbSA9IC9eZGF0YTooLis/KTtiYXNlNjQsKC4rKSQvLmV4ZWMoYmFzZTY0RGF0YSk7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBbdGFvbi1mcmFtZXdvcmtdW2Jhc2U2NHRvQmxvYl0gTm90IGEgYmFzZTY0IGJsb2IgWyR7YmFzZTY0RGF0YX1dYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIFtfXywgY29udGVudHR5cGUsIGZpbGViYXNlNjRdID0gbTtcbiAgICAgICAgY29udGVudF90eXBlID0gY29udGVudHR5cGUgYXMgYW55O1xuICAgICAgICBmaWxlX2Jhc2U2NCA9IGZpbGViYXNlNjQ7XG4gICAgICB9XG4gICAgICBjb250ZW50X3R5cGUgPSAoXG4gICAgICAgIGNvbnRlbnRUeXBlT3ZlcnJpZGUgPyBjb250ZW50VHlwZU92ZXJyaWRlIDogY29udGVudF90eXBlIHx8ICcnXG4gICAgICApIGFzIGFueTtcbiAgICAgIGJhc2U2NERhdGEgPSBjb250ZW50VHlwZU92ZXJyaWRlID8gYmFzZTY0RGF0YSA6IGZpbGVfYmFzZTY0O1xuICAgICAgY29uc3Qgc2xpY2VTaXplID0gMTAyNDtcbiAgICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcbiAgICAgIGNvbnN0IGJ5dGVzTGVuZ3RoID0gYnl0ZUNoYXJhY3RlcnMubGVuZ3RoO1xuICAgICAgY29uc3Qgc2xpY2VzQ291bnQgPSBNYXRoLmNlaWwoYnl0ZXNMZW5ndGggLyBzbGljZVNpemUpO1xuICAgICAgY29uc3QgYnl0ZUFycmF5cyA9IG5ldyBBcnJheShzbGljZXNDb3VudCk7XG5cbiAgICAgIGZvciAobGV0IHNsaWNlSW5kZXggPSAwOyBzbGljZUluZGV4IDwgc2xpY2VzQ291bnQ7ICsrc2xpY2VJbmRleCkge1xuICAgICAgICBjb25zdCBiZWdpbiA9IHNsaWNlSW5kZXggKiBzbGljZVNpemU7XG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKGJlZ2luICsgc2xpY2VTaXplLCBieXRlc0xlbmd0aCk7XG5cbiAgICAgICAgY29uc3QgYnl0ZXMgPSBuZXcgQXJyYXkoZW5kIC0gYmVnaW4pO1xuXG4gICAgICAgIGZvciAobGV0IG9mZnNldCA9IGJlZ2luLCBpID0gMDsgb2Zmc2V0IDwgZW5kOyArK2ksICsrb2Zmc2V0KSB7XG4gICAgICAgICAgYnl0ZXNbaV0gPSBieXRlQ2hhcmFjdGVyc1tvZmZzZXRdLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIH1cbiAgICAgICAgYnl0ZUFycmF5c1tzbGljZUluZGV4XSA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgQmxvYihieXRlQXJyYXlzLCB7IHR5cGU6IGNvbnRlbnRfdHlwZSB9KTtcbiAgICB9XG5cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmFzZTY0dG9EYkJpbmFyeUZvcm1hdChcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICApOiBQcm9taXNlPERiQmluYXJ5Rm9ybWF0PiB7XG4gICAgICBsZXQgcmVzdWx0OiBEYkJpbmFyeUZvcm1hdDtcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IGJhc2U2NHRvQmxvYih0ZXh0KTtcbiAgICAgICAgICByZXR1cm4gYmxvYjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGV4dCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZGJCaW5hcnlGb3JtYXRUb0Jhc2U2NChcbiAgICAgIGJpbmFyeUZvcm1hdDogRGJCaW5hcnlGb3JtYXQsXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJsb2JUb0Jhc2U2NChiaW5hcnlGb3JtYXQgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYmluYXJ5Rm9ybWF0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdGV4dFRvRGJCaW5hcnlGb3JtYXQoXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgKTogUHJvbWlzZTxEYkJpbmFyeUZvcm1hdD4ge1xuICAgICAgbGV0IHJlc3VsdDogRGJCaW5hcnlGb3JtYXQ7XG5cbiAgICAgIHJlc3VsdCA9IGF3YWl0IChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChCTE9CX1NVUFBPUlRFRF9JTl9TUUxKUykge1xuICAgICAgICAgIGNvbnN0IGJsb2IgPSBhd2FpdCB0ZXh0VG9CbG9iKHRleHQpO1xuICAgICAgICAgIHJldHVybiBibG9iO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZXh0IGFzIGFueTtcbiAgICAgIH0pKCk7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBkYkJpbmFyeUZvcm1hdFRvVGV4dChcbiAgICAgIGJpbmFyeUZvcm1hdDogRGJCaW5hcnlGb3JtYXQsXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgIGxldCByZXN1bHQ6IHN0cmluZztcblxuICAgICAgcmVzdWx0ID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKEJMT0JfU1VQUE9SVEVEX0lOX1NRTEpTKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGJsb2JUb1RleHQoYmluYXJ5Rm9ybWF0IGFzIGFueSk7XG4gICAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJpbmFyeUZvcm1hdCBhcyBhbnk7XG4gICAgICB9KSgpO1xuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZpbGVUb0Jsb2IoZmlsZTogRmlsZSkge1xuICAgICAgcmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCkpXSwge1xuICAgICAgICB0eXBlOiBmaWxlLnR5cGUsXG4gICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb0ZpbGUoXG4gICAgICBibG9iOiBCbG9iLFxuICAgICAgbmFtZUZvckZpbGU6IHN0cmluZyA9ICdteS1maWxlLW5hbWUnLFxuICAgICk6IFByb21pc2U8RmlsZT4ge1xuICAgICAgaWYgKCFuYW1lRm9yRmlsZSkge1xuICAgICAgICBuYW1lRm9yRmlsZSA9ICdub25hbWVmaWxlJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBGaWxlKFtibG9iXSwgbmFtZUZvckZpbGUpO1xuICAgIH1cblxuXG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gIFxuXG5cblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gdGV4dFRvQmxvYihcbiAgICAgIHRleHQ6IHN0cmluZyxcbiAgICAgIHR5cGU6IENvcmVNb2RlbHMuQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbicsXG4gICAgKTogUHJvbWlzZTxCbG9iPiB7XG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RleHRdLCB7IHR5cGUgfSk7XG4gICAgICByZXR1cm4gYmxvYjtcbiAgICB9XG5cblxuXG4gICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJsb2JUb1RleHQoYmxvYjogQmxvYik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICByZXR1cm4gYXdhaXQgYmxvYi50ZXh0KCk7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXh0VG9GaWxlKFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgZmlsZVJlbGF0aXZlUGF0aE9yTmFtZTogc3RyaW5nLFxuICAgICk6IFByb21pc2U8RmlsZT4ge1xuXG4gICAgICBjb25zdCBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVJlbGF0aXZlUGF0aE9yTmFtZSk7XG5cbiAgICAgIGNvbnN0IHR5cGUgPSBDb3JlTW9kZWxzLm1pbWVUeXBlc1tleHRdO1xuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0XSwgeyB0eXBlIH0pO1xuICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGJsb2JUb0ZpbGUoYmxvYiwgZmlsZVJlbGF0aXZlUGF0aE9yTmFtZSk7XG5cblxuXG5cblxuICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG5cblxuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaWxlVG9UZXh0KGZpbGU6IEZpbGUpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIGF3YWl0IGZpbGUudGV4dCgpO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24ganNvblRvQmxvYihqc29uT2JqOiBvYmplY3QpOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoanNvbk9iaiwgbnVsbCwgMildLCB7XG4gICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJsb2I7XG4gICAgfVxuXG5cblxuICAgIC8qKlxuICAgICAqIFRPRE8gTk9UIFRFU1RFRFxuICAgICAqL1xuICAgIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBibG9iVG9Kc29uKGJsb2I6IEJsb2IpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoYXdhaXQgYmxvYi50ZXh0KCkpO1xuICAgIH1cblxuXG5cbiAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QmxvYkZyb20odXJsOiBzdHJpbmcpOiBQcm9taXNlPEJsb2I+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBBeGlvc1Jlc3BvbnNlPEJsb2I+ID0gYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmwsXG4gICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9XG5cbiAgfVxuXG5cblxuICBleHBvcnQgbmFtZXNwYWNlIGNzcyB7XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBwaXhlbHNDc3MgcGl4ZWxzIGV4LiAxMDBweFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZXhwb3J0IGZ1bmN0aW9uIG51bVZhbHVlKHBpeGVsc0Nzczogc3RyaW5nIHwgbnVtYmVyKTogbnVtYmVyIHtcblxuICAgICAgcmV0dXJuIHBhcnNlSW50KFxuICAgICAgICBwaXhlbHNDc3M/LnRvU3RyaW5nKCk/LnJlcGxhY2UoJ3B4JywgJycpLFxuXG5cbiAgICAgICk7XG4gICAgfVxuXG4gIH1cblxufVxuXG5cblxuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc1Byb2Nlc3Mge1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc1N0YXJ0T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogYnkgZGVmYXVsdCBpcyBwcm9jZXNzLmN3ZCgpO1xuICAgICAqL1xuICAgIGN3ZD86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBieSBkZWZhdWx0IGlzIGZhbHNlXG4gICAgICovXG4gICAgc2hvd0NvbW1hbmQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIE1vZGlmeSBvdXRwdXQgbGluZSBieSBsaW5lXG4gICAgICovXG4gICAgb3V0cHV0TGluZVJlcGxhY2U/OiAob3V0cHV0TGluZVN0ZGVyT3JTdGRvdXQ6IHN0cmluZykgPT4gc3RyaW5nO1xuICAgIHJlc29sdmVQcm9taXNlTXNnPzoge1xuICAgICAgLyoqXG4gICAgICAgKiB1bnRpbCB0aGlzIHN0cmluZyBpcyBpbiBvdXRwdXQgb2Ygc3Rkb3V0XG4gICAgICAgKi9cbiAgICAgIHN0ZG91dD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiB1bnRpbCB0aGlzIHN0cmluZyBpcyBpbiBvdXRwdXQgb2Ygc3RkZXJyXG4gICAgICAgKi9cbiAgICAgIHN0ZGVycj86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgICAgLyoqXG4gICAgICAgKiBieSBkZWZhdWx0IG9ubHkgcmVzb2x2ZSB3aGVuIGV4aXQgY29kZSBpcyAwXG4gICAgICAgKi9cbiAgICAgIHJlc29sdmVBZnRlckFueUV4aXRDb2RlPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIC8qKlxuICAgICAqIFByZWZpeCBtZXNzYWdlcyBvdXRwdXQgZnJvbSBjaGlsZF9wcm9jZXNzXG4gICAgICovXG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRyeSBjb21tYW5kIGFnYWluIGFmdGVyIGZhaWwgYWZ0ZXIgbiBtaWxsaXNlY29uZHNcbiAgICAgKi9cbiAgICB0cnlBZ2FpbldoZW5GYWlsQWZ0ZXI/OiBudW1iZXI7XG4gICAgYXNrVG9UcnlBZ2Fpbk9uRXJyb3I/OiBib29sZWFuO1xuICAgIGV4aXRPbkVycm9yQ2FsbGJhY2s/OiAoY29kZTogbnVtYmVyKSA9PiB2b2lkO1xuICAgIC8qKlxuICAgICAqIFVzZSBiaWcgYnVmZmVyIGZvciBiaWcgd2VicGFjayBsb2dzXG4gICAgICogKGl0IG1heSBzbG93IGRvd24gc21hbGxlciBwcm9jZXNzZXMgZXhlY3V0aW9uKVxuICAgICAqL1xuICAgIGJpZ2dlckJ1ZmZlcj86IGJvb2xlYW47XG4gICAgaGlkZU91dHB1dD86IHtcbiAgICAgIHN0ZG91dD86IGJvb2xlYW47XG4gICAgICBzdGRlcnI/OiBib29sZWFuO1xuICAgIH07XG4gIH1cblxuXG5cbiAgLyoqXG4gICAqIFRPRE8gSU1QTEVNRU5UXG4gICAqIHN0YXJ0IGFzeW5jIG5vZGUgcHJvY2Vzc1xuICAgKi9cbiAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QXN5bmMoXG4gICAgY29tbWFuZDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBQcm9jZXNzU3RhcnRPcHRpb25zLFxuICApIHtcblxuICB9XG5cblxuXG4gIC8qKlxuICAgKiBUT0RPIElNUExFTUVOVFxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0U3luYyhjb21tYW5kOiBzdHJpbmcsIG9wdGlvbnM/OiBQcm9jZXNzU3RhcnRPcHRpb25zKSB7XG5cbiAgfVxuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0R2l0QmFzaFBhdGggPSAoKSA9PiB7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogVE9ETyBJTVBMRU1FTlRcbiAgICogc3RhcnQgYXN5bmMgbm9kZSBwcm9jZXNzXG4gICAqL1xuICBleHBvcnQgY29uc3Qgc3RhcnRJbk5ld1Rlcm1pbmFsV2luZG93ID0gKFxuICAgIGNvbW1hbmQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogUGljazxQcm9jZXNzU3RhcnRPcHRpb25zLCAnY3dkJyB8ICdoaWRlT3V0cHV0Jz4sXG4gICkgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG5cblxuICBleHBvcnQgY29uc3QgZ2V0QmFzaE9yU2hlbGxOYW1lID0gKCk6XG4gICAgfCAnYnJvd3NlcidcbiAgICB8ICdjbWQnXG4gICAgfCAncG93ZXJzaGVsbCdcbiAgICB8ICdnaXRiYXNoJ1xuICAgIHwgJ2N5Z3dpbidcbiAgICB8ICd1bmtub3duJ1xuICAgIHwgJ2Jhc2gnXG4gICAgfCAnenNoJ1xuICAgIHwgJ2Zpc2gnXG4gICAgfCAnc2gnID0+IHtcblxuICAgIHJldHVybiAnYnJvd3Nlcic7XG5cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICAgICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVXRpbHNPcyB7XG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIGluIGNsaWVudCBicm93c2VyXG4gICAqICh3ZWJzcWwgbW9kZWwgLT4gaXMgYWxzbyBjb25zaWRlcmVkIGFzIGJyb3dzZXJcbiAgICogYmVjYXVzZSBpdCBpcyBydW5uaW5nIGluIGJyb3dzZXIpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ccm93c2VyID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogY2hlY2sgaWYgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gbm9kZWpzXG4gICAqIChiYWNrZW5kIHNjcmlwdCBvciBlbGVjdHJvbiBzY3JpcHQpXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Ob2RlID0gKCk6IGJvb2xlYW4gPT4ge1xuLyogKi9cbi8qICovXG4gIFxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuXG5cbiAgLyoqXG4gICAqIGNoZWNrIGlmIHNjcmlwdCBpcyBydW5uaW5nIHNwZWNpYWxcbiAgICogYnJvd3NlciBtb2RlIHRoYXQgaGFzIHNxbC5qcyBiYWNrZW5kXG4gICAqIGFuZCBleGVjdXRlcyBzcWwgcXVlcmllcyBpbiBicm93c2VyXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5XZWJTUUwgPSAoKTogYm9vbGVhbiA9PiB7XG4vKiAqL1xuLyogKi9cbiAgXG5cblxuICAgIHJldHVybiB0cnVlO1xuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG5cblxuICAvKipcbiAgICogY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBwcm9jZXNzIGlzIHJ1bm5pbmcgaW5zaWRlXG4gICAqIEVsZWN0cm9uIGJhY2tlbmQgb3IgYnJvd3Nlci5cbiAgICovXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkVsZWN0cm9uID0gKCk6IGJvb2xlYW4gPT4ge1xuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICB0eXBlb2Ygd2luZG93LnByb2Nlc3MgPT09ICdvYmplY3QnICYmXG4gICAgICB3aW5kb3cucHJvY2Vzcy50eXBlID09PSAncmVuZGVyZXInXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoXG4gICAgICB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIHR5cGVvZiBwcm9jZXNzLnZlcnNpb25zID09PSAnb2JqZWN0JyAmJlxuICAgICAgISFwcm9jZXNzLnZlcnNpb25zLmVsZWN0cm9uXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBuYXZpZ2F0b3IgPT09ICdvYmplY3QnICYmXG4gICAgICB0eXBlb2YgbmF2aWdhdG9yLnVzZXJBZ2VudCA9PT0gJ3N0cmluZycgJiZcbiAgICAgIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRWxlY3Ryb24nKSA+PSAwXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cblxuXG4gIC8qKlxuICAgKiBDaGVjayB3ZXRoZXIgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBydW5uaW5nIGluc2lkZVxuICAgKiB3aW5kb3dzIHN1YnN5c3RlbSBmb3IgbGludXggKFdTTCkuXG4gICAqL1xuICBleHBvcnQgY29uc3QgaXNSdW5uaW5nSW5Xc2wgPSAoKTogYm9vbGVhbiA9PiB7XG5cbiAgICAgcmV0dXJuIGZhbHNlO1xuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgICByZXR1cm4gKHZvaWQgMCk7XG4gIH07XG5cblxuXG4gIGV4cG9ydCBjb25zdCBpc1J1bm5pbmdJbkRvY2tlciA9ICgpOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBmYWxzZTtcblxuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgICAgIHJldHVybiAodm9pZCAwKTtcbiAgfTtcblxuXG5cbiAgZXhwb3J0IGNvbnN0IGlzUnVubmluZ0luTGludXhHcmFwaGljc0NhcGFibGVFbnZpcm9ubWVudCA9ICgpOiBib29sZWFuID0+IHtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4gICAgcmV0dXJuICh2b2lkIDApO1xuICB9O1xuXG59XG5cblxuXG5leHBvcnQgbmFtZXNwYWNlIFV0aWxzU3RyaW5nIHtcblxuICBleHBvcnQgY29uc3Qga2ViYWJDYXNlTm9TcGxpdE51bWJlcnMgPSAoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGlucHV0XG5cbiAgICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKVxuXG4gICAgICAgIC5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCAnJDEtJDInKVxuXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgKTtcbiAgfTtcblxufVxuXG5cblxuLyoqXG4gKiBUYW9uIG1pZ3JhdGlvbiB1dGlsaXRpZXNcbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBVdGlsc01pZ3JhdGlvbnMge1xuICBleHBvcnQgY29uc3QgZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZSA9IChcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBbbWF5YmVUaW1lc3RhbXAxLCBtYXliZVRpbWVzdGFtcDJdID0gY2xhc3NOYW1lLnNwbGl0KCdfJykgfHwgW107XG5cbiAgICBjb25zdCB0aW1lc3RhbXAxID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAxKTtcbiAgICBjb25zdCB0aW1lc3RhbXAyID0gcGFyc2VJbnQobWF5YmVUaW1lc3RhbXAyKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSAhXy5pc05hTih0aW1lc3RhbXAxKSA/IHRpbWVzdGFtcDEgOiB0aW1lc3RhbXAyO1xuICAgIHJldHVybiBpc1ZhbGlkVGltZXN0YW1wKHRpbWVzdGFtcCkgPyB0aW1lc3RhbXAgOiB2b2lkIDA7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZFRpbWVzdGFtcEZyb21DbGFzc05hbWUgPSAoXG4gICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gZ2V0VGltZXN0YW1wRnJvbUNsYXNzTmFtZShjbGFzc05hbWUpO1xuICAgIGlmICghdGltZXN0YW1wKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcCk7XG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IGZvcm1hdFRpbWVzdGFtcCA9ICh0aW1lc3RhbXA6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gICAgY29uc3QgZGF0ZUZyb21UaW1lc3RhbXA6IERhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXApO1xuICAgIHJldHVybiBgJHtkYXRlZm9ybWF0KGRhdGVGcm9tVGltZXN0YW1wLCAnZGQtbW0teXl5eSBISDpNTTpzcycpfWA7XG4gIH1cblxuICBleHBvcnQgY29uc3QgaXNWYWxpZFRpbWVzdGFtcCA9ICh2YWx1ZTogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBmYWxzZTsgLy8gTXVzdCBiZSBhIG51bWJlclxuICAgIH1cblxuICAgIGNvbnN0IG1pblRpbWVzdGFtcCA9IDA7IC8vIE1pbmltdW0gcG9zc2libGUgdGltZXN0YW1wIChVbml4IGVwb2NoKVxuICAgIGNvbnN0IG1heFRpbWVzdGFtcCA9IDg2NDAwMDAwMDAwMDAwMDA7IC8vIE1heCBzYWZlIHRpbWVzdGFtcCBpbiBKUyAocmVwcmVzZW50cyB5ZWFyIH4yNzU3NjApXG5cbiAgICByZXR1cm4gdmFsdWUgPj0gbWluVGltZXN0YW1wICYmIHZhbHVlIDw9IG1heFRpbWVzdGFtcDtcbiAgfTtcbn1cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWNvcmUgbGliL3V0aWxzLnRzIl19
@@ -594,9 +594,12 @@ const crossPlatformPath = (pathStringOrPathParts) => {
594
594
  /* */
595
595
  /* */
596
596
  /* */
597
+ /* */
598
+ /* */
599
+ /* */
597
600
  ;
598
601
  ({}); // @--end-of-file-for-module=tnp-core lib/core-imports.ts
599
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1pbXBvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1jb3JlL3Byb2plY3RzL3RucC1jb3JlL3NyYy9saWIvY29yZS1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN2QixLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUdMLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxJQUFJLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLElBQUksUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLL0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUtsQyxJQUFJLENBQWEsQ0FBQztBQUVsQixDQUFDLEdBQUcsTUFBTSxDQUFDO0FBRVgsS0FBSztBQUNMLEtBQUs7QUFNTCxJQUFJLElBQUksR0FBRyxLQUFLLENBQXdCLENBQUM7QUFDekMsS0FBSztBQUNMLEtBQUs7QUFJTCxhQUFhO0FBQ2IsSUFBSSxHQUFHLFFBQVEsQ0FBQztBQU1oQixJQUFJLEtBQUssR0FBVSxLQUFLLENBQXlCLENBQUM7QUFDbEQsS0FBSztBQUNMLEtBQUs7QUFJTCxhQUFhO0FBQ2IsS0FBSyxHQUFHLFNBQVMsQ0FBQztBQU9sQixLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBS0w7O0dBRUc7QUFDSCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVMsRUFBVSxFQUFFO0lBQ3hDLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFFSCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6QixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUM7QUFJRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIscUJBQXdDLEVBQ2hDLEVBQUU7SUFDVixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDO1FBQ3pDLHFCQUFxQixHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxPQUFPLHFCQUFxQixLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlDLE9BQU8scUJBQXFCLENBQUM7SUFDL0IsQ0FBQztJQUlELElBQ0UsT0FBTyxxQkFBcUIsS0FBSyxRQUFRO1FBQ3pDLFVBQVUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFDdEMsQ0FBQztRQUNELHFCQUFxQixHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxvQkFBb0IsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDckUsTUFBTSxXQUFXLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7SUFDNUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUM7K0NBQzhCLENBQUMsQ0FBQztRQUM3QyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLHFCQUFxQixHQUFHLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsTUFBTSxXQUFXLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVFLE9BQU8sQ0FBQyxPQUFPLENBQ2IsdUVBQXVFLFdBQVcsRUFBRSxDQUNyRixDQUFDO1FBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxxQkFBcUIsR0FBRyxDQUFDLHFCQUFxQixJQUFJLEVBQUUsQ0FBQztTQUNsRCxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztTQUNuQixPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQztTQUNyQixPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsMkJBQTJCO0lBRXJELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN4QixLQUFLO0lBQ0wsS0FBSztJQUNMLEtBQUs7SUFDTCxLQUFLO0lBR0gsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUM7SUFHeEMsSUFBSSxTQUFTLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7UUFDM0QscUJBQXFCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFZRCxPQUFPLHFCQUFxQixDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUlGLE9BQU8sRUFBSSxDQUFDLEVBQUksQ0FBQyxFQUFJLE1BQU0sRUFBSSxVQUFVLEVBQUksaUJBQWlCLEVBQUksU0FBUyxFQUFJLElBQUksRUFBSSxLQUFLLEVBQUksS0FBSyxFQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsS0FBSztBQUNuSCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUlKLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMseURBQXlEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxubGV0IGZvcmNlVHJhY2UgPSBmYWxzZTtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuaW1wb3J0IGpRdWVyeSBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHsgY2hhbGsgYXMgY2hhbGtNb2NrIH0gZnJvbSAnLi9ub2RlLWNoYWxrLW1vY2snO1xuaW1wb3J0IHsgcGF0aCBhcyBwYXRoTW9jayB9IGZyb20gJy4vbm9kZS1wYXRoLW1vY2snO1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBxIGZyb20gJ3EnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgKiBhcyBkYXRlZm9ybWF0IGZyb20gJ2RhdGVmb3JtYXQnO1xuaW1wb3J0IHsgQ2hhbGsgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyBqc29uNSBmcm9tICdqc29uNSc7XG5pbXBvcnQgdHlwZSBqUXVlcnlUeXBlIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgdHlwZSBjaGFsa0Jhc2VUeXBlIGZyb20gJ2NoYWxrJztcbmltcG9ydCB0eXBlICogYXMgcGF0aEJhc2VUeXBlIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi9pbmRleCc7XG5cblxuXG5cbmxldCAkOiBqUXVlcnlUeXBlO1xuXG4kID0galF1ZXJ5O1xuXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG5cbmxldCBwYXRoID0gdm9pZCAwIGFzIHR5cGVvZiBwYXRoQmFzZVR5cGU7XG4vKiAqL1xuLyogKi9cbiAgXG5cblxuLy8gQHRzLWlnbm9yZVxucGF0aCA9IHBhdGhNb2NrO1xuXG5cblxuXG5cbmxldCBjaGFsazogQ2hhbGsgPSB2b2lkIDAgYXMgdHlwZW9mIGNoYWxrQmFzZVR5cGU7XG4vKiAqL1xuLyogKi9cbiAgXG5cblxuLy8gQHRzLWlnbm9yZVxuY2hhbGsgPSBjaGFsa01vY2s7XG5cblxuXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qKlxuICogdHJhbnNmb3JtIHVuaXggcGF0aCB0byB3aW4zMiBwYXRoXG4gKi9cbmNvbnN0IHdpbjMyUGF0aCA9IChwOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIGlmICgvXlxcL1thLXpdXFwvLy50ZXN0KHApKSB7XG4gICAgcCA9IHAucmVwbGFjZSgvXlxcL1thLXpdXFwvLywgYCR7cC5jaGFyQXQoMSkudG9VcHBlckNhc2UoKX06L2ApO1xuICB9XG4gIHJldHVybiBwYXRoLndpbjMyLm5vcm1hbGl6ZShwKTtcbn07XG5cblxuXG4vKipcbiAqIFRoaXMgZnVuY2l0b24gd2lsbCByZXBsYWNlIC8vIHRvIC9cbiAqL1xuY29uc3QgY3Jvc3NQbGF0Zm9ybVBhdGggPSAoXG4gIHBhdGhTdHJpbmdPclBhdGhQYXJ0czogc3RyaW5nIHwgc3RyaW5nW10sXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXRoU3RyaW5nT3JQYXRoUGFydHMpKSB7XG4gICAgcGF0aFN0cmluZ09yUGF0aFBhcnRzID0gcGF0aFN0cmluZ09yUGF0aFBhcnRzLmpvaW4oJy8nKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcGF0aFN0cmluZ09yUGF0aFBhcnRzICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXRoU3RyaW5nT3JQYXRoUGFydHM7XG4gIH1cblxuXG5cbiAgaWYgKFxuICAgIHR5cGVvZiBwYXRoU3RyaW5nT3JQYXRoUGFydHMgPT09ICdzdHJpbmcnICYmXG4gICAgL15bQS1aXVxcOi8udGVzdChwYXRoU3RyaW5nT3JQYXRoUGFydHMpXG4gICkge1xuICAgIHBhdGhTdHJpbmdPclBhdGhQYXJ0cyA9IF8ubG93ZXJGaXJzdChwYXRoU3RyaW5nT3JQYXRoUGFydHMpO1xuICB9XG5cbiAgY29uc3QgaXNFeHRlbmRlZExlbmd0aFBhdGggPSAvXlxcXFxcXFxcXFw/XFxcXC8udGVzdChwYXRoU3RyaW5nT3JQYXRoUGFydHMpO1xuICBjb25zdCBoYXNOb25Bc2NpaSA9IC9bXlxcdTAwMDAtXFx1MDA4MF0rLy50ZXN0KHBhdGhTdHJpbmdPclBhdGhQYXJ0cyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29udHJvbC1yZWdleFxuICBpZiAoaXNFeHRlbmRlZExlbmd0aFBhdGgpIHtcbiAgICBjb25zb2xlLndhcm4oYFt0YW9uLWNvcmVdW2Nyb3NzUGxhdGZvcm1QYXRoXTogUGF0aCBzdGFydHMgd2l0aCBcXFxcXFxcXCxcbiAgICB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gY3Jvc3NQbGF0Zm9ybVBhdGhgKTtcbiAgICBpZiAoZm9yY2VUcmFjZSkge1xuICAgICAgY29uc29sZS50cmFjZShgcGF0aDogXCIke3BhdGhTdHJpbmdPclBhdGhQYXJ0c31cImApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChoYXNOb25Bc2NpaSkge1xuICAgIGNvbnN0IGFsbE5vbkFzY2lpID0gcGF0aFN0cmluZ09yUGF0aFBhcnRzLm1hdGNoKC9bXlxcdTAwMDAtXFx1MDA4MF0rL2cpIHx8ICcnO1xuICAgIEhlbHBlcnMubG9nV2FybihcbiAgICAgIGBbdGFvbi1jb3JlXVtjcm9zc1BsYXRmb3JtUGF0aF06IFBhdGggY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3RlcnM6ICR7YWxsTm9uQXNjaWl9YCxcbiAgICApO1xuICAgIEhlbHBlcnMubG9nV2FybihwYXRoU3RyaW5nT3JQYXRoUGFydHMpO1xuICB9XG5cbiAgcGF0aFN0cmluZ09yUGF0aFBhcnRzID0gKHBhdGhTdHJpbmdPclBhdGhQYXJ0cyB8fCAnJylcbiAgICAucmVwbGFjZSgvXFxcXC9nLCAnLycpXG4gICAgLnJlcGxhY2UoL1xcL1xcLy9nLCAnLycpXG4gICAgLnJlcGxhY2UoL1xcL1xcLy9nLCAnLycpOyAvLyBUT0RPIHByb2JhYmx5IG5vdCBuZWVkZWRcblxuICBsZXQgaXNXaW5kb3dzID0gZmFsc2U7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuICBjb25zdCByZWdleFdpblBhdGgxID0gL14oXFwvKVthLXpBLVpdXFw6LztcblxuXG4gIGlmIChpc1dpbmRvd3MgJiYgcmVnZXhXaW5QYXRoMS50ZXN0KHBhdGhTdHJpbmdPclBhdGhQYXJ0cykpIHtcbiAgICBwYXRoU3RyaW5nT3JQYXRoUGFydHMgPSBwYXRoU3RyaW5nT3JQYXRoUGFydHMuc2xpY2UoMSk7XG4gIH1cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIHJldHVybiBwYXRoU3RyaW5nT3JQYXRoUGFydHM7XG59O1xuXG5cblxuZXhwb3J0IHsgICBfLCAgIHEsICAgbW9tZW50LCAgIGRhdGVmb3JtYXQsICAgY3Jvc3NQbGF0Zm9ybVBhdGgsICAgd2luMzJQYXRoLCAgIHBhdGgsICAgY2hhbGssICAganNvbjUsICAgJCwgfTsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWNvcmUgbGliL2NvcmUtaW1wb3J0cy50cyJdfQ==
602
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS1pbXBvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3RucC1jb3JlL3Byb2plY3RzL3RucC1jb3JlL3NyYy9saWIvY29yZS1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN2QixLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUdMLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsS0FBSyxJQUFJLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLElBQUksUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFcEQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7QUFDdkIsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFFekMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFLL0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUtsQyxJQUFJLENBQWEsQ0FBQztBQUVsQixDQUFDLEdBQUcsTUFBTSxDQUFDO0FBRVgsS0FBSztBQUNMLEtBQUs7QUFNTCxJ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QXFCLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFZRCxPQUFPLHFCQUFxQixDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUlGLE9BQU8sRUFBSSxDQUFDLEVBQUksQ0FBQyxFQUFJLE1BQU0sRUFBSSxVQUFVLEVBQUksaUJBQWlCLEVBQUksU0FBUyxFQUFJLElBQUksRUFBSSxLQUFLLEVBQUksS0FBSyxFQUFJLENBQUMsR0FBRyxDQUFDLENBQUEsS0FBSztBQUNuSCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBR0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUlKLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMseURBQXlEIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxubGV0IGZvcmNlVHJhY2UgPSBmYWxzZTtcbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuaW1wb3J0IGpRdWVyeSBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHsgY2hhbGsgYXMgY2hhbGtNb2NrIH0gZnJvbSAnLi9ub2RlLWNoYWxrLW1vY2snO1xuaW1wb3J0IHsgcGF0aCBhcyBwYXRoTW9jayB9IGZyb20gJy4vbm9kZS1wYXRoLW1vY2snO1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBxIGZyb20gJ3EnO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgKiBhcyBkYXRlZm9ybWF0IGZyb20gJ2RhdGVmb3JtYXQnO1xuaW1wb3J0IHsgQ2hhbGsgfSBmcm9tICdjaGFsayc7XG5pbXBvcnQgKiBhcyBqc29uNSBmcm9tICdqc29uNSc7XG5pbXBvcnQgdHlwZSBqUXVlcnlUeXBlIGZyb20gJ2pxdWVyeSc7XG5pbXBvcnQgdHlwZSBjaGFsa0Jhc2VUeXBlIGZyb20gJ2NoYWxrJztcbmltcG9ydCB0eXBlICogYXMgcGF0aEJhc2VUeXBlIGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQgeyBIZWxwZXJzIH0gZnJvbSAnLi9pbmRleCc7XG5cblxuXG5cbmxldCAkOiBqUXVlcnlUeXBlO1xuXG4kID0galF1ZXJ5O1xuXG4vKiAqL1xuLyogKi9cbiAgXG5cblxuXG5cbmxldCBwYXRoID0gdm9pZCAwIGFzIHR5cGVvZiBwYXRoQmFzZVR5cGU7XG4vKiAqL1xuLyogKi9cbiAgXG5cblxuLy8gQHRzLWlnbm9yZVxucGF0aCA9IHBhdGhNb2NrO1xuXG5cblxuXG5cbmxldCBjaGFsazogQ2hhbGsgPSB2b2lkIDAgYXMgdHlwZW9mIGNoYWxrQmFzZVR5cGU7XG4vKiAqL1xuLyogKi9cbiAgXG5cblxuLy8gQHRzLWlnbm9yZVxuY2hhbGsgPSBjaGFsa01vY2s7XG5cblxuXG5cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG5cbi8qKlxuICogdHJhbnNmb3JtIHVuaXggcGF0aCB0byB3aW4zMiBwYXRoXG4gKi9cbmNvbnN0IHdpbjMyUGF0aCA9IChwOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbiAgXG4gIGlmICgvXlxcL1thLXpdXFwvLy50ZXN0KHApKSB7XG4gICAgcCA9IHAucmVwbGFjZSgvXlxcL1thLXpdXFwvLywgYCR7cC5jaGFyQXQoMSkudG9VcHBlckNhc2UoKX06L2ApO1xuICB9XG4gIHJldHVybiBwYXRoLndpbjMyLm5vcm1hbGl6ZShwKTtcbn07XG5cblxuXG4vKipcbiAqIFRoaXMgZnVuY2l0b24gd2lsbCByZXBsYWNlIC8vIHRvIC9cbiAqL1xuY29uc3QgY3Jvc3NQbGF0Zm9ybVBhdGggPSAoXG4gIHBhdGhTdHJpbmdPclBhdGhQYXJ0czogc3RyaW5nIHwgc3RyaW5nW10sXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXRoU3RyaW5nT3JQYXRoUGFydHMpKSB7XG4gICAgcGF0aFN0cmluZ09yUGF0aFBhcnRzID0gcGF0aFN0cmluZ09yUGF0aFBhcnRzLmpvaW4oJy8nKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcGF0aFN0cmluZ09yUGF0aFBhcnRzICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXRoU3RyaW5nT3JQYXRoUGFydHM7XG4gIH1cblxuXG5cbiAgaWYgKFxuICAgIHR5cGVvZiBwYXRoU3RyaW5nT3JQYXRoUGFydHMgPT09ICdzdHJpbmcnICYmXG4gICAgL15bQS1aXVxcOi8udGVzdChwYXRoU3RyaW5nT3JQYXRoUGFydHMpXG4gICkge1xuICAgIHBhdGhTdHJpbmdPclBhdGhQYXJ0cyA9IF8ubG93ZXJGaXJzdChwYXRoU3RyaW5nT3JQYXRoUGFydHMpO1xuICB9XG5cbiAgY29uc3QgaXNFeHRlbmRlZExlbmd0aFBhdGggPSAvXlxcXFxcXFxcXFw/XFxcXC8udGVzdChwYXRoU3RyaW5nT3JQYXRoUGFydHMpO1xuICBjb25zdCBoYXNOb25Bc2NpaSA9IC9bXlxcdTAwMDAtXFx1MDA4MF0rLy50ZXN0KHBhdGhTdHJpbmdPclBhdGhQYXJ0cyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29udHJvbC1yZWdleFxuICBpZiAoaXNFeHRlbmRlZExlbmd0aFBhdGgpIHtcbiAgICBjb25zb2xlLndhcm4oYFt0YW9uLWNvcmVdW2Nyb3NzUGxhdGZvcm1QYXRoXTogUGF0aCBzdGFydHMgd2l0aCBcXFxcXFxcXCxcbiAgICB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gY3Jvc3NQbGF0Zm9ybVBhdGhgKTtcbiAgICBpZiAoZm9yY2VUcmFjZSkge1xuICAgICAgY29uc29sZS50cmFjZShgcGF0aDogXCIke3BhdGhTdHJpbmdPclBhdGhQYXJ0c31cImApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChoYXNOb25Bc2NpaSkge1xuICAgIGNvbnN0IGFsbE5vbkFzY2lpID0gcGF0aFN0cmluZ09yUGF0aFBhcnRzLm1hdGNoKC9bXlxcdTAwMDAtXFx1MDA4MF0rL2cpIHx8ICcnO1xuICAgIEhlbHBlcnMubG9nV2FybihcbiAgICAgIGBbdGFvbi1jb3JlXVtjcm9zc1BsYXRmb3JtUGF0aF06IFBhdGggY29udGFpbnMgbm9uLWFzY2lpIGNoYXJhY3RlcnM6ICR7YWxsTm9uQXNjaWl9YCxcbiAgICApO1xuICAgIEhlbHBlcnMubG9nV2FybihwYXRoU3RyaW5nT3JQYXRoUGFydHMpO1xuICB9XG5cbiAgcGF0aFN0cmluZ09yUGF0aFBhcnRzID0gKHBhdGhTdHJpbmdPclBhdGhQYXJ0cyB8fCAnJylcbiAgICAucmVwbGFjZSgvXFxcXC9nLCAnLycpXG4gICAgLnJlcGxhY2UoL1xcL1xcLy9nLCAnLycpXG4gICAgLnJlcGxhY2UoL1xcL1xcLy9nLCAnLycpOyAvLyBUT0RPIHByb2JhYmx5IG5vdCBuZWVkZWRcblxuICBsZXQgaXNXaW5kb3dzID0gZmFsc2U7XG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuICBjb25zdCByZWdleFdpblBhdGgxID0gL14oXFwvKVthLXpBLVpdXFw6LztcblxuXG4gIGlmIChpc1dpbmRvd3MgJiYgcmVnZXhXaW5QYXRoMS50ZXN0KHBhdGhTdHJpbmdPclBhdGhQYXJ0cykpIHtcbiAgICBwYXRoU3RyaW5nT3JQYXRoUGFydHMgPSBwYXRoU3RyaW5nT3JQYXRoUGFydHMuc2xpY2UoMSk7XG4gIH1cblxuXG5cblxuXG5cblxuXG5cblxuXG4gIHJldHVybiBwYXRoU3RyaW5nT3JQYXRoUGFydHM7XG59O1xuXG5cblxuZXhwb3J0IHsgICBfLCAgIHEsICAgbW9tZW50LCAgIGRhdGVmb3JtYXQsICAgY3Jvc3NQbGF0Zm9ybVBhdGgsICAgd2luMzJQYXRoLCAgIHBhdGgsICAgY2hhbGssICAganNvbjUsICAgJCwgfTsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuICBcblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dG5wLWNvcmUgbGliL2NvcmUtaW1wb3J0cy50cyJdfQ==
600
603
 
601
604
  var CoreModels;
602
605
  (function (CoreModels) {
@@ -1391,6 +1394,7 @@ var UtilsOs;
1391
1394
  * windows subsystem for linux (WSL).
1392
1395
  */
1393
1396
  UtilsOs.isRunningInWsl = () => {
1397
+ return false;
1394
1398
  /* */
1395
1399
  /* */
1396
1400
  /* */
@@ -1411,6 +1415,7 @@ var UtilsOs;
1411
1415
  return (void 0);
1412
1416
  };
1413
1417
  UtilsOs.isRunningInDocker = () => {
1418
+ return false;
1414
1419
  /* */
1415
1420
  /* */
1416
1421
  /* */
@@ -1440,6 +1445,38 @@ var UtilsString;
1440
1445
  .toLowerCase());
1441
1446
  };
1442
1447
  })(UtilsString || (UtilsString = {}));
1448
+ /**
1449
+ * Taon migration utilities
1450
+ */
1451
+ var UtilsMigrations;
1452
+ (function (UtilsMigrations) {
1453
+ UtilsMigrations.getTimestampFromClassName = (className) => {
1454
+ const [maybeTimestamp1, maybeTimestamp2] = className.split('_') || [];
1455
+ const timestamp1 = parseInt(maybeTimestamp1);
1456
+ const timestamp2 = parseInt(maybeTimestamp2);
1457
+ const timestamp = !_.isNaN(timestamp1) ? timestamp1 : timestamp2;
1458
+ return UtilsMigrations.isValidTimestamp(timestamp) ? timestamp : void 0;
1459
+ };
1460
+ UtilsMigrations.getFormattedTimestampFromClassName = (className) => {
1461
+ const timestamp = UtilsMigrations.getTimestampFromClassName(className);
1462
+ if (!timestamp) {
1463
+ return void 0;
1464
+ }
1465
+ return UtilsMigrations.formatTimestamp(timestamp);
1466
+ };
1467
+ UtilsMigrations.formatTimestamp = (timestamp) => {
1468
+ const dateFromTimestamp = new Date(timestamp);
1469
+ return `${dateformat(dateFromTimestamp, 'dd-mm-yyyy HH:MM:ss')}`;
1470
+ };
1471
+ UtilsMigrations.isValidTimestamp = (value) => {
1472
+ if (typeof value !== 'number') {
1473
+ return false; // Must be a number
1474
+ }
1475
+ const minTimestamp = 0; // Minimum possible timestamp (Unix epoch)
1476
+ const maxTimestamp = 8640000000000000; // Max safe timestamp in JS (represents year ~275760)
1477
+ return value >= minTimestamp && value <= maxTimestamp;
1478
+ };
1479
+ })(UtilsMigrations || (UtilsMigrations = {}));
1443
1480
  ;
1444
1481
  ({}); // @--end-of-file-for-module=tnp-core lib/utils.ts
1445
1482
 
@@ -1546,6 +1583,22 @@ const KEY_IMPORTANTCE = {
1546
1583
  /* */
1547
1584
  /* */
1548
1585
  const LIMIT = 10;
1586
+ /**
1587
+ * @param details any data to be transformed
1588
+ * @returns string ready to be displayed
1589
+ */
1590
+ const transformData = (details) => {
1591
+ if (typeof details === 'object') {
1592
+ try {
1593
+ const json = JSON.stringify(details, null, 2);
1594
+ details = json;
1595
+ }
1596
+ catch (error) {
1597
+ return details;
1598
+ }
1599
+ }
1600
+ return details;
1601
+ };
1549
1602
  class HelpersMessages extends HelpersIsomorphic {
1550
1603
  msgCacheClear() {
1551
1604
  /* */
@@ -1587,6 +1640,9 @@ class HelpersMessages extends HelpersIsomorphic {
1587
1640
  }
1588
1641
  throw new Error(details);
1589
1642
  }
1643
+ tryCatchError(error) {
1644
+ Helpers.error(error, true, true);
1645
+ }
1590
1646
  error(details, noExit = false, noTrace = false) {
1591
1647
  if (Helpers.isBrowser) {
1592
1648
  console.error(details);
@@ -1849,6 +1905,14 @@ class HelpersMessages extends HelpersIsomorphic {
1849
1905
  /* */
1850
1906
  /* */
1851
1907
  }
1908
+ get isVerboseMode() {
1909
+ return true; // TODO what it means in browser
1910
+ /* */
1911
+ /* */
1912
+ }
1913
+ /**
1914
+ * log messages only available in verbose mode
1915
+ */
1852
1916
  log(details, debugLevel = 0) {
1853
1917
  if (Helpers.isBrowser) {
1854
1918
  console.log(details);
@@ -2008,21 +2072,6 @@ class HelpersMessages extends HelpersIsomorphic {
2008
2072
  /* */
2009
2073
  }
2010
2074
  }
2011
- function transformData(details) {
2012
- if (typeof details === 'object') {
2013
- if (Array.isArray(details)) {
2014
- return details.join('\n');
2015
- }
2016
- try {
2017
- const json = JSON.stringify(details);
2018
- details = json;
2019
- }
2020
- catch (error) {
2021
- return details;
2022
- }
2023
- }
2024
- return details;
2025
- }
2026
2075
  ;
2027
2076
  ({}); // @--end-of-file-for-module=tnp-core lib/helpers-messages.ts
2028
2077
 
@@ -4607,5 +4656,5 @@ let Helpers = HelpersCore.InstanceCore;
4607
4656
  * Generated bundle index. Do not edit.
4608
4657
  */
4609
4658
 
4610
- export { $, CLI, CoreConfig, HelpersCore as CoreHelpers, CoreModels, Helpers, PROGRESS_DATA, Utils, UtilsOs, UtilsProcess, UtilsString, chalk, crossPlatformPath, frameworkName, frameworkNameBe, path, requiredForDev, win32Path };
4659
+ export { $, CLI, CoreConfig, HelpersCore as CoreHelpers, CoreModels, Helpers, PROGRESS_DATA, Utils, UtilsMigrations, UtilsOs, UtilsProcess, UtilsString, chalk, crossPlatformPath, frameworkName, frameworkNameBe, path, requiredForDev, win32Path };
4611
4660
  //# sourceMappingURL=tnp-core.mjs.map