@dbx-tools/shared-core 0.9.21 → 0.9.29

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 (69) hide show
  1. package/index.ts +2 -1
  2. package/lib/index.d.ts +2 -1
  3. package/lib/index.js +3 -2
  4. package/lib/src/async-utils.d.ts +1 -0
  5. package/lib/src/async-utils.js +2 -1
  6. package/lib/src/environment-utils.d.ts +2 -0
  7. package/lib/src/environment-utils.js +27 -0
  8. package/lib/src/object.d.ts +2 -0
  9. package/lib/src/object.js +3 -1
  10. package/lib/src/string-utils.d.ts +4 -0
  11. package/lib/src/string-utils.js +5 -1
  12. package/lib/tsconfig.tsbuildinfo +1 -1
  13. package/package.json +66 -2
  14. package/src/async-utils.ts +1 -0
  15. package/src/environment-utils.ts +31 -0
  16. package/src/object.ts +2 -0
  17. package/src/string-utils.ts +4 -0
  18. package/._LICENSE +0 -0
  19. package/._README.md +0 -0
  20. package/._index.ts +0 -0
  21. package/._package.json +0 -0
  22. package/lib/._index.d.ts +0 -0
  23. package/lib/._index.js +0 -0
  24. package/lib/._tsconfig.tsbuildinfo +0 -0
  25. package/lib/src/._async-utils.d.ts +0 -0
  26. package/lib/src/._async-utils.js +0 -0
  27. package/lib/src/._brand-utils.d.ts +0 -0
  28. package/lib/src/._brand-utils.js +0 -0
  29. package/lib/src/._error-utils.d.ts +0 -0
  30. package/lib/src/._error-utils.js +0 -0
  31. package/lib/src/._execution.d.ts +0 -0
  32. package/lib/src/._execution.js +0 -0
  33. package/lib/src/._function-utils.d.ts +0 -0
  34. package/lib/src/._function-utils.js +0 -0
  35. package/lib/src/._hash.d.ts +0 -0
  36. package/lib/src/._hash.js +0 -0
  37. package/lib/src/._http.d.ts +0 -0
  38. package/lib/src/._http.js +0 -0
  39. package/lib/src/._json.d.ts +0 -0
  40. package/lib/src/._json.js +0 -0
  41. package/lib/src/._log.d.ts +0 -0
  42. package/lib/src/._log.js +0 -0
  43. package/lib/src/._net.d.ts +0 -0
  44. package/lib/src/._net.js +0 -0
  45. package/lib/src/._object.d.ts +0 -0
  46. package/lib/src/._object.js +0 -0
  47. package/lib/src/._pattern.d.ts +0 -0
  48. package/lib/src/._pattern.js +0 -0
  49. package/lib/src/._predicate.d.ts +0 -0
  50. package/lib/src/._predicate.js +0 -0
  51. package/lib/src/._string-utils.d.ts +0 -0
  52. package/lib/src/._string-utils.js +0 -0
  53. package/lib/src/._token.d.ts +0 -0
  54. package/lib/src/._token.js +0 -0
  55. package/src/._async-utils.ts +0 -0
  56. package/src/._brand-utils.ts +0 -0
  57. package/src/._error-utils.ts +0 -0
  58. package/src/._execution.ts +0 -0
  59. package/src/._function-utils.ts +0 -0
  60. package/src/._hash.ts +0 -0
  61. package/src/._http.ts +0 -0
  62. package/src/._json.ts +0 -0
  63. package/src/._log.ts +0 -0
  64. package/src/._net.ts +0 -0
  65. package/src/._object.ts +0 -0
  66. package/src/._pattern.ts +0 -0
  67. package/src/._predicate.ts +0 -0
  68. package/src/._string-utils.ts +0 -0
  69. package/src/._token.ts +0 -0
package/index.ts CHANGED
@@ -3,9 +3,10 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
6
- export const PACKAGE_VERSION = "0.9.21";
6
+ export const PACKAGE_VERSION = "0.9.29";
7
7
  export * as asyncUtils from "./src/async-utils.ts";
8
8
  export * as brandUtils from "./src/brand-utils.ts";
9
+ export * as environmentUtils from "./src/environment-utils.ts";
9
10
  export * as errorUtils from "./src/error-utils.ts";
10
11
  export * as execution from "./src/execution.ts";
11
12
  export * as functionUtils from "./src/function-utils.ts";
package/lib/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
2
- export declare const PACKAGE_VERSION = "0.9.21";
2
+ export declare const PACKAGE_VERSION = "0.9.29";
3
3
  export * as asyncUtils from "./src/async-utils.ts";
4
4
  export * as brandUtils from "./src/brand-utils.ts";
5
+ export * as environmentUtils from "./src/environment-utils.ts";
5
6
  export * as errorUtils from "./src/error-utils.ts";
6
7
  export * as execution from "./src/execution.ts";
7
8
  export * as functionUtils from "./src/function-utils.ts";
package/lib/index.js CHANGED
@@ -2,9 +2,10 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-core";
5
- export const PACKAGE_VERSION = "0.9.21";
5
+ export const PACKAGE_VERSION = "0.9.29";
6
6
  export * as asyncUtils from "./src/async-utils.js";
7
7
  export * as brandUtils from "./src/brand-utils.js";
8
+ export * as environmentUtils from "./src/environment-utils.js";
8
9
  export * as errorUtils from "./src/error-utils.js";
9
10
  export * as execution from "./src/execution.js";
10
11
  export * as functionUtils from "./src/function-utils.js";
@@ -20,4 +21,4 @@ export * as stringUtils from "./src/string-utils.js";
20
21
  export * as token from "./src/token.js";
21
22
  export { DEFAULT_BRAND_ASSETS, BrandAssetSetSchema, BrandColorsSchema, BrandVoiceSchema, BrandContextSchema, defaultBrandContext } from "./src/brand-utils.js";
22
23
  export { ACCESS_TOKEN_HEADER, USER_ID_HEADER, USER_EMAIL_HEADER } from "./src/token.js";
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssVUFBVSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssR0FBRyxNQUFNLGNBQWMsQ0FBQztBQUNwQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssV0FBVyxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sS0FBSyxLQUFLLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFZL0osT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjIxXCI7XG5leHBvcnQgKiBhcyBhc3luY1V0aWxzIGZyb20gXCIuL3NyYy9hc3luYy11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRVdGlscyBmcm9tIFwiLi9zcmMvYnJhbmQtdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGVycm9yVXRpbHMgZnJvbSBcIi4vc3JjL2Vycm9yLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyBleGVjdXRpb24gZnJvbSBcIi4vc3JjL2V4ZWN1dGlvbi50c1wiO1xuZXhwb3J0ICogYXMgZnVuY3Rpb25VdGlscyBmcm9tIFwiLi9zcmMvZnVuY3Rpb24tdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGhhc2ggZnJvbSBcIi4vc3JjL2hhc2gudHNcIjtcbmV4cG9ydCAqIGFzIGh0dHAgZnJvbSBcIi4vc3JjL2h0dHAudHNcIjtcbmV4cG9ydCAqIGFzIGpzb24gZnJvbSBcIi4vc3JjL2pzb24udHNcIjtcbmV4cG9ydCAqIGFzIGxvZyBmcm9tIFwiLi9zcmMvbG9nLnRzXCI7XG5leHBvcnQgKiBhcyBuZXQgZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0ICogYXMgb2JqZWN0IGZyb20gXCIuL3NyYy9vYmplY3QudHNcIjtcbmV4cG9ydCAqIGFzIHBhdHRlcm4gZnJvbSBcIi4vc3JjL3BhdHRlcm4udHNcIjtcbmV4cG9ydCAqIGFzIHByZWRpY2F0ZSBmcm9tIFwiLi9zcmMvcHJlZGljYXRlLnRzXCI7XG5leHBvcnQgKiBhcyBzdHJpbmdVdGlscyBmcm9tIFwiLi9zcmMvc3RyaW5nLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyB0b2tlbiBmcm9tIFwiLi9zcmMvdG9rZW4udHNcIjtcbmV4cG9ydCB0eXBlIHsgQ29uY3VycmVudEVycm9yTW9kZSwgTWFwQ29uY3VycmVudE9wdGlvbnMsIFBvbGxDb250ZXh0LCBQb2xsUHJvZHVjZXIsIFBvbGxPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2FzeW5jLXV0aWxzLnRzXCI7XG5leHBvcnQgeyBERUZBVUxUX0JSQU5EX0FTU0VUUywgQnJhbmRBc3NldFNldFNjaGVtYSwgQnJhbmRDb2xvcnNTY2hlbWEsIEJyYW5kVm9pY2VTY2hlbWEsIEJyYW5kQ29udGV4dFNjaGVtYSwgZGVmYXVsdEJyYW5kQ29udGV4dCB9IGZyb20gXCIuL3NyYy9icmFuZC11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCcmFuZENvbnRleHQsIEJyYW5kQ29udGV4dElucHV0LCBCcmFuZEFzc2V0U2V0IH0gZnJvbSBcIi4vc3JjL2JyYW5kLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEVycm9yQ29udGV4dCB9IGZyb20gXCIuL3NyYy9lcnJvci11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25SZXN1bHQsIEV4ZWN1dG9yLCBFeGVjdXRpb25GYWlsdXJlLCBSdW5PcHRpb25zIH0gZnJvbSBcIi4vc3JjL2V4ZWN1dGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZW1vaXplT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9mdW5jdGlvbi11dGlscy50c1wiO1xuZXhwb3J0IHR5cGUgeyBIZWFkZXJMaWtlIH0gZnJvbSBcIi4vc3JjL2h0dHAudHNcIjtcbmV4cG9ydCB0eXBlIHsgTG9nTGV2ZWwsIExvZ2dlciB9IGZyb20gXCIuL3NyYy9sb2cudHNcIjtcbmV4cG9ydCB0eXBlIHsgVXJsTGlrZSwgSXBWZXJzaW9uLCBQYXJzZWRJcCwgQ2lkciwgVXJsQnVpbGRlciwgUGFyc2VFbWFpbHNPcHRpb25zIH0gZnJvbSBcIi4vc3JjL25ldC50c1wiO1xuZXhwb3J0IHR5cGUgeyBTZXF1ZW5jZSwgQ29udGFpbmVyLCBDb2xsZWN0aW9uLCBPbmVPck1hbnksIE5hbWVMaWtlLCBOb25GdW5jdGlvbktleXMsIFNlcmlhbGl6YWJsZVByaW1pdGl2ZSwgU2VyaWFsaXphYmxlVmFsdWUsIFRvTnVtYmVyT3B0aW9ucywgVG9EYXRlT3B0aW9ucywgVG9EdXJhdGlvbk9wdGlvbnMsIERlZXBFcXVhbENvbXBhcmF0b3IgfSBmcm9tIFwiLi9zcmMvb2JqZWN0LnRzXCI7XG5leHBvcnQgdHlwZSB7IFBhdHRlcm5PcHRpb25zIH0gZnJvbSBcIi4vc3JjL3BhdHRlcm4udHNcIjtcbmV4cG9ydCB0eXBlIHsgUHJlZGljYXRlRnVuY3Rpb24sIFR5cGVQcmVkaWNhdGVGdW5jdGlvbiwgUHJlZGljYXRlSW5wdXQsIFByZWRpY2F0ZSB9IGZyb20gXCIuL3NyYy9wcmVkaWNhdGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgVG9rZW5pemVPcHRpb25zLCBLZXlPcHRpb25zLCBJZGVudGlmaWVyT3B0aW9ucywgRGVkZW50T3B0aW9ucywgRGVzY3JpcHRpb24gfSBmcm9tIFwiLi9zcmMvc3RyaW5nLXV0aWxzLnRzXCI7XG5leHBvcnQgeyBBQ0NFU1NfVE9LRU5fSEVBREVSLCBVU0VSX0lEX0hFQURFUiwgVVNFUl9FTUFJTF9IRUFERVIgfSBmcm9tIFwiLi9zcmMvdG9rZW4udHNcIjtcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQztBQUMzRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxLQUFLLFVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxLQUFLLFVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssU0FBUyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxhQUFhLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLFdBQVcsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBWS9KLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS4yOVwiO1xuZXhwb3J0ICogYXMgYXN5bmNVdGlscyBmcm9tIFwiLi9zcmMvYXN5bmMtdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGJyYW5kVXRpbHMgZnJvbSBcIi4vc3JjL2JyYW5kLXV0aWxzLnRzXCI7XG5leHBvcnQgKiBhcyBlbnZpcm9ubWVudFV0aWxzIGZyb20gXCIuL3NyYy9lbnZpcm9ubWVudC11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgZXJyb3JVdGlscyBmcm9tIFwiLi9zcmMvZXJyb3ItdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIGV4ZWN1dGlvbiBmcm9tIFwiLi9zcmMvZXhlY3V0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyBmdW5jdGlvblV0aWxzIGZyb20gXCIuL3NyYy9mdW5jdGlvbi11dGlscy50c1wiO1xuZXhwb3J0ICogYXMgaGFzaCBmcm9tIFwiLi9zcmMvaGFzaC50c1wiO1xuZXhwb3J0ICogYXMgaHR0cCBmcm9tIFwiLi9zcmMvaHR0cC50c1wiO1xuZXhwb3J0ICogYXMganNvbiBmcm9tIFwiLi9zcmMvanNvbi50c1wiO1xuZXhwb3J0ICogYXMgbG9nIGZyb20gXCIuL3NyYy9sb2cudHNcIjtcbmV4cG9ydCAqIGFzIG5ldCBmcm9tIFwiLi9zcmMvbmV0LnRzXCI7XG5leHBvcnQgKiBhcyBvYmplY3QgZnJvbSBcIi4vc3JjL29iamVjdC50c1wiO1xuZXhwb3J0ICogYXMgcGF0dGVybiBmcm9tIFwiLi9zcmMvcGF0dGVybi50c1wiO1xuZXhwb3J0ICogYXMgcHJlZGljYXRlIGZyb20gXCIuL3NyYy9wcmVkaWNhdGUudHNcIjtcbmV4cG9ydCAqIGFzIHN0cmluZ1V0aWxzIGZyb20gXCIuL3NyYy9zdHJpbmctdXRpbHMudHNcIjtcbmV4cG9ydCAqIGFzIHRva2VuIGZyb20gXCIuL3NyYy90b2tlbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBDb25jdXJyZW50RXJyb3JNb2RlLCBNYXBDb25jdXJyZW50T3B0aW9ucywgUG9sbENvbnRleHQsIFBvbGxQcm9kdWNlciwgUG9sbE9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvYXN5bmMtdXRpbHMudHNcIjtcbmV4cG9ydCB7IERFRkFVTFRfQlJBTkRfQVNTRVRTLCBCcmFuZEFzc2V0U2V0U2NoZW1hLCBCcmFuZENvbG9yc1NjaGVtYSwgQnJhbmRWb2ljZVNjaGVtYSwgQnJhbmRDb250ZXh0U2NoZW1hLCBkZWZhdWx0QnJhbmRDb250ZXh0IH0gZnJvbSBcIi4vc3JjL2JyYW5kLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kQ29udGV4dCwgQnJhbmRDb250ZXh0SW5wdXQsIEJyYW5kQXNzZXRTZXQgfSBmcm9tIFwiLi9zcmMvYnJhbmQtdXRpbHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgRXJyb3JDb250ZXh0IH0gZnJvbSBcIi4vc3JjL2Vycm9yLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvblJlc3VsdCwgRXhlY3V0b3IsIEV4ZWN1dGlvbkZhaWx1cmUsIFJ1bk9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZXhlY3V0aW9uLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1lbW9pemVPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2Z1bmN0aW9uLXV0aWxzLnRzXCI7XG5leHBvcnQgdHlwZSB7IEhlYWRlckxpa2UgfSBmcm9tIFwiLi9zcmMvaHR0cC50c1wiO1xuZXhwb3J0IHR5cGUgeyBMb2dMZXZlbCwgTG9nZ2VyIH0gZnJvbSBcIi4vc3JjL2xvZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBVcmxMaWtlLCBJcFZlcnNpb24sIFBhcnNlZElwLCBDaWRyLCBVcmxCdWlsZGVyLCBQYXJzZUVtYWlsc09wdGlvbnMgfSBmcm9tIFwiLi9zcmMvbmV0LnRzXCI7XG5leHBvcnQgdHlwZSB7IFNlcXVlbmNlLCBDb250YWluZXIsIENvbGxlY3Rpb24sIE9uZU9yTWFueSwgTmFtZUxpa2UsIE5vbkZ1bmN0aW9uS2V5cywgU2VyaWFsaXphYmxlUHJpbWl0aXZlLCBTZXJpYWxpemFibGVWYWx1ZSwgVG9OdW1iZXJPcHRpb25zLCBUb0RhdGVPcHRpb25zLCBUb0R1cmF0aW9uT3B0aW9ucywgRGVlcEVxdWFsQ29tcGFyYXRvciB9IGZyb20gXCIuL3NyYy9vYmplY3QudHNcIjtcbmV4cG9ydCB0eXBlIHsgUGF0dGVybk9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvcGF0dGVybi50c1wiO1xuZXhwb3J0IHR5cGUgeyBQcmVkaWNhdGVGdW5jdGlvbiwgVHlwZVByZWRpY2F0ZUZ1bmN0aW9uLCBQcmVkaWNhdGVJbnB1dCwgUHJlZGljYXRlIH0gZnJvbSBcIi4vc3JjL3ByZWRpY2F0ZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBUb2tlbml6ZU9wdGlvbnMsIEtleU9wdGlvbnMsIElkZW50aWZpZXJPcHRpb25zLCBEZWRlbnRPcHRpb25zLCBEZXNjcmlwdGlvbiB9IGZyb20gXCIuL3NyYy9zdHJpbmctdXRpbHMudHNcIjtcbmV4cG9ydCB7IEFDQ0VTU19UT0tFTl9IRUFERVIsIFVTRVJfSURfSEVBREVSLCBVU0VSX0VNQUlMX0hFQURFUiB9IGZyb20gXCIuL3NyYy90b2tlbi50c1wiO1xuIl19
@@ -18,6 +18,7 @@ export interface MapConcurrentOptions {
18
18
  * every value and reports all failures in input order through `AggregateError`.
19
19
  */
20
20
  export declare function mapConcurrent<T, R>(values: readonly T[], callback: (value: T, index: number) => R | PromiseLike<R>, options: MapConcurrentOptions): Promise<R[]>;
21
+ /** Select a bounded retry delay, clamping attempts to the configured schedule. */
21
22
  export declare function boundedRetryDelay(attempt: number, delaysMs?: readonly number[]): number;
22
23
  /**
23
24
  * Per-iteration context handed to {@link PollProducer} and the
@@ -47,6 +47,7 @@ export async function mapConcurrent(values, callback, options) {
47
47
  }
48
48
  throw failures[0].reason;
49
49
  }
50
+ /** Select a bounded retry delay, clamping attempts to the configured schedule. */
50
51
  export function boundedRetryDelay(attempt, delaysMs = DEFAULT_RETRY_DELAYS_MS) {
51
52
  if (!delaysMs.length)
52
53
  return 0;
@@ -205,4 +206,4 @@ export function sleep(ms, signal) {
205
206
  signal?.addEventListener("abort", onAbort, { once: true });
206
207
  });
207
208
  }
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN5bmMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQVUsQ0FBQztBQWdCL0U7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLE1BQW9CLEVBQ3BCLFFBQXlELEVBQ3pELE9BQTZCO0lBRTdCLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUQsTUFBTSxJQUFJLFVBQVUsQ0FBQywrQ0FBK0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUVuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsTUFBTSxRQUFRLEdBQThDLEVBQUUsQ0FBQztJQUMvRCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFbkIsTUFBTSxNQUFNLEdBQUcsS0FBSyxJQUFtQixFQUFFO1FBQ3ZDLE9BQU8sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLEtBQUssV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN0RSxNQUFN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LENBQUMsR0FBRyxFQUFFO1lBQzVCLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDOUMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDUCxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FuY2VsbGF0aW9uLWF3YXJlIGFzeW5jIHByaW1pdGl2ZXM6IGFuIGFib3J0YWJsZSB7QGxpbmsgc2xlZXB9LCBhblxuICoge0BsaW5rIEFib3J0Q29udHJvbGxlcn0gbGlua2VyICh7QGxpbmsgdGllQWJvcnRTaWduYWx9KSwgYW5kIGEgcGVyaW9kaWNcbiAqIHtAbGluayBwb2xsfSBnZW5lcmF0b3IuIERlcGVuZGVuY3ktZnJlZTsgYHBvbGxgJ3MgYFwiZGlzdGluY3RcImAgZmlsdGVyXG4gKiB1c2VzIHRoZSBsb2NhbCB7QGxpbmsgZGVlcEVxdWFsfS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cbmltcG9ydCB7IGRlZXBFcXVhbCB9IGZyb20gXCIuL29iamVjdC50c1wiO1xuXG5jb25zdCBERUZBVUxUX1JFVFJZX0RFTEFZU19NUyA9IFsxXzAwMCwgMl8wMDAsIDVfMDAwLCAxMF8wMDAsIDMwXzAwMF0gYXMgY29uc3Q7XG5cbi8qKiBDb250cm9scyBob3cge0BsaW5rIG1hcENvbmN1cnJlbnR9IHJlYWN0cyB3aGVuIGEgd29ya2VyIHJlamVjdHMuICovXG5leHBvcnQgdHlwZSBDb25jdXJyZW50RXJyb3JNb2RlID0gXCJmYWlsLWZhc3RcIiB8IFwic2V0dGxlXCI7XG5cbi8qKiBCb3VuZGVkLXdvcmtlciBzZXR0aW5ncyBmb3Ige0BsaW5rIG1hcENvbmN1cnJlbnR9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXBDb25jdXJyZW50T3B0aW9ucyB7XG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBjYWxsYmFja3MgcnVubmluZyBhdCBvbmNlLiAqL1xuICBjb25jdXJyZW5jeTogbnVtYmVyO1xuICAvKipcbiAgICogYFwiZmFpbC1mYXN0XCJgIHN0b3BzIGNsYWltaW5nIG5ldyB3b3JrIGFmdGVyIHRoZSBmaXJzdCByZWplY3Rpb24uXG4gICAqIGBcInNldHRsZVwiYCBhdHRlbXB0cyBldmVyeSB2YWx1ZSBhbmQgdGhyb3dzIGFuIGBBZ2dyZWdhdGVFcnJvcmAgYWZ0ZXJ3YXJkLlxuICAgKi9cbiAgZXJyb3JNb2RlPzogQ29uY3VycmVudEVycm9yTW9kZTtcbn1cblxuLyoqXG4gKiBNYXAgdmFsdWVzIHRocm91Z2ggYSBib3VuZGVkIHdvcmtlciBwb29sIHdoaWxlIHByZXNlcnZpbmcgaW5wdXQgb3JkZXIuXG4gKlxuICogQWN0aXZlIGNhbGxiYWNrcyBhcmUgYWx3YXlzIGFsbG93ZWQgdG8gc2V0dGxlLiBJbiBmYWlsLWZhc3QgbW9kZSBubyBuZXdcbiAqIGNhbGxiYWNrIHN0YXJ0cyBhZnRlciB0aGUgZmlyc3Qgb2JzZXJ2ZWQgcmVqZWN0aW9uLiBTZXR0bGUgbW9kZSBhdHRlbXB0c1xuICogZXZlcnkgdmFsdWUgYW5kIHJlcG9ydHMgYWxsIGZhaWx1cmVzIGluIGlucHV0IG9yZGVyIHRocm91Z2ggYEFnZ3JlZ2F0ZUVycm9yYC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG1hcENvbmN1cnJlbnQ8VCwgUj4oXG4gIHZhbHVlczogcmVhZG9ubHkgVFtdLFxuICBjYWxsYmFjazogKHZhbHVlOiBULCBpbmRleDogbnVtYmVyKSA9PiBSIHwgUHJvbWlzZUxpa2U8Uj4sXG4gIG9wdGlvbnM6IE1hcENvbmN1cnJlbnRPcHRpb25zLFxuKTogUHJvbWlzZTxSW10+IHtcbiAgY29uc3QgeyBjb25jdXJyZW5jeSwgZXJyb3JNb2RlID0gXCJmYWlsLWZhc3RcIiB9ID0gb3B0aW9ucztcbiAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihjb25jdXJyZW5jeSkgfHwgY29uY3VycmVuY3kgPCAxKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYGNvbmN1cnJlbmN5IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBnb3QgJHtTdHJpbmcoY29uY3VycmVuY3kpfWApO1xuICB9XG4gIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgY29uc3QgcmVzdWx0cyA9IG5ldyBBcnJheTxSPih2YWx1ZXMubGVuZ3RoKTtcbiAgY29uc3QgZmFpbHVyZXM6IEFycmF5PHsgaW5kZXg6IG51bWJlcjsgcmVhc29uOiB1bmtub3duIH0+ID0gW107XG4gIGxldCBuZXh0ID0gMDtcbiAgbGV0IGZhaWxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHdvcmtlciA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICB3aGlsZSAobmV4dCA8IHZhbHVlcy5sZW5ndGggJiYgIShmYWlsZWQgJiYgZXJyb3JNb2RlID09PSBcImZhaWwtZmFzdFwiKSkge1xuICAgICAgY29uc3QgaW5kZXggPSBuZXh0Kys7XG4gICAgICB0cnkge1xuICAgICAgICByZXN1bHRzW2luZGV4XSA9IGF3YWl0IGNhbGxiYWNrKHZhbHVlc1tpbmRleF0hLCBpbmRleCk7XG4gICAgICB9IGNhdGNoIChyZWFzb24pIHtcbiAgICAgICAgZmFpbHVyZXMucHVzaCh7IGluZGV4LCByZWFzb24gfSk7XG4gICAgICAgIGZhaWxlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGF3YWl0IFByb21pc2UuYWxsKEFycmF5LmZyb20oeyBsZW5ndGg6IE1hdGgubWluKGNvbmN1cnJlbmN5LCB2YWx1ZXMubGVuZ3RoKSB9LCAoKSA9PiB3b3JrZXIoKSkpO1xuICBpZiAoZmFpbHVyZXMubGVuZ3RoID09PSAwKSByZXR1cm4gcmVzdWx0cztcblxuICBmYWlsdXJlcy5zb3J0KChsZWZ0LCByaWdodCkgPT4gbGVmdC5pbmRleCAtIHJpZ2h0LmluZGV4KTtcbiAgaWYgKGVycm9yTW9kZSA9PT0gXCJzZXR0bGVcIikge1xuICAgIHRocm93IG5ldyBBZ2dyZWdhdGVFcnJvcihcbiAgICAgIGZhaWx1cmVzLm1hcCgoeyByZWFzb24gfSkgPT4gcmVhc29uKSxcbiAgICAgIGAke2ZhaWx1cmVzLmxlbmd0aH0gY29uY3VycmVudCBvcGVyYXRpb24ke2ZhaWx1cmVzLmxlbmd0aCA9PT0gMSA/IFwiXCIgOiBcInNcIn0gZmFpbGVkYCxcbiAgICApO1xuICB9XG4gIHRocm93IGZhaWx1cmVzWzBdIS5yZWFzb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBib3VuZGVkUmV0cnlEZWxheShcbiAgYXR0ZW1wdDogbnVtYmVyLFxuICBkZWxheXNNczogcmVhZG9ubHkgbnVtYmVyW10gPSBERUZBVUxUX1JFVFJZX0RFTEFZU19NUyxcbik6IG51bWJlciB7XG4gIGlmICghZGVsYXlzTXMubGVuZ3RoKSByZXR1cm4gMDtcbiAgcmV0dXJuIGRlbGF5c01zW01hdGgubWluKE1hdGgubWF4KDAsIGF0dGVtcHQpLCBkZWxheXNNcy5sZW5ndGggLSAxKV0hO1xufVxuXG4vKipcbiAqIFBlci1pdGVyYXRpb24gY29udGV4dCBoYW5kZWQgdG8ge0BsaW5rIFBvbGxQcm9kdWNlcn0gYW5kIHRoZVxuICogcHJlZGljYXRlIG9uIGVhY2ggc3RlcCBvZiBhIHtAbGluayBwb2xsfSBsb29wLiBCdW5kbGVzIHRoZVxuICogaXRlcmF0aW9uIG1ldGFkYXRhIHNvIHRoZSBjYWxsIHNpZ25hdHVyZXMgc3RheSBzdGFibGUgYXMgYHBvbGxgXG4gKiBncm93cyBhZGRpdGlvbmFsIGZpZWxkcy5cbiAqXG4gKiBgc2lnbmFsYCBpcyBvd25lZCBieSBgcG9sbGA6IGl0IHRyYWNrcyB0aGUgZXh0ZXJuYWxcbiAqIGBQb2xsT3B0aW9ucy5zaWduYWxgICh3aGVuIHN1cHBsaWVkKSBhbmQgYWxzbyBmaXJlcyB3aGVuIHRoZVxuICogY29uc3VtZXIgYnJlYWtzIG91dCBvZiB0aGUgbG9vcCwgc28gcHJvZHVjZXJzIGNhbiBmb3J3YXJkIGl0IHRvXG4gKiBhbnkgaW4tZmxpZ2h0IHdvcmsgKGBmZXRjaGAsIFNESyBjYWxscywgZXRjLikgYW5kIGhhdmUgYSBzaW5nbGVcbiAqIGNhbmNlbGxhdGlvbiBzb3VyY2UgdGVhciBkb3duIGJvdGggdGhlIHJlcXVlc3QgYW5kIHRoZSBsb29wLlxuICpcbiAqIGBhdHRyaWJ1dGVzYCBpcyBhIG11dGFibGUgc2NyYXRjaHBhZCBzaGFyZWQgYWNyb3NzIGV2ZXJ5XG4gKiBpdGVyYXRpb24gb2YgYSBzaW5nbGUgYHBvbGxgIHJ1bi4gVGhlIHNhbWUgb2JqZWN0IHJlZmVyZW5jZSBpc1xuICogcGFzc2VkIGVhY2ggY2FsbCBzbyB3cml0ZXMgZnJvbSBvbmUgaXRlcmF0aW9uIGFyZSB2aXNpYmxlIHRvIHRoZVxuICogbmV4dCAtIHVzZWZ1bCBmb3Igc3Rhc2hpbmcgcGVyLWxvb3Agc3RhdGUgKHJldHJ5IGNvdW50ZXJzLCBzdGFydFxuICogdGltZXN0YW1wcywgYW55dGhpbmcgeW91J2Qgb3RoZXJ3aXNlIGNsb3NlIG92ZXIgdmlhIGEgbGV0KS5cbiAqIEdlbmVyaWMgYEFgIGxldHMgY2FsbGVycyB0eXBlIHRoZSBiYWc7IGRlZmF1bHRzIHRvXG4gKiBgUmVjb3JkPHN0cmluZywgdW5rbm93bj5gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBvbGxDb250ZXh0PFQsIEEgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAvKiogWmVyby1iYXNlZCBpdGVyYXRpb24gaW5kZXggKGAwYCBvbiB0aGUgZmlyc3QgY2FsbCkuICovXG4gIGF0dGVtcHQ6IG51bWJlcjtcbiAgLyoqIFZhbHVlIHlpZWxkZWQgb24gdGhlIHByaW9yIGl0ZXJhdGlvbjsgYHVuZGVmaW5lZGAgb24gdGhlIGZpcnN0LiAqL1xuICBwcmV2aW91czogVCB8IHVuZGVmaW5lZDtcbiAgLyoqIENhbmNlbGxhdGlvbiBoYW5kbGUuIEFsd2F5cyBkZWZpbmVkOyBmb3J3YXJkIHRvIGluLWZsaWdodCB3b3JrLiAqL1xuICBzaWduYWw6IEFib3J0U2lnbmFsO1xuICAvKiogUGVyLXJ1biBtdXRhYmxlIHNjcmF0Y2hwYWQgc2hhcmVkIGFjcm9zcyBpdGVyYXRpb25zLiAqL1xuICBhdHRyaWJ1dGVzOiBBO1xufVxuXG4vKiogT25lIHN0ZXAgb2YgYSB7QGxpbmsgcG9sbH0gbG9vcC4gU2VlIHtAbGluayBQb2xsQ29udGV4dH0uICovXG5leHBvcnQgdHlwZSBQb2xsUHJvZHVjZXI8VCwgQSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IChcbiAgY3R4OiBQb2xsQ29udGV4dDxULCBBPixcbikgPT4gVCB8IFByb21pc2VMaWtlPFQ+O1xuXG4vKipcbiAqIENvbnRyb2xzIHBvbGwgY2FkZW5jZSwgZmlsdGVyaW5nLCB0ZXJtaW5hdGlvbiwgY2FuY2VsbGF0aW9uLCB0aW1lb3V0LCBhbmRcbiAqIHRoZSBtdXRhYmxlIHBlci1ydW4gYXR0cmlidXRlcyBleHBvc2VkIHRocm91Z2gge0BsaW5rIFBvbGxDb250ZXh0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb2xsT3B0aW9uczxULCBBID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgLyoqIE1pbGxpc2Vjb25kcyB0byB3YWl0IGJldHdlZW4gcG9sbHMuICovXG4gIGludGVydmFsTXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFByZWRpY2F0ZSBldmFsdWF0ZWQgYWdhaW5zdCBlYWNoIHlpZWxkZWQgdmFsdWU6IHJldHVybiBgdHJ1ZWAgdG9cbiAgICoga2VlcCBpdCwgYGZhbHNlYCB0byBza2lwIGl0ICh3aXRob3V0IHN0b3BwaW5nIHRoZSBsb29wKS4gTWF5IGJlXG4gICAqIHN5bmMgb3IgYXN5bmMgLSBhIGBQcm9taXNlTGlrZTxib29sZWFuPmAgaXMgYXdhaXRlZCBiZWZvcmUgdGhlXG4gICAqIGRlY2lzaW9uIGlzIG1hZGUuIFJlY2VpdmVzIHRoZSBzYW1lIHtAbGluayBQb2xsQ29udGV4dH0gYXMgdGhlXG4gICAqIHByb2R1Y2VyIChzYW1lIGBzaWduYWxgLCBzYW1lIGBhdHRyaWJ1dGVzYCBiYWcpLiBUaGUgc3BlY2lhbFxuICAgKiB2YWx1ZSBgXCJkaXN0aW5jdFwiYCBza2lwcyBhIHZhbHVlIHRoYXQgZGVlcC1lcXVhbHMgdGhlIHByZXZpb3VzXG4gICAqIG9uZS5cbiAgICovXG4gIGZpbHRlcj86ICgodmFsdWU6IFQsIGN0eDogUG9sbENvbnRleHQ8VCwgQT4pID0+IGJvb2xlYW4gfCBQcm9taXNlTGlrZTxib29sZWFuPikgfCBcImRpc3RpbmN0XCI7XG4gIC8qKlxuICAgKiBQcmVkaWNhdGUgZXZhbHVhdGVkIGFnYWluc3QgZWFjaCB5aWVsZGVkIHZhbHVlOiByZXR1cm4gYHRydWVgIHRvXG4gICAqIGtlZXAgcG9sbGluZywgYGZhbHNlYCB0byBzdG9wLiBNYXkgYmUgc3luYyBvciBhc3luYy4gT21pdCB0byBwb2xsXG4gICAqIGZvcmV2ZXIgKHRoZSBjb25zdW1lciBzdG9wcyBieSBicmVha2luZyBvdXQgb2YgdGhlIGxvb3Agb3IgYnlcbiAgICogYWJvcnRpbmcgYHNpZ25hbGApLlxuICAgKi9cbiAgcHJlZGljYXRlPzogKHZhbHVlOiBULCBjdHg6IFBvbGxDb250ZXh0PFQsIEE+KSA9PiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj47XG4gIC8qKlxuICAgKiBFeHRlcm5hbCBjYW5jZWxsYXRpb24gaGFuZGxlLiBUaWVkIGludG8gdGhlIGludGVybmFsIHNpZ25hbCB0aGF0XG4gICAqIGBwb2xsYCBoYW5kcyB0byBgcHJvZHVjZXJgLCBzbyBhYm9ydGluZyBpdCB0ZWFycyBkb3duIGJvdGggdGhlXG4gICAqIGluLWZsaWdodCByZXF1ZXN0IGFuZCB0aGUgaW50ZXItcG9sbCBzbGVlcC5cbiAgICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAvKipcbiAgICogSGFyZCB1cHBlciBib3VuZCBvbiB0aGUgdG90YWwgbGlmZXRpbWUgb2YgdGhlIHBvbGwgbG9vcCwgaW5cbiAgICogbWlsbGlzZWNvbmRzLiBXaGVuIHRoZSBidWRnZXQgZWxhcHNlcywgYHBvbGxgIGFib3J0cyBpdHMgaW50ZXJuYWxcbiAgICogc2lnbmFsIHNvIHRoZSBpbi1mbGlnaHQgcHJvZHVjZXIgYW5kIGludGVyLXBvbGwgc2xlZXAgYm90aCB0ZWFyXG4gICAqIGRvd24gcHJvbXB0bHksIGFuZCB0aGUgbG9vcCB0aHJvd3MgdGhlIGBUaW1lb3V0RXJyb3JgXG4gICAqIGBET01FeGNlcHRpb25gIHByb2R1Y2VkIGJ5IGBBYm9ydFNpZ25hbC50aW1lb3V0KHRpbWVvdXRNcylgLiBUaGVcbiAgICogYnVkZ2V0IHN0YXJ0cyB0aWNraW5nIHRoZSBtb21lbnQgdGhlIGdlbmVyYXRvciBpcyBjcmVhdGVkLlxuICAgKi9cbiAgdGltZW91dE1zPzogbnVtYmVyO1xuICAvKipcbiAgICogSW5pdGlhbCB2YWx1ZSBmb3IgYGN0eC5hdHRyaWJ1dGVzYC4gRGVmYXVsdHMgdG8gYHt9YC4gVGhlIHNhbWVcbiAgICogb2JqZWN0IGlzIHJldXNlZCBhY3Jvc3MgaXRlcmF0aW9ucywgc28gY2FsbGVycyBjYW4gcHJlLXBvcHVsYXRlXG4gICAqIGZpZWxkcyAodGltZXJzLCByZXRyeSBjb3VudGVycywgZXRjLikgYW5kIHRoZSBwcm9kdWNlciAvXG4gICAqIHByZWRpY2F0ZSBjYW4gbXV0YXRlIHRoZW0gaW4gcGxhY2UuXG4gICAqL1xuICBhdHRyaWJ1dGVzPzogQTtcbn1cblxuLyoqXG4gKiBBc3luYyBpdGVyYWJsZSB0aGF0IGRyaXZlcyBhIHBlcmlvZGljIHBvbGwuIEVhY2ggaXRlcmF0aW9uOlxuICpcbiAqICAgMS4gQnVpbGRzIGEge0BsaW5rIFBvbGxDb250ZXh0fSAoYGF0dGVtcHRgLCBgcHJldmlvdXNgLCBgc2lnbmFsYCxcbiAqICAgICAgc2hhcmVkIGBhdHRyaWJ1dGVzYCkgYW5kIGNhbGxzIGBwcm9kdWNlcihjdHgpYDsgeWllbGRzIHRoZVxuICogICAgICByZXNvbHZlZCB2YWx1ZSAoc3ViamVjdCB0byBgZmlsdGVyYCkuXG4gKiAgIDIuIEV2YWx1YXRlcyBgb3B0aW9ucy5wcmVkaWNhdGUodmFsdWUsIGN0eClgOyBzdG9wcyB3aGVuIGl0XG4gKiAgICAgIHJldHVybnMgKG9yIHJlc29sdmVzIHRvKSBgZmFsc2VgLlxuICogICAzLiBTbGVlcHMgYG9wdGlvbnMuaW50ZXJ2YWxNc2AgYmVmb3JlIHRoZSBuZXh0IGF0dGVtcHQuXG4gKlxuICogVGhlIGZpcnN0IGNhbGwgcnVucyBpbW1lZGlhdGVseSAobm8gbGVhZGluZyBzbGVlcCkgc28gdGhlIGNvbnN1bWVyXG4gKiBzZWVzIGEgdmFsdWUgd2l0aG91dCB3YWl0aW5nIGFuIGludGVydmFsLiBFcnJvcnMgdGhyb3duIGJ5XG4gKiBgcHJvZHVjZXJgIHByb3BhZ2F0ZSB0aHJvdWdoIHRoZSBnZW5lcmF0b3IuXG4gKlxuICogYHBvbGxgIGFsd2F5cyBjcmVhdGVzIGFuIGludGVybmFsIGBBYm9ydENvbnRyb2xsZXJgIGFuZCBleHBvc2VzXG4gKiBgaW50ZXJuYWwuc2lnbmFsYCBhcyBgY3R4LnNpZ25hbGAsIHNvIHByb2R1Y2VycyBjYW4gcmVseSBvbiBhXG4gKiBkZWZpbmVkIHNpZ25hbCB3aXRob3V0IGEgbnVsbGlzaCBjaGVjay4gVGhlIGV4dGVybmFsXG4gKiBgb3B0aW9ucy5zaWduYWxgIGlzIHRpZWQgaW4sIGFuZCBhIGB0cnkvZmluYWxseWAgYWJvcnRzIHRoZVxuICogaW50ZXJuYWwgc2lnbmFsIHdoZW4gdGhlIGNvbnN1bWVyIGJyZWFrcyBvdXQgb2YgdGhlIGBmb3IgYXdhaXRgXG4gKiAob3IgdGhlIGxvb3AgdGhyb3dzKSwgc28gYW55IHByb2R1Y2VyIHdvcmsgc3RpbGwgaG9sZGluZyB0aGVcbiAqIHNpZ25hbCBzZWVzIHRoZSBjYW5jZWxsYXRpb24gdG9vLlxuICpcbiAqIEBleGFtcGxlXG4gKiBmb3IgYXdhaXQgKGNvbnN0IG1zZyBvZiBwb2xsKFxuICogICBhc3luYyAoeyBzaWduYWwgfSkgPT5cbiAqICAgICBjbGllbnQuZ2VuaWUuZ2V0TWVzc2FnZSh7IC4uLiB9LCB7IGFib3J0U2lnbmFsOiBzaWduYWwgfSksXG4gKiAgIHtcbiAqICAgICBpbnRlcnZhbE1zOiAyNTAsXG4gKiAgICAgcHJlZGljYXRlOiAobSkgPT4gIVRFUk1JTkFMX1NUQVRVU0VTLmhhcyhtLnN0YXR1cyksXG4gKiAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAqICAgfSxcbiAqICkpIHtcbiAqICAgcmVuZGVyKG1zZyk7XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiogcG9sbDxULCBBID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KFxuICBwcm9kdWNlcjogUG9sbFByb2R1Y2VyPFQsIEE+LFxuICBvcHRpb25zOiBQb2xsT3B0aW9uczxULCBBPixcbik6IEFzeW5jR2VuZXJhdG9yPFQsIHZvaWQsIHZvaWQ+IHtcbiAgY29uc3QgeyBpbnRlcnZhbE1zLCBwcmVkaWNhdGUsIHNpZ25hbCwgYXR0cmlidXRlcywgdGltZW91dE1zIH0gPSBvcHRpb25zO1xuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBpZiAoc2lnbmFsKSB0aWVBYm9ydFNpZ25hbChjb250cm9sbGVyLCBzaWduYWwpO1xuICBpZiAodGltZW91dE1zICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aWVBYm9ydFNpZ25hbChjb250cm9sbGVyLCBBYm9ydFNpZ25hbC50aW1lb3V0KHRpbWVvdXRNcykpO1xuICB9XG4gIC8vIFNpbmdsZSBzaGFyZWQgYXR0cmlidXRlcyBvYmplY3Qgc28gd3JpdGVzIGZyb20gb25lIGl0ZXJhdGlvbiBhcmVcbiAgLy8gdmlzaWJsZSBvbiB0aGUgbmV4dC4gYHt9IGFzIEFgIGlzIHNhZmUgYmVjYXVzZSBlaXRoZXIgdGhlIGNhbGxlclxuICAvLyBzdXBwbGllZCBgYXR0cmlidXRlc2AgKHR5cGVkKSBvciBgQWAgZGVmYXVsdGVkIHRvIHRoZSB1bmtub3duXG4gIC8vIHJlY29yZCBzaGFwZSAoaW4gd2hpY2ggY2FzZSBge31gIHNhdGlzZmllcyBpdCkuXG4gIGNvbnN0IHNoYXJlZEF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzID8/ICh7fSBhcyBBKTtcbiAgdHJ5IHtcbiAgICBsZXQgcHJldmlvdXM6IFQgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChsZXQgYXR0ZW1wdCA9IDA7IDsgYXR0ZW1wdCsrKSB7XG4gICAgICBjb250cm9sbGVyLnNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICAgICAgY29uc3QgY3R4OiBQb2xsQ29udGV4dDxULCBBPiA9IHtcbiAgICAgICAgYXR0ZW1wdCxcbiAgICAgICAgcHJldmlvdXMsXG4gICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHNoYXJlZEF0dHJpYnV0ZXMsXG4gICAgICB9O1xuICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCBwcm9kdWNlcihjdHgpO1xuICAgICAgaWYgKG9wdGlvbnMuZmlsdGVyKSB7XG4gICAgICAgIGlmIChvcHRpb25zLmZpbHRlciA9PT0gXCJkaXN0aW5jdFwiKSB7XG4gICAgICAgICAgaWYgKGRlZXBFcXVhbChwcmV2aW91cywgdmFsdWUpKSB7XG4gICAgICAgICAgICBhd2FpdCBzbGVlcChpbnRlcnZhbE1zLCBjb250cm9sbGVyLnNpZ25hbCk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoIShhd2FpdCBvcHRpb25zLmZpbHRlcih2YWx1ZSwgY3R4KSkpIHtcbiAgICAgICAgICBhd2FpdCBzbGVlcChpbnRlcnZhbE1zLCBjb250cm9sbGVyLnNpZ25hbCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHlpZWxkIHZhbHVlO1xuICAgICAgaWYgKHByZWRpY2F0ZSAmJiAhKGF3YWl0IHByZWRpY2F0ZSh2YWx1ZSwgY3R4KSkpIHJldHVybjtcbiAgICAgIGF3YWl0IHNsZWVwKGludGVydmFsTXMsIGNvbnRyb2xsZXIuc2lnbmFsKTtcbiAgICAgIHByZXZpb3VzID0gdmFsdWU7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGNvbnRyb2xsZXIuYWJvcnQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRpZSBhIGNoaWxkIGBBYm9ydENvbnRyb2xsZXJgIHRvIGEgcGFyZW50IHNpZ25hbC4gVGhlIGNoaWxkIGFib3J0c1xuICogd2hlbmV2ZXIgdGhlIHBhcmVudCBhYm9ydHM7IGFib3J0aW5nIHRoZSBjaGlsZCBkb2VzIG5vdCBhZmZlY3QgdGhlXG4gKiBwYXJlbnQgKHNvIGEgZmV0Y2gtbGV2ZWwgY2FuY2VsIGRvZXNuJ3QgdGVhciBkb3duIHRoZSBtYWluIHBvbGwgbG9vcCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aWVBYm9ydFNpZ25hbChjaGlsZDogQWJvcnRDb250cm9sbGVyLCBwYXJlbnQ/OiBBYm9ydFNpZ25hbCk6IHZvaWQge1xuICBpZiAoIXBhcmVudCkge1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmIChwYXJlbnQuYWJvcnRlZCkge1xuICAgIGNoaWxkLmFib3J0KHBhcmVudC5yZWFzb24pO1xuICAgIHJldHVybjtcbiAgfVxuICBwYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsICgpID0+IGNoaWxkLmFib3J0KHBhcmVudC5yZWFzb24pLCB7XG4gICAgb25jZTogdHJ1ZSxcbiAgfSk7XG59XG5cbi8qKlxuICogQ29tYmluZSBzZXZlcmFsIG9wdGlvbmFsIGNhbmNlbGxhdGlvbiBzb3VyY2VzIGludG8gb25lIHNpZ25hbCB0aGF0IGFib3J0c1xuICogYXMgc29vbiBhcyBhbnkgb2YgdGhlbSBkb2VzLlxuICpcbiAqIFRoZSB1c3VhbCBjYWxsZXIgaXMgYW4gb3BlcmF0aW9uIHRoYXQgaGFzIHRvIGhvbm9yIG1vcmUgdGhhbiBvbmUgc291cmNlIGF0XG4gKiBvbmNlIC0gYSBjYWxsZXIncyBvd24gc2lnbmFsIChhIGNsb3NlZCBjb25uZWN0aW9uLCBhbiBhZ2VudCBydW4gYmVpbmdcbiAqIGNhbmNlbGxlZCkgcGx1cyBvbmUgZGVyaXZlZCBmcm9tIGEgdGltZW91dCAtIHdoZXJlIHRoZSBhd2FpdGVkIEkvTyBhY2NlcHRzXG4gKiBvbmx5IGEgc2luZ2xlIHNpZ25hbC4gQWJzZW50IHNvdXJjZXMgYXJlIGlnbm9yZWQsIGFuZCBhIGxvbmUgc2lnbmFsIGlzXG4gKiByZXR1cm5lZCBhcy1pcyBzbyB0aGUgY29tbW9uIHBhdGggYWxsb2NhdGVzIG5vdGhpbmcuIFJldHVybnMgYHVuZGVmaW5lZGBcbiAqIG9ubHkgd2hlbiBldmVyeSBpbnB1dCBpcyBhYnNlbnQsIHdoaWNoIGNhbGxlcnMgY2FuIHBhc3Mgc3RyYWlnaHQgdGhyb3VnaFxuICogdG8gYW4gb3B0aW9uYWwgYHNpZ25hbGAgcGFyYW1ldGVyLlxuICpcbiAqIEFib3J0aW5nIGFuIGlucHV0IGFib3J0cyB0aGUgcmVzdWx0IChjYXJyeWluZyB0aGF0IGlucHV0J3MgYHJlYXNvbmApO1xuICogbm90aGluZyBwcm9wYWdhdGVzIGJhY2sgdGhlIG90aGVyIHdheS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYXdhaXQgZmV0Y2godXJsLCB7IHNpZ25hbDogY29tYmluZUFib3J0U2lnbmFscyhyZXEuc2lnbmFsLCB0aW1lb3V0LnNpZ25hbCkgfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5lQWJvcnRTaWduYWxzKFxuICAuLi5zaWduYWxzOiAoQWJvcnRTaWduYWwgfCB1bmRlZmluZWQpW11cbik6IEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcHJlc2VudCA9IHNpZ25hbHMuZmlsdGVyKChzaWduYWwpOiBzaWduYWwgaXMgQWJvcnRTaWduYWwgPT4gc2lnbmFsICE9PSB1bmRlZmluZWQpO1xuICBpZiAocHJlc2VudC5sZW5ndGggPD0gMSkgcmV0dXJuIHByZXNlbnRbMF07XG4gIHJldHVybiBBYm9ydFNpZ25hbC5hbnkocHJlc2VudCk7XG59XG5cbi8qKlxuICogUHJvbWlzaWZpZWQgYHNldFRpbWVvdXRgIHRoYXQgd2FrZXMgdXAgZWFybHkgKGFuZCByZWplY3RzIHdpdGhcbiAqIGBzaWduYWwucmVhc29uYCkgd2hlbiBgc2lnbmFsYCBhYm9ydHMgbWlkLXdhaXQuIFNob3J0LWNpcmN1aXRzIHRvIGFcbiAqIHJlamVjdGVkIHByb21pc2Ugd2hlbiB0aGUgc2lnbmFsIGlzIGFscmVhZHkgYWJvcnRlZCBvbiBlbnRyeSwgc28gdGhlXG4gKiBhYm9ydCBwYXRoIGlzIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSB3YWl0IGFjdHVhbGx5XG4gKiBzdGFydGVkLlxuICpcbiAqIFVzZSBhcyB0aGUgYnVpbGRpbmcgYmxvY2sgZm9yIGFueSBcIndhaXQsIGJ1dCBjYW5jZWwgY2xlYW5seVwiIHBhdHRlcm4gLVxuICogaW50ZXItcG9sbCBiYWNrb2ZmLCBwYWNpbmcgbG9vcHMsIHJldHJ5IHRpbWVycywgbG9uZy1wb2xsIGJ1ZGdldHMgLSBzb1xuICogY2FuY2VsbGF0aW9uIGFsd2F5cyByZWplY3RzIHdpdGggdGhlIGNhbGxlcidzIGBzaWduYWwucmVhc29uYCByYXRoZXJcbiAqIHRoYW4gc2lsZW50bHkgcmVzb2x2aW5nIGFmdGVyIHRoZSB0aW1lciBleHBpcmVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBhd2FpdCBzbGVlcCgyNTAsIHJlcS5zaWduYWwpO1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2xlZXAobXM6IG51bWJlciwgc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKHNpZ25hbD8uYWJvcnRlZCkgcmV0dXJuIFByb21pc2UucmVqZWN0KHNpZ25hbC5yZWFzb24pO1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IG9uQWJvcnQgPSAoKTogdm9pZCA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgcmVqZWN0KHNpZ25hbCEucmVhc29uKTtcbiAgICB9O1xuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzaWduYWw/LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCBvbkFib3J0KTtcbiAgICAgIHJlc29sdmUoKTtcbiAgICB9LCBtcyk7XG4gICAgc2lnbmFsPy5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCwgeyBvbmNlOiB0cnVlIH0pO1xuICB9KTtcbn1cbiJdfQ==
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXN5bmMtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQVUsQ0FBQztBQWdCL0U7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLE1BQW9CLEVBQ3BCLFFBQXlELEVBQ3pELE9BQTZCO0lBRTdCLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxHQUFHLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDMUQsTUFBTSxJQUFJLFVBQVUsQ0FBQywrQ0FBK0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUVuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsTUFBTSxRQUFRLEdBQThDLEVBQUUsQ0FBQztJQUMvRCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFDYixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFFbkIsTUFBTSxNQUFNLEdBQUcsS0FBSyxJQUFtQixFQUFFO1FBQ3ZDLE9BQU8sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLEtBQUssV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN0RSxNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBQUMsT0FBTyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUM7SUFFMUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELElBQUksU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sSUFBSSxjQUFjLENBQ3RCLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFDcEMsR0FBRyxRQUFRLENBQUMsTUFBTSx3QkFBd0IsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQ3BGLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxRQUFRLENBQUMsQ0FBQyxDQUFFLENBQUMsTUFBTSxDQUFDO0FBQzVCLENBQUM7QUFFRCxrRkFBa0Y7QUFDbEYsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixPQUFlLEVBQ2YsV0FBOEIsdUJBQXVCO0lBRXJELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDO0FBQ3hFLENBQUM7QUFzRkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFDSCxNQUFNLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQ3pCLFFBQTRCLEVBQzVCLE9BQTBCO0lBRTFCLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ3pFLE1BQU0sVUFBVSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7SUFDekMsSUFBSSxNQUFNO1FBQUUsY0FBYyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM1QixjQUFjLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsbUVBQW1FO0lBQ25FLG1FQUFtRTtJQUNuRSxnRUFBZ0U7SUFDaEUsa0RBQWtEO0lBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsVUFBVSxJQUFLLEVBQVEsQ0FBQztJQUNqRCxJQUFJLENBQUM7UUFDSCxJQUFJLFFBQXVCLENBQUM7UUFDNUIsS0FBSyxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUksT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxVQUFVLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ25DLE1BQU0sR0FBRyxHQUFzQjtnQkFDN0IsT0FBTztnQkFDUCxRQUFRO2dCQUNSLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTTtnQkFDekIsVUFBVSxFQUFFLGdCQUFnQjthQUM3QixDQUFDO1lBQ0YsTUFBTSxLQUFLLEdBQUcsTUFBTSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25CLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDbEMsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7d0JBQy9CLE1BQU0sS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7d0JBQzNDLFNBQVM7b0JBQ1gsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMvQyxNQUFNLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUMzQyxTQUFTO2dCQUNYLENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxLQUFLLENBQUM7WUFDWixJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUFFLE9BQU87WUFDeEQsTUFBTSxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO1lBQVMsQ0FBQztRQUNULFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQXNCLEVBQUUsTUFBb0I7SUFDekUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osT0FBTztJQUNULENBQUM7U0FBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQixLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakUsSUFBSSxFQUFFLElBQUk7S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxHQUFHLE9BQW9DO0lBRXZDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQXlCLEVBQUUsQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDeEYsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUM7UUFBRSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBQyxFQUFVLEVBQUUsTUFBb0I7SUFDcEQsSUFBSSxNQUFNLEVBQUUsT0FBTztRQUFFLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLE9BQU8sR0FBRyxHQUFTLEVBQUU7WUFDekIsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxNQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUM1QixNQUFNLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENhbmNlbGxhdGlvbi1hd2FyZSBhc3luYyBwcmltaXRpdmVzOiBhbiBhYm9ydGFibGUge0BsaW5rIHNsZWVwfSwgYW5cbiAqIHtAbGluayBBYm9ydENvbnRyb2xsZXJ9IGxpbmtlciAoe0BsaW5rIHRpZUFib3J0U2lnbmFsfSksIGFuZCBhIHBlcmlvZGljXG4gKiB7QGxpbmsgcG9sbH0gZ2VuZXJhdG9yLiBEZXBlbmRlbmN5LWZyZWU7IGBwb2xsYCdzIGBcImRpc3RpbmN0XCJgIGZpbHRlclxuICogdXNlcyB0aGUgbG9jYWwge0BsaW5rIGRlZXBFcXVhbH0uXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tIFwiLi9vYmplY3QudHNcIjtcblxuY29uc3QgREVGQVVMVF9SRVRSWV9ERUxBWVNfTVMgPSBbMV8wMDAsIDJfMDAwLCA1XzAwMCwgMTBfMDAwLCAzMF8wMDBdIGFzIGNvbnN0O1xuXG4vKiogQ29udHJvbHMgaG93IHtAbGluayBtYXBDb25jdXJyZW50fSByZWFjdHMgd2hlbiBhIHdvcmtlciByZWplY3RzLiAqL1xuZXhwb3J0IHR5cGUgQ29uY3VycmVudEVycm9yTW9kZSA9IFwiZmFpbC1mYXN0XCIgfCBcInNldHRsZVwiO1xuXG4vKiogQm91bmRlZC13b3JrZXIgc2V0dGluZ3MgZm9yIHtAbGluayBtYXBDb25jdXJyZW50fS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFwQ29uY3VycmVudE9wdGlvbnMge1xuICAvKiogTWF4aW11bSBudW1iZXIgb2YgY2FsbGJhY2tzIHJ1bm5pbmcgYXQgb25jZS4gKi9cbiAgY29uY3VycmVuY3k6IG51bWJlcjtcbiAgLyoqXG4gICAqIGBcImZhaWwtZmFzdFwiYCBzdG9wcyBjbGFpbWluZyBuZXcgd29yayBhZnRlciB0aGUgZmlyc3QgcmVqZWN0aW9uLlxuICAgKiBgXCJzZXR0bGVcImAgYXR0ZW1wdHMgZXZlcnkgdmFsdWUgYW5kIHRocm93cyBhbiBgQWdncmVnYXRlRXJyb3JgIGFmdGVyd2FyZC5cbiAgICovXG4gIGVycm9yTW9kZT86IENvbmN1cnJlbnRFcnJvck1vZGU7XG59XG5cbi8qKlxuICogTWFwIHZhbHVlcyB0aHJvdWdoIGEgYm91bmRlZCB3b3JrZXIgcG9vbCB3aGlsZSBwcmVzZXJ2aW5nIGlucHV0IG9yZGVyLlxuICpcbiAqIEFjdGl2ZSBjYWxsYmFja3MgYXJlIGFsd2F5cyBhbGxvd2VkIHRvIHNldHRsZS4gSW4gZmFpbC1mYXN0IG1vZGUgbm8gbmV3XG4gKiBjYWxsYmFjayBzdGFydHMgYWZ0ZXIgdGhlIGZpcnN0IG9ic2VydmVkIHJlamVjdGlvbi4gU2V0dGxlIG1vZGUgYXR0ZW1wdHNcbiAqIGV2ZXJ5IHZhbHVlIGFuZCByZXBvcnRzIGFsbCBmYWlsdXJlcyBpbiBpbnB1dCBvcmRlciB0aHJvdWdoIGBBZ2dyZWdhdGVFcnJvcmAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBtYXBDb25jdXJyZW50PFQsIFI+KFxuICB2YWx1ZXM6IHJlYWRvbmx5IFRbXSxcbiAgY2FsbGJhY2s6ICh2YWx1ZTogVCwgaW5kZXg6IG51bWJlcikgPT4gUiB8IFByb21pc2VMaWtlPFI+LFxuICBvcHRpb25zOiBNYXBDb25jdXJyZW50T3B0aW9ucyxcbik6IFByb21pc2U8UltdPiB7XG4gIGNvbnN0IHsgY29uY3VycmVuY3ksIGVycm9yTW9kZSA9IFwiZmFpbC1mYXN0XCIgfSA9IG9wdGlvbnM7XG4gIGlmICghTnVtYmVyLmlzU2FmZUludGVnZXIoY29uY3VycmVuY3kpIHx8IGNvbmN1cnJlbmN5IDwgMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBjb25jdXJyZW5jeSBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgZ290ICR7U3RyaW5nKGNvbmN1cnJlbmN5KX1gKTtcbiAgfVxuICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IHJlc3VsdHMgPSBuZXcgQXJyYXk8Uj4odmFsdWVzLmxlbmd0aCk7XG4gIGNvbnN0IGZhaWx1cmVzOiBBcnJheTx7IGluZGV4OiBudW1iZXI7IHJlYXNvbjogdW5rbm93biB9PiA9IFtdO1xuICBsZXQgbmV4dCA9IDA7XG4gIGxldCBmYWlsZWQgPSBmYWxzZTtcblxuICBjb25zdCB3b3JrZXIgPSBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgd2hpbGUgKG5leHQgPCB2YWx1ZXMubGVuZ3RoICYmICEoZmFpbGVkICYmIGVycm9yTW9kZSA9PT0gXCJmYWlsLWZhc3RcIikpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbmV4dCsrO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0c1tpbmRleF0gPSBhd2FpdCBjYWxsYmFjayh2YWx1ZXNbaW5kZXhdISwgaW5kZXgpO1xuICAgICAgfSBjYXRjaCAocmVhc29uKSB7XG4gICAgICAgIGZhaWx1cmVzLnB1c2goeyBpbmRleCwgcmVhc29uIH0pO1xuICAgICAgICBmYWlsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChBcnJheS5mcm9tKHsgbGVuZ3RoOiBNYXRoLm1pbihjb25jdXJyZW5jeSwgdmFsdWVzLmxlbmd0aCkgfSwgKCkgPT4gd29ya2VyKCkpKTtcbiAgaWYgKGZhaWx1cmVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJlc3VsdHM7XG5cbiAgZmFpbHVyZXMuc29ydCgobGVmdCwgcmlnaHQpID0+IGxlZnQuaW5kZXggLSByaWdodC5pbmRleCk7XG4gIGlmIChlcnJvck1vZGUgPT09IFwic2V0dGxlXCIpIHtcbiAgICB0aHJvdyBuZXcgQWdncmVnYXRlRXJyb3IoXG4gICAgICBmYWlsdXJlcy5tYXAoKHsgcmVhc29uIH0pID0+IHJlYXNvbiksXG4gICAgICBgJHtmYWlsdXJlcy5sZW5ndGh9IGNvbmN1cnJlbnQgb3BlcmF0aW9uJHtmYWlsdXJlcy5sZW5ndGggPT09IDEgPyBcIlwiIDogXCJzXCJ9IGZhaWxlZGAsXG4gICAgKTtcbiAgfVxuICB0aHJvdyBmYWlsdXJlc1swXSEucmVhc29uO1xufVxuXG4vKiogU2VsZWN0IGEgYm91bmRlZCByZXRyeSBkZWxheSwgY2xhbXBpbmcgYXR0ZW1wdHMgdG8gdGhlIGNvbmZpZ3VyZWQgc2NoZWR1bGUuICovXG5leHBvcnQgZnVuY3Rpb24gYm91bmRlZFJldHJ5RGVsYXkoXG4gIGF0dGVtcHQ6IG51bWJlcixcbiAgZGVsYXlzTXM6IHJlYWRvbmx5IG51bWJlcltdID0gREVGQVVMVF9SRVRSWV9ERUxBWVNfTVMsXG4pOiBudW1iZXIge1xuICBpZiAoIWRlbGF5c01zLmxlbmd0aCkgcmV0dXJuIDA7XG4gIHJldHVybiBkZWxheXNNc1tNYXRoLm1pbihNYXRoLm1heCgwLCBhdHRlbXB0KSwgZGVsYXlzTXMubGVuZ3RoIC0gMSldITtcbn1cblxuLyoqXG4gKiBQZXItaXRlcmF0aW9uIGNvbnRleHQgaGFuZGVkIHRvIHtAbGluayBQb2xsUHJvZHVjZXJ9IGFuZCB0aGVcbiAqIHByZWRpY2F0ZSBvbiBlYWNoIHN0ZXAgb2YgYSB7QGxpbmsgcG9sbH0gbG9vcC4gQnVuZGxlcyB0aGVcbiAqIGl0ZXJhdGlvbiBtZXRhZGF0YSBzbyB0aGUgY2FsbCBzaWduYXR1cmVzIHN0YXkgc3RhYmxlIGFzIGBwb2xsYFxuICogZ3Jvd3MgYWRkaXRpb25hbCBmaWVsZHMuXG4gKlxuICogYHNpZ25hbGAgaXMgb3duZWQgYnkgYHBvbGxgOiBpdCB0cmFja3MgdGhlIGV4dGVybmFsXG4gKiBgUG9sbE9wdGlvbnMuc2lnbmFsYCAod2hlbiBzdXBwbGllZCkgYW5kIGFsc28gZmlyZXMgd2hlbiB0aGVcbiAqIGNvbnN1bWVyIGJyZWFrcyBvdXQgb2YgdGhlIGxvb3AsIHNvIHByb2R1Y2VycyBjYW4gZm9yd2FyZCBpdCB0b1xuICogYW55IGluLWZsaWdodCB3b3JrIChgZmV0Y2hgLCBTREsgY2FsbHMsIGV0Yy4pIGFuZCBoYXZlIGEgc2luZ2xlXG4gKiBjYW5jZWxsYXRpb24gc291cmNlIHRlYXIgZG93biBib3RoIHRoZSByZXF1ZXN0IGFuZCB0aGUgbG9vcC5cbiAqXG4gKiBgYXR0cmlidXRlc2AgaXMgYSBtdXRhYmxlIHNjcmF0Y2hwYWQgc2hhcmVkIGFjcm9zcyBldmVyeVxuICogaXRlcmF0aW9uIG9mIGEgc2luZ2xlIGBwb2xsYCBydW4uIFRoZSBzYW1lIG9iamVjdCByZWZlcmVuY2UgaXNcbiAqIHBhc3NlZCBlYWNoIGNhbGwgc28gd3JpdGVzIGZyb20gb25lIGl0ZXJhdGlvbiBhcmUgdmlzaWJsZSB0byB0aGVcbiAqIG5leHQgLSB1c2VmdWwgZm9yIHN0YXNoaW5nIHBlci1sb29wIHN0YXRlIChyZXRyeSBjb3VudGVycywgc3RhcnRcbiAqIHRpbWVzdGFtcHMsIGFueXRoaW5nIHlvdSdkIG90aGVyd2lzZSBjbG9zZSBvdmVyIHZpYSBhIGxldCkuXG4gKiBHZW5lcmljIGBBYCBsZXRzIGNhbGxlcnMgdHlwZSB0aGUgYmFnOyBkZWZhdWx0cyB0b1xuICogYFJlY29yZDxzdHJpbmcsIHVua25vd24+YC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQb2xsQ29udGV4dDxULCBBID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgLyoqIFplcm8tYmFzZWQgaXRlcmF0aW9uIGluZGV4IChgMGAgb24gdGhlIGZpcnN0IGNhbGwpLiAqL1xuICBhdHRlbXB0OiBudW1iZXI7XG4gIC8qKiBWYWx1ZSB5aWVsZGVkIG9uIHRoZSBwcmlvciBpdGVyYXRpb247IGB1bmRlZmluZWRgIG9uIHRoZSBmaXJzdC4gKi9cbiAgcHJldmlvdXM6IFQgfCB1bmRlZmluZWQ7XG4gIC8qKiBDYW5jZWxsYXRpb24gaGFuZGxlLiBBbHdheXMgZGVmaW5lZDsgZm9yd2FyZCB0byBpbi1mbGlnaHQgd29yay4gKi9cbiAgc2lnbmFsOiBBYm9ydFNpZ25hbDtcbiAgLyoqIFBlci1ydW4gbXV0YWJsZSBzY3JhdGNocGFkIHNoYXJlZCBhY3Jvc3MgaXRlcmF0aW9ucy4gKi9cbiAgYXR0cmlidXRlczogQTtcbn1cblxuLyoqIE9uZSBzdGVwIG9mIGEge0BsaW5rIHBvbGx9IGxvb3AuIFNlZSB7QGxpbmsgUG9sbENvbnRleHR9LiAqL1xuZXhwb3J0IHR5cGUgUG9sbFByb2R1Y2VyPFQsIEEgPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSAoXG4gIGN0eDogUG9sbENvbnRleHQ8VCwgQT4sXG4pID0+IFQgfCBQcm9taXNlTGlrZTxUPjtcblxuLyoqXG4gKiBDb250cm9scyBwb2xsIGNhZGVuY2UsIGZpbHRlcmluZywgdGVybWluYXRpb24sIGNhbmNlbGxhdGlvbiwgdGltZW91dCwgYW5kXG4gKiB0aGUgbXV0YWJsZSBwZXItcnVuIGF0dHJpYnV0ZXMgZXhwb3NlZCB0aHJvdWdoIHtAbGluayBQb2xsQ29udGV4dH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9sbE9wdGlvbnM8VCwgQSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gIC8qKiBNaWxsaXNlY29uZHMgdG8gd2FpdCBiZXR3ZWVuIHBvbGxzLiAqL1xuICBpbnRlcnZhbE1zOiBudW1iZXI7XG4gIC8qKlxuICAgKiBQcmVkaWNhdGUgZXZhbHVhdGVkIGFnYWluc3QgZWFjaCB5aWVsZGVkIHZhbHVlOiByZXR1cm4gYHRydWVgIHRvXG4gICAqIGtlZXAgaXQsIGBmYWxzZWAgdG8gc2tpcCBpdCAod2l0aG91dCBzdG9wcGluZyB0aGUgbG9vcCkuIE1heSBiZVxuICAgKiBzeW5jIG9yIGFzeW5jIC0gYSBgUHJvbWlzZUxpa2U8Ym9vbGVhbj5gIGlzIGF3YWl0ZWQgYmVmb3JlIHRoZVxuICAgKiBkZWNpc2lvbiBpcyBtYWRlLiBSZWNlaXZlcyB0aGUgc2FtZSB7QGxpbmsgUG9sbENvbnRleHR9IGFzIHRoZVxuICAgKiBwcm9kdWNlciAoc2FtZSBgc2lnbmFsYCwgc2FtZSBgYXR0cmlidXRlc2AgYmFnKS4gVGhlIHNwZWNpYWxcbiAgICogdmFsdWUgYFwiZGlzdGluY3RcImAgc2tpcHMgYSB2YWx1ZSB0aGF0IGRlZXAtZXF1YWxzIHRoZSBwcmV2aW91c1xuICAgKiBvbmUuXG4gICAqL1xuICBmaWx0ZXI/OiAoKHZhbHVlOiBULCBjdHg6IFBvbGxDb250ZXh0PFQsIEE+KSA9PiBib29sZWFuIHwgUHJvbWlzZUxpa2U8Ym9vbGVhbj4pIHwgXCJkaXN0aW5jdFwiO1xuICAvKipcbiAgICogUHJlZGljYXRlIGV2YWx1YXRlZCBhZ2FpbnN0IGVhY2ggeWllbGRlZCB2YWx1ZTogcmV0dXJuIGB0cnVlYCB0b1xuICAgKiBrZWVwIHBvbGxpbmcsIGBmYWxzZWAgdG8gc3RvcC4gTWF5IGJlIHN5bmMgb3IgYXN5bmMuIE9taXQgdG8gcG9sbFxuICAgKiBmb3JldmVyICh0aGUgY29uc3VtZXIgc3RvcHMgYnkgYnJlYWtpbmcgb3V0IG9mIHRoZSBsb29wIG9yIGJ5XG4gICAqIGFib3J0aW5nIGBzaWduYWxgKS5cbiAgICovXG4gIHByZWRpY2F0ZT86ICh2YWx1ZTogVCwgY3R4OiBQb2xsQ29udGV4dDxULCBBPikgPT4gYm9vbGVhbiB8IFByb21pc2VMaWtlPGJvb2xlYW4+O1xuICAvKipcbiAgICogRXh0ZXJuYWwgY2FuY2VsbGF0aW9uIGhhbmRsZS4gVGllZCBpbnRvIHRoZSBpbnRlcm5hbCBzaWduYWwgdGhhdFxuICAgKiBgcG9sbGAgaGFuZHMgdG8gYHByb2R1Y2VyYCwgc28gYWJvcnRpbmcgaXQgdGVhcnMgZG93biBib3RoIHRoZVxuICAgKiBpbi1mbGlnaHQgcmVxdWVzdCBhbmQgdGhlIGludGVyLXBvbGwgc2xlZXAuXG4gICAqL1xuICBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqXG4gICAqIEhhcmQgdXBwZXIgYm91bmQgb24gdGhlIHRvdGFsIGxpZmV0aW1lIG9mIHRoZSBwb2xsIGxvb3AsIGluXG4gICAqIG1pbGxpc2Vjb25kcy4gV2hlbiB0aGUgYnVkZ2V0IGVsYXBzZXMsIGBwb2xsYCBhYm9ydHMgaXRzIGludGVybmFsXG4gICAqIHNpZ25hbCBzbyB0aGUgaW4tZmxpZ2h0IHByb2R1Y2VyIGFuZCBpbnRlci1wb2xsIHNsZWVwIGJvdGggdGVhclxuICAgKiBkb3duIHByb21wdGx5LCBhbmQgdGhlIGxvb3AgdGhyb3dzIHRoZSBgVGltZW91dEVycm9yYFxuICAgKiBgRE9NRXhjZXB0aW9uYCBwcm9kdWNlZCBieSBgQWJvcnRTaWduYWwudGltZW91dCh0aW1lb3V0TXMpYC4gVGhlXG4gICAqIGJ1ZGdldCBzdGFydHMgdGlja2luZyB0aGUgbW9tZW50IHRoZSBnZW5lcmF0b3IgaXMgY3JlYXRlZC5cbiAgICovXG4gIHRpbWVvdXRNcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIEluaXRpYWwgdmFsdWUgZm9yIGBjdHguYXR0cmlidXRlc2AuIERlZmF1bHRzIHRvIGB7fWAuIFRoZSBzYW1lXG4gICAqIG9iamVjdCBpcyByZXVzZWQgYWNyb3NzIGl0ZXJhdGlvbnMsIHNvIGNhbGxlcnMgY2FuIHByZS1wb3B1bGF0ZVxuICAgKiBmaWVsZHMgKHRpbWVycywgcmV0cnkgY291bnRlcnMsIGV0Yy4pIGFuZCB0aGUgcHJvZHVjZXIgL1xuICAgKiBwcmVkaWNhdGUgY2FuIG11dGF0ZSB0aGVtIGluIHBsYWNlLlxuICAgKi9cbiAgYXR0cmlidXRlcz86IEE7XG59XG5cbi8qKlxuICogQXN5bmMgaXRlcmFibGUgdGhhdCBkcml2ZXMgYSBwZXJpb2RpYyBwb2xsLiBFYWNoIGl0ZXJhdGlvbjpcbiAqXG4gKiAgIDEuIEJ1aWxkcyBhIHtAbGluayBQb2xsQ29udGV4dH0gKGBhdHRlbXB0YCwgYHByZXZpb3VzYCwgYHNpZ25hbGAsXG4gKiAgICAgIHNoYXJlZCBgYXR0cmlidXRlc2ApIGFuZCBjYWxscyBgcHJvZHVjZXIoY3R4KWA7IHlpZWxkcyB0aGVcbiAqICAgICAgcmVzb2x2ZWQgdmFsdWUgKHN1YmplY3QgdG8gYGZpbHRlcmApLlxuICogICAyLiBFdmFsdWF0ZXMgYG9wdGlvbnMucHJlZGljYXRlKHZhbHVlLCBjdHgpYDsgc3RvcHMgd2hlbiBpdFxuICogICAgICByZXR1cm5zIChvciByZXNvbHZlcyB0bykgYGZhbHNlYC5cbiAqICAgMy4gU2xlZXBzIGBvcHRpb25zLmludGVydmFsTXNgIGJlZm9yZSB0aGUgbmV4dCBhdHRlbXB0LlxuICpcbiAqIFRoZSBmaXJzdCBjYWxsIHJ1bnMgaW1tZWRpYXRlbHkgKG5vIGxlYWRpbmcgc2xlZXApIHNvIHRoZSBjb25zdW1lclxuICogc2VlcyBhIHZhbHVlIHdpdGhvdXQgd2FpdGluZyBhbiBpbnRlcnZhbC4gRXJyb3JzIHRocm93biBieVxuICogYHByb2R1Y2VyYCBwcm9wYWdhdGUgdGhyb3VnaCB0aGUgZ2VuZXJhdG9yLlxuICpcbiAqIGBwb2xsYCBhbHdheXMgY3JlYXRlcyBhbiBpbnRlcm5hbCBgQWJvcnRDb250cm9sbGVyYCBhbmQgZXhwb3Nlc1xuICogYGludGVybmFsLnNpZ25hbGAgYXMgYGN0eC5zaWduYWxgLCBzbyBwcm9kdWNlcnMgY2FuIHJlbHkgb24gYVxuICogZGVmaW5lZCBzaWduYWwgd2l0aG91dCBhIG51bGxpc2ggY2hlY2suIFRoZSBleHRlcm5hbFxuICogYG9wdGlvbnMuc2lnbmFsYCBpcyB0aWVkIGluLCBhbmQgYSBgdHJ5L2ZpbmFsbHlgIGFib3J0cyB0aGVcbiAqIGludGVybmFsIHNpZ25hbCB3aGVuIHRoZSBjb25zdW1lciBicmVha3Mgb3V0IG9mIHRoZSBgZm9yIGF3YWl0YFxuICogKG9yIHRoZSBsb29wIHRocm93cyksIHNvIGFueSBwcm9kdWNlciB3b3JrIHN0aWxsIGhvbGRpbmcgdGhlXG4gKiBzaWduYWwgc2VlcyB0aGUgY2FuY2VsbGF0aW9uIHRvby5cbiAqXG4gKiBAZXhhbXBsZVxuICogZm9yIGF3YWl0IChjb25zdCBtc2cgb2YgcG9sbChcbiAqICAgYXN5bmMgKHsgc2lnbmFsIH0pID0+XG4gKiAgICAgY2xpZW50LmdlbmllLmdldE1lc3NhZ2UoeyAuLi4gfSwgeyBhYm9ydFNpZ25hbDogc2lnbmFsIH0pLFxuICogICB7XG4gKiAgICAgaW50ZXJ2YWxNczogMjUwLFxuICogICAgIHByZWRpY2F0ZTogKG0pID0+ICFURVJNSU5BTF9TVEFUVVNFUy5oYXMobS5zdGF0dXMpLFxuICogICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gKiAgIH0sXG4gKiApKSB7XG4gKiAgIHJlbmRlcihtc2cpO1xuICogfVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHBvbGw8VCwgQSA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+PihcbiAgcHJvZHVjZXI6IFBvbGxQcm9kdWNlcjxULCBBPixcbiAgb3B0aW9uczogUG9sbE9wdGlvbnM8VCwgQT4sXG4pOiBBc3luY0dlbmVyYXRvcjxULCB2b2lkLCB2b2lkPiB7XG4gIGNvbnN0IHsgaW50ZXJ2YWxNcywgcHJlZGljYXRlLCBzaWduYWwsIGF0dHJpYnV0ZXMsIHRpbWVvdXRNcyB9ID0gb3B0aW9ucztcbiAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgaWYgKHNpZ25hbCkgdGllQWJvcnRTaWduYWwoY29udHJvbGxlciwgc2lnbmFsKTtcbiAgaWYgKHRpbWVvdXRNcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGllQWJvcnRTaWduYWwoY29udHJvbGxlciwgQWJvcnRTaWduYWwudGltZW91dCh0aW1lb3V0TXMpKTtcbiAgfVxuICAvLyBTaW5nbGUgc2hhcmVkIGF0dHJpYnV0ZXMgb2JqZWN0IHNvIHdyaXRlcyBmcm9tIG9uZSBpdGVyYXRpb24gYXJlXG4gIC8vIHZpc2libGUgb24gdGhlIG5leHQuIGB7fSBhcyBBYCBpcyBzYWZlIGJlY2F1c2UgZWl0aGVyIHRoZSBjYWxsZXJcbiAgLy8gc3VwcGxpZWQgYGF0dHJpYnV0ZXNgICh0eXBlZCkgb3IgYEFgIGRlZmF1bHRlZCB0byB0aGUgdW5rbm93blxuICAvLyByZWNvcmQgc2hhcGUgKGluIHdoaWNoIGNhc2UgYHt9YCBzYXRpc2ZpZXMgaXQpLlxuICBjb25zdCBzaGFyZWRBdHRyaWJ1dGVzID0gYXR0cmlidXRlcyA/PyAoe30gYXMgQSk7XG4gIHRyeSB7XG4gICAgbGV0IHByZXZpb3VzOiBUIHwgdW5kZWZpbmVkO1xuICAgIGZvciAobGV0IGF0dGVtcHQgPSAwOyA7IGF0dGVtcHQrKykge1xuICAgICAgY29udHJvbGxlci5zaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICAgIGNvbnN0IGN0eDogUG9sbENvbnRleHQ8VCwgQT4gPSB7XG4gICAgICAgIGF0dGVtcHQsXG4gICAgICAgIHByZXZpb3VzLFxuICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgICAgICBhdHRyaWJ1dGVzOiBzaGFyZWRBdHRyaWJ1dGVzLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcHJvZHVjZXIoY3R4KTtcbiAgICAgIGlmIChvcHRpb25zLmZpbHRlcikge1xuICAgICAgICBpZiAob3B0aW9ucy5maWx0ZXIgPT09IFwiZGlzdGluY3RcIikge1xuICAgICAgICAgIGlmIChkZWVwRXF1YWwocHJldmlvdXMsIHZhbHVlKSkge1xuICAgICAgICAgICAgYXdhaXQgc2xlZXAoaW50ZXJ2YWxNcywgY29udHJvbGxlci5zaWduYWwpO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCEoYXdhaXQgb3B0aW9ucy5maWx0ZXIodmFsdWUsIGN0eCkpKSB7XG4gICAgICAgICAgYXdhaXQgc2xlZXAoaW50ZXJ2YWxNcywgY29udHJvbGxlci5zaWduYWwpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB5aWVsZCB2YWx1ZTtcbiAgICAgIGlmIChwcmVkaWNhdGUgJiYgIShhd2FpdCBwcmVkaWNhdGUodmFsdWUsIGN0eCkpKSByZXR1cm47XG4gICAgICBhd2FpdCBzbGVlcChpbnRlcnZhbE1zLCBjb250cm9sbGVyLnNpZ25hbCk7XG4gICAgICBwcmV2aW91cyA9IHZhbHVlO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBjb250cm9sbGVyLmFib3J0KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaWUgYSBjaGlsZCBgQWJvcnRDb250cm9sbGVyYCB0byBhIHBhcmVudCBzaWduYWwuIFRoZSBjaGlsZCBhYm9ydHNcbiAqIHdoZW5ldmVyIHRoZSBwYXJlbnQgYWJvcnRzOyBhYm9ydGluZyB0aGUgY2hpbGQgZG9lcyBub3QgYWZmZWN0IHRoZVxuICogcGFyZW50IChzbyBhIGZldGNoLWxldmVsIGNhbmNlbCBkb2Vzbid0IHRlYXIgZG93biB0aGUgbWFpbiBwb2xsIGxvb3ApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdGllQWJvcnRTaWduYWwoY2hpbGQ6IEFib3J0Q29udHJvbGxlciwgcGFyZW50PzogQWJvcnRTaWduYWwpOiB2b2lkIHtcbiAgaWYgKCFwYXJlbnQpIHtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAocGFyZW50LmFib3J0ZWQpIHtcbiAgICBjaGlsZC5hYm9ydChwYXJlbnQucmVhc29uKTtcbiAgICByZXR1cm47XG4gIH1cbiAgcGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJhYm9ydFwiLCAoKSA9PiBjaGlsZC5hYm9ydChwYXJlbnQucmVhc29uKSwge1xuICAgIG9uY2U6IHRydWUsXG4gIH0pO1xufVxuXG4vKipcbiAqIENvbWJpbmUgc2V2ZXJhbCBvcHRpb25hbCBjYW5jZWxsYXRpb24gc291cmNlcyBpbnRvIG9uZSBzaWduYWwgdGhhdCBhYm9ydHNcbiAqIGFzIHNvb24gYXMgYW55IG9mIHRoZW0gZG9lcy5cbiAqXG4gKiBUaGUgdXN1YWwgY2FsbGVyIGlzIGFuIG9wZXJhdGlvbiB0aGF0IGhhcyB0byBob25vciBtb3JlIHRoYW4gb25lIHNvdXJjZSBhdFxuICogb25jZSAtIGEgY2FsbGVyJ3Mgb3duIHNpZ25hbCAoYSBjbG9zZWQgY29ubmVjdGlvbiwgYW4gYWdlbnQgcnVuIGJlaW5nXG4gKiBjYW5jZWxsZWQpIHBsdXMgb25lIGRlcml2ZWQgZnJvbSBhIHRpbWVvdXQgLSB3aGVyZSB0aGUgYXdhaXRlZCBJL08gYWNjZXB0c1xuICogb25seSBhIHNpbmdsZSBzaWduYWwuIEFic2VudCBzb3VyY2VzIGFyZSBpZ25vcmVkLCBhbmQgYSBsb25lIHNpZ25hbCBpc1xuICogcmV0dXJuZWQgYXMtaXMgc28gdGhlIGNvbW1vbiBwYXRoIGFsbG9jYXRlcyBub3RoaW5nLiBSZXR1cm5zIGB1bmRlZmluZWRgXG4gKiBvbmx5IHdoZW4gZXZlcnkgaW5wdXQgaXMgYWJzZW50LCB3aGljaCBjYWxsZXJzIGNhbiBwYXNzIHN0cmFpZ2h0IHRocm91Z2hcbiAqIHRvIGFuIG9wdGlvbmFsIGBzaWduYWxgIHBhcmFtZXRlci5cbiAqXG4gKiBBYm9ydGluZyBhbiBpbnB1dCBhYm9ydHMgdGhlIHJlc3VsdCAoY2FycnlpbmcgdGhhdCBpbnB1dCdzIGByZWFzb25gKTtcbiAqIG5vdGhpbmcgcHJvcGFnYXRlcyBiYWNrIHRoZSBvdGhlciB3YXkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGF3YWl0IGZldGNoKHVybCwgeyBzaWduYWw6IGNvbWJpbmVBYm9ydFNpZ25hbHMocmVxLnNpZ25hbCwgdGltZW91dC5zaWduYWwpIH0pO1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZUFib3J0U2lnbmFscyhcbiAgLi4uc2lnbmFsczogKEFib3J0U2lnbmFsIHwgdW5kZWZpbmVkKVtdXG4pOiBBYm9ydFNpZ25hbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHByZXNlbnQgPSBzaWduYWxzLmZpbHRlcigoc2lnbmFsKTogc2lnbmFsIGlzIEFib3J0U2lnbmFsID0+IHNpZ25hbCAhPT0gdW5kZWZpbmVkKTtcbiAgaWYgKHByZXNlbnQubGVuZ3RoIDw9IDEpIHJldHVybiBwcmVzZW50WzBdO1xuICByZXR1cm4gQWJvcnRTaWduYWwuYW55KHByZXNlbnQpO1xufVxuXG4vKipcbiAqIFByb21pc2lmaWVkIGBzZXRUaW1lb3V0YCB0aGF0IHdha2VzIHVwIGVhcmx5IChhbmQgcmVqZWN0cyB3aXRoXG4gKiBgc2lnbmFsLnJlYXNvbmApIHdoZW4gYHNpZ25hbGAgYWJvcnRzIG1pZC13YWl0LiBTaG9ydC1jaXJjdWl0cyB0byBhXG4gKiByZWplY3RlZCBwcm9taXNlIHdoZW4gdGhlIHNpZ25hbCBpcyBhbHJlYWR5IGFib3J0ZWQgb24gZW50cnksIHNvIHRoZVxuICogYWJvcnQgcGF0aCBpcyBjb25zaXN0ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgd2FpdCBhY3R1YWxseVxuICogc3RhcnRlZC5cbiAqXG4gKiBVc2UgYXMgdGhlIGJ1aWxkaW5nIGJsb2NrIGZvciBhbnkgXCJ3YWl0LCBidXQgY2FuY2VsIGNsZWFubHlcIiBwYXR0ZXJuIC1cbiAqIGludGVyLXBvbGwgYmFja29mZiwgcGFjaW5nIGxvb3BzLCByZXRyeSB0aW1lcnMsIGxvbmctcG9sbCBidWRnZXRzIC0gc29cbiAqIGNhbmNlbGxhdGlvbiBhbHdheXMgcmVqZWN0cyB3aXRoIHRoZSBjYWxsZXIncyBgc2lnbmFsLnJlYXNvbmAgcmF0aGVyXG4gKiB0aGFuIHNpbGVudGx5IHJlc29sdmluZyBhZnRlciB0aGUgdGltZXIgZXhwaXJlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYXdhaXQgc2xlZXAoMjUwLCByZXEuc2lnbmFsKTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChzaWduYWw/LmFib3J0ZWQpIHJldHVybiBQcm9taXNlLnJlamVjdChzaWduYWwucmVhc29uKTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBvbkFib3J0ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKTtcbiAgICAgIHJlamVjdChzaWduYWwhLnJlYXNvbik7XG4gICAgfTtcbiAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2lnbmFsPy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwgb25BYm9ydCk7XG4gICAgICByZXNvbHZlKCk7XG4gICAgfSwgbXMpO1xuICAgIHNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcihcImFib3J0XCIsIG9uQWJvcnQsIHsgb25jZTogdHJ1ZSB9KTtcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ /** Detect a Databricks App runtime from its required name, host, and port. */
2
+ export declare function isDatabricksAppEnv(source?: Record<string, string | undefined>): boolean;
@@ -0,0 +1,27 @@
1
+ import { toBoolean } from "./object.js";
2
+ const MAX_TCP_PORT = 65_535;
3
+ function runtimeEnvironment() {
4
+ return globalThis.process?.env ?? {};
5
+ }
6
+ /** Detect a Databricks App runtime from its required name, host, and port. */
7
+ export function isDatabricksAppEnv(source = runtimeEnvironment()) {
8
+ const override = toBoolean(source.DBX_TOOLS_DATABRICKS_APP_ENV);
9
+ if (override !== undefined)
10
+ return override;
11
+ const name = source.DATABRICKS_APP_NAME?.trim();
12
+ const host = source.DATABRICKS_HOST?.trim();
13
+ const port = source.DATABRICKS_APP_PORT?.trim();
14
+ if (!name || /\$\{[^}]+\}/.test(name) || !host || !port || !/^\d+$/.test(port))
15
+ return false;
16
+ const parsedPort = Number(port);
17
+ if (!Number.isInteger(parsedPort) || parsedPort < 1 || parsedPort > MAX_TCP_PORT)
18
+ return false;
19
+ try {
20
+ const url = new URL(host);
21
+ return (url.protocol === "http:" || url.protocol === "https:") && Boolean(url.hostname);
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZW52aXJvbm1lbnQtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7QUFFNUIsU0FBUyxrQkFBa0I7SUFDekIsT0FDRSxVQUdELENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7QUFDdkIsQ0FBQztBQUVELDhFQUE4RTtBQUM5RSxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLFNBQTZDLGtCQUFrQixFQUFFO0lBRWpFLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUNoRSxJQUFJLFFBQVEsS0FBSyxTQUFTO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDNUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxDQUFDO0lBQ2hELElBQUksQ0FBQyxJQUFJLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDN0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksVUFBVSxHQUFHLFlBQVk7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMvRixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxPQUFPLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9Cb29sZWFuIH0gZnJvbSBcIi4vb2JqZWN0LnRzXCI7XG5cbmNvbnN0IE1BWF9UQ1BfUE9SVCA9IDY1XzUzNTtcblxuZnVuY3Rpb24gcnVudGltZUVudmlyb25tZW50KCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4gKFxuICAgIGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gICAgICBwcm9jZXNzPzogeyBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IH07XG4gICAgfVxuICApLnByb2Nlc3M/LmVudiA/PyB7fTtcbn1cblxuLyoqIERldGVjdCBhIERhdGFicmlja3MgQXBwIHJ1bnRpbWUgZnJvbSBpdHMgcmVxdWlyZWQgbmFtZSwgaG9zdCwgYW5kIHBvcnQuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRhYnJpY2tzQXBwRW52KFxuICBzb3VyY2U6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4gPSBydW50aW1lRW52aXJvbm1lbnQoKSxcbik6IGJvb2xlYW4ge1xuICBjb25zdCBvdmVycmlkZSA9IHRvQm9vbGVhbihzb3VyY2UuREJYX1RPT0xTX0RBVEFCUklDS1NfQVBQX0VOVik7XG4gIGlmIChvdmVycmlkZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gb3ZlcnJpZGU7XG4gIGNvbnN0IG5hbWUgPSBzb3VyY2UuREFUQUJSSUNLU19BUFBfTkFNRT8udHJpbSgpO1xuICBjb25zdCBob3N0ID0gc291cmNlLkRBVEFCUklDS1NfSE9TVD8udHJpbSgpO1xuICBjb25zdCBwb3J0ID0gc291cmNlLkRBVEFCUklDS1NfQVBQX1BPUlQ/LnRyaW0oKTtcbiAgaWYgKCFuYW1lIHx8IC9cXCRcXHtbXn1dK1xcfS8udGVzdChuYW1lKSB8fCAhaG9zdCB8fCAhcG9ydCB8fCAhL15cXGQrJC8udGVzdChwb3J0KSkgcmV0dXJuIGZhbHNlO1xuICBjb25zdCBwYXJzZWRQb3J0ID0gTnVtYmVyKHBvcnQpO1xuICBpZiAoIU51bWJlci5pc0ludGVnZXIocGFyc2VkUG9ydCkgfHwgcGFyc2VkUG9ydCA8IDEgfHwgcGFyc2VkUG9ydCA+IE1BWF9UQ1BfUE9SVCkgcmV0dXJuIGZhbHNlO1xuICB0cnkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoaG9zdCk7XG4gICAgcmV0dXJuICh1cmwucHJvdG9jb2wgPT09IFwiaHR0cDpcIiB8fCB1cmwucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIpICYmIEJvb2xlYW4odXJsLmhvc3RuYW1lKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iXX0=
@@ -222,6 +222,7 @@ export declare function forEach<T>(source: Source<T>, callback: (value: T, index
222
222
  * @param sources - Containers to concatenate (nullish sources are skipped).
223
223
  */
224
224
  export declare function at<T>(index: number, ...sources: readonly Source<T>[]): T | undefined;
225
+ /** Normalize one value or an existing value list into a value list. */
225
226
  export declare function toOneOrMany<T>(input: T | OneOrMany<T>): OneOrMany<T>;
226
227
  /**
227
228
  * Materializes the concatenated sources into a new array. Consumes single-pass
@@ -661,5 +662,6 @@ export declare function toDate(value: unknown, options?: ToDateOptions): Date |
661
662
  * isEntity(x) && isEntity(y) ? x.id === y.id : undefined);
662
663
  */
663
664
  export type DeepEqualComparator = (a: unknown, b: unknown) => boolean | undefined;
665
+ /** Compare nested values structurally with an optional recursive override. */
664
666
  export declare function deepEqual(a: unknown, b: unknown, comparator?: DeepEqualComparator): boolean;
665
667
  export {};