@mnaoumov/typescript-lib 1.0.0 → 1.1.0

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 (172) hide show
  1. package/README.md +45 -1
  2. package/dist/lib/cjs/@types/debug.d.cts +1 -1
  3. package/dist/lib/cjs/abort-controller.cjs +1 -59
  4. package/dist/lib/cjs/abort-controller.d.cts +2 -1
  5. package/dist/lib/cjs/aggregate-error.cjs +1 -59
  6. package/dist/lib/cjs/aggregate-error.d.cts +1 -1
  7. package/dist/lib/cjs/api-contract.cjs +102 -0
  8. package/dist/lib/cjs/api-contract.d.cts +184 -0
  9. package/dist/lib/cjs/array-buffer.cjs +1 -59
  10. package/dist/lib/cjs/array-buffer.d.cts +1 -1
  11. package/dist/lib/cjs/array.cjs +1 -59
  12. package/dist/lib/cjs/array.d.cts +1 -1
  13. package/dist/lib/cjs/async-events.cjs +1 -59
  14. package/dist/lib/cjs/async-events.d.cts +1 -1
  15. package/dist/lib/cjs/async-operation-hook.cjs +1 -59
  16. package/dist/lib/cjs/async-operation-hook.d.cts +1 -1
  17. package/dist/lib/cjs/async.cjs +1 -59
  18. package/dist/lib/cjs/async.d.cts +2 -1
  19. package/dist/lib/cjs/beeper.cjs +1 -59
  20. package/dist/lib/cjs/beeper.d.cts +1 -1
  21. package/dist/lib/cjs/blob.cjs +1 -59
  22. package/dist/lib/cjs/blob.d.cts +2 -1
  23. package/dist/lib/cjs/bytes.cjs +1 -59
  24. package/dist/lib/cjs/bytes.d.cts +1 -1
  25. package/dist/lib/cjs/debug-controller.cjs +1 -59
  26. package/dist/lib/cjs/debug-controller.d.cts +1 -1
  27. package/dist/lib/cjs/debug.cjs +6 -37
  28. package/dist/lib/cjs/debug.d.cts +1 -1
  29. package/dist/lib/cjs/desktop-zip-extractor.cjs +1 -59
  30. package/dist/lib/cjs/desktop-zip-extractor.d.cts +2 -1
  31. package/dist/lib/cjs/disposable.cjs +4 -54
  32. package/dist/lib/cjs/disposable.d.cts +1 -1
  33. package/dist/lib/cjs/enum.cjs +1 -59
  34. package/dist/lib/cjs/enum.d.cts +1 -1
  35. package/dist/lib/cjs/error.cjs +1 -59
  36. package/dist/lib/cjs/error.d.cts +2 -1
  37. package/dist/lib/cjs/function.cjs +1 -59
  38. package/dist/lib/cjs/function.d.cts +1 -1
  39. package/dist/lib/cjs/html-element.cjs +1 -59
  40. package/dist/lib/cjs/html-element.d.cts +2 -1
  41. package/dist/lib/cjs/index.cjs +36 -91
  42. package/dist/lib/cjs/index.d.cts +2 -1
  43. package/dist/lib/cjs/jpeg-metadata.cjs +1 -59
  44. package/dist/lib/cjs/jpeg-metadata.d.cts +1 -1
  45. package/dist/lib/cjs/library-references.d.cts +2 -0
  46. package/dist/lib/cjs/library.cjs +1 -59
  47. package/dist/lib/cjs/object-utils.cjs +1 -59
  48. package/dist/lib/cjs/object-utils.d.cts +1 -1
  49. package/dist/lib/cjs/path.cjs +6 -37
  50. package/dist/lib/cjs/path.d.cts +2 -1
  51. package/dist/lib/cjs/reg-exp.cjs +1 -59
  52. package/dist/lib/cjs/reg-exp.d.cts +1 -1
  53. package/dist/lib/cjs/string.cjs +1 -59
  54. package/dist/lib/cjs/string.d.cts +2 -1
  55. package/dist/lib/cjs/transformers/date-transformer.cjs +1 -59
  56. package/dist/lib/cjs/transformers/date-transformer.d.cts +1 -1
  57. package/dist/lib/cjs/transformers/group-transformer.cjs +1 -59
  58. package/dist/lib/cjs/transformers/group-transformer.d.cts +1 -1
  59. package/dist/lib/cjs/transformers/index.cjs +9 -67
  60. package/dist/lib/cjs/transformers/index.d.cts +1 -1
  61. package/dist/lib/cjs/transformers/map-transformer.cjs +1 -59
  62. package/dist/lib/cjs/transformers/map-transformer.d.cts +1 -1
  63. package/dist/lib/cjs/transformers/set-transformer.cjs +1 -59
  64. package/dist/lib/cjs/transformers/set-transformer.d.cts +1 -1
  65. package/dist/lib/cjs/transformers/skip-private-property-transformer.cjs +1 -59
  66. package/dist/lib/cjs/transformers/skip-private-property-transformer.d.cts +1 -1
  67. package/dist/lib/cjs/transformers/transformer.cjs +1 -59
  68. package/dist/lib/cjs/transformers/transformer.d.cts +1 -1
  69. package/dist/lib/cjs/transformers/two-way-map-transformer.cjs +1 -59
  70. package/dist/lib/cjs/transformers/two-way-map-transformer.d.cts +1 -1
  71. package/dist/lib/cjs/transformers/typed-transformer.cjs +1 -59
  72. package/dist/lib/cjs/transformers/typed-transformer.d.cts +1 -1
  73. package/dist/lib/cjs/two-way-map.cjs +1 -59
  74. package/dist/lib/cjs/two-way-map.d.cts +1 -1
  75. package/dist/lib/cjs/type-guards.cjs +28 -61
  76. package/dist/lib/cjs/type-guards.d.cts +36 -1
  77. package/dist/lib/cjs/type.cjs +1 -59
  78. package/dist/lib/cjs/type.d.cts +1 -1
  79. package/dist/lib/cjs/typescript-lib-state.cjs +1 -59
  80. package/dist/lib/cjs/typescript-lib-state.d.cts +1 -1
  81. package/dist/lib/cjs/url.cjs +1 -59
  82. package/dist/lib/cjs/url.d.cts +1 -1
  83. package/dist/lib/cjs/value-provider.cjs +1 -59
  84. package/dist/lib/cjs/value-provider.d.cts +2 -1
  85. package/dist/lib/cjs/value-wrapper.cjs +1 -59
  86. package/dist/lib/cjs/value-wrapper.d.cts +1 -1
  87. package/dist/lib/esm/@types/debug.d.mts +1 -1
  88. package/dist/lib/esm/abort-controller.d.mts +2 -1
  89. package/dist/lib/esm/abort-controller.mjs +1 -45
  90. package/dist/lib/esm/aggregate-error.d.mts +1 -1
  91. package/dist/lib/esm/aggregate-error.mjs +1 -45
  92. package/dist/lib/esm/api-contract.d.mts +184 -0
  93. package/dist/lib/esm/api-contract.mjs +75 -0
  94. package/dist/lib/esm/array-buffer.d.mts +1 -1
  95. package/dist/lib/esm/array-buffer.mjs +1 -45
  96. package/dist/lib/esm/array.d.mts +1 -1
  97. package/dist/lib/esm/array.mjs +1 -45
  98. package/dist/lib/esm/async-events.d.mts +1 -1
  99. package/dist/lib/esm/async-events.mjs +1 -45
  100. package/dist/lib/esm/async-operation-hook.d.mts +1 -1
  101. package/dist/lib/esm/async-operation-hook.mjs +1 -45
  102. package/dist/lib/esm/async.d.mts +2 -1
  103. package/dist/lib/esm/async.mjs +1 -45
  104. package/dist/lib/esm/beeper.d.mts +1 -1
  105. package/dist/lib/esm/beeper.mjs +1 -45
  106. package/dist/lib/esm/blob.d.mts +2 -1
  107. package/dist/lib/esm/blob.mjs +1 -45
  108. package/dist/lib/esm/bytes.d.mts +1 -1
  109. package/dist/lib/esm/bytes.mjs +1 -45
  110. package/dist/lib/esm/debug-controller.d.mts +1 -1
  111. package/dist/lib/esm/debug-controller.mjs +0 -44
  112. package/dist/lib/esm/debug.d.mts +1 -1
  113. package/dist/lib/esm/debug.mjs +5 -22
  114. package/dist/lib/esm/desktop-zip-extractor.d.mts +2 -1
  115. package/dist/lib/esm/desktop-zip-extractor.mjs +1 -45
  116. package/dist/lib/esm/disposable.d.mts +1 -1
  117. package/dist/lib/esm/disposable.mjs +4 -40
  118. package/dist/lib/esm/enum.d.mts +1 -1
  119. package/dist/lib/esm/enum.mjs +1 -45
  120. package/dist/lib/esm/error.d.mts +2 -1
  121. package/dist/lib/esm/error.mjs +1 -45
  122. package/dist/lib/esm/function.d.mts +1 -1
  123. package/dist/lib/esm/function.mjs +1 -45
  124. package/dist/lib/esm/html-element.d.mts +2 -1
  125. package/dist/lib/esm/html-element.mjs +1 -45
  126. package/dist/lib/esm/index.d.mts +2 -1
  127. package/dist/lib/esm/index.mjs +3 -45
  128. package/dist/lib/esm/jpeg-metadata.d.mts +1 -1
  129. package/dist/lib/esm/jpeg-metadata.mjs +1 -45
  130. package/dist/lib/esm/library-references.d.mts +2 -0
  131. package/dist/lib/esm/library.mjs +1 -45
  132. package/dist/lib/esm/object-utils.d.mts +1 -1
  133. package/dist/lib/esm/object-utils.mjs +1 -45
  134. package/dist/lib/esm/path.d.mts +2 -1
  135. package/dist/lib/esm/path.mjs +5 -22
  136. package/dist/lib/esm/reg-exp.d.mts +1 -1
  137. package/dist/lib/esm/reg-exp.mjs +1 -45
  138. package/dist/lib/esm/string.d.mts +2 -1
  139. package/dist/lib/esm/string.mjs +1 -45
  140. package/dist/lib/esm/transformers/date-transformer.d.mts +1 -1
  141. package/dist/lib/esm/transformers/date-transformer.mjs +1 -45
  142. package/dist/lib/esm/transformers/group-transformer.d.mts +1 -1
  143. package/dist/lib/esm/transformers/group-transformer.mjs +1 -45
  144. package/dist/lib/esm/transformers/index.d.mts +1 -1
  145. package/dist/lib/esm/transformers/index.mjs +1 -45
  146. package/dist/lib/esm/transformers/map-transformer.d.mts +1 -1
  147. package/dist/lib/esm/transformers/map-transformer.mjs +1 -45
  148. package/dist/lib/esm/transformers/set-transformer.d.mts +1 -1
  149. package/dist/lib/esm/transformers/set-transformer.mjs +1 -45
  150. package/dist/lib/esm/transformers/skip-private-property-transformer.d.mts +1 -1
  151. package/dist/lib/esm/transformers/skip-private-property-transformer.mjs +1 -45
  152. package/dist/lib/esm/transformers/transformer.d.mts +1 -1
  153. package/dist/lib/esm/transformers/transformer.mjs +1 -45
  154. package/dist/lib/esm/transformers/two-way-map-transformer.d.mts +1 -1
  155. package/dist/lib/esm/transformers/two-way-map-transformer.mjs +1 -45
  156. package/dist/lib/esm/transformers/typed-transformer.d.mts +1 -1
  157. package/dist/lib/esm/transformers/typed-transformer.mjs +1 -45
  158. package/dist/lib/esm/two-way-map.d.mts +1 -1
  159. package/dist/lib/esm/two-way-map.mjs +1 -45
  160. package/dist/lib/esm/type-guards.d.mts +36 -1
  161. package/dist/lib/esm/type-guards.mjs +22 -46
  162. package/dist/lib/esm/type.d.mts +1 -1
  163. package/dist/lib/esm/type.mjs +1 -45
  164. package/dist/lib/esm/typescript-lib-state.d.mts +1 -1
  165. package/dist/lib/esm/typescript-lib-state.mjs +1 -45
  166. package/dist/lib/esm/url.d.mts +1 -1
  167. package/dist/lib/esm/url.mjs +1 -45
  168. package/dist/lib/esm/value-provider.d.mts +2 -1
  169. package/dist/lib/esm/value-provider.mjs +1 -45
  170. package/dist/lib/esm/value-wrapper.d.mts +1 -1
  171. package/dist/lib/esm/value-wrapper.mjs +1 -45
  172. package/package.json +62 -19
@@ -2,63 +2,32 @@
2
2
  THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
-
6
5
  (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
6
  function ensureBrowserProcess() {
13
7
  const browserProcess = {
14
8
  browser: true,
15
9
  cwd() {
16
- return '/';
10
+ return "/";
17
11
  },
18
12
  env: {},
19
- platform: 'android'
13
+ platform: "android"
20
14
  };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
15
  const existingProcess = globalThis.process;
24
-
25
16
  if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
17
  globalThis.process = browserProcess;
28
18
  return;
29
19
  }
30
-
31
20
  if (existingProcess.versions?.node) {
32
21
  return;
33
22
  }
34
-
35
23
  const existingProcessRecord = existingProcess;
36
-
37
24
  for (const [key, value] of Object.entries(browserProcess)) {
38
25
  existingProcessRecord[key] ??= value;
39
26
  }
40
-
41
- existingProcessRecord['browser'] = true;
42
- }
43
-
44
- function keepName($unknown) {
45
- return $unknown;
27
+ existingProcessRecord["browser"] = true;
46
28
  }
47
29
 
48
- (function initCjs() {
49
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
- const globalThisRecord = globalThis;
51
- ensureDisposeSymbols();
52
- globalThisRecord['__name'] ??= keepName;
53
- globalThisRecord['__extractDefault'] ??= extractDefault;
54
-
55
- ensureBrowserProcess();
56
-
57
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
- function extractDefault(module) {
59
- return module && module.__esModule && 'default' in module ? module.default : module;
60
- }
61
- })();
30
+ ensureBrowserProcess();
62
31
  })();
63
32
 
64
33
  "use strict";
@@ -112,7 +81,7 @@ __export(path_exports, {
112
81
  toPosixPath: () => toPosixPath
113
82
  });
114
83
  module.exports = __toCommonJS(path_exports);
115
- var import_path_browserify = __toESM(__extractDefault(require('path-browserify')), 1);
84
+ var import_path_browserify = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('path-browserify')), 1);
116
85
  var import_string = require('./string.cjs');
117
86
  const WINDOWS_DRIVE_REG_EXP = /^[a-zA-Z]:\//;
118
87
  const WINDOWS_POSIX_LIKE_PATH_REG_EXP = /[a-zA-Z]:\/[^:]*$/;
@@ -199,4 +168,4 @@ function upperCaseDrive(path) {
199
168
  toPosixBuffer,
200
169
  toPosixPath
201
170
  });
202
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BhdGgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgcGF0aHMuXG4gKi9cblxuaW1wb3J0IHBhdGhCcm93c2VyaWZ5IGZyb20gJ3BhdGgtYnJvd3NlcmlmeSc7XG5cbmltcG9ydCB7XG4gIGVuc3VyZVN0YXJ0c1dpdGgsXG4gIHJlcGxhY2VBbGxcbn0gZnJvbSAnLi9zdHJpbmcudHMnO1xuXG5jb25zdCBXSU5ET1dTX0RSSVZFX1JFR19FWFAgPSAvXlthLXpBLVpdOlxcLy87XG5jb25zdCBXSU5ET1dTX1BPU0lYX0xJS0VfUEFUSF9SRUdfRVhQID0gL1thLXpBLVpdOlxcL1teOl0qJC87XG5cbi8qKlxuICogUHJvdmlkZXMgbWV0aG9kcyBmb3IgaGFuZGxpbmcgUE9TSVggcGF0aHMuXG4gKi9cbmV4cG9ydCBjb25zdCBwb3NpeCA9IHBhdGhCcm93c2VyaWZ5LnBvc2l4O1xuXG4vKipcbiAqIEEgUE9TSVggcGF0aCBkZWxpbWl0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxpbWl0ZXIgPSBwb3NpeC5kZWxpbWl0ZXI7XG5cbi8qKlxuICogQSBQT1NJWCBzZWdtZW50IHNlcGFyYXRvci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlcGFyYXRvciA9IHBhdGhCcm93c2VyaWZ5LnBvc2l4LnNlcDtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIG5hbWUgb2YgYSBmaWxlLCBvcHRpb25hbGx5IHJlbW92aW5nIHRoZSBmaWxlIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGdldCB0aGUgYmFzZSBuYW1lIGZyb20uXG4gKiBAcGFyYW0gZXh0IC0gQW4gb3B0aW9uYWwgZXh0ZW5zaW9uIHRvIHJlbW92ZSBmcm9tIHRoZSBiYXNlIG5hbWUuXG4gKiBAcmV0dXJucyBUaGUgYmFzZSBuYW1lIG9mIHRoZSBmaWxlLlxuICovXG5leHBvcnQgY29uc3QgYmFzZW5hbWUgPSBwb3NpeC5iYXNlbmFtZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkaXJlY3RvcnkgbmFtZSBvZiBhIHBhdGguXG4gKlxuICogYGRpcmVjdG9yeWAgaXMgdXNlZCBpbnN0ZWFkIG9mIGBmb2xkZXJgIHRvIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgd2l0aCBgbm9kZTpwYXRoYCBtb2R1bGUuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIGRpcmVjdG9yeSBuYW1lIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZGlyZWN0b3J5IG5hbWUgb2YgdGhlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBkaXJuYW1lID0gcG9zaXguZGlybmFtZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaWxlIGV4dGVuc2lvbiBvZiBhIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIGV4dGVuc2lvbiBmcm9tLlxuICogQHJldHVybnMgVGhlIGZpbGUgZXh0ZW5zaW9uIG9mIHRoZSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgZXh0bmFtZSA9IHBvc2l4LmV4dG5hbWU7XG5cbi8qKlxuICogRm9ybWF0cyBhIHBhdGggb2JqZWN0IGludG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gcGF0aE9iamVjdCAtIFRoZSBwYXRoIG9iamVjdCB0byBmb3JtYXQuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIHBhdGggc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0ID0gcG9zaXguZm9ybWF0O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBwYXRoIGlzIGFic29sdXRlLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggaXMgYWJzb2x1dGUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHBvc2l4LmlzQWJzb2x1dGUocGF0aCkgfHwgV0lORE9XU19QT1NJWF9MSUtFX1BBVEhfUkVHX0VYUC5leGVjKHBhdGgpPy5bMF0gPT09IHBhdGg7XG59XG5cbi8qKlxuICogSm9pbnMgbXVsdGlwbGUgcGF0aCBzZWdtZW50cyBpbnRvIGEgc2luZ2xlIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGhzIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gam9pbi5cbiAqIEByZXR1cm5zIFRoZSBqb2luZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGpvaW4gPSBwb3NpeC5qb2luO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwYXRoLCByZXNvbHZpbmcgJy4uJyBhbmQgJy4nIHNlZ21lbnRzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVBhdGggPSBwb3NpeC5ub3JtYWxpemU7XG5cbi8qKlxuICogUGFyc2VzIGEgcGF0aCBzdHJpbmcgaW50byBhIHBhdGggb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggc3RyaW5nIHRvIHBhcnNlLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBwYXRoIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlID0gcG9zaXgucGFyc2U7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIG1ha2VGaWxlTmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFrZUZpbGVOYW1lUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG5hbWUgdG8gYXBwZW5kIHRoZSBleHRlbnNpb24gdG8uXG4gICAqL1xuICByZWFkb25seSBmaWxlQmFzZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbiB0byBhcHBlbmQgdG8gdGhlIGZpbGUgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVFeHRlbnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBmaWxlIG5hbWUgZnJvbSB0aGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCwgY29udmVydGluZyBpdCB0byBhIFBPU0lYLXN0eWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGltcG9ydE1ldGFVcmwgLSBUaGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGZpbGUgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBQT1NJWC1zdHlsZSBmaWxlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlTmFtZShpbXBvcnRNZXRhVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzb2x2ZShkZWNvZGVVUkkobmV3IFVSTChpbXBvcnRNZXRhVXJsKS5wYXRobmFtZSkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGZvbGRlciBuYW1lIGZyb20gdGhlIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAsIGNvbnZlcnRpbmcgaXQgdG8gYSBQT1NJWC1zdHlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBpbXBvcnRNZXRhVXJsIC0gVGhlIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBmb2xkZXIgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBQT1NJWC1zdHlsZSBmb2xkZXIgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlck5hbWUoaW1wb3J0TWV0YVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRpcm5hbWUoZ2V0RmlsZU5hbWUoaW1wb3J0TWV0YVVybCkpO1xufVxuXG4vKipcbiAqIE1ha2VzIGEgZmlsZSBuYW1lIGJ5IGFwcGVuZGluZyBhbiBleHRlbnNpb24gdG8gYSBnaXZlbiBmaWxlIG5hbWUuXG4gKiBJZiB0aGUgZXh0ZW5zaW9uIGlzIGVtcHR5LCB0aGUgZmlsZSBuYW1lIGlzIHJldHVybmVkIGFzIGlzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgbWFraW5nIHRoZSBmaWxlIG5hbWUuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBuYW1lIHdpdGggdGhlIGV4dGVuc2lvbiBhcHBlbmRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VGaWxlTmFtZShwYXJhbXM6IE1ha2VGaWxlTmFtZVBhcmFtcyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXJhbXMuZmlsZUV4dGVuc2lvbiA/IGAke3BhcmFtcy5maWxlQmFzZU5hbWV9LiR7cGFyYW1zLmZpbGVFeHRlbnNpb259YCA6IHBhcmFtcy5maWxlQmFzZU5hbWU7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIGdpdmVuIHBhdGggYnkgZW5zdXJpbmcgaXQgaXMgcmVsYXRpdmUsIGFkZGluZyBcIi4vXCIgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aCwgc3RhcnRpbmcgd2l0aCBcIi4vXCIgaWYgaXQgd2FzIHJlbGF0aXZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSWZSZWxhdGl2ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKCcvJykgfHwgcGF0aC5pbmNsdWRlcygnOicpXG4gICAgPyBwYXRoXG4gICAgOiBlbnN1cmVTdGFydHNXaXRoKHtcbiAgICAgICRzdHJpbmc6IHBhdGgsXG4gICAgICBwcmVmaXg6ICcuLydcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gb25lIHBhdGggdG8gYW5vdGhlci5cbiAqXG4gKiBgcGF0aC1icm93c2VyaWZ5YCdzIG93biBgcmVsYXRpdmVgIGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5OiBpdCByZXNvbHZlcyBhIHJlbGF0aXZlIGFyZ3VtZW50IGFnYWluc3RcbiAqIGBwcm9jZXNzLmN3ZCgpYCwgd2hpY2ggb24gV2luZG93cyBpcyBgRjpcXC4uLmAgcmF0aGVyIHRoYW4gYSBQT1NJWCBhYnNvbHV0ZSBwYXRoLCBhbmQgaXRzIHNsaWNpbmcgdGhlbiBhc3N1bWVzIGFcbiAqIGxlYWRpbmcgYC9gIC0gc28gYHJlbGF0aXZlKCdzcmMnLCAnLi4veCcpYCBjYW1lIGJhY2sgYXMgYCcuLi8uLngnYC4gQm90aCBhcmd1bWVudHMgYXJlIHJlc29sdmVkIHRocm91Z2hcbiAqIHtAbGluayByZXNvbHZlfSBoZXJlIGluc3RlYWQsIGFuZCByb290ZWQgYXQgYC9gIGJlZm9yZSB0aGUgUE9TSVggY29tcGFyaXNvbi5cbiAqXG4gKiBAcGFyYW0gZnJvbSAtIFRoZSBzdGFydGluZyBwYXRoLlxuICogQHBhcmFtIHRvIC0gVGhlIGRlc3RpbmF0aW9uIHBhdGguXG4gKiBAcmV0dXJucyBUaGUgcmVsYXRpdmUgcGF0aCBmcm9tIGBmcm9tYCB0byBgdG9gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzb2x2ZWRGcm9tID0gcmVzb2x2ZShmcm9tKTtcbiAgY29uc3QgcmVzb2x2ZWRUbyA9IHJlc29sdmUodG8pO1xuICBjb25zdCBmcm9tRHJpdmUgPSBXSU5ET1dTX0RSSVZFX1JFR19FWFAuZXhlYyhyZXNvbHZlZEZyb20pPy5bMF0udG9VcHBlckNhc2UoKTtcbiAgY29uc3QgdG9Ecml2ZSA9IFdJTkRPV1NfRFJJVkVfUkVHX0VYUC5leGVjKHJlc29sdmVkVG8pPy5bMF0udG9VcHBlckNhc2UoKTtcbiAgcmV0dXJuIGZyb21Ecml2ZSA9PT0gdG9Ecml2ZVxuICAgID8gcG9zaXgucmVsYXRpdmUodG9Sb290ZWRQb3NpeFBhdGgodXBwZXJDYXNlRHJpdmUocmVzb2x2ZWRGcm9tKSksIHRvUm9vdGVkUG9zaXhQYXRoKHVwcGVyQ2FzZURyaXZlKHJlc29sdmVkVG8pKSlcbiAgICA6IHJlc29sdmVkVG87XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBzZXF1ZW5jZSBvZiBwYXRocyBvciBwYXRoIHNlZ21lbnRzIGludG8gYW4gYWJzb2x1dGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGF0aFNlZ21lbnRzIC0gVGhlIHNlcXVlbmNlIG9mIHBhdGggc2VnbWVudHMgdG8gcmVzb2x2ZS5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBhYnNvbHV0ZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZSguLi5wYXRoU2VnbWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgLypcbiAgICogYHBhdGgtYnJvd3NlcmlmeWAgdHJlYXRzIG9ubHkgYSBsZWFkaW5nIGAvYCBhcyBhYnNvbHV0ZSBhbmQgam9pbnMgYHByb2Nlc3MuY3dkKClgIGluIGFzIGFuIG9wYXF1ZSBzZWdtZW50LCBzbyBvblxuICAgKiBXaW5kb3dzIGEgYC4uYCBjbGltYmluZyBvdXQgb2YgdGhlIHdvcmtpbmcgZm9sZGVyIGNhbmNlbGxlZCB0aGUgd2hvbGUgYEY6XFwuLi5gIGN3ZC4gRXZlcnkgc2VnbWVudCBpcyBtYWRlIFBPU0lYXG4gICAqIGFuZCBhIGRyaXZlIHJvb3QgaXMgZ2l2ZW4gYSBsZWFkaW5nIGAvYCwgd2hpY2ggbWFrZXMgaXQgYSByb290IGBwYXRoLWJyb3dzZXJpZnlgIHVuZGVyc3RhbmRzOyB0aGUgYC9gIGlzIGRyb3BwZWRcbiAgICogYWdhaW4gYmVsb3cuXG4gICAqL1xuICBjb25zdCByb290ZWRTZWdtZW50cyA9IHBhdGhTZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IHRvUm9vdGVkUG9zaXhQYXRoKHNlZ21lbnQpKTtcbiAgaWYgKHJvb3RlZFNlZ21lbnRzLmV2ZXJ5KChzZWdtZW50KSA9PiAhc2VnbWVudC5zdGFydHNXaXRoKCcvJykpKSB7XG4gICAgcm9vdGVkU2VnbWVudHMudW5zaGlmdCh0b1Jvb3RlZFBvc2l4UGF0aChwcm9jZXNzLmN3ZCgpKSk7XG4gIH1cbiAgY29uc3QgcGF0aCA9IHBvc2l4LnJlc29sdmUoLi4ucm9vdGVkU2VnbWVudHMpO1xuICBjb25zdCBtYXRjaCA9IFdJTkRPV1NfUE9TSVhfTElLRV9QQVRIX1JFR19FWFAuZXhlYyhwYXRoKTtcbiAgcmV0dXJuIG1hdGNoPy5bMF0gPz8gcGF0aDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJ1ZmZlciBjb250YWluaW5nIGEgcGF0aCB0byBhIFBPU0lYLXN0eWxlIGJ1ZmZlciBieSByZXBsYWNpbmcgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMuXG4gKlxuICogQHBhcmFtIGJ1ZmZlciAtIFRoZSBidWZmZXIgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgbmV3IGJ1ZmZlciBjb250YWluaW5nIHRoZSBQT1NJWC1zdHlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Qb3NpeEJ1ZmZlcihidWZmZXI6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh0b1Bvc2l4UGF0aChTdHJpbmcoYnVmZmVyKSkpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gcGF0aCB0byBhIFBPU0lYLXN0eWxlIHBhdGggYnkgcmVwbGFjaW5nIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBQT1NJWC1zdHlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Qb3NpeFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHBhdGgsXG4gICAgcmVwbGFjZXI6ICcvJyxcbiAgICBzZWFyY2hWYWx1ZTogJ1xcXFwnXG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0b1Jvb3RlZFBvc2l4UGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwb3NpeFBhdGggPSB0b1Bvc2l4UGF0aChwYXRoKTtcbiAgcmV0dXJuIFdJTkRPV1NfRFJJVkVfUkVHX0VYUC50ZXN0KHBvc2l4UGF0aCkgPyBgLyR7cG9zaXhQYXRofWAgOiBwb3NpeFBhdGg7XG59XG5cbmZ1bmN0aW9uIHVwcGVyQ2FzZURyaXZlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoLnJlcGxhY2UoV0lORE9XU19EUklWRV9SRUdfRVhQLCAoZHJpdmUpID0+IGRyaXZlLnRvVXBwZXJDYXNlKCkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSw2QkFBMkI7QUFFM0Isb0JBR087QUFFUCxNQUFNLHdCQUF3QjtBQUM5QixNQUFNLGtDQUFrQztBQUtqQyxNQUFNLFFBQVEsdUJBQUFBLFFBQWU7QUFLN0IsTUFBTSxZQUFZLE1BQU07QUFLeEIsTUFBTSxZQUFZLHVCQUFBQSxRQUFlLE1BQU07QUFTdkMsTUFBTSxXQUFXLE1BQU07QUFVdkIsTUFBTSxVQUFVLE1BQU07QUFRdEIsTUFBTSxVQUFVLE1BQU07QUFRdEIsTUFBTSxTQUFTLE1BQU07QUFRckIsU0FBUyxXQUFXLE1BQXVCO0FBQ2hELFNBQU8sTUFBTSxXQUFXLElBQUksS0FBSyxnQ0FBZ0MsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNO0FBQ3ZGO0FBUU8sTUFBTSxPQUFPLE1BQU07QUFRbkIsTUFBTSxnQkFBZ0IsTUFBTTtBQVE1QixNQUFNLFFBQVEsTUFBTTtBQXVCcEIsU0FBUyxZQUFZLGVBQStCO0FBQ3pELFNBQU8sUUFBUSxVQUFVLElBQUksSUFBSSxhQUFhLEVBQUUsUUFBUSxDQUFDO0FBQzNEO0FBUU8sU0FBUyxjQUFjLGVBQStCO0FBQzNELFNBQU8sUUFBUSxZQUFZLGFBQWEsQ0FBQztBQUMzQztBQVNPLFNBQVMsYUFBYSxRQUFvQztBQUMvRCxTQUFPLE9BQU8sZ0JBQWdCLEdBQUcsT0FBTyxZQUFZLElBQUksT0FBTyxhQUFhLEtBQUssT0FBTztBQUMxRjtBQVFPLFNBQVMsb0JBQW9CLE1BQXNCO0FBQ3hELFNBQU8sS0FBSyxXQUFXLEdBQUcsS0FBSyxLQUFLLFNBQVMsR0FBRyxJQUM1QyxXQUNBLGdDQUFpQjtBQUFBLElBQ2pCLFNBQVM7QUFBQSxJQUNULFFBQVE7QUFBQSxFQUNWLENBQUM7QUFDTDtBQWNPLFNBQVMsU0FBUyxNQUFjLElBQW9CO0FBQ3pELFFBQU0sZUFBZSxRQUFRLElBQUk7QUFDakMsUUFBTSxhQUFhLFFBQVEsRUFBRTtBQUM3QixRQUFNLFlBQVksc0JBQXNCLEtBQUssWUFBWSxJQUFJLENBQUMsRUFBRSxZQUFZO0FBQzVFLFFBQU0sVUFBVSxzQkFBc0IsS0FBSyxVQUFVLElBQUksQ0FBQyxFQUFFLFlBQVk7QUFDeEUsU0FBTyxjQUFjLFVBQ2pCLE1BQU0sU0FBUyxrQkFBa0IsZUFBZSxZQUFZLENBQUMsR0FBRyxrQkFBa0IsZUFBZSxVQUFVLENBQUMsQ0FBQyxJQUM3RztBQUNOO0FBUU8sU0FBUyxXQUFXLGNBQWdDO0FBT3pELFFBQU0saUJBQWlCLGFBQWEsSUFBSSxDQUFDLFlBQVksa0JBQWtCLE9BQU8sQ0FBQztBQUMvRSxNQUFJLGVBQWUsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLFdBQVcsR0FBRyxDQUFDLEdBQUc7QUFDL0QsbUJBQWUsUUFBUSxrQkFBa0IsUUFBUSxJQUFJLENBQUMsQ0FBQztBQUFBLEVBQ3pEO0FBQ0EsUUFBTSxPQUFPLE1BQU0sUUFBUSxHQUFHLGNBQWM7QUFDNUMsUUFBTSxRQUFRLGdDQUFnQyxLQUFLLElBQUk7QUFDdkQsU0FBTyxRQUFRLENBQUMsS0FBSztBQUN2QjtBQVFPLFNBQVMsY0FBYyxRQUF3QjtBQUNwRCxTQUFPLE9BQU8sS0FBSyxZQUFZLE9BQU8sTUFBTSxDQUFDLENBQUM7QUFDaEQ7QUFRTyxTQUFTLFlBQVksTUFBc0I7QUFDaEQsYUFBTywwQkFBVztBQUFBLElBQ2hCLFNBQVM7QUFBQSxJQUNULFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxFQUNmLENBQUM7QUFDSDtBQUVBLFNBQVMsa0JBQWtCLE1BQXNCO0FBQy9DLFFBQU0sWUFBWSxZQUFZLElBQUk7QUFDbEMsU0FBTyxzQkFBc0IsS0FBSyxTQUFTLElBQUksSUFBSSxTQUFTLEtBQUs7QUFDbkU7QUFFQSxTQUFTLGVBQWUsTUFBc0I7QUFDNUMsU0FBTyxLQUFLLFFBQVEsdUJBQXVCLENBQUMsVUFBVSxNQUFNLFlBQVksQ0FBQztBQUMzRTsiLAogICJuYW1lcyI6IFsicGF0aEJyb3dzZXJpZnkiXQp9Cg==
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgcGF0aHMuXG4gKi9cblxuaW1wb3J0IHBhdGhCcm93c2VyaWZ5IGZyb20gJ3BhdGgtYnJvd3NlcmlmeSc7XG5cbmltcG9ydCB7XG4gIGVuc3VyZVN0YXJ0c1dpdGgsXG4gIHJlcGxhY2VBbGxcbn0gZnJvbSAnLi9zdHJpbmcudHMnO1xuXG5jb25zdCBXSU5ET1dTX0RSSVZFX1JFR19FWFAgPSAvXlthLXpBLVpdOlxcLy87XG5jb25zdCBXSU5ET1dTX1BPU0lYX0xJS0VfUEFUSF9SRUdfRVhQID0gL1thLXpBLVpdOlxcL1teOl0qJC87XG5cbi8qKlxuICogUHJvdmlkZXMgbWV0aG9kcyBmb3IgaGFuZGxpbmcgUE9TSVggcGF0aHMuXG4gKi9cbmV4cG9ydCBjb25zdCBwb3NpeCA9IHBhdGhCcm93c2VyaWZ5LnBvc2l4O1xuXG4vKipcbiAqIEEgUE9TSVggcGF0aCBkZWxpbWl0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBkZWxpbWl0ZXIgPSBwb3NpeC5kZWxpbWl0ZXI7XG5cbi8qKlxuICogQSBQT1NJWCBzZWdtZW50IHNlcGFyYXRvci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlcGFyYXRvciA9IHBhdGhCcm93c2VyaWZ5LnBvc2l4LnNlcDtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIG5hbWUgb2YgYSBmaWxlLCBvcHRpb25hbGx5IHJlbW92aW5nIHRoZSBmaWxlIGV4dGVuc2lvbi5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIFRoZSBwYXRoIHRvIGdldCB0aGUgYmFzZSBuYW1lIGZyb20uXG4gKiBAcGFyYW0gZXh0IC0gQW4gb3B0aW9uYWwgZXh0ZW5zaW9uIHRvIHJlbW92ZSBmcm9tIHRoZSBiYXNlIG5hbWUuXG4gKiBAcmV0dXJucyBUaGUgYmFzZSBuYW1lIG9mIHRoZSBmaWxlLlxuICovXG5leHBvcnQgY29uc3QgYmFzZW5hbWUgPSBwb3NpeC5iYXNlbmFtZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkaXJlY3RvcnkgbmFtZSBvZiBhIHBhdGguXG4gKlxuICogYGRpcmVjdG9yeWAgaXMgdXNlZCBpbnN0ZWFkIG9mIGBmb2xkZXJgIHRvIHByZXNlcnZlIGNvbXBhdGliaWxpdHkgd2l0aCBgbm9kZTpwYXRoYCBtb2R1bGUuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIGRpcmVjdG9yeSBuYW1lIGZyb20uXG4gKiBAcmV0dXJucyBUaGUgZGlyZWN0b3J5IG5hbWUgb2YgdGhlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBkaXJuYW1lID0gcG9zaXguZGlybmFtZTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaWxlIGV4dGVuc2lvbiBvZiBhIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byBnZXQgdGhlIGV4dGVuc2lvbiBmcm9tLlxuICogQHJldHVybnMgVGhlIGZpbGUgZXh0ZW5zaW9uIG9mIHRoZSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgZXh0bmFtZSA9IHBvc2l4LmV4dG5hbWU7XG5cbi8qKlxuICogRm9ybWF0cyBhIHBhdGggb2JqZWN0IGludG8gYSBwYXRoIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gcGF0aE9iamVjdCAtIFRoZSBwYXRoIG9iamVjdCB0byBmb3JtYXQuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIHBhdGggc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0ID0gcG9zaXguZm9ybWF0O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBwYXRoIGlzIGFic29sdXRlLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHBhdGggaXMgYWJzb2x1dGUsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHBvc2l4LmlzQWJzb2x1dGUocGF0aCkgfHwgV0lORE9XU19QT1NJWF9MSUtFX1BBVEhfUkVHX0VYUC5leGVjKHBhdGgpPy5bMF0gPT09IHBhdGg7XG59XG5cbi8qKlxuICogSm9pbnMgbXVsdGlwbGUgcGF0aCBzZWdtZW50cyBpbnRvIGEgc2luZ2xlIHBhdGguXG4gKlxuICogQHBhcmFtIHBhdGhzIC0gVGhlIHBhdGggc2VnbWVudHMgdG8gam9pbi5cbiAqIEByZXR1cm5zIFRoZSBqb2luZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGpvaW4gPSBwb3NpeC5qb2luO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwYXRoLCByZXNvbHZpbmcgJy4uJyBhbmQgJy4nIHNlZ21lbnRzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vcm1hbGl6ZVBhdGggPSBwb3NpeC5ub3JtYWxpemU7XG5cbi8qKlxuICogUGFyc2VzIGEgcGF0aCBzdHJpbmcgaW50byBhIHBhdGggb2JqZWN0LlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggc3RyaW5nIHRvIHBhcnNlLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBwYXRoIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlID0gcG9zaXgucGFyc2U7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIG1ha2VGaWxlTmFtZX0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFrZUZpbGVOYW1lUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG5hbWUgdG8gYXBwZW5kIHRoZSBleHRlbnNpb24gdG8uXG4gICAqL1xuICByZWFkb25seSBmaWxlQmFzZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGV4dGVuc2lvbiB0byBhcHBlbmQgdG8gdGhlIGZpbGUgbmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVFeHRlbnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBmaWxlIG5hbWUgZnJvbSB0aGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCwgY29udmVydGluZyBpdCB0byBhIFBPU0lYLXN0eWxlIHBhdGguXG4gKlxuICogQHBhcmFtIGltcG9ydE1ldGFVcmwgLSBUaGUgYGltcG9ydChkb3QpbWV0YShkb3QpdXJsYCBmcm9tIHdoaWNoIHRvIGV4dHJhY3QgdGhlIGZpbGUgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBQT1NJWC1zdHlsZSBmaWxlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlTmFtZShpbXBvcnRNZXRhVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVzb2x2ZShkZWNvZGVVUkkobmV3IFVSTChpbXBvcnRNZXRhVXJsKS5wYXRobmFtZSkpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGZvbGRlciBuYW1lIGZyb20gdGhlIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAsIGNvbnZlcnRpbmcgaXQgdG8gYSBQT1NJWC1zdHlsZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBpbXBvcnRNZXRhVXJsIC0gVGhlIGBpbXBvcnQoZG90KW1ldGEoZG90KXVybGAgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBmb2xkZXIgbmFtZS5cbiAqIEByZXR1cm5zIFRoZSBQT1NJWC1zdHlsZSBmb2xkZXIgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlck5hbWUoaW1wb3J0TWV0YVVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRpcm5hbWUoZ2V0RmlsZU5hbWUoaW1wb3J0TWV0YVVybCkpO1xufVxuXG4vKipcbiAqIE1ha2VzIGEgZmlsZSBuYW1lIGJ5IGFwcGVuZGluZyBhbiBleHRlbnNpb24gdG8gYSBnaXZlbiBmaWxlIG5hbWUuXG4gKiBJZiB0aGUgZXh0ZW5zaW9uIGlzIGVtcHR5LCB0aGUgZmlsZSBuYW1lIGlzIHJldHVybmVkIGFzIGlzLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgbWFraW5nIHRoZSBmaWxlIG5hbWUuXG4gKiBAcmV0dXJucyBUaGUgZmlsZSBuYW1lIHdpdGggdGhlIGV4dGVuc2lvbiBhcHBlbmRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VGaWxlTmFtZShwYXJhbXM6IE1ha2VGaWxlTmFtZVBhcmFtcyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXJhbXMuZmlsZUV4dGVuc2lvbiA/IGAke3BhcmFtcy5maWxlQmFzZU5hbWV9LiR7cGFyYW1zLmZpbGVFeHRlbnNpb259YCA6IHBhcmFtcy5maWxlQmFzZU5hbWU7XG59XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIGdpdmVuIHBhdGggYnkgZW5zdXJpbmcgaXQgaXMgcmVsYXRpdmUsIGFkZGluZyBcIi4vXCIgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gbm9ybWFsaXplLlxuICogQHJldHVybnMgVGhlIG5vcm1hbGl6ZWQgcGF0aCwgc3RhcnRpbmcgd2l0aCBcIi4vXCIgaWYgaXQgd2FzIHJlbGF0aXZlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSWZSZWxhdGl2ZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKCcvJykgfHwgcGF0aC5pbmNsdWRlcygnOicpXG4gICAgPyBwYXRoXG4gICAgOiBlbnN1cmVTdGFydHNXaXRoKHtcbiAgICAgICRzdHJpbmc6IHBhdGgsXG4gICAgICBwcmVmaXg6ICcuLydcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gb25lIHBhdGggdG8gYW5vdGhlci5cbiAqXG4gKiBgcGF0aC1icm93c2VyaWZ5YCdzIG93biBgcmVsYXRpdmVgIGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5OiBpdCByZXNvbHZlcyBhIHJlbGF0aXZlIGFyZ3VtZW50IGFnYWluc3RcbiAqIGBwcm9jZXNzLmN3ZCgpYCwgd2hpY2ggb24gV2luZG93cyBpcyBgRjpcXC4uLmAgcmF0aGVyIHRoYW4gYSBQT1NJWCBhYnNvbHV0ZSBwYXRoLCBhbmQgaXRzIHNsaWNpbmcgdGhlbiBhc3N1bWVzIGFcbiAqIGxlYWRpbmcgYC9gIC0gc28gYHJlbGF0aXZlKCdzcmMnLCAnLi4veCcpYCBjYW1lIGJhY2sgYXMgYCcuLi8uLngnYC4gQm90aCBhcmd1bWVudHMgYXJlIHJlc29sdmVkIHRocm91Z2hcbiAqIHtAbGluayByZXNvbHZlfSBoZXJlIGluc3RlYWQsIGFuZCByb290ZWQgYXQgYC9gIGJlZm9yZSB0aGUgUE9TSVggY29tcGFyaXNvbi5cbiAqXG4gKiBAcGFyYW0gZnJvbSAtIFRoZSBzdGFydGluZyBwYXRoLlxuICogQHBhcmFtIHRvIC0gVGhlIGRlc3RpbmF0aW9uIHBhdGguXG4gKiBAcmV0dXJucyBUaGUgcmVsYXRpdmUgcGF0aCBmcm9tIGBmcm9tYCB0byBgdG9gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsYXRpdmUoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcmVzb2x2ZWRGcm9tID0gcmVzb2x2ZShmcm9tKTtcbiAgY29uc3QgcmVzb2x2ZWRUbyA9IHJlc29sdmUodG8pO1xuICBjb25zdCBmcm9tRHJpdmUgPSBXSU5ET1dTX0RSSVZFX1JFR19FWFAuZXhlYyhyZXNvbHZlZEZyb20pPy5bMF0udG9VcHBlckNhc2UoKTtcbiAgY29uc3QgdG9Ecml2ZSA9IFdJTkRPV1NfRFJJVkVfUkVHX0VYUC5leGVjKHJlc29sdmVkVG8pPy5bMF0udG9VcHBlckNhc2UoKTtcbiAgcmV0dXJuIGZyb21Ecml2ZSA9PT0gdG9Ecml2ZVxuICAgID8gcG9zaXgucmVsYXRpdmUodG9Sb290ZWRQb3NpeFBhdGgodXBwZXJDYXNlRHJpdmUocmVzb2x2ZWRGcm9tKSksIHRvUm9vdGVkUG9zaXhQYXRoKHVwcGVyQ2FzZURyaXZlKHJlc29sdmVkVG8pKSlcbiAgICA6IHJlc29sdmVkVG87XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBzZXF1ZW5jZSBvZiBwYXRocyBvciBwYXRoIHNlZ21lbnRzIGludG8gYW4gYWJzb2x1dGUgcGF0aC5cbiAqXG4gKiBAcGFyYW0gcGF0aFNlZ21lbnRzIC0gVGhlIHNlcXVlbmNlIG9mIHBhdGggc2VnbWVudHMgdG8gcmVzb2x2ZS5cbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBhYnNvbHV0ZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZSguLi5wYXRoU2VnbWVudHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgLypcbiAgICogYHBhdGgtYnJvd3NlcmlmeWAgdHJlYXRzIG9ubHkgYSBsZWFkaW5nIGAvYCBhcyBhYnNvbHV0ZSBhbmQgam9pbnMgYHByb2Nlc3MuY3dkKClgIGluIGFzIGFuIG9wYXF1ZSBzZWdtZW50LCBzbyBvblxuICAgKiBXaW5kb3dzIGEgYC4uYCBjbGltYmluZyBvdXQgb2YgdGhlIHdvcmtpbmcgZm9sZGVyIGNhbmNlbGxlZCB0aGUgd2hvbGUgYEY6XFwuLi5gIGN3ZC4gRXZlcnkgc2VnbWVudCBpcyBtYWRlIFBPU0lYXG4gICAqIGFuZCBhIGRyaXZlIHJvb3QgaXMgZ2l2ZW4gYSBsZWFkaW5nIGAvYCwgd2hpY2ggbWFrZXMgaXQgYSByb290IGBwYXRoLWJyb3dzZXJpZnlgIHVuZGVyc3RhbmRzOyB0aGUgYC9gIGlzIGRyb3BwZWRcbiAgICogYWdhaW4gYmVsb3cuXG4gICAqL1xuICBjb25zdCByb290ZWRTZWdtZW50cyA9IHBhdGhTZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IHRvUm9vdGVkUG9zaXhQYXRoKHNlZ21lbnQpKTtcbiAgaWYgKHJvb3RlZFNlZ21lbnRzLmV2ZXJ5KChzZWdtZW50KSA9PiAhc2VnbWVudC5zdGFydHNXaXRoKCcvJykpKSB7XG4gICAgcm9vdGVkU2VnbWVudHMudW5zaGlmdCh0b1Jvb3RlZFBvc2l4UGF0aChwcm9jZXNzLmN3ZCgpKSk7XG4gIH1cbiAgY29uc3QgcGF0aCA9IHBvc2l4LnJlc29sdmUoLi4ucm9vdGVkU2VnbWVudHMpO1xuICBjb25zdCBtYXRjaCA9IFdJTkRPV1NfUE9TSVhfTElLRV9QQVRIX1JFR19FWFAuZXhlYyhwYXRoKTtcbiAgcmV0dXJuIG1hdGNoPy5bMF0gPz8gcGF0aDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJ1ZmZlciBjb250YWluaW5nIGEgcGF0aCB0byBhIFBPU0lYLXN0eWxlIGJ1ZmZlciBieSByZXBsYWNpbmcgYmFja3NsYXNoZXMgd2l0aCBmb3J3YXJkIHNsYXNoZXMuXG4gKlxuICogQHBhcmFtIGJ1ZmZlciAtIFRoZSBidWZmZXIgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIEEgbmV3IGJ1ZmZlciBjb250YWluaW5nIHRoZSBQT1NJWC1zdHlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Qb3NpeEJ1ZmZlcihidWZmZXI6IEJ1ZmZlcik6IEJ1ZmZlciB7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh0b1Bvc2l4UGF0aChTdHJpbmcoYnVmZmVyKSkpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgZ2l2ZW4gcGF0aCB0byBhIFBPU0lYLXN0eWxlIHBhdGggYnkgcmVwbGFjaW5nIGJhY2tzbGFzaGVzIHdpdGggZm9yd2FyZCBzbGFzaGVzLlxuICpcbiAqIEBwYXJhbSBwYXRoIC0gVGhlIHBhdGggdG8gY29udmVydC5cbiAqIEByZXR1cm5zIFRoZSBQT1NJWC1zdHlsZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9Qb3NpeFBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmc6IHBhdGgsXG4gICAgcmVwbGFjZXI6ICcvJyxcbiAgICBzZWFyY2hWYWx1ZTogJ1xcXFwnXG4gIH0pO1xufVxuXG5mdW5jdGlvbiB0b1Jvb3RlZFBvc2l4UGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwb3NpeFBhdGggPSB0b1Bvc2l4UGF0aChwYXRoKTtcbiAgcmV0dXJuIFdJTkRPV1NfRFJJVkVfUkVHX0VYUC50ZXN0KHBvc2l4UGF0aCkgPyBgLyR7cG9zaXhQYXRofWAgOiBwb3NpeFBhdGg7XG59XG5cbmZ1bmN0aW9uIHVwcGVyQ2FzZURyaXZlKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoLnJlcGxhY2UoV0lORE9XU19EUklWRV9SRUdfRVhQLCAoZHJpdmUpID0+IGRyaXZlLnRvVXBwZXJDYXNlKCkpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBTUEsNkJBQTJCO0FBRTNCLG9CQUdPO0FBRVAsTUFBTSx3QkFBd0I7QUFDOUIsTUFBTSxrQ0FBa0M7QUFLakMsTUFBTSxRQUFRLHVCQUFBQSxRQUFlO0FBSzdCLE1BQU0sWUFBWSxNQUFNO0FBS3hCLE1BQU0sWUFBWSx1QkFBQUEsUUFBZSxNQUFNO0FBU3ZDLE1BQU0sV0FBVyxNQUFNO0FBVXZCLE1BQU0sVUFBVSxNQUFNO0FBUXRCLE1BQU0sVUFBVSxNQUFNO0FBUXRCLE1BQU0sU0FBUyxNQUFNO0FBUXJCLFNBQVMsV0FBVyxNQUF1QjtBQUNoRCxTQUFPLE1BQU0sV0FBVyxJQUFJLEtBQUssZ0NBQWdDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTTtBQUN2RjtBQVFPLE1BQU0sT0FBTyxNQUFNO0FBUW5CLE1BQU0sZ0JBQWdCLE1BQU07QUFRNUIsTUFBTSxRQUFRLE1BQU07QUF1QnBCLFNBQVMsWUFBWSxlQUErQjtBQUN6RCxTQUFPLFFBQVEsVUFBVSxJQUFJLElBQUksYUFBYSxFQUFFLFFBQVEsQ0FBQztBQUMzRDtBQVFPLFNBQVMsY0FBYyxlQUErQjtBQUMzRCxTQUFPLFFBQVEsWUFBWSxhQUFhLENBQUM7QUFDM0M7QUFTTyxTQUFTLGFBQWEsUUFBb0M7QUFDL0QsU0FBTyxPQUFPLGdCQUFnQixHQUFHLE9BQU8sWUFBWSxJQUFJLE9BQU8sYUFBYSxLQUFLLE9BQU87QUFDMUY7QUFRTyxTQUFTLG9CQUFvQixNQUFzQjtBQUN4RCxTQUFPLEtBQUssV0FBVyxHQUFHLEtBQUssS0FBSyxTQUFTLEdBQUcsSUFDNUMsV0FDQSxnQ0FBaUI7QUFBQSxJQUNqQixTQUFTO0FBQUEsSUFDVCxRQUFRO0FBQUEsRUFDVixDQUFDO0FBQ0w7QUFjTyxTQUFTLFNBQVMsTUFBYyxJQUFvQjtBQUN6RCxRQUFNLGVBQWUsUUFBUSxJQUFJO0FBQ2pDLFFBQU0sYUFBYSxRQUFRLEVBQUU7QUFDN0IsUUFBTSxZQUFZLHNCQUFzQixLQUFLLFlBQVksSUFBSSxDQUFDLEVBQUUsWUFBWTtBQUM1RSxRQUFNLFVBQVUsc0JBQXNCLEtBQUssVUFBVSxJQUFJLENBQUMsRUFBRSxZQUFZO0FBQ3hFLFNBQU8sY0FBYyxVQUNqQixNQUFNLFNBQVMsa0JBQWtCLGVBQWUsWUFBWSxDQUFDLEdBQUcsa0JBQWtCLGVBQWUsVUFBVSxDQUFDLENBQUMsSUFDN0c7QUFDTjtBQVFPLFNBQVMsV0FBVyxjQUFnQztBQU96RCxRQUFNLGlCQUFpQixhQUFhLElBQUksQ0FBQyxZQUFZLGtCQUFrQixPQUFPLENBQUM7QUFDL0UsTUFBSSxlQUFlLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxXQUFXLEdBQUcsQ0FBQyxHQUFHO0FBQy9ELG1CQUFlLFFBQVEsa0JBQWtCLFFBQVEsSUFBSSxDQUFDLENBQUM7QUFBQSxFQUN6RDtBQUNBLFFBQU0sT0FBTyxNQUFNLFFBQVEsR0FBRyxjQUFjO0FBQzVDLFFBQU0sUUFBUSxnQ0FBZ0MsS0FBSyxJQUFJO0FBQ3ZELFNBQU8sUUFBUSxDQUFDLEtBQUs7QUFDdkI7QUFRTyxTQUFTLGNBQWMsUUFBd0I7QUFDcEQsU0FBTyxPQUFPLEtBQUssWUFBWSxPQUFPLE1BQU0sQ0FBQyxDQUFDO0FBQ2hEO0FBUU8sU0FBUyxZQUFZLE1BQXNCO0FBQ2hELGFBQU8sMEJBQVc7QUFBQSxJQUNoQixTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsSUFDVixhQUFhO0FBQUEsRUFDZixDQUFDO0FBQ0g7QUFFQSxTQUFTLGtCQUFrQixNQUFzQjtBQUMvQyxRQUFNLFlBQVksWUFBWSxJQUFJO0FBQ2xDLFNBQU8sc0JBQXNCLEtBQUssU0FBUyxJQUFJLElBQUksU0FBUyxLQUFLO0FBQ25FO0FBRUEsU0FBUyxlQUFlLE1BQXNCO0FBQzVDLFNBQU8sS0FBSyxRQUFRLHVCQUF1QixDQUFDLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFDM0U7IiwibmFtZXMiOlsicGF0aEJyb3dzZXJpZnkiXX0=
@@ -1,4 +1,5 @@
1
- /// <reference path="./library.d.cts" />
1
+ /// <reference path="./library-references.d.cts" />
2
+ /// <reference types="node" />
2
3
  /**
3
4
  * @file
4
5
  *
@@ -3,64 +3,6 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
- function ensureBrowserProcess() {
13
- const browserProcess = {
14
- browser: true,
15
- cwd() {
16
- return '/';
17
- },
18
- env: {},
19
- platform: 'android'
20
- };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
- const existingProcess = globalThis.process;
24
-
25
- if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
- globalThis.process = browserProcess;
28
- return;
29
- }
30
-
31
- if (existingProcess.versions?.node) {
32
- return;
33
- }
34
-
35
- const existingProcessRecord = existingProcess;
36
-
37
- for (const [key, value] of Object.entries(browserProcess)) {
38
- existingProcessRecord[key] ??= value;
39
- }
40
-
41
- existingProcessRecord['browser'] = true;
42
- }
43
-
44
- function keepName($unknown) {
45
- return $unknown;
46
- }
47
-
48
- (function initCjs() {
49
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
- const globalThisRecord = globalThis;
51
- ensureDisposeSymbols();
52
- globalThisRecord['__name'] ??= keepName;
53
- globalThisRecord['__extractDefault'] ??= extractDefault;
54
-
55
- ensureBrowserProcess();
56
-
57
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
- function extractDefault(module) {
59
- return module && module.__esModule && 'default' in module ? module.default : module;
60
- }
61
- })();
62
- })();
63
-
64
6
  "use strict";
65
7
  var __defProp = Object.defineProperty;
66
8
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -251,4 +193,4 @@ function oneOf(regExps, strategy = "Throw" /* Throw */) {
251
193
  isValidRegExp,
252
194
  oneOf
253
195
  });
254
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlZy1leHAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVndWxhciBleHByZXNzaW9ucy5cbiAqL1xuXG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGFzc2VydE5ldmVyLFxuICBlbnN1cmVOb25OdWxsYWJsZVxufSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuLyoqXG4gKiBBIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIG1lcmdpbmcgbXVsdGlwbGUgcmVnZXggZmxhZ3MgaW50byBvbmUgYWx0ZXJuYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIEtlZXAgb25seSB0aGUgZmxhZ3MgcHJlc2VudCBpbiBhbGwgcmVnZXhlcy5cbiAgICovXG4gIEludGVyc2VjdCA9ICdJbnRlcnNlY3QnLFxuICAvKipcbiAgICogVGhyb3cgYW4gZXJyb3IgaWYgdGhlIHJlZ2V4ZXMgaGF2ZSBjb25mbGljdGluZyBmbGFncy5cbiAgICovXG4gIFRocm93ID0gJ1Rocm93JyxcbiAgLyoqXG4gICAqIEtlZXAgb25seSB0aGUgZmxhZ3MgcHJlc2VudCBpbiBhbnkgcmVnZXguXG4gICAqL1xuICBVbmlvbiA9ICdVbmlvbidcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZyB0byBzYWZlbHkgdXNlIGl0IHdpdGhpbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHByZWZpeGVkIHdpdGggYSBiYWNrc2xhc2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gTk9URTogV2UgY2FuJ3QgdXNlIGByZXBsYWNlQWxsKClgIGZyb20gYFN0cmluZy50c2AgaGVyZSBiZWNhdXNlIGl0IGludHJvZHVjZXMgYSBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICByZXR1cm4gJHN0cmluZy5yZXBsYWNlQWxsKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgU3RyaW5nLnJhd2BcXCQmYCk7XG59XG5cbi8qKlxuICogUmVhZHMgYSBtYW5kYXRvcnkgbmFtZWQgY2FwdHVyZSBncm91cCBmcm9tIGEgcmVnZXggbWF0Y2guXG4gKlxuICogVXNlIHRoaXMgZm9yIGEgbmFtZWQgZ3JvdXAgdGhhdCBpcyBBTFdBWVMgcHJlc2VudCB3aGVuIHRoZSBwYXR0ZXJuIG1hdGNoZXMgXHUyMDE0IG5vdCB3cmFwcGVkIGluIGFuIG9wdGlvbmFsXG4gKiBgKD86XHUyMDI2KT9gIC8gYChcdTIwMjYpP2AuIFJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZyAod2hpY2ggbWF5IGJlIGAnJ2AgZm9yIGEgemVyby13aWR0aCBtYXRjaCBzdWNoIGFzIGBcXHcqYCksXG4gKiB0aHJvd2luZyBpZiB0aGUgZ3JvdXAgXHUyMDE0IG9yIHRoZSBtYXRjaCdzIGBncm91cHNgIG9iamVjdCBcdTIwMTQgaXMgYWJzZW50LCBzbyBhIHBhdHRlcm4gY2hhbmdlIHRoYXQgZHJvcHMgdGhlXG4gKiBncm91cCBmYWlscyBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSB5aWVsZGluZyBhIHdyb25nIHZhbHVlLlxuICpcbiAqIFByZWZlciB0aGlzIG92ZXIgYG1hdGNoLmdyb3Vwcz8uW25hbWVdID8/ICcnYDogZm9yIGEgbWFuZGF0b3J5IGdyb3VwIHRoYXQgZmFsbGJhY2sgaXMgYSBuZXZlci10YWtlbiAoZGVhZClcbiAqIGJyYW5jaCB0aGF0IGZhaWxzIGEgMTAwJS1icmFuY2ggY292ZXJhZ2UgZ2F0ZSwgd2hlcmVhcyB0aGUgdGhyb3cgaGVyZSBsaXZlcyBpbnNpZGUgYGVuc3VyZU5vbk51bGxhYmxlYFxuICogKGFscmVhZHkgY292ZXJlZCksIGxlYXZpbmcgbm8gaW5saW5lIGJyYW5jaCBhdCB0aGUgY2FsbCBzaXRlLiBGb3IgYSBncm91cCB0aGF0IG1heSBsZWdpdGltYXRlbHkgYmUgYWJzZW50LFxuICogdXNlIHtAbGluayBnZXRPcHRpb25hbE5hbWVkR3JvdXB9IGFuZCBkZWZhdWx0IGl0cyBgbnVsbGAgd2l0aCBgPz8gXHUyMDI2YC5cbiAqXG4gKiBAcGFyYW0gbWF0Y2ggLSBUaGUgbWF0Y2ggcmV0dXJuZWQgYnkgYFJlZ0V4cC5leGVjYCwgYFN0cmluZy5tYXRjaEFsbGAsIG9yIGBTdHJpbmcubWF0Y2hgLlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjYXB0dXJlIGdyb3VwIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBUaGUgY2FwdHVyZWQgc3RyaW5nLlxuICogQHRocm93cyBXaGVuIHRoZSBuYW1lZCBncm91cCBpcyBhYnNlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYW5kYXRvcnlOYW1lZEdyb3VwKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LCBncm91cE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShnZXRPcHRpb25hbE5hbWVkR3JvdXAobWF0Y2gsIGdyb3VwTmFtZSkpO1xufVxuXG4vKipcbiAqIFJlYWRzIGFuIG9wdGlvbmFsIG5hbWVkIGNhcHR1cmUgZ3JvdXAgZnJvbSBhIHJlZ2V4IG1hdGNoLCBkaXN0aW5ndWlzaGluZyBhbiBhYnNlbnQgZ3JvdXAgZnJvbSBhIHByZXNlbnRcbiAqIGVtcHR5IG9uZS5cbiAqXG4gKiBSZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcgd2hlbiB0aGUgZ3JvdXAgcGFydGljaXBhdGVkIGluIHRoZSBtYXRjaCBcdTIwMTQgd2hpY2ggbWF5IGJlIGAnJ2AgZm9yIGEgemVyby13aWR0aFxuICogbWF0Y2ggc3VjaCBhcyBgXFx3KmAgXHUyMDE0IG9yIGBudWxsYCB3aGVuIHRoZSBncm91cCwgb3IgdGhlIG1hdGNoJ3MgYGdyb3Vwc2Agb2JqZWN0LCBpcyBhYnNlbnQgKGUuZy4gYW4gb3B0aW9uYWxcbiAqIGAoPzpcdTIwMjYpP2AgZ3JvdXAgdGhhdCBkaWQgbm90IG1hdGNoKS4gQmVjYXVzZSBgbnVsbGAgaXMgcmV0dXJuZWQgb25seSBmb3IgYSBnZW51aW5lbHktYWJzZW50IGdyb3VwLCBhXG4gKiBjYWxsZXIncyBgPz8gPGRlZmF1bHQ+YCBpcyBhIGxpdmUgYnJhbmNoIHJhdGhlciB0aGFuIHRoZSBkZWFkIG9uZSB0aGF0IGBtYXRjaC5ncm91cHM/LltuYW1lXSA/PyAnJ2AgbGVhdmVzXG4gKiBmb3IgYSBtYW5kYXRvcnkgZ3JvdXAuIEZvciBhIGdyb3VwIHRoYXQgbXVzdCBhbHdheXMgYmUgcHJlc2VudCwgdXNlIHtAbGluayBnZXRNYW5kYXRvcnlOYW1lZEdyb3VwfS5cbiAqXG4gKiBAcGFyYW0gbWF0Y2ggLSBUaGUgbWF0Y2ggcmV0dXJuZWQgYnkgYFJlZ0V4cC5leGVjYCwgYFN0cmluZy5tYXRjaEFsbGAsIG9yIGBTdHJpbmcubWF0Y2hgLlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjYXB0dXJlIGdyb3VwIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBUaGUgY2FwdHVyZWQgc3RyaW5nLCBvciBgbnVsbGAgd2hlbiB0aGUgZ3JvdXAgaXMgYWJzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3B0aW9uYWxOYW1lZEdyb3VwKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LCBncm91cE5hbWU6IHN0cmluZyk6IG51bGwgfCBzdHJpbmcge1xuICByZXR1cm4gbWF0Y2guZ3JvdXBzPy5bZ3JvdXBOYW1lXSA/PyBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0cmluZyBpcyBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmVnRXhwKCRzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIG5ldyBSZWdFeHAoJHN0cmluZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNGbGFnKHJlZ0V4cDogUmVnRXhwLCBmbGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlZ0V4cC5mbGFncy5pbmNsdWRlcyhmbGFnKTtcbn1cblxuLyoqXG4gKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IGFsd2F5cyBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgQUxXQVlTX01BVENIX1JFR19FWFAgPSAvKD86KS87XG5cbi8qKlxuICogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBuZXZlciBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgTkVWRVJfTUFUQ0hfUkVHX0VYUCA9IC8uXi87XG5cbi8qKlxuICogTWVyZ2VzIHRoZSBmbGFncyBvZiBtdWx0aXBsZSByZWdleGVzIGludG8gYSBzaW5nbGUgZmxhZyBzdHJpbmcsIGFwcGx5aW5nIGEgY29uZmxpY3Qgc3RyYXRlZ3kuXG4gKlxuICogVGhlIGNvb3BlcmF0aW5nIHBlci1mbGFnIGhlbHBlcnMgc2hhcmUgdGhlIHNhbWUgcmVnZXhlcywgc3RyYXRlZ3ksIGFuZCBhY2N1bXVsYXRlZCBmbGFnIHNldCwgc29cbiAqIHRoZXkgYXJlIGdyb3VwZWQgaGVyZSBhcyBtZXRob2RzIG92ZXIgdGhvc2UgZmllbGRzIHJhdGhlciB0aGFuIHRocmVhZGluZyB0aGUgc3RhdGUgdGhyb3VnaFxuICogcG9zaXRpb25hbCBhcmd1bWVudHMuXG4gKi9cbmNsYXNzIFJlZ0V4cEZsYWdNZXJnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbmFsRmxhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtZXJnZXIuXG4gICAqXG4gICAqIEBwYXJhbSByZWdFeHBzIC0gVGhlIHJlZ2V4ZXMgd2hvc2UgZmxhZ3MgYXJlIG1lcmdlZC5cbiAgICogQHBhcmFtIHN0cmF0ZWd5IC0gVGhlIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGZsYWdzIGNvbmZsaWN0LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVnRXhwczogUmVnRXhwW10sIHByaXZhdGUgcmVhZG9ubHkgc3RyYXRlZ3k6IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5KSB7fVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbWVyZ2VkIGZsYWcgc3RyaW5nIGZvciB0aGUgY29uZmlndXJlZCByZWdleGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbWVyZ2VkIGZsYWdzIGpvaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBjb21wdXRlRmxhZ3MoKTogc3RyaW5nIHtcbiAgICB0aGlzLmFkZFNlbWFudGljRmxhZ3MoKTtcbiAgICB0aGlzLmFkZFVuaWNvZGVGbGFncygpO1xuICAgIHRoaXMuYWRkTWV0YUZsYWdzKCk7XG4gICAgcmV0dXJuIFsuLi50aGlzLmZpbmFsRmxhZ3NdLmpvaW4oJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRNZXRhRmxhZ3MoKTogdm9pZCB7XG4gICAgY29uc3QgTUVUQV9GTEFHUyA9IFsnZycsICdkJ107XG4gICAgZm9yIChjb25zdCBmbGFnIG9mIE1FVEFfRkxBR1MpIHtcbiAgICAgIGlmICh0aGlzLnJlZ0V4cHMuc29tZSgocmVnRXhwKSA9PiBoYXNGbGFnKHJlZ0V4cCwgZmxhZykpKSB7XG4gICAgICAgIHRoaXMuZmluYWxGbGFncy5hZGQoZmxhZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRTZW1hbnRpY0ZsYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IFNFTUFOVElDX0ZMQUdTID0gWydpJywgJ20nLCAncycsICd5J107XG4gICAgZm9yIChjb25zdCBmbGFnIG9mIFNFTUFOVElDX0ZMQUdTKSB7XG4gICAgICBpZiAodGhpcy5zaG91bGRQaWNrRmxhZyhmbGFnKSkge1xuICAgICAgICB0aGlzLmZpbmFsRmxhZ3MuYWRkKGZsYWcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkVW5pY29kZUZsYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvdW50VSA9IHRoaXMucmVnRXhwcy5maWx0ZXIoKHJlZ0V4cCkgPT4gaGFzRmxhZyhyZWdFeHAsICd1JykpLmxlbmd0aDtcbiAgICBjb25zdCBjb3VudFYgPSB0aGlzLnJlZ0V4cHMuZmlsdGVyKChyZWdFeHApID0+IGhhc0ZsYWcocmVnRXhwLCAndicpKS5sZW5ndGg7XG5cbiAgICBsZXQgc2hvdWxkVXNlVUZsYWc6IGJvb2xlYW47XG4gICAgbGV0IHNob3VsZFVzZVZGbGFnOiBib29sZWFuO1xuXG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIHY4IGNvdW50cyB0aGUgaW1wbGljaXQgZGVmYXVsdCBicmFuY2ggYXMgdW5jb3ZlcmVkIGV2ZW4gd2hlbiBhbGwgZW51bSBjYXNlcyBhcmUgaGFuZGxlZC4gKi9cbiAgICBzd2l0Y2ggKHRoaXMuc3RyYXRlZ3kpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjYXNlIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LkludGVyc2VjdDoge1xuICAgICAgICBzaG91bGRVc2VVRmxhZyA9IGNvdW50VSA9PT0gdGhpcy5yZWdFeHBzLmxlbmd0aDtcbiAgICAgICAgc2hvdWxkVXNlVkZsYWcgPSBjb3VudFYgPT09IHRoaXMucmVnRXhwcy5sZW5ndGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvdzoge1xuICAgICAgICBjb25zdCBoYXZlQWxsVUZsYWcgPSBjb3VudFUgPT09IHRoaXMucmVnRXhwcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGhhdmVOb1VGbGFnID0gY291bnRVID09PSAwO1xuICAgICAgICBjb25zdCBoYXZlQWxsVkZsYWcgPSBjb3VudFYgPT09IHRoaXMucmVnRXhwcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGhhdmVOb1ZGbGFnID0gY291bnRWID09PSAwO1xuXG4gICAgICAgIGlmICghKGhhdmVBbGxVRmxhZyB8fCBoYXZlTm9VRmxhZykgfHwgIShoYXZlQWxsVkZsYWcgfHwgaGF2ZU5vVkZsYWcpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25mbGljdGluZyBcXCd1XFwnL1xcJ3ZcXCcgZmxhZ3MgYWNyb3NzIHBhdHRlcm5zLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvdWxkVXNlVUZsYWcgPSBoYXZlQWxsVUZsYWc7XG4gICAgICAgIHNob3VsZFVzZVZGbGFnID0gaGF2ZUFsbFZGbGFnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVW5pb246IHtcbiAgICAgICAgc2hvdWxkVXNlVUZsYWcgPSBjb3VudFUgPiAwO1xuICAgICAgICBzaG91bGRVc2VWRmxhZyA9IGNvdW50ViA+IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQuICovXG4gICAgICAgIGFzc2VydE5ldmVyKHRoaXMuc3RyYXRlZ3kpO1xuICAgICAgfVxuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIH1cblxuICAgIGlmIChzaG91bGRVc2VVRmxhZyAmJiBzaG91bGRVc2VWRmxhZykge1xuICAgICAgYXNzZXJ0KHRoaXMuc3RyYXRlZ3kgIT09IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LlRocm93LCAnQ2Fubm90IGNvbWJpbmUgYm90aCBcXCd1XFwnL1xcJ3ZcXCcgZmxhZ3MgaW4gb25lIFJlZ0V4cC4nKTtcbiAgICAgIHNob3VsZFVzZVVGbGFnID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFVzZVVGbGFnKSB7XG4gICAgICB0aGlzLmZpbmFsRmxhZ3MuYWRkKCd1Jyk7XG4gICAgfVxuICAgIGlmIChzaG91bGRVc2VWRmxhZykge1xuICAgICAgdGhpcy5maW5hbEZsYWdzLmFkZCgndicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkUGlja0ZsYWcoZmxhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY291bnQgPSB0aGlzLnJlZ0V4cHMuZmlsdGVyKChyZWdFeHApID0+IGhhc0ZsYWcocmVnRXhwLCBmbGFnKSkubGVuZ3RoO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCBjb3VudHMgdGhlIGltcGxpY2l0IGRlZmF1bHQgYnJhbmNoIGFzIHVuY292ZXJlZCBldmVuIHdoZW4gYWxsIGVudW0gY2FzZXMgYXJlIGhhbmRsZWQuICovXG4gICAgc3dpdGNoICh0aGlzLnN0cmF0ZWd5KSB7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5JbnRlcnNlY3Q6IHtcbiAgICAgICAgcmV0dXJuIGNvdW50ID09PSB0aGlzLnJlZ0V4cHMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvdzoge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVW5pb246IHtcbiAgICAgICAgcmV0dXJuIGNvdW50ID4gMDtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgICBhc3NlcnROZXZlcih0aGlzLnN0cmF0ZWd5KTtcbiAgICAgIH1cbiAgICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICB9XG5cbiAgICBjb25zdCBoYXZlQWxsU2FtZUZsYWcgPSBjb3VudCA9PT0gMCB8fCBjb3VudCA9PT0gdGhpcy5yZWdFeHBzLmxlbmd0aDtcbiAgICBpZiAoIWhhdmVBbGxTYW1lRmxhZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25mbGljdGluZyBmbGFnICcke2ZsYWd9JyBhY3Jvc3MgcGF0dGVybnMuYCk7XG4gICAgfVxuICAgIHJldHVybiBjb3VudCA9PT0gdGhpcy5yZWdFeHBzLmxlbmd0aDtcbiAgfVxufVxuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgcmVnZXhlcyBpbnRvIG9uZSBhbHRlcm5hdGlvbiwgaGFuZGxpbmcgZmxhZ3MuXG4gKlxuICogQHBhcmFtIHJlZ0V4cHMgLSBUaGUgcmVnZXhlcyB0byBjb21iaW5lLlxuICogQHBhcmFtIHN0cmF0ZWd5IC0gVGhlIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIG1lcmdpbmcgZmxhZ3MgKGRlZmF1bHQ6IGBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvd2ApLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIHJlZ2V4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gb25lT2YoXG4gIHJlZ0V4cHM6IFJlZ0V4cFtdLFxuICBzdHJhdGVneTogUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kgPSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvd1xuKTogUmVnRXhwIHtcbiAgaWYgKHJlZ0V4cHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEFMV0FZU19NQVRDSF9SRUdfRVhQO1xuICB9XG5cbiAgaWYgKHJlZ0V4cHMubGVuZ3RoID09PSAxICYmIHJlZ0V4cHNbMF0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZWdFeHBzWzBdO1xuICB9XG5cbiAgY29uc3Qgc291cmNlID0gcmVnRXhwcy5tYXAoKHJlZ0V4cCkgPT4gYCg/OiR7cmVnRXhwLnNvdXJjZX0pYCkuam9pbignfCcpO1xuICBjb25zdCBmbGFncyA9IG5ldyBSZWdFeHBGbGFnTWVyZ2VyKHJlZ0V4cHMsIHN0cmF0ZWd5KS5jb21wdXRlRmxhZ3MoKTtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoc291cmNlLCBmbGFncyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSx5QkFJTztBQUtBLElBQUssbUNBQUwsa0JBQUtBLHNDQUFMO0FBSUwsRUFBQUEsa0NBQUEsZUFBWTtBQUlaLEVBQUFBLGtDQUFBLFdBQVE7QUFJUixFQUFBQSxrQ0FBQSxXQUFRO0FBWkUsU0FBQUE7QUFBQSxHQUFBO0FBcUJMLFNBQVMsYUFBYSxTQUF5QjtBQUVwRCxTQUFPLFFBQVEsV0FBVyx1QkFBdUIsT0FBTyxRQUFRO0FBQ2xFO0FBb0JPLFNBQVMsdUJBQXVCLE9BQXlCLFdBQTJCO0FBQ3pGLGFBQU8sc0NBQWtCLHNCQUFzQixPQUFPLFNBQVMsQ0FBQztBQUNsRTtBQWdCTyxTQUFTLHNCQUFzQixPQUF5QixXQUFrQztBQUMvRixTQUFPLE1BQU0sU0FBUyxTQUFTLEtBQUs7QUFDdEM7QUFRTyxTQUFTLGNBQWMsU0FBMEI7QUFDdEQsTUFBSTtBQUNGLFFBQUksT0FBTyxPQUFPO0FBQ2xCLFdBQU87QUFBQSxFQUNULFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsU0FBUyxRQUFRLFFBQWdCLE1BQXVCO0FBQ3RELFNBQU8sT0FBTyxNQUFNLFNBQVMsSUFBSTtBQUNuQztBQUtPLE1BQU0sdUJBQXVCO0FBSzdCLE1BQU0sc0JBQXNCO0FBU25DLE1BQU0saUJBQWlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTZCxZQUE2QixTQUFvQyxVQUE0QztBQUFoRjtBQUFvQztBQUFBLEVBQTZDO0FBQUEsRUFBakY7QUFBQSxFQUFvQztBQUFBLEVBUnZELGFBQWEsb0JBQUksSUFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWV2QyxlQUF1QjtBQUM1QixTQUFLLGlCQUFpQjtBQUN0QixTQUFLLGdCQUFnQjtBQUNyQixTQUFLLGFBQWE7QUFDbEIsV0FBTyxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUUsS0FBSyxFQUFFO0FBQUEsRUFDckM7QUFBQSxFQUVRLGVBQXFCO0FBQzNCLFVBQU0sYUFBYSxDQUFDLEtBQUssR0FBRztBQUM1QixlQUFXLFFBQVEsWUFBWTtBQUM3QixVQUFJLEtBQUssUUFBUSxLQUFLLENBQUMsV0FBVyxRQUFRLFFBQVEsSUFBSSxDQUFDLEdBQUc7QUFDeEQsYUFBSyxXQUFXLElBQUksSUFBSTtBQUFBLE1BQzFCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUVRLG1CQUF5QjtBQUMvQixVQUFNLGlCQUFpQixDQUFDLEtBQUssS0FBSyxLQUFLLEdBQUc7QUFDMUMsZUFBVyxRQUFRLGdCQUFnQjtBQUNqQyxVQUFJLEtBQUssZUFBZSxJQUFJLEdBQUc7QUFDN0IsYUFBSyxXQUFXLElBQUksSUFBSTtBQUFBLE1BQzFCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUVRLGtCQUF3QjtBQUM5QixVQUFNLFNBQVMsS0FBSyxRQUFRLE9BQU8sQ0FBQyxXQUFXLFFBQVEsUUFBUSxHQUFHLENBQUMsRUFBRTtBQUNyRSxVQUFNLFNBQVMsS0FBSyxRQUFRLE9BQU8sQ0FBQyxXQUFXLFFBQVEsUUFBUSxHQUFHLENBQUMsRUFBRTtBQUVyRSxRQUFJO0FBQ0osUUFBSTtBQUdKLFlBQVEsS0FBSyxVQUFVO0FBQUE7QUFBQSxNQUVyQixLQUFLLDZCQUE0QztBQUMvQyx5QkFBaUIsV0FBVyxLQUFLLFFBQVE7QUFDekMseUJBQWlCLFdBQVcsS0FBSyxRQUFRO0FBQ3pDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsS0FBSyxxQkFBd0M7QUFDM0MsY0FBTSxlQUFlLFdBQVcsS0FBSyxRQUFRO0FBQzdDLGNBQU0sY0FBYyxXQUFXO0FBQy9CLGNBQU0sZUFBZSxXQUFXLEtBQUssUUFBUTtBQUM3QyxjQUFNLGNBQWMsV0FBVztBQUUvQixZQUFJLEVBQUUsZ0JBQWdCLGdCQUFnQixFQUFFLGdCQUFnQixjQUFjO0FBQ3BFLGdCQUFNLElBQUksTUFBTSw0Q0FBZ0Q7QUFBQSxRQUNsRTtBQUVBLHlCQUFpQjtBQUNqQix5QkFBaUI7QUFDakI7QUFBQSxNQUNGO0FBQUEsTUFDQSxLQUFLLHFCQUF3QztBQUMzQyx5QkFBaUIsU0FBUztBQUMxQix5QkFBaUIsU0FBUztBQUMxQjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLFNBQVM7QUFFUCw0Q0FBWSxLQUFLLFFBQVE7QUFBQSxNQUMzQjtBQUFBLElBRUY7QUFFQSxRQUFJLGtCQUFrQixnQkFBZ0I7QUFDcEMscUNBQU8sS0FBSyxhQUFhLHFCQUF3QyxrREFBc0Q7QUFDdkgsdUJBQWlCO0FBQUEsSUFDbkI7QUFFQSxRQUFJLGdCQUFnQjtBQUNsQixXQUFLLFdBQVcsSUFBSSxHQUFHO0FBQUEsSUFDekI7QUFDQSxRQUFJLGdCQUFnQjtBQUNsQixXQUFLLFdBQVcsSUFBSSxHQUFHO0FBQUEsSUFDekI7QUFBQSxFQUNGO0FBQUEsRUFFUSxlQUFlLE1BQXVCO0FBQzVDLFVBQU0sUUFBUSxLQUFLLFFBQVEsT0FBTyxDQUFDLFdBQVcsUUFBUSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBRXJFLFlBQVEsS0FBSyxVQUFVO0FBQUE7QUFBQSxNQUVyQixLQUFLLDZCQUE0QztBQUMvQyxlQUFPLFVBQVUsS0FBSyxRQUFRO0FBQUEsTUFDaEM7QUFBQSxNQUNBLEtBQUsscUJBQXdDO0FBQzNDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsS0FBSyxxQkFBd0M7QUFDM0MsZUFBTyxRQUFRO0FBQUEsTUFDakI7QUFBQSxNQUNBLFNBQVM7QUFFUCw0Q0FBWSxLQUFLLFFBQVE7QUFBQSxNQUMzQjtBQUFBLElBRUY7QUFFQSxVQUFNLGtCQUFrQixVQUFVLEtBQUssVUFBVSxLQUFLLFFBQVE7QUFDOUQsUUFBSSxDQUFDLGlCQUFpQjtBQUNwQixZQUFNLElBQUksTUFBTSxxQkFBcUIsSUFBSSxvQkFBb0I7QUFBQSxJQUMvRDtBQUNBLFdBQU8sVUFBVSxLQUFLLFFBQVE7QUFBQSxFQUNoQztBQUNGO0FBU08sU0FBUyxNQUNkLFNBQ0EsV0FBNkMscUJBQ3JDO0FBQ1IsTUFBSSxRQUFRLFdBQVcsR0FBRztBQUN4QixXQUFPO0FBQUEsRUFDVDtBQUVBLE1BQUksUUFBUSxXQUFXLEtBQUssUUFBUSxDQUFDLE1BQU0sUUFBVztBQUNwRCxXQUFPLFFBQVEsQ0FBQztBQUFBLEVBQ2xCO0FBRUEsUUFBTSxTQUFTLFFBQVEsSUFBSSxDQUFDLFdBQVcsTUFBTSxPQUFPLE1BQU0sR0FBRyxFQUFFLEtBQUssR0FBRztBQUN2RSxRQUFNLFFBQVEsSUFBSSxpQkFBaUIsU0FBUyxRQUFRLEVBQUUsYUFBYTtBQUNuRSxTQUFPLElBQUksT0FBTyxRQUFRLEtBQUs7QUFDakM7IiwKICAibmFtZXMiOiBbIlJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5Il0KfQo=
196
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3JlZy1leHAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb250YWlucyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgcmVndWxhciBleHByZXNzaW9ucy5cbiAqL1xuXG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGFzc2VydE5ldmVyLFxuICBlbnN1cmVOb25OdWxsYWJsZVxufSBmcm9tICcuL3R5cGUtZ3VhcmRzLnRzJztcblxuLyoqXG4gKiBBIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIG1lcmdpbmcgbXVsdGlwbGUgcmVnZXggZmxhZ3MgaW50byBvbmUgYWx0ZXJuYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5IHtcbiAgLyoqXG4gICAqIEtlZXAgb25seSB0aGUgZmxhZ3MgcHJlc2VudCBpbiBhbGwgcmVnZXhlcy5cbiAgICovXG4gIEludGVyc2VjdCA9ICdJbnRlcnNlY3QnLFxuICAvKipcbiAgICogVGhyb3cgYW4gZXJyb3IgaWYgdGhlIHJlZ2V4ZXMgaGF2ZSBjb25mbGljdGluZyBmbGFncy5cbiAgICovXG4gIFRocm93ID0gJ1Rocm93JyxcbiAgLyoqXG4gICAqIEtlZXAgb25seSB0aGUgZmxhZ3MgcHJlc2VudCBpbiBhbnkgcmVnZXguXG4gICAqL1xuICBVbmlvbiA9ICdVbmlvbidcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHN0cmluZyB0byBzYWZlbHkgdXNlIGl0IHdpdGhpbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlLlxuICogQHJldHVybnMgVGhlIGVzY2FwZWQgc3RyaW5nIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHByZWZpeGVkIHdpdGggYSBiYWNrc2xhc2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gTk9URTogV2UgY2FuJ3QgdXNlIGByZXBsYWNlQWxsKClgIGZyb20gYFN0cmluZy50c2AgaGVyZSBiZWNhdXNlIGl0IGludHJvZHVjZXMgYSBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICByZXR1cm4gJHN0cmluZy5yZXBsYWNlQWxsKC9bLiorP14ke30oKXxbXFxdXFxcXF0vZywgU3RyaW5nLnJhd2BcXCQmYCk7XG59XG5cbi8qKlxuICogUmVhZHMgYSBtYW5kYXRvcnkgbmFtZWQgY2FwdHVyZSBncm91cCBmcm9tIGEgcmVnZXggbWF0Y2guXG4gKlxuICogVXNlIHRoaXMgZm9yIGEgbmFtZWQgZ3JvdXAgdGhhdCBpcyBBTFdBWVMgcHJlc2VudCB3aGVuIHRoZSBwYXR0ZXJuIG1hdGNoZXMgXHUyMDE0IG5vdCB3cmFwcGVkIGluIGFuIG9wdGlvbmFsXG4gKiBgKD86XHUyMDI2KT9gIC8gYChcdTIwMjYpP2AuIFJldHVybnMgdGhlIGNhcHR1cmVkIHN0cmluZyAod2hpY2ggbWF5IGJlIGAnJ2AgZm9yIGEgemVyby13aWR0aCBtYXRjaCBzdWNoIGFzIGBcXHcqYCksXG4gKiB0aHJvd2luZyBpZiB0aGUgZ3JvdXAgXHUyMDE0IG9yIHRoZSBtYXRjaCdzIGBncm91cHNgIG9iamVjdCBcdTIwMTQgaXMgYWJzZW50LCBzbyBhIHBhdHRlcm4gY2hhbmdlIHRoYXQgZHJvcHMgdGhlXG4gKiBncm91cCBmYWlscyBsb3VkbHkgaW5zdGVhZCBvZiBzaWxlbnRseSB5aWVsZGluZyBhIHdyb25nIHZhbHVlLlxuICpcbiAqIFByZWZlciB0aGlzIG92ZXIgYG1hdGNoLmdyb3Vwcz8uW25hbWVdID8/ICcnYDogZm9yIGEgbWFuZGF0b3J5IGdyb3VwIHRoYXQgZmFsbGJhY2sgaXMgYSBuZXZlci10YWtlbiAoZGVhZClcbiAqIGJyYW5jaCB0aGF0IGZhaWxzIGEgMTAwJS1icmFuY2ggY292ZXJhZ2UgZ2F0ZSwgd2hlcmVhcyB0aGUgdGhyb3cgaGVyZSBsaXZlcyBpbnNpZGUgYGVuc3VyZU5vbk51bGxhYmxlYFxuICogKGFscmVhZHkgY292ZXJlZCksIGxlYXZpbmcgbm8gaW5saW5lIGJyYW5jaCBhdCB0aGUgY2FsbCBzaXRlLiBGb3IgYSBncm91cCB0aGF0IG1heSBsZWdpdGltYXRlbHkgYmUgYWJzZW50LFxuICogdXNlIHtAbGluayBnZXRPcHRpb25hbE5hbWVkR3JvdXB9IGFuZCBkZWZhdWx0IGl0cyBgbnVsbGAgd2l0aCBgPz8gXHUyMDI2YC5cbiAqXG4gKiBAcGFyYW0gbWF0Y2ggLSBUaGUgbWF0Y2ggcmV0dXJuZWQgYnkgYFJlZ0V4cC5leGVjYCwgYFN0cmluZy5tYXRjaEFsbGAsIG9yIGBTdHJpbmcubWF0Y2hgLlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjYXB0dXJlIGdyb3VwIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBUaGUgY2FwdHVyZWQgc3RyaW5nLlxuICogQHRocm93cyBXaGVuIHRoZSBuYW1lZCBncm91cCBpcyBhYnNlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYW5kYXRvcnlOYW1lZEdyb3VwKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LCBncm91cE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShnZXRPcHRpb25hbE5hbWVkR3JvdXAobWF0Y2gsIGdyb3VwTmFtZSkpO1xufVxuXG4vKipcbiAqIFJlYWRzIGFuIG9wdGlvbmFsIG5hbWVkIGNhcHR1cmUgZ3JvdXAgZnJvbSBhIHJlZ2V4IG1hdGNoLCBkaXN0aW5ndWlzaGluZyBhbiBhYnNlbnQgZ3JvdXAgZnJvbSBhIHByZXNlbnRcbiAqIGVtcHR5IG9uZS5cbiAqXG4gKiBSZXR1cm5zIHRoZSBjYXB0dXJlZCBzdHJpbmcgd2hlbiB0aGUgZ3JvdXAgcGFydGljaXBhdGVkIGluIHRoZSBtYXRjaCBcdTIwMTQgd2hpY2ggbWF5IGJlIGAnJ2AgZm9yIGEgemVyby13aWR0aFxuICogbWF0Y2ggc3VjaCBhcyBgXFx3KmAgXHUyMDE0IG9yIGBudWxsYCB3aGVuIHRoZSBncm91cCwgb3IgdGhlIG1hdGNoJ3MgYGdyb3Vwc2Agb2JqZWN0LCBpcyBhYnNlbnQgKGUuZy4gYW4gb3B0aW9uYWxcbiAqIGAoPzpcdTIwMjYpP2AgZ3JvdXAgdGhhdCBkaWQgbm90IG1hdGNoKS4gQmVjYXVzZSBgbnVsbGAgaXMgcmV0dXJuZWQgb25seSBmb3IgYSBnZW51aW5lbHktYWJzZW50IGdyb3VwLCBhXG4gKiBjYWxsZXIncyBgPz8gPGRlZmF1bHQ+YCBpcyBhIGxpdmUgYnJhbmNoIHJhdGhlciB0aGFuIHRoZSBkZWFkIG9uZSB0aGF0IGBtYXRjaC5ncm91cHM/LltuYW1lXSA/PyAnJ2AgbGVhdmVzXG4gKiBmb3IgYSBtYW5kYXRvcnkgZ3JvdXAuIEZvciBhIGdyb3VwIHRoYXQgbXVzdCBhbHdheXMgYmUgcHJlc2VudCwgdXNlIHtAbGluayBnZXRNYW5kYXRvcnlOYW1lZEdyb3VwfS5cbiAqXG4gKiBAcGFyYW0gbWF0Y2ggLSBUaGUgbWF0Y2ggcmV0dXJuZWQgYnkgYFJlZ0V4cC5leGVjYCwgYFN0cmluZy5tYXRjaEFsbGAsIG9yIGBTdHJpbmcubWF0Y2hgLlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjYXB0dXJlIGdyb3VwIHRvIHJlYWQuXG4gKiBAcmV0dXJucyBUaGUgY2FwdHVyZWQgc3RyaW5nLCBvciBgbnVsbGAgd2hlbiB0aGUgZ3JvdXAgaXMgYWJzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3B0aW9uYWxOYW1lZEdyb3VwKG1hdGNoOiBSZWdFeHBNYXRjaEFycmF5LCBncm91cE5hbWU6IHN0cmluZyk6IG51bGwgfCBzdHJpbmcge1xuICByZXR1cm4gbWF0Y2guZ3JvdXBzPy5bZ3JvdXBOYW1lXSA/PyBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHN0cmluZyBpcyBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkUmVnRXhwKCRzdHJpbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIG5ldyBSZWdFeHAoJHN0cmluZyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYXNGbGFnKHJlZ0V4cDogUmVnRXhwLCBmbGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHJlZ0V4cC5mbGFncy5pbmNsdWRlcyhmbGFnKTtcbn1cblxuLyoqXG4gKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IGFsd2F5cyBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgQUxXQVlTX01BVENIX1JFR19FWFAgPSAvKD86KS87XG5cbi8qKlxuICogQSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBuZXZlciBtYXRjaGVzLlxuICovXG5leHBvcnQgY29uc3QgTkVWRVJfTUFUQ0hfUkVHX0VYUCA9IC8uXi87XG5cbi8qKlxuICogTWVyZ2VzIHRoZSBmbGFncyBvZiBtdWx0aXBsZSByZWdleGVzIGludG8gYSBzaW5nbGUgZmxhZyBzdHJpbmcsIGFwcGx5aW5nIGEgY29uZmxpY3Qgc3RyYXRlZ3kuXG4gKlxuICogVGhlIGNvb3BlcmF0aW5nIHBlci1mbGFnIGhlbHBlcnMgc2hhcmUgdGhlIHNhbWUgcmVnZXhlcywgc3RyYXRlZ3ksIGFuZCBhY2N1bXVsYXRlZCBmbGFnIHNldCwgc29cbiAqIHRoZXkgYXJlIGdyb3VwZWQgaGVyZSBhcyBtZXRob2RzIG92ZXIgdGhvc2UgZmllbGRzIHJhdGhlciB0aGFuIHRocmVhZGluZyB0aGUgc3RhdGUgdGhyb3VnaFxuICogcG9zaXRpb25hbCBhcmd1bWVudHMuXG4gKi9cbmNsYXNzIFJlZ0V4cEZsYWdNZXJnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbmFsRmxhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBtZXJnZXIuXG4gICAqXG4gICAqIEBwYXJhbSByZWdFeHBzIC0gVGhlIHJlZ2V4ZXMgd2hvc2UgZmxhZ3MgYXJlIG1lcmdlZC5cbiAgICogQHBhcmFtIHN0cmF0ZWd5IC0gVGhlIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIGZsYWdzIGNvbmZsaWN0LlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVnRXhwczogUmVnRXhwW10sIHByaXZhdGUgcmVhZG9ubHkgc3RyYXRlZ3k6IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5KSB7fVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyB0aGUgbWVyZ2VkIGZsYWcgc3RyaW5nIGZvciB0aGUgY29uZmlndXJlZCByZWdleGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbWVyZ2VkIGZsYWdzIGpvaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyBjb21wdXRlRmxhZ3MoKTogc3RyaW5nIHtcbiAgICB0aGlzLmFkZFNlbWFudGljRmxhZ3MoKTtcbiAgICB0aGlzLmFkZFVuaWNvZGVGbGFncygpO1xuICAgIHRoaXMuYWRkTWV0YUZsYWdzKCk7XG4gICAgcmV0dXJuIFsuLi50aGlzLmZpbmFsRmxhZ3NdLmpvaW4oJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRNZXRhRmxhZ3MoKTogdm9pZCB7XG4gICAgY29uc3QgTUVUQV9GTEFHUyA9IFsnZycsICdkJ107XG4gICAgZm9yIChjb25zdCBmbGFnIG9mIE1FVEFfRkxBR1MpIHtcbiAgICAgIGlmICh0aGlzLnJlZ0V4cHMuc29tZSgocmVnRXhwKSA9PiBoYXNGbGFnKHJlZ0V4cCwgZmxhZykpKSB7XG4gICAgICAgIHRoaXMuZmluYWxGbGFncy5hZGQoZmxhZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRTZW1hbnRpY0ZsYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IFNFTUFOVElDX0ZMQUdTID0gWydpJywgJ20nLCAncycsICd5J107XG4gICAgZm9yIChjb25zdCBmbGFnIG9mIFNFTUFOVElDX0ZMQUdTKSB7XG4gICAgICBpZiAodGhpcy5zaG91bGRQaWNrRmxhZyhmbGFnKSkge1xuICAgICAgICB0aGlzLmZpbmFsRmxhZ3MuYWRkKGZsYWcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkVW5pY29kZUZsYWdzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvdW50VSA9IHRoaXMucmVnRXhwcy5maWx0ZXIoKHJlZ0V4cCkgPT4gaGFzRmxhZyhyZWdFeHAsICd1JykpLmxlbmd0aDtcbiAgICBjb25zdCBjb3VudFYgPSB0aGlzLnJlZ0V4cHMuZmlsdGVyKChyZWdFeHApID0+IGhhc0ZsYWcocmVnRXhwLCAndicpKS5sZW5ndGg7XG5cbiAgICBsZXQgc2hvdWxkVXNlVUZsYWc6IGJvb2xlYW47XG4gICAgbGV0IHNob3VsZFVzZVZGbGFnOiBib29sZWFuO1xuXG4gICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIHY4IGNvdW50cyB0aGUgaW1wbGljaXQgZGVmYXVsdCBicmFuY2ggYXMgdW5jb3ZlcmVkIGV2ZW4gd2hlbiBhbGwgZW51bSBjYXNlcyBhcmUgaGFuZGxlZC4gKi9cbiAgICBzd2l0Y2ggKHRoaXMuc3RyYXRlZ3kpIHtcbiAgICAgIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gICAgICBjYXNlIFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LkludGVyc2VjdDoge1xuICAgICAgICBzaG91bGRVc2VVRmxhZyA9IGNvdW50VSA9PT0gdGhpcy5yZWdFeHBzLmxlbmd0aDtcbiAgICAgICAgc2hvdWxkVXNlVkZsYWcgPSBjb3VudFYgPT09IHRoaXMucmVnRXhwcy5sZW5ndGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvdzoge1xuICAgICAgICBjb25zdCBoYXZlQWxsVUZsYWcgPSBjb3VudFUgPT09IHRoaXMucmVnRXhwcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGhhdmVOb1VGbGFnID0gY291bnRVID09PSAwO1xuICAgICAgICBjb25zdCBoYXZlQWxsVkZsYWcgPSBjb3VudFYgPT09IHRoaXMucmVnRXhwcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGhhdmVOb1ZGbGFnID0gY291bnRWID09PSAwO1xuXG4gICAgICAgIGlmICghKGhhdmVBbGxVRmxhZyB8fCBoYXZlTm9VRmxhZykgfHwgIShoYXZlQWxsVkZsYWcgfHwgaGF2ZU5vVkZsYWcpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25mbGljdGluZyBcXCd1XFwnL1xcJ3ZcXCcgZmxhZ3MgYWNyb3NzIHBhdHRlcm5zLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2hvdWxkVXNlVUZsYWcgPSBoYXZlQWxsVUZsYWc7XG4gICAgICAgIHNob3VsZFVzZVZGbGFnID0gaGF2ZUFsbFZGbGFnO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVW5pb246IHtcbiAgICAgICAgc2hvdWxkVXNlVUZsYWcgPSBjb3VudFUgPiAwO1xuICAgICAgICBzaG91bGRVc2VWRmxhZyA9IGNvdW50ViA+IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gRXhoYXVzdGl2ZSBzd2l0Y2ggZ3VhcmQuICovXG4gICAgICAgIGFzc2VydE5ldmVyKHRoaXMuc3RyYXRlZ3kpO1xuICAgICAgfVxuICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgIH1cblxuICAgIGlmIChzaG91bGRVc2VVRmxhZyAmJiBzaG91bGRVc2VWRmxhZykge1xuICAgICAgYXNzZXJ0KHRoaXMuc3RyYXRlZ3kgIT09IFJlZ0V4cE1lcmdlRmxhZ3NDb25mbGljdFN0cmF0ZWd5LlRocm93LCAnQ2Fubm90IGNvbWJpbmUgYm90aCBcXCd1XFwnL1xcJ3ZcXCcgZmxhZ3MgaW4gb25lIFJlZ0V4cC4nKTtcbiAgICAgIHNob3VsZFVzZVVGbGFnID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFVzZVVGbGFnKSB7XG4gICAgICB0aGlzLmZpbmFsRmxhZ3MuYWRkKCd1Jyk7XG4gICAgfVxuICAgIGlmIChzaG91bGRVc2VWRmxhZykge1xuICAgICAgdGhpcy5maW5hbEZsYWdzLmFkZCgndicpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkUGlja0ZsYWcoZmxhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY291bnQgPSB0aGlzLnJlZ0V4cHMuZmlsdGVyKChyZWdFeHApID0+IGhhc0ZsYWcocmVnRXhwLCBmbGFnKSkubGVuZ3RoO1xuICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCBjb3VudHMgdGhlIGltcGxpY2l0IGRlZmF1bHQgYnJhbmNoIGFzIHVuY292ZXJlZCBldmVuIHdoZW4gYWxsIGVudW0gY2FzZXMgYXJlIGhhbmRsZWQuICovXG4gICAgc3dpdGNoICh0aGlzLnN0cmF0ZWd5KSB7XG4gICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5JbnRlcnNlY3Q6IHtcbiAgICAgICAgcmV0dXJuIGNvdW50ID09PSB0aGlzLnJlZ0V4cHMubGVuZ3RoO1xuICAgICAgfVxuICAgICAgY2FzZSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvdzoge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kuVW5pb246IHtcbiAgICAgICAgcmV0dXJuIGNvdW50ID4gMDtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgLyogdjggaWdub3JlIHN0YXJ0IC0tIEV4aGF1c3RpdmUgc3dpdGNoIGd1YXJkLiAqL1xuICAgICAgICBhc3NlcnROZXZlcih0aGlzLnN0cmF0ZWd5KTtcbiAgICAgIH1cbiAgICAgICAgLyogdjggaWdub3JlIHN0b3AgKi9cbiAgICB9XG5cbiAgICBjb25zdCBoYXZlQWxsU2FtZUZsYWcgPSBjb3VudCA9PT0gMCB8fCBjb3VudCA9PT0gdGhpcy5yZWdFeHBzLmxlbmd0aDtcbiAgICBpZiAoIWhhdmVBbGxTYW1lRmxhZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25mbGljdGluZyBmbGFnICcke2ZsYWd9JyBhY3Jvc3MgcGF0dGVybnMuYCk7XG4gICAgfVxuICAgIHJldHVybiBjb3VudCA9PT0gdGhpcy5yZWdFeHBzLmxlbmd0aDtcbiAgfVxufVxuXG4vKipcbiAqIENvbWJpbmUgbXVsdGlwbGUgcmVnZXhlcyBpbnRvIG9uZSBhbHRlcm5hdGlvbiwgaGFuZGxpbmcgZmxhZ3MuXG4gKlxuICogQHBhcmFtIHJlZ0V4cHMgLSBUaGUgcmVnZXhlcyB0byBjb21iaW5lLlxuICogQHBhcmFtIHN0cmF0ZWd5IC0gVGhlIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIG1lcmdpbmcgZmxhZ3MgKGRlZmF1bHQ6IGBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvd2ApLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIHJlZ2V4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gb25lT2YoXG4gIHJlZ0V4cHM6IFJlZ0V4cFtdLFxuICBzdHJhdGVneTogUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kgPSBSZWdFeHBNZXJnZUZsYWdzQ29uZmxpY3RTdHJhdGVneS5UaHJvd1xuKTogUmVnRXhwIHtcbiAgaWYgKHJlZ0V4cHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEFMV0FZU19NQVRDSF9SRUdfRVhQO1xuICB9XG5cbiAgaWYgKHJlZ0V4cHMubGVuZ3RoID09PSAxICYmIHJlZ0V4cHNbMF0gIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiByZWdFeHBzWzBdO1xuICB9XG5cbiAgY29uc3Qgc291cmNlID0gcmVnRXhwcy5tYXAoKHJlZ0V4cCkgPT4gYCg/OiR7cmVnRXhwLnNvdXJjZX0pYCkuam9pbignfCcpO1xuICBjb25zdCBmbGFncyA9IG5ldyBSZWdFeHBGbGFnTWVyZ2VyKHJlZ0V4cHMsIHN0cmF0ZWd5KS5jb21wdXRlRmxhZ3MoKTtcbiAgcmV0dXJuIG5ldyBSZWdFeHAoc291cmNlLCBmbGFncyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHlCQUlPO0FBS0EsSUFBSyxtQ0FBTCxrQkFBS0Esc0NBQUw7QUFJTCxFQUFBQSxrQ0FBQSxlQUFZO0FBSVosRUFBQUEsa0NBQUEsV0FBUTtBQUlSLEVBQUFBLGtDQUFBLFdBQVE7QUFaRSxTQUFBQTtBQUFBLEdBQUE7QUFxQkwsU0FBUyxhQUFhLFNBQXlCO0FBRXBELFNBQU8sUUFBUSxXQUFXLHVCQUF1QixPQUFPLFFBQVE7QUFDbEU7QUFvQk8sU0FBUyx1QkFBdUIsT0FBeUIsV0FBMkI7QUFDekYsYUFBTyxzQ0FBa0Isc0JBQXNCLE9BQU8sU0FBUyxDQUFDO0FBQ2xFO0FBZ0JPLFNBQVMsc0JBQXNCLE9BQXlCLFdBQWtDO0FBQy9GLFNBQU8sTUFBTSxTQUFTLFNBQVMsS0FBSztBQUN0QztBQVFPLFNBQVMsY0FBYyxTQUEwQjtBQUN0RCxNQUFJO0FBQ0YsUUFBSSxPQUFPLE9BQU87QUFDbEIsV0FBTztBQUFBLEVBQ1QsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFQSxTQUFTLFFBQVEsUUFBZ0IsTUFBdUI7QUFDdEQsU0FBTyxPQUFPLE1BQU0sU0FBUyxJQUFJO0FBQ25DO0FB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QUMzQyxlQUFPLFFBQVE7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsU0FBUztBQUVQLDRDQUFZLEtBQUssUUFBUTtBQUFBLE1BQzNCO0FBQUEsSUFFRjtBQUVBLFVBQU0sa0JBQWtCLFVBQVUsS0FBSyxVQUFVLEtBQUssUUFBUTtBQUM5RCxRQUFJLENBQUMsaUJBQWlCO0FBQ3BCLFlBQU0sSUFBSSxNQUFNLHFCQUFxQixJQUFJLG9CQUFvQjtBQUFBLElBQy9EO0FBQ0EsV0FBTyxVQUFVLEtBQUssUUFBUTtBQUFBLEVBQ2hDO0FBQ0Y7QUFTTyxTQUFTLE1BQ2QsU0FDQSxXQUE2QyxxQkFDckM7QUFDUixNQUFJLFFBQVEsV0FBVyxHQUFHO0FBQ3hCLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxRQUFRLFdBQVcsS0FBSyxRQUFRLENBQUMsTUFBTSxRQUFXO0FBQ3BELFdBQU8sUUFBUSxDQUFDO0FBQUEsRUFDbEI7QUFFQSxRQUFNLFNBQVMsUUFBUSxJQUFJLENBQUMsV0FBVyxNQUFNLE9BQU8sTUFBTSxHQUFHLEVBQUUsS0FBSyxHQUFHO0FBQ3ZFLFFBQU0sUUFBUSxJQUFJLGlCQUFpQixTQUFTLFFBQVEsRUFBRSxhQUFhO0FBQ25FLFNBQU8sSUFBSSxPQUFPLFFBQVEsS0FBSztBQUNqQzsiLAogICJuYW1lcyI6IFsiUmVnRXhwTWVyZ2VGbGFnc0NvbmZsaWN0U3RyYXRlZ3kiXQp9Cg==
@@ -1,4 +1,4 @@
1
- /// <reference path="./library.d.cts" />
1
+ /// <reference path="./library-references.d.cts" />
2
2
  /**
3
3
  * @file
4
4
  *
@@ -3,64 +3,6 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
- function ensureBrowserProcess() {
13
- const browserProcess = {
14
- browser: true,
15
- cwd() {
16
- return '/';
17
- },
18
- env: {},
19
- platform: 'android'
20
- };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
- const existingProcess = globalThis.process;
24
-
25
- if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
- globalThis.process = browserProcess;
28
- return;
29
- }
30
-
31
- if (existingProcess.versions?.node) {
32
- return;
33
- }
34
-
35
- const existingProcessRecord = existingProcess;
36
-
37
- for (const [key, value] of Object.entries(browserProcess)) {
38
- existingProcessRecord[key] ??= value;
39
- }
40
-
41
- existingProcessRecord['browser'] = true;
42
- }
43
-
44
- function keepName($unknown) {
45
- return $unknown;
46
- }
47
-
48
- (function initCjs() {
49
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
- const globalThisRecord = globalThis;
51
- ensureDisposeSymbols();
52
- globalThisRecord['__name'] ??= keepName;
53
- globalThisRecord['__extractDefault'] ??= extractDefault;
54
-
55
- ensureBrowserProcess();
56
-
57
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
- function extractDefault(module) {
59
- return module && module.__esModule && 'default' in module ? module.default : module;
60
- }
61
- })();
62
- })();
63
-
64
6
  "use strict";
65
7
  var __defProp = Object.defineProperty;
66
8
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -323,4 +265,4 @@ function unindent(params) {
323
265
  unescape,
324
266
  unindent
325
267
  });
326
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBzdHJpbmcgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4vdmFsdWUtcHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9hYm9ydC1jb250cm9sbGVyLnRzJztcbmltcG9ydCB7IGVzY2FwZVJlZ0V4cCB9IGZyb20gJy4vcmVnLWV4cC50cyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi92YWx1ZS1wcm92aWRlci50cyc7XG5cbi8qKlxuICogQW4gZW1wdHkgc3RyaW5nIGNvbnN0YW50LlxuICpcbiAqIEEgc2hhcmVkIHNlbnRpbmVsIGZvciB0aGUgYCR7RU1QVFl9YCBwcmVmaXggdGhhdCBzaWxlbmNlcyB0aGUgYG9ic2lkaWFubWQvdWkvc2VudGVuY2UtY2FzZWAgRVNMaW50XG4gKiBmYWxzZSBwb3NpdGl2ZSBvbiBsZWdpdGltYXRlIGxvd2VyLWNhc2UgVUkgdGV4dCAoZS5nLiBgY3Vyc29yYCBjb2xsaWRpbmcgd2l0aCB0aGUgYEN1cnNvcmAgYnJhbmQpLlxuICogYHNldE5hbWUoYCR7RU1QVFl9Li4uYXQgY3Vyc29yLi4uYClgIHJlbmRlcnMgYnl0ZS1pZGVudGljYWwgYCcnYCBhdCBydW50aW1lIHdoaWxlIHRoZSBgey4uLn1gXG4gKiBwbGFjZWhvbGRlciBtYWtlcyB0aGUgcnVsZSBza2lwIHRoZSBzdHJpbmcuIENvbnN1bWVycyBpbXBvcnQgdGhpcyBpbnN0ZWFkIG9mIHJlZGVmaW5pbmcgYSBwZXItZmlsZVxuICogYGNvbnN0IEVNUFRZID0gJydgLlxuICovXG5leHBvcnQgY29uc3QgRU1QVFkgPSAnJztcblxuLyoqXG4gKiBBIHN5bmNocm9ub3VzL2FzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKlxuICogQHR5cGVQYXJhbSBDYXB0dXJlZEdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIEFzeW5jUmVwbGFjZXI8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cyBleHRlbmRzIHN0cmluZ1tdPiA9IFZhbHVlUHJvdmlkZXI8U3RyaW5nUmVwbGFjZW1lbnQsIFJlcGxhY2VBcmd1bWVudHM8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cz4+O1xuXG4vKipcbiAqIENvbW1vbiBhcmd1bWVudHMgZm9yIHRoZSBgcmVwbGFjZUFsbGAvYHJlcGxhY2VBbGxBc3luY2AgZnVuY3Rpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gQ2FwdHVyZWRHcm91cEFyZ3VtZW50cyAtIFRoZSB0eXBlcyBvZiB0aGUgY2FwdHVyZWQgZ3JvdXAgYXJndW1lbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VBcmd1bWVudHM8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cyBleHRlbmRzIHN0cmluZ1tdPiB7XG4gIC8qKlxuICAgKiBDYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gICAqL1xuICBjYXB0dXJlZEdyb3VwQXJndW1lbnRzOiBDYXB0dXJlZEdyb3VwQXJndW1lbnRzO1xuXG4gIC8qKlxuICAgKiBHcm91cHMgb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgZ3JvdXBzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2VzIG9mIHRoZSBncm91cHMgdGhhdCB3ZXJlIG5vdCBmb3VuZCBpbiB0aGUgbWF0Y2guXG4gICAqL1xuICBtaXNzaW5nR3JvdXBJbmRpY2VzOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQW4gb2Zmc2V0IG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIG9mZnNldDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHNvdXJjZSBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBzb3VyY2U6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdWJzdHJpbmcgb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgc3Vic3RyaW5nOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKlxuICogQHR5cGVQYXJhbSBDYXB0dXJlZEdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIFJlcGxhY2VyPENhcHR1cmVkR3JvdXBBcmd1bWVudHMgZXh0ZW5kcyBzdHJpbmdbXT4gPSAoKCRhcmd1bWVudHM6IFJlcGxhY2VBcmd1bWVudHM8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cz4pID0+IFN0cmluZ1JlcGxhY2VtZW50KSB8IFN0cmluZ1JlcGxhY2VtZW50O1xuXG50eXBlIFN0cmluZ1JlcGxhY2VtZW50ID0gTWF5YmVSZXR1cm48c3RyaW5nPjtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIHNwZWNpYWwgY2hhcmFjdGVycyB0byB0aGVpciBlc2NhcGVkIGNvdW50ZXJwYXJ0cy5cbiAqL1xuY29uc3QgRVNDQVBFX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ1xcbic6IFN0cmluZy5yYXdgXFxuYCxcbiAgJ1xccic6IFN0cmluZy5yYXdgXFxyYCxcbiAgJ1xcdCc6IFN0cmluZy5yYXdgXFx0YCxcbiAgJ1xcYic6IFN0cmluZy5yYXdgXFxiYCxcbiAgJ1xcZic6IFN0cmluZy5yYXdgXFxmYCxcbiAgJ1xcJyc6IFN0cmluZy5yYXdgXFwnYCxcbiAgJ1wiJzogU3RyaW5nLnJhd2BcXFwiYCxcbiAgJ1xcXFwnOiAnXFxcXFxcXFwnXG59IGFzIGNvbnN0O1xuXG5jb25zdCBDUiA9ICdcXHInO1xuY29uc3QgTEYgPSAnXFxuJztcbmNvbnN0IE5PVF9GT1VORF9JTkRFWCA9IC0xO1xuXG4vKipcbiAqIE1hcHBpbmcgb2YgZXNjYXBlZCBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgdW5lc2NhcGVkIGNvdW50ZXJwYXJ0cy5cbiAqL1xuY29uc3QgVU5FU0NBUEVfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5mb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhFU0NBUEVfTUFQKSkge1xuICBVTkVTQ0FQRV9NQVBbdmFsdWVdID0ga2V5O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBlbnN1cmVFbmRzV2l0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5zdXJlRW5kc1dpdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHN0cmluZyB0byBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5ICRzdHJpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1ZmZpeCB0byBlbnN1cmUuXG4gICAqL1xuICByZWFkb25seSBzdWZmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZW5zdXJlU3RhcnRzV2l0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5zdXJlU3RhcnRzV2l0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHRvIGNoZWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgJHN0cmluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHRvIGVuc3VyZS5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBoYXNTaW5nbGVPY2N1cnJlbmNlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYXNTaW5nbGVPY2N1cnJlbmNlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gICAqL1xuICByZWFkb25seSAkc3RyaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWFyY2ggdmFsdWUgdG8gY2hlY2sgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoVmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5kZW50fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmRlbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHByZWZpeCB0byBhZGQgdG8gZWFjaCBsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgdG8gaW5kZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbnNlcnRBdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0QXRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHN1YnN0cmluZyBpbnRvLlxuICAgKi9cbiAgcmVhZG9ubHkgJHN0cmluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggdG8gZW5kIHRoZSBzdWJzdHJpbmcgYXQuXG4gICAqL1xuICByZWFkb25seSBlbmRJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGluZGV4IHRvIGluc2VydCB0aGUgc3Vic3RyaW5nIGF0LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc3Vic3RyaW5nIHRvIGluc2VydC5cbiAgICovXG4gIHJlYWRvbmx5IHN1YnN0cmluZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXBsYWNlQWxsQXN5bmN9LlxuICpcbiAqIEB0eXBlUGFyYW0gUmVwbGFjZUdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUFsbEFzeW5jUGFyYW1zPFJlcGxhY2VHcm91cEFyZ3VtZW50cyBleHRlbmRzIHN0cmluZ1tdPiB7XG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgJHN0cmluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBBIHN5bmNocm9ub3VzL2FzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gICAqL1xuICByZWFkb25seSByZXBsYWNlcjogQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmd1bWVudHM+O1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVwbGFjZUFsbH0uXG4gKlxuICogQHR5cGVQYXJhbSBDYXB0dXJlZEdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUFsbFBhcmFtczxDYXB0dXJlZEdyb3VwQXJndW1lbnRzIGV4dGVuZHMgc3RyaW5nW10+IHtcbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gcGVyZm9ybSByZXBsYWNlbWVudHMuXG4gICAqL1xuICByZWFkb25seSAkc3RyaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcmVwbGFjZXIgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGFjZXI6IFJlcGxhY2VyPENhcHR1cmVkR3JvdXBBcmd1bWVudHM+O1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdHJpbUVuZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJpbUVuZFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAqL1xuICByZWFkb25seSAkc3RyaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdHJpbmcgZG9lcyBub3QgZW5kIHdpdGggdGhlIHN1ZmZpeC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVmFsaWRhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VmZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbiAgICovXG4gIHJlYWRvbmx5IHN1ZmZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB0cmltU3RhcnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaW1TdGFydFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAqL1xuICByZWFkb25seSAkc3RyaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBwcmVmaXguXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdW5pbmRlbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaW5kZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gZWFjaCBsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIGEgbGluZSBpcyBub3QgaW5kZW50ZWQgd2l0aCB0aGUgcHJlZml4LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd0lmTm90SW5kZW50ZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHRvIHVuaW5kZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIGFkZGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IGVuZHMgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRW5kc1dpdGgocGFyYW1zOiBFbnN1cmVFbmRzV2l0aFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgc3VmZml4IH0gPSBwYXJhbXM7XG4gIHJldHVybiAkc3RyaW5nLmVuZHNXaXRoKHN1ZmZpeCkgPyAkc3RyaW5nIDogJHN0cmluZyArIHN1ZmZpeDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgaGFzIGBMRmAgbGluZSBlbmRpbmdzLlxuICpcbiAqIEl0IHJlcGxhY2VzIGBDUkxGYCBsaW5lIGVuZGluZ3Mgd2l0aCBgTEZgLlxuICpcbiAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBgTEZgIGxpbmUgZW5kaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUxmRW5kaW5ncygkc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gJHN0cmluZy5yZXBsYWNlQWxsKC9cXHJcXG4/L2csICdcXG4nKTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIGFkZGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBwcmVmaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTdGFydHNXaXRoKHBhcmFtczogRW5zdXJlU3RhcnRzV2l0aFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgcHJlZml4IH0gPSBwYXJhbXM7XG4gIHJldHVybiAkc3RyaW5nLnN0YXJ0c1dpdGgocHJlZml4KSA/ICRzdHJpbmcgOiBwcmVmaXggKyAkc3RyaW5nO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2UoJHN0cmluZywgRVNDQVBFX01BUCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgbWFwcyBMRi1ub3JtYWxpemVkIG9mZnNldHMgdG8gb3JpZ2luYWwgb2Zmc2V0cy5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gZ2V0IHRoZSBMRi1ub3JtYWxpemVkIGluZGljZXMgZnJvbS5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBtYXBzIExGLW5vcm1hbGl6ZWQgb2Zmc2V0cyB0byBvcmlnaW5hbCBvZmZzZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGZOb3JtYWxpemVkT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcHBlcigkc3RyaW5nOiBzdHJpbmcpOiAobGZPZmZzZXQ6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgY29uc3QgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAkc3RyaW5nLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGlmICgkc3RyaW5nW2luZGV4XSA9PT0gQ1IgJiYgJHN0cmluZ1tpbmRleCArIDFdID09PSBMRikge1xuICAgICAgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwLnB1c2goaW5kZXggKyAxKTtcbiAgICAgIGluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5wdXNoKGluZGV4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGxmT2Zmc2V0OiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICAgIGlmIChsZk9mZnNldCA8IDApIHtcbiAgICAgIHJldHVybiBsZk9mZnNldDtcbiAgICB9XG4gICAgaWYgKGxmT2Zmc2V0ID49IGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsZk9mZnNldCAtIGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5sZW5ndGggKyAkc3RyaW5nLmxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3NlcnQobGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XSAhPT0gdW5kZWZpbmVkLCAnQ291bGQgbm90IG1hcCBvZmZzZXQnKTtcbiAgICByZXR1cm4gbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgYSBzZWFyY2ggdmFsdWUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCB2YWx1ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW5nbGVPY2N1cnJlbmNlKHBhcmFtczogSGFzU2luZ2xlT2NjdXJyZW5jZVBhcmFtcyk6IGJvb2xlYW4ge1xuICBjb25zdCB7ICRzdHJpbmcsIHNlYXJjaFZhbHVlIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZpcnN0SW5kZXggPSAkc3RyaW5nLmluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICBjb25zdCBsYXN0SW5kZXggPSAkc3RyaW5nLmxhc3RJbmRleE9mKHNlYXJjaFZhbHVlKTtcbiAgcmV0dXJuIGZpcnN0SW5kZXggIT09IE5PVF9GT1VORF9JTkRFWCAmJiBmaXJzdEluZGV4ID09PSBsYXN0SW5kZXg7XG59XG5cbi8qKlxuICogSW5kZW50cyBhIHN0cmluZyBieSBhZGRpbmcgYSBwcmVmaXggdG8gZWFjaCBsaW5lLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBpbmRlbnRlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnQocGFyYW1zOiBJbmRlbnRQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7IHByZWZpeCwgdGV4dCB9ID0gcGFyYW1zO1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBgJHtwcmVmaXh9JHtsaW5lfWApLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIEluc2VydHMgYSBzdWJzdHJpbmcgYXQgYSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIG1vZGlmaWVkIHN0cmluZyB3aXRoIHRoZSBzdWJzdHJpbmcgaW5zZXJ0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBdChwYXJhbXM6IEluc2VydEF0UGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgICRzdHJpbmcsXG4gICAgZW5kSW5kZXgsXG4gICAgc3RhcnRJbmRleCxcbiAgICBzdWJzdHJpbmdcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgZWZmZWN0aXZlRW5kSW5kZXggPSBlbmRJbmRleCA/PyBzdGFydEluZGV4O1xuICByZXR1cm4gJHN0cmluZy5zbGljZSgwLCBzdGFydEluZGV4KSArIHN1YnN0cmluZyArICRzdHJpbmcuc2xpY2UoZWZmZWN0aXZlRW5kSW5kZXgpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIGludG8gYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlIG5hbWUgYnkgcmVwbGFjaW5nIGludmFsaWQgY2hhcmFjdGVycyB3aXRoIHVuZGVyc2NvcmVzLlxuICpcbiAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHZhbGlkIHZhcmlhYmxlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVmFsaWRWYXJpYWJsZU5hbWUoJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmcsXG4gICAgcmVwbGFjZXI6ICdfJyxcbiAgICBzZWFyY2hWYWx1ZTogL1teYS16QS1aMC05X10vZ1xuICB9KTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgc3RyaW5nIGJ5IGNvbnZlcnRpbmcgaXQgdG8gdGhlIE5GQyBmb3JtIGFuZCByZXBsYWNpbmcgbm9uLWJyZWFraW5nIHNwYWNlcyB3aXRoIHJlZ3VsYXIgc3BhY2VzLlxuICpcbiAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZyB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTdHJpbmcoJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmcsXG4gICAgcmVwbGFjZXI6ICcgJyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItdW5pY29kZS1jb2RlLXBvaW50LWVzY2FwZXMgLS0gVGhlc2UgYXJlIHRoZSBjb252ZW50aW9uYWwgc3BlbGxpbmdzIGZvciBVKzAwQTAgYW5kIFUrMjAyRi4gVGhlIGNvZGUtcG9pbnQgZm9ybSBpcyBvbmx5IHVuYW1iaWd1b3VzIHdpdGggdGhlIGB1YCBmbGFnLCBzbyB0YWtpbmcgdGhlIGZpeCB3b3VsZCBhbHNvIGNoYW5nZSBob3cgdGhlIHBhdHRlcm4gaXMgcGFyc2VkLlxuICAgIHNlYXJjaFZhbHVlOiAvXFx1MDBBMHxcXHUyMDJGL2dcbiAgfSkubm9ybWFsaXplKCdORkMnKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBvY2N1cnJlbmNlcyBvZiBzdHJpbmdzIGluIGEgZ2l2ZW4gc3RyaW5nIGJhc2VkIG9uIGEgcmVwbGFjZW1lbnRzIG1hcC5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gcGVyZm9ybSByZXBsYWNlbWVudHMgb24uXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRzTWFwIC0gQW4gb2JqZWN0IG1hcHBpbmcgc3RyaW5ncyB0byB0aGVpciByZXBsYWNlbWVudCB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlKCRzdHJpbmc6IHN0cmluZywgcmVwbGFjZW1lbnRzTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhyZXBsYWNlbWVudHNNYXApLm1hcCgoc291cmNlKSA9PiBlc2NhcGVSZWdFeHAoc291cmNlKSkuam9pbignfCcpLCAnZycpO1xuICByZXR1cm4gcmVwbGFjZUFsbCh7XG4gICAgJHN0cmluZyxcbiAgICByZXBsYWNlcjogKHsgc3Vic3RyaW5nOiBzb3VyY2UgfSkgPT4gZW5zdXJlTm9uTnVsbGFibGUocmVwbGFjZW1lbnRzTWFwW3NvdXJjZV0pLFxuICAgIHNlYXJjaFZhbHVlOiByZWdFeHBcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBDYXB0dXJlZEdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggYWxsIHJlcGxhY2VtZW50cyBtYWRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUFsbDxDYXB0dXJlZEdyb3VwQXJndW1lbnRzIGV4dGVuZHMgc3RyaW5nW10+KHBhcmFtczogUmVwbGFjZUFsbFBhcmFtczxDYXB0dXJlZEdyb3VwQXJndW1lbnRzPik6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgcmVwbGFjZXIgfSA9IHBhcmFtcztcbiAgbGV0IHsgc2VhcmNoVmFsdWUgfSA9IHBhcmFtcztcbiAgaWYgKHJlcGxhY2VyID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gJHN0cmluZztcbiAgfVxuXG4gIGlmIChzZWFyY2hWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCAmJiAhc2VhcmNoVmFsdWUuZ2xvYmFsKSB7XG4gICAgc2VhcmNoVmFsdWUgPSBuZXcgUmVnRXhwKHNlYXJjaFZhbHVlLnNvdXJjZSwgYCR7c2VhcmNoVmFsdWUuZmxhZ3N9Z2ApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiByZXBsYWNlciA9PT0gJ3N0cmluZydcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby11bnNhZmUtc3RyaW5nLXJlcGxhY2VtZW50IC0tIFRoZSBwYXNzLXRocm91Z2ggaXMgbG9hZC1iZWFyaW5nOiBjYWxsZXJzIHJlbHkgb24gYCQmYCBhbmQgZnJpZW5kcyBiZWluZyBleHBhbmRlZC4gYGVzY2FwZUFsaWFzYCBwYXNzZXMgYFxcJCZgIHRvIHByZWZpeCBlYWNoIG1hdGNoZWQgY2hhcmFjdGVyIHdpdGggYSBiYWNrc2xhc2gsIGFuZCBgY2xpLXV0aWxzYCBwYXNzZXMgYF4kJmAuIEluc2VydGluZyB0aGUgc3RyaW5nIGxpdGVyYWxseSB3b3VsZCBicmVhayBib3RoLlxuICAgID8gJHN0cmluZy5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlcilcbiAgICA6ICRzdHJpbmcucmVwbGFjZUFsbChzZWFyY2hWYWx1ZSwgKHN1YnN0cmluZzogc3RyaW5nLCAuLi4kYXJndW1lbnRzOiB1bmtub3duW10pID0+IHtcbiAgICAgIGNvbnN0IFNPVVJDRV9JTkRFWF9PRkZTRVRfRk9SX0dST1VQX0FSRyA9IDI7XG4gICAgICBjb25zdCBoYXNHcm91cHNBcmd1bWVudCA9IHR5cGVvZiAkYXJndW1lbnRzLmF0KC0xKSA9PT0gJ29iamVjdCc7XG4gICAgICBjb25zdCBzb3VyY2VJbmRleCA9IGhhc0dyb3Vwc0FyZ3VtZW50ID8gJGFyZ3VtZW50cy5sZW5ndGggLSBTT1VSQ0VfSU5ERVhfT0ZGU0VUX0ZPUl9HUk9VUF9BUkcgOiAkYXJndW1lbnRzLmxlbmd0aCAtIDE7XG5cbiAgICAgIGNvbnN0IHJlcGxhY2VBcmd1bWVudHM6IFJlcGxhY2VBcmd1bWVudHM8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cz4gPSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheCAtLSBDYW4ndCBhdm9pZC5cbiAgICAgICAgY2FwdHVyZWRHcm91cEFyZ3VtZW50czogW10gYXMgdW5rbm93bltdIGFzIENhcHR1cmVkR3JvdXBBcmd1bWVudHMsXG4gICAgICAgIGdyb3VwczogaGFzR3JvdXBzQXJndW1lbnQgPyAkYXJndW1lbnRzLmF0KC0xKSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IDogdW5kZWZpbmVkLFxuICAgICAgICBtaXNzaW5nR3JvdXBJbmRpY2VzOiBbXSxcbiAgICAgICAgb2Zmc2V0OiAkYXJndW1lbnRzLmF0KHNvdXJjZUluZGV4IC0gMSkgYXMgbnVtYmVyLFxuICAgICAgICBzb3VyY2U6ICRhcmd1bWVudHMuYXQoc291cmNlSW5kZXgpIGFzIHN0cmluZyxcbiAgICAgICAgc3Vic3RyaW5nXG4gICAgICB9O1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc291cmNlSW5kZXggLSAxOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSAkYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJlcGxhY2VBcmd1bWVudHMuY2FwdHVyZWRHcm91cEFyZ3VtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCB0cmFja3MgdGhlIGltcGxpY2l0IGVsc2UgYnJhbmNoIHRoYXQgbmV2ZXIgaGFwcGVucy4gKi9cbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICAgIHJlcGxhY2VBcmd1bWVudHMubWlzc2luZ0dyb3VwSW5kaWNlcy5wdXNoKGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKHJlcGxhY2VyKHJlcGxhY2VBcmd1bWVudHMpIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gcmVwbGFjZUFyZ3VtZW50cy5zdWJzdHJpbmc7XG4gICAgfSk7XG59XG5cbi8qKlxuICogQXN5bmNocm9ub3VzbHkgcmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gYXN5bmNocm9ub3VzIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUmVwbGFjZUdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzdHJpbmcgd2l0aCBhbGwgcmVwbGFjZW1lbnRzIG1hZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQWxsQXN5bmM8UmVwbGFjZUdyb3VwQXJndW1lbnRzIGV4dGVuZHMgc3RyaW5nW10+KHBhcmFtczogUmVwbGFjZUFsbEFzeW5jUGFyYW1zPFJlcGxhY2VHcm91cEFyZ3VtZW50cz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7ICRzdHJpbmcsIHJlcGxhY2VyLCBzZWFyY2hWYWx1ZSB9ID0gcGFyYW1zO1xuICBsZXQgeyBhYm9ydFNpZ25hbCB9ID0gcGFyYW1zO1xuICBhYm9ydFNpZ25hbCA/Pz0gYWJvcnRTaWduYWxOZXZlcigpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAgICRzdHJpbmcsXG4gICAgICByZXBsYWNlcixcbiAgICAgIHNlYXJjaFZhbHVlXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZXBsYWNlbWVudEFzeW5jRm5zOiAoKCkgPT4gUHJvbWlzZTxTdHJpbmdSZXBsYWNlbWVudD4pW10gPSBbXTtcblxuICByZXBsYWNlQWxsPFJlcGxhY2VHcm91cEFyZ3VtZW50cz4oe1xuICAgICRzdHJpbmcsXG4gICAgcmVwbGFjZXI6ICgkYXJndW1lbnRzKSA9PiB7XG4gICAgICByZXBsYWNlbWVudEFzeW5jRm5zLnB1c2goKCkgPT4gcmVzb2x2ZVZhbHVlKHJlcGxhY2VyLCB7IGFib3J0U2lnbmFsLCAuLi4kYXJndW1lbnRzIH0pKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICAgIHNlYXJjaFZhbHVlXG4gIH0pO1xuXG4gIGNvbnN0IHJlcGxhY2VtZW50czogU3RyaW5nUmVwbGFjZW1lbnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYXN5bmNGdW5jdGlvbiBvZiByZXBsYWNlbWVudEFzeW5jRm5zKSB7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICByZXBsYWNlbWVudHMucHVzaChhd2FpdCBhc3luY0Z1bmN0aW9uKCkpO1xuICB9XG5cbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmcsXG4gICAgcmVwbGFjZXI6ICgkYXJndW1lbnRzKTogc3RyaW5nID0+IHJlcGxhY2VtZW50cy5zaGlmdCgpID8/ICRhcmd1bWVudHMuc3Vic3RyaW5nLFxuICAgIHNlYXJjaFZhbHVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBzcGVjaWZpZWQgc3VmZml4IGZyb20gdGhlIGVuZCBvZiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGBzaG91bGRWYWxpZGF0ZWAgaXMgYHRydWVgIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IGVuZCB3aXRoIHRoZSBzdWZmaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltRW5kKHBhcmFtczogVHJpbUVuZFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgc2hvdWxkVmFsaWRhdGUsIHN1ZmZpeCB9ID0gcGFyYW1zO1xuICBpZiAoJHN0cmluZy5lbmRzV2l0aChzdWZmaXgpKSB7XG4gICAgcmV0dXJuICRzdHJpbmcuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHNob3VsZFZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHskc3RyaW5nfSBkb2VzIG5vdCBlbmQgd2l0aCBzdWZmaXggJHtzdWZmaXh9YCk7XG4gIH1cblxuICByZXR1cm4gJHN0cmluZztcbn1cblxuLyoqXG4gKiBUcmltcyB0aGUgc3BlY2lmaWVkIHByZWZpeCBmcm9tIHRoZSBzdGFydCBvZiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGBzaG91bGRWYWxpZGF0ZWAgaXMgYHRydWVgIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1TdGFydChwYXJhbXM6IFRyaW1TdGFydFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgcHJlZml4LCBzaG91bGRWYWxpZGF0ZSB9ID0gcGFyYW1zO1xuICBpZiAoJHN0cmluZy5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICByZXR1cm4gJHN0cmluZy5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmIChzaG91bGRWYWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7JHN0cmluZ30gZG9lcyBub3Qgc3RhcnQgd2l0aCBwcmVmaXggJHtwcmVmaXh9YCk7XG4gIH1cblxuICByZXR1cm4gJHN0cmluZztcbn1cblxuLyoqXG4gKiBVbmVzY2FwZXMgYSBzdHJpbmcgYnkgcmVwbGFjaW5nIGVzY2FwZSBzZXF1ZW5jZXMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZSgkc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZSgkc3RyaW5nLCBVTkVTQ0FQRV9NQVApO1xufVxuXG4vKipcbiAqIFVuaW5kZW50cyBhIHN0cmluZyBieSByZW1vdmluZyBhIHByZWZpeCBmcm9tIGVhY2ggbGluZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgdW5pbmRlbnRlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmluZGVudChwYXJhbXM6IFVuaW5kZW50UGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3QgeyBwcmVmaXgsIHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCA9IGZhbHNlLCB0ZXh0IH0gPSBwYXJhbXM7XG4gIHJldHVybiB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IHtcbiAgICBpZiAobGluZS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgIHJldHVybiBsaW5lLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICAgIH1cbiAgICBpZiAoc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExpbmUgXCIke2xpbmV9XCIgaXMgbm90IGluZGVudGVkIHdpdGggXCIke3ByZWZpeH1cImApO1xuICAgIH1cbiAgICByZXR1cm4gbGluZTtcbiAgfSkuam9pbignXFxuJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVNBLDhCQUFpQztBQUNqQyxxQkFBNkI7QUFDN0IseUJBR087QUFDUCw0QkFBNkI7QUFXdEIsTUFBTSxRQUFRO0FBMERyQixNQUFNLGFBQXFDO0FBQUEsRUFDekMsTUFBTSxPQUFPO0FBQUEsRUFDYixNQUFNLE9BQU87QUFBQSxFQUNiLEtBQU0sT0FBTztBQUFBLEVBQ2IsTUFBTSxPQUFPO0FBQUEsRUFDYixNQUFNLE9BQU87QUFBQSxFQUNiLEtBQU0sT0FBTztBQUFBLEVBQ2IsS0FBSyxPQUFPO0FBQUEs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
268
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3N0cmluZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIENvbnRhaW5zIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBzdHJpbmcgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IE1heWJlUmV0dXJuIH0gZnJvbSAnLi90eXBlLnRzJztcbmltcG9ydCB0eXBlIHsgVmFsdWVQcm92aWRlciB9IGZyb20gJy4vdmFsdWUtcHJvdmlkZXIudHMnO1xuXG5pbXBvcnQgeyBhYm9ydFNpZ25hbE5ldmVyIH0gZnJvbSAnLi9hYm9ydC1jb250cm9sbGVyLnRzJztcbmltcG9ydCB7IGVzY2FwZVJlZ0V4cCB9IGZyb20gJy4vcmVnLWV4cC50cyc7XG5pbXBvcnQge1xuICBhc3NlcnQsXG4gIGVuc3VyZU5vbk51bGxhYmxlXG59IGZyb20gJy4vdHlwZS1ndWFyZHMudHMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlIH0gZnJvbSAnLi92YWx1ZS1wcm92aWRlci50cyc7XG5cbi8qKlxuICogQW4gZW1wdHkgc3RyaW5nIGNvbnN0YW50LlxuICpcbiAqIEEgc2hhcmVkIHNlbnRpbmVsIGZvciB0aGUgYCR7RU1QVFl9YCBwcmVmaXggdGhhdCBzaWxlbmNlcyB0aGUgYG9ic2lkaWFubWQvdWkvc2VudGVuY2UtY2FzZWAgRVNMaW50XG4gKiBmYWxzZSBwb3NpdGl2ZSBvbiBsZWdpdGltYXRlIGxvd2VyLWNhc2UgVUkgdGV4dCAoZS5nLiBgY3Vyc29yYCBjb2xsaWRpbmcgd2l0aCB0aGUgYEN1cnNvcmAgYnJhbmQpLlxuICogYHNldE5hbWUoYCR7RU1QVFl9Li4uYXQgY3Vyc29yLi4uYClgIHJlbmRlcnMgYnl0ZS1pZGVudGljYWwgYCcnYCBhdCBydW50aW1lIHdoaWxlIHRoZSBgey4uLn1gXG4gKiBwbGFjZWhvbGRlciBtYWtlcyB0aGUgcnVsZSBza2lwIHRoZSBzdHJpbmcuIENvbnN1bWVycyBpbXBvcnQgdGhpcyBpbnN0ZWFkIG9mIHJlZGVmaW5pbmcgYSBwZXItZmlsZVxuICogYGNvbnN0IEVNUFRZID0gJydgLlxuICovXG5leHBvcnQgY29uc3QgRU1QVFkgPSAnJztcblxuLyoqXG4gKiBBIHN5bmNocm9ub3VzL2FzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKlxuICogQHR5cGVQYXJhbSBDYXB0dXJlZEdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIEFzeW5jUmVwbGFjZXI8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cyBleHRlbmRzIHN0cmluZ1tdPiA9IFZhbHVlUHJvdmlkZXI8U3RyaW5nUmVwbGFjZW1lbnQsIFJlcGxhY2VBcmd1bWVudHM8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cz4+O1xuXG4vKipcbiAqIENvbW1vbiBhcmd1bWVudHMgZm9yIHRoZSBgcmVwbGFjZUFsbGAvYHJlcGxhY2VBbGxBc3luY2AgZnVuY3Rpb25zLlxuICpcbiAqIEB0eXBlUGFyYW0gQ2FwdHVyZWRHcm91cEFyZ3VtZW50cyAtIFRoZSB0eXBlcyBvZiB0aGUgY2FwdHVyZWQgZ3JvdXAgYXJndW1lbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VBcmd1bWVudHM8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cyBleHRlbmRzIHN0cmluZ1tdPiB7XG4gIC8qKlxuICAgKiBDYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gICAqL1xuICBjYXB0dXJlZEdyb3VwQXJndW1lbnRzOiBDYXB0dXJlZEdyb3VwQXJndW1lbnRzO1xuXG4gIC8qKlxuICAgKiBHcm91cHMgb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgZ3JvdXBzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBJbmRpY2VzIG9mIHRoZSBncm91cHMgdGhhdCB3ZXJlIG5vdCBmb3VuZCBpbiB0aGUgbWF0Y2guXG4gICAqL1xuICBtaXNzaW5nR3JvdXBJbmRpY2VzOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQW4gb2Zmc2V0IG9mIHRoZSBtYXRjaC5cbiAgICovXG4gIG9mZnNldDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIHNvdXJjZSBvZiB0aGUgbWF0Y2guXG4gICAqL1xuICBzb3VyY2U6IHN0cmluZztcblxuICAvKipcbiAgICogQSBzdWJzdHJpbmcgb2YgdGhlIG1hdGNoLlxuICAgKi9cbiAgc3Vic3RyaW5nOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gKlxuICogQHR5cGVQYXJhbSBDYXB0dXJlZEdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIFJlcGxhY2VyPENhcHR1cmVkR3JvdXBBcmd1bWVudHMgZXh0ZW5kcyBzdHJpbmdbXT4gPSAoKCRhcmd1bWVudHM6IFJlcGxhY2VBcmd1bWVudHM8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cz4pID0+IFN0cmluZ1JlcGxhY2VtZW50KSB8IFN0cmluZ1JlcGxhY2VtZW50O1xuXG50eXBlIFN0cmluZ1JlcGxhY2VtZW50ID0gTWF5YmVSZXR1cm48c3RyaW5nPjtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIHNwZWNpYWwgY2hhcmFjdGVycyB0byB0aGVpciBlc2NhcGVkIGNvdW50ZXJwYXJ0cy5cbiAqL1xuY29uc3QgRVNDQVBFX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ1xcbic6IFN0cmluZy5yYXdgXFxuYCxcbiAgJ1xccic6IFN0cmluZy5yYXdgXFxyYCxcbiAgJ1xcdCc6IFN0cmluZy5yYXdgXFx0YCxcbiAgJ1xcYic6IFN0cmluZy5yYXdgXFxiYCxcbiAgJ1xcZic6IFN0cmluZy5yYXdgXFxmYCxcbiAgJ1xcJyc6IFN0cmluZy5yYXdgXFwnYCxcbiAgJ1wiJzogU3RyaW5nLnJhd2BcXFwiYCxcbiAgJ1xcXFwnOiAnXFxcXFxcXFwnXG59IGFzIGNvbnN0O1xuXG5jb25zdCBDUiA9ICdcXHInO1xuY29uc3QgTEYgPSAnXFxuJztcbmNvbnN0IE5PVF9GT1VORF9JTkRFWCA9IC0xO1xuXG4vKipcbiAqIE1hcHBpbmcgb2YgZXNjYXBlZCBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgdW5lc2NhcGVkIGNvdW50ZXJwYXJ0cy5cbiAqL1xuY29uc3QgVU5FU0NBUEVfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5mb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhFU0NBUEVfTUFQKSkge1xuICBVTkVTQ0FQRV9NQVBbdmFsdWVdID0ga2V5O1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBlbnN1cmVFbmRzV2l0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5zdXJlRW5kc1dpdGhQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHN0cmluZyB0byBjaGVjay5cbiAgICovXG4gIHJlYWRvbmx5ICRzdHJpbmc6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1ZmZpeCB0byBlbnN1cmUuXG4gICAqL1xuICByZWFkb25seSBzdWZmaXg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgZW5zdXJlU3RhcnRzV2l0aH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5zdXJlU3RhcnRzV2l0aFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHRvIGNoZWNrLlxuICAgKi9cbiAgcmVhZG9ubHkgJHN0cmluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHRvIGVuc3VyZS5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBoYXNTaW5nbGVPY2N1cnJlbmNlfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYXNTaW5nbGVPY2N1cnJlbmNlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgdG8gY2hlY2suXG4gICAqL1xuICByZWFkb25seSAkc3RyaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZWFyY2ggdmFsdWUgdG8gY2hlY2sgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoVmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgaW5kZW50fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmRlbnRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHByZWZpeCB0byBhZGQgdG8gZWFjaCBsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgdG8gaW5kZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbnNlcnRBdH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zZXJ0QXRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHN1YnN0cmluZyBpbnRvLlxuICAgKi9cbiAgcmVhZG9ubHkgJHN0cmluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5kZXggdG8gZW5kIHRoZSBzdWJzdHJpbmcgYXQuXG4gICAqL1xuICByZWFkb25seSBlbmRJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGluZGV4IHRvIGluc2VydCB0aGUgc3Vic3RyaW5nIGF0LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc3Vic3RyaW5nIHRvIGluc2VydC5cbiAgICovXG4gIHJlYWRvbmx5IHN1YnN0cmluZzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayByZXBsYWNlQWxsQXN5bmN9LlxuICpcbiAqIEB0eXBlUGFyYW0gUmVwbGFjZUdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUFsbEFzeW5jUGFyYW1zPFJlcGxhY2VHcm91cEFyZ3VtZW50cyBleHRlbmRzIHN0cmluZ1tdPiB7XG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIGluIHdoaWNoIHRvIHBlcmZvcm0gcmVwbGFjZW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgJHN0cmluZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWJvcnQgc2lnbmFsIHRvIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBhYm9ydFNpZ25hbD86IEFib3J0U2lnbmFsO1xuXG4gIC8qKlxuICAgKiBBIHN5bmNocm9ub3VzL2FzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyByZXBsYWNlbWVudCBzdHJpbmdzLCBvciBhIHN0cmluZyB0byByZXBsYWNlIHdpdGguXG4gICAqL1xuICByZWFkb25seSByZXBsYWNlcjogQXN5bmNSZXBsYWNlcjxSZXBsYWNlR3JvdXBBcmd1bWVudHM+O1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVwbGFjZUFsbH0uXG4gKlxuICogQHR5cGVQYXJhbSBDYXB0dXJlZEdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVwbGFjZUFsbFBhcmFtczxDYXB0dXJlZEdyb3VwQXJndW1lbnRzIGV4dGVuZHMgc3RyaW5nW10+IHtcbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgaW4gd2hpY2ggdG8gcGVyZm9ybSByZXBsYWNlbWVudHMuXG4gICAqL1xuICByZWFkb25seSAkc3RyaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgcmVwbGFjZXIgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgcmVwbGFjZW1lbnQgc3RyaW5ncywgb3IgYSBzdHJpbmcgdG8gcmVwbGFjZSB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGFjZXI6IFJlcGxhY2VyPENhcHR1cmVkR3JvdXBBcmd1bWVudHM+O1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byBzZWFyY2ggZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VhcmNoVmFsdWU6IFJlZ0V4cCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdHJpbUVuZH0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJpbUVuZFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAqL1xuICByZWFkb25seSAkc3RyaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIHRoZSBzdHJpbmcgZG9lcyBub3QgZW5kIHdpdGggdGhlIHN1ZmZpeC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVmFsaWRhdGU/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VmZml4IHRvIHJlbW92ZSBmcm9tIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbiAgICovXG4gIHJlYWRvbmx5IHN1ZmZpeDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB0cmltU3RhcnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyaW1TdGFydFBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gICAqL1xuICByZWFkb25seSAkc3RyaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcuXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIHN0cmluZyBkb2VzIG5vdCBzdGFydCB3aXRoIHRoZSBwcmVmaXguXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFZhbGlkYXRlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdW5pbmRlbnR9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVuaW5kZW50UGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggdG8gcmVtb3ZlIGZyb20gZWFjaCBsaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhyb3dzIGFuIGVycm9yIGlmIGEgbGluZSBpcyBub3QgaW5kZW50ZWQgd2l0aCB0aGUgcHJlZml4LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd0lmTm90SW5kZW50ZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RyaW5nIHRvIHVuaW5kZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVuc3VyZXMgdGhhdCBhIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIGFkZGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IGVuZHMgd2l0aCB0aGUgc3VmZml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRW5kc1dpdGgocGFyYW1zOiBFbnN1cmVFbmRzV2l0aFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgc3VmZml4IH0gPSBwYXJhbXM7XG4gIHJldHVybiAkc3RyaW5nLmVuZHNXaXRoKHN1ZmZpeCkgPyAkc3RyaW5nIDogJHN0cmluZyArIHN1ZmZpeDtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgaGFzIGBMRmAgbGluZSBlbmRpbmdzLlxuICpcbiAqIEl0IHJlcGxhY2VzIGBDUkxGYCBsaW5lIGVuZGluZ3Mgd2l0aCBgTEZgLlxuICpcbiAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZy5cbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aCBgTEZgIGxpbmUgZW5kaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUxmRW5kaW5ncygkc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gJHN0cmluZy5yZXBsYWNlQWxsKC9cXHJcXG4/L2csICdcXG4nKTtcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYSBzdHJpbmcgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIGFkZGluZyBpdCBpZiBuZWNlc3NhcnkuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIHN0cmluZyB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBwcmVmaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVTdGFydHNXaXRoKHBhcmFtczogRW5zdXJlU3RhcnRzV2l0aFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgcHJlZml4IH0gPSBwYXJhbXM7XG4gIHJldHVybiAkc3RyaW5nLnN0YXJ0c1dpdGgocHJlZml4KSA/ICRzdHJpbmcgOiBwcmVmaXggKyAkc3RyaW5nO1xufVxuXG4vKipcbiAqIEVzY2FwZXMgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGUoJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2UoJHN0cmluZywgRVNDQVBFX01BUCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgbWFwcyBMRi1ub3JtYWxpemVkIG9mZnNldHMgdG8gb3JpZ2luYWwgb2Zmc2V0cy5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gZ2V0IHRoZSBMRi1ub3JtYWxpemVkIGluZGljZXMgZnJvbS5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBtYXBzIExGLW5vcm1hbGl6ZWQgb2Zmc2V0cyB0byBvcmlnaW5hbCBvZmZzZXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGZOb3JtYWxpemVkT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcHBlcigkc3RyaW5nOiBzdHJpbmcpOiAobGZPZmZzZXQ6IG51bWJlcikgPT4gbnVtYmVyIHtcbiAgY29uc3QgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAkc3RyaW5nLmxlbmd0aDsgaW5kZXgrKykge1xuICAgIGlmICgkc3RyaW5nW2luZGV4XSA9PT0gQ1IgJiYgJHN0cmluZ1tpbmRleCArIDFdID09PSBMRikge1xuICAgICAgbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwLnB1c2goaW5kZXggKyAxKTtcbiAgICAgIGluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5wdXNoKGluZGV4KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKGxmT2Zmc2V0OiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICAgIGlmIChsZk9mZnNldCA8IDApIHtcbiAgICAgIHJldHVybiBsZk9mZnNldDtcbiAgICB9XG4gICAgaWYgKGxmT2Zmc2V0ID49IGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsZk9mZnNldCAtIGxmT2Zmc2V0VG9PcmlnaW5hbE9mZnNldE1hcC5sZW5ndGggKyAkc3RyaW5nLmxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3NlcnQobGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XSAhPT0gdW5kZWZpbmVkLCAnQ291bGQgbm90IG1hcCBvZmZzZXQnKTtcbiAgICByZXR1cm4gbGZPZmZzZXRUb09yaWdpbmFsT2Zmc2V0TWFwW2xmT2Zmc2V0XTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgYSBzZWFyY2ggdmFsdWUuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBzdHJpbmcgaGFzIGEgc2luZ2xlIG9jY3VycmVuY2Ugb2YgdGhlIHNlYXJjaCB2YWx1ZSwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTaW5nbGVPY2N1cnJlbmNlKHBhcmFtczogSGFzU2luZ2xlT2NjdXJyZW5jZVBhcmFtcyk6IGJvb2xlYW4ge1xuICBjb25zdCB7ICRzdHJpbmcsIHNlYXJjaFZhbHVlIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGZpcnN0SW5kZXggPSAkc3RyaW5nLmluZGV4T2Yoc2VhcmNoVmFsdWUpO1xuICBjb25zdCBsYXN0SW5kZXggPSAkc3RyaW5nLmxhc3RJbmRleE9mKHNlYXJjaFZhbHVlKTtcbiAgcmV0dXJuIGZpcnN0SW5kZXggIT09IE5PVF9GT1VORF9JTkRFWCAmJiBmaXJzdEluZGV4ID09PSBsYXN0SW5kZXg7XG59XG5cbi8qKlxuICogSW5kZW50cyBhIHN0cmluZyBieSBhZGRpbmcgYSBwcmVmaXggdG8gZWFjaCBsaW5lLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycy5cbiAqIEByZXR1cm5zIFRoZSBpbmRlbnRlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmRlbnQocGFyYW1zOiBJbmRlbnRQYXJhbXMpOiBzdHJpbmcge1xuICBjb25zdCB7IHByZWZpeCwgdGV4dCB9ID0gcGFyYW1zO1xuICByZXR1cm4gdGV4dC5zcGxpdCgnXFxuJykubWFwKChsaW5lKSA9PiBgJHtwcmVmaXh9JHtsaW5lfWApLmpvaW4oJ1xcbicpO1xufVxuXG4vKipcbiAqIEluc2VydHMgYSBzdWJzdHJpbmcgYXQgYSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICogQHJldHVybnMgVGhlIG1vZGlmaWVkIHN0cmluZyB3aXRoIHRoZSBzdWJzdHJpbmcgaW5zZXJ0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBdChwYXJhbXM6IEluc2VydEF0UGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3Qge1xuICAgICRzdHJpbmcsXG4gICAgZW5kSW5kZXgsXG4gICAgc3RhcnRJbmRleCxcbiAgICBzdWJzdHJpbmdcbiAgfSA9IHBhcmFtcztcbiAgY29uc3QgZWZmZWN0aXZlRW5kSW5kZXggPSBlbmRJbmRleCA/PyBzdGFydEluZGV4O1xuICByZXR1cm4gJHN0cmluZy5zbGljZSgwLCBzdGFydEluZGV4KSArIHN1YnN0cmluZyArICRzdHJpbmcuc2xpY2UoZWZmZWN0aXZlRW5kSW5kZXgpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIGludG8gYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlIG5hbWUgYnkgcmVwbGFjaW5nIGludmFsaWQgY2hhcmFjdGVycyB3aXRoIHVuZGVyc2NvcmVzLlxuICpcbiAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMgVGhlIHZhbGlkIHZhcmlhYmxlIG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlVmFsaWRWYXJpYWJsZU5hbWUoJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmcsXG4gICAgcmVwbGFjZXI6ICdfJyxcbiAgICBzZWFyY2hWYWx1ZTogL1teYS16QS1aMC05X10vZ1xuICB9KTtcbn1cblxuLyoqXG4gKiBOb3JtYWxpemVzIGEgc3RyaW5nIGJ5IGNvbnZlcnRpbmcgaXQgdG8gdGhlIE5GQyBmb3JtIGFuZCByZXBsYWNpbmcgbm9uLWJyZWFraW5nIHNwYWNlcyB3aXRoIHJlZ3VsYXIgc3BhY2VzLlxuICpcbiAqIEBwYXJhbSAkc3RyaW5nIC0gVGhlIHN0cmluZyB0byBub3JtYWxpemUuXG4gKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTdHJpbmcoJHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmcsXG4gICAgcmVwbGFjZXI6ICcgJyxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItdW5pY29kZS1jb2RlLXBvaW50LWVzY2FwZXMgLS0gVGhlc2UgYXJlIHRoZSBjb252ZW50aW9uYWwgc3BlbGxpbmdzIGZvciBVKzAwQTAgYW5kIFUrMjAyRi4gVGhlIGNvZGUtcG9pbnQgZm9ybSBpcyBvbmx5IHVuYW1iaWd1b3VzIHdpdGggdGhlIGB1YCBmbGFnLCBzbyB0YWtpbmcgdGhlIGZpeCB3b3VsZCBhbHNvIGNoYW5nZSBob3cgdGhlIHBhdHRlcm4gaXMgcGFyc2VkLlxuICAgIHNlYXJjaFZhbHVlOiAvXFx1MDBBMHxcXHUyMDJGL2dcbiAgfSkubm9ybWFsaXplKCdORkMnKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlcyBvY2N1cnJlbmNlcyBvZiBzdHJpbmdzIGluIGEgZ2l2ZW4gc3RyaW5nIGJhc2VkIG9uIGEgcmVwbGFjZW1lbnRzIG1hcC5cbiAqXG4gKiBAcGFyYW0gJHN0cmluZyAtIFRoZSBzdHJpbmcgdG8gcGVyZm9ybSByZXBsYWNlbWVudHMgb24uXG4gKiBAcGFyYW0gcmVwbGFjZW1lbnRzTWFwIC0gQW4gb2JqZWN0IG1hcHBpbmcgc3RyaW5ncyB0byB0aGVpciByZXBsYWNlbWVudCB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgbW9kaWZpZWQgc3RyaW5nIHdpdGggcmVwbGFjZW1lbnRzIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlKCRzdHJpbmc6IHN0cmluZywgcmVwbGFjZW1lbnRzTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgY29uc3QgcmVnRXhwID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhyZXBsYWNlbWVudHNNYXApLm1hcCgoc291cmNlKSA9PiBlc2NhcGVSZWdFeHAoc291cmNlKSkuam9pbignfCcpLCAnZycpO1xuICByZXR1cm4gcmVwbGFjZUFsbCh7XG4gICAgJHN0cmluZyxcbiAgICByZXBsYWNlcjogKHsgc3Vic3RyaW5nOiBzb3VyY2UgfSkgPT4gZW5zdXJlTm9uTnVsbGFibGUocmVwbGFjZW1lbnRzTWFwW3NvdXJjZV0pLFxuICAgIHNlYXJjaFZhbHVlOiByZWdFeHBcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gcmVwbGFjZXIgZnVuY3Rpb24uXG4gKlxuICogQHR5cGVQYXJhbSBDYXB0dXJlZEdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgc3RyaW5nIHdpdGggYWxsIHJlcGxhY2VtZW50cyBtYWRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUFsbDxDYXB0dXJlZEdyb3VwQXJndW1lbnRzIGV4dGVuZHMgc3RyaW5nW10+KHBhcmFtczogUmVwbGFjZUFsbFBhcmFtczxDYXB0dXJlZEdyb3VwQXJndW1lbnRzPik6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgcmVwbGFjZXIgfSA9IHBhcmFtcztcbiAgbGV0IHsgc2VhcmNoVmFsdWUgfSA9IHBhcmFtcztcbiAgaWYgKHJlcGxhY2VyID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gJHN0cmluZztcbiAgfVxuXG4gIGlmIChzZWFyY2hWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCAmJiAhc2VhcmNoVmFsdWUuZ2xvYmFsKSB7XG4gICAgc2VhcmNoVmFsdWUgPSBuZXcgUmVnRXhwKHNlYXJjaFZhbHVlLnNvdXJjZSwgYCR7c2VhcmNoVmFsdWUuZmxhZ3N9Z2ApO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiByZXBsYWNlciA9PT0gJ3N0cmluZydcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby11bnNhZmUtc3RyaW5nLXJlcGxhY2VtZW50IC0tIFRoZSBwYXNzLXRocm91Z2ggaXMgbG9hZC1iZWFyaW5nOiBjYWxsZXJzIHJlbHkgb24gYCQmYCBhbmQgZnJpZW5kcyBiZWluZyBleHBhbmRlZC4gYGVzY2FwZUFsaWFzYCBwYXNzZXMgYFxcJCZgIHRvIHByZWZpeCBlYWNoIG1hdGNoZWQgY2hhcmFjdGVyIHdpdGggYSBiYWNrc2xhc2gsIGFuZCBgY2xpLXV0aWxzYCBwYXNzZXMgYF4kJmAuIEluc2VydGluZyB0aGUgc3RyaW5nIGxpdGVyYWxseSB3b3VsZCBicmVhayBib3RoLlxuICAgID8gJHN0cmluZy5yZXBsYWNlQWxsKHNlYXJjaFZhbHVlLCByZXBsYWNlcilcbiAgICA6ICRzdHJpbmcucmVwbGFjZUFsbChzZWFyY2hWYWx1ZSwgKHN1YnN0cmluZzogc3RyaW5nLCAuLi4kYXJndW1lbnRzOiB1bmtub3duW10pID0+IHtcbiAgICAgIGNvbnN0IFNPVVJDRV9JTkRFWF9PRkZTRVRfRk9SX0dST1VQX0FSRyA9IDI7XG4gICAgICBjb25zdCBoYXNHcm91cHNBcmd1bWVudCA9IHR5cGVvZiAkYXJndW1lbnRzLmF0KC0xKSA9PT0gJ29iamVjdCc7XG4gICAgICBjb25zdCBzb3VyY2VJbmRleCA9IGhhc0dyb3Vwc0FyZ3VtZW50ID8gJGFyZ3VtZW50cy5sZW5ndGggLSBTT1VSQ0VfSU5ERVhfT0ZGU0VUX0ZPUl9HUk9VUF9BUkcgOiAkYXJndW1lbnRzLmxlbmd0aCAtIDE7XG5cbiAgICAgIGNvbnN0IHJlcGxhY2VBcmd1bWVudHM6IFJlcGxhY2VBcmd1bWVudHM8Q2FwdHVyZWRHcm91cEFyZ3VtZW50cz4gPSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheCAtLSBDYW4ndCBhdm9pZC5cbiAgICAgICAgY2FwdHVyZWRHcm91cEFyZ3VtZW50czogW10gYXMgdW5rbm93bltdIGFzIENhcHR1cmVkR3JvdXBBcmd1bWVudHMsXG4gICAgICAgIGdyb3VwczogaGFzR3JvdXBzQXJndW1lbnQgPyAkYXJndW1lbnRzLmF0KC0xKSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IDogdW5kZWZpbmVkLFxuICAgICAgICBtaXNzaW5nR3JvdXBJbmRpY2VzOiBbXSxcbiAgICAgICAgb2Zmc2V0OiAkYXJndW1lbnRzLmF0KHNvdXJjZUluZGV4IC0gMSkgYXMgbnVtYmVyLFxuICAgICAgICBzb3VyY2U6ICRhcmd1bWVudHMuYXQoc291cmNlSW5kZXgpIGFzIHN0cmluZyxcbiAgICAgICAgc3Vic3RyaW5nXG4gICAgICB9O1xuXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc291cmNlSW5kZXggLSAxOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSAkYXJndW1lbnRzW2luZGV4XTtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJlcGxhY2VBcmd1bWVudHMuY2FwdHVyZWRHcm91cEFyZ3VtZW50cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIC8qIHY4IGlnbm9yZSBzdGFydCAtLSB2OCB0cmFja3MgdGhlIGltcGxpY2l0IGVsc2UgYnJhbmNoIHRoYXQgbmV2ZXIgaGFwcGVucy4gKi9cbiAgICAgICAgfSBlbHNlIGlmIChpdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvKiB2OCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICAgIHJlcGxhY2VBcmd1bWVudHMubWlzc2luZ0dyb3VwSW5kaWNlcy5wdXNoKGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKHJlcGxhY2VyKHJlcGxhY2VBcmd1bWVudHMpIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gcmVwbGFjZUFyZ3VtZW50cy5zdWJzdHJpbmc7XG4gICAgfSk7XG59XG5cbi8qKlxuICogQXN5bmNocm9ub3VzbHkgcmVwbGFjZXMgYWxsIG9jY3VycmVuY2VzIG9mIGEgc2VhcmNoIHN0cmluZyBvciBwYXR0ZXJuIHdpdGggdGhlIHJlc3VsdHMgb2YgYW4gYXN5bmNocm9ub3VzIHJlcGxhY2VyIGZ1bmN0aW9uLlxuICpcbiAqIEB0eXBlUGFyYW0gUmVwbGFjZUdyb3VwQXJndW1lbnRzIC0gVGhlIHR5cGVzIG9mIHRoZSBjYXB0dXJlZCBncm91cCBhcmd1bWVudHMuXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIHRvIHRoZSBzdHJpbmcgd2l0aCBhbGwgcmVwbGFjZW1lbnRzIG1hZGUuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXBsYWNlQWxsQXN5bmM8UmVwbGFjZUdyb3VwQXJndW1lbnRzIGV4dGVuZHMgc3RyaW5nW10+KHBhcmFtczogUmVwbGFjZUFsbEFzeW5jUGFyYW1zPFJlcGxhY2VHcm91cEFyZ3VtZW50cz4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7ICRzdHJpbmcsIHJlcGxhY2VyLCBzZWFyY2hWYWx1ZSB9ID0gcGFyYW1zO1xuICBsZXQgeyBhYm9ydFNpZ25hbCB9ID0gcGFyYW1zO1xuICBhYm9ydFNpZ25hbCA/Pz0gYWJvcnRTaWduYWxOZXZlcigpO1xuICBhYm9ydFNpZ25hbC50aHJvd0lmQWJvcnRlZCgpO1xuICBpZiAodHlwZW9mIHJlcGxhY2VyID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiByZXBsYWNlQWxsKHtcbiAgICAgICRzdHJpbmcsXG4gICAgICByZXBsYWNlcixcbiAgICAgIHNlYXJjaFZhbHVlXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZXBsYWNlbWVudEFzeW5jRm5zOiAoKCkgPT4gUHJvbWlzZTxTdHJpbmdSZXBsYWNlbWVudD4pW10gPSBbXTtcblxuICByZXBsYWNlQWxsPFJlcGxhY2VHcm91cEFyZ3VtZW50cz4oe1xuICAgICRzdHJpbmcsXG4gICAgcmVwbGFjZXI6ICgkYXJndW1lbnRzKSA9PiB7XG4gICAgICByZXBsYWNlbWVudEFzeW5jRm5zLnB1c2goKCkgPT4gcmVzb2x2ZVZhbHVlKHJlcGxhY2VyLCB7IGFib3J0U2lnbmFsLCAuLi4kYXJndW1lbnRzIH0pKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9LFxuICAgIHNlYXJjaFZhbHVlXG4gIH0pO1xuXG4gIGNvbnN0IHJlcGxhY2VtZW50czogU3RyaW5nUmVwbGFjZW1lbnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYXN5bmNGdW5jdGlvbiBvZiByZXBsYWNlbWVudEFzeW5jRm5zKSB7XG4gICAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgICByZXBsYWNlbWVudHMucHVzaChhd2FpdCBhc3luY0Z1bmN0aW9uKCkpO1xuICB9XG5cbiAgYWJvcnRTaWduYWwudGhyb3dJZkFib3J0ZWQoKTtcbiAgcmV0dXJuIHJlcGxhY2VBbGwoe1xuICAgICRzdHJpbmcsXG4gICAgcmVwbGFjZXI6ICgkYXJndW1lbnRzKTogc3RyaW5nID0+IHJlcGxhY2VtZW50cy5zaGlmdCgpID8/ICRhcmd1bWVudHMuc3Vic3RyaW5nLFxuICAgIHNlYXJjaFZhbHVlXG4gIH0pO1xufVxuXG4vKipcbiAqIFRyaW1zIHRoZSBzcGVjaWZpZWQgc3VmZml4IGZyb20gdGhlIGVuZCBvZiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGBzaG91bGRWYWxpZGF0ZWAgaXMgYHRydWVgIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IGVuZCB3aXRoIHRoZSBzdWZmaXguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltRW5kKHBhcmFtczogVHJpbUVuZFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgc2hvdWxkVmFsaWRhdGUsIHN1ZmZpeCB9ID0gcGFyYW1zO1xuICBpZiAoJHN0cmluZy5lbmRzV2l0aChzdWZmaXgpKSB7XG4gICAgcmV0dXJuICRzdHJpbmcuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpO1xuICB9XG5cbiAgaWYgKHNob3VsZFZhbGlkYXRlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdHJpbmcgJHskc3RyaW5nfSBkb2VzIG5vdCBlbmQgd2l0aCBzdWZmaXggJHtzdWZmaXh9YCk7XG4gIH1cblxuICByZXR1cm4gJHN0cmluZztcbn1cblxuLyoqXG4gKiBUcmltcyB0aGUgc3BlY2lmaWVkIHByZWZpeCBmcm9tIHRoZSBzdGFydCBvZiBhIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAdGhyb3dzIElmIGBzaG91bGRWYWxpZGF0ZWAgaXMgYHRydWVgIGFuZCB0aGUgc3RyaW5nIGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIHByZWZpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW1TdGFydChwYXJhbXM6IFRyaW1TdGFydFBhcmFtcyk6IHN0cmluZyB7XG4gIGNvbnN0IHsgJHN0cmluZywgcHJlZml4LCBzaG91bGRWYWxpZGF0ZSB9ID0gcGFyYW1zO1xuICBpZiAoJHN0cmluZy5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICByZXR1cm4gJHN0cmluZy5zbGljZShwcmVmaXgubGVuZ3RoKTtcbiAgfVxuXG4gIGlmIChzaG91bGRWYWxpZGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RyaW5nICR7JHN0cmluZ30gZG9lcyBub3Qgc3RhcnQgd2l0aCBwcmVmaXggJHtwcmVmaXh9YCk7XG4gIH1cblxuICByZXR1cm4gJHN0cmluZztcbn1cblxuLyoqXG4gKiBVbmVzY2FwZXMgYSBzdHJpbmcgYnkgcmVwbGFjaW5nIGVzY2FwZSBzZXF1ZW5jZXMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGNoYXJhY3RlcnMuXG4gKlxuICogQHBhcmFtICRzdHJpbmcgLSBUaGUgc3RyaW5nIHRvIHVuZXNjYXBlLlxuICogQHJldHVybnMgVGhlIHVuZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZSgkc3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gcmVwbGFjZSgkc3RyaW5nLCBVTkVTQ0FQRV9NQVApO1xufVxuXG4vKipcbiAqIFVuaW5kZW50cyBhIHN0cmluZyBieSByZW1vdmluZyBhIHByZWZpeCBmcm9tIGVhY2ggbGluZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMuXG4gKiBAcmV0dXJucyBUaGUgdW5pbmRlbnRlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmluZGVudChwYXJhbXM6IFVuaW5kZW50UGFyYW1zKTogc3RyaW5nIHtcbiAgY29uc3QgeyBwcmVmaXgsIHNob3VsZFRocm93SWZOb3RJbmRlbnRlZCA9IGZhbHNlLCB0ZXh0IH0gPSBwYXJhbXM7XG4gIHJldHVybiB0ZXh0LnNwbGl0KCdcXG4nKS5tYXAoKGxpbmUpID0+IHtcbiAgICBpZiAobGluZS5zdGFydHNXaXRoKHByZWZpeCkpIHtcbiAgICAgIHJldHVybiBsaW5lLnNsaWNlKHByZWZpeC5sZW5ndGgpO1xuICAgIH1cbiAgICBpZiAoc2hvdWxkVGhyb3dJZk5vdEluZGVudGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExpbmUgXCIke2xpbmV9XCIgaXMgbm90IGluZGVudGVkIHdpdGggXCIke3ByZWZpeH1cImApO1xuICAgIH1cbiAgICByZXR1cm4gbGluZTtcbiAgfSkuam9pbignXFxuJyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0EsOEJBQWlDO0FBQ2pDLHFCQUE2QjtBQUM3Qix5QkFHTztBQUNQLDRCQUE2QjtBQVd0QixNQUFNLFFBQVE7QUEwRHJCLE1BQU0sYUFBcUM7QUFBQSxFQUN6QyxNQUFNLE9BQU87QUFBQSxFQUNiLE1BQU0sT0FBTztBQUFBLEVBQ2IsS0FBTSxPQUFPO0FBQUEsRUFDYixNQUFNLE9BQU87QUFBQSxFQUNiLE1BQU0sT0FBTztBQUFBLEVBQ2IsS0FBTSxPQUFPO0FBQUEsRUFDYixLQUFLLE9BQU87QUFBQSxFQUNaLE1BQU07QUFDUjtBQUVBLE1BQU0sS0FBSztBQUNYLE1BQU0sS0FBSztBQUNYLE1BQU0sa0JBQWtCO0FBS3hCLE1BQU0sZUFBdUMsQ0FBQztBQUM5QyxXQUFXLENBQUMsS0FBSyxLQUFLLEtBQUssT0FBTyxRQUFRLFVBQVUsR0FBRztBQUNyRCxlQUFhLEtBQUssSUFBSTtBQUN4QjtBQWdOTyxTQUFTLGVBQWUsUUFBc0M7QUFDbkUsUUFBTSxFQUFFLFNBQVMsT0FBTyxJQUFJO0FBQzVCLFNBQU8sUUFBUSxTQUFTLE1BQU0sSUFBSSxVQUFVLFVBQVU7QUFDeEQ7QUFVTyxTQUFTLGdCQUFnQixTQUF5QjtBQUN2RCxTQUFPLFFBQVEsV0FBVyxVQUFVLElBQUk7QUFDMUM7QUFRTyxTQUFTLGlCQUFpQixRQUF3QztBQUN2RSxRQUFNLEVBQUUsU0FBUyxPQUFPLElBQUk7QUFDNUIsU0FBTyxRQUFRLFdBQVcsTUFBTSxJQUFJLFVBQVUsU0FBUztBQUN6RDtBQVFPLFNBQVMsT0FBTyxTQUF5QjtBQUM5QyxTQUFPLFFBQVEsU0FBUyxVQUFVO0FBQ3BDO0FBUU8sU0FBUyw0Q0FBNEMsU0FBK0M7QUFDekcsUUFBTSw4QkFBd0MsQ0FBQztBQUUvQyxXQUFTLFFBQVEsR0FBRyxRQUFRLFFBQVEsUUFBUSxTQUFTO0FBQ25ELFFBQUksUUFBUSxLQUFLLE1BQU0sTUFBTSxRQUFRLFFBQVEsQ0FBQyxNQUFNLElBQUk7QUFDdEQsa0NBQTRCLEtBQUssUUFBUSxDQUFDO0FBQzFDO0FBQUEsSUFDRixPQUFPO0FBQ0wsa0NBQTRCLEtBQUssS0FBSztBQUFBLElBQ3hDO0FBQUEsRUFDRjtBQUVBLFNBQU8sQ0FBQyxhQUE2QjtBQUNuQyxRQUFJLFdBQVcsR0FBRztBQUNoQixhQUFPO0FBQUEsSUFDVDtBQUNBLFFBQUksWUFBWSw0QkFBNEIsUUFBUTtBQUNsRCxhQUFPLFdBQVcsNEJBQTRCLFNBQVMsUUFBUTtBQUFBLElBQ2pFO0FBRUEsbUNBQU8sNEJBQTRCLFFBQVEsTUFBTSxRQUFXLHNCQUFzQjtBQUNsRixXQUFPLDRCQUE0QixRQUFRO0FBQUEsRUFDN0M7QUFDRjtBQVFPLFNBQVMsb0JBQW9CLFFBQTRDO0FBQzlFLFFBQU0sRUFBRSxTQUFTLFlBQVksSUFBSTtBQUNqQyxRQUFNLGFBQWEsUUFBUSxRQUFRLFdBQVc7QUFDOUMsUUFBTSxZQUFZLFFBQVEsWUFBWSxXQUFXO0FBQ2pELFNBQU8sZUFBZSxtQkFBbUIsZUFBZTtBQUMxRDtBQVFPLFNBQVMsT0FBTyxRQUE4QjtBQUNuRCxRQUFNLEVBQUUsUUFBUSxLQUFLLElBQUk7QUFDekIsU0FBTyxLQUFLLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFLEtBQUssSUFBSTtBQUNyRTtBQVFPLFNBQVMsU0FBUyxRQUFnQztBQUN2RCxRQUFNO0FBQUEsSUFDSjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0YsSUFBSTtBQUNKLFFBQU0sb0JBQW9CLFlBQVk7QUFDdEMsU0FBTyxRQUFRLE1BQU0sR0FBRyxVQUFVLElBQUksWUFBWSxRQUFRLE1BQU0saUJBQWlCO0FBQ25GO0FBUU8sU0FBUyxzQkFBc0IsU0FBeUI7QUFDN0QsU0FBTyxXQUFXO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWLGFBQWE7QUFBQSxFQUNmLENBQUM7QUFDSDtBQVFPLFNBQVMsZ0JBQWdCLFNBQXlCO0FBQ3ZELFNBQU8sV0FBVztBQUFBLElBQ2hCO0FBQUEsSUFDQSxVQUFVO0FBQUE7QUFBQSxJQUVWLGFBQWE7QUFBQSxFQUNmLENBQUMsRUFBRSxVQUFVLEtBQUs7QUFDcEI7QUFTTyxTQUFTLFFBQVEsU0FBaUIsaUJBQWlEO0FBQ3hGLFFBQU0sU0FBUyxJQUFJLE9BQU8sT0FBTyxLQUFLLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBVyw2QkFBYSxNQUFNLENBQUMsRUFBRSxLQUFLLEdBQUcsR0FBRyxHQUFHO0FBQzNHLFNBQU8sV0FBVztBQUFBLElBQ2hCO0FBQUEsSUFDQSxVQUFVLENBQUMsRUFBRSxXQUFXLE9BQU8sVUFBTSxzQ0FBa0IsZ0JBQWdCLE1BQU0sQ0FBQztBQUFBLElBQzlFLGFBQWE7QUFBQSxFQUNmLENBQUM7QUFDSDtBQVNPLFNBQVMsV0FBb0QsUUFBMEQ7QUFDNUgsUUFBTSxFQUFFLFNBQVMsU0FBUyxJQUFJO0FBQzlCLE1BQUksRUFBRSxZQUFZLElBQUk7QUFDdEIsTUFBSSxhQUFhLFFBQVc7QUFDMUIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLHVCQUF1QixVQUFVLENBQUMsWUFBWSxRQUFRO0FBQ3hELGtCQUFjLElBQUksT0FBTyxZQUFZLFFBQVEsR0FBRyxZQUFZLEtBQUssR0FBRztBQUFBLEVBQ3RFO0FBRUEsU0FBTyxPQUFPLGFBQWEsV0FFdkIsUUFBUSxXQUFXLGFBQWEsUUFBUSxJQUN4QyxRQUFRLFdBQVcsYUFBYSxDQUFDLGNBQXNCLGVBQTBCO0FBQ2pGLFVBQU0sb0NBQW9DO0FBQzFDLFVBQU0sb0JBQW9CLE9BQU8sV0FBVyxHQUFHLEVBQUUsTUFBTTtBQUN2RCxVQUFNLGNBQWMsb0JBQW9CLFdBQVcsU0FBUyxvQ0FBb0MsV0FBVyxTQUFTO0FBRXBILFVBQU0sbUJBQTZEO0FBQUE7QUFBQSxNQUVqRSx3QkFBd0IsQ0FBQztBQUFBLE1BQ3pCLFFBQVEsb0JBQW9CLFdBQVcsR0FBRyxFQUFFLElBQTBDO0FBQUEsTUFDdEYscUJBQXFCLENBQUM7QUFBQSxNQUN0QixRQUFRLFdBQVcsR0FBRyxjQUFjLENBQUM7QUFBQSxNQUNyQyxRQUFRLFdBQVcsR0FBRyxXQUFXO0FBQUEsTUFDakM7QUFBQSxJQUNGO0FBRUEsYUFBUyxRQUFRLEdBQUcsUUFBUSxjQUFjLEdBQUcsU0FBUztBQUNwRCxZQUFNLE9BQU8sV0FBVyxLQUFLO0FBQzdCLFVBQUksT0FBTyxTQUFTLFVBQVU7QUFDNUIseUJBQWlCLHVCQUF1QixLQUFLLElBQUk7QUFBQSxNQUVuRCxXQUFXLFNBQVMsUUFBVztBQUU3Qix5QkFBaUIsb0JBQW9CLEtBQUssS0FBSztBQUFBLE1BQ2pEO0FBQUEsSUFDRjtBQUVBLFdBQVEsU0FBUyxnQkFBZ0IsS0FBNEIsaUJBQWlCO0FBQUEsRUFDaEYsQ0FBQztBQUNMO0FBU0EsZUFBc0IsZ0JBQXdELFFBQXVFO0FBQ25KLFFBQU0sRUFBRSxTQUFTLFVBQVUsWUFBWSxJQUFJO0FBQzNDLE1BQUksRUFBRSxZQUFZLElBQUk7QUFDdEIsc0JBQWdCLDBDQUFpQjtBQUNqQyxjQUFZLGVBQWU7QUFDM0IsTUFBSSxPQUFPLGFBQWEsVUFBVTtBQUNoQyxXQUFPLFdBQVc7QUFBQSxNQUNoQjtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVBLFFBQU0sc0JBQTRELENBQUM7QUFFbkUsYUFBa0M7QUFBQSxJQUNoQztBQUFBLElBQ0EsVUFBVSxDQUFDLGVBQWU7QUFDeEIsMEJBQW9CLEtBQUssVUFBTSxvQ0FBYSxVQUFVLEVBQUUsYUFBYSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0FBQ3JGLGFBQU87QUFBQSxJQUNUO0FBQUEsSUFDQTtBQUFBLEVBQ0YsQ0FBQztBQUVELFFBQU0sZUFBb0MsQ0FBQztBQUUzQyxhQUFXLGlCQUFpQixxQkFBcUI7QUFDL0MsZ0JBQVksZUFBZTtBQUMzQixpQkFBYSxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBQUEsRUFDekM7QUFFQSxjQUFZLGVBQWU7QUFDM0IsU0FBTyxXQUFXO0FBQUEsSUFDaEI7QUFBQSxJQUNBLFVBQVUsQ0FBQyxlQUF1QixhQUFhLE1BQU0sS0FBSyxXQUFXO0FBQUEsSUFDckU7QUFBQSxFQUNGLENBQUM7QUFDSDtBQVNPLFNBQVMsUUFBUSxRQUErQjtBQUNyRCxRQUFNLEVBQUUsU0FBUyxnQkFBZ0IsT0FBTyxJQUFJO0FBQzVDLE1BQUksUUFBUSxTQUFTLE1BQU0sR0FBRztBQUM1QixXQUFPLFFBQVEsTUFBTSxHQUFHLENBQUMsT0FBTyxNQUFNO0FBQUEsRUFDeEM7QUFFQSxNQUFJLGdCQUFnQjtBQUNsQixVQUFNLElBQUksTUFBTSxVQUFVLE9BQU8sNkJBQTZCLE1BQU0sRUFBRTtBQUFBLEVBQ3hFO0FBRUEsU0FBTztBQUNUO0FBU08sU0FBUyxVQUFVLFFBQWlDO0FBQ3pELFFBQU0sRUFBRSxTQUFTLFFBQVEsZUFBZSxJQUFJO0FBQzVDLE1BQUksUUFBUSxXQUFXLE1BQU0sR0FBRztBQUM5QixXQUFPLFFBQVEsTUFBTSxPQUFPLE1BQU07QUFBQSxFQUNwQztBQUVBLE1BQUksZ0JBQWdCO0FBQ2xCLFVBQU0sSUFBSSxNQUFNLFVBQVUsT0FBTywrQkFBK0IsTUFBTSxFQUFFO0FBQUEsRUFDMUU7QUFFQSxTQUFPO0FBQ1Q7QUFRTyxTQUFTLFNBQVMsU0FBeUI7QUFDaEQsU0FBTyxRQUFRLFNBQVMsWUFBWTtBQUN0QztBQVFPLFNBQVMsU0FBUyxRQUFnQztBQUN2RCxRQUFNLEVBQUUsUUFBUSwyQkFBMkIsT0FBTyxLQUFLLElBQUk7QUFDM0QsU0FBTyxLQUFLLE1BQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO0FBQ3BDLFFBQUksS0FBSyxXQUFXLE1BQU0sR0FBRztBQUMzQixhQUFPLEtBQUssTUFBTSxPQUFPLE1BQU07QUFBQSxJQUNqQztBQUNBLFFBQUksMEJBQTBCO0FBQzVCLFlBQU0sSUFBSSxNQUFNLFNBQVMsSUFBSSwyQkFBMkIsTUFBTSxHQUFHO0FBQUEsSUFDbkU7QUFDQSxXQUFPO0FBQUEsRUFDVCxDQUFDLEVBQUUsS0FBSyxJQUFJO0FBQ2Q7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,4 +1,5 @@
1
- /// <reference path="./library.d.cts" />
1
+ /// <reference path="./library-references.d.cts" />
2
+ /// <reference lib="dom" />
2
3
  /**
3
4
  * @file
4
5
  *
@@ -3,64 +3,6 @@ THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
3
3
  if you want to view the source, please visit the github repository of this plugin
4
4
  */
5
5
 
6
- (function () {
7
- function ensureDisposeSymbols(symbolConstructor = Symbol) {
8
- symbolConstructor.asyncDispose ??= symbolConstructor.for('Symbol.asyncDispose');
9
- symbolConstructor.dispose ??= symbolConstructor.for('Symbol.dispose');
10
- }
11
-
12
- function ensureBrowserProcess() {
13
- const browserProcess = {
14
- browser: true,
15
- cwd() {
16
- return '/';
17
- },
18
- env: {},
19
- platform: 'android'
20
- };
21
-
22
- // eslint-disable-next-line obsidianmd/no-global-this, unicorn/no-unnecessary-global-this -- Must stay `globalThis`-qualified: in the emitted banner a bare `process` is a free identifier, so reading it where the host has none throws a ReferenceError instead of yielding `undefined`. That is the very case this function exists to handle.
23
- const existingProcess = globalThis.process;
24
-
25
- if (!existingProcess) {
26
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
27
- globalThis.process = browserProcess;
28
- return;
29
- }
30
-
31
- if (existingProcess.versions?.node) {
32
- return;
33
- }
34
-
35
- const existingProcessRecord = existingProcess;
36
-
37
- for (const [key, value] of Object.entries(browserProcess)) {
38
- existingProcessRecord[key] ??= value;
39
- }
40
-
41
- existingProcessRecord['browser'] = true;
42
- }
43
-
44
- function keepName($unknown) {
45
- return $unknown;
46
- }
47
-
48
- (function initCjs() {
49
- // eslint-disable-next-line obsidianmd/no-global-this -- Actively use globalThis.
50
- const globalThisRecord = globalThis;
51
- ensureDisposeSymbols();
52
- globalThisRecord['__name'] ??= keepName;
53
- globalThisRecord['__extractDefault'] ??= extractDefault;
54
-
55
- ensureBrowserProcess();
56
-
57
- // eslint-disable-next-line unicorn/consistent-function-scoping -- Serialized with initCjs into the banner; at module scope it would be left out of it.
58
- function extractDefault(module) {
59
- return module && module.__esModule && 'default' in module ? module.default : module;
60
- }
61
- })();
62
- })();
63
-
64
6
  "use strict";
65
7
  var __defProp = Object.defineProperty;
66
8
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -126,4 +68,4 @@ class DateTransformer extends import_typed_transformer.TypedTransformer {
126
68
  0 && (module.exports = {
127
69
  DateTransformer
128
70
  });
129
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9kYXRlLXRyYW5zZm9ybWVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gRGF0ZSB0byBhbiBJU08gc3RyaW5nIGFuZCBiYWNrLlxuICovXG5cbmltcG9ydCB7IFR5cGVkVHJhbnNmb3JtZXIgfSBmcm9tICcuL3R5cGVkLXRyYW5zZm9ybWVyLnRzJztcblxuLyoqXG4gKiBBIHRyYW5zZm9ybWVyIHRoYXQgY2FuIHRyYW5zZm9ybSBEYXRlIHRvIGFuIElTTyBzdHJpbmcgYW5kIGJhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlVHJhbnNmb3JtZXIgZXh0ZW5kcyBUeXBlZFRyYW5zZm9ybWVyPERhdGUsIHN0cmluZz4ge1xuICAvKipcbiAgICogQW4gaWQgb2YgdGhlIHRyYW5zZm9ybWVyLlxuICAgKlxuICAgKiBAcmV0dXJucyBgZGF0ZWAuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdkYXRlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBhIERhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHZhbHVlIGlzIGEgRGF0ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBjYW5UcmFuc2Zvcm0odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSB2YWx1ZSBmcm9tIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNmb3JtZWRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICogQHJldHVybnMgVGhlIHJlc3RvcmVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlc3RvcmVWYWx1ZSh0cmFuc2Zvcm1lZFZhbHVlOiBzdHJpbmcpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodHJhbnNmb3JtZWRWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB0aGUgdmFsdWUgdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSwrQkFBaUM7QUFLMUIsTUFBTSx3QkFBd0IsMENBQStCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTWxFLElBQW9CLEtBQWE7QUFDL0IsV0FBTztBQUFBLEVBQ1Q7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixhQUFhLE9BQStCO0FBQzFELFdBQU8saUJBQWlCO0FBQUEsRUFDMUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVFnQixhQUFhLGtCQUFnQztBQUMzRCxXQUFPLElBQUksS0FBSyxnQkFBZ0I7QUFBQSxFQUNsQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGVBQWUsT0FBcUI7QUFDbEQsV0FBTyxNQUFNLFlBQVk7QUFBQSxFQUMzQjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
71
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVycy9kYXRlLXRyYW5zZm9ybWVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGNhbiB0cmFuc2Zvcm0gRGF0ZSB0byBhbiBJU08gc3RyaW5nIGFuZCBiYWNrLlxuICovXG5cbmltcG9ydCB7IFR5cGVkVHJhbnNmb3JtZXIgfSBmcm9tICcuL3R5cGVkLXRyYW5zZm9ybWVyLnRzJztcblxuLyoqXG4gKiBBIHRyYW5zZm9ybWVyIHRoYXQgY2FuIHRyYW5zZm9ybSBEYXRlIHRvIGFuIElTTyBzdHJpbmcgYW5kIGJhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlVHJhbnNmb3JtZXIgZXh0ZW5kcyBUeXBlZFRyYW5zZm9ybWVyPERhdGUsIHN0cmluZz4ge1xuICAvKipcbiAgICogQW4gaWQgb2YgdGhlIHRyYW5zZm9ybWVyLlxuICAgKlxuICAgKiBAcmV0dXJucyBgZGF0ZWAuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdkYXRlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBhIERhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAgICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHZhbHVlIGlzIGEgRGF0ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBjYW5UcmFuc2Zvcm0odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBEYXRlIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSB2YWx1ZSBmcm9tIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdHJhbnNmb3JtZWRWYWx1ZSAtIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICogQHJldHVybnMgVGhlIHJlc3RvcmVkIHZhbHVlLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIHJlc3RvcmVWYWx1ZSh0cmFuc2Zvcm1lZFZhbHVlOiBzdHJpbmcpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUodHJhbnNmb3JtZWRWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB0aGUgdmFsdWUgdG8gYSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byB0cmFuc2Zvcm0uXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSB0cmFuc2Zvcm1WYWx1ZSh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLCtCQUFpQztBQUsxQixNQUFNLHdCQUF3QiwwQ0FBK0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNbEUsSUFBb0IsS0FBYTtBQUMvQixXQUFPO0FBQUEsRUFDVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGFBQWEsT0FBK0I7QUFDMUQsV0FBTyxpQkFBaUI7QUFBQSxFQUMxQjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUWdCLGFBQWEsa0JBQWdDO0FBQzNELFdBQU8sSUFBSSxLQUFLLGdCQUFnQjtBQUFBLEVBQ2xDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRZ0IsZUFBZSxPQUFxQjtBQUNsRCxXQUFPLE1BQU0sWUFBWTtBQUFBLEVBQzNCO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -1,4 +1,4 @@
1
- /// <reference path="../library.d.cts" />
1
+ /// <reference path="../library-references.d.cts" />
2
2
  /**
3
3
  * @file
4
4
  *