sonamu 0.11.16 → 0.13.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 (322) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +1 -2
  2. package/dist/ai/agents/agent.js +2 -3
  3. package/dist/ai/agents/index.js +1 -2
  4. package/dist/ai/index.js +1 -2
  5. package/dist/ai/providers/rtzr/api.js +1 -2
  6. package/dist/ai/providers/rtzr/error.js +2 -3
  7. package/dist/ai/providers/rtzr/model.js +1 -2
  8. package/dist/ai/providers/rtzr/options.js +1 -2
  9. package/dist/ai/providers/rtzr/provider.js +1 -2
  10. package/dist/ai/providers/rtzr/utils.js +1 -2
  11. package/dist/api/base-frame.js +4 -4
  12. package/dist/api/caster.d.ts +1 -1
  13. package/dist/api/caster.d.ts.map +1 -1
  14. package/dist/api/caster.js +9 -9
  15. package/dist/api/code-converters.js +6 -5
  16. package/dist/api/config.d.ts +1 -1
  17. package/dist/api/config.d.ts.map +1 -1
  18. package/dist/api/config.js +2 -3
  19. package/dist/api/context.d.ts +2 -3
  20. package/dist/api/context.d.ts.map +1 -1
  21. package/dist/api/context.js +2 -3
  22. package/dist/api/decorators.js +2 -3
  23. package/dist/api/http-validator.js +2 -3
  24. package/dist/api/index.js +8 -3
  25. package/dist/api/secret.js +1 -2
  26. package/dist/api/sonamu.d.ts +3 -5
  27. package/dist/api/sonamu.d.ts.map +1 -1
  28. package/dist/api/sonamu.js +30 -24
  29. package/dist/api/validator.js +1 -2
  30. package/dist/api/websocket-helpers.js +2 -3
  31. package/dist/auth/audit-log/builders.js +1 -2
  32. package/dist/auth/audit-log/client-ip.js +2 -3
  33. package/dist/auth/audit-log/events.js +1 -2
  34. package/dist/auth/audit-log/plugin.d.ts.map +1 -1
  35. package/dist/auth/audit-log/plugin.js +2 -3
  36. package/dist/auth/audit-log-ingestor.js +2 -3
  37. package/dist/auth/auth-generator.js +2 -3
  38. package/dist/auth/better-auth-entities.js +1 -2
  39. package/dist/auth/better-auth-request.js +2 -3
  40. package/dist/auth/index.js +2 -3
  41. package/dist/auth/knex-adapter.js +2 -3
  42. package/dist/auth/plugins/entity-definitions/admin.js +1 -2
  43. package/dist/auth/plugins/entity-definitions/anonymous.js +1 -2
  44. package/dist/auth/plugins/entity-definitions/api-key.js +1 -2
  45. package/dist/auth/plugins/entity-definitions/audit-log.js +1 -2
  46. package/dist/auth/plugins/entity-definitions/index.js +1 -2
  47. package/dist/auth/plugins/entity-definitions/jwt.js +1 -2
  48. package/dist/auth/plugins/entity-definitions/organization.js +1 -2
  49. package/dist/auth/plugins/entity-definitions/passkey.js +1 -2
  50. package/dist/auth/plugins/entity-definitions/phone-number.js +1 -2
  51. package/dist/auth/plugins/entity-definitions/sso.js +1 -2
  52. package/dist/auth/plugins/entity-definitions/two-factor.js +1 -2
  53. package/dist/auth/plugins/entity-definitions/username.js +1 -2
  54. package/dist/auth/plugins/wrappers/admin.d.ts +33 -32
  55. package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
  56. package/dist/auth/plugins/wrappers/admin.js +2 -3
  57. package/dist/auth/plugins/wrappers/anonymous.js +2 -3
  58. package/dist/auth/plugins/wrappers/api-key.js +2 -3
  59. package/dist/auth/plugins/wrappers/jwt.js +2 -3
  60. package/dist/auth/plugins/wrappers/organization.js +2 -3
  61. package/dist/auth/plugins/wrappers/passkey.js +2 -3
  62. package/dist/auth/plugins/wrappers/phone-number.d.ts +43 -1
  63. package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
  64. package/dist/auth/plugins/wrappers/phone-number.js +2 -3
  65. package/dist/auth/plugins/wrappers/sso.d.ts +138 -187
  66. package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
  67. package/dist/auth/plugins/wrappers/sso.js +1 -2
  68. package/dist/auth/plugins/wrappers/two-factor.d.ts +51 -10
  69. package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
  70. package/dist/auth/plugins/wrappers/two-factor.js +2 -3
  71. package/dist/auth/plugins/wrappers/username.d.ts +39 -5
  72. package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
  73. package/dist/auth/plugins/wrappers/username.js +2 -3
  74. package/dist/bin/build-config.js +5 -5
  75. package/dist/bin/compiler-policy.js +2 -3
  76. package/dist/bin/fixture.js +7 -5
  77. package/dist/bin/hmr-hook-register.js +1 -2
  78. package/dist/bin/migrate-targets.js +2 -3
  79. package/dist/bin/test-command.js +2 -3
  80. package/dist/bin/ts-loader-register.js +2 -3
  81. package/dist/bin/ts-loader-registration.js +2 -3
  82. package/dist/bin/typecheck-web.js +2 -3
  83. package/dist/cache/cache-manager.js +1 -2
  84. package/dist/cache/decorator.js +2 -3
  85. package/dist/cache/drivers.js +1 -2
  86. package/dist/cache/index.js +2 -3
  87. package/dist/cache-control/cache-control.js +1 -2
  88. package/dist/code-formatting/index.js +2 -3
  89. package/dist/code-formatting/oxfmt.js +2 -3
  90. package/dist/code-formatting/oxlint.js +2 -3
  91. package/dist/compress/compress.js +1 -2
  92. package/dist/compress/index.js +2 -2
  93. package/dist/compress/types.d.ts +1 -1
  94. package/dist/compress/types.d.ts.map +1 -1
  95. package/dist/cone/cone-generator.js +2 -3
  96. package/dist/database/_batch_update.js +1 -2
  97. package/dist/database/base-model.js +4 -4
  98. package/dist/database/db.js +4 -4
  99. package/dist/database/knex.js +2 -3
  100. package/dist/database/puri-wrapper.js +2 -3
  101. package/dist/database/puri.js +23 -22
  102. package/dist/database/puri.types.js +1 -2
  103. package/dist/database/transaction-context.js +1 -2
  104. package/dist/database/upsert-builder.js +2 -3
  105. package/dist/dict/en.js +2 -3
  106. package/dist/dict/index.js +3 -3
  107. package/dist/dict/ko.js +2 -3
  108. package/dist/dict/rc-keys.js +1 -2
  109. package/dist/dict/sd.js +2 -3
  110. package/dist/dict/sonamu-dictionary.js +7 -6
  111. package/dist/dict/utils.js +2 -3
  112. package/dist/entity/entity-manager.d.ts +66 -66
  113. package/dist/entity/entity-manager.js +4 -4
  114. package/dist/entity/entity-template-cone.js +2 -3
  115. package/dist/entity/entity.js +21 -18
  116. package/dist/env.js +1 -2
  117. package/dist/exceptions/error-handler.d.ts.map +1 -1
  118. package/dist/exceptions/error-handler.js +2 -3
  119. package/dist/exceptions/so-exceptions.js +2 -3
  120. package/dist/filter/index.js +3 -2
  121. package/dist/filter/types.js +1 -2
  122. package/dist/filter/utils.js +7 -6
  123. package/dist/index.d.ts +1 -0
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +42 -6
  126. package/dist/logger/category.js +2 -3
  127. package/dist/logger/configure.js +5 -5
  128. package/dist/migration/code-generation.js +23 -16
  129. package/dist/migration/index-where-predicate.js +2 -3
  130. package/dist/migration/migration-set.js +2 -3
  131. package/dist/migration/migrator.js +2 -3
  132. package/dist/migration/postgresql-schema-reader.js +6 -9
  133. package/dist/migration/slack-confirm.js +2 -3
  134. package/dist/naite/naite-reporter.js +2 -3
  135. package/dist/naite/naite.js +10 -8
  136. package/dist/runtime-type.js +2 -3
  137. package/dist/ssr/hmr-opt-out.js +1 -2
  138. package/dist/ssr/index.js +7 -4
  139. package/dist/ssr/registry.js +1 -2
  140. package/dist/ssr/renderer.js +2 -3
  141. package/dist/storage/base-file.js +1 -2
  142. package/dist/storage/buffered-file.js +2 -3
  143. package/dist/storage/drivers.js +1 -2
  144. package/dist/storage/index.js +2 -3
  145. package/dist/storage/s3-driver.js +1 -2
  146. package/dist/storage/storage-manager.js +2 -3
  147. package/dist/storage/uploaded-file.js +2 -3
  148. package/dist/stream/__tests__/ws-test-helpers.d.ts +108 -0
  149. package/dist/stream/__tests__/ws-test-helpers.d.ts.map +1 -0
  150. package/dist/stream/__tests__/ws-test-helpers.js +259 -0
  151. package/dist/stream/index.d.ts +1 -0
  152. package/dist/stream/index.d.ts.map +1 -1
  153. package/dist/stream/index.js +15 -4
  154. package/dist/stream/sse.js +1 -2
  155. package/dist/stream/ws-audience-resolver.d.ts +8 -5
  156. package/dist/stream/ws-audience-resolver.d.ts.map +1 -1
  157. package/dist/stream/ws-audience-resolver.js +17 -15
  158. package/dist/stream/ws-audience.js +1 -2
  159. package/dist/stream/ws-cluster-bus.d.ts +9 -4
  160. package/dist/stream/ws-cluster-bus.d.ts.map +1 -1
  161. package/dist/stream/ws-cluster-bus.js +2 -3
  162. package/dist/stream/ws-core.d.ts +10 -0
  163. package/dist/stream/ws-core.d.ts.map +1 -1
  164. package/dist/stream/ws-delivery.d.ts +30 -4
  165. package/dist/stream/ws-delivery.d.ts.map +1 -1
  166. package/dist/stream/ws-delivery.js +200 -54
  167. package/dist/stream/ws-frame.d.ts +15 -0
  168. package/dist/stream/ws-frame.d.ts.map +1 -0
  169. package/dist/stream/ws-frame.js +28 -0
  170. package/dist/stream/ws-local-connection-store.d.ts +4 -4
  171. package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
  172. package/dist/stream/ws-local-connection-store.js +3 -4
  173. package/dist/stream/ws-presence-index.d.ts +36 -0
  174. package/dist/stream/ws-presence-index.d.ts.map +1 -0
  175. package/dist/stream/ws-presence-index.js +176 -0
  176. package/dist/stream/ws-presence-store.d.ts +39 -39
  177. package/dist/stream/ws-presence-store.d.ts.map +1 -1
  178. package/dist/stream/ws-presence-store.js +23 -154
  179. package/dist/stream/ws-registry.d.ts +45 -17
  180. package/dist/stream/ws-registry.d.ts.map +1 -1
  181. package/dist/stream/ws-registry.js +170 -62
  182. package/dist/stream/ws-session-id.d.ts +14 -0
  183. package/dist/stream/ws-session-id.d.ts.map +1 -0
  184. package/dist/stream/ws-session-id.js +36 -0
  185. package/dist/stream/ws-telemetry-memory.js +3 -4
  186. package/dist/stream/ws-telemetry-trace.js +1 -2
  187. package/dist/stream/ws-telemetry.js +2 -3
  188. package/dist/stream/ws.d.ts +20 -10
  189. package/dist/stream/ws.d.ts.map +1 -1
  190. package/dist/stream/ws.js +60 -38
  191. package/dist/syncer/api-parser.js +2 -3
  192. package/dist/syncer/checksum.js +4 -4
  193. package/dist/syncer/code-generator.js +4 -4
  194. package/dist/syncer/entity-operations.js +2 -3
  195. package/dist/syncer/event-batcher.js +1 -2
  196. package/dist/syncer/file-copy.js +2 -3
  197. package/dist/syncer/file-patterns.js +2 -3
  198. package/dist/syncer/file-tracking.js +2 -3
  199. package/dist/syncer/filesystem-dependencies.js +1 -2
  200. package/dist/syncer/index.js +8 -2
  201. package/dist/syncer/module-loader.js +8 -6
  202. package/dist/syncer/syncer-actions.js +8 -7
  203. package/dist/syncer/syncer.js +13 -8
  204. package/dist/syncer/watcher.js +2 -3
  205. package/dist/tasks/decorator.js +1 -2
  206. package/dist/tasks/step-wrapper.js +2 -3
  207. package/dist/tasks/workflow-manager.js +2 -3
  208. package/dist/template/entity-converter.js +17 -16
  209. package/dist/template/helpers.js +2 -3
  210. package/dist/template/implementations/entity.template.js +2 -3
  211. package/dist/template/implementations/entry-server.template.js +2 -3
  212. package/dist/template/implementations/generated.template.js +2 -3
  213. package/dist/template/implementations/generated_http.template.js +6 -6
  214. package/dist/template/implementations/generated_sso.template.js +2 -3
  215. package/dist/template/implementations/http_validators.template.js +2 -3
  216. package/dist/template/implementations/init_types.template.js +2 -3
  217. package/dist/template/implementations/model.template.js +4 -4
  218. package/dist/template/implementations/model_test.template.js +2 -3
  219. package/dist/template/implementations/queries.template.js +2 -3
  220. package/dist/template/implementations/sd.template.js +2 -3
  221. package/dist/template/implementations/services.template.js +2 -3
  222. package/dist/template/implementations/view_form.template.js +12 -9
  223. package/dist/template/implementations/view_id_all_select.template.js +2 -3
  224. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  225. package/dist/template/implementations/view_list.template.js +19 -17
  226. package/dist/template/implementations/view_search_input.template.js +2 -3
  227. package/dist/template/index.js +9 -3
  228. package/dist/template/template-manager.js +2 -3
  229. package/dist/template/template-types.js +1 -2
  230. package/dist/template/template.js +2 -3
  231. package/dist/template/zod-converter.js +54 -47
  232. package/dist/testing/_relation-graph.js +2 -3
  233. package/dist/testing/bootstrap.js +2 -3
  234. package/dist/testing/data-explorer.js +2 -3
  235. package/dist/testing/dev-test-routes.js +2 -3
  236. package/dist/testing/dev-vitest-manager.js +15 -12
  237. package/dist/testing/faker-mappings.js +1 -2
  238. package/dist/testing/filesystem.js +2 -3
  239. package/dist/testing/fixture-generator.js +2 -3
  240. package/dist/testing/fixture-loader.js +1 -2
  241. package/dist/testing/fixture-manager.js +12 -9
  242. package/dist/testing/global-setup.js +5 -5
  243. package/dist/testing/index.js +6 -3
  244. package/dist/testing/naite-vitest-reporter.js +1 -2
  245. package/dist/testing/parallel-db-manager.js +2 -3
  246. package/dist/testing/vitest-helpers.js +2 -3
  247. package/dist/tooling/__tests__/helpers/sonamu-test-root.js +2 -3
  248. package/dist/tooling/cdd-service.js +1 -2
  249. package/dist/tooling/cli-tooling.js +1 -2
  250. package/dist/tooling/fixture-service.js +1 -2
  251. package/dist/tooling/index.js +1 -2
  252. package/dist/tooling/test-run-client.js +2 -3
  253. package/dist/tsdown.api.config.js +1 -2
  254. package/dist/types/types.js +2 -3
  255. package/dist/ui/ai-api.d.ts.map +1 -1
  256. package/dist/ui/ai-api.js +4 -5
  257. package/dist/ui/ai-client.d.ts +2 -2
  258. package/dist/ui/ai-client.d.ts.map +1 -1
  259. package/dist/ui/ai-client.js +9 -8
  260. package/dist/ui/api.d.ts.map +1 -1
  261. package/dist/ui/api.js +11 -8
  262. package/dist/ui/async-route.js +1 -2
  263. package/dist/ui/cdd-service.js +22 -21
  264. package/dist/ui/migrations-api.js +6 -5
  265. package/dist/ui-web/assets/index-QDMyy31K.js +180 -0
  266. package/dist/ui-web/assets/index-dV7akMFB.css +1 -0
  267. package/dist/ui-web/index.html +2 -2
  268. package/dist/utils/async-utils.js +1 -2
  269. package/dist/utils/class-name.js +1 -2
  270. package/dist/utils/console-util.js +1 -2
  271. package/dist/utils/controller.js +2 -3
  272. package/dist/utils/esm-utils.js +1 -2
  273. package/dist/utils/fs-utils.js +2 -3
  274. package/dist/utils/lodash-able.js +1 -2
  275. package/dist/utils/model.js +1 -2
  276. package/dist/utils/object-utils.js +2 -3
  277. package/dist/utils/path-utils.js +2 -3
  278. package/dist/utils/process-utils.js +2 -3
  279. package/dist/utils/runtime-value.js +1 -2
  280. package/dist/utils/sql-parser.js +2 -3
  281. package/dist/utils/type-utils.js +8 -8
  282. package/dist/utils/utils.js +2 -3
  283. package/dist/utils/zod-error.js +2 -3
  284. package/dist/vector/chunking.js +1 -2
  285. package/dist/vector/config.js +1 -2
  286. package/dist/vector/embedding.js +4 -4
  287. package/package.json +63 -63
  288. package/src/ai/agents/agent.ts +1 -1
  289. package/src/api/__tests__/sonamu.plugins.test.ts +11 -1
  290. package/src/api/__tests__/sonamu.websocket-routes.test.ts +234 -0
  291. package/src/api/__tests__/sonamu.websocket.test.ts +241 -24
  292. package/src/api/config.ts +1 -1
  293. package/src/api/context.ts +2 -8
  294. package/src/api/sonamu.ts +46 -28
  295. package/src/auth/audit-log/plugin.ts +2 -0
  296. package/src/compress/types.ts +1 -1
  297. package/src/exceptions/error-handler.ts +3 -2
  298. package/src/index.ts +1 -0
  299. package/src/stream/__tests__/ws-contracts.test.ts +483 -265
  300. package/src/stream/__tests__/ws-multinode.test.ts +326 -0
  301. package/src/stream/__tests__/ws-registry-async.test.ts +855 -0
  302. package/src/stream/__tests__/ws-test-helpers.ts +360 -0
  303. package/src/stream/__tests__/ws.test.ts +342 -145
  304. package/src/stream/index.ts +1 -0
  305. package/src/stream/ws-audience-resolver.ts +21 -19
  306. package/src/stream/ws-cluster-bus.ts +12 -4
  307. package/src/stream/ws-core.ts +14 -0
  308. package/src/stream/ws-delivery.ts +321 -97
  309. package/src/stream/ws-frame.ts +39 -0
  310. package/src/stream/ws-local-connection-store.ts +10 -9
  311. package/src/stream/ws-presence-index.ts +273 -0
  312. package/src/stream/ws-presence-store.ts +64 -284
  313. package/src/stream/ws-registry.ts +272 -85
  314. package/src/stream/ws-session-id.ts +39 -0
  315. package/src/stream/ws.ts +91 -50
  316. package/src/template/implementations/model.template.ts +3 -3
  317. package/src/template/implementations/view_list.template.ts +12 -13
  318. package/src/ui/ai-api.ts +4 -2
  319. package/src/ui/ai-client.ts +2 -2
  320. package/src/ui/api.ts +58 -62
  321. package/dist/ui-web/assets/index-BMdIyKXS.css +0 -1
  322. package/dist/ui-web/assets/index-LpE8u19O.js +0 -178
@@ -2,7 +2,7 @@ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
2
  import { init_runtime_value, isObjectValue, isStringValue } from "../utils/runtime-value.js";
3
3
  import { init_types, isEnumProp } from "../types/types.js";
4
4
  import { init_types as init_types$1, operatorsByPropType } from "./types.js";
5
- //#region src/filter/utils.ts
5
+ // src/filter/utils.ts
6
6
  /**
7
7
  * Fastify가 파싱한 sonamuFilter 객체를 정규화
8
8
  * 문자열 값을 적절한 타입(숫자, 불린)으로 변환
@@ -93,9 +93,11 @@ function validateSonamuFilters(filters, entity) {
93
93
  }
94
94
  if (isEnumProp(prop)) {
95
95
  const enumValues = getEnumValues(entity, prop.id);
96
- if (enumValues) if (op === "in" || op === "notIn") {
97
- if (Array.isArray(value)) for (const v of value) validateEnumValue(field, v, enumValues);
98
- } else validateEnumValue(field, value, enumValues);
96
+ if (enumValues) {
97
+ if (op === "in" || op === "notIn") {
98
+ if (Array.isArray(value)) for (const v of value) validateEnumValue(field, v, enumValues);
99
+ } else validateEnumValue(field, value, enumValues);
100
+ }
99
101
  }
100
102
  }
101
103
  }
@@ -120,8 +122,7 @@ var init_utils = __esmMin((() => {
120
122
  init_runtime_value();
121
123
  init_types$1();
122
124
  }));
123
- //#endregion
124
125
  init_utils();
125
126
  export { getEnumValues, init_utils, normalizeFilterQuery, validateSonamuFilters };
126
127
 
127
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5XCI7XG5pbXBvcnQgeyBpc0VudW1Qcm9wIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBpc09iamVjdFZhbHVlLCBpc1N0cmluZ1ZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL3J1bnRpbWUtdmFsdWVcIjtcbmltcG9ydCB7IG9wZXJhdG9yc0J5UHJvcFR5cGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBGaWx0ZXJPcGVyYXRvciwgdHlwZSBGaWx0ZXJRdWVyeSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbnR5cGUgRHluYW1pY0ZpbHRlclZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBudWxsIHwgRHluYW1pY0ZpbHRlclZhbHVlW107XG50eXBlIER5bmFtaWNGaWx0ZXJFbnRpdHkgPSB7IFtmaWVsZDogc3RyaW5nXTogRHluYW1pY0ZpbHRlclZhbHVlIH07XG50eXBlIENvbnZlcnRlZEZpbHRlclZhbHVlPFZhbHVlPiA9IFZhbHVlIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCBDb252ZXJ0ZWRGaWx0ZXJWYWx1ZTxWYWx1ZT5bXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWVyeSBOb3JtYWxpemF0aW9uXG4vLyBVUkwg7L+866asIOyKpO2KuOungeycvOuhnCDsoITri6zrkJwg66y47J6Q7Je07J2EIOyggeygiO2VnCDtg4DsnoXsnLzroZwg67OA7ZmYXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBGYXN0aWZ56rCAIO2MjOyLse2VnCBzb25hbXVGaWx0ZXIg6rCd7LK066W8IOygleq3nO2ZlFxuICog66y47J6Q7Je0IOqwkuydhCDsoIHsoIjtlZwg7YOA7J6FKOyIq+yekCwg67aI66awKeycvOuhnCDrs4DtmZhcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVVJMOiA/c29uYW11RmlsdGVyW3N0YXR1c109aGlkZGVuJnNvbmFtdUZpbHRlcltidWRnZXRdW2d0XT0xMDAwMFxuICogLy8gRmFzdGlmeSDtjIzsi7Eg6rKw6rO8OlxuICogY29uc3QgcmF3RmlsdGVyID0geyBzdGF0dXM6IFwiaGlkZGVuXCIsIGJ1ZGdldDogeyBndDogXCIxMDAwMFwiIH0gfTtcbiAqXG4gKiAvLyDsoJXqt5ztmZQ6XG4gKiBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplRmlsdGVyUXVlcnkocmF3RmlsdGVyKTtcbiAqIC8vIOKGkiB7IHN0YXR1czogXCJoaWRkZW5cIiwgYnVkZ2V0OiB7IGd0OiAxMDAwMCB9IH1cbiAqXG4gKiBAcGFyYW0gcmF3RmlsdGVyIEZhc3RpZnnqsIAg7YyM7Iux7ZWcIOybkOuzuCBzb25hbXVGaWx0ZXIg6rCd7LK0XG4gKiBAcmV0dXJucyDtg4DsnoXsnbQg67OA7ZmY65CcIEZpbHRlclF1ZXJ5IOqwneyytFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRmlsdGVyUXVlcnk8VEVudGl0eSA9IER5bmFtaWNGaWx0ZXJFbnRpdHksIFZhbHVlID0gbmV2ZXI+KFxuICByYXdGaWx0ZXI6IFZhbHVlLFxuKTogRmlsdGVyUXVlcnk8VEVudGl0eT4ge1xuICBpZiAoIXJhd0ZpbHRlciB8fCAhaXNPYmplY3RWYWx1ZShyYXdGaWx0ZXIpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZDogRmlsdGVyUXVlcnk8VEVudGl0eT4gPSB7fTtcblxuICBmb3IgKGNvbnN0IFtmaWVsZCwgY29uZGl0aW9uXSBvZiBPYmplY3QuZW50cmllcyhyYXdGaWx0ZXIpKSB7XG4gICAgaWYgKGNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkIHx8IGNvbmRpdGlvbiA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAvLyDsp4HsoJEg6rCSIChlceyZgCDrj5nsnbwpXG4gICAgaWYgKCFpc09iamVjdFZhbHVlKGNvbmRpdGlvbikgfHwgQXJyYXkuaXNBcnJheShjb25kaXRpb24pKSB7XG4gICAgICAvLyBTQUZFVFk6IOyEoO2WiSDrtoTquLDsmYAg7ZWo7IiYIOqzhOyVveydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICAgIG5vcm1hbGl6ZWRbZmllbGQgYXMga2V5b2YgVEVudGl0eV0gPSBjb252ZXJ0VHlwZShcbiAgICAgICAgY29uZGl0aW9uLFxuICAgICAgKSBhcyBGaWx0ZXJRdWVyeTxURW50aXR5PltrZXlvZiBURW50aXR5XTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIOyXsOyCsOyekCDqsJ3ssrRcbiAgICBjb25zdCBvcGVyYXRvcnMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtvcGVyYXRvciwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbikpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ob3BlcmF0b3JzLCB7IFtvcGVyYXRvcl06IGNvbnZlcnRUeXBlKHZhbHVlKSB9KTtcbiAgICB9XG4gICAgLy8gU0FGRVRZOiDshKDtlokg67aE6riw7JmAIO2VqOyImCDqs4Tslb3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgbm9ybWFsaXplZFtmaWVsZCBhcyBrZXlvZiBURW50aXR5XSA9IG9wZXJhdG9ycyBhcyBGaWx0ZXJRdWVyeTxURW50aXR5PltrZXlvZiBURW50aXR5XTtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKipcbiAqIOqwkuydhCDsoIHsoIjtlZwg7YOA7J6F7Jy866GcIOuzgO2ZmFxuICog66y47J6Q7Je0IOKGkiDsiKvsnpAsIOu2iOumsCwgTlVMTCDrk7FcbiAqXG4gKiBAZXhhbXBsZVxuICogY29udmVydFR5cGUoXCIxMjNcIikg4oaSIDEyM1xuICogY29udmVydFR5cGUoXCJ0cnVlXCIpIOKGkiB0cnVlXG4gKiBjb252ZXJ0VHlwZShcImhlbGxvXCIpIOKGkiBcImhlbGxvXCJcbiAqIGNvbnZlcnRUeXBlKFtcIjFcIiwgXCIyXCIsIFwiM1wiXSkg4oaSIFsxLCAyLCAzXVxuICovXG5mdW5jdGlvbiBjb252ZXJ0VHlwZTxWYWx1ZT4odmFsdWU6IFZhbHVlKTogQ29udmVydGVkRmlsdGVyVmFsdWU8VmFsdWU+IHtcbiAgLy8g67Cw7Je0XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoY29udmVydFR5cGUpO1xuICB9XG5cbiAgLy8g7J2066+4IOuzgO2ZmOuQnCDtg4DsnoVcbiAgaWYgKCFpc1N0cmluZ1ZhbHVlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vIOyIq+yekFxuICBpZiAoL14tP1xcZCsoXFwuXFxkKyk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgfVxuXG4gIC8vIOu2iOumsFxuICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHJldHVybiBmYWxzZTtcblxuICAvLyBOVUxMXG4gIGlmICh2YWx1ZSA9PT0gXCJudWxsXCIpIHJldHVybiBudWxsO1xuXG4gIC8vIOusuOyekOyXtCDqt7jrjIDroZxcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZhbGlkYXRpb24gKOqygOymnSlcbi8vIOuplO2DgOuNsOydtO2EsCDquLDrsJjsnLzroZwg7ZWE7YSwIOy/vOumrOydmCDsnKDtmqjshLEg6rKA7KadXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBzb25hbXVGaWx0ZXLrpbwgRW50aXR5IOq4sOuwmOycvOuhnCDqsoDspp1cbiAqXG4gKiDtlYTthLDrp4Eg67aI6rCA64ql7ZWcIO2VhOuTnCwg7KeA7JuQ7ZWY7KeAIOyViuuKlCDsl7DsgrDsnpAsIOyemOuqu+uQnCBlbnVtIOqwkiDrk7HsnYQg7LK07YGsXG4gKlxuICogQHBhcmFtIGZpbHRlcnMg6rKA7Kad7ZWgIO2VhO2EsCDsv7zrpqxcbiAqIEBwYXJhbSBlbnRpdHkgRW50aXR5IOqwneyytFxuICogQHRocm93cyB7RXJyb3J9IOqygOymnSDsi6TtjKgg7IucIOyDgeyEuO2VnCDsl5Drn6wg66mU7Iuc7KeA7JmAIO2VqOq7mCDsmIjsmbgg67Cc7IOdXG4gKlxuICogQGV4YW1wbGVcbiAqIHZhbGlkYXRlU29uYW11RmlsdGVycyh7IHN0YXR1czogXCJhY3RpdmVcIiwgaWQ6IHsgZ3RlOiAxIH0gfSwgUHJvamVjdEVudGl0eSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvbmFtdUZpbHRlcnM8VEVudGl0eSA9IER5bmFtaWNGaWx0ZXJFbnRpdHk+KFxuICBmaWx0ZXJzOiBGaWx0ZXJRdWVyeTxURW50aXR5PiB8IHVuZGVmaW5lZCxcbiAgZW50aXR5OiBFbnRpdHksXG4pOiB2b2lkIHtcbiAgaWYgKCFmaWx0ZXJzKSByZXR1cm47XG5cbiAgLy8g7ZWE7YSwIOqwgOuKpe2VnCDtlYTrk5zrk6TsnYQgTWFw7Jy866GcIOunjOuTpOyWtOyEnCDruaDrpbgg7KGw7ZqMXG4gIGNvbnN0IGZpbHRlcmFibGVQcm9wcyA9IG5ldyBNYXAoZW50aXR5LmdldEZpbHRlcmFibGVQcm9wcygpLm1hcCgocHJvcCkgPT4gW3Byb3AubmFtZSwgcHJvcF0pKTtcblxuICBmb3IgKGNvbnN0IFtmaWVsZCwgY29uZGl0aW9uXSBvZiBPYmplY3QuZW50cmllcyhmaWx0ZXJzKSkge1xuICAgIGlmIChjb25kaXRpb24gPT09IHVuZGVmaW5lZCB8fCBjb25kaXRpb24gPT09IG51bGwpIGNvbnRpbnVlO1xuXG4gICAgLy8gMS4g7ZWE65Oc6rCAIO2VhO2EsOungSDqsIDriqXtlZzsp4Ag6rKA7KadXG4gICAgY29uc3QgcHJvcCA9IGZpbHRlcmFibGVQcm9wcy5nZXQoZmllbGQpO1xuICAgIGlmICghcHJvcCkge1xuICAgICAgY29uc3QgYXZhaWxhYmxlRmllbGRzID0gQXJyYXkuZnJvbShmaWx0ZXJhYmxlUHJvcHMua2V5cygpKS5qb2luKFwiLCBcIik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGDtlYTrk5wgJyR7ZmllbGR9J+uKlCDtlYTthLDrp4HtlaAg7IiYIOyXhuyKteuLiOuLpC4gKO2VhO2EsCDqsIDriqXtlZwg7ZWE65OcOiAke2F2YWlsYWJsZUZpZWxkc30pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8g7ZW064u5IHByb3Ag7YOA7J6F7JeQIO2XiOyaqeuQmOuKlCDsl7DsgrDsnpAg66qp66GdXG4gICAgLy8gU0FGRVRZOiDshKDtlokg67aE6riw7JmAIO2VqOyImCDqs4Tslb3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgY29uc3QgYWxsb3dlZE9wZXJhdG9ycyA9IChvcGVyYXRvcnNCeVByb3BUeXBlW1xuICAgICAgLy8gU0FGRVRZOiDshKDtlokg67aE6riw7JmAIO2VqOyImCDqs4Tslb3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgICBwcm9wLnR5cGUgYXMga2V5b2YgdHlwZW9mIG9wZXJhdG9yc0J5UHJvcFR5cGVcbiAgICBdID8/IFtcImVxXCJdKSBhcyByZWFkb25seSBGaWx0ZXJPcGVyYXRvcltdO1xuXG4gICAgLy8g7KeB7KCRIOqwkuyduCDqsr3smrAgKGVx7JmAIOuPmeydvClcbiAgICBpZiAoIWlzT2JqZWN0VmFsdWUoY29uZGl0aW9uKSB8fCBBcnJheS5pc0FycmF5KGNvbmRpdGlvbikpIHtcbiAgICAgIC8vIGVudW0g7YOA7J6F7J2066m0IOqwkiDqsoDspp1cbiAgICAgIGlmIChpc0VudW1Qcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSBnZXRFbnVtVmFsdWVzKGVudGl0eSwgcHJvcC5pZCk7XG4gICAgICAgIGlmIChlbnVtVmFsdWVzKSB7XG4gICAgICAgICAgdmFsaWRhdGVFbnVtVmFsdWUoZmllbGQsIGNvbmRpdGlvbiwgZW51bVZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIDIuIOyXsOyCsOyekCDqsJ3ssrTsnbgg6rK97JqwXG4gICAgZm9yIChjb25zdCBbb3BlcmF0b3IsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb25kaXRpb24pKSB7XG4gICAgICAvLyBTQUZFVFk6IOyEoO2WiSDrtoTquLDsmYAg7ZWo7IiYIOqzhOyVveydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICAgIGNvbnN0IG9wID0gb3BlcmF0b3IgYXMgRmlsdGVyT3BlcmF0b3I7XG5cbiAgICAgIC8vIOyXsOyCsOyekOqwgCDtlbTri7kg7YOA7J6F7JeQ7IScIOyngOybkOuQmOuKlOyngCDqsoDspp1cbiAgICAgIGlmICghYWxsb3dlZE9wZXJhdG9ycy5pbmNsdWRlcyhvcCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGDtlYTrk5wgJyR7ZmllbGR9Jyjtg4DsnoU6ICR7cHJvcC50eXBlfSnripQgJyR7b3BlcmF0b3J9JyDsl7DsgrDsnpDrpbwg7KeA7JuQ7ZWY7KeAIOyViuyKteuLiOuLpC5gICtcbiAgICAgICAgICAgIGAo7KeA7JuQ65CY64qUIOyXsOyCsOyekDogJHthbGxvd2VkT3BlcmF0b3JzLmpvaW4oXCIsIFwiKX0pYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wID09PSBcImlzTnVsbFwiIHx8IG9wID09PSBcImlzTm90TnVsbFwiKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoKG9wID09PSBcImluXCIgfHwgb3AgPT09IFwibm90SW5cIikgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihg7ZWE65OcICcke2ZpZWxkfSfsnZggJyR7b3BlcmF0b3J9JyDsl7DsgrDsnpDripQg67Cw7Je0IOqwkuydhCDsmpTqtaztlanri4jri6QuYCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcCA9PT0gXCJiZXR3ZWVuXCIpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYO2VhOuTnCAnJHtmaWVsZH0n7J2YICdiZXR3ZWVuJyDsl7DsgrDsnpDripQg6ri47J20IDLsnZgg67Cw7Je0IOqwkuydhCDsmpTqtaztlanri4jri6QuYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZW51bSDtg4DsnoXsnbTrqbQg6rCSIOqygOymnVxuICAgICAgaWYgKGlzRW51bVByb3AocHJvcCkpIHtcbiAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IGdldEVudW1WYWx1ZXMoZW50aXR5LCBwcm9wLmlkKTtcbiAgICAgICAgaWYgKGVudW1WYWx1ZXMpIHtcbiAgICAgICAgICBpZiAob3AgPT09IFwiaW5cIiB8fCBvcCA9PT0gXCJub3RJblwiKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVFbnVtVmFsdWUoZmllbGQsIHYsIGVudW1WYWx1ZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbGlkYXRlRW51bVZhbHVlKGZpZWxkLCB2YWx1ZSwgZW51bVZhbHVlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRW51bSDqsJIg6rKA7KadIGhlbHBlclxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUVudW1WYWx1ZTxWYWx1ZT4oZmllbGQ6IHN0cmluZywgdmFsdWU6IFZhbHVlLCBlbnVtVmFsdWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWVudW1WYWx1ZXMuaW5jbHVkZXMoU3RyaW5nKHZhbHVlKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBg7ZWE65OcICcke2ZpZWxkfSfsnZgg6rCSICcke3ZhbHVlfSfripQg7Jyg7Zqo7ZWY7KeAIOyViuyKteuLiOuLpC4gKO2XiOyaqeuQmOuKlCDqsJI6ICR7ZW51bVZhbHVlcy5qb2luKFwiLCBcIil9KWAsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEVudW0g6rCSIOuqqeuhnSDstpTstpwgaGVscGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnVtVmFsdWVzKGVudGl0eTogRW50aXR5LCBlbnVtSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZW51bURlZiA9IGVudGl0eS5lbnVtTGFiZWxzPy5bZW51bUlkXTtcbiAgaWYgKCFlbnVtRGVmKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhlbnVtRGVmKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0JBLFNBQWdCLHFCQUNkLFdBQ3NCO0NBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxTQUFTLEdBQ3hDLE9BQU8sQ0FBQztDQUdWLE1BQU0sYUFBbUMsQ0FBQztDQUUxQyxLQUFLLE1BQU0sQ0FBQyxPQUFPLGNBQWMsT0FBTyxRQUFRLFNBQVMsR0FBRztFQUMxRCxJ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
128
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZpbHRlci91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEVudGl0eSB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5XCI7XG5pbXBvcnQgeyBpc0VudW1Qcm9wIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBpc09iamVjdFZhbHVlLCBpc1N0cmluZ1ZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL3J1bnRpbWUtdmFsdWVcIjtcbmltcG9ydCB7IG9wZXJhdG9yc0J5UHJvcFR5cGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBGaWx0ZXJPcGVyYXRvciwgdHlwZSBGaWx0ZXJRdWVyeSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbnR5cGUgRHluYW1pY0ZpbHRlclZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBudWxsIHwgRHluYW1pY0ZpbHRlclZhbHVlW107XG50eXBlIER5bmFtaWNGaWx0ZXJFbnRpdHkgPSB7IFtmaWVsZDogc3RyaW5nXTogRHluYW1pY0ZpbHRlclZhbHVlIH07XG50eXBlIENvbnZlcnRlZEZpbHRlclZhbHVlPFZhbHVlPiA9IFZhbHVlIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCBDb252ZXJ0ZWRGaWx0ZXJWYWx1ZTxWYWx1ZT5bXTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRdWVyeSBOb3JtYWxpemF0aW9uXG4vLyBVUkwg7L+866asIOyKpO2KuOungeycvOuhnCDsoITri6zrkJwg66y47J6Q7Je07J2EIOyggeygiO2VnCDtg4DsnoXsnLzroZwg67OA7ZmYXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBGYXN0aWZ56rCAIO2MjOyLse2VnCBzb25hbXVGaWx0ZXIg6rCd7LK066W8IOygleq3nO2ZlFxuICog66y47J6Q7Je0IOqwkuydhCDsoIHsoIjtlZwg7YOA7J6FKOyIq+yekCwg67aI66awKeycvOuhnCDrs4DtmZhcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVVJMOiA/c29uYW11RmlsdGVyW3N0YXR1c109aGlkZGVuJnNvbmFtdUZpbHRlcltidWRnZXRdW2d0XT0xMDAwMFxuICogLy8gRmFzdGlmeSDtjIzsi7Eg6rKw6rO8OlxuICogY29uc3QgcmF3RmlsdGVyID0geyBzdGF0dXM6IFwiaGlkZGVuXCIsIGJ1ZGdldDogeyBndDogXCIxMDAwMFwiIH0gfTtcbiAqXG4gKiAvLyDsoJXqt5ztmZQ6XG4gKiBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplRmlsdGVyUXVlcnkocmF3RmlsdGVyKTtcbiAqIC8vIOKGkiB7IHN0YXR1czogXCJoaWRkZW5cIiwgYnVkZ2V0OiB7IGd0OiAxMDAwMCB9IH1cbiAqXG4gKiBAcGFyYW0gcmF3RmlsdGVyIEZhc3RpZnnqsIAg7YyM7Iux7ZWcIOybkOuzuCBzb25hbXVGaWx0ZXIg6rCd7LK0XG4gKiBAcmV0dXJucyDtg4DsnoXsnbQg67OA7ZmY65CcIEZpbHRlclF1ZXJ5IOqwneyytFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplRmlsdGVyUXVlcnk8VEVudGl0eSA9IER5bmFtaWNGaWx0ZXJFbnRpdHksIFZhbHVlID0gbmV2ZXI+KFxuICByYXdGaWx0ZXI6IFZhbHVlLFxuKTogRmlsdGVyUXVlcnk8VEVudGl0eT4ge1xuICBpZiAoIXJhd0ZpbHRlciB8fCAhaXNPYmplY3RWYWx1ZShyYXdGaWx0ZXIpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZDogRmlsdGVyUXVlcnk8VEVudGl0eT4gPSB7fTtcblxuICBmb3IgKGNvbnN0IFtmaWVsZCwgY29uZGl0aW9uXSBvZiBPYmplY3QuZW50cmllcyhyYXdGaWx0ZXIpKSB7XG4gICAgaWYgKGNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkIHx8IGNvbmRpdGlvbiA9PT0gbnVsbCkgY29udGludWU7XG5cbiAgICAvLyDsp4HsoJEg6rCSIChlceyZgCDrj5nsnbwpXG4gICAgaWYgKCFpc09iamVjdFZhbHVlKGNvbmRpdGlvbikgfHwgQXJyYXkuaXNBcnJheShjb25kaXRpb24pKSB7XG4gICAgICAvLyBTQUZFVFk6IOyEoO2WiSDrtoTquLDsmYAg7ZWo7IiYIOqzhOyVveydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICAgIG5vcm1hbGl6ZWRbZmllbGQgYXMga2V5b2YgVEVudGl0eV0gPSBjb252ZXJ0VHlwZShcbiAgICAgICAgY29uZGl0aW9uLFxuICAgICAgKSBhcyBGaWx0ZXJRdWVyeTxURW50aXR5PltrZXlvZiBURW50aXR5XTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIOyXsOyCsOyekCDqsJ3ssrRcbiAgICBjb25zdCBvcGVyYXRvcnMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtvcGVyYXRvciwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGNvbmRpdGlvbikpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ob3BlcmF0b3JzLCB7IFtvcGVyYXRvcl06IGNvbnZlcnRUeXBlKHZhbHVlKSB9KTtcbiAgICB9XG4gICAgLy8gU0FGRVRZOiDshKDtlokg67aE6riw7JmAIO2VqOyImCDqs4Tslb3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgbm9ybWFsaXplZFtmaWVsZCBhcyBrZXlvZiBURW50aXR5XSA9IG9wZXJhdG9ycyBhcyBGaWx0ZXJRdWVyeTxURW50aXR5PltrZXlvZiBURW50aXR5XTtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkO1xufVxuXG4vKipcbiAqIOqwkuydhCDsoIHsoIjtlZwg7YOA7J6F7Jy866GcIOuzgO2ZmFxuICog66y47J6Q7Je0IOKGkiDsiKvsnpAsIOu2iOumsCwgTlVMTCDrk7FcbiAqXG4gKiBAZXhhbXBsZVxuICogY29udmVydFR5cGUoXCIxMjNcIikg4oaSIDEyM1xuICogY29udmVydFR5cGUoXCJ0cnVlXCIpIOKGkiB0cnVlXG4gKiBjb252ZXJ0VHlwZShcImhlbGxvXCIpIOKGkiBcImhlbGxvXCJcbiAqIGNvbnZlcnRUeXBlKFtcIjFcIiwgXCIyXCIsIFwiM1wiXSkg4oaSIFsxLCAyLCAzXVxuICovXG5mdW5jdGlvbiBjb252ZXJ0VHlwZTxWYWx1ZT4odmFsdWU6IFZhbHVlKTogQ29udmVydGVkRmlsdGVyVmFsdWU8VmFsdWU+IHtcbiAgLy8g67Cw7Je0XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS5tYXAoY29udmVydFR5cGUpO1xuICB9XG5cbiAgLy8g7J2066+4IOuzgO2ZmOuQnCDtg4DsnoVcbiAgaWYgKCFpc1N0cmluZ1ZhbHVlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8vIOyIq+yekFxuICBpZiAoL14tP1xcZCsoXFwuXFxkKyk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTnVtYmVyKHZhbHVlKTtcbiAgfVxuXG4gIC8vIOu2iOumsFxuICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSByZXR1cm4gdHJ1ZTtcbiAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHJldHVybiBmYWxzZTtcblxuICAvLyBOVUxMXG4gIGlmICh2YWx1ZSA9PT0gXCJudWxsXCIpIHJldHVybiBudWxsO1xuXG4gIC8vIOusuOyekOyXtCDqt7jrjIDroZxcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZhbGlkYXRpb24gKOqygOymnSlcbi8vIOuplO2DgOuNsOydtO2EsCDquLDrsJjsnLzroZwg7ZWE7YSwIOy/vOumrOydmCDsnKDtmqjshLEg6rKA7KadXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBzb25hbXVGaWx0ZXLrpbwgRW50aXR5IOq4sOuwmOycvOuhnCDqsoDspp1cbiAqXG4gKiDtlYTthLDrp4Eg67aI6rCA64ql7ZWcIO2VhOuTnCwg7KeA7JuQ7ZWY7KeAIOyViuuKlCDsl7DsgrDsnpAsIOyemOuqu+uQnCBlbnVtIOqwkiDrk7HsnYQg7LK07YGsXG4gKlxuICogQHBhcmFtIGZpbHRlcnMg6rKA7Kad7ZWgIO2VhO2EsCDsv7zrpqxcbiAqIEBwYXJhbSBlbnRpdHkgRW50aXR5IOqwneyytFxuICogQHRocm93cyB7RXJyb3J9IOqygOymnSDsi6TtjKgg7IucIOyDgeyEuO2VnCDsl5Drn6wg66mU7Iuc7KeA7JmAIO2VqOq7mCDsmIjsmbgg67Cc7IOdXG4gKlxuICogQGV4YW1wbGVcbiAqIHZhbGlkYXRlU29uYW11RmlsdGVycyh7IHN0YXR1czogXCJhY3RpdmVcIiwgaWQ6IHsgZ3RlOiAxIH0gfSwgUHJvamVjdEVudGl0eSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvbmFtdUZpbHRlcnM8VEVudGl0eSA9IER5bmFtaWNGaWx0ZXJFbnRpdHk+KFxuICBmaWx0ZXJzOiBGaWx0ZXJRdWVyeTxURW50aXR5PiB8IHVuZGVmaW5lZCxcbiAgZW50aXR5OiBFbnRpdHksXG4pOiB2b2lkIHtcbiAgaWYgKCFmaWx0ZXJzKSByZXR1cm47XG5cbiAgLy8g7ZWE7YSwIOqwgOuKpe2VnCDtlYTrk5zrk6TsnYQgTWFw7Jy866GcIOunjOuTpOyWtOyEnCDruaDrpbgg7KGw7ZqMXG4gIGNvbnN0IGZpbHRlcmFibGVQcm9wcyA9IG5ldyBNYXAoZW50aXR5LmdldEZpbHRlcmFibGVQcm9wcygpLm1hcCgocHJvcCkgPT4gW3Byb3AubmFtZSwgcHJvcF0pKTtcblxuICBmb3IgKGNvbnN0IFtmaWVsZCwgY29uZGl0aW9uXSBvZiBPYmplY3QuZW50cmllcyhmaWx0ZXJzKSkge1xuICAgIGlmIChjb25kaXRpb24gPT09IHVuZGVmaW5lZCB8fCBjb25kaXRpb24gPT09IG51bGwpIGNvbnRpbnVlO1xuXG4gICAgLy8gMS4g7ZWE65Oc6rCAIO2VhO2EsOungSDqsIDriqXtlZzsp4Ag6rKA7KadXG4gICAgY29uc3QgcHJvcCA9IGZpbHRlcmFibGVQcm9wcy5nZXQoZmllbGQpO1xuICAgIGlmICghcHJvcCkge1xuICAgICAgY29uc3QgYXZhaWxhYmxlRmllbGRzID0gQXJyYXkuZnJvbShmaWx0ZXJhYmxlUHJvcHMua2V5cygpKS5qb2luKFwiLCBcIik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGDtlYTrk5wgJyR7ZmllbGR9J+uKlCDtlYTthLDrp4HtlaAg7IiYIOyXhuyKteuLiOuLpC4gKO2VhO2EsCDqsIDriqXtlZwg7ZWE65OcOiAke2F2YWlsYWJsZUZpZWxkc30pYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8g7ZW064u5IHByb3Ag7YOA7J6F7JeQIO2XiOyaqeuQmOuKlCDsl7DsgrDsnpAg66qp66GdXG4gICAgLy8gU0FGRVRZOiDshKDtlokg67aE6riw7JmAIO2VqOyImCDqs4Tslb3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgY29uc3QgYWxsb3dlZE9wZXJhdG9ycyA9IChvcGVyYXRvcnNCeVByb3BUeXBlW1xuICAgICAgLy8gU0FGRVRZOiDshKDtlokg67aE6riw7JmAIO2VqOyImCDqs4Tslb3snbQg7J20IO2DgOyeheydhCDrs7TsnqXtlanri4jri6QuXG4gICAgICBwcm9wLnR5cGUgYXMga2V5b2YgdHlwZW9mIG9wZXJhdG9yc0J5UHJvcFR5cGVcbiAgICBdID8/IFtcImVxXCJdKSBhcyByZWFkb25seSBGaWx0ZXJPcGVyYXRvcltdO1xuXG4gICAgLy8g7KeB7KCRIOqwkuyduCDqsr3smrAgKGVx7JmAIOuPmeydvClcbiAgICBpZiAoIWlzT2JqZWN0VmFsdWUoY29uZGl0aW9uKSB8fCBBcnJheS5pc0FycmF5KGNvbmRpdGlvbikpIHtcbiAgICAgIC8vIGVudW0g7YOA7J6F7J2066m0IOqwkiDqsoDspp1cbiAgICAgIGlmIChpc0VudW1Qcm9wKHByb3ApKSB7XG4gICAgICAgIGNvbnN0IGVudW1WYWx1ZXMgPSBnZXRFbnVtVmFsdWVzKGVudGl0eSwgcHJvcC5pZCk7XG4gICAgICAgIGlmIChlbnVtVmFsdWVzKSB7XG4gICAgICAgICAgdmFsaWRhdGVFbnVtVmFsdWUoZmllbGQsIGNvbmRpdGlvbiwgZW51bVZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8vIDIuIOyXsOyCsOyekCDqsJ3ssrTsnbgg6rK97JqwXG4gICAgZm9yIChjb25zdCBbb3BlcmF0b3IsIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjb25kaXRpb24pKSB7XG4gICAgICAvLyBTQUZFVFk6IOyEoO2WiSDrtoTquLDsmYAg7ZWo7IiYIOqzhOyVveydtCDsnbQg7YOA7J6F7J2EIOuztOyepe2VqeuLiOuLpC5cbiAgICAgIGNvbnN0IG9wID0gb3BlcmF0b3IgYXMgRmlsdGVyT3BlcmF0b3I7XG5cbiAgICAgIC8vIOyXsOyCsOyekOqwgCDtlbTri7kg7YOA7J6F7JeQ7IScIOyngOybkOuQmOuKlOyngCDqsoDspp1cbiAgICAgIGlmICghYWxsb3dlZE9wZXJhdG9ycy5pbmNsdWRlcyhvcCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGDtlYTrk5wgJyR7ZmllbGR9Jyjtg4DsnoU6ICR7cHJvcC50eXBlfSnripQgJyR7b3BlcmF0b3J9JyDsl7DsgrDsnpDrpbwg7KeA7JuQ7ZWY7KeAIOyViuyKteuLiOuLpC5gICtcbiAgICAgICAgICAgIGAo7KeA7JuQ65CY64qUIOyXsOyCsOyekDogJHthbGxvd2VkT3BlcmF0b3JzLmpvaW4oXCIsIFwiKX0pYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wID09PSBcImlzTnVsbFwiIHx8IG9wID09PSBcImlzTm90TnVsbFwiKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoKG9wID09PSBcImluXCIgfHwgb3AgPT09IFwibm90SW5cIikgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihg7ZWE65OcICcke2ZpZWxkfSfsnZggJyR7b3BlcmF0b3J9JyDsl7DsgrDsnpDripQg67Cw7Je0IOqwkuydhCDsmpTqtaztlanri4jri6QuYCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcCA9PT0gXCJiZXR3ZWVuXCIpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSB8fCB2YWx1ZS5sZW5ndGggIT09IDIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYO2VhOuTnCAnJHtmaWVsZH0n7J2YICdiZXR3ZWVuJyDsl7DsgrDsnpDripQg6ri47J20IDLsnZgg67Cw7Je0IOqwkuydhCDsmpTqtaztlanri4jri6QuYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZW51bSDtg4DsnoXsnbTrqbQg6rCSIOqygOymnVxuICAgICAgaWYgKGlzRW51bVByb3AocHJvcCkpIHtcbiAgICAgICAgY29uc3QgZW51bVZhbHVlcyA9IGdldEVudW1WYWx1ZXMoZW50aXR5LCBwcm9wLmlkKTtcbiAgICAgICAgaWYgKGVudW1WYWx1ZXMpIHtcbiAgICAgICAgICBpZiAob3AgPT09IFwiaW5cIiB8fCBvcCA9PT0gXCJub3RJblwiKSB7XG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCB2IG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVFbnVtVmFsdWUoZmllbGQsIHYsIGVudW1WYWx1ZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbGlkYXRlRW51bVZhbHVlKGZpZWxkLCB2YWx1ZSwgZW51bVZhbHVlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRW51bSDqsJIg6rKA7KadIGhlbHBlclxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUVudW1WYWx1ZTxWYWx1ZT4oZmllbGQ6IHN0cmluZywgdmFsdWU6IFZhbHVlLCBlbnVtVmFsdWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIWVudW1WYWx1ZXMuaW5jbHVkZXMoU3RyaW5nKHZhbHVlKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBg7ZWE65OcICcke2ZpZWxkfSfsnZgg6rCSICcke3ZhbHVlfSfripQg7Jyg7Zqo7ZWY7KeAIOyViuyKteuLiOuLpC4gKO2XiOyaqeuQmOuKlCDqsJI6ICR7ZW51bVZhbHVlcy5qb2luKFwiLCBcIil9KWAsXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEVudW0g6rCSIOuqqeuhnSDstpTstpwgaGVscGVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnVtVmFsdWVzKGVudGl0eTogRW50aXR5LCBlbnVtSWQ6IHN0cmluZyk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZW51bURlZiA9IGVudGl0eS5lbnVtTGFiZWxzPy5bZW51bUlkXTtcbiAgaWYgKCFlbnVtRGVmKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIHJldHVybiBPYmplY3Qua2V5cyhlbnVtRGVmKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0JBLFNBQWdCLHFCQUNkLFdBQ3NCO0NBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxTQUFTLEdBQ3hDLE9BQU8sQ0FBQztDQUdWLE1BQU0sYUFBbUMsQ0FBQztDQUUxQyxLQUFLLE1BQU0sQ0FBQyxPQUFPLGNBQWMsT0FBTyxRQUFRLFNBQVMsR0FBRztFQUMxRCxJ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
package/dist/index.d.ts CHANGED
@@ -39,6 +39,7 @@ export * from "./stream/ws-audience";
39
39
  export * from "./stream/ws-cluster-bus";
40
40
  export * from "./stream/ws-core";
41
41
  export * from "./stream/ws-presence-store";
42
+ export * from "./stream/ws-session-id";
42
43
  export * from "./stream/ws";
43
44
  export * from "./stream/ws-registry";
44
45
  export * from "./tasks/decorator";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,mBAAmB,eAAe,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3D,cAAc,+BAA+B,CAAC;AAC9C,mBAAmB,uBAAuB,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,mBAAmB,kBAAkB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACrE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sCAAsC,CAAC;AACrD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,mBAAmB,eAAe,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3D,cAAc,+BAA+B,CAAC;AAC9C,mBAAmB,uBAAuB,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,mBAAmB,kBAAkB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AACrE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sCAAsC,CAAC;AACrD,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ import { CompressPresets, init_compress, isCompressDisabled, toFastifyCompressOp
8
8
  import { AlreadyProcessedException, BadRequestException, DuplicateRowException, InternalServerErrorException, NotFoundException, ServiceUnavailableException, SoException, TargetNotFoundException, UnauthorizedException, init_so_exceptions, isSoException } from "./exceptions/so-exceptions.js";
9
9
  import { createMockSSEFactory, createSSEFactory, init_sse } from "./stream/sse.js";
10
10
  import { WebSocketAudience, init_ws_audience } from "./stream/ws-audience.js";
11
+ import { createWebSocketNodeId, createWebSocketSessionId, init_ws_session_id, parseWebSocketSessionNodeId } from "./stream/ws-session-id.js";
11
12
  import { NoopWebSocketClusterBus, init_ws_cluster_bus } from "./stream/ws-cluster-bus.js";
12
13
  import { InMemoryWebSocketPresenceStore, init_ws_presence_store } from "./stream/ws-presence-store.js";
13
14
  import { WebSocketRegistry, init_ws_registry } from "./stream/ws-registry.js";
@@ -18,7 +19,7 @@ import { fastifyCaster, init_caster } from "./api/caster.js";
18
19
  import { ApiParamType, BUILT_IN_TYPE_IDS, EntityJsonSchema, GenerateOptions, KnownOpclassValues, NormalPropSchema, PathAndCode, RelationPropSchema, RenderingNode, SonamuFileArraySchema, SonamuFileSchema, SonamuQueryMode, SonamuSemanticParams, TemplateKey, TemplateOptions, ZodStringFormat, getDescription, getEnumDefValues, getSubsetFields, init_types, isBelongsToOneRelationProp, isBigIntegerArrayProp, isBigIntegerProp, isBigIntegerSingleProp, isBooleanArrayProp, isBooleanProp, isBooleanSingleProp, isCustomJoinClause, isDateArrayProp, isDateProp, isDateSingleProp, isEnumArrayProp, isEnumDefWithCone, isEnumProp, isEnumSingleProp, isHasManyRelationProp, isIntegerArrayProp, isIntegerProp, isIntegerSingleProp, isInternalSubsetField, isJsonProp, isKnexError, isManyToManyRelationProp, isNumberArrayProp, isNumberProp, isNumberSingleProp, isNumericArrayProp, isNumericProp, isNumericSingleProp, isOneToOneRelationProp, isRelationProp, isSearchTextJsonSourceZodType, isSearchTextProp, isStringArrayProp, isStringProp, isStringSingleProp, isSubsetDefWithCone, isTsVectorProp, isUuidArrayProp, isUuidProp, isUuidSingleProp, isVectorArrayProp, isVectorProp, isVectorSingleProp, isVirtualCodeProp, isVirtualProp, isVirtualQueryProp, normalizeSubsetField, zArrayable } from "./types/types.js";
19
20
  import { getZodObjectFromApi, init_code_converters } from "./api/code-converters.js";
20
21
  import { assertHttpValidatorRegistry, createHttpValidator, defaultHttpValidatorDependencies, getHttpValidatorFingerprint, getHttpValidatorRouteIdentifier, getHttpValidatorRouteKey, init_http_validator } from "./api/http-validator.js";
21
- import { createWebSocketReplyStub, resolveWebSocketCloseDescriptor, resolveWebSocketPluginOptions } from "./api/websocket-helpers.js";
22
+ import { createWebSocketReplyStub, init_websocket_helpers, resolveWebSocketCloseDescriptor, resolveWebSocketPluginOptions } from "./api/websocket-helpers.js";
22
23
  import { Sonamu, defaultSonamuHttpValidatorDependencies, init_sonamu } from "./api/sonamu.js";
23
24
  import { EntityManager, init_entity_manager } from "./entity/entity-manager.js";
24
25
  import { Naite, NaiteClass, NaiteQuery, init_naite } from "./naite/naite.js";
@@ -64,7 +65,7 @@ import { workflow } from "./tasks/decorator.js";
64
65
  import { Template, init_template } from "./template/template.js";
65
66
  import { TemplateManager, TemplateManagerClass, init_template_manager } from "./template/template-manager.js";
66
67
  import { withProp, withProps } from "./utils/type-utils.js";
67
- //#region src/index.ts
68
+ // src/index.ts
68
69
  init_base_frame();
69
70
  init_config();
70
71
  init_decorators();
@@ -85,8 +86,43 @@ init_upsert_builder();
85
86
  init_entity();
86
87
  init_entity_manager();
87
88
  init_env();
89
+ init_db();
90
+ init_utils();
91
+ init_cache_control();
92
+ init_compress();
93
+ init_so_exceptions();
94
+ init_sse();
95
+ init_ws_audience();
96
+ init_ws_session_id();
97
+ init_ws_cluster_bus();
98
+ init_ws_presence_store();
99
+ init_ws_registry();
100
+ init_ws();
101
+ init_controller();
102
+ init_config();
103
+ init_types();
104
+ init_http_validator();
105
+ init_websocket_helpers();
106
+ init_sonamu();
107
+ init_entity_manager();
108
+ init_naite();
109
+ init_puri_types();
110
+ init_puri();
111
+ init_puri_wrapper();
112
+ init_upsert_builder();
113
+ init_base_frame();
114
+ init_base_model();
115
+ init_decorators();
116
+ init_fixture_manager();
117
+ init_entity();
118
+ init_postgresql_schema_reader();
119
+ init_code_generation();
120
+ init_migration_set();
121
+ init_migrator();
122
+ init_template();
123
+ init_template_manager();
88
124
  init_so_exceptions();
89
- init_utils$1(), init_types$1();
125
+ init_types$1(), init_utils$1();
90
126
  init_code_generation();
91
127
  init_migration_set();
92
128
  init_migrator();
@@ -96,6 +132,7 @@ init_sse();
96
132
  init_ws_audience();
97
133
  init_ws_cluster_bus();
98
134
  init_ws_presence_store();
135
+ init_ws_session_id();
99
136
  init_ws();
100
137
  init_ws_registry();
101
138
  init_template();
@@ -105,7 +142,6 @@ init_types();
105
142
  init_controller();
106
143
  init_model();
107
144
  init_utils();
108
- //#endregion
109
- export { ADMIN_SCHEMA, ANONYMOUS_SCHEMA, API_KEY_SCHEMA, AlreadyProcessedException, ApiParamType, BASE_FIELD_MAPPINGS, BUILT_IN_TYPE_IDS, BadRequestException, BaseFrameClass, BaseModel, BaseModelClass, CachePresets, CompressPresets, DB, DBClass, DuplicateRowException, Entity, EntityJsonSchema, EntityManager, FUZZY_OPERATORS, FixtureManager, FixtureManagerClass, GenerateOptions, InMemoryWebSocketPresenceStore, InternalServerErrorException, JWT_SCHEMA, JoinClauseGroup, KnownOpclassValues, MigrationTargetExecutionError, Migrator, Naite, NaiteClass, NaiteQuery, NaiteReporter, NoopWebSocketClusterBus, NormalPropSchema, NotFoundException, ORGANIZATION_SCHEMA, PASSKEY_SCHEMA, PHONE_NUMBER_SCHEMA, PathAndCode, PostgreSQLSchemaReader, Puri, PuriTransactionWrapper, PuriWrapper, RelationPropSchema, RenderingNode, ResolvedPuri, SSO_SCHEMA, ServiceUnavailableException, SoException, Sonamu, SonamuFileArraySchema, SonamuFileSchema, SonamuQueryMode, SonamuSemanticParams, TWO_FACTOR_SCHEMA, TargetNotFoundException, Template, TemplateKey, TemplateManager, TemplateManagerClass, TemplateOptions, USERNAME_SCHEMA, UnauthorizedException, UpsertBuilder, WebSocketAudience, WebSocketRegistry, WebSocketRuntime, WhereGroup, ZodStringFormat, addCompanionsToEntities, admin, anonymous, api, apiKey, applyCacheHeaders, asArray, assertDefined, assertExists, assertHttpValidatorRegistry, assertNotNull, betterAuthV1, buildCacheControl, cache, convertFastifyHeadersToStandard, createHttpValidator, createMockSSEFactory, createSSEFactory, createWebSocketReplyStub, createWebSocketRuntime, defaultHttpValidatorDependencies, defaultOperatorByPropType, defaultSonamuHttpValidatorDependencies, defineConfig, differenceWith, exhaustive, fastifyCaster, findApiRootPath, findAppRootPath, generateAlterCode, generateBetterAuthEntities, generateCreateCode, getAlterIndexesTo, getDescription, getEnumDefValues, getEnumValues, getHttpValidatorFingerprint, getHttpValidatorRouteIdentifier, getHttpValidatorRouteKey, getMigrationSetFromEntity, getSonamuEnvironment, getSubsetFields, getZodObjectFromApi, ingestAuditEvent, intersectionBy, isBelongsToOneRelationProp, isBigIntegerArrayProp, isBigIntegerProp, isBigIntegerSingleProp, isBooleanArrayProp, isBooleanProp, isBooleanSingleProp, isCompressDisabled, isCustomJoinClause, isDaemonServer, isDateArrayProp, isDateProp, isDateSingleProp, isDevelopment, isEnumArrayProp, isEnumDefWithCone, isEnumProp, isEnumSingleProp, isHasManyRelationProp, isHotReloadServer, isInDocker, isIntegerArrayProp, isIntegerProp, isIntegerSingleProp, isInternalSubsetField, isJsonProp, isKnexError, isLocal, isManyToManyRelationProp, isNumberArrayProp, isNumberProp, isNumberSingleProp, isNumericArrayProp, isNumericProp, isNumericSingleProp, isOneToOneRelationProp, isPlainObject, isProduction, isRefField, isRelationProp, isRemote, isSearchTextJsonSourceZodType, isSearchTextProp, isSoException, isStaging, isStringArrayProp, isStringProp, isStringSingleProp, isSubsetDefWithCone, isTest, isTsVectorProp, isUuidArrayProp, isUuidProp, isUuidSingleProp, isVectorArrayProp, isVectorProp, isVectorSingleProp, isVirtualCodeProp, isVirtualProp, isVirtualQueryProp, jwt, loadConfig, merge, nonNullable, normalizeFilterQuery, normalizeSubsetField, normalizeZodCompilerPolicy, objToMap, operatorsByPropType, organization, parseFuzzyOperator, passkey, phoneNumber, registeredApis, resolveWebSocketCloseDescriptor, resolveWebSocketPluginOptions, setMigrationIndexDefaults, setupErrorHandler, sonamuAuditLog, sonamuKnexAdapter, sso, stream, toFastifyCompressOption, transactional, twoFactor, upload, username, validateSonamuFilters, websocket, withProp, withProps, workflow, zArrayable };
145
+ export { ADMIN_SCHEMA, ANONYMOUS_SCHEMA, API_KEY_SCHEMA, AlreadyProcessedException, ApiParamType, BASE_FIELD_MAPPINGS, BUILT_IN_TYPE_IDS, BadRequestException, BaseFrameClass, BaseModel, BaseModelClass, CachePresets, CompressPresets, DB, DBClass, DuplicateRowException, Entity, EntityJsonSchema, EntityManager, FUZZY_OPERATORS, FixtureManager, FixtureManagerClass, GenerateOptions, InMemoryWebSocketPresenceStore, InternalServerErrorException, JWT_SCHEMA, JoinClauseGroup, KnownOpclassValues, MigrationTargetExecutionError, Migrator, Naite, NaiteClass, NaiteQuery, NaiteReporter, NoopWebSocketClusterBus, NormalPropSchema, NotFoundException, ORGANIZATION_SCHEMA, PASSKEY_SCHEMA, PHONE_NUMBER_SCHEMA, PathAndCode, PostgreSQLSchemaReader, Puri, PuriTransactionWrapper, PuriWrapper, RelationPropSchema, RenderingNode, ResolvedPuri, SSO_SCHEMA, ServiceUnavailableException, SoException, Sonamu, SonamuFileArraySchema, SonamuFileSchema, SonamuQueryMode, SonamuSemanticParams, TWO_FACTOR_SCHEMA, TargetNotFoundException, Template, TemplateKey, TemplateManager, TemplateManagerClass, TemplateOptions, USERNAME_SCHEMA, UnauthorizedException, UpsertBuilder, WebSocketAudience, WebSocketRegistry, WebSocketRuntime, WhereGroup, ZodStringFormat, addCompanionsToEntities, admin, anonymous, api, apiKey, applyCacheHeaders, asArray, assertDefined, assertExists, assertHttpValidatorRegistry, assertNotNull, betterAuthV1, buildCacheControl, cache, convertFastifyHeadersToStandard, createHttpValidator, createMockSSEFactory, createSSEFactory, createWebSocketNodeId, createWebSocketReplyStub, createWebSocketRuntime, createWebSocketSessionId, defaultHttpValidatorDependencies, defaultOperatorByPropType, defaultSonamuHttpValidatorDependencies, defineConfig, differenceWith, exhaustive, fastifyCaster, findApiRootPath, findAppRootPath, generateAlterCode, generateBetterAuthEntities, generateCreateCode, getAlterIndexesTo, getDescription, getEnumDefValues, getEnumValues, getHttpValidatorFingerprint, getHttpValidatorRouteIdentifier, getHttpValidatorRouteKey, getMigrationSetFromEntity, getSonamuEnvironment, getSubsetFields, getZodObjectFromApi, ingestAuditEvent, intersectionBy, isBelongsToOneRelationProp, isBigIntegerArrayProp, isBigIntegerProp, isBigIntegerSingleProp, isBooleanArrayProp, isBooleanProp, isBooleanSingleProp, isCompressDisabled, isCustomJoinClause, isDaemonServer, isDateArrayProp, isDateProp, isDateSingleProp, isDevelopment, isEnumArrayProp, isEnumDefWithCone, isEnumProp, isEnumSingleProp, isHasManyRelationProp, isHotReloadServer, isInDocker, isIntegerArrayProp, isIntegerProp, isIntegerSingleProp, isInternalSubsetField, isJsonProp, isKnexError, isLocal, isManyToManyRelationProp, isNumberArrayProp, isNumberProp, isNumberSingleProp, isNumericArrayProp, isNumericProp, isNumericSingleProp, isOneToOneRelationProp, isPlainObject, isProduction, isRefField, isRelationProp, isRemote, isSearchTextJsonSourceZodType, isSearchTextProp, isSoException, isStaging, isStringArrayProp, isStringProp, isStringSingleProp, isSubsetDefWithCone, isTest, isTsVectorProp, isUuidArrayProp, isUuidProp, isUuidSingleProp, isVectorArrayProp, isVectorProp, isVectorSingleProp, isVirtualCodeProp, isVirtualProp, isVirtualQueryProp, jwt, loadConfig, merge, nonNullable, normalizeFilterQuery, normalizeSubsetField, normalizeZodCompilerPolicy, objToMap, operatorsByPropType, organization, parseFuzzyOperator, parseWebSocketSessionNodeId, passkey, phoneNumber, registeredApis, resolveWebSocketCloseDescriptor, resolveWebSocketPluginOptions, setMigrationIndexDefaults, setupErrorHandler, sonamuAuditLog, sonamuKnexAdapter, sso, stream, toFastifyCompressOption, transactional, twoFactor, upload, username, validateSonamuFilters, websocket, withProp, withProps, workflow, zArrayable };
110
146
 
111
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FwaS9iYXNlLWZyYW1lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvY29uZmlnXCI7XG5leHBvcnQgdHlwZSAqIGZyb20gXCIuL2FwaS9jb250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvZGVjb3JhdG9yc1wiO1xuZXhwb3J0IHsgZmFzdGlmeUNhc3RlciB9IGZyb20gXCIuL2FwaS9jYXN0ZXJcIjtcbmV4cG9ydCB7IGdldFpvZE9iamVjdEZyb21BcGkgfSBmcm9tIFwiLi9hcGkvY29kZS1jb252ZXJ0ZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvaHR0cC12YWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FwaS9zb25hbXVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F1dGhcIjtcbmV4cG9ydCB7IGNhY2hlIH0gZnJvbSBcIi4vY2FjaGUvZGVjb3JhdG9yXCI7XG5leHBvcnQgdHlwZSB7IENhY2hlRGVjb3JhdG9yT3B0aW9ucyB9IGZyb20gXCIuL2NhY2hlL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jYWNoZS1jb250cm9sL2NhY2hlLWNvbnRyb2xcIjtcbmV4cG9ydCB0eXBlICogZnJvbSBcIi4vY2FjaGUtY29udHJvbC90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcHJlc3MvY29tcHJlc3NcIjtcbmV4cG9ydCB0eXBlICogZnJvbSBcIi4vY29tcHJlc3MvdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2Jhc2UtbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2Jhc2UtbW9kZWwudHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2RiXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpLnR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpLXN1YnNldC50eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW50aXR5L2VudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5leHBvcnQgeyBnZXRTb25hbXVFbnZpcm9ubWVudCwgdHlwZSBTb25hbXVFbnZpcm9ubWVudCB9IGZyb20gXCIuL2VudlwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhjZXB0aW9ucy9lcnJvci1oYW5kbGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leGNlcHRpb25zL3NvLWV4Y2VwdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZpbHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL2NvZGUtZ2VuZXJhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL21pZ3JhdGlvbi1zZXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi9taWdyYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL3Bvc3RncmVzcWwtc2NoZW1hLXJlYWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9uYWl0ZS9uYWl0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbmFpdGUvbmFpdGUtcmVwb3J0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0cmVhbS9zc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0cmVhbS93cy1hdWRpZW5jZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RyZWFtL3dzLWNsdXN0ZXItYnVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlYW0vd3MtY29yZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RyZWFtL3dzLXByZXNlbmNlLXN0b3JlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlYW0vd3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0cmVhbS93cy1yZWdpc3RyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGFza3MvZGVjb3JhdG9yXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW1wbGF0ZS90ZW1wbGF0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVtcGxhdGUvdGVtcGxhdGUtbWFuYWdlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVzdGluZy9maXh0dXJlLW1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlscy9jb250cm9sbGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlscy9tb2RlbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvdHlwZS11dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvdXRpbHNcIjtcblxuLy8gZXhwb3J0ICogZnJvbSBcIi4vYXBpL2NvZGUtY29udmVydGVyc1wiO1xuLy8gZXhwb3J0ICogZnJvbSBcIi4vc3luY2VyL3N5bmNlclwiO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBSTRDO3FCQUNlOzs7O2VBSWxCOzs7Ozs7Ozs7OztTQWdCMkIifQ==
147
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FwaS9iYXNlLWZyYW1lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvY29uZmlnXCI7XG5leHBvcnQgdHlwZSAqIGZyb20gXCIuL2FwaS9jb250ZXh0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvZGVjb3JhdG9yc1wiO1xuZXhwb3J0IHsgZmFzdGlmeUNhc3RlciB9IGZyb20gXCIuL2FwaS9jYXN0ZXJcIjtcbmV4cG9ydCB7IGdldFpvZE9iamVjdEZyb21BcGkgfSBmcm9tIFwiLi9hcGkvY29kZS1jb252ZXJ0ZXJzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcGkvaHR0cC12YWxpZGF0b3JcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2FwaS9zb25hbXVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F1dGhcIjtcbmV4cG9ydCB7IGNhY2hlIH0gZnJvbSBcIi4vY2FjaGUvZGVjb3JhdG9yXCI7XG5leHBvcnQgdHlwZSB7IENhY2hlRGVjb3JhdG9yT3B0aW9ucyB9IGZyb20gXCIuL2NhY2hlL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jYWNoZS1jb250cm9sL2NhY2hlLWNvbnRyb2xcIjtcbmV4cG9ydCB0eXBlICogZnJvbSBcIi4vY2FjaGUtY29udHJvbC90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29tcHJlc3MvY29tcHJlc3NcIjtcbmV4cG9ydCB0eXBlICogZnJvbSBcIi4vY29tcHJlc3MvdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2Jhc2UtbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2Jhc2UtbW9kZWwudHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlL2RiXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpLnR5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS9wdXJpLXN1YnNldC50eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YWJhc2UvcHVyaS13cmFwcGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW50aXR5L2VudGl0eVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5leHBvcnQgeyBnZXRTb25hbXVFbnZpcm9ubWVudCwgdHlwZSBTb25hbXVFbnZpcm9ubWVudCB9IGZyb20gXCIuL2VudlwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXhjZXB0aW9ucy9lcnJvci1oYW5kbGVyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9leGNlcHRpb25zL3NvLWV4Y2VwdGlvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZpbHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL2NvZGUtZ2VuZXJhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL21pZ3JhdGlvbi1zZXRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21pZ3JhdGlvbi9taWdyYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL3Bvc3RncmVzcWwtc2NoZW1hLXJlYWRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWlncmF0aW9uL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9uYWl0ZS9uYWl0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbmFpdGUvbmFpdGUtcmVwb3J0ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0cmVhbS9zc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N0cmVhbS93cy1hdWRpZW5jZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RyZWFtL3dzLWNsdXN0ZXItYnVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlYW0vd3MtY29yZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RyZWFtL3dzLXByZXNlbmNlLXN0b3JlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlYW0vd3Mtc2Vzc2lvbi1pZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RyZWFtL3dzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdHJlYW0vd3MtcmVnaXN0cnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Rhc2tzL2RlY29yYXRvclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdGVtcGxhdGUvdGVtcGxhdGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3RlbXBsYXRlL3RlbXBsYXRlLW1hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Rlc3RpbmcvZml4dHVyZS1tYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlcy90eXBlc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvY29udHJvbGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMvbW9kZWxcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL3R5cGUtdXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzL3V0aWxzXCI7XG5cbi8vIGV4cG9ydCAqIGZyb20gXCIuL2FwaS9jb2RlLWNvbnZlcnRlcnNcIjtcbi8vIGV4cG9ydCAqIGZyb20gXCIuL3N5bmNlci9zeW5jZXJcIjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJNEMsWUFBQTtBQUNlLHFCQUFBOzs7O0FBSWxCLGVBQUE7Ozs7Ozs7Ozs7O0FBZ0IyQixTQUFBIn0=
@@ -1,7 +1,7 @@
1
1
  import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
2
  import { asArray, init_model } from "../utils/model.js";
3
3
  import inflection from "inflection";
4
- //#region src/logger/category.ts
4
+ // src/logger/category.ts
5
5
  function isSameCategory(categoryA, categoryB) {
6
6
  const categoryBArr = asArray(categoryB);
7
7
  if (categoryA.length !== categoryBArr.length) return false;
@@ -22,8 +22,7 @@ function convertNaiteKeyToCategory(key) {
22
22
  var init_category = __esmMin((() => {
23
23
  init_model();
24
24
  }));
25
- //#endregion
26
25
  init_category();
27
26
  export { convertDomainToCategory, convertNaiteKeyToCategory, init_category, isSameCategory };
28
27
 
29
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci9jYXRlZ29yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOT1RFOiBpbXBvcnQgKiBhcyBpbmZsZWN0aW9uIO2YueydgCBpbXBvcnQgeyB1bmRlcnNjb3JlIH0g7IKs7JqpIOyLnCDsmKTrpZgg67Cc7IOdLlxuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcblxuaW1wb3J0IHsgYXNBcnJheSB9IGZyb20gXCIuLi91dGlscy9tb2RlbFwiO1xuXG4vLyDrkZAg7Lm07YWM6rOg66as6rCAIOuPmeydvO2VnOyngCDtmZXsnbhcbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVDYXRlZ29yeShcbiAgY2F0ZWdvcnlBOiByZWFkb25seSBzdHJpbmdbXSxcbiAgY2F0ZWdvcnlCOiBzdHJpbmcgfCBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBjb25zdCBjYXRlZ29yeUJBcnIgPSBhc0FycmF5KGNhdGVnb3J5Qik7XG4gIGlmIChjYXRlZ29yeUEubGVuZ3RoICE9PSBjYXRlZ29yeUJBcnIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGNhdGVnb3J5QS5ldmVyeSgoY2F0ZWdvcnksIGluZGV4KSA9PiBjYXRlZ29yeUJBcnJbaW5kZXhdID09PSBjYXRlZ29yeSk7XG59XG5cbi8vIOuhnOq5hSDsubTthYzqs6Drpqzrpbwg7KeA7KCV7ZWp64uI64ukLlxuLy8g7JiIOiBTb21lQWdlbnRDbGFzcyAtPiBbXCJzb25hbXVcIiwgXCJhZ2VudFwiLCBcInNvbWUtYWdlbnRcIl1cbi8vIFNvbWVMb25nV29ya2Zsb3cgLT4gW1wic29uYW11XCIsIFwid29ya2Zsb3dcIiwgXCJzb21lLWxvbmctd29ya2Zsb3dcIl1cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeShcbiAgbmFtZTogc3RyaW5nLFxuICB0eXBlOiBcIm1vZGVsXCIgfCBcImZyYW1lXCIgfCBcImFnZW50XCIgfCBcIndvcmtmbG93XCIsXG4pOiByZWFkb25seSBzdHJpbmdbXSB7XG4gIGNvbnN0IGNvbXBhcmVJdGVtcyA9IFtcImNsYXNzXCJdO1xuICBpZiAodHlwZSAhPT0gXCJ3b3JrZmxvd1wiKSB7XG4gICAgY29tcGFyZUl0ZW1zLnB1c2godHlwZSk7XG4gIH1cblxuICAvLyBTb21lQWdlbnRDbGFzcyAtPiBzb21lX2FnZW50LCBTb21lTW9kZWxDbGFzcyAtPiBzb21lX21vZGVsLCBTb21lRnJhbWVDbGFzcyAtPiBzb21lX2ZyYW1lXG4gIGNvbnN0IGNvbnZlcnRlZE5hbWUgPSBpbmZsZWN0aW9uXG4gICAgLnVuZGVyc2NvcmUobmFtZSlcbiAgICAuc3BsaXQoXCJfXCIpXG4gICAgLmZpbHRlcigoaXRlbSkgPT4gIWNvbXBhcmVJdGVtcy5pbmNsdWRlcyhpdGVtKSlcbiAgICAuam9pbihcIi1cIik7XG5cbiAgcmV0dXJuIFtcInNvbmFtdVwiLCB0eXBlLCBjb252ZXJ0ZWROYW1lXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnROYWl0ZUtleVRvQ2F0ZWdvcnkoa2V5OiBzdHJpbmcpOiByZWFkb25seSBzdHJpbmdbXSB7XG4gIHJldHVybiBrZXkuc3BsaXQoXCIuXCIpLmZsYXRNYXAoKHN0ZW0pID0+IHN0ZW0uc3BsaXQoXCI6XCIpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQU1BLFNBQWdCLGVBQ2QsV0FDQSxXQUNTO0NBQ1QsTUFBTSxlQUFlLFFBQVEsU0FBUztDQUN0QyxJQUFJLFVBQVUsV0FBVyxhQUFhLFFBQ3BDLE9BQU87Q0FHVCxPQUFPLFVBQVUsT0FBTyxVQUFVLFVBQVUsYUFBYSxXQUFXLFFBQVE7QUFDOUU7QUFLQSxTQUFnQix3QkFDZCxNQUNBLE1BQ21CO0NBQ25CLE1BQU0sZUFBZSxDQUFDLE9BQU87Q0FDN0IsSUFBSSxTQUFTLFlBQ1gsYUFBYSxLQUFLLElBQUk7Q0FVeEIsT0FBTztFQUFDO0VBQVU7RUFOSSxXQUNuQixXQUFXLElBQUksQ0FBQyxDQUNoQixNQUFNLEdBQUcsQ0FBQyxDQUNWLFFBQVEsU0FBUyxDQUFDLGFBQWEsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUM5QyxLQUFLLEdBRWdCO0NBQWE7QUFDdkM7QUFFQSxTQUFnQiwwQkFBMEIsS0FBZ0M7Q0FDeEUsT0FBTyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxTQUFTLEtBQUssTUFBTSxHQUFHLENBQUM7QUFDekQ7O1lBdkN3QyJ9
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xvZ2dlci9jYXRlZ29yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOT1RFOiBpbXBvcnQgKiBhcyBpbmZsZWN0aW9uIO2YueydgCBpbXBvcnQgeyB1bmRlcnNjb3JlIH0g7IKs7JqpIOyLnCDsmKTrpZgg67Cc7IOdLlxuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcblxuaW1wb3J0IHsgYXNBcnJheSB9IGZyb20gXCIuLi91dGlscy9tb2RlbFwiO1xuXG4vLyDrkZAg7Lm07YWM6rOg66as6rCAIOuPmeydvO2VnOyngCDtmZXsnbhcbmV4cG9ydCBmdW5jdGlvbiBpc1NhbWVDYXRlZ29yeShcbiAgY2F0ZWdvcnlBOiByZWFkb25seSBzdHJpbmdbXSxcbiAgY2F0ZWdvcnlCOiBzdHJpbmcgfCBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBjb25zdCBjYXRlZ29yeUJBcnIgPSBhc0FycmF5KGNhdGVnb3J5Qik7XG4gIGlmIChjYXRlZ29yeUEubGVuZ3RoICE9PSBjYXRlZ29yeUJBcnIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGNhdGVnb3J5QS5ldmVyeSgoY2F0ZWdvcnksIGluZGV4KSA9PiBjYXRlZ29yeUJBcnJbaW5kZXhdID09PSBjYXRlZ29yeSk7XG59XG5cbi8vIOuhnOq5hSDsubTthYzqs6Drpqzrpbwg7KeA7KCV7ZWp64uI64ukLlxuLy8g7JiIOiBTb21lQWdlbnRDbGFzcyAtPiBbXCJzb25hbXVcIiwgXCJhZ2VudFwiLCBcInNvbWUtYWdlbnRcIl1cbi8vIFNvbWVMb25nV29ya2Zsb3cgLT4gW1wic29uYW11XCIsIFwid29ya2Zsb3dcIiwgXCJzb21lLWxvbmctd29ya2Zsb3dcIl1cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeShcbiAgbmFtZTogc3RyaW5nLFxuICB0eXBlOiBcIm1vZGVsXCIgfCBcImZyYW1lXCIgfCBcImFnZW50XCIgfCBcIndvcmtmbG93XCIsXG4pOiByZWFkb25seSBzdHJpbmdbXSB7XG4gIGNvbnN0IGNvbXBhcmVJdGVtcyA9IFtcImNsYXNzXCJdO1xuICBpZiAodHlwZSAhPT0gXCJ3b3JrZmxvd1wiKSB7XG4gICAgY29tcGFyZUl0ZW1zLnB1c2godHlwZSk7XG4gIH1cblxuICAvLyBTb21lQWdlbnRDbGFzcyAtPiBzb21lX2FnZW50LCBTb21lTW9kZWxDbGFzcyAtPiBzb21lX21vZGVsLCBTb21lRnJhbWVDbGFzcyAtPiBzb21lX2ZyYW1lXG4gIGNvbnN0IGNvbnZlcnRlZE5hbWUgPSBpbmZsZWN0aW9uXG4gICAgLnVuZGVyc2NvcmUobmFtZSlcbiAgICAuc3BsaXQoXCJfXCIpXG4gICAgLmZpbHRlcigoaXRlbSkgPT4gIWNvbXBhcmVJdGVtcy5pbmNsdWRlcyhpdGVtKSlcbiAgICAuam9pbihcIi1cIik7XG5cbiAgcmV0dXJuIFtcInNvbmFtdVwiLCB0eXBlLCBjb252ZXJ0ZWROYW1lXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnROYWl0ZUtleVRvQ2F0ZWdvcnkoa2V5OiBzdHJpbmcpOiByZWFkb25seSBzdHJpbmdbXSB7XG4gIHJldHVybiBrZXkuc3BsaXQoXCIuXCIpLmZsYXRNYXAoKHN0ZW0pID0+IHN0ZW0uc3BsaXQoXCI6XCIpKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQU1BLFNBQWdCLGVBQ2QsV0FDQSxXQUNTO0NBQ1QsTUFBTSxlQUFlLFFBQVEsU0FBUztDQUN0QyxJQUFJLFVBQVUsV0FBVyxhQUFhLFFBQ3BDLE9BQU87Q0FHVCxPQUFPLFVBQVUsT0FBTyxVQUFVLFVBQVUsYUFBYSxXQUFXLFFBQVE7QUFDOUU7QUFLQSxTQUFnQix3QkFDZCxNQUNBLE1BQ21CO0NBQ25CLE1BQU0sZUFBZSxDQUFDLE9BQU87Q0FDN0IsSUFBSSxTQUFTLFlBQ1gsYUFBYSxLQUFLLElBQUk7Q0FVeEIsT0FBTztFQUFDO0VBQVU7RUFOSSxXQUNuQixXQUFXLElBQUksQ0FBQyxDQUNoQixNQUFNLEdBQUcsQ0FBQyxDQUNWLFFBQVEsU0FBUyxDQUFDLGFBQWEsU0FBUyxJQUFJLENBQUMsQ0FBQyxDQUM5QyxLQUFLLEdBRWdCO0NBQWE7QUFDdkM7QUFFQSxTQUFnQiwwQkFBMEIsS0FBZ0M7Q0FDeEUsT0FBTyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxTQUFTLEtBQUssTUFBTSxHQUFHLENBQUM7QUFDekQ7O0NBdkN3QyxXQUFBIn0=
@@ -2,7 +2,7 @@ import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
2
  import { init_category, isSameCategory } from "./category.js";
3
3
  import { configure, getConsoleSink } from "@logtape/logtape";
4
4
  import { getPrettyFormatter } from "@logtape/pretty";
5
- //#region src/logger/configure.ts
5
+ // src/logger/configure.ts
6
6
  function getExternalLogTapeConfiguration() {
7
7
  return globalThis.sonamuKitCliLogTapeOverride;
8
8
  }
@@ -10,7 +10,7 @@ function hasExternalLogTapeConfiguration() {
10
10
  return getExternalLogTapeConfiguration() !== void 0;
11
11
  }
12
12
  function defaultFastifySink(fastifyCategory) {
13
- return getConsoleSink({ formatter: ((formatRecord, record) => {
13
+ const fastifyFormatter = ((formatRecord, record) => {
14
14
  const filterFastify = (request, requestRecord, responseCode) => {
15
15
  if (!request.url.startsWith("/api")) return formatRecord(requestRecord);
16
16
  const lastItem = requestRecord.message[requestRecord.message.length - 1];
@@ -33,7 +33,8 @@ function defaultFastifySink(fastifyCategory) {
33
33
  timestamp: "time",
34
34
  categoryWidth: 20,
35
35
  categoryTruncate: "middle"
36
- })) });
36
+ }));
37
+ return getConsoleSink({ formatter: fastifyFormatter });
37
38
  }
38
39
  function defaultFastifyFilter(fastifyCategory) {
39
40
  return (record) => {
@@ -96,10 +97,9 @@ async function configureLogTape(options) {
96
97
  reset: true
97
98
  });
98
99
  }
99
- //#endregion
100
100
  __esmMin((() => {
101
101
  init_category();
102
102
  }))();
103
103
  export { configureLogTape, hasExternalLogTapeConfiguration };
104
104
 
105
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnZXIvY29uZmlndXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmZpZ3VyZSwgZ2V0Q29uc29sZVNpbmsgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb25maWcsXG4gIHR5cGUgRmlsdGVyLFxuICB0eXBlIEZpbHRlckxpa2UsXG4gIHR5cGUgTG9nZ2VyQ29uZmlnLFxuICB0eXBlIExvZ1JlY29yZCxcbiAgdHlwZSBTaW5rLFxuICB0eXBlIFRleHRGb3JtYXR0ZXIsXG59IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBnZXRQcmV0dHlGb3JtYXR0ZXIgfSBmcm9tIFwiQGxvZ3RhcGUvcHJldHR5XCI7XG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlSZXBseSwgdHlwZSBGYXN0aWZ5UmVxdWVzdCB9IGZyb20gXCJmYXN0aWZ5XCI7XG5cbmltcG9ydCB7IGlzU2FtZUNhdGVnb3J5IH0gZnJvbSBcIi4vY2F0ZWdvcnlcIjtcblxuaW50ZXJmYWNlIEV4dGVybmFsTG9nVGFwZUNvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSBjb25maWc6IENvbmZpZzxzdHJpbmcsIHN0cmluZz47XG4gIGFwcGxpZWQ6IGJvb2xlYW47XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgdmFyIHNvbmFtdUtpdENsaUxvZ1RhcGVPdmVycmlkZTogRXh0ZXJuYWxMb2dUYXBlQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0ZXJuYWxMb2dUYXBlQ29uZmlndXJhdGlvbigpOiBFeHRlcm5hbExvZ1RhcGVDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMuc29uYW11S2l0Q2xpTG9nVGFwZU92ZXJyaWRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzRXh0ZXJuYWxMb2dUYXBlQ29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldEV4dGVybmFsTG9nVGFwZUNvbmZpZ3VyYXRpb24oKSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgdHlwZSBTb25hbXVMb2dnaW5nT3B0aW9uczxUU2lua0lkIGV4dGVuZHMgc3RyaW5nLCBURmlsdGVySWQgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICAvLyBmYXN0aWZ5IOuhnOq5hSDsubTthYzqs6DrpqwgKGEuYi5j7J2YIO2Yle2DnOuhnCDrhKPsnLzrqbQgW2EsIGIsIGNd66GcIOuTpOyWtOqwkeuLiOuLpC4pXG4gIC8vIOq4sOuzuOqwkuydgCBbXCJmYXN0aWZ5XCJdIOyeheuLiOuLpC5cbiAgZmFzdGlmeUNhdGVnb3J5PzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLy8g6rCBIO2VreuqqeuTpOydhCDshKTsoJXtlaAg65WMIFwiZmFzdGlmeS1jb25zb2xlXCLsnbQg65Ok7Ja06rCIIOqyveyasCwg642u7Ja07JSM7JuM7KeR64uI64ukLlxuICBzaW5rcz86IFJlY29yZDxUU2lua0lkLCBTaW5rPjtcbiAgZmlsdGVycz86IFJlY29yZDxURmlsdGVySWQsIEZpbHRlckxpa2U+O1xuXG4gIC8vIOqwgSDtla3rqqnsnYQg7ISk7KCV7ZWgIOuVjCBmYXN0aWZ5Q2F0ZWdvcnnsl5Ag7ISk7KCV65CcIOy5tO2FjOqzoOumrOqwgCDsnojsnYQg6rK97JqwLCDquLDrs7ggbG9nZ2VyIOyEpOygleydgCDstpTqsIDrkJjsp4Ag7JWK7Iq164uI64ukLlxuICBsb2dnZXJzPzogTG9nZ2VyQ29uZmlnPFRTaW5rSWQsIFRGaWx0ZXJJZD5bXTtcbn07XG5cbi8vIGZhc3RpZnnsl5Ag64yA7ZWcIOq4sOuzuCBzaW5rIOyEpOyglVxuZnVuY3Rpb24gZGVmYXVsdEZhc3RpZnlTaW5rKGZhc3RpZnlDYXRlZ29yeTogcmVhZG9ubHkgc3RyaW5nW10pOiBTaW5rIHtcbiAgY29uc3QgZmFzdGlmeUZvcm1hdHRlciA9ICgoZm9ybWF0UmVjb3JkOiBUZXh0Rm9ybWF0dGVyLCByZWNvcmQ6IExvZ1JlY29yZCkgPT4ge1xuICAgIC8vIEZhc3RpZnkgQVBJIFJvdXRl7JeQIOuMgO2VnCBMb2dnZXLsnZgg6rK97JqwLCDsnZHri7Ug7L2U65Oc7JmAIOyalOyyrSBVUkzsnYQg7LaU6rCAXG4gICAgY29uc3QgZmlsdGVyRmFzdGlmeSA9IChcbiAgICAgIHJlcXVlc3Q6IEZhc3RpZnlSZXF1ZXN0LFxuICAgICAgcmVxdWVzdFJlY29yZDogTG9nUmVjb3JkLFxuICAgICAgcmVzcG9uc2VDb2RlPzogbnVtYmVyLFxuICAgICkgPT4ge1xuICAgICAgaWYgKCFyZXF1ZXN0LnVybC5zdGFydHNXaXRoKFwiL2FwaVwiKSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0UmVjb3JkKHJlcXVlc3RSZWNvcmQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYXN0SXRlbSA9IC8qIFNBRkVUWTogTG9nVGFwZSDqtazshLEg7Iqk7YKk66eI6rCAIOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gcmVxdWVzdFJlY29yZFxuICAgICAgICAubWVzc2FnZVtyZXF1ZXN0UmVjb3JkLm1lc3NhZ2UubGVuZ3RoIC0gMV0gYXMgc3RyaW5nO1xuICAgICAgcmV0dXJuIGZvcm1hdFJlY29yZCh7XG4gICAgICAgIC4uLnJlcXVlc3RSZWNvcmQsXG4gICAgICAgIG1lc3NhZ2U6IFtcbiAgICAgICAgICAuLi5yZXF1ZXN0UmVjb3JkLm1lc3NhZ2Uuc2xpY2UoMCwgLTEpLFxuICAgICAgICAgIGBbJHtyZXF1ZXN0Lm1ldGhvZH0ke3Jlc3BvbnNlQ29kZSA/IGA6JHtyZXNwb25zZUNvZGV9YCA6IFwiXCJ9XSAke3JlcXVlc3Qub3JpZ2luYWxVcmx9IC0gJHtsYXN0SXRlbX1gLFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGlmICghaXNTYW1lQ2F0ZWdvcnkoZmFzdGlmeUNhdGVnb3J5LCBbLi4ucmVjb3JkLmNhdGVnb3J5XSkpIHtcbiAgICAgIHJldHVybiBmb3JtYXRSZWNvcmQocmVjb3JkKTtcbiAgICB9XG5cbiAgICBpZiAoXCJyZXFcIiBpbiByZWNvcmQucHJvcGVydGllcyAmJiByZWNvcmQucHJvcGVydGllcy5yZXEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSAvKiBTQUZFVFk6IExvZ1RhcGUg6rWs7ISxIOyKpO2CpOuniOqwgCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHJlY29yZC5wcm9wZXJ0aWVzXG4gICAgICAgIC5yZXEgYXMgRmFzdGlmeVJlcXVlc3Q7XG4gICAgICByZXR1cm4gZmlsdGVyRmFzdGlmeShyZXF1ZXN0LCByZWNvcmQpO1xuICAgIH1cblxuICAgIGlmIChcInJlc1wiIGluIHJlY29yZC5wcm9wZXJ0aWVzICYmIHJlY29yZC5wcm9wZXJ0aWVzLnJlcyAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcmVwbHkgPSAvKiBTQUZFVFk6IExvZ1RhcGUg6rWs7ISxIOyKpO2CpOuniOqwgCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHJlY29yZC5wcm9wZXJ0aWVzXG4gICAgICAgIC5yZXMgYXMgRmFzdGlmeVJlcGx5O1xuICAgICAgcmV0dXJuIGZpbHRlckZhc3RpZnkocmVwbHkucmVxdWVzdCwgcmVjb3JkLCByZXBseS5zdGF0dXNDb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybWF0UmVjb3JkKHJlY29yZCk7XG4gIH0pLmJpbmQoXG4gICAgbnVsbCxcbiAgICBnZXRQcmV0dHlGb3JtYXR0ZXIoe1xuICAgICAgdGltZXN0YW1wOiBcInRpbWVcIixcbiAgICAgIGNhdGVnb3J5V2lkdGg6IDIwLFxuICAgICAgY2F0ZWdvcnlUcnVuY2F0ZTogXCJtaWRkbGVcIixcbiAgICB9KSxcbiAgKTtcblxuICByZXR1cm4gZ2V0Q29uc29sZVNpbmsoe1xuICAgIGZvcm1hdHRlcjogZmFzdGlmeUZvcm1hdHRlcixcbiAgfSk7XG59XG5cbi8vIGZhc3RpZnnsl5Ag64yA7ZWcIOq4sOuzuCBmaWx0ZXIg7ISk7KCVICgvYXBpIOqyveuhnOydmCDsmpTssq3rp4wg66Gc6rmFKVxuZnVuY3Rpb24gZGVmYXVsdEZhc3RpZnlGaWx0ZXIoZmFzdGlmeUNhdGVnb3J5OiByZWFkb25seSBzdHJpbmdbXSk6IEZpbHRlciB7XG4gIHJldHVybiAocmVjb3JkOiBMb2dSZWNvcmQpID0+IHtcbiAgICBpZiAoIWlzU2FtZUNhdGVnb3J5KFsuLi5mYXN0aWZ5Q2F0ZWdvcnldLCBbLi4ucmVjb3JkLmNhdGVnb3J5XSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXCJyZXFcIiBpbiByZWNvcmQucHJvcGVydGllcyAmJiByZWNvcmQucHJvcGVydGllcy5yZXEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSAvKiBTQUZFVFk6IExvZ1RhcGUg6rWs7ISxIOyKpO2CpOuniOqwgCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHJlY29yZC5wcm9wZXJ0aWVzXG4gICAgICAgIC5yZXEgYXMgRmFzdGlmeVJlcXVlc3Q7XG4gICAgICByZXR1cm4gcmVxdWVzdC51cmwuc3RhcnRzV2l0aChcIi9hcGlcIikgJiYgcmVxdWVzdC51cmwgIT09IFwiL2FwaS9oZWFsdGhjaGVja1wiO1xuICAgIH1cblxuICAgIGlmIChcInJlc1wiIGluIHJlY29yZC5wcm9wZXJ0aWVzICYmIHJlY29yZC5wcm9wZXJ0aWVzLnJlcyAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcmVwbHkgPSAvKiBTQUZFVFk6IExvZ1RhcGUg6rWs7ISxIOyKpO2CpOuniOqwgCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHJlY29yZC5wcm9wZXJ0aWVzXG4gICAgICAgIC5yZXMgYXMgRmFzdGlmeVJlcGx5O1xuICAgICAgcmV0dXJuIHJlcGx5LnJlcXVlc3QudXJsLnN0YXJ0c1dpdGgoXCIvYXBpXCIpICYmIHJlcGx5LnJlcXVlc3QudXJsICE9PSBcIi9hcGkvaGVhbHRoY2hlY2tcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cblxuLy8g7KCE7LK0IGxvZ3RhcGUg7ISk7KCVXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29uZmlndXJlTG9nVGFwZTxUU2lua0lkIGV4dGVuZHMgc3RyaW5nLCBURmlsdGVySWQgZXh0ZW5kcyBzdHJpbmc+KFxuICBvcHRpb25zOiBTb25hbXVMb2dnaW5nT3B0aW9uczxUU2lua0lkLCBURmlsdGVySWQ+LFxuKSB7XG4gIGNvbnN0IGV4dGVybmFsID0gZ2V0RXh0ZXJuYWxMb2dUYXBlQ29uZmlndXJhdGlvbigpO1xuICBjb25zdCBmYXN0aWZ5Q2F0ZWdvcnkgPSBvcHRpb25zLmZhc3RpZnlDYXRlZ29yeSA/PyBbXCJmYXN0aWZ5XCJdO1xuXG4gIGNvbnN0IHByb2plY3RTaW5rcyA9IHtcbiAgICBcImZhc3RpZnktY29uc29sZVwiOiBkZWZhdWx0RmFzdGlmeVNpbmsoZmFzdGlmeUNhdGVnb3J5KSxcbiAgICAuLi5vcHRpb25zLnNpbmtzLFxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBTaW5rPjtcbiAgY29uc3QgZXh0ZXJuYWxTaW5rSWRzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgY29uc3QgZXh0ZXJuYWxTaW5rczogUmVjb3JkPHN0cmluZywgU2luaz4gPSB7fTtcbiAgZm9yIChjb25zdCBbc2lua0lkLCBzaW5rXSBvZiBPYmplY3QuZW50cmllcyhleHRlcm5hbD8uY29uZmlnLnNpbmtzID8/IHt9KSkge1xuICAgIGxldCBuYW1lc3BhY2VkSWQgPSBgc29uYW11LWNsaToke3NpbmtJZH1gO1xuICAgIHdoaWxlIChcbiAgICAgIE9iamVjdC5oYXNPd24ocHJvamVjdFNpbmtzLCBuYW1lc3BhY2VkSWQpIHx8XG4gICAgICBPYmplY3QuaGFzT3duKGV4dGVybmFsU2lua3MsIG5hbWVzcGFjZWRJZClcbiAgICApIHtcbiAgICAgIG5hbWVzcGFjZWRJZCA9IGAke25hbWVzcGFjZWRJZH0tYDtcbiAgICB9XG4gICAgZXh0ZXJuYWxTaW5rSWRzLnNldChzaW5rSWQsIG5hbWVzcGFjZWRJZCk7XG4gICAgZXh0ZXJuYWxTaW5rc1tuYW1lc3BhY2VkSWRdID0gc2luaztcbiAgfVxuICBjb25zdCBzaW5rcyA9IHsgLi4ucHJvamVjdFNpbmtzLCAuLi5leHRlcm5hbFNpbmtzIH07XG5cbiAgY29uc3QgZmlsdGVycyA9IHtcbiAgICBcImZhc3RpZnktY29uc29sZVwiOiBkZWZhdWx0RmFzdGlmeUZpbHRlcihmYXN0aWZ5Q2F0ZWdvcnkpLFxuICAgIC4uLm9wdGlvbnMuZmlsdGVycyxcbiAgICAuLi5leHRlcm5hbD8uY29uZmlnLmZpbHRlcnMsXG4gIH07XG5cbiAgY29uc3QgZXh0ZXJuYWxMb2dnZXJzID0gKGV4dGVybmFsPy5jb25maWcubG9nZ2VycyA/PyBbXSkubWFwKChsb2dnZXIpID0+ICh7XG4gICAgLi4ubG9nZ2VyLFxuICAgIHNpbmtzOiBsb2dnZXIuc2lua3M/Lm1hcCgoc2lua0lkKSA9PiBleHRlcm5hbFNpbmtJZHMuZ2V0KHNpbmtJZCkgPz8gc2lua0lkKSxcbiAgfSkpO1xuICBjb25zdCBsb2dnZXJzID0gbmV3IFNldDxMb2dnZXJDb25maWc8c3RyaW5nLCBzdHJpbmc+PihbXG4gICAgLi4uZXh0ZXJuYWxMb2dnZXJzLFxuICAgIC4uLihvcHRpb25zLmxvZ2dlcnMgPz8gW10pLFxuICBdKTtcblxuICAvLyBsb2d0YXBl7J2YIG1ldGEgbG9nZ2VyIO2RnOyLnOulvCDruYTtmZzshLHtmZRcbiAgbG9nZ2Vycy5hZGQoe1xuICAgIGNhdGVnb3J5OiBbXCJsb2d0YXBlXCIsIFwibWV0YVwiXSxcbiAgICBsb3dlc3RMZXZlbDogXCJmYXRhbFwiLFxuICB9KTtcblxuICBpZiAoWy4uLmxvZ2dlcnNdLmV2ZXJ5KChsb2dnZXIpID0+ICFpc1NhbWVDYXRlZ29yeShbLi4uZmFzdGlmeUNhdGVnb3J5XSwgbG9nZ2VyLmNhdGVnb3J5KSkpIHtcbiAgICBsb2dnZXJzLmFkZCh7XG4gICAgICBjYXRlZ29yeTogWy4uLmZhc3RpZnlDYXRlZ29yeV0sXG4gICAgICBzaW5rczogW1wiZmFzdGlmeS1jb25zb2xlXCJdLFxuICAgICAgbG93ZXN0TGV2ZWw6IFwiaW5mb1wiLFxuICAgICAgZmlsdGVyczogW1wiZmFzdGlmeS1jb25zb2xlXCJdLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGV4dGVybmFsICE9PSB1bmRlZmluZWQpIGV4dGVybmFsLmFwcGxpZWQgPSB0cnVlO1xuICByZXR1cm4gY29uZmlndXJlKHsgc2lua3MsIGZpbHRlcnMsIGxvZ2dlcnM6IFsuLi5sb2dnZXJzXSwgcmVzZXQ6IHRydWUgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBd0JBLFNBQVMsa0NBQTRFO0NBQ25GLE9BQU8sV0FBVztBQUNwQjtBQUVBLFNBQWdCLGtDQUEyQztDQUN6RCxPQUFPLGdDQUFnQyxNQUFNO0FBQy9DO0FBZ0JBLFNBQVMsbUJBQW1CLGlCQUEwQztDQWlEcEUsT0FBTyxlQUFlLEVBQ3BCLGFBakR5QixjQUE2QixXQUFzQjtFQUU1RSxNQUFNLGlCQUNKLFNBQ0EsZUFDQSxpQkFDRztHQUNILElBQUksQ0FBQyxRQUFRLElBQUksV0FBVyxNQUFNLEdBQ2hDLE9BQU8sYUFBYSxhQUFhO0dBR25DLE1BQU0sV0FBd0QsY0FDM0QsUUFBUSxjQUFjLFFBQVEsU0FBUztHQUMxQyxPQUFPLGFBQWE7SUFDbEIsR0FBRztJQUNILFNBQVMsQ0FDUCxHQUFHLGNBQWMsUUFBUSxNQUFNLEdBQUcsRUFBRSxHQUNwQyxJQUFJLFFBQVEsU0FBUyxlQUFlLElBQUksaUJBQWlCLEdBQUcsSUFBSSxRQUFRLFlBQVksS0FBSyxVQUMzRjtHQUNGLENBQUM7RUFDSDtFQUVBLElBQUksQ0FBQyxlQUFlLGlCQUFpQixDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUMsR0FDdkQsT0FBTyxhQUFhLE1BQU07RUFHNUIsSUFBSSxTQUFTLE9BQU8sY0FBYyxPQUFPLFdBQVcsUUFBUSxNQUFNO0dBQ2hFLE1BQU0sVUFBdUQsT0FBTyxXQUNqRTtHQUNILE9BQU8sY0FBYyxTQUFTLE1BQU07RUFDdEM7RUFFQSxJQUFJLFNBQVMsT0FBTyxjQUFjLE9BQU8sV0FBVyxRQUFRLE1BQU07R0FDaEUsTUFBTSxRQUFxRCxPQUFPLFdBQy9EO0dBQ0gsT0FBTyxjQUFjLE1BQU0sU0FBUyxRQUFRLE1BQU0sVUFBVTtFQUM5RDtFQUVBLE9BQU8sYUFBYSxNQUFNO0NBQzVCLEVBQUEsQ0FBRyxLQUNELE1BQ0EsbUJBQW1CO0VBQ2pCLFdBQVc7RUFDWCxlQUFlO0VBQ2Ysa0JBQWtCO0NBQ3BCLENBQUMsQ0FJVSxFQUNiLENBQUM7QUFDSDtBQUdBLFNBQVMscUJBQXFCLGlCQUE0QztDQUN4RSxRQUFRLFdBQXNCO0VBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxlQUFlLEdBQUcsQ0FBQyxHQUFHLE9BQU8sUUFBUSxDQUFDLEdBQzVELE9BQU87RUFHVCxJQUFJLFNBQVMsT0FBTyxjQUFjLE9BQU8sV0FBVyxRQUFRLE1BQU07R0FDaEUsTUFBTSxVQUF1RCxPQUFPLFdBQ2pFO0dBQ0gsT0FBTyxRQUFRLElBQUksV0FBVyxNQUFNLEtBQUssUUFBUSxRQUFRO0VBQzNEO0VBRUEsSUFBSSxTQUFTLE9BQU8sY0FBYyxPQUFPLFdBQVcsUUFBUSxNQUFNO0dBQ2hFLE1BQU0sUUFBcUQsT0FBTyxXQUMvRDtHQUNILE9BQU8sTUFBTSxRQUFRLElBQUksV0FBVyxNQUFNLEtBQUssTUFBTSxRQUFRLFFBQVE7RUFDdkU7RUFFQSxPQUFPO0NBQ1Q7QUFDRjtBQUdBLGVBQXNCLGlCQUNwQixTQUNBO0NBQ0EsTUFBTSxXQUFXLGdDQUFnQztDQUNqRCxNQUFNLGtCQUFrQixRQUFRLG1CQUFtQixDQUFDLFNBQVM7Q0FFN0QsTUFBTSxlQUFlO0VBQ25CLG1CQUFtQixtQkFBbUIsZUFBZTtFQUNyRCxHQUFHLFFBQVE7Q0FDYjtDQUNBLE1BQU0sa0NBQWtCLElBQUksSUFBb0I7Q0FDaEQsTUFBTSxnQkFBc0MsQ0FBQztDQUM3QyxLQUFLLE1BQU0sQ0FBQyxRQUFRLFNBQVMsT0FBTyxRQUFRLFVBQVUsT0FBTyxTQUFTLENBQUMsQ0FBQyxHQUFHO0VBQ3pFLElBQUksZUFBZSxjQUFjO0VBQ2pDLE9BQ0UsT0FBTyxPQUFPLGNBQWMsWUFBWSxLQUN4QyxPQUFPLE9BQU8sZUFBZSxZQUFZLEdBRXpDLGVBQWUsR0FBRyxhQUFhO0VBRWpDLGdCQUFnQixJQUFJLFFBQVEsWUFBWTtFQUN4QyxjQUFjLGdCQUFnQjtDQUNoQztDQUNBLE1BQU0sUUFBUTtFQUFFLEdBQUc7RUFBYyxHQUFHO0NBQWM7Q0FFbEQsTUFBTSxVQUFVO0VBQ2QsbUJBQW1CLHFCQUFxQixlQUFlO0VBQ3ZELEdBQUcsUUFBUTtFQUNYLEdBQUcsVUFBVSxPQUFPO0NBQ3RCO0NBRUEsTUFBTSxtQkFBbUIsVUFBVSxPQUFPLFdBQVcsQ0FBQyxFQUFBLENBQUcsS0FBSyxZQUFZO0VBQ3hFLEdBQUc7RUFDSCxPQUFPLE9BQU8sT0FBTyxLQUFLLFdBQVcsZ0JBQWdCLElBQUksTUFBTSxLQUFLLE1BQU07Q0FDNUUsRUFBRTtDQUNGLE1BQU0sMEJBQVUsSUFBSSxJQUFrQyxDQUNwRCxHQUFHLGlCQUNILEdBQUksUUFBUSxXQUFXLENBQUMsQ0FDMUIsQ0FBQztDQUdELFFBQVEsSUFBSTtFQUNWLFVBQVUsQ0FBQyxXQUFXLE1BQU07RUFDNUIsYUFBYTtDQUNmLENBQUM7Q0FFRCxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxPQUFPLFdBQVcsQ0FBQyxlQUFlLENBQUMsR0FBRyxlQUFlLEdBQUcsT0FBTyxRQUFRLENBQUMsR0FDdkYsUUFBUSxJQUFJO0VBQ1YsVUFBVSxDQUFDLEdBQUcsZUFBZTtFQUM3QixPQUFPLENBQUMsaUJBQWlCO0VBQ3pCLGFBQWE7RUFDYixTQUFTLENBQUMsaUJBQWlCO0NBQzdCLENBQUM7Q0FHSCxJQUFJLGFBQWEsUUFBVyxTQUFTLFVBQVU7Q0FDL0MsT0FBTyxVQUFVO0VBQUU7RUFBTztFQUFTLFNBQVMsQ0FBQyxHQUFHLE9BQU87RUFBRyxPQUFPO0NBQUssQ0FBQztBQUN6RTs7O2VBeEsyQyJ9
105
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2dnZXIvY29uZmlndXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbmZpZ3VyZSwgZ2V0Q29uc29sZVNpbmsgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHtcbiAgdHlwZSBDb25maWcsXG4gIHR5cGUgRmlsdGVyLFxuICB0eXBlIEZpbHRlckxpa2UsXG4gIHR5cGUgTG9nZ2VyQ29uZmlnLFxuICB0eXBlIExvZ1JlY29yZCxcbiAgdHlwZSBTaW5rLFxuICB0eXBlIFRleHRGb3JtYXR0ZXIsXG59IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBnZXRQcmV0dHlGb3JtYXR0ZXIgfSBmcm9tIFwiQGxvZ3RhcGUvcHJldHR5XCI7XG5pbXBvcnQgeyB0eXBlIEZhc3RpZnlSZXBseSwgdHlwZSBGYXN0aWZ5UmVxdWVzdCB9IGZyb20gXCJmYXN0aWZ5XCI7XG5cbmltcG9ydCB7IGlzU2FtZUNhdGVnb3J5IH0gZnJvbSBcIi4vY2F0ZWdvcnlcIjtcblxuaW50ZXJmYWNlIEV4dGVybmFsTG9nVGFwZUNvbmZpZ3VyYXRpb24ge1xuICByZWFkb25seSBjb25maWc6IENvbmZpZzxzdHJpbmcsIHN0cmluZz47XG4gIGFwcGxpZWQ6IGJvb2xlYW47XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgdmFyIHNvbmFtdUtpdENsaUxvZ1RhcGVPdmVycmlkZTogRXh0ZXJuYWxMb2dUYXBlQ29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0ZXJuYWxMb2dUYXBlQ29uZmlndXJhdGlvbigpOiBFeHRlcm5hbExvZ1RhcGVDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdsb2JhbFRoaXMuc29uYW11S2l0Q2xpTG9nVGFwZU92ZXJyaWRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzRXh0ZXJuYWxMb2dUYXBlQ29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgcmV0dXJuIGdldEV4dGVybmFsTG9nVGFwZUNvbmZpZ3VyYXRpb24oKSAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgdHlwZSBTb25hbXVMb2dnaW5nT3B0aW9uczxUU2lua0lkIGV4dGVuZHMgc3RyaW5nLCBURmlsdGVySWQgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICAvLyBmYXN0aWZ5IOuhnOq5hSDsubTthYzqs6DrpqwgKGEuYi5j7J2YIO2Yle2DnOuhnCDrhKPsnLzrqbQgW2EsIGIsIGNd66GcIOuTpOyWtOqwkeuLiOuLpC4pXG4gIC8vIOq4sOuzuOqwkuydgCBbXCJmYXN0aWZ5XCJdIOyeheuLiOuLpC5cbiAgZmFzdGlmeUNhdGVnb3J5PzogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLy8g6rCBIO2VreuqqeuTpOydhCDshKTsoJXtlaAg65WMIFwiZmFzdGlmeS1jb25zb2xlXCLsnbQg65Ok7Ja06rCIIOqyveyasCwg642u7Ja07JSM7JuM7KeR64uI64ukLlxuICBzaW5rcz86IFJlY29yZDxUU2lua0lkLCBTaW5rPjtcbiAgZmlsdGVycz86IFJlY29yZDxURmlsdGVySWQsIEZpbHRlckxpa2U+O1xuXG4gIC8vIOqwgSDtla3rqqnsnYQg7ISk7KCV7ZWgIOuVjCBmYXN0aWZ5Q2F0ZWdvcnnsl5Ag7ISk7KCV65CcIOy5tO2FjOqzoOumrOqwgCDsnojsnYQg6rK97JqwLCDquLDrs7ggbG9nZ2VyIOyEpOygleydgCDstpTqsIDrkJjsp4Ag7JWK7Iq164uI64ukLlxuICBsb2dnZXJzPzogTG9nZ2VyQ29uZmlnPFRTaW5rSWQsIFRGaWx0ZXJJZD5bXTtcbn07XG5cbi8vIGZhc3RpZnnsl5Ag64yA7ZWcIOq4sOuzuCBzaW5rIOyEpOyglVxuZnVuY3Rpb24gZGVmYXVsdEZhc3RpZnlTaW5rKGZhc3RpZnlDYXRlZ29yeTogcmVhZG9ubHkgc3RyaW5nW10pOiBTaW5rIHtcbiAgY29uc3QgZmFzdGlmeUZvcm1hdHRlciA9ICgoZm9ybWF0UmVjb3JkOiBUZXh0Rm9ybWF0dGVyLCByZWNvcmQ6IExvZ1JlY29yZCkgPT4ge1xuICAgIC8vIEZhc3RpZnkgQVBJIFJvdXRl7JeQIOuMgO2VnCBMb2dnZXLsnZgg6rK97JqwLCDsnZHri7Ug7L2U65Oc7JmAIOyalOyyrSBVUkzsnYQg7LaU6rCAXG4gICAgY29uc3QgZmlsdGVyRmFzdGlmeSA9IChcbiAgICAgIHJlcXVlc3Q6IEZhc3RpZnlSZXF1ZXN0LFxuICAgICAgcmVxdWVzdFJlY29yZDogTG9nUmVjb3JkLFxuICAgICAgcmVzcG9uc2VDb2RlPzogbnVtYmVyLFxuICAgICkgPT4ge1xuICAgICAgaWYgKCFyZXF1ZXN0LnVybC5zdGFydHNXaXRoKFwiL2FwaVwiKSkge1xuICAgICAgICByZXR1cm4gZm9ybWF0UmVjb3JkKHJlcXVlc3RSZWNvcmQpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsYXN0SXRlbSA9IC8qIFNBRkVUWTogTG9nVGFwZSDqtazshLEg7Iqk7YKk66eI6rCAIOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gcmVxdWVzdFJlY29yZFxuICAgICAgICAubWVzc2FnZVtyZXF1ZXN0UmVjb3JkLm1lc3NhZ2UubGVuZ3RoIC0gMV0gYXMgc3RyaW5nO1xuICAgICAgcmV0dXJuIGZvcm1hdFJlY29yZCh7XG4gICAgICAgIC4uLnJlcXVlc3RSZWNvcmQsXG4gICAgICAgIG1lc3NhZ2U6IFtcbiAgICAgICAgICAuLi5yZXF1ZXN0UmVjb3JkLm1lc3NhZ2Uuc2xpY2UoMCwgLTEpLFxuICAgICAgICAgIGBbJHtyZXF1ZXN0Lm1ldGhvZH0ke3Jlc3BvbnNlQ29kZSA/IGA6JHtyZXNwb25zZUNvZGV9YCA6IFwiXCJ9XSAke3JlcXVlc3Qub3JpZ2luYWxVcmx9IC0gJHtsYXN0SXRlbX1gLFxuICAgICAgICBdLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGlmICghaXNTYW1lQ2F0ZWdvcnkoZmFzdGlmeUNhdGVnb3J5LCBbLi4ucmVjb3JkLmNhdGVnb3J5XSkpIHtcbiAgICAgIHJldHVybiBmb3JtYXRSZWNvcmQocmVjb3JkKTtcbiAgICB9XG5cbiAgICBpZiAoXCJyZXFcIiBpbiByZWNvcmQucHJvcGVydGllcyAmJiByZWNvcmQucHJvcGVydGllcy5yZXEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSAvKiBTQUZFVFk6IExvZ1RhcGUg6rWs7ISxIOyKpO2CpOuniOqwgCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHJlY29yZC5wcm9wZXJ0aWVzXG4gICAgICAgIC5yZXEgYXMgRmFzdGlmeVJlcXVlc3Q7XG4gICAgICByZXR1cm4gZmlsdGVyRmFzdGlmeShyZXF1ZXN0LCByZWNvcmQpO1xuICAgIH1cblxuICAgIGlmIChcInJlc1wiIGluIHJlY29yZC5wcm9wZXJ0aWVzICYmIHJlY29yZC5wcm9wZXJ0aWVzLnJlcyAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcmVwbHkgPSAvKiBTQUZFVFk6IExvZ1RhcGUg6rWs7ISxIOyKpO2CpOuniOqwgCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHJlY29yZC5wcm9wZXJ0aWVzXG4gICAgICAgIC5yZXMgYXMgRmFzdGlmeVJlcGx5O1xuICAgICAgcmV0dXJuIGZpbHRlckZhc3RpZnkocmVwbHkucmVxdWVzdCwgcmVjb3JkLCByZXBseS5zdGF0dXNDb2RlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybWF0UmVjb3JkKHJlY29yZCk7XG4gIH0pLmJpbmQoXG4gICAgbnVsbCxcbiAgICBnZXRQcmV0dHlGb3JtYXR0ZXIoe1xuICAgICAgdGltZXN0YW1wOiBcInRpbWVcIixcbiAgICAgIGNhdGVnb3J5V2lkdGg6IDIwLFxuICAgICAgY2F0ZWdvcnlUcnVuY2F0ZTogXCJtaWRkbGVcIixcbiAgICB9KSxcbiAgKTtcblxuICByZXR1cm4gZ2V0Q29uc29sZVNpbmsoe1xuICAgIGZvcm1hdHRlcjogZmFzdGlmeUZvcm1hdHRlcixcbiAgfSk7XG59XG5cbi8vIGZhc3RpZnnsl5Ag64yA7ZWcIOq4sOuzuCBmaWx0ZXIg7ISk7KCVICgvYXBpIOqyveuhnOydmCDsmpTssq3rp4wg66Gc6rmFKVxuZnVuY3Rpb24gZGVmYXVsdEZhc3RpZnlGaWx0ZXIoZmFzdGlmeUNhdGVnb3J5OiByZWFkb25seSBzdHJpbmdbXSk6IEZpbHRlciB7XG4gIHJldHVybiAocmVjb3JkOiBMb2dSZWNvcmQpID0+IHtcbiAgICBpZiAoIWlzU2FtZUNhdGVnb3J5KFsuLi5mYXN0aWZ5Q2F0ZWdvcnldLCBbLi4ucmVjb3JkLmNhdGVnb3J5XSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoXCJyZXFcIiBpbiByZWNvcmQucHJvcGVydGllcyAmJiByZWNvcmQucHJvcGVydGllcy5yZXEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSAvKiBTQUZFVFk6IExvZ1RhcGUg6rWs7ISxIOyKpO2CpOuniOqwgCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHJlY29yZC5wcm9wZXJ0aWVzXG4gICAgICAgIC5yZXEgYXMgRmFzdGlmeVJlcXVlc3Q7XG4gICAgICByZXR1cm4gcmVxdWVzdC51cmwuc3RhcnRzV2l0aChcIi9hcGlcIikgJiYgcmVxdWVzdC51cmwgIT09IFwiL2FwaS9oZWFsdGhjaGVja1wiO1xuICAgIH1cblxuICAgIGlmIChcInJlc1wiIGluIHJlY29yZC5wcm9wZXJ0aWVzICYmIHJlY29yZC5wcm9wZXJ0aWVzLnJlcyAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcmVwbHkgPSAvKiBTQUZFVFk6IExvZ1RhcGUg6rWs7ISxIOyKpO2CpOuniOqwgCDsnbQg6rCS7J2YIO2DgOyeheydhCDrs7TsnqXtlZzri6QuICovIHJlY29yZC5wcm9wZXJ0aWVzXG4gICAgICAgIC5yZXMgYXMgRmFzdGlmeVJlcGx5O1xuICAgICAgcmV0dXJuIHJlcGx5LnJlcXVlc3QudXJsLnN0YXJ0c1dpdGgoXCIvYXBpXCIpICYmIHJlcGx5LnJlcXVlc3QudXJsICE9PSBcIi9hcGkvaGVhbHRoY2hlY2tcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cblxuLy8g7KCE7LK0IGxvZ3RhcGUg7ISk7KCVXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY29uZmlndXJlTG9nVGFwZTxUU2lua0lkIGV4dGVuZHMgc3RyaW5nLCBURmlsdGVySWQgZXh0ZW5kcyBzdHJpbmc+KFxuICBvcHRpb25zOiBTb25hbXVMb2dnaW5nT3B0aW9uczxUU2lua0lkLCBURmlsdGVySWQ+LFxuKSB7XG4gIGNvbnN0IGV4dGVybmFsID0gZ2V0RXh0ZXJuYWxMb2dUYXBlQ29uZmlndXJhdGlvbigpO1xuICBjb25zdCBmYXN0aWZ5Q2F0ZWdvcnkgPSBvcHRpb25zLmZhc3RpZnlDYXRlZ29yeSA/PyBbXCJmYXN0aWZ5XCJdO1xuXG4gIGNvbnN0IHByb2plY3RTaW5rcyA9IHtcbiAgICBcImZhc3RpZnktY29uc29sZVwiOiBkZWZhdWx0RmFzdGlmeVNpbmsoZmFzdGlmeUNhdGVnb3J5KSxcbiAgICAuLi5vcHRpb25zLnNpbmtzLFxuICB9IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBTaW5rPjtcbiAgY29uc3QgZXh0ZXJuYWxTaW5rSWRzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgY29uc3QgZXh0ZXJuYWxTaW5rczogUmVjb3JkPHN0cmluZywgU2luaz4gPSB7fTtcbiAgZm9yIChjb25zdCBbc2lua0lkLCBzaW5rXSBvZiBPYmplY3QuZW50cmllcyhleHRlcm5hbD8uY29uZmlnLnNpbmtzID8/IHt9KSkge1xuICAgIGxldCBuYW1lc3BhY2VkSWQgPSBgc29uYW11LWNsaToke3NpbmtJZH1gO1xuICAgIHdoaWxlIChcbiAgICAgIE9iamVjdC5oYXNPd24ocHJvamVjdFNpbmtzLCBuYW1lc3BhY2VkSWQpIHx8XG4gICAgICBPYmplY3QuaGFzT3duKGV4dGVybmFsU2lua3MsIG5hbWVzcGFjZWRJZClcbiAgICApIHtcbiAgICAgIG5hbWVzcGFjZWRJZCA9IGAke25hbWVzcGFjZWRJZH0tYDtcbiAgICB9XG4gICAgZXh0ZXJuYWxTaW5rSWRzLnNldChzaW5rSWQsIG5hbWVzcGFjZWRJZCk7XG4gICAgZXh0ZXJuYWxTaW5rc1tuYW1lc3BhY2VkSWRdID0gc2luaztcbiAgfVxuICBjb25zdCBzaW5rcyA9IHsgLi4ucHJvamVjdFNpbmtzLCAuLi5leHRlcm5hbFNpbmtzIH07XG5cbiAgY29uc3QgZmlsdGVycyA9IHtcbiAgICBcImZhc3RpZnktY29uc29sZVwiOiBkZWZhdWx0RmFzdGlmeUZpbHRlcihmYXN0aWZ5Q2F0ZWdvcnkpLFxuICAgIC4uLm9wdGlvbnMuZmlsdGVycyxcbiAgICAuLi5leHRlcm5hbD8uY29uZmlnLmZpbHRlcnMsXG4gIH07XG5cbiAgY29uc3QgZXh0ZXJuYWxMb2dnZXJzID0gKGV4dGVybmFsPy5jb25maWcubG9nZ2VycyA/PyBbXSkubWFwKChsb2dnZXIpID0+ICh7XG4gICAgLi4ubG9nZ2VyLFxuICAgIHNpbmtzOiBsb2dnZXIuc2lua3M/Lm1hcCgoc2lua0lkKSA9PiBleHRlcm5hbFNpbmtJZHMuZ2V0KHNpbmtJZCkgPz8gc2lua0lkKSxcbiAgfSkpO1xuICBjb25zdCBsb2dnZXJzID0gbmV3IFNldDxMb2dnZXJDb25maWc8c3RyaW5nLCBzdHJpbmc+PihbXG4gICAgLi4uZXh0ZXJuYWxMb2dnZXJzLFxuICAgIC4uLihvcHRpb25zLmxvZ2dlcnMgPz8gW10pLFxuICBdKTtcblxuICAvLyBsb2d0YXBl7J2YIG1ldGEgbG9nZ2VyIO2RnOyLnOulvCDruYTtmZzshLHtmZRcbiAgbG9nZ2Vycy5hZGQoe1xuICAgIGNhdGVnb3J5OiBbXCJsb2d0YXBlXCIsIFwibWV0YVwiXSxcbiAgICBsb3dlc3RMZXZlbDogXCJmYXRhbFwiLFxuICB9KTtcblxuICBpZiAoWy4uLmxvZ2dlcnNdLmV2ZXJ5KChsb2dnZXIpID0+ICFpc1NhbWVDYXRlZ29yeShbLi4uZmFzdGlmeUNhdGVnb3J5XSwgbG9nZ2VyLmNhdGVnb3J5KSkpIHtcbiAgICBsb2dnZXJzLmFkZCh7XG4gICAgICBjYXRlZ29yeTogWy4uLmZhc3RpZnlDYXRlZ29yeV0sXG4gICAgICBzaW5rczogW1wiZmFzdGlmeS1jb25zb2xlXCJdLFxuICAgICAgbG93ZXN0TGV2ZWw6IFwiaW5mb1wiLFxuICAgICAgZmlsdGVyczogW1wiZmFzdGlmeS1jb25zb2xlXCJdLFxuICAgIH0pO1xuICB9XG5cbiAgaWYgKGV4dGVybmFsICE9PSB1bmRlZmluZWQpIGV4dGVybmFsLmFwcGxpZWQgPSB0cnVlO1xuICByZXR1cm4gY29uZmlndXJlKHsgc2lua3MsIGZpbHRlcnMsIGxvZ2dlcnM6IFsuLi5sb2dnZXJzXSwgcmVzZXQ6IHRydWUgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBd0JBLFNBQVMsa0NBQTRFO0NBQ25GLE9BQU8sV0FBVztBQUNwQjtBQUVBLFNBQWdCLGtDQUEyQztDQUN6RCxPQUFPLGdDQUFnQyxNQUFNO0FBQy9DO0FBZ0JBLFNBQVMsbUJBQW1CLGlCQUEwQztDQUNwRSxNQUFNLHFCQUFxQixjQUE2QixXQUFzQjtFQUU1RSxNQUFNLGlCQUNKLFNBQ0EsZUFDQSxpQkFDRztHQUNILElBQUksQ0FBQyxRQUFRLElBQUksV0FBVyxNQUFNLEdBQ2hDLE9BQU8sYUFBYSxhQUFhO0dBR25DLE1BQU0sV0FBd0QsY0FDM0QsUUFBUSxjQUFjLFFBQVEsU0FBUztHQUMxQyxPQUFPLGFBQWE7SUFDbEIsR0FBRztJQUNILFNBQVMsQ0FDUCxHQUFHLGNBQWMsUUFBUSxNQUFNLEdBQUcsRUFBRSxHQUNwQyxJQUFJLFFBQVEsU0FBUyxlQUFlLElBQUksaUJBQWlCLEdBQUcsSUFBSSxRQUFRLFlBQVksS0FBSyxVQUMzRjtHQUNGLENBQUM7RUFDSDtFQUVBLElBQUksQ0FBQyxlQUFlLGlCQUFpQixDQUFDLEdBQUcsT0FBTyxRQUFRLENBQUMsR0FDdkQsT0FBTyxhQUFhLE1BQU07RUFHNUIsSUFBSSxTQUFTLE9BQU8sY0FBYyxPQUFPLFdBQVcsUUFBUSxNQUFNO0dBQ2hFLE1BQU0sVUFBdUQsT0FBTyxXQUNqRTtHQUNI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