sonamu 0.9.20 → 0.10.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 (279) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +36 -0
  2. package/dist/ai/agents/agent.js +5 -7
  3. package/dist/ai/agents/index.js +1 -2
  4. package/dist/ai/agents/types.js +1 -1
  5. package/dist/ai/index.js +1 -2
  6. package/dist/ai/providers/rtzr/api.js +2 -3
  7. package/dist/ai/providers/rtzr/error.js +14 -29
  8. package/dist/ai/providers/rtzr/index.js +1 -2
  9. package/dist/ai/providers/rtzr/model.js +13 -20
  10. package/dist/ai/providers/rtzr/options.js +2 -3
  11. package/dist/ai/providers/rtzr/provider.js +2 -3
  12. package/dist/ai/providers/rtzr/utils.js +12 -21
  13. package/dist/api/base-frame.js +4 -4
  14. package/dist/api/caster.js +21 -38
  15. package/dist/api/code-converters.js +41 -98
  16. package/dist/api/config.d.ts +1 -10
  17. package/dist/api/config.d.ts.map +1 -1
  18. package/dist/api/config.js +9 -8
  19. package/dist/api/context.js +2 -3
  20. package/dist/api/decorators.js +80 -116
  21. package/dist/api/index.js +2 -3
  22. package/dist/api/secret.js +6 -10
  23. package/dist/api/sonamu.d.ts.map +1 -1
  24. package/dist/api/sonamu.js +200 -387
  25. package/dist/api/validator.js +5 -8
  26. package/dist/api/websocket-helpers.js +21 -32
  27. package/dist/auth/audit-log/builders.js +2 -3
  28. package/dist/auth/audit-log/events.js +2 -2
  29. package/dist/auth/audit-log/plugin.js +30 -61
  30. package/dist/auth/audit-log-ingestor.js +19 -41
  31. package/dist/auth/auth-generator.js +16 -41
  32. package/dist/auth/better-auth-entities.js +3 -4
  33. package/dist/auth/index.js +2 -3
  34. package/dist/auth/knex-adapter.js +18 -45
  35. package/dist/auth/plugins/entity-definitions/admin.js +2 -2
  36. package/dist/auth/plugins/entity-definitions/anonymous.js +2 -2
  37. package/dist/auth/plugins/entity-definitions/api-key.js +2 -2
  38. package/dist/auth/plugins/entity-definitions/audit-log.js +2 -2
  39. package/dist/auth/plugins/entity-definitions/index.js +2 -3
  40. package/dist/auth/plugins/entity-definitions/jwt.js +2 -2
  41. package/dist/auth/plugins/entity-definitions/organization.js +2 -2
  42. package/dist/auth/plugins/entity-definitions/passkey.js +2 -2
  43. package/dist/auth/plugins/entity-definitions/phone-number.js +2 -2
  44. package/dist/auth/plugins/entity-definitions/sso.js +2 -2
  45. package/dist/auth/plugins/entity-definitions/two-factor.js +2 -2
  46. package/dist/auth/plugins/entity-definitions/types.js +1 -1
  47. package/dist/auth/plugins/entity-definitions/username.js +2 -2
  48. package/dist/auth/plugins/index.js +1 -2
  49. package/dist/auth/plugins/wrappers/admin.js +2 -3
  50. package/dist/auth/plugins/wrappers/anonymous.js +2 -3
  51. package/dist/auth/plugins/wrappers/api-key.js +2 -3
  52. package/dist/auth/plugins/wrappers/index.js +1 -2
  53. package/dist/auth/plugins/wrappers/jwt.js +2 -3
  54. package/dist/auth/plugins/wrappers/organization.js +2 -3
  55. package/dist/auth/plugins/wrappers/passkey.js +2 -3
  56. package/dist/auth/plugins/wrappers/phone-number.js +2 -3
  57. package/dist/auth/plugins/wrappers/sso.js +2 -3
  58. package/dist/auth/plugins/wrappers/two-factor.js +2 -3
  59. package/dist/auth/plugins/wrappers/username.js +2 -3
  60. package/dist/bin/build-config.js +2 -2
  61. package/dist/bin/cli.js +151 -258
  62. package/dist/bin/fixture.d.ts.map +1 -1
  63. package/dist/bin/fixture.js +55 -97
  64. package/dist/bin/hmr-hook-register.js +3 -3
  65. package/dist/bin/migrate-targets.d.ts +3 -0
  66. package/dist/bin/migrate-targets.d.ts.map +1 -0
  67. package/dist/bin/migrate-targets.js +11 -0
  68. package/dist/bin/test-command.js +25 -55
  69. package/dist/bin/ts-loader-register.js +5 -6
  70. package/dist/bin/ts-loader-registration.js +6 -13
  71. package/dist/cache/cache-manager.js +3 -4
  72. package/dist/cache/decorator.js +11 -21
  73. package/dist/cache/drivers.js +2 -3
  74. package/dist/cache/index.js +2 -3
  75. package/dist/cache/types.js +1 -1
  76. package/dist/cache-control/cache-control.js +21 -34
  77. package/dist/cache-control/types.js +1 -1
  78. package/dist/compress/compress.js +10 -10
  79. package/dist/compress/index.js +1 -2
  80. package/dist/compress/types.js +1 -1
  81. package/dist/cone/cone-generator.js +25 -63
  82. package/dist/database/_batch_update.js +26 -46
  83. package/dist/database/base-model.js +44 -97
  84. package/dist/database/base-model.types.js +1 -1
  85. package/dist/database/db.d.ts +8 -14
  86. package/dist/database/db.d.ts.map +1 -1
  87. package/dist/database/db.js +127 -72
  88. package/dist/database/knex.js +5 -8
  89. package/dist/database/puri-subset.types.js +1 -1
  90. package/dist/database/puri-wrapper.js +11 -15
  91. package/dist/database/puri.js +117 -234
  92. package/dist/database/puri.types.js +3 -4
  93. package/dist/database/transaction-context.js +4 -5
  94. package/dist/database/upsert-builder.js +109 -176
  95. package/dist/dict/en.d.ts +1 -0
  96. package/dist/dict/en.d.ts.map +1 -1
  97. package/dist/dict/en.js +4 -4
  98. package/dist/dict/index.js +2 -3
  99. package/dist/dict/ko.d.ts +1 -0
  100. package/dist/dict/ko.d.ts.map +1 -1
  101. package/dist/dict/ko.js +4 -4
  102. package/dist/dict/rc-keys.js +3 -4
  103. package/dist/dict/sd.js +8 -19
  104. package/dist/dict/sonamu-dictionary.js +141 -284
  105. package/dist/dict/types.js +1 -1
  106. package/dist/dict/utils.js +4 -5
  107. package/dist/entity/entity-manager.d.ts +2 -2
  108. package/dist/entity/entity-manager.js +34 -82
  109. package/dist/entity/entity-template-cone.js +33 -66
  110. package/dist/entity/entity.js +156 -310
  111. package/dist/env.d.ts +14 -0
  112. package/dist/env.d.ts.map +1 -0
  113. package/dist/env.js +75 -0
  114. package/dist/exceptions/error-handler.js +2 -3
  115. package/dist/exceptions/so-exceptions.js +7 -5
  116. package/dist/filter/index.js +1 -2
  117. package/dist/filter/types.js +3 -4
  118. package/dist/filter/utils.js +21 -54
  119. package/dist/index.js +8 -7
  120. package/dist/logger/category.js +6 -12
  121. package/dist/logger/configure.js +23 -34
  122. package/dist/migration/code-generation.js +146 -314
  123. package/dist/migration/index-where-predicate.js +52 -144
  124. package/dist/migration/migration-set.js +19 -33
  125. package/dist/migration/migrator.d.ts +2 -0
  126. package/dist/migration/migrator.d.ts.map +1 -1
  127. package/dist/migration/migrator.js +69 -53
  128. package/dist/migration/postgresql-schema-reader.js +126 -225
  129. package/dist/migration/slack-confirm.d.ts +1 -0
  130. package/dist/migration/slack-confirm.d.ts.map +1 -1
  131. package/dist/migration/slack-confirm.js +28 -38
  132. package/dist/migration/types.js +1 -1
  133. package/dist/naite/messaging-types.js +1 -1
  134. package/dist/naite/naite-reporter.js +15 -32
  135. package/dist/naite/naite.js +43 -76
  136. package/dist/ssr/index.js +6 -9
  137. package/dist/ssr/registry.js +10 -18
  138. package/dist/ssr/renderer.js +10 -21
  139. package/dist/ssr/types.js +1 -1
  140. package/dist/storage/base-file.js +5 -10
  141. package/dist/storage/buffered-file.js +3 -4
  142. package/dist/storage/drivers.js +2 -3
  143. package/dist/storage/index.js +2 -3
  144. package/dist/storage/s3-driver.js +5 -9
  145. package/dist/storage/storage-manager.js +5 -5
  146. package/dist/storage/types.js +1 -1
  147. package/dist/storage/uploaded-file.js +4 -6
  148. package/dist/stream/index.js +1 -2
  149. package/dist/stream/sse.js +8 -13
  150. package/dist/stream/ws-audience-resolver.js +5 -5
  151. package/dist/stream/ws-audience.js +3 -4
  152. package/dist/stream/ws-cluster-bus.js +3 -4
  153. package/dist/stream/ws-core.js +1 -1
  154. package/dist/stream/ws-delivery.js +11 -25
  155. package/dist/stream/ws-local-connection-store.js +9 -18
  156. package/dist/stream/ws-presence-store.js +43 -97
  157. package/dist/stream/ws-registry.js +17 -22
  158. package/dist/stream/ws-telemetry-memory.js +38 -45
  159. package/dist/stream/ws-telemetry-trace.js +4 -6
  160. package/dist/stream/ws-telemetry.js +82 -135
  161. package/dist/stream/ws.js +47 -91
  162. package/dist/syncer/api-parser.js +81 -147
  163. package/dist/syncer/checksum.js +9 -20
  164. package/dist/syncer/code-generator.js +29 -47
  165. package/dist/syncer/entity-operations.js +17 -27
  166. package/dist/syncer/event-batcher.js +8 -15
  167. package/dist/syncer/file-patterns.js +3 -4
  168. package/dist/syncer/file-tracking.js +6 -10
  169. package/dist/syncer/index.js +1 -2
  170. package/dist/syncer/module-loader.js +10 -26
  171. package/dist/syncer/syncer-actions.js +19 -37
  172. package/dist/syncer/syncer.js +46 -98
  173. package/dist/syncer/watcher.js +12 -26
  174. package/dist/tasks/decorator.js +7 -11
  175. package/dist/tasks/step-wrapper.js +7 -8
  176. package/dist/tasks/workflow-manager.js +18 -25
  177. package/dist/template/entity-converter.js +40 -64
  178. package/dist/template/helpers.js +32 -63
  179. package/dist/template/implementations/entity.template.js +7 -11
  180. package/dist/template/implementations/entry-server.template.js +2 -3
  181. package/dist/template/implementations/generated.template.js +25 -51
  182. package/dist/template/implementations/generated_http.template.js +31 -58
  183. package/dist/template/implementations/generated_sso.template.js +45 -85
  184. package/dist/template/implementations/init_types.template.js +4 -7
  185. package/dist/template/implementations/model.template.js +5 -10
  186. package/dist/template/implementations/model_test.template.js +2 -3
  187. package/dist/template/implementations/queries.template.js +4 -7
  188. package/dist/template/implementations/sd.template.js +17 -35
  189. package/dist/template/implementations/services.template.js +18 -30
  190. package/dist/template/implementations/view_form.template.js +72 -125
  191. package/dist/template/implementations/view_id_all_select.template.js +2 -3
  192. package/dist/template/implementations/view_list.template.js +86 -143
  193. package/dist/template/implementations/view_search_input.template.js +2 -3
  194. package/dist/template/index.js +5 -8
  195. package/dist/template/template-manager.js +13 -26
  196. package/dist/template/template-types.js +2 -3
  197. package/dist/template/template.js +7 -11
  198. package/dist/template/zod-converter.js +173 -348
  199. package/dist/testing/_relation-graph.js +18 -37
  200. package/dist/testing/bootstrap.js +5 -8
  201. package/dist/testing/data-explorer.js +34 -78
  202. package/dist/testing/dev-test-routes.js +54 -60
  203. package/dist/testing/dev-vitest-manager.js +33 -84
  204. package/dist/testing/faker-mappings.js +3 -4
  205. package/dist/testing/fixture-generator.d.ts +2 -1
  206. package/dist/testing/fixture-generator.d.ts.map +1 -1
  207. package/dist/testing/fixture-generator.js +159 -321
  208. package/dist/testing/fixture-loader.js +2 -2
  209. package/dist/testing/fixture-manager.d.ts.map +1 -1
  210. package/dist/testing/fixture-manager.js +124 -227
  211. package/dist/testing/global-setup.d.ts.map +1 -1
  212. package/dist/testing/global-setup.js +29 -17
  213. package/dist/testing/index.js +1 -2
  214. package/dist/testing/naite-vitest-reporter.js +2 -3
  215. package/dist/testing/parallel-db-manager.js +5 -3
  216. package/dist/testing/vitest-helpers.d.ts.map +1 -1
  217. package/dist/testing/vitest-helpers.js +15 -12
  218. package/dist/types/types.d.ts +14 -14
  219. package/dist/types/types.js +27 -50
  220. package/dist/ui/ai-api.js +6 -11
  221. package/dist/ui/ai-client.js +86 -134
  222. package/dist/ui/api.js +99 -195
  223. package/dist/ui/cdd-service.js +78 -130
  224. package/dist/ui/cdd-types.js +1 -1
  225. package/dist/ui-web/assets/{index-Df8q-fhb.js → index-DFStGyd0.js} +49 -49
  226. package/dist/ui-web/assets/index-Dx4ap5i4.css +1 -0
  227. package/dist/ui-web/index.html +2 -2
  228. package/dist/utils/async-utils.js +13 -25
  229. package/dist/utils/class-name.js +3 -4
  230. package/dist/utils/console-util.js +11 -26
  231. package/dist/utils/controller.d.ts.map +1 -1
  232. package/dist/utils/controller.js +14 -12
  233. package/dist/utils/esm-utils.js +5 -8
  234. package/dist/utils/formatter.js +10 -22
  235. package/dist/utils/fs-utils.js +14 -25
  236. package/dist/utils/lodash-able.js +3 -4
  237. package/dist/utils/model.js +7 -14
  238. package/dist/utils/object-utils.js +41 -73
  239. package/dist/utils/path-utils.js +5 -9
  240. package/dist/utils/process-utils.js +4 -7
  241. package/dist/utils/sql-parser.js +6 -13
  242. package/dist/utils/type-utils.js +16 -26
  243. package/dist/utils/utils.js +18 -40
  244. package/dist/utils/zod-error.js +9 -16
  245. package/dist/vector/chunking.js +24 -37
  246. package/dist/vector/config.js +2 -2
  247. package/dist/vector/embedding.js +8 -19
  248. package/dist/vector/index.js +1 -2
  249. package/dist/vector/types.js +1 -1
  250. package/package.json +6 -6
  251. package/src/__tests__/env.test.ts +127 -0
  252. package/src/api/__tests__/config.test.ts +10 -1
  253. package/src/api/config.ts +4 -12
  254. package/src/api/sonamu.ts +14 -4
  255. package/src/bin/__tests__/migrate-targets.test.ts +28 -0
  256. package/src/bin/__tests__/test-command.test.ts +82 -1
  257. package/src/bin/cli.ts +9 -18
  258. package/src/bin/fixture.ts +5 -4
  259. package/src/bin/migrate-targets.ts +7 -0
  260. package/src/bin/test-command.ts +2 -2
  261. package/src/database/__tests__/db.test.ts +175 -0
  262. package/src/database/db.ts +193 -71
  263. package/src/dict/en.ts +2 -0
  264. package/src/dict/ko.ts +2 -0
  265. package/src/env.ts +123 -0
  266. package/src/migration/__tests__/migrator.test.ts +149 -0
  267. package/src/migration/migrator.ts +74 -17
  268. package/src/migration/slack-confirm.ts +21 -0
  269. package/src/skills/sonamu/database.md +1 -1
  270. package/src/skills/sonamu/testing-devrunner.md +1 -1
  271. package/src/stream/ws-telemetry-memory.ts +2 -2
  272. package/src/testing/fixture-generator.ts +2 -1
  273. package/src/testing/fixture-manager.ts +3 -4
  274. package/src/testing/global-setup.ts +42 -18
  275. package/src/testing/vitest-helpers.ts +14 -0
  276. package/src/utils/controller.ts +14 -7
  277. package/tsdown.api.config.ts +6 -0
  278. package/dist/_virtual/rolldown_runtime.js +0 -39
  279. package/dist/ui-web/assets/index-D4rYm-Xz.css +0 -1
@@ -1,12 +1,11 @@
1
1
  import inflection from "inflection";
2
2
  import { randomUUID } from "node:crypto";
3
-
4
3
  //#region src/tasks/decorator.ts
5
4
  function workflow(options, fn) {
6
- const decorated = (fn$1) => {
5
+ const decorated = (fn) => {
7
6
  const id = randomUUID();
8
- const workflowName = options.name ?? inflection.underscore(fn$1.name);
9
- const metadata = {
7
+ const workflowName = options.name ?? inflection.underscore(fn.name);
8
+ return {
10
9
  type: "workflow",
11
10
  id,
12
11
  name: workflowName,
@@ -19,17 +18,14 @@ function workflow(options, fn) {
19
18
  input: schedule.input
20
19
  };
21
20
  }),
22
- fn: fn$1,
21
+ fn,
23
22
  retryPolicy: options.retryPolicy
24
23
  };
25
- return metadata;
26
24
  };
27
- if (!fn) {
28
- return decorated;
29
- }
25
+ if (!fn) return decorated;
30
26
  return decorated(fn);
31
27
  }
32
-
33
28
  //#endregion
34
29
  export { workflow };
35
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9yLmpzIiwibmFtZXMiOlsiZm4iLCJtZXRhZGF0YTogV29ya2Zsb3dNZXRhZGF0YSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrcy9kZWNvcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuXG5pbXBvcnQge1xuICB0eXBlIFJldHJ5UG9saWN5LFxuICB0eXBlIFNjaGVtYUlucHV0LFxuICB0eXBlIFNjaGVtYU91dHB1dCxcbiAgdHlwZSBTdGFuZGFyZFNjaGVtYVYxLFxuICB0eXBlIFdvcmtmbG93U3BlYyxcbn0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzL2ludGVybmFsXCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuXG5pbXBvcnQgeyB0eXBlIEV4ZWN1dGFibGUgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgV29ya2Zsb3dGdW5jdGlvbiB9IGZyb20gXCIuL3dvcmtmbG93LW1hbmFnZXJcIjtcblxuLy8g7JuM7YGs7ZSM66Gc7Jqw7J2YIOuplO2DgOuNsOydtO2EsCDqsJ3ssrRcbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dNZXRhZGF0YSB7XG4gIHR5cGU6IFwid29ya2Zsb3dcIjtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBzY2hlbWE6IFN0YW5kYXJkU2NoZW1hVjE8dW5rbm93biwgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIHNjaGVkdWxlczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBleHByZXNzaW9uOiBzdHJpbmc7XG4gICAgaW5wdXQ6IEV4ZWN1dGFibGU8U2NoZW1hSW5wdXQ8dW5rbm93biwgdW5rbm93bj4gfCB1bmRlZmluZWQ+O1xuICB9W107XG4gIGZuOiBXb3JrZmxvd0Z1bmN0aW9uPHVua25vd24sIHVua25vd24+O1xuICByZXRyeVBvbGljeT86IFJldHJ5UG9saWN5O1xufVxuXG4vLyDsm4ztgaztlIzroZzsmrAg7KCV7J2YIOqzvOygleyXkOyEnOydmCDsmLXshZhcbmV4cG9ydCB0eXBlIERlZmluZVdvcmtmbG93T3B0aW9uczxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4+ID0gT21pdDxcbiAgV29ya2Zsb3dTcGVjPFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dCwgU2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+PixcbiAgXCJuYW1lXCJcbj4gJiB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHNjaGVkdWxlcz86IHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGV4cHJlc3Npb246IHN0cmluZztcbiAgICBpbnB1dD86IEV4ZWN1dGFibGU8U2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+IHwgdW5kZWZpbmVkPjtcbiAgfVtdO1xuICByZXRyeVBvbGljeT86IFJldHJ5UG9saWN5O1xufTtcblxuLy8g7JuM7YGs7ZSM66Gc7JqwIOygleydmOulvCDsnITtlZwg642w7L2U66CI7J207YSwLFxuLy8g7J206rKD65Ok7J2AIHN5bmNlcuyXkOyEnCDtlZzrsojsl5AgbG9hZO2VnCDri6TsnYwsIFdvcmtmbG93TWFuYWdlcuyXkOyEnCBzeW5jaHJvbml6ZeulvCDthrXtlbQg65Ox66Gd65CoLlxuZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93PElucHV0LCBPdXRwdXQsIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgb3B0aW9uczogRGVmaW5lV29ya2Zsb3dPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LFxuKTogKGZuOiBXb3JrZmxvd0Z1bmN0aW9uPFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dD4pID0+IFdvcmtmbG93TWV0YWRhdGE7XG5leHBvcnQgZnVuY3Rpb24gd29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICBvcHRpb25zOiBEZWZpbmVXb3JrZmxvd09wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sXG4gIGZuOiBXb3JrZmxvd0Z1bmN0aW9uPFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dD4sXG4pOiBXb3JrZmxvd01ldGFkYXRhO1xuZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93PElucHV0LCBPdXRwdXQsIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgb3B0aW9uczogRGVmaW5lV29ya2Zsb3dPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LFxuICBmbj86IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0Pixcbik6XG4gIHwgV29ya2Zsb3dNZXRhZGF0YVxuICB8ICgoZm46IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0PikgPT4gV29ya2Zsb3dNZXRhZGF0YSkge1xuICBjb25zdCBkZWNvcmF0ZWQgPSAoZm46IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0PikgPT4ge1xuICAgIGNvbnN0IGlkID0gcmFuZG9tVVVJRCgpO1xuICAgIGNvbnN0IHdvcmtmbG93TmFtZSA9IG9wdGlvbnMubmFtZSA/PyBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZm4ubmFtZSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YTogV29ya2Zsb3dNZXRhZGF0YSA9IHtcbiAgICAgIHR5cGU6IFwid29ya2Zsb3dcIiBhcyBjb25zdCxcbiAgICAgIGlkLFxuICAgICAgbmFtZTogd29ya2Zsb3dOYW1lLFxuICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyBudWxsLFxuICAgICAgc2NoZWR1bGVzOiAob3B0aW9ucy5zY2hlZHVsZXMgPz8gW10pLm1hcCgoc2NoZWR1bGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBzY2hlZHVsZS5uYW1lID8/IGAke3dvcmtmbG93TmFtZX1bJHtzY2hlZHVsZS5leHByZXNzaW9ufV1gLFxuICAgICAgICAgIGV4cHJlc3Npb246IHNjaGVkdWxlLmV4cHJlc3Npb24sXG4gICAgICAgICAgaW5wdXQ6IHNjaGVkdWxlLmlucHV0LFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICBmbjogZm4gYXMgV29ya2Zsb3dGdW5jdGlvbjx1bmtub3duLCB1bmtub3duPixcbiAgICAgIHJldHJ5UG9saWN5OiBvcHRpb25zLnJldHJ5UG9saWN5LFxuICAgIH07XG5cbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG5cbiAgaWYgKCFmbikge1xuICAgIHJldHVybiBkZWNvcmF0ZWQ7XG4gIH1cblxuICByZXR1cm4gZGVjb3JhdGVkKGZuKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQXlEQSxTQUFnQixTQUNkLFNBQ0EsSUFHcUY7Q0FDckYsTUFBTSxhQUFhLFNBQStEO0VBQ2hGLE1BQU0sS0FBSyxZQUFZO0VBQ3ZCLE1BQU0sZUFBZSxRQUFRLFFBQVEsV0FBVyxXQUFXQSxLQUFHLEtBQUs7RUFFbkUsTUFBTUMsV0FBNkI7R0FDakMsTUFBTTtHQUNOO0dBQ0EsTUFBTTtHQUNOLFFBQVEsUUFBUTtHQUNoQixTQUFTLFFBQVEsV0FBVztHQUM1QixZQUFZLFFBQVEsYUFBYSxFQUFFLEVBQUUsS0FBSyxhQUFhO0FBQ3JELFdBQU87S0FDTCxNQUFNLFNBQVMsUUFBUSxHQUFHLGFBQWEsR0FBRyxTQUFTLFdBQVc7S0FDOUQsWUFBWSxTQUFTO0tBQ3JCLE9BQU8sU0FBUztLQUNqQjtLQUNEO0dBQ0YsSUFBSUQ7R0FDSixhQUFhLFFBQVE7R0FDdEI7QUFFRCxTQUFPOztBQUdULEtBQUksQ0FBQyxJQUFJO0FBQ1AsU0FBTzs7QUFHVCxRQUFPLFVBQVUsR0FBRyJ9
30
+
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9yLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrcy9kZWNvcmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmFuZG9tVVVJRCB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuXG5pbXBvcnQge1xuICB0eXBlIFJldHJ5UG9saWN5LFxuICB0eXBlIFNjaGVtYUlucHV0LFxuICB0eXBlIFNjaGVtYU91dHB1dCxcbiAgdHlwZSBTdGFuZGFyZFNjaGVtYVYxLFxuICB0eXBlIFdvcmtmbG93U3BlYyxcbn0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzL2ludGVybmFsXCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuXG5pbXBvcnQgeyB0eXBlIEV4ZWN1dGFibGUgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgV29ya2Zsb3dGdW5jdGlvbiB9IGZyb20gXCIuL3dvcmtmbG93LW1hbmFnZXJcIjtcblxuLy8g7JuM7YGs7ZSM66Gc7Jqw7J2YIOuplO2DgOuNsOydtO2EsCDqsJ3ssrRcbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dNZXRhZGF0YSB7XG4gIHR5cGU6IFwid29ya2Zsb3dcIjtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBzY2hlbWE6IFN0YW5kYXJkU2NoZW1hVjE8dW5rbm93biwgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIHNjaGVkdWxlczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBleHByZXNzaW9uOiBzdHJpbmc7XG4gICAgaW5wdXQ6IEV4ZWN1dGFibGU8U2NoZW1hSW5wdXQ8dW5rbm93biwgdW5rbm93bj4gfCB1bmRlZmluZWQ+O1xuICB9W107XG4gIGZuOiBXb3JrZmxvd0Z1bmN0aW9uPHVua25vd24sIHVua25vd24+O1xuICByZXRyeVBvbGljeT86IFJldHJ5UG9saWN5O1xufVxuXG4vLyDsm4ztgaztlIzroZzsmrAg7KCV7J2YIOqzvOygleyXkOyEnOydmCDsmLXshZhcbmV4cG9ydCB0eXBlIERlZmluZVdvcmtmbG93T3B0aW9uczxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4+ID0gT21pdDxcbiAgV29ya2Zsb3dTcGVjPFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dCwgU2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+PixcbiAgXCJuYW1lXCJcbj4gJiB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHNjaGVkdWxlcz86IHtcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIGV4cHJlc3Npb246IHN0cmluZztcbiAgICBpbnB1dD86IEV4ZWN1dGFibGU8U2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+IHwgdW5kZWZpbmVkPjtcbiAgfVtdO1xuICByZXRyeVBvbGljeT86IFJldHJ5UG9saWN5O1xufTtcblxuLy8g7JuM7YGs7ZSM66Gc7JqwIOygleydmOulvCDsnITtlZwg642w7L2U66CI7J207YSwLFxuLy8g7J206rKD65Ok7J2AIHN5bmNlcuyXkOyEnCDtlZzrsojsl5AgbG9hZO2VnCDri6TsnYwsIFdvcmtmbG93TWFuYWdlcuyXkOyEnCBzeW5jaHJvbml6ZeulvCDthrXtlbQg65Ox66Gd65CoLlxuZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93PElucHV0LCBPdXRwdXQsIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgb3B0aW9uczogRGVmaW5lV29ya2Zsb3dPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LFxuKTogKGZuOiBXb3JrZmxvd0Z1bmN0aW9uPFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dD4pID0+IFdvcmtmbG93TWV0YWRhdGE7XG5leHBvcnQgZnVuY3Rpb24gd29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICBvcHRpb25zOiBEZWZpbmVXb3JrZmxvd09wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sXG4gIGZuOiBXb3JrZmxvd0Z1bmN0aW9uPFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dD4sXG4pOiBXb3JrZmxvd01ldGFkYXRhO1xuZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93PElucHV0LCBPdXRwdXQsIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgb3B0aW9uczogRGVmaW5lV29ya2Zsb3dPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LFxuICBmbj86IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0Pixcbik6XG4gIHwgV29ya2Zsb3dNZXRhZGF0YVxuICB8ICgoZm46IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0PikgPT4gV29ya2Zsb3dNZXRhZGF0YSkge1xuICBjb25zdCBkZWNvcmF0ZWQgPSAoZm46IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0PikgPT4ge1xuICAgIGNvbnN0IGlkID0gcmFuZG9tVVVJRCgpO1xuICAgIGNvbnN0IHdvcmtmbG93TmFtZSA9IG9wdGlvbnMubmFtZSA/PyBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoZm4ubmFtZSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YTogV29ya2Zsb3dNZXRhZGF0YSA9IHtcbiAgICAgIHR5cGU6IFwid29ya2Zsb3dcIiBhcyBjb25zdCxcbiAgICAgIGlkLFxuICAgICAgbmFtZTogd29ya2Zsb3dOYW1lLFxuICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcbiAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyBudWxsLFxuICAgICAgc2NoZWR1bGVzOiAob3B0aW9ucy5zY2hlZHVsZXMgPz8gW10pLm1hcCgoc2NoZWR1bGUpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBzY2hlZHVsZS5uYW1lID8/IGAke3dvcmtmbG93TmFtZX1bJHtzY2hlZHVsZS5leHByZXNzaW9ufV1gLFxuICAgICAgICAgIGV4cHJlc3Npb246IHNjaGVkdWxlLmV4cHJlc3Npb24sXG4gICAgICAgICAgaW5wdXQ6IHNjaGVkdWxlLmlucHV0LFxuICAgICAgICB9O1xuICAgICAgfSksXG4gICAgICBmbjogZm4gYXMgV29ya2Zsb3dGdW5jdGlvbjx1bmtub3duLCB1bmtub3duPixcbiAgICAgIHJldHJ5UG9saWN5OiBvcHRpb25zLnJldHJ5UG9saWN5LFxuICAgIH07XG5cbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG5cbiAgaWYgKCFmbikge1xuICAgIHJldHVybiBkZWNvcmF0ZWQ7XG4gIH1cblxuICByZXR1cm4gZGVjb3JhdGVkKGZuKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBeURBLFNBQWdCLFNBQ2QsU0FDQSxJQUdxRjtDQUNyRixNQUFNLGFBQWEsT0FBK0Q7RUFDaEYsTUFBTSxLQUFLLFdBQVc7RUFDdEIsTUFBTSxlQUFlLFFBQVEsUUFBUSxXQUFXLFdBQVcsR0FBRyxJQUFJO0VBbUJsRSxPQUFPO0dBaEJMLE1BQU07R0FDTjtHQUNBLE1BQU07R0FDTixRQUFRLFFBQVE7R0FDaEIsU0FBUyxRQUFRLFdBQVc7R0FDNUIsWUFBWSxRQUFRLGFBQWEsQ0FBQyxFQUFBLENBQUcsS0FBSyxhQUFhO0lBQ3JELE9BQU87S0FDTCxNQUFNLFNBQVMsUUFBUSxHQUFHLGFBQWEsR0FBRyxTQUFTLFdBQVc7S0FDOUQsWUFBWSxTQUFTO0tBQ3JCLE9BQU8sU0FBUztJQUNsQjtHQUNGLENBQUM7R0FDRztHQUNKLGFBQWEsUUFBUTtFQUdoQjtDQUNUO0NBRUEsSUFBSSxDQUFDLElBQ0gsT0FBTztDQUdULE9BQU8sVUFBVSxFQUFFO0FBQ3JCIn0=
@@ -1,6 +1,5 @@
1
- import { __esmMin } from "../_virtual/rolldown_runtime.js";
1
+ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
2
  import inflection from "inflection";
3
-
4
3
  //#region src/tasks/step-wrapper.ts
5
4
  var StepWrapper;
6
5
  var init_step_wrapper = __esmMin((() => {
@@ -16,15 +15,15 @@ var init_step_wrapper = __esmMin((() => {
16
15
  const [rawObject, methodName] = args;
17
16
  const method = rawObject[methodName];
18
17
  config = { name: inflection.underscore(methodName.toString()) };
19
- fn = (...args$1) => method.bind(rawObject)(...args$1);
18
+ fn = (...args) => method.bind(rawObject)(...args);
20
19
  } else {
21
20
  const [rawConfig, rawObject, name] = args;
22
21
  const method = rawObject[name];
23
22
  config = { name: rawConfig.name ?? inflection.underscore(name.toString()) };
24
- fn = (...args$1) => method.bind(rawObject)(...args$1);
23
+ fn = (...args) => method.bind(rawObject)(...args);
25
24
  }
26
- return { run: ((stepApi, ...args$1) => {
27
- return stepApi.run(config, () => fn(...args$1));
25
+ return { run: ((stepApi, ...args) => {
26
+ return stepApi.run(config, () => fn(...args));
28
27
  }).bind(null, this.#stepApi) };
29
28
  }
30
29
  define(config, fn) {
@@ -37,8 +36,8 @@ var init_step_wrapper = __esmMin((() => {
37
36
  }
38
37
  };
39
38
  }));
40
-
41
39
  //#endregion
42
40
  init_step_wrapper();
43
41
  export { StepWrapper, init_step_wrapper };
44
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC13cmFwcGVyLmpzIiwibmFtZXMiOlsiI3N0ZXBBcGkiLCJjb25maWc6IHsgbmFtZTogc3RyaW5nIH0iLCJmbjogU3RlcEZ1bmN0aW9uPFRBcmdzLCBFeGNsdWRlPFRSZXN1bHQsIG5ldmVyPj4iLCJhcmdzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rhc2tzL3N0ZXAtd3JhcHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIER1cmF0aW9uU3RyaW5nLCB0eXBlIFN0ZXBBcGkgfSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3MvaW50ZXJuYWxcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5cbmV4cG9ydCB0eXBlIFN0ZXBGdW5jdGlvbjxUQXJncyBleHRlbmRzIHVua25vd25bXSwgVFJlc3VsdD4gPSAoLi4uYXJnczogVEFyZ3MpID0+IFRSZXN1bHQ7XG5leHBvcnQgdHlwZSBSdW5uYWJsZVN0ZXA8VEFyZ3MgZXh0ZW5kcyB1bmtub3duW10sIFRSZXN1bHQ+ID0ge1xuICBydW46IFN0ZXBGdW5jdGlvbjxUQXJncywgUHJvbWlzZTxUUmVzdWx0Pj47XG59O1xuXG5leHBvcnQgdHlwZSBNZXRob2ROYW1lczxULCBUS2V5IGV4dGVuZHMga2V5b2YgVD4gPSBUW1RLZXldIGV4dGVuZHMgKFxuICAuLi5hcmdzOiBpbmZlciBfVEFyZ3NcbikgPT4gaW5mZXIgX1RSZXN1bHRcbiAgPyBUS2V5XG4gIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIE1ldGhvZEFyZ3VtZW50czxULCBUS2V5IGV4dGVuZHMga2V5b2YgVD4gPSBUW1RLZXldIGV4dGVuZHMgKFxuICAuLi5hcmdzOiBpbmZlciBUQXJnc1xuKSA9PiB1bmtub3duXG4gID8gVEFyZ3NcbiAgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgTWV0aG9kUmV0dXJuVHlwZTxULCBUS2V5IGV4dGVuZHMga2V5b2YgVD4gPSBUW1RLZXldIGV4dGVuZHMgKFxuICB0aGlzOiBULFxuICAuLi5hcmdzOiBpbmZlciBfVEFyZ3NcbikgPT4gaW5mZXIgVFJlc3VsdFxuICA/IFRSZXN1bHRcbiAgOiBuZXZlcjtcblxuZXhwb3J0IGNsYXNzIFN0ZXBXcmFwcGVyIHtcbiAgcmVhZG9ubHkgI3N0ZXBBcGk6IFN0ZXBBcGk7XG5cbiAgY29uc3RydWN0b3Ioc3RlcEFwaTogU3RlcEFwaSkge1xuICAgIHRoaXMuI3N0ZXBBcGkgPSBzdGVwQXBpO1xuICB9XG5cbiAgZ2V0PFxuICAgIFQsXG4gICAgVEtleSBleHRlbmRzIGtleW9mIFQsXG4gICAgVEFyZ3MgZXh0ZW5kcyBNZXRob2RBcmd1bWVudHM8VCwgVEtleT4sXG4gICAgVFJlc3VsdCBleHRlbmRzIE1ldGhvZFJldHVyblR5cGU8VCwgVEtleT4sXG4gID4oY29uZmlnOiB7IG5hbWU6IHN0cmluZyB9LCBvYmplY3Q6IFQsIG5hbWU6IE1ldGhvZE5hbWVzPFQsIFRLZXk+KTogUnVubmFibGVTdGVwPFRBcmdzLCBUUmVzdWx0PjtcbiAgZ2V0PFxuICAgIFQsXG4gICAgVEtleSBleHRlbmRzIGtleW9mIFQsXG4gICAgVEFyZ3MgZXh0ZW5kcyBNZXRob2RBcmd1bWVudHM8VCwgVEtleT4sXG4gICAgVFJlc3VsdCBleHRlbmRzIE1ldGhvZFJldHVyblR5cGU8VCwgVEtleT4sXG4gID4ob2JqZWN0OiBULCBuYW1lOiBNZXRob2ROYW1lczxULCBUS2V5Pik6IFJ1bm5hYmxlU3RlcDxUQXJncywgVFJlc3VsdD47XG4gIGdldDxcbiAgICBULFxuICAgIFRLZXkgZXh0ZW5kcyBrZXlvZiBULFxuICAgIFRBcmdzIGV4dGVuZHMgTWV0aG9kQXJndW1lbnRzPFQsIFRLZXk+LFxuICAgIFRSZXN1bHQgZXh0ZW5kcyBNZXRob2RSZXR1cm5UeXBlPFQsIFRLZXk+LFxuICA+KFxuICAgIC4uLmFyZ3M6IFt7IG5hbWU6IHN0cmluZyB9LCBULCBNZXRob2ROYW1lczxULCBUS2V5Pl0gfCBbVCwgTWV0aG9kTmFtZXM8VCwgVEtleT5dXG4gICk6IFJ1bm5hYmxlU3RlcDxUQXJncywgVFJlc3VsdD4ge1xuICAgIGxldCBjb25maWc6IHsgbmFtZTogc3RyaW5nIH07XG4gICAgbGV0IGZuOiBTdGVwRnVuY3Rpb248VEFyZ3MsIEV4Y2x1ZGU8VFJlc3VsdCwgbmV2ZXI+PjtcblxuICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMikge1xuICAgICAgY29uc3QgW3Jhd09iamVjdCwgbWV0aG9kTmFtZV0gPSBhcmdzO1xuICAgICAgY29uc3QgbWV0aG9kID0gcmF3T2JqZWN0W21ldGhvZE5hbWVdIGFzIENhbGxhYmxlRnVuY3Rpb247XG4gICAgICBjb25maWcgPSB7IG5hbWU6IGluZmxlY3Rpb24udW5kZXJzY29yZShtZXRob2ROYW1lLnRvU3RyaW5nKCkpIH07XG5cbiAgICAgIGZuID0gKC4uLmFyZ3M6IFRBcmdzKSA9PiBtZXRob2QuYmluZChyYXdPYmplY3QpKC4uLmFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBbcmF3Q29uZmlnLCByYXdPYmplY3QsIG5hbWVdID0gYXJncztcbiAgICAgIGNvbnN0IG1ldGhvZCA9IHJhd09iamVjdFtuYW1lXSBhcyBDYWxsYWJsZUZ1bmN0aW9uO1xuXG4gICAgICBjb25maWcgPSB7IG5hbWU6IHJhd0NvbmZpZy5uYW1lID8/IGluZmxlY3Rpb24udW5kZXJzY29yZShuYW1lLnRvU3RyaW5nKCkpIH07XG4gICAgICBmbiA9ICguLi5hcmdzOiBUQXJncykgPT4gbWV0aG9kLmJpbmQocmF3T2JqZWN0KSguLi5hcmdzKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcnVuOiAoKHN0ZXBBcGk6IFN0ZXBBcGksIC4uLmFyZ3M6IFRBcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBzdGVwQXBpLnJ1bihjb25maWcsICgpID0+IGZuKC4uLmFyZ3MpKTtcbiAgICAgIH0pLmJpbmQobnVsbCwgdGhpcy4jc3RlcEFwaSksXG4gICAgfTtcbiAgfVxuXG4gIGRlZmluZTxUQXJncyBleHRlbmRzIHVua25vd25bXSwgVFJlc3VsdD4oXG4gICAgY29uZmlnOiB7IG5hbWU6IHN0cmluZyB9LFxuICAgIGZuOiBTdGVwRnVuY3Rpb248VEFyZ3MsIFRSZXN1bHQ+LFxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgcnVuOiAoKHN0ZXBBcGk6IFN0ZXBBcGksIC4uLmFyZ3M6IFRBcmdzKSA9PiB7XG4gICAgICAgIHJldHVybiBzdGVwQXBpLnJ1bihjb25maWcsICgpID0+IGZuKC4uLmFyZ3MpKTtcbiAgICAgIH0pLmJpbmQobnVsbCwgdGhpcy4jc3RlcEFwaSksXG4gICAgfTtcbiAgfVxuXG4gIHNsZWVwKG5hbWU6IHN0cmluZywgZHVyYXRpb246IER1cmF0aW9uU3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuI3N0ZXBBcGkuc2xlZXAobmFtZSwgZHVyYXRpb24pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztDQTJCYSxjQUFiLE1BQXlCO0VBQ3ZCLENBQVNBO0VBRVQsWUFBWSxTQUFrQjtBQUM1QixTQUFLQSxVQUFXOztFQWVsQixJQU1FLEdBQUcsTUFDMkI7R0FDOUIsSUFBSUM7R0FDSixJQUFJQztBQUVKLE9BQUksS0FBSyxXQUFXLEdBQUc7SUFDckIsTUFBTSxDQUFDLFdBQVcsY0FBYztJQUNoQyxNQUFNLFNBQVMsVUFBVTtBQUN6QixhQUFTLEVBQUUsTUFBTSxXQUFXLFdBQVcsV0FBVyxVQUFVLENBQUMsRUFBRTtBQUUvRCxVQUFNLEdBQUdDLFdBQWdCLE9BQU8sS0FBSyxVQUFVLENBQUMsR0FBR0EsT0FBSztVQUNuRDtJQUNMLE1BQU0sQ0FBQyxXQUFXLFdBQVcsUUFBUTtJQUNyQyxNQUFNLFNBQVMsVUFBVTtBQUV6QixhQUFTLEVBQUUsTUFBTSxVQUFVLFFBQVEsV0FBVyxXQUFXLEtBQUssVUFBVSxDQUFDLEVBQUU7QUFDM0UsVUFBTSxHQUFHQSxXQUFnQixPQUFPLEtBQUssVUFBVSxDQUFDLEdBQUdBLE9BQUs7O0FBRzFELFVBQU8sRUFDTCxPQUFPLFNBQWtCLEdBQUdBLFdBQWdCO0FBQzFDLFdBQU8sUUFBUSxJQUFJLGNBQWMsR0FBRyxHQUFHQSxPQUFLLENBQUM7TUFDNUMsS0FBSyxNQUFNLE1BQUtILFFBQVMsRUFDN0I7O0VBR0gsT0FDRSxRQUNBLElBQ0E7QUFDQSxVQUFPLEVBQ0wsT0FBTyxTQUFrQixHQUFHLFNBQWdCO0FBQzFDLFdBQU8sUUFBUSxJQUFJLGNBQWMsR0FBRyxHQUFHLEtBQUssQ0FBQztNQUM1QyxLQUFLLE1BQU0sTUFBS0EsUUFBUyxFQUM3Qjs7RUFHSCxNQUFNLE1BQWMsVUFBMEI7QUFDNUMsVUFBTyxNQUFLQSxRQUFTLE1BQU0sTUFBTSxTQUFTIn0=
42
+
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC13cmFwcGVyLmpzIiwibmFtZXMiOlsiI3N0ZXBBcGkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3Mvc3RlcC13cmFwcGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRHVyYXRpb25TdHJpbmcsIHR5cGUgU3RlcEFwaSB9IGZyb20gXCJAc29uYW11LWtpdC90YXNrcy9pbnRlcm5hbFwiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcblxuZXhwb3J0IHR5cGUgU3RlcEZ1bmN0aW9uPFRBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBUUmVzdWx0PiA9ICguLi5hcmdzOiBUQXJncykgPT4gVFJlc3VsdDtcbmV4cG9ydCB0eXBlIFJ1bm5hYmxlU3RlcDxUQXJncyBleHRlbmRzIHVua25vd25bXSwgVFJlc3VsdD4gPSB7XG4gIHJ1bjogU3RlcEZ1bmN0aW9uPFRBcmdzLCBQcm9taXNlPFRSZXN1bHQ+Pjtcbn07XG5cbmV4cG9ydCB0eXBlIE1ldGhvZE5hbWVzPFQsIFRLZXkgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbVEtleV0gZXh0ZW5kcyAoXG4gIC4uLmFyZ3M6IGluZmVyIF9UQXJnc1xuKSA9PiBpbmZlciBfVFJlc3VsdFxuICA/IFRLZXlcbiAgOiBuZXZlcjtcblxuZXhwb3J0IHR5cGUgTWV0aG9kQXJndW1lbnRzPFQsIFRLZXkgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbVEtleV0gZXh0ZW5kcyAoXG4gIC4uLmFyZ3M6IGluZmVyIFRBcmdzXG4pID0+IHVua25vd25cbiAgPyBUQXJnc1xuICA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBNZXRob2RSZXR1cm5UeXBlPFQsIFRLZXkgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbVEtleV0gZXh0ZW5kcyAoXG4gIHRoaXM6IFQsXG4gIC4uLmFyZ3M6IGluZmVyIF9UQXJnc1xuKSA9PiBpbmZlciBUUmVzdWx0XG4gID8gVFJlc3VsdFxuICA6IG5ldmVyO1xuXG5leHBvcnQgY2xhc3MgU3RlcFdyYXBwZXIge1xuICByZWFkb25seSAjc3RlcEFwaTogU3RlcEFwaTtcblxuICBjb25zdHJ1Y3RvcihzdGVwQXBpOiBTdGVwQXBpKSB7XG4gICAgdGhpcy4jc3RlcEFwaSA9IHN0ZXBBcGk7XG4gIH1cblxuICBnZXQ8XG4gICAgVCxcbiAgICBUS2V5IGV4dGVuZHMga2V5b2YgVCxcbiAgICBUQXJncyBleHRlbmRzIE1ldGhvZEFyZ3VtZW50czxULCBUS2V5PixcbiAgICBUUmVzdWx0IGV4dGVuZHMgTWV0aG9kUmV0dXJuVHlwZTxULCBUS2V5PixcbiAgPihjb25maWc6IHsgbmFtZTogc3RyaW5nIH0sIG9iamVjdDogVCwgbmFtZTogTWV0aG9kTmFtZXM8VCwgVEtleT4pOiBSdW5uYWJsZVN0ZXA8VEFyZ3MsIFRSZXN1bHQ+O1xuICBnZXQ8XG4gICAgVCxcbiAgICBUS2V5IGV4dGVuZHMga2V5b2YgVCxcbiAgICBUQXJncyBleHRlbmRzIE1ldGhvZEFyZ3VtZW50czxULCBUS2V5PixcbiAgICBUUmVzdWx0IGV4dGVuZHMgTWV0aG9kUmV0dXJuVHlwZTxULCBUS2V5PixcbiAgPihvYmplY3Q6IFQsIG5hbWU6IE1ldGhvZE5hbWVzPFQsIFRLZXk+KTogUnVubmFibGVTdGVwPFRBcmdzLCBUUmVzdWx0PjtcbiAgZ2V0PFxuICAgIFQsXG4gICAgVEtleSBleHRlbmRzIGtleW9mIFQsXG4gICAgVEFyZ3MgZXh0ZW5kcyBNZXRob2RBcmd1bWVudHM8VCwgVEtleT4sXG4gICAgVFJlc3VsdCBleHRlbmRzIE1ldGhvZFJldHVyblR5cGU8VCwgVEtleT4sXG4gID4oXG4gICAgLi4uYXJnczogW3sgbmFtZTogc3RyaW5nIH0sIFQsIE1ldGhvZE5hbWVzPFQsIFRLZXk+XSB8IFtULCBNZXRob2ROYW1lczxULCBUS2V5Pl1cbiAgKTogUnVubmFibGVTdGVwPFRBcmdzLCBUUmVzdWx0PiB7XG4gICAgbGV0IGNvbmZpZzogeyBuYW1lOiBzdHJpbmcgfTtcbiAgICBsZXQgZm46IFN0ZXBGdW5jdGlvbjxUQXJncywgRXhjbHVkZTxUUmVzdWx0LCBuZXZlcj4+O1xuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICBjb25zdCBbcmF3T2JqZWN0LCBtZXRob2ROYW1lXSA9IGFyZ3M7XG4gICAgICBjb25zdCBtZXRob2QgPSByYXdPYmplY3RbbWV0aG9kTmFtZV0gYXMgQ2FsbGFibGVGdW5jdGlvbjtcbiAgICAgIGNvbmZpZyA9IHsgbmFtZTogaW5mbGVjdGlvbi51bmRlcnNjb3JlKG1ldGhvZE5hbWUudG9TdHJpbmcoKSkgfTtcblxuICAgICAgZm4gPSAoLi4uYXJnczogVEFyZ3MpID0+IG1ldGhvZC5iaW5kKHJhd09iamVjdCkoLi4uYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFtyYXdDb25maWcsIHJhd09iamVjdCwgbmFtZV0gPSBhcmdzO1xuICAgICAgY29uc3QgbWV0aG9kID0gcmF3T2JqZWN0W25hbWVdIGFzIENhbGxhYmxlRnVuY3Rpb247XG5cbiAgICAgIGNvbmZpZyA9IHsgbmFtZTogcmF3Q29uZmlnLm5hbWUgPz8gaW5mbGVjdGlvbi51bmRlcnNjb3JlKG5hbWUudG9TdHJpbmcoKSkgfTtcbiAgICAgIGZuID0gKC4uLmFyZ3M6IFRBcmdzKSA9PiBtZXRob2QuYmluZChyYXdPYmplY3QpKC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBydW46ICgoc3RlcEFwaTogU3RlcEFwaSwgLi4uYXJnczogVEFyZ3MpID0+IHtcbiAgICAgICAgcmV0dXJuIHN0ZXBBcGkucnVuKGNvbmZpZywgKCkgPT4gZm4oLi4uYXJncykpO1xuICAgICAgfSkuYmluZChudWxsLCB0aGlzLiNzdGVwQXBpKSxcbiAgICB9O1xuICB9XG5cbiAgZGVmaW5lPFRBcmdzIGV4dGVuZHMgdW5rbm93bltdLCBUUmVzdWx0PihcbiAgICBjb25maWc6IHsgbmFtZTogc3RyaW5nIH0sXG4gICAgZm46IFN0ZXBGdW5jdGlvbjxUQXJncywgVFJlc3VsdD4sXG4gICkge1xuICAgIHJldHVybiB7XG4gICAgICBydW46ICgoc3RlcEFwaTogU3RlcEFwaSwgLi4uYXJnczogVEFyZ3MpID0+IHtcbiAgICAgICAgcmV0dXJuIHN0ZXBBcGkucnVuKGNvbmZpZywgKCkgPT4gZm4oLi4uYXJncykpO1xuICAgICAgfSkuYmluZChudWxsLCB0aGlzLiNzdGVwQXBpKSxcbiAgICB9O1xuICB9XG5cbiAgc2xlZXAobmFtZTogc3RyaW5nLCBkdXJhdGlvbjogRHVyYXRpb25TdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy4jc3RlcEFwaS5zbGVlcChuYW1lLCBkdXJhdGlvbik7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Q0EyQmEsY0FBYixNQUF5QjtFQUN2QjtFQUVBLFlBQVksU0FBa0I7R0FDNUIsS0FBS0EsV0FBVztFQUNsQjtFQWNBLElBTUUsR0FBRyxNQUMyQjtHQUM5QixJQUFJO0dBQ0osSUFBSTtHQUVKLElBQUksS0FBSyxXQUFXLEdBQUc7SUFDckIsTUFBTSxDQUFDLFdBQVcsY0FBYztJQUNoQyxNQUFNLFNBQVMsVUFBVTtJQUN6QixTQUFTLEVBQUUsTUFBTSxXQUFXLFdBQVcsV0FBVyxTQUFTLENBQUMsRUFBRTtJQUU5RCxNQUFNLEdBQUcsU0FBZ0IsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtHQUN6RCxPQUFPO0lBQ0wsTUFBTSxDQUFDLFdBQVcsV0FBVyxRQUFRO0lBQ3JDLE1BQU0sU0FBUyxVQUFVO0lBRXpCLFNBQVMsRUFBRSxNQUFNLFVBQVUsUUFBUSxXQUFXLFdBQVcsS0FBSyxTQUFTLENBQUMsRUFBRTtJQUMxRSxNQUFNLEdBQUcsU0FBZ0IsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSTtHQUN6RDtHQUVBLE9BQU8sRUFDTCxPQUFPLFNBQWtCLEdBQUcsU0FBZ0I7SUFDMUMsT0FBTyxRQUFRLElBQUksY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDO0dBQzlDLEVBQUEsQ0FBRyxLQUFLLE1BQU0sS0FBS0EsUUFBUSxFQUM3QjtFQUNGO0VBRUEsT0FDRSxRQUNBLElBQ0E7R0FDQSxPQUFPLEVBQ0wsT0FBTyxTQUFrQixHQUFHLFNBQWdCO0lBQzFDLE9BQU8sUUFBUSxJQUFJLGNBQWMsR0FBRyxHQUFHLElBQUksQ0FBQztHQUM5QyxFQUFBLENBQUcsS0FBSyxNQUFNLEtBQUtBLFFBQVEsRUFDN0I7RUFDRjtFQUVBLE1BQU0sTUFBYyxVQUEwQjtHQUM1QyxPQUFPLEtBQUtBLFNBQVMsTUFBTSxNQUFNLFFBQVE7RUFDM0M7Q0FDRiJ9
@@ -1,4 +1,4 @@
1
- import { __esmMin } from "../_virtual/rolldown_runtime.js";
1
+ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
2
  import { convertDomainToCategory, init_category } from "../logger/category.js";
3
3
  import { createMockSSEFactory, init_sse } from "../stream/sse.js";
4
4
  import { Sonamu, init_sonamu } from "../api/sonamu.js";
@@ -9,10 +9,10 @@ import assert from "assert";
9
9
  import { BackendPostgres, OpenWorkflow } from "@sonamu-kit/tasks";
10
10
  import { serializeRetryPolicy } from "@sonamu-kit/tasks/internal";
11
11
  import { schedule } from "node-cron";
12
-
13
12
  //#region src/tasks/workflow-manager.ts
14
13
  var WorkflowManager;
15
- var init_workflow_manager = __esmMin((() => {
14
+ //#endregion
15
+ __esmMin((() => {
16
16
  init_sonamu();
17
17
  init_category();
18
18
  init_naite();
@@ -29,8 +29,8 @@ var init_workflow_manager = __esmMin((() => {
29
29
  this.#backend = backend;
30
30
  this.#ow = new OpenWorkflow({ backend });
31
31
  this.#worker = null;
32
- this.#workflowsMap = new Map();
33
- this.#scheduledTasks = new Map();
32
+ this.#workflowsMap = /* @__PURE__ */ new Map();
33
+ this.#scheduledTasks = /* @__PURE__ */ new Map();
34
34
  }
35
35
  get backend() {
36
36
  return this.#backend;
@@ -44,7 +44,7 @@ var init_workflow_manager = __esmMin((() => {
44
44
  name: s.name,
45
45
  expression: s.expression
46
46
  })),
47
- retryPolicy: wf.retryPolicy ? serializeRetryPolicy(wf.retryPolicy) : undefined
47
+ retryPolicy: wf.retryPolicy ? serializeRetryPolicy(wf.retryPolicy) : void 0
48
48
  }));
49
49
  }
50
50
  /**
@@ -52,7 +52,7 @@ var init_workflow_manager = __esmMin((() => {
52
52
  */
53
53
  async synchronize(workflowMap) {
54
54
  await Promise.allSettled(Array.from(this.#workflowsMap.entries()).filter(([key]) => !workflowMap.has(key)).flatMap(([_, workflows]) => workflows.map((workflow) => {
55
- return Promise.allSettled([...workflow.schedules.map((schedule$1) => this.unscheduleTask(schedule$1.name)), this.unregisterWorkflow(workflow)]);
55
+ return Promise.allSettled([...workflow.schedules.map((schedule) => this.unscheduleTask(schedule.name)), this.unregisterWorkflow(workflow)]);
56
56
  })));
57
57
  await Promise.allSettled(Array.from(workflowMap.entries()).filter(([key]) => !this.#workflowsMap.has(key)).flatMap(([_, workflows]) => workflows.map((workflow) => {
58
58
  this.registerWorkflow({
@@ -63,7 +63,7 @@ var init_workflow_manager = __esmMin((() => {
63
63
  function: workflow.fn,
64
64
  retryPolicy: workflow.retryPolicy
65
65
  });
66
- return Promise.allSettled(workflow.schedules.map((schedule$1) => this.scheduleTask(workflow, schedule$1)));
66
+ return Promise.allSettled(workflow.schedules.map((schedule) => this.scheduleTask(workflow, schedule)));
67
67
  })));
68
68
  await Promise.allSettled(Array.from(workflowMap.entries()).filter(([key]) => this.#workflowsMap.has(key)).map(([key, newWorkflows]) => {
69
69
  const previousWorkflows = this.#workflowsMap.get(key);
@@ -71,7 +71,7 @@ var init_workflow_manager = __esmMin((() => {
71
71
  return [key, [previousWorkflows, newWorkflows]];
72
72
  }).map(async ([_, [previousWorkflows, newWorkflows]]) => {
73
73
  await Promise.allSettled(previousWorkflows.filter((prevItem) => !newWorkflows.some((newItem) => newItem.id === prevItem.id)).map((prevItem) => {
74
- return Promise.allSettled([...prevItem.schedules.map((schedule$1) => this.unscheduleTask(schedule$1.name)), this.unregisterWorkflow(prevItem)]);
74
+ return Promise.allSettled([...prevItem.schedules.map((schedule) => this.unscheduleTask(schedule.name)), this.unregisterWorkflow(prevItem)]);
75
75
  }));
76
76
  await Promise.allSettled(newWorkflows.filter((newItem) => !previousWorkflows.some((prevItem) => prevItem.id === newItem.id)).map(async (newItem) => {
77
77
  this.registerWorkflow({
@@ -82,7 +82,7 @@ var init_workflow_manager = __esmMin((() => {
82
82
  function: newItem.fn,
83
83
  retryPolicy: newItem.retryPolicy
84
84
  });
85
- return Promise.allSettled(newItem.schedules.map((schedule$1) => this.scheduleTask(newItem, schedule$1)));
85
+ return Promise.allSettled(newItem.schedules.map((schedule) => this.scheduleTask(newItem, schedule)));
86
86
  }));
87
87
  }));
88
88
  this.#workflowsMap = workflowMap;
@@ -90,13 +90,11 @@ var init_workflow_manager = __esmMin((() => {
90
90
  run(options, input) {
91
91
  return this.#ow.runWorkflow({
92
92
  name: options.name,
93
- version: options.version ?? undefined
93
+ version: options.version ?? void 0
94
94
  }, input);
95
95
  }
96
96
  async scheduleTask(workflow, schedule$1) {
97
- if (!this.#worker) {
98
- return;
99
- }
97
+ if (!this.#worker) return;
100
98
  const task = schedule(schedule$1.expression, (async ({ name, version }, { input }) => {
101
99
  const inputData = await (typeof input === "function" ? Promise.resolve(input()) : Promise.resolve(input));
102
100
  return this.run({
@@ -116,9 +114,7 @@ var init_workflow_manager = __esmMin((() => {
116
114
  await task.start();
117
115
  }
118
116
  async unscheduleTask(name) {
119
- if (!this.#worker) {
120
- return;
121
- }
117
+ if (!this.#worker) return;
122
118
  const taskItem = this.#scheduledTasks.get(name);
123
119
  if (!taskItem) {
124
120
  console.error("scheduled task not found", name);
@@ -151,13 +147,12 @@ var init_workflow_manager = __esmMin((() => {
151
147
  logger: getLogger(convertDomainToCategory(options.name, "workflow"))
152
148
  }));
153
149
  };
154
- const workflow = this.#ow.defineWorkflow({
150
+ return this.#ow.defineWorkflow({
155
151
  name: options.name,
156
- version: options.version ?? undefined,
152
+ version: options.version ?? void 0,
157
153
  schema: options.schema,
158
154
  retryPolicy: options.retryPolicy
159
155
  }, fn);
160
- return workflow;
161
156
  }
162
157
  async unregisterWorkflow(workflow) {
163
158
  this.#ow.unregisterWorkflow(workflow.name, workflow.version ?? null);
@@ -189,9 +184,7 @@ var init_workflow_manager = __esmMin((() => {
189
184
  return this.destroy();
190
185
  }
191
186
  };
192
- }));
193
-
194
- //#endregion
195
- init_workflow_manager();
187
+ }))();
196
188
  export { WorkflowManager };
197
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctbWFuYWdlci5qcyIsIm5hbWVzIjpbIiNiYWNrZW5kIiwiI293IiwiI3dvcmtlciIsIiN3b3JrZmxvd3NNYXAiLCIjc2NoZWR1bGVkVGFza3MiLCJzY2hlZHVsZSIsImNyb25TY2hlZHVsZSIsImNvbnRleHQ6IENvbnRleHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGFza3Mvd29ya2Zsb3ctbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IHR5cGUgTG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7IEJhY2tlbmRQb3N0Z3JlcywgT3BlbldvcmtmbG93IH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQgeyB0eXBlIFdvcmtlciB9IGZyb20gXCJAc29uYW11LWtpdC90YXNrc1wiO1xuaW1wb3J0IHsgc2VyaWFsaXplUmV0cnlQb2xpY3kgfSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3MvaW50ZXJuYWxcIjtcbmltcG9ydCB7XG4gIHR5cGUgUnVubmFibGVXb3JrZmxvdyxcbiAgdHlwZSBTY2hlbWFJbnB1dCxcbiAgdHlwZSBTY2hlbWFPdXRwdXQsXG4gIHR5cGUgU3RhbmRhcmRTY2hlbWFWMSxcbiAgdHlwZSBTdGVwQXBpLFxuICB0eXBlIFdvcmtmbG93UnVuSGFuZGxlLFxuICB0eXBlIFdvcmtmbG93U3BlYyxcbn0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzL2ludGVybmFsXCI7XG5pbXBvcnQgeyB0eXBlIEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHsgc2NoZWR1bGUgYXMgY3JvblNjaGVkdWxlIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBTY2hlZHVsZWRUYXNrIH0gZnJvbSBcIm5vZGUtY3JvblwiO1xuaW1wb3J0IHsgdHlwZSBab2RPYmplY3QgfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7IHR5cGUgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IGNvbnZlcnREb21haW5Ub0NhdGVnb3J5IH0gZnJvbSBcIi4uL2xvZ2dlci9jYXRlZ29yeVwiO1xuaW1wb3J0IHsgTmFpdGUgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IGNyZWF0ZU1vY2tTU0VGYWN0b3J5IH0gZnJvbSBcIi4uL3N0cmVhbS9zc2VcIjtcbmltcG9ydCB7IHR5cGUgRXhlY3V0YWJsZSB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBXb3JrZmxvd01ldGFkYXRhIH0gZnJvbSBcIi4vZGVjb3JhdG9yXCI7XG5pbXBvcnQgeyBTdGVwV3JhcHBlciB9IGZyb20gXCIuL3N0ZXAtd3JhcHBlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T3B0aW9ucyB7XG4gIC8vIHdvcmtlcuyXkOyEnCDrj5nsi5wg7Iuk7ZaJ7ZWgIO2DnOyKpO2BrCDsiJgsIOq4sOuzuOydgCAxXG4gIGNvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8vIHdvcmtlcuyXkOyEnCDsgqzsmqntlaAgcHViL3N1YiDsl6zrtoAsIOq4sOuzuOydgCB0cnVlXG4gIHVzZVB1YlN1Yj86IGJvb2xlYW47XG5cbiAgLy8gcHViL3N1YuycvOuhnCDtg5zsiqTtgazrpbwg7IiY7Iug7ZaI7J2EIOuVjCDsm4ztgaztlIzroZzsmrAg7Iuk7ZaJ6rmM7KeAIOyngOyXsCDsi5zqsIQsIOq4sOuzuOydgCA1MDBtc1xuICBsaXN0ZW5EZWxheT86IG51bWJlcjtcbn1cblxuLy8gV29ya2Zsb3cg7ZWo7IiY7J2YIO2DgOyehSwgQHNvbmFtdS1raXQvdGFza3PsmYAg64uk66W4IOygkOydgCBzdGVw7J2EIO2VnOuyiCDqsJDsi7wg7ZiV7YOcLlxuZXhwb3J0IHR5cGUgV29ya2Zsb3dGdW5jdGlvbjxJbnB1dCwgT3V0cHV0PiA9IChcbiAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgbG9nZ2VyOiBMb2dnZXI7XG4gICAgaW5wdXQ6IElucHV0O1xuICAgIHN0ZXA6IFN0ZXBXcmFwcGVyO1xuICAgIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gIH0+LFxuKSA9PiBQcm9taXNlPE91dHB1dD4gfCBPdXRwdXQ7XG5cbi8vIFdvcmtmbG9366W8IOuTseuhne2VoCDrlYzrpbwg7JyE7ZWcIO2DgOyehVxuZXhwb3J0IHR5cGUgV29ya2Zsb3dDcmVhdGVPcHRpb25zPFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbj4gPSBPbWl0PFxuICBXb3JrZmxvd1NwZWM8U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0LCBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4+LFxuICBcInZlcnNpb25cIlxuPiAmIHtcbiAgaWQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb246IFdvcmtmbG93RnVuY3Rpb248U2NoZW1hT3V0cHV0PFRTY2hlbWEsIElucHV0PiwgT3V0cHV0Pjtcbn07XG5cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd01hbmFnZXIge1xuICAvLyBiYWNrZW5kIOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjYmFja2VuZDogQmFja2VuZFBvc3RncmVzO1xuXG4gIC8vIE9wZW5Xb3JrZmxvdyDsnbjsiqTthLTsiqRcbiAgcmVhZG9ubHkgI293OiBPcGVuV29ya2Zsb3c7XG5cbiAgLy8gV29ya2VyIOyduOyKpO2EtOyKpCAo7JeG7J2EIOyImCDsnojsnLzrqbAsIOydtCDrlYzripQg67aE7IKw65CcIOyEnOuyhCDtmZjqsr3sl5DshJwgRELsl5AgcHVibGlzaOunjCDtlZzri6Tqs6Ag6rCA7KCV7ZWoKVxuICAjd29ya2VyOiBXb3JrZXIgfCBudWxsO1xuXG4gIC8vIO2MjOydvCDqsr3roZwgLT4g7YyM7J287JeQIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg66mU7YOA642w7J207YSwIOuqqeuhnVxuICAjd29ya2Zsb3dzTWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+O1xuXG4gIC8vIFRhc2sg7J2066aEIC0+IFRhc2sg7KCV67O0IOuwjyBJbnB1dCDqsJIsIFdvcmtmbG93IElEXG4gICNzY2hlZHVsZWRUYXNrczogTWFwPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICB0YXNrOiBTY2hlZHVsZWRUYXNrO1xuICAgICAgaW5wdXRGbjogRXhlY3V0YWJsZTxTY2hlbWFJbnB1dDx1bmtub3duLCB1bmtub3duPj47XG4gICAgICB3b3JrZmxvd0lkOiBzdHJpbmc7XG4gICAgfVxuICA+O1xuXG4gIC8vIEJhY2tlbmRQb3N0Z3Jlc+yXkOyEnCDsspjrpqztlZjripQg6rKD65Ok7J20IOyeiOyWtOyEnCBLbmV4IOy7pOuEpeyFmOydtCDslYTri4jrnbwg7ISk7KCV6rCS7J2EIOuEo+yWtOykmOyVvO2VqC5cbiAgY29uc3RydWN0b3IoZGJDb25mOiBLbmV4LkNvbmZpZywgcnVuTWlncmF0aW9uczogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCBiYWNrZW5kID0gbmV3IEJhY2tlbmRQb3N0Z3JlcyhkYkNvbmYsIHsgcnVuTWlncmF0aW9ucyB9KTtcblxuICAgIHRoaXMuI2JhY2tlbmQgPSBiYWNrZW5kO1xuICAgIHRoaXMuI293ID0gbmV3IE9wZW5Xb3JrZmxvdyh7IGJhY2tlbmQgfSk7XG4gICAgdGhpcy4jd29ya2VyID0gbnVsbDtcblxuICAgIHRoaXMuI3dvcmtmbG93c01hcCA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcyA9IG5ldyBNYXAoKTtcbiAgfVxuXG4gIC8vIFNvbmFtdSBVSSBBUEnsl5DshJwg7JuM7YGs7ZSM66Gc7JqwIOyLpO2WiSDrqqnroZ0g7KGw7ZqMLCDst6jshowg65Ox7JeQIOyCrOyaqe2VqeuLiOuLpC5cbiAgZ2V0IGJhY2tlbmQoKTogQmFja2VuZFBvc3RncmVzIHtcbiAgICByZXR1cm4gdGhpcy4jYmFja2VuZDtcbiAgfVxuXG4gIGdldCB3b3JrZmxvd0RlZmluaXRpb25zKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuI3dvcmtmbG93c01hcC52YWx1ZXMoKSlcbiAgICAgIC5mbGF0KClcbiAgICAgIC5tYXAoKHdmKSA9PiAoe1xuICAgICAgICBpZDogd2YuaWQsXG4gICAgICAgIG5hbWU6IHdmLm5hbWUsXG4gICAgICAgIHZlcnNpb246IHdmLnZlcnNpb24sXG4gICAgICAgIHNjaGVkdWxlczogd2Yuc2NoZWR1bGVzLm1hcCgocykgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzLm5hbWUsXG4gICAgICAgICAgZXhwcmVzc2lvbjogcy5leHByZXNzaW9uLFxuICAgICAgICB9KSksXG4gICAgICAgIHJldHJ5UG9saWN5OiB3Zi5yZXRyeVBvbGljeSA/IHNlcmlhbGl6ZVJldHJ5UG9saWN5KHdmLnJldHJ5UG9saWN5KSA6IHVuZGVmaW5lZCxcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsoJXsnZjrkJwg7JuM7YGs7ZSM66Gc7JqwIOuwjyDsm4ztgaztlIzroZzsmrDsl5Ag64yA7ZWcIHNjaGVkdWxlZCB0YXNrc+ulvCDrj5nquLDtmZTtlanri4jri6QuXG4gICAqL1xuICBhc3luYyBzeW5jaHJvbml6ZSh3b3JrZmxvd01hcDogTWFwPHN0cmluZywgV29ya2Zsb3dNZXRhZGF0YVtdPikge1xuICAgIC8vIDEuIOyCreygnOuQnCDtjIzsnbzsnYAg7J286rSEIOyCreygnFxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20odGhpcy4jd29ya2Zsb3dzTWFwLmVudHJpZXMoKSlcbiAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICF3b3JrZmxvd01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFtcbiAgICAgICAgICAgICAgLi4ud29ya2Zsb3cuc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMudW5zY2hlZHVsZVRhc2soc2NoZWR1bGUubmFtZSkpLFxuICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdyksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gMi4g7IOI66GcIOy2lOqwgOuQnCDtjIzsnbzsnYAg7J286rSEIOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXRoaXMuI3dvcmtmbG93c01hcC5oYXMoa2V5KSlcbiAgICAgICAgLmZsYXRNYXAoKFtfLCB3b3JrZmxvd3NdKSA9PlxuICAgICAgICAgIHdvcmtmbG93cy5tYXAoKHdvcmtmbG93KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyV29ya2Zsb3coe1xuICAgICAgICAgICAgICBpZDogd29ya2Zsb3cuaWQsXG4gICAgICAgICAgICAgIG5hbWU6IHdvcmtmbG93Lm5hbWUsXG4gICAgICAgICAgICAgIHZlcnNpb246IHdvcmtmbG93LnZlcnNpb24gPz8gbnVsbCxcbiAgICAgICAgICAgICAgc2NoZW1hOiB3b3JrZmxvdy5zY2hlbWEsXG4gICAgICAgICAgICAgIGZ1bmN0aW9uOiB3b3JrZmxvdy5mbixcbiAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IHdvcmtmbG93LnJldHJ5UG9saWN5LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgIHdvcmtmbG93LnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayh3b3JrZmxvdywgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgKTtcblxuICAgIC8vIDMuIOq4sOyhtOqzvCDri6Trpbgg6rKD7J2EIGRpZmbsuZwg64uk7J2MLCDsgq3soJwg7ZuEIOyerOuTseuhnVxuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIEFycmF5LmZyb20od29ya2Zsb3dNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAubWFwPFtzdHJpbmcsIFtXb3JrZmxvd01ldGFkYXRhW10sIFdvcmtmbG93TWV0YWRhdGFbXV1dPigoW2tleSwgbmV3V29ya2Zsb3dzXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzV29ya2Zsb3dzID0gdGhpcy4jd29ya2Zsb3dzTWFwLmdldChrZXkpO1xuICAgICAgICAgIGFzc2VydChwcmV2aW91c1dvcmtmbG93cywgXCJwcmV2aW91cyB3b3JrZmxvd3Mgbm90IGZvdW5kXCIpO1xuICAgICAgICAgIHJldHVybiBba2V5LCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dO1xuICAgICAgICB9KVxuICAgICAgICAubWFwKGFzeW5jIChbXywgW3ByZXZpb3VzV29ya2Zsb3dzLCBuZXdXb3JrZmxvd3NdXSkgPT4ge1xuICAgICAgICAgIC8vIOq4sOyhtCDqsoPrk6TsnYQg7IKt7KCc67aA7YSwIO2VtOyVvO2VqC5cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBwcmV2aW91c1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKChwcmV2SXRlbSkgPT4gIW5ld1dvcmtmbG93cy5zb21lKChuZXdJdGVtKSA9PiBuZXdJdGVtLmlkID09PSBwcmV2SXRlbS5pZCkpXG4gICAgICAgICAgICAgIC5tYXAoKHByZXZJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChbXG4gICAgICAgICAgICAgICAgICAuLi5wcmV2SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgICAgICB0aGlzLnVucmVnaXN0ZXJXb3JrZmxvdyhwcmV2SXRlbSksXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyDsg4jroZwg7LaU6rCA65CcIOqyg+uTpOydhCDrk7HroZ1cbiAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICBuZXdXb3JrZmxvd3NcbiAgICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgICAobmV3SXRlbSkgPT4gIXByZXZpb3VzV29ya2Zsb3dzLnNvbWUoKHByZXZJdGVtKSA9PiBwcmV2SXRlbS5pZCA9PT0gbmV3SXRlbS5pZCksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcChhc3luYyAobmV3SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgICAgICBpZDogbmV3SXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgIG5hbWU6IG5ld0l0ZW0ubmFtZSxcbiAgICAgICAgICAgICAgICAgIHZlcnNpb246IG5ld0l0ZW0udmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiBuZXdJdGVtLnNjaGVtYSxcbiAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uOiBuZXdJdGVtLmZuLFxuICAgICAgICAgICAgICAgICAgcmV0cnlQb2xpY3k6IG5ld0l0ZW0ucmV0cnlQb2xpY3ksXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgICAgICAgICAgICAgbmV3SXRlbS5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy5zY2hlZHVsZVRhc2sobmV3SXRlbSwgc2NoZWR1bGUpKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gd29ya2Zsb3dNYXA7XG4gIH1cblxuICAvLyDsm4ztgaztlIzroZzsmrDrpbwg7Iuk7ZaJXG4gIHJ1bjxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgb3B0aW9uczogT21pdDxXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8SW5wdXQsIE91dHB1dCwgVFNjaGVtYT4sIFwiZnVuY3Rpb25cIiB8IFwic2NoZW1hXCIgfCBcImlkXCI+LFxuICAgIGlucHV0OiBTY2hlbWFJbnB1dDxUU2NoZW1hLCBJbnB1dD4sXG4gICk6IFByb21pc2U8V29ya2Zsb3dSdW5IYW5kbGU8T3V0cHV0Pj4ge1xuICAgIHJldHVybiB0aGlzLiNvdy5ydW5Xb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICAgIGlucHV0LFxuICAgICk7XG4gIH1cblxuICAvLyBjcm9uIHRhc2vrpbwg65Ox66GdXG4gIGFzeW5jIHNjaGVkdWxlVGFzayhcbiAgICB3b3JrZmxvdzogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcImlkXCIgfCBcIm5hbWVcIiB8IFwidmVyc2lvblwiPixcbiAgICBzY2hlZHVsZTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICApIHtcbiAgICAvLyBXb3JrZXLqsIAg7Zmc7ISx7ZmU65CcIOuFuOuTnOyXkOyEnOunjCDsspjrpqxcbiAgICBpZiAoIXRoaXMuI3dvcmtlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhc2sgPSBjcm9uU2NoZWR1bGUoXG4gICAgICBzY2hlZHVsZS5leHByZXNzaW9uLFxuICAgICAgKGFzeW5jIChcbiAgICAgICAgeyBuYW1lLCB2ZXJzaW9uIH06IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIj4sXG4gICAgICAgIHsgaW5wdXQgfTogV29ya2Zsb3dNZXRhZGF0YVtcInNjaGVkdWxlc1wiXVtudW1iZXJdLFxuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGF0YSA9IGF3YWl0ICh0eXBlb2YgaW5wdXQgPT09IFwiZnVuY3Rpb25cIlxuICAgICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKGlucHV0KCkpXG4gICAgICAgICAgOiBQcm9taXNlLnJlc29sdmUoaW5wdXQpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5ydW4oeyBuYW1lLCB2ZXJzaW9uOiB2ZXJzaW9uID8/IG51bGwgfSwgaW5wdXREYXRhKTtcbiAgICAgIH0pLmJpbmQodGhpcywgd29ya2Zsb3csIHNjaGVkdWxlKSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogc2NoZWR1bGUubmFtZSxcbiAgICAgICAgdGltZXpvbmU6IFNvbmFtdS5jb25maWcuYXBpLnRpbWV6b25lLFxuICAgICAgICBub092ZXJsYXA6IGZhbHNlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3Muc2V0KHNjaGVkdWxlLm5hbWUsIHtcbiAgICAgIHRhc2ssXG4gICAgICBpbnB1dEZuOiBzY2hlZHVsZS5pbnB1dCxcbiAgICAgIHdvcmtmbG93SWQ6IHdvcmtmbG93LmlkLFxuICAgIH0pO1xuICAgIGF3YWl0IHRhc2suc3RhcnQoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+ulvCDspJHsp4BcbiAgYXN5bmMgdW5zY2hlZHVsZVRhc2sobmFtZTogc3RyaW5nKSB7XG4gICAgLy8gV29ya2Vy6rCAIO2ZnOyEse2ZlOuQnCDrhbjrk5zsl5DshJzrp4wg7LKY66asXG4gICAgaWYgKCF0aGlzLiN3b3JrZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YXNrSXRlbSA9IHRoaXMuI3NjaGVkdWxlZFRhc2tzLmdldChuYW1lKTtcbiAgICBpZiAoIXRhc2tJdGVtKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwic2NoZWR1bGVkIHRhc2sgbm90IGZvdW5kXCIsIG5hbWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLmRlbGV0ZShuYW1lKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLnN0b3AoKTtcbiAgICBhd2FpdCB0YXNrSXRlbS50YXNrLmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0sIOq0gOugqOuQnCDsiqTsvIDspITsnYAg67OE64+E66GcIOuTseuhne2VtOyVvCDtlaguXG4gIHJlZ2lzdGVyV29ya2Zsb3c8SW5wdXQsIE91dHB1dCwgVFNjaGVtYSBleHRlbmRzIFN0YW5kYXJkU2NoZW1hVjEgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+KFxuICAgIG9wdGlvbnM6IFdvcmtmbG93Q3JlYXRlT3B0aW9uczxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hPixcbiAgKTogUnVubmFibGVXb3JrZmxvdzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4ge1xuICAgIGNvbnN0IGZuID0gYXN5bmMgKFxuICAgICAgcGFyYW1zOiBSZWFkb25seTx7XG4gICAgICAgIGlucHV0OiBTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+O1xuICAgICAgICBzdGVwOiBTdGVwQXBpO1xuICAgICAgICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICAgICAgfT4sXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBiYXNlQ29udGV4dCA9IHtcbiAgICAgICAgdHJhbnNwb3J0OiBcImh0dHBcIiBhcyBjb25zdCxcbiAgICAgICAgcmVxdWVzdDogbnVsbCxcbiAgICAgICAgcmVwbHk6IG51bGwsXG4gICAgICAgIGhlYWRlcnM6IHt9LFxuICAgICAgICBjcmVhdGVTU0U6IChzY2hlbWE6IFpvZE9iamVjdCkgPT4gY3JlYXRlTW9ja1NTRUZhY3Rvcnkoc2NoZW1hKSxcbiAgICAgICAgbmFpdGVTdG9yZTogTmFpdGUuY3JlYXRlU3RvcmUoKSxcbiAgICAgICAgbG9jYWxlOiBcIlwiLFxuICAgICAgICB1c2VyOiBudWxsLFxuICAgICAgICBzZXNzaW9uOiBudWxsLFxuICAgICAgfSBhcyB1bmtub3duIGFzIENvbnRleHQ7XG5cbiAgICAgIGNvbnN0IGNvbnRleHRQcm92aWRlciA9IFNvbmFtdS5jb25maWcudGFza3M/LmNvbnRleHRQcm92aWRlcjtcbiAgICAgIGNvbnN0IGNvbnRleHQ6IENvbnRleHQgPSBjb250ZXh0UHJvdmlkZXJcbiAgICAgICAgPyBhd2FpdCBQcm9taXNlLnJlc29sdmUoY29udGV4dFByb3ZpZGVyKGJhc2VDb250ZXh0KSlcbiAgICAgICAgOiBiYXNlQ29udGV4dDtcblxuICAgICAgY29uc3Qgc3RlcCA9IG5ldyBTdGVwV3JhcHBlcihwYXJhbXMuc3RlcCk7XG4gICAgICByZXR1cm4gU29uYW11LmFzeW5jTG9jYWxTdG9yYWdlLnJ1bih7IGNvbnRleHQgfSwgKCkgPT5cbiAgICAgICAgb3B0aW9ucy5mdW5jdGlvbih7XG4gICAgICAgICAgaW5wdXQ6IHBhcmFtcy5pbnB1dCxcbiAgICAgICAgICBzdGVwLFxuICAgICAgICAgIHZlcnNpb246IHBhcmFtcy52ZXJzaW9uLFxuICAgICAgICAgIGxvZ2dlcjogZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KG9wdGlvbnMubmFtZSwgXCJ3b3JrZmxvd1wiKSksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgd29ya2Zsb3cgPSB0aGlzLiNvdy5kZWZpbmVXb3JrZmxvdyhcbiAgICAgIHtcbiAgICAgICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBvcHRpb25zLnZlcnNpb24gPz8gdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IG9wdGlvbnMuc2NoZW1hLFxuICAgICAgICByZXRyeVBvbGljeTogb3B0aW9ucy5yZXRyeVBvbGljeSxcbiAgICAgIH0sXG4gICAgICBmbixcbiAgICApO1xuICAgIHJldHVybiB3b3JrZmxvdztcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDrk7HroZ0g7ZW07KCcLCDqtIDroKjrkJwg7Iqk7LyA7KSE7J2AIOuzhOuPhOuhnCDtlbTsoJztlbTslbwg7ZWoLlxuICBhc3luYyB1bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3c6IFBpY2s8V29ya2Zsb3dNZXRhZGF0YSwgXCJuYW1lXCIgfCBcInZlcnNpb25cIiB8IFwiaWRcIj4pIHtcbiAgICB0aGlzLiNvdy51bnJlZ2lzdGVyV29ya2Zsb3cod29ya2Zsb3cubmFtZSwgd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDshKTsoJUg7ZuEIOyLnOyekVxuICBzZXR1cFdvcmtlcihvcHRpb25zOiBXb3JrZmxvd09wdGlvbnMpIHtcbiAgICB0aGlzLiN3b3JrZXIgPSB0aGlzLiNvdy5uZXdXb3JrZXIob3B0aW9ucyk7XG4gIH1cblxuICAvLyBXb3JrZXLqsIAg7J6I7Jy866m0IFdvcmtlcuq5jOyngCDstIjquLDtmZQsIOyVhOuLiOuptCDrsLHsl5Trk5zrp4wg7LSI6riw7ZmUXG4gIGFzeW5jIHN0YXJ0V29ya2VyKCkge1xuICAgIGF3YWl0IHRoaXMuI2JhY2tlbmQuaW5pdGlhbGl6ZSgpO1xuICAgIGF3YWl0IHRoaXMuI3dvcmtlcj8uc3RhcnQoKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuulvCDspJHsp4BcbiAgYXN5bmMgc3RvcFdvcmtlcigpIHtcbiAgICBhd2FpdCB0aGlzLiN3b3JrZXI/LnN0b3AoKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KSR7KeAXG4gIGFzeW5jIHN0b3BTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suc3RvcCgpKSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+uTpOydhCDrqqjrkZAg7KCV66asXG4gIGFzeW5jIGRlc3Ryb3lTY2hlZHVsZXMoKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiNzY2hlZHVsZWRUYXNrcy52YWx1ZXMoKSkubWFwKCh7IHRhc2sgfSkgPT4gUHJvbWlzZS5yZXNvbHZlKHRhc2suZGVzdHJveSgpKSksXG4gICAgKTtcbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5jbGVhcigpO1xuICB9XG5cbiAgYXN5bmMgZGVzdHJveSgpIHtcbiAgICBhd2FpdCB0aGlzLnN0b3BTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLnN0b3BXb3JrZXIoKTtcbiAgICBhd2FpdCB0aGlzLmRlc3Ryb3lTY2hlZHVsZXMoKTtcbiAgICBhd2FpdCB0aGlzLiNiYWNrZW5kLnN0b3AoKTtcbiAgfVxuXG4gIFtTeW1ib2wuYXN5bmNEaXNwb3NlXSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZXN0cm95KCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O2NBc0J1QztnQkFDc0I7YUFDdEI7V0FDYztvQkFHUjtDQXFD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
189
+
190
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctbWFuYWdlci5qcyIsIm5hbWVzIjpbIiNiYWNrZW5kIiwiI293IiwiI3dvcmtlciIsIiN3b3JrZmxvd3NNYXAiLCIjc2NoZWR1bGVkVGFza3MiLCJjcm9uU2NoZWR1bGUiLCJzY2hlZHVsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YXNrcy93b3JrZmxvdy1tYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuXG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgdHlwZSBMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgQmFja2VuZFBvc3RncmVzLCBPcGVuV29ya2Zsb3cgfSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3NcIjtcbmltcG9ydCB7IHR5cGUgV29ya2VyIH0gZnJvbSBcIkBzb25hbXUta2l0L3Rhc2tzXCI7XG5pbXBvcnQgeyBzZXJpYWxpemVSZXRyeVBvbGljeSB9IGZyb20gXCJAc29uYW11LWtpdC90YXNrcy9pbnRlcm5hbFwiO1xuaW1wb3J0IHtcbiAgdHlwZSBSdW5uYWJsZVdvcmtmbG93LFxuICB0eXBlIFNjaGVtYUlucHV0LFxuICB0eXBlIFNjaGVtYU91dHB1dCxcbiAgdHlwZSBTdGFuZGFyZFNjaGVtYVYxLFxuICB0eXBlIFN0ZXBBcGksXG4gIHR5cGUgV29ya2Zsb3dSdW5IYW5kbGUsXG4gIHR5cGUgV29ya2Zsb3dTcGVjLFxufSBmcm9tIFwiQHNvbmFtdS1raXQvdGFza3MvaW50ZXJuYWxcIjtcbmltcG9ydCB7IHR5cGUgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgeyBzY2hlZHVsZSBhcyBjcm9uU2NoZWR1bGUgfSBmcm9tIFwibm9kZS1jcm9uXCI7XG5pbXBvcnQgeyB0eXBlIFNjaGVkdWxlZFRhc2sgfSBmcm9tIFwibm9kZS1jcm9uXCI7XG5pbXBvcnQgeyB0eXBlIFpvZE9iamVjdCB9IGZyb20gXCJ6b2RcIjtcblxuaW1wb3J0IHsgdHlwZSBDb250ZXh0IH0gZnJvbSBcIi4uL2FwaS9jb250ZXh0XCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vYXBpL3NvbmFtdVwiO1xuaW1wb3J0IHsgY29udmVydERvbWFpblRvQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vbG9nZ2VyL2NhdGVnb3J5XCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgY3JlYXRlTW9ja1NTRUZhY3RvcnkgfSBmcm9tIFwiLi4vc3RyZWFtL3NzZVwiO1xuaW1wb3J0IHsgdHlwZSBFeGVjdXRhYmxlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyB0eXBlIFdvcmtmbG93TWV0YWRhdGEgfSBmcm9tIFwiLi9kZWNvcmF0b3JcIjtcbmltcG9ydCB7IFN0ZXBXcmFwcGVyIH0gZnJvbSBcIi4vc3RlcC13cmFwcGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dPcHRpb25zIHtcbiAgLy8gd29ya2Vy7JeQ7IScIOuPmeyLnCDsi6TtlontlaAg7YOc7Iqk7YGsIOyImCwg6riw67O47J2AIDFcbiAgY29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLy8gd29ya2Vy7JeQ7IScIOyCrOyaqe2VoCBwdWIvc3ViIOyXrOu2gCwg6riw67O47J2AIHRydWVcbiAgdXNlUHViU3ViPzogYm9vbGVhbjtcblxuICAvLyBwdWIvc3Vi7Jy866GcIO2DnOyKpO2BrOulvCDsiJjsi6DtlojsnYQg65WMIOybjO2BrO2UjOuhnOyasCDsi6TtlonquYzsp4Ag7KeA7JewIOyLnOqwhCwg6riw67O47J2AIDUwMG1zXG4gIGxpc3RlbkRlbGF5PzogbnVtYmVyO1xufVxuXG4vLyBXb3JrZmxvdyDtlajsiJjsnZgg7YOA7J6FLCBAc29uYW11LWtpdC90YXNrc+yZgCDri6Trpbgg7KCQ7J2AIHN0ZXDsnYQg7ZWc67KIIOqwkOyLvCDtmJXtg5wuXG5leHBvcnQgdHlwZSBXb3JrZmxvd0Z1bmN0aW9uPElucHV0LCBPdXRwdXQ+ID0gKFxuICBwYXJhbXM6IFJlYWRvbmx5PHtcbiAgICBsb2dnZXI6IExvZ2dlcjtcbiAgICBpbnB1dDogSW5wdXQ7XG4gICAgc3RlcDogU3RlcFdyYXBwZXI7XG4gICAgdmVyc2lvbjogc3RyaW5nIHwgbnVsbDtcbiAgfT4sXG4pID0+IFByb21pc2U8T3V0cHV0PiB8IE91dHB1dDtcblxuLy8gV29ya2Zsb3frpbwg65Ox66Gd7ZWgIOuVjOulvCDsnITtlZwg7YOA7J6FXG5leHBvcnQgdHlwZSBXb3JrZmxvd0NyZWF0ZU9wdGlvbnM8XG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuPiA9IE9taXQ8XG4gIFdvcmtmbG93U3BlYzxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQsIFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0Pj4sXG4gIFwidmVyc2lvblwiXG4+ICYge1xuICBpZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbjogV29ya2Zsb3dGdW5jdGlvbjxTY2hlbWFPdXRwdXQ8VFNjaGVtYSwgSW5wdXQ+LCBPdXRwdXQ+O1xufTtcblxuZXhwb3J0IGNsYXNzIFdvcmtmbG93TWFuYWdlciB7XG4gIC8vIGJhY2tlbmQg7J247Iqk7YS07IqkXG4gIHJlYWRvbmx5ICNiYWNrZW5kOiBCYWNrZW5kUG9zdGdyZXM7XG5cbiAgLy8gT3BlbldvcmtmbG93IOyduOyKpO2EtOyKpFxuICByZWFkb25seSAjb3c6IE9wZW5Xb3JrZmxvdztcblxuICAvLyBXb3JrZXIg7J247Iqk7YS07IqkICjsl4bsnYQg7IiYIOyeiOycvOupsCwg7J20IOuVjOuKlCDrtoTsgrDrkJwg7ISc67KEIO2ZmOqyveyXkOyEnCBEQuyXkCBwdWJsaXNo66eMIO2VnOuLpOqzoCDqsIDsoJXtlagpXG4gICN3b3JrZXI6IFdvcmtlciB8IG51bGw7XG5cbiAgLy8g7YyM7J28IOqyveuhnCAtPiDtjIzsnbzsl5Ag7KCV7J2Y65CcIOybjO2BrO2UjOuhnOyasCDrqZTtg4DrjbDsnbTthLAg66qp66GdXG4gICN3b3JrZmxvd3NNYXA6IE1hcDxzdHJpbmcsIFdvcmtmbG93TWV0YWRhdGFbXT47XG5cbiAgLy8gVGFzayDsnbTrpoQgLT4gVGFzayDsoJXrs7Qg67CPIElucHV0IOqwkiwgV29ya2Zsb3cgSURcbiAgI3NjaGVkdWxlZFRhc2tzOiBNYXA8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIHRhc2s6IFNjaGVkdWxlZFRhc2s7XG4gICAgICBpbnB1dEZuOiBFeGVjdXRhYmxlPFNjaGVtYUlucHV0PHVua25vd24sIHVua25vd24+PjtcbiAgICAgIHdvcmtmbG93SWQ6IHN0cmluZztcbiAgICB9XG4gID47XG5cbiAgLy8gQmFja2VuZFBvc3RncmVz7JeQ7IScIOyymOumrO2VmOuKlCDqsoPrk6TsnbQg7J6I7Ja07IScIEtuZXgg7Luk64Sl7IWY7J20IOyVhOuLiOudvCDshKTsoJXqsJLsnYQg64Sj7Ja07KSY7JW87ZWoLlxuICBjb25zdHJ1Y3RvcihkYkNvbmY6IEtuZXguQ29uZmlnLCBydW5NaWdyYXRpb25zOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IGJhY2tlbmQgPSBuZXcgQmFja2VuZFBvc3RncmVzKGRiQ29uZiwgeyBydW5NaWdyYXRpb25zIH0pO1xuXG4gICAgdGhpcy4jYmFja2VuZCA9IGJhY2tlbmQ7XG4gICAgdGhpcy4jb3cgPSBuZXcgT3BlbldvcmtmbG93KHsgYmFja2VuZCB9KTtcbiAgICB0aGlzLiN3b3JrZXIgPSBudWxsO1xuXG4gICAgdGhpcy4jd29ya2Zsb3dzTWFwID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzID0gbmV3IE1hcCgpO1xuICB9XG5cbiAgLy8gU29uYW11IFVJIEFQSeyXkOyEnCDsm4ztgaztlIzroZzsmrAg7Iuk7ZaJIOuqqeuhnSDsobDtmowsIOy3qOyGjCDrk7Hsl5Ag7IKs7Jqp7ZWp64uI64ukLlxuICBnZXQgYmFja2VuZCgpOiBCYWNrZW5kUG9zdGdyZXMge1xuICAgIHJldHVybiB0aGlzLiNiYWNrZW5kO1xuICB9XG5cbiAgZ2V0IHdvcmtmbG93RGVmaW5pdGlvbnMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy4jd29ya2Zsb3dzTWFwLnZhbHVlcygpKVxuICAgICAgLmZsYXQoKVxuICAgICAgLm1hcCgod2YpID0+ICh7XG4gICAgICAgIGlkOiB3Zi5pZCxcbiAgICAgICAgbmFtZTogd2YubmFtZSxcbiAgICAgICAgdmVyc2lvbjogd2YudmVyc2lvbixcbiAgICAgICAgc2NoZWR1bGVzOiB3Zi5zY2hlZHVsZXMubWFwKChzKSA9PiAoe1xuICAgICAgICAgIG5hbWU6IHMubmFtZSxcbiAgICAgICAgICBleHByZXNzaW9uOiBzLmV4cHJlc3Npb24sXG4gICAgICAgIH0pKSxcbiAgICAgICAgcmV0cnlQb2xpY3k6IHdmLnJldHJ5UG9saWN5ID8gc2VyaWFsaXplUmV0cnlQb2xpY3kod2YucmV0cnlQb2xpY3kpIDogdW5kZWZpbmVkLFxuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIOygleydmOuQnCDsm4ztgaztlIzroZzsmrAg67CPIOybjO2BrO2UjOuhnOyasOyXkCDrjIDtlZwgc2NoZWR1bGVkIHRhc2tz66W8IOuPmeq4sO2ZlO2VqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIHN5bmNocm9uaXplKHdvcmtmbG93TWFwOiBNYXA8c3RyaW5nLCBXb3JrZmxvd01ldGFkYXRhW10+KSB7XG4gICAgLy8gMS4g7IKt7KCc65CcIO2MjOydvOydgCDsnbzqtIQg7IKt7KCcXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh0aGlzLiN3b3JrZmxvd3NNYXAuZW50cmllcygpKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXdvcmtmbG93TWFwLmhhcyhrZXkpKVxuICAgICAgICAuZmxhdE1hcCgoW18sIHdvcmtmbG93c10pID0+XG4gICAgICAgICAgd29ya2Zsb3dzLm1hcCgod29ya2Zsb3cpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoW1xuICAgICAgICAgICAgICAuLi53b3JrZmxvdy5zY2hlZHVsZXMubWFwKChzY2hlZHVsZSkgPT4gdGhpcy51bnNjaGVkdWxlVGFzayhzY2hlZHVsZS5uYW1lKSksXG4gICAgICAgICAgICAgIHRoaXMudW5yZWdpc3RlcldvcmtmbG93KHdvcmtmbG93KSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgICAvLyAyLiDsg4jroZwg7LaU6rCA65CcIO2MjOydvOydgCDsnbzqtIQg65Ox66GdXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh3b3JrZmxvd01hcC5lbnRyaWVzKCkpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiAhdGhpcy4jd29ya2Zsb3dzTWFwLmhhcyhrZXkpKVxuICAgICAgICAuZmxhdE1hcCgoW18sIHdvcmtmbG93c10pID0+XG4gICAgICAgICAgd29ya2Zsb3dzLm1hcCgod29ya2Zsb3cpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJXb3JrZmxvdyh7XG4gICAgICAgICAgICAgIGlkOiB3b3JrZmxvdy5pZCxcbiAgICAgICAgICAgICAgbmFtZTogd29ya2Zsb3cubmFtZSxcbiAgICAgICAgICAgICAgdmVyc2lvbjogd29ya2Zsb3cudmVyc2lvbiA/PyBudWxsLFxuICAgICAgICAgICAgICBzY2hlbWE6IHdvcmtmbG93LnNjaGVtYSxcbiAgICAgICAgICAgICAgZnVuY3Rpb246IHdvcmtmbG93LmZuLFxuICAgICAgICAgICAgICByZXRyeVBvbGljeTogd29ya2Zsb3cucmV0cnlQb2xpY3ksXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgICAgICAgICAgd29ya2Zsb3cuc2NoZWR1bGVzLm1hcCgoc2NoZWR1bGUpID0+IHRoaXMuc2NoZWR1bGVUYXNrKHdvcmtmbG93LCBzY2hlZHVsZSkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgLy8gMy4g6riw7KG06rO8IOuLpOuluCDqsoPsnYQgZGlmZuy5nCDri6TsnYwsIOyCreygnCDtm4Qg7J6s65Ox66GdXG4gICAgYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgQXJyYXkuZnJvbSh3b3JrZmxvd01hcC5lbnRyaWVzKCkpXG4gICAgICAgIC5maWx0ZXIoKFtrZXldKSA9PiB0aGlzLiN3b3JrZmxvd3NNYXAuaGFzKGtleSkpXG4gICAgICAgIC5tYXA8W3N0cmluZywgW1dvcmtmbG93TWV0YWRhdGFbXSwgV29ya2Zsb3dNZXRhZGF0YVtdXV0+KChba2V5LCBuZXdXb3JrZmxvd3NdKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNXb3JrZmxvd3MgPSB0aGlzLiN3b3JrZmxvd3NNYXAuZ2V0KGtleSk7XG4gICAgICAgICAgYXNzZXJ0KHByZXZpb3VzV29ya2Zsb3dzLCBcInByZXZpb3VzIHdvcmtmbG93cyBub3QgZm91bmRcIik7XG4gICAgICAgICAgcmV0dXJuIFtrZXksIFtwcmV2aW91c1dvcmtmbG93cywgbmV3V29ya2Zsb3dzXV07XG4gICAgICAgIH0pXG4gICAgICAgIC5tYXAoYXN5bmMgKFtfLCBbcHJldmlvdXNXb3JrZmxvd3MsIG5ld1dvcmtmbG93c11dKSA9PiB7XG4gICAgICAgICAgLy8g6riw7KG0IOqyg+uTpOydhCDsgq3soJzrtoDthLAg7ZW07JW87ZWoLlxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgICAgICAgIHByZXZpb3VzV29ya2Zsb3dzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHByZXZJdGVtKSA9PiAhbmV3V29ya2Zsb3dzLnNvbWUoKG5ld0l0ZW0pID0+IG5ld0l0ZW0uaWQgPT09IHByZXZJdGVtLmlkKSlcbiAgICAgICAgICAgICAgLm1hcCgocHJldkl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFtcbiAgICAgICAgICAgICAgICAgIC4uLnByZXZJdGVtLnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnVuc2NoZWR1bGVUYXNrKHNjaGVkdWxlLm5hbWUpKSxcbiAgICAgICAgICAgICAgICAgIHRoaXMudW5yZWdpc3RlcldvcmtmbG93KHByZXZJdGVtKSxcbiAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIC8vIOyDiOuhnCDstpTqsIDrkJwg6rKD65Ok7J2EIOuTseuhnVxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgICAgICAgIG5ld1dvcmtmbG93c1xuICAgICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAgIChuZXdJdGVtKSA9PiAhcHJldmlvdXNXb3JrZmxvd3Muc29tZSgocHJldkl0ZW0pID0+IHByZXZJdGVtLmlkID09PSBuZXdJdGVtLmlkKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAubWFwKGFzeW5jIChuZXdJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RlcldvcmtmbG93KHtcbiAgICAgICAgICAgICAgICAgIGlkOiBuZXdJdGVtLmlkLFxuICAgICAgICAgICAgICAgICAgbmFtZTogbmV3SXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgdmVyc2lvbjogbmV3SXRlbS52ZXJzaW9uID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICBzY2hlbWE6IG5ld0l0ZW0uc2NoZW1hLFxuICAgICAgICAgICAgICAgICAgZnVuY3Rpb246IG5ld0l0ZW0uZm4sXG4gICAgICAgICAgICAgICAgICByZXRyeVBvbGljeTogbmV3SXRlbS5yZXRyeVBvbGljeSxcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICAgICAgICAgICAgICBuZXdJdGVtLnNjaGVkdWxlcy5tYXAoKHNjaGVkdWxlKSA9PiB0aGlzLnNjaGVkdWxlVGFzayhuZXdJdGVtLCBzY2hlZHVsZSkpLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLiN3b3JrZmxvd3NNYXAgPSB3b3JrZmxvd01hcDtcbiAgfVxuXG4gIC8vIOybjO2BrO2UjOuhnOyasOulvCDsi6TtlolcbiAgcnVuPElucHV0LCBPdXRwdXQsIFRTY2hlbWEgZXh0ZW5kcyBTdGFuZGFyZFNjaGVtYVYxIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkPihcbiAgICBvcHRpb25zOiBPbWl0PFdvcmtmbG93Q3JlYXRlT3B0aW9uczxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hPiwgXCJmdW5jdGlvblwiIHwgXCJzY2hlbWFcIiB8IFwiaWRcIj4sXG4gICAgaW5wdXQ6IFNjaGVtYUlucHV0PFRTY2hlbWEsIElucHV0PixcbiAgKTogUHJvbWlzZTxXb3JrZmxvd1J1bkhhbmRsZTxPdXRwdXQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuI293LnJ1bldvcmtmbG93KFxuICAgICAge1xuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgaW5wdXQsXG4gICAgKTtcbiAgfVxuXG4gIC8vIGNyb24gdGFza+ulvCDrk7HroZ1cbiAgYXN5bmMgc2NoZWR1bGVUYXNrKFxuICAgIHdvcmtmbG93OiBQaWNrPFdvcmtmbG93TWV0YWRhdGEsIFwiaWRcIiB8IFwibmFtZVwiIHwgXCJ2ZXJzaW9uXCI+LFxuICAgIHNjaGVkdWxlOiBXb3JrZmxvd01ldGFkYXRhW1wic2NoZWR1bGVzXCJdW251bWJlcl0sXG4gICkge1xuICAgIC8vIFdvcmtlcuqwgCDtmZzshLHtmZTrkJwg64W465Oc7JeQ7ISc66eMIOyymOumrFxuICAgIGlmICghdGhpcy4jd29ya2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFzayA9IGNyb25TY2hlZHVsZShcbiAgICAgIHNjaGVkdWxlLmV4cHJlc3Npb24sXG4gICAgICAoYXN5bmMgKFxuICAgICAgICB7IG5hbWUsIHZlcnNpb24gfTogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcIm5hbWVcIiB8IFwidmVyc2lvblwiPixcbiAgICAgICAgeyBpbnB1dCB9OiBXb3JrZmxvd01ldGFkYXRhW1wic2NoZWR1bGVzXCJdW251bWJlcl0sXG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXREYXRhID0gYXdhaXQgKHR5cGVvZiBpbnB1dCA9PT0gXCJmdW5jdGlvblwiXG4gICAgICAgICAgPyBQcm9taXNlLnJlc29sdmUoaW5wdXQoKSlcbiAgICAgICAgICA6IFByb21pc2UucmVzb2x2ZShpbnB1dCkpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnJ1bih7IG5hbWUsIHZlcnNpb246IHZlcnNpb24gPz8gbnVsbCB9LCBpbnB1dERhdGEpO1xuICAgICAgfSkuYmluZCh0aGlzLCB3b3JrZmxvdywgc2NoZWR1bGUpLFxuICAgICAge1xuICAgICAgICBuYW1lOiBzY2hlZHVsZS5uYW1lLFxuICAgICAgICB0aW1lem9uZTogU29uYW11LmNvbmZpZy5hcGkudGltZXpvbmUsXG4gICAgICAgIG5vT3ZlcmxhcDogZmFsc2UsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLiNzY2hlZHVsZWRUYXNrcy5zZXQoc2NoZWR1bGUubmFtZSwge1xuICAgICAgdGFzayxcbiAgICAgIGlucHV0Rm46IHNjaGVkdWxlLmlucHV0LFxuICAgICAgd29ya2Zsb3dJZDogd29ya2Zsb3cuaWQsXG4gICAgfSk7XG4gICAgYXdhaXQgdGFzay5zdGFydCgpO1xuICB9XG5cbiAgLy8gY3JvbiB0YXNr66W8IOykkeyngFxuICBhc3luYyB1bnNjaGVkdWxlVGFzayhuYW1lOiBzdHJpbmcpIHtcbiAgICAvLyBXb3JrZXLqsIAg7Zmc7ISx7ZmU65CcIOuFuOuTnOyXkOyEnOunjCDsspjrpqxcbiAgICBpZiAoIXRoaXMuI3dvcmtlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhc2tJdGVtID0gdGhpcy4jc2NoZWR1bGVkVGFza3MuZ2V0KG5hbWUpO1xuICAgIGlmICghdGFza0l0ZW0pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJzY2hlZHVsZWQgdGFzayBub3QgZm91bmRcIiwgbmFtZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy4jc2NoZWR1bGVkVGFza3MuZGVsZXRlKG5hbWUpO1xuICAgIGF3YWl0IHRhc2tJdGVtLnRhc2suc3RvcCgpO1xuICAgIGF3YWl0IHRhc2tJdGVtLnRhc2suZGVzdHJveSgpO1xuICB9XG5cbiAgLy8g7JuM7YGs7ZSM66Gc7Jqw66W8IOuTseuhnSwg6rSA66Co65CcIOyKpOy8gOykhOydgCDrs4Trj4TroZwg65Ox66Gd7ZW07JW8IO2VqC5cbiAgcmVnaXN0ZXJXb3JrZmxvdzxJbnB1dCwgT3V0cHV0LCBUU2NoZW1hIGV4dGVuZHMgU3RhbmRhcmRTY2hlbWFWMSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4oXG4gICAgb3B0aW9uczogV29ya2Zsb3dDcmVhdGVPcHRpb25zPElucHV0LCBPdXRwdXQsIFRTY2hlbWE+LFxuICApOiBSdW5uYWJsZVdvcmtmbG93PFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD4sIE91dHB1dCwgU2NoZW1hSW5wdXQ8VFNjaGVtYSwgSW5wdXQ+PiB7XG4gICAgY29uc3QgZm4gPSBhc3luYyAoXG4gICAgICBwYXJhbXM6IFJlYWRvbmx5PHtcbiAgICAgICAgaW5wdXQ6IFNjaGVtYU91dHB1dDxUU2NoZW1hLCBJbnB1dD47XG4gICAgICAgIHN0ZXA6IFN0ZXBBcGk7XG4gICAgICAgIHZlcnNpb246IHN0cmluZyB8IG51bGw7XG4gICAgICB9PixcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGJhc2VDb250ZXh0ID0ge1xuICAgICAgICB0cmFuc3BvcnQ6IFwiaHR0cFwiIGFzIGNvbnN0LFxuICAgICAgICByZXF1ZXN0OiBudWxsLFxuICAgICAgICByZXBseTogbnVsbCxcbiAgICAgICAgaGVhZGVyczoge30sXG4gICAgICAgIGNyZWF0ZVNTRTogKHNjaGVtYTogWm9kT2JqZWN0KSA9PiBjcmVhdGVNb2NrU1NFRmFjdG9yeShzY2hlbWEpLFxuICAgICAgICBuYWl0ZVN0b3JlOiBOYWl0ZS5jcmVhdGVTdG9yZSgpLFxuICAgICAgICBsb2NhbGU6IFwiXCIsXG4gICAgICAgIHVzZXI6IG51bGwsXG4gICAgICAgIHNlc3Npb246IG51bGwsXG4gICAgICB9IGFzIHVua25vd24gYXMgQ29udGV4dDtcblxuICAgICAgY29uc3QgY29udGV4dFByb3ZpZGVyID0gU29uYW11LmNvbmZpZy50YXNrcz8uY29udGV4dFByb3ZpZGVyO1xuICAgICAgY29uc3QgY29udGV4dDogQ29udGV4dCA9IGNvbnRleHRQcm92aWRlclxuICAgICAgICA/IGF3YWl0IFByb21pc2UucmVzb2x2ZShjb250ZXh0UHJvdmlkZXIoYmFzZUNvbnRleHQpKVxuICAgICAgICA6IGJhc2VDb250ZXh0O1xuXG4gICAgICBjb25zdCBzdGVwID0gbmV3IFN0ZXBXcmFwcGVyKHBhcmFtcy5zdGVwKTtcbiAgICAgIHJldHVybiBTb25hbXUuYXN5bmNMb2NhbFN0b3JhZ2UucnVuKHsgY29udGV4dCB9LCAoKSA9PlxuICAgICAgICBvcHRpb25zLmZ1bmN0aW9uKHtcbiAgICAgICAgICBpbnB1dDogcGFyYW1zLmlucHV0LFxuICAgICAgICAgIHN0ZXAsXG4gICAgICAgICAgdmVyc2lvbjogcGFyYW1zLnZlcnNpb24sXG4gICAgICAgICAgbG9nZ2VyOiBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkob3B0aW9ucy5uYW1lLCBcIndvcmtmbG93XCIpKSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH07XG5cbiAgICBjb25zdCB3b3JrZmxvdyA9IHRoaXMuI293LmRlZmluZVdvcmtmbG93KFxuICAgICAge1xuICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgIHZlcnNpb246IG9wdGlvbnMudmVyc2lvbiA/PyB1bmRlZmluZWQsXG4gICAgICAgIHNjaGVtYTogb3B0aW9ucy5zY2hlbWEsXG4gICAgICAgIHJldHJ5UG9saWN5OiBvcHRpb25zLnJldHJ5UG9saWN5LFxuICAgICAgfSxcbiAgICAgIGZuLFxuICAgICk7XG4gICAgcmV0dXJuIHdvcmtmbG93O1xuICB9XG5cbiAgLy8g7JuM7YGs7ZSM66Gc7Jqw66W8IOuTseuhnSDtlbTsoJwsIOq0gOugqOuQnCDsiqTsvIDspITsnYAg67OE64+E66GcIO2VtOygnO2VtOyVvCDtlaguXG4gIGFzeW5jIHVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdzogUGljazxXb3JrZmxvd01ldGFkYXRhLCBcIm5hbWVcIiB8IFwidmVyc2lvblwiIHwgXCJpZFwiPikge1xuICAgIHRoaXMuI293LnVucmVnaXN0ZXJXb3JrZmxvdyh3b3JrZmxvdy5uYW1lLCB3b3JrZmxvdy52ZXJzaW9uID8/IG51bGwpO1xuICB9XG5cbiAgLy8gV29ya2Vy66W8IOyEpOyglSDtm4Qg7Iuc7J6RXG4gIHNldHVwV29ya2VyKG9wdGlvbnM6IFdvcmtmbG93T3B0aW9ucykge1xuICAgIHRoaXMuI3dvcmtlciA9IHRoaXMuI293Lm5ld1dvcmtlcihvcHRpb25zKTtcbiAgfVxuXG4gIC8vIFdvcmtlcuqwgCDsnojsnLzrqbQgV29ya2Vy6rmM7KeAIOy0iOq4sO2ZlCwg7JWE64uI66m0IOuwseyXlOuTnOunjCDstIjquLDtmZRcbiAgYXN5bmMgc3RhcnRXb3JrZXIoKSB7XG4gICAgYXdhaXQgdGhpcy4jYmFja2VuZC5pbml0aWFsaXplKCk7XG4gICAgYXdhaXQgdGhpcy4jd29ya2VyPy5zdGFydCgpO1xuICB9XG5cbiAgLy8gV29ya2Vy66W8IOykkeyngFxuICBhc3luYyBzdG9wV29ya2VyKCkge1xuICAgIGF3YWl0IHRoaXMuI3dvcmtlcj8uc3RvcCgpO1xuICB9XG5cbiAgLy8gY3JvbiB0YXNr65Ok7J2EIOuqqOuRkCDspJHsp4BcbiAgYXN5bmMgc3RvcFNjaGVkdWxlcygpIHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICBBcnJheS5mcm9tKHRoaXMuI3NjaGVkdWxlZFRhc2tzLnZhbHVlcygpKS5tYXAoKHsgdGFzayB9KSA9PiBQcm9taXNlLnJlc29sdmUodGFzay5zdG9wKCkpKSxcbiAgICApO1xuICB9XG5cbiAgLy8gY3JvbiB0YXNr65Ok7J2EIOuqqOuRkCDsoJXrpqxcbiAgYXN5bmMgZGVzdHJveVNjaGVkdWxlcygpIHtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICBBcnJheS5mcm9tKHRoaXMuI3NjaGVkdWxlZFRhc2tzLnZhbHVlcygpKS5tYXAoKHsgdGFzayB9KSA9PiBQcm9taXNlLnJlc29sdmUodGFzay5kZXN0cm95KCkpKSxcbiAgICApO1xuICAgIHRoaXMuI3NjaGVkdWxlZFRhc2tzLmNsZWFyKCk7XG4gIH1cblxuICBhc3luYyBkZXN0cm95KCkge1xuICAgIGF3YWl0IHRoaXMuc3RvcFNjaGVkdWxlcygpO1xuICAgIGF3YWl0IHRoaXMuc3RvcFdvcmtlcigpO1xuICAgIGF3YWl0IHRoaXMuZGVzdHJveVNjaGVkdWxlcygpO1xuICAgIGF3YWl0IHRoaXMuI2JhY2tlbmQuc3RvcCgpO1xuICB9XG5cbiAgW1N5bWJvbC5hc3luY0Rpc3Bvc2VdKCkge1xuICAgIHJldHVybiB0aGlzLmRlc3Ryb3koKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7YUFzQnNDO2VBQ3NCO1lBQ3RCO1VBQ2M7bUJBR1I7Q0FxQy9CLGtCQUFiLE1BQTZCO0VBRTNC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
@@ -1,11 +1,10 @@
1
- import { __esmMin } from "../_virtual/rolldown_runtime.js";
1
+ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
2
  import { SD, init_sd } from "../dict/sd.js";
3
3
  import { ServiceUnavailableException, init_so_exceptions } from "../exceptions/so-exceptions.js";
4
4
  import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
5
5
  import { init_zod_converter, propToZodType, zodTypeToRenderingNode } from "./zod-converter.js";
6
6
  import z from "zod";
7
7
  import assert from "assert";
8
-
9
8
  //#region src/template/entity-converter.ts
10
9
  /**
11
10
  * 엔티티의 특정 subset을 RenderingNode로 변환합니다.
@@ -15,44 +14,33 @@ import assert from "assert";
15
14
  async function getColumnsNode(entityId, subsetKey) {
16
15
  const entity = EntityManager.get(entityId);
17
16
  const subsetDef = entity.subsets[subsetKey];
18
- if (subsetDef === undefined) {
19
- throw new ServiceUnavailableException(SD("sonamu.error.subsetNotFound")(subsetKey));
20
- }
21
- const propNodes = entity.fieldExprsToPropNodes(subsetDef);
22
- const rootPropNode = {
17
+ if (subsetDef === void 0) throw new ServiceUnavailableException(SD("sonamu.error.subsetNotFound")(subsetKey));
18
+ const columnsNode = zodTypeToRenderingNode(await propNodeToZodType({
23
19
  nodeType: "object",
24
- children: propNodes
25
- };
26
- const columnsZodType = await propNodeToZodType(rootPropNode);
27
- const columnsNode = zodTypeToRenderingNode(columnsZodType);
28
- assert(columnsNode.children !== undefined, "columnsNode.children is undefined");
20
+ children: entity.fieldExprsToPropNodes(subsetDef)
21
+ }));
22
+ assert(columnsNode.children !== void 0, "columnsNode.children is undefined");
29
23
  columnsNode.children = columnsNode.children.map((child) => {
30
24
  if (child.renderType === "object") {
31
- assert(child.children !== undefined, "child.children is undefined");
25
+ assert(child.children !== void 0, "child.children is undefined");
32
26
  const pickedCol = child.children.find((cc) => ["title", "name"].includes(cc.name));
33
- if (pickedCol) {
34
- return {
35
- ...child,
36
- renderType: "object-pick",
37
- config: { picked: pickedCol.name }
38
- };
39
- } else {
40
- return child;
41
- }
27
+ if (pickedCol) return {
28
+ ...child,
29
+ renderType: "object-pick",
30
+ config: { picked: pickedCol.name }
31
+ };
32
+ else return child;
42
33
  } else if (child.renderType === "array" && child.element && child.element.renderType === "object") {
43
34
  const pickedCol = child.element?.children?.find((cc) => ["title", "name"].includes(cc.name));
44
- if (pickedCol) {
45
- return {
46
- ...child,
47
- element: {
48
- ...child.element,
49
- renderType: "object-pick",
50
- config: { picked: pickedCol.name }
51
- }
52
- };
53
- } else {
54
- return child;
55
- }
35
+ if (pickedCol) return {
36
+ ...child,
37
+ element: {
38
+ ...child.element,
39
+ renderType: "object-pick",
40
+ config: { picked: pickedCol.name }
41
+ }
42
+ };
43
+ else return child;
56
44
  }
57
45
  return child;
58
46
  });
@@ -63,38 +51,26 @@ async function getColumnsNode(entityId, subsetKey) {
63
51
  * plain, array, object 세 가지 nodeType을 재귀적으로 처리합니다.
64
52
  */
65
53
  async function propNodeToZodType(propNode) {
66
- if (propNode.nodeType === "plain") {
67
- return propToZodType(propNode.prop);
68
- } else if (propNode.nodeType === "array") {
69
- if (propNode.prop === undefined) {
70
- throw new Error();
71
- } else if (propNode.children.length > 0) {
72
- return (await propNodeToZodType({
73
- ...propNode,
74
- nodeType: "object"
75
- })).array();
76
- } else {
77
- const innerType = await propToZodType(propNode.prop);
78
- if (propNode.prop.nullable === true) {
79
- return z.array(innerType).nullable();
80
- } else {
81
- return z.array(innerType);
82
- }
83
- }
84
- } else if (propNode.nodeType === "object") {
54
+ if (propNode.nodeType === "plain") return propToZodType(propNode.prop);
55
+ else if (propNode.nodeType === "array") if (propNode.prop === void 0) throw new Error();
56
+ else if (propNode.children.length > 0) return (await propNodeToZodType({
57
+ ...propNode,
58
+ nodeType: "object"
59
+ })).array();
60
+ else {
61
+ const innerType = await propToZodType(propNode.prop);
62
+ if (propNode.prop.nullable === true) return z.array(innerType).nullable();
63
+ else return z.array(innerType);
64
+ }
65
+ else if (propNode.nodeType === "object") {
85
66
  const entries = await Promise.all(propNode.children.map(async (childPropNode) => {
86
- assert(childPropNode.prop?.name !== undefined, "childPropNode.prop.name is undefined");
67
+ assert(childPropNode.prop?.name !== void 0, "childPropNode.prop.name is undefined");
87
68
  return [childPropNode.prop.name, await propNodeToZodType(childPropNode)];
88
69
  }));
89
70
  const obj = Object.fromEntries(entries);
90
- if (propNode.prop?.nullable === true) {
91
- return z.object(obj).nullable();
92
- } else {
93
- return z.object(obj);
94
- }
95
- } else {
96
- throw Error;
97
- }
71
+ if (propNode.prop?.nullable === true) return z.object(obj).nullable();
72
+ else return z.object(obj);
73
+ } else throw Error;
98
74
  }
99
75
  var init_entity_converter = __esmMin((() => {
100
76
  init_sd();
@@ -102,8 +78,8 @@ var init_entity_converter = __esmMin((() => {
102
78
  init_so_exceptions();
103
79
  init_zod_converter();
104
80
  }));
105
-
106
81
  //#endregion
107
82
  init_entity_converter();
108
83
  export { getColumnsNode, init_entity_converter, propNodeToZodType };
109
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNvbnZlcnRlci5qcyIsIm5hbWVzIjpbInJvb3RQcm9wTm9kZTogRW50aXR5UHJvcE5vZGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvZW50aXR5LWNvbnZlcnRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHogZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi9kaWN0L3NkXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIH0gZnJvbSBcIi4uL2V4Y2VwdGlvbnMvc28tZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlQcm9wTm9kZSwgdHlwZSBSZW5kZXJpbmdOb2RlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBwcm9wVG9ab2RUeXBlLCB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlIH0gZnJvbSBcIi4vem9kLWNvbnZlcnRlclwiO1xuXG4vKipcbiAqIOyXlO2LsO2LsOydmCDtirnsoJUgc3Vic2V07J2EIFJlbmRlcmluZ05vZGXroZwg67OA7ZmY7ZWp64uI64ukLlxuICogc3Vic2V07J2YIO2VhOuTnOuTpOydhCBab2Qg7YOA7J6F7Jy866GcIOuzgO2ZmO2VnCDtm4QgVUkg66CM642U66eB7JqpIOuFuOuTnOuhnCDrp4zrk63ri4jri6QuXG4gKiBvYmplY3TsmYAgYXJyYXnsnZgg6rK97JqwIOyggeygiO2VnCBwaWNrIO2VhOuTnOulvCDsnpDrj5nsnLzroZwg7ISg7YOd7ZWp64uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29sdW1uc05vZGUoZW50aXR5SWQ6IHN0cmluZywgc3Vic2V0S2V5OiBzdHJpbmcpOiBQcm9taXNlPFJlbmRlcmluZ05vZGU+IHtcbiAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICBjb25zdCBzdWJzZXREZWYgPSBlbnRpdHkuc3Vic2V0c1tzdWJzZXRLZXldO1xuICBpZiAoc3Vic2V0RGVmID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uKFNEKFwic29uYW11LmVycm9yLnN1YnNldE5vdEZvdW5kXCIpKHN1YnNldEtleSkpO1xuICB9XG4gIGNvbnN0IHByb3BOb2RlcyA9IGVudGl0eS5maWVsZEV4cHJzVG9Qcm9wTm9kZXMoc3Vic2V0RGVmKTtcbiAgY29uc3Qgcm9vdFByb3BOb2RlOiBFbnRpdHlQcm9wTm9kZSA9IHtcbiAgICBub2RlVHlwZTogXCJvYmplY3RcIixcbiAgICBjaGlsZHJlbjogcHJvcE5vZGVzLFxuICB9O1xuXG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIHpvZCDsiqTtgqTrp4jrpbwg66Gc65Oc7ZWgIOuVjCDsgqzsmqntlZjripQg7YOA7J6FXG4gIGNvbnN0IGNvbHVtbnNab2RUeXBlID0gKGF3YWl0IHByb3BOb2RlVG9ab2RUeXBlKHJvb3RQcm9wTm9kZSkpIGFzIHouWm9kT2JqZWN0PGFueT47XG5cbiAgY29uc3QgY29sdW1uc05vZGUgPSB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlKGNvbHVtbnNab2RUeXBlKTtcbiAgYXNzZXJ0KGNvbHVtbnNOb2RlLmNoaWxkcmVuICE9PSB1bmRlZmluZWQsIFwiY29sdW1uc05vZGUuY2hpbGRyZW4gaXMgdW5kZWZpbmVkXCIpO1xuICBjb2x1bW5zTm9kZS5jaGlsZHJlbiA9IGNvbHVtbnNOb2RlLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcbiAgICBpZiAoY2hpbGQucmVuZGVyVHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgYXNzZXJ0KGNoaWxkLmNoaWxkcmVuICE9PSB1bmRlZmluZWQsIFwiY2hpbGQuY2hpbGRyZW4gaXMgdW5kZWZpbmVkXCIpO1xuICAgICAgY29uc3QgcGlja2VkQ29sID0gY2hpbGQuY2hpbGRyZW4uZmluZCgoY2MpID0+IFtcInRpdGxlXCIsIFwibmFtZVwiXS5pbmNsdWRlcyhjYy5uYW1lKSk7XG4gICAgICBpZiAocGlja2VkQ29sKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgcmVuZGVyVHlwZTogXCJvYmplY3QtcGlja1wiLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgcGlja2VkOiBwaWNrZWRDb2wubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjaGlsZC5yZW5kZXJUeXBlID09PSBcImFycmF5XCIgJiZcbiAgICAgIGNoaWxkLmVsZW1lbnQgJiZcbiAgICAgIGNoaWxkLmVsZW1lbnQucmVuZGVyVHlwZSA9PT0gXCJvYmplY3RcIlxuICAgICkge1xuICAgICAgY29uc3QgcGlja2VkQ29sID0gY2hpbGQuZWxlbWVudD8uY2hpbGRyZW4/LmZpbmQoKGNjKSA9PiBbXCJ0aXRsZVwiLCBcIm5hbWVcIl0uaW5jbHVkZXMoY2MubmFtZSkpO1xuICAgICAgaWYgKHBpY2tlZENvbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIC4uLmNoaWxkLmVsZW1lbnQsXG4gICAgICAgICAgICByZW5kZXJUeXBlOiBcIm9iamVjdC1waWNrXCIsXG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgcGlja2VkOiBwaWNrZWRDb2wubmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KTtcblxuICByZXR1cm4gY29sdW1uc05vZGU7XG59XG5cbi8qKlxuICogRW50aXR5UHJvcE5vZGXrpbwgWm9kIO2DgOyeheycvOuhnCDrs4DtmZjtlanri4jri6QuXG4gKiBwbGFpbiwgYXJyYXksIG9iamVjdCDshLgg6rCA7KeAIG5vZGVUeXBl7J2EIOyerOq3gOyggeycvOuhnCDsspjrpqztlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9wTm9kZVRvWm9kVHlwZShwcm9wTm9kZTogRW50aXR5UHJvcE5vZGUpOiBQcm9taXNlPHouWm9kVHlwZUFueT4ge1xuICBpZiAocHJvcE5vZGUubm9kZVR5cGUgPT09IFwicGxhaW5cIikge1xuICAgIHJldHVybiBwcm9wVG9ab2RUeXBlKHByb3BOb2RlLnByb3ApO1xuICB9IGVsc2UgaWYgKHByb3BOb2RlLm5vZGVUeXBlID09PSBcImFycmF5XCIpIHtcbiAgICBpZiAocHJvcE5vZGUucHJvcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9IGVsc2UgaWYgKHByb3BOb2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGF3YWl0IHByb3BOb2RlVG9ab2RUeXBlKHtcbiAgICAgICAgICAuLi5wcm9wTm9kZSxcbiAgICAgICAgICBub2RlVHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgfSlcbiAgICAgICkuYXJyYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5uZXJUeXBlID0gYXdhaXQgcHJvcFRvWm9kVHlwZShwcm9wTm9kZS5wcm9wKTtcbiAgICAgIGlmIChwcm9wTm9kZS5wcm9wLm51bGxhYmxlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB6LmFycmF5KGlubmVyVHlwZSkubnVsbGFibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB6LmFycmF5KGlubmVyVHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb3BOb2RlLm5vZGVUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3QgZW50cmllcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvcE5vZGUuY2hpbGRyZW4ubWFwKGFzeW5jIChjaGlsZFByb3BOb2RlKSA9PiB7XG4gICAgICAgIGFzc2VydChjaGlsZFByb3BOb2RlLnByb3A/Lm5hbWUgIT09IHVuZGVmaW5lZCwgXCJjaGlsZFByb3BOb2RlLnByb3AubmFtZSBpcyB1bmRlZmluZWRcIik7XG4gICAgICAgIHJldHVybiBbY2hpbGRQcm9wTm9kZS5wcm9wLm5hbWUsIGF3YWl0IHByb3BOb2RlVG9ab2RUeXBlKGNoaWxkUHJvcE5vZGUpXSBhcyBjb25zdDtcbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpO1xuXG4gICAgaWYgKHByb3BOb2RlLnByb3A/Lm51bGxhYmxlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gei5vYmplY3Qob2JqKS5udWxsYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gei5vYmplY3Qob2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3I7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFlQSxlQUFzQixlQUFlLFVBQWtCLFdBQTJDO0NBQ2hHLE1BQU0sU0FBUyxjQUFjLElBQUksU0FBUztDQUMxQyxNQUFNLFlBQVksT0FBTyxRQUFRO0FBQ2pDLEtBQUksY0FBYyxXQUFXO0FBQzNCLFFBQU0sSUFBSSw0QkFBNEIsR0FBRyw4QkFBOEIsQ0FBQyxVQUFVLENBQUM7O0NBRXJGLE1BQU0sWUFBWSxPQUFPLHNCQUFzQixVQUFVO0NBQ3pELE1BQU1BLGVBQStCO0VBQ25DLFVBQVU7RUFDVixVQUFVO0VBQ1g7Q0FHRCxNQUFNLGlCQUFrQixNQUFNLGtCQUFrQixhQUFhO0NBRTdELE1BQU0sY0FBYyx1QkFBdUIsZUFBZTtBQUMxRCxRQUFPLFlBQVksYUFBYSxXQUFXLG9DQUFvQztBQUMvRSxhQUFZLFdBQVcsWUFBWSxTQUFTLEtBQUssVUFBVTtBQUN6RCxNQUFJLE1BQU0sZUFBZSxVQUFVO0FBQ2pDLFVBQU8sTUFBTSxhQUFhLFdBQVcsOEJBQThCO0dBQ25FLE1BQU0sWUFBWSxNQUFNLFNBQVMsTUFBTSxPQUFPLENBQUMsU0FBUyxPQUFPLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUNsRixPQUFJLFdBQVc7QUFDYixXQUFPO0tBQ0wsR0FBRztLQUNILFlBQVk7S0FDWixRQUFRLEVBQ04sUUFBUSxVQUFVLE1BQ25CO0tBQ0Y7VUFDSTtBQUNMLFdBQU87O2FBR1QsTUFBTSxlQUFlLFdBQ3JCLE1BQU0sV0FDTixNQUFNLFFBQVEsZUFBZSxVQUM3QjtHQUNBLE1BQU0sWUFBWSxNQUFNLFNBQVMsVUFBVSxNQUFNLE9BQU8sQ0FBQyxTQUFTLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQzVGLE9BQUksV0FBVztBQUNiLFdBQU87S0FDTCxHQUFHO0tBQ0gsU0FBUztNQUNQLEdBQUcsTUFBTTtNQUNULFlBQVk7TUFDWixRQUFRLEVBQ04sUUFBUSxVQUFVLE1BQ25CO01BQ0Y7S0FDRjtVQUNJO0FBQ0wsV0FBTzs7O0FBR1gsU0FBTztHQUNQO0FBRUYsUUFBTzs7Ozs7O0FBT1QsZUFBc0Isa0JBQWtCLFVBQWlEO0FBQ3ZGLEtBQUksU0FBUyxhQUFhLFNBQVM7QUFDakMsU0FBTyxjQUFjLFNBQVMsS0FBSztZQUMxQixTQUFTLGFBQWEsU0FBUztBQUN4QyxNQUFJLFNBQVMsU0FBUyxXQUFXO0FBQy9CLFNBQU0sSUFBSSxPQUFPO2FBQ1IsU0FBUyxTQUFTLFNBQVMsR0FBRztBQUN2QyxXQUNFLE1BQU0sa0JBQWtCO0lBQ3RCLEdBQUc7SUFDSCxVQUFVO0lBQ1gsQ0FBQyxFQUNGLE9BQU87U0FDSjtHQUNMLE1BQU0sWUFBWSxNQUFNLGNBQWMsU0FBUyxLQUFLO0FBQ3BELE9BQUksU0FBUyxLQUFLLGFBQWEsTUFBTTtBQUNuQyxXQUFPLEVBQUUsTUFBTSxVQUFVLENBQUMsVUFBVTtVQUMvQjtBQUNMLFdBQU8sRUFBRSxNQUFNLFVBQVU7OztZQUdwQixTQUFTLGFBQWEsVUFBVTtFQUN6QyxNQUFNLFVBQVUsTUFBTSxRQUFRLElBQzVCLFNBQVMsU0FBUyxJQUFJLE9BQU8sa0JBQWtCO0FBQzdDLFVBQU8sY0FBYyxNQUFNLFNBQVMsV0FBVyx1Q0FBdUM7QUFDdEYsVUFBTyxDQUFDLGNBQWMsS0FBSyxNQUFNLE1BQU0sa0JBQWtCLGNBQWMsQ0FBQztJQUN4RSxDQUNIO0VBQ0QsTUFBTSxNQUFNLE9BQU8sWUFBWSxRQUFRO0FBRXZDLE1BQUksU0FBUyxNQUFNLGFBQWEsTUFBTTtBQUNwQyxVQUFPLEVBQUUsT0FBTyxJQUFJLENBQUMsVUFBVTtTQUMxQjtBQUNMLFVBQU8sRUFBRSxPQUFPLElBQUk7O1FBRWpCO0FBQ0wsUUFBTTs7OztVQTlHc0I7c0JBQ3lCO3FCQUNpQjtxQkFFRiJ9
84
+
85
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWNvbnZlcnRlci5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvZW50aXR5LWNvbnZlcnRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIjtcblxuaW1wb3J0IHogZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQgeyBTRCB9IGZyb20gXCIuLi9kaWN0L3NkXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uIH0gZnJvbSBcIi4uL2V4Y2VwdGlvbnMvc28tZXhjZXB0aW9uc1wiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlQcm9wTm9kZSwgdHlwZSBSZW5kZXJpbmdOb2RlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBwcm9wVG9ab2RUeXBlLCB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlIH0gZnJvbSBcIi4vem9kLWNvbnZlcnRlclwiO1xuXG4vKipcbiAqIOyXlO2LsO2LsOydmCDtirnsoJUgc3Vic2V07J2EIFJlbmRlcmluZ05vZGXroZwg67OA7ZmY7ZWp64uI64ukLlxuICogc3Vic2V07J2YIO2VhOuTnOuTpOydhCBab2Qg7YOA7J6F7Jy866GcIOuzgO2ZmO2VnCDtm4QgVUkg66CM642U66eB7JqpIOuFuOuTnOuhnCDrp4zrk63ri4jri6QuXG4gKiBvYmplY3TsmYAgYXJyYXnsnZgg6rK97JqwIOyggeygiO2VnCBwaWNrIO2VhOuTnOulvCDsnpDrj5nsnLzroZwg7ISg7YOd7ZWp64uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q29sdW1uc05vZGUoZW50aXR5SWQ6IHN0cmluZywgc3Vic2V0S2V5OiBzdHJpbmcpOiBQcm9taXNlPFJlbmRlcmluZ05vZGU+IHtcbiAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICBjb25zdCBzdWJzZXREZWYgPSBlbnRpdHkuc3Vic2V0c1tzdWJzZXRLZXldO1xuICBpZiAoc3Vic2V0RGVmID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgU2VydmljZVVuYXZhaWxhYmxlRXhjZXB0aW9uKFNEKFwic29uYW11LmVycm9yLnN1YnNldE5vdEZvdW5kXCIpKHN1YnNldEtleSkpO1xuICB9XG4gIGNvbnN0IHByb3BOb2RlcyA9IGVudGl0eS5maWVsZEV4cHJzVG9Qcm9wTm9kZXMoc3Vic2V0RGVmKTtcbiAgY29uc3Qgcm9vdFByb3BOb2RlOiBFbnRpdHlQcm9wTm9kZSA9IHtcbiAgICBub2RlVHlwZTogXCJvYmplY3RcIixcbiAgICBjaGlsZHJlbjogcHJvcE5vZGVzLFxuICB9O1xuXG4gIC8vIG94bGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55IC0tIHpvZCDsiqTtgqTrp4jrpbwg66Gc65Oc7ZWgIOuVjCDsgqzsmqntlZjripQg7YOA7J6FXG4gIGNvbnN0IGNvbHVtbnNab2RUeXBlID0gKGF3YWl0IHByb3BOb2RlVG9ab2RUeXBlKHJvb3RQcm9wTm9kZSkpIGFzIHouWm9kT2JqZWN0PGFueT47XG5cbiAgY29uc3QgY29sdW1uc05vZGUgPSB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlKGNvbHVtbnNab2RUeXBlKTtcbiAgYXNzZXJ0KGNvbHVtbnNOb2RlLmNoaWxkcmVuICE9PSB1bmRlZmluZWQsIFwiY29sdW1uc05vZGUuY2hpbGRyZW4gaXMgdW5kZWZpbmVkXCIpO1xuICBjb2x1bW5zTm9kZS5jaGlsZHJlbiA9IGNvbHVtbnNOb2RlLmNoaWxkcmVuLm1hcCgoY2hpbGQpID0+IHtcbiAgICBpZiAoY2hpbGQucmVuZGVyVHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgYXNzZXJ0KGNoaWxkLmNoaWxkcmVuICE9PSB1bmRlZmluZWQsIFwiY2hpbGQuY2hpbGRyZW4gaXMgdW5kZWZpbmVkXCIpO1xuICAgICAgY29uc3QgcGlja2VkQ29sID0gY2hpbGQuY2hpbGRyZW4uZmluZCgoY2MpID0+IFtcInRpdGxlXCIsIFwibmFtZVwiXS5pbmNsdWRlcyhjYy5uYW1lKSk7XG4gICAgICBpZiAocGlja2VkQ29sKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgcmVuZGVyVHlwZTogXCJvYmplY3QtcGlja1wiLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgcGlja2VkOiBwaWNrZWRDb2wubmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjaGlsZC5yZW5kZXJUeXBlID09PSBcImFycmF5XCIgJiZcbiAgICAgIGNoaWxkLmVsZW1lbnQgJiZcbiAgICAgIGNoaWxkLmVsZW1lbnQucmVuZGVyVHlwZSA9PT0gXCJvYmplY3RcIlxuICAgICkge1xuICAgICAgY29uc3QgcGlja2VkQ29sID0gY2hpbGQuZWxlbWVudD8uY2hpbGRyZW4/LmZpbmQoKGNjKSA9PiBbXCJ0aXRsZVwiLCBcIm5hbWVcIl0uaW5jbHVkZXMoY2MubmFtZSkpO1xuICAgICAgaWYgKHBpY2tlZENvbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgIC4uLmNoaWxkLmVsZW1lbnQsXG4gICAgICAgICAgICByZW5kZXJUeXBlOiBcIm9iamVjdC1waWNrXCIsXG4gICAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgICAgcGlja2VkOiBwaWNrZWRDb2wubmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9KTtcblxuICByZXR1cm4gY29sdW1uc05vZGU7XG59XG5cbi8qKlxuICogRW50aXR5UHJvcE5vZGXrpbwgWm9kIO2DgOyeheycvOuhnCDrs4DtmZjtlanri4jri6QuXG4gKiBwbGFpbiwgYXJyYXksIG9iamVjdCDshLgg6rCA7KeAIG5vZGVUeXBl7J2EIOyerOq3gOyggeycvOuhnCDsspjrpqztlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9wTm9kZVRvWm9kVHlwZShwcm9wTm9kZTogRW50aXR5UHJvcE5vZGUpOiBQcm9taXNlPHouWm9kVHlwZUFueT4ge1xuICBpZiAocHJvcE5vZGUubm9kZVR5cGUgPT09IFwicGxhaW5cIikge1xuICAgIHJldHVybiBwcm9wVG9ab2RUeXBlKHByb3BOb2RlLnByb3ApO1xuICB9IGVsc2UgaWYgKHByb3BOb2RlLm5vZGVUeXBlID09PSBcImFycmF5XCIpIHtcbiAgICBpZiAocHJvcE5vZGUucHJvcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9IGVsc2UgaWYgKHByb3BOb2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGF3YWl0IHByb3BOb2RlVG9ab2RUeXBlKHtcbiAgICAgICAgICAuLi5wcm9wTm9kZSxcbiAgICAgICAgICBub2RlVHlwZTogXCJvYmplY3RcIixcbiAgICAgICAgfSlcbiAgICAgICkuYXJyYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaW5uZXJUeXBlID0gYXdhaXQgcHJvcFRvWm9kVHlwZShwcm9wTm9kZS5wcm9wKTtcbiAgICAgIGlmIChwcm9wTm9kZS5wcm9wLm51bGxhYmxlID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB6LmFycmF5KGlubmVyVHlwZSkubnVsbGFibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB6LmFycmF5KGlubmVyVHlwZSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHByb3BOb2RlLm5vZGVUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgY29uc3QgZW50cmllcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvcE5vZGUuY2hpbGRyZW4ubWFwKGFzeW5jIChjaGlsZFByb3BOb2RlKSA9PiB7XG4gICAgICAgIGFzc2VydChjaGlsZFByb3BOb2RlLnByb3A/Lm5hbWUgIT09IHVuZGVmaW5lZCwgXCJjaGlsZFByb3BOb2RlLnByb3AubmFtZSBpcyB1bmRlZmluZWRcIik7XG4gICAgICAgIHJldHVybiBbY2hpbGRQcm9wTm9kZS5wcm9wLm5hbWUsIGF3YWl0IHByb3BOb2RlVG9ab2RUeXBlKGNoaWxkUHJvcE5vZGUpXSBhcyBjb25zdDtcbiAgICAgIH0pLFxuICAgICk7XG4gICAgY29uc3Qgb2JqID0gT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpO1xuXG4gICAgaWYgKHByb3BOb2RlLnByb3A/Lm51bGxhYmxlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gei5vYmplY3Qob2JqKS5udWxsYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gei5vYmplY3Qob2JqKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3I7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQWVBLGVBQXNCLGVBQWUsVUFBa0IsV0FBMkM7Q0FDaEcsTUFBTSxTQUFTLGNBQWMsSUFBSSxRQUFRO0NBQ3pDLE1BQU0sWUFBWSxPQUFPLFFBQVE7Q0FDakMsSUFBSSxjQUFjLFFBQ2hCLE1BQU0sSUFBSSw0QkFBNEIsR0FBRyw2QkFBNkIsQ0FBQyxDQUFDLFNBQVMsQ0FBQztDQVdwRixNQUFNLGNBQWMsdUJBQXVCLE1BRmIsa0JBQWtCO0VBTDlDLFVBQVU7RUFDVixVQUhnQixPQUFPLHNCQUFzQixTQUduQztDQUlvQyxDQUFZLENBRUg7Q0FDekQsT0FBTyxZQUFZLGFBQWEsUUFBVyxtQ0FBbUM7Q0FDOUUsWUFBWSxXQUFXLFlBQVksU0FBUyxLQUFLLFVBQVU7RUFDekQsSUFBSSxNQUFNLGVBQWUsVUFBVTtHQUNqQyxPQUFPLE1BQU0sYUFBYSxRQUFXLDZCQUE2QjtHQUNsRSxNQUFNLFlBQVksTUFBTSxTQUFTLE1BQU0sT0FBTyxDQUFDLFNBQVMsTUFBTSxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztHQUNqRixJQUFJLFdBQ0YsT0FBTztJQUNMLEdBQUc7SUFDSCxZQUFZO0lBQ1osUUFBUSxFQUNOLFFBQVEsVUFBVSxLQUNwQjtHQUNGO1FBRUEsT0FBTztFQUVYLE9BQU8sSUFDTCxNQUFNLGVBQWUsV0FDckIsTUFBTSxXQUNOLE1BQU0sUUFBUSxlQUFlLFVBQzdCO0dBQ0EsTUFBTSxZQUFZLE1BQU0sU0FBUyxVQUFVLE1BQU0sT0FBTyxDQUFDLFNBQVMsTUFBTSxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztHQUMzRixJQUFJLFdBQ0YsT0FBTztJQUNMLEdBQUc7SUFDSCxTQUFTO0tBQ1AsR0FBRyxNQUFNO0tBQ1QsWUFBWTtLQUNaLFFBQVEsRUFDTixRQUFRLFVBQVUsS0FDcEI7SUFDRjtHQUNGO1FBRUEsT0FBTztFQUVYO0VBQ0EsT0FBTztDQUNULENBQUM7Q0FFRCxPQUFPO0FBQ1Q7Ozs7O0FBTUEsZUFBc0Isa0JBQWtCLFVBQWlEO0NBQ3ZGLElBQUksU0FBUyxhQUFhLFNBQ3hCLE9BQU8sY0FBYyxTQUFTLElBQUk7TUFDN0IsSUFBSSxTQUFTLGFBQWEsU0FDL0IsSUFBSSxTQUFTLFNBQVMsUUFDcEIsTUFBTSxJQUFJLE1BQU07TUFDWCxJQUFJLFNBQVMsU0FBUyxTQUFTLEdBQ3BDLFFBQ0UsTUFBTSxrQkFBa0I7RUFDdEIsR0FBRztFQUNILFVBQVU7Q0FDWixDQUFDLEVBQUEsQ0FDRCxNQUFNO01BQ0g7RUFDTCxNQUFNLFlBQVksTUFBTSxjQUFjLFNBQVMsSUFBSTtFQUNuRCxJQUFJLFNBQVMsS0FBSyxhQUFhLE1BQzdCLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDLFNBQVM7T0FFbkMsT0FBTyxFQUFFLE1BQU0sU0FBUztDQUU1QjtNQUNLLElBQUksU0FBUyxhQUFhLFVBQVU7RUFDekMsTUFBTSxVQUFVLE1BQU0sUUFBUSxJQUM1QixTQUFTLFNBQVMsSUFBSSxPQUFPLGtCQUFrQjtHQUM3QyxPQUFPLGNBQWMsTUFBTSxTQUFTLFFBQVcsc0NBQXNDO0dBQ3JGLE9BQU8sQ0FBQyxjQUFjLEtBQUssTUFBTSxNQUFNLGtCQUFrQixhQUFhLENBQUM7RUFDekUsQ0FBQyxDQUNIO0VBQ0EsTUFBTSxNQUFNLE9BQU8sWUFBWSxPQUFPO0VBRXRDLElBQUksU0FBUyxNQUFNLGFBQWEsTUFDOUIsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUztPQUU5QixPQUFPLEVBQUUsT0FBTyxHQUFHO0NBRXZCLE9BQ0UsTUFBTTtBQUVWOztTQWhIK0I7cUJBQ3lCO29CQUNpQjtvQkFFRiJ9