@cartanova/qgrid-cli 2.10.9 → 2.11.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 (318) hide show
  1. package/bundle/dist/_virtual/_rolldown/runtime.js +1 -10
  2. package/bundle/dist/application/monit/log-buffer.js +12 -6
  3. package/bundle/dist/application/monit/monit.frame.js +11 -3
  4. package/bundle/dist/application/monit/monit.types.js +1 -1
  5. package/bundle/dist/application/qgrid/conv-routing.js +9 -6
  6. package/bundle/dist/application/qgrid/expired-token-reminder.js +2 -2
  7. package/bundle/dist/application/qgrid/oauth.js +31 -4
  8. package/bundle/dist/application/qgrid/qgrid-image-generation.js +1 -1
  9. package/bundle/dist/application/qgrid/qgrid-response-format.js +22 -20
  10. package/bundle/dist/application/qgrid/qgrid-run-lifecycle.js +43 -34
  11. package/bundle/dist/application/qgrid/qgrid.dispatcher.js +128 -93
  12. package/bundle/dist/application/qgrid/qgrid.frame.js +930 -49
  13. package/bundle/dist/application/qgrid/qgrid.types.js +212 -5
  14. package/bundle/dist/application/qgrid/schema-prompt.js +75 -48
  15. package/bundle/dist/application/qgrid/slack-user-map.js +1 -1
  16. package/bundle/dist/application/qgrid/token-death.js +1 -1
  17. package/bundle/dist/application/qgrid/token-subscriber.js +83 -30
  18. package/bundle/dist/application/qgrid/token-trigger-setup.js +1 -1
  19. package/bundle/dist/application/qgrid/token-window-keepalive.js +8 -6
  20. package/bundle/dist/application/qgrid/tool-emulation-schema.js +13 -13
  21. package/bundle/dist/application/qgrid/tool-emulation.js +19 -15
  22. package/bundle/dist/application/request-log/json-schema-type-text.js +29 -12
  23. package/bundle/dist/application/request-log/request-log.model.js +83 -69
  24. package/bundle/dist/application/request-log/request-log.types.js +8 -2
  25. package/bundle/dist/application/request-log/zod-code-format.js +1 -1
  26. package/bundle/dist/application/request-log-step/request-log-step.model.js +1 -1
  27. package/bundle/dist/application/request-log-step/request-log-step.types.js +1 -1
  28. package/bundle/dist/application/setting/setting.constant.js +1 -1
  29. package/bundle/dist/application/setting/setting.model.js +2 -2
  30. package/bundle/dist/application/setting/setting.store.js +2 -2
  31. package/bundle/dist/application/setting/setting.types.js +1 -1
  32. package/bundle/dist/application/sonamu.generated.js +40 -16
  33. package/bundle/dist/application/sonamu.generated.sso.js +2 -1
  34. package/bundle/dist/application/token/token.model.js +26 -9
  35. package/bundle/dist/application/token/token.types.js +20 -3
  36. package/bundle/dist/i18n/en.js +15 -1
  37. package/bundle/dist/i18n/ko.js +15 -1
  38. package/bundle/dist/i18n/sd.generated.js +2 -1
  39. package/bundle/dist/migrations/20260807133553_manual__backfill_request_log_cost.js +8 -6
  40. package/bundle/dist/migrations/20261018215031_alter_request_logs_add1_alter1.js +15 -0
  41. package/bundle/dist/server-bootstrap.js +4 -2
  42. package/bundle/dist/server-error-handler.js +1 -1
  43. package/bundle/dist/sonamu.config.js +37 -8
  44. package/bundle/dist/startup-migrations.js +17 -7
  45. package/bundle/dist/testing/global.js +1 -1
  46. package/bundle/dist/testing/schema-bench.js +0 -0
  47. package/bundle/dist/testing/test-database-name.js +1 -1
  48. package/bundle/dist/utils/providers/anthropic/anthropic-constants.js +1 -1
  49. package/bundle/dist/utils/providers/anthropic/anthropic-dispatcher.js +11 -5
  50. package/bundle/dist/utils/providers/anthropic/anthropic-quota.js +4 -4
  51. package/bundle/dist/utils/providers/anthropic/anthropic-thinking.js +1 -1
  52. package/bundle/dist/utils/providers/anthropic/claude-session.js +20 -19
  53. package/bundle/dist/utils/providers/anthropic/fence-strip.js +1 -1
  54. package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +49 -23
  55. package/bundle/dist/utils/providers/common/credentials.js +5 -1
  56. package/bundle/dist/utils/providers/common/effort.js +3 -3
  57. package/bundle/dist/utils/providers/common/model-cost.js +69 -14
  58. package/bundle/dist/utils/providers/common/provider-types.js +29 -1
  59. package/bundle/dist/utils/providers/common/schema-validation.js +78 -40
  60. package/bundle/dist/utils/providers/common/smooth-weighted-round-robin.js +1 -1
  61. package/bundle/dist/utils/providers/common/strictifier.js +62 -43
  62. package/bundle/dist/utils/providers/common/thinking.js +3 -2
  63. package/bundle/dist/utils/providers/common/ttft.js +1 -1
  64. package/bundle/dist/utils/providers/grok/grok-backend-protocol.js +427 -0
  65. package/bundle/dist/utils/providers/grok/grok-constants.js +55 -0
  66. package/bundle/dist/utils/providers/grok/grok-direct-client.js +196 -0
  67. package/bundle/dist/utils/providers/grok/grok-dispatcher.js +1313 -0
  68. package/bundle/dist/utils/providers/grok/grok-headers.js +118 -0
  69. package/bundle/dist/utils/providers/grok/grok-media-client.js +420 -0
  70. package/bundle/dist/utils/providers/grok/grok-models.js +114 -0
  71. package/bundle/dist/utils/providers/grok/grok-oauth.js +455 -0
  72. package/bundle/dist/utils/providers/grok/grok-quota.js +119 -0
  73. package/bundle/dist/utils/providers/grok/grok-refresh.js +192 -0
  74. package/bundle/dist/utils/providers/grok/grok-types.js +186 -0
  75. package/bundle/dist/utils/providers/grok/grok-voice-client.js +199 -0
  76. package/bundle/dist/utils/providers/grok/index.js +11 -0
  77. package/bundle/dist/utils/providers/openai/openai-backend-protocol.js +111 -83
  78. package/bundle/dist/utils/providers/openai/openai-callback-relay.js +3 -2
  79. package/bundle/dist/utils/providers/openai/openai-constants.js +1 -1
  80. package/bundle/dist/utils/providers/openai/openai-direct-client.js +23 -7
  81. package/bundle/dist/utils/providers/openai/openai-dispatcher.js +143 -106
  82. package/bundle/dist/utils/providers/openai/openai-image-generation.js +48 -33
  83. package/bundle/dist/utils/providers/openai/openai-oauth.js +28 -13
  84. package/bundle/dist/utils/providers/openai/openai-quota.js +38 -27
  85. package/bundle/dist/utils/providers/openai/openai-refresh.js +17 -9
  86. package/bundle/dist/utils/providers/openai/openai-sse.js +1 -1
  87. package/bundle/dist/utils/providers/openai/openai-transport-config.js +1 -1
  88. package/bundle/dist/utils/quiet-hours.js +1 -1
  89. package/bundle/dist/utils/slack-notify.js +14 -8
  90. package/bundle/dist/utils/subset-loaders.js +4 -5
  91. package/bundle/src/application/monit/log-buffer.ts +23 -9
  92. package/bundle/src/application/monit/monit.frame.ts +22 -5
  93. package/bundle/src/application/monit/monit.types.ts +6 -0
  94. package/bundle/src/application/qgrid/conv-routing.test.ts +76 -4
  95. package/bundle/src/application/qgrid/conv-routing.ts +35 -9
  96. package/bundle/src/application/qgrid/expired-token-reminder.ts +9 -1
  97. package/bundle/src/application/qgrid/oauth.ts +51 -15
  98. package/bundle/src/application/qgrid/qgrid-image-generation.ts +9 -0
  99. package/bundle/src/application/qgrid/qgrid-response-format.ts +50 -25
  100. package/bundle/src/application/qgrid/qgrid-run-lifecycle.test.ts +33 -0
  101. package/bundle/src/application/qgrid/qgrid-run-lifecycle.ts +87 -40
  102. package/bundle/src/application/qgrid/qgrid.dispatcher.test.ts +97 -0
  103. package/bundle/src/application/qgrid/qgrid.dispatcher.ts +274 -126
  104. package/bundle/src/application/qgrid/qgrid.frame.test.ts +1013 -3
  105. package/bundle/src/application/qgrid/qgrid.frame.ts +1415 -60
  106. package/bundle/src/application/qgrid/qgrid.types.ts +335 -0
  107. package/bundle/src/application/qgrid/schema-prompt.ts +105 -41
  108. package/bundle/src/application/qgrid/slack-user-map.ts +5 -0
  109. package/bundle/src/application/qgrid/token-death.ts +4 -0
  110. package/bundle/src/application/qgrid/token-subscriber.test.ts +21 -19
  111. package/bundle/src/application/qgrid/token-subscriber.ts +186 -53
  112. package/bundle/src/application/qgrid/token-trigger-setup.ts +2 -0
  113. package/bundle/src/application/qgrid/token-window-keepalive.ts +49 -6
  114. package/bundle/src/application/qgrid/tool-emulation-schema.ts +33 -29
  115. package/bundle/src/application/qgrid/tool-emulation.ts +52 -27
  116. package/bundle/src/application/request-log/json-schema-type-text.test.ts +5 -5
  117. package/bundle/src/application/request-log/json-schema-type-text.ts +81 -26
  118. package/bundle/src/application/request-log/request-log.entity.json +8 -0
  119. package/bundle/src/application/request-log/request-log.model.test.ts +111 -4
  120. package/bundle/src/application/request-log/request-log.model.ts +279 -145
  121. package/bundle/src/application/request-log/request-log.types.ts +17 -0
  122. package/bundle/src/application/request-log/zod-code-format.ts +11 -0
  123. package/bundle/src/application/request-log-step/request-log-step.model.ts +1 -0
  124. package/bundle/src/application/request-log-step/request-log-step.types.ts +2 -0
  125. package/bundle/src/application/setting/setting.constant.ts +9 -0
  126. package/bundle/src/application/setting/setting.model.ts +12 -2
  127. package/bundle/src/application/setting/setting.store.ts +5 -1
  128. package/bundle/src/application/setting/setting.types.ts +8 -0
  129. package/bundle/src/application/sonamu.generated.http +135 -0
  130. package/bundle/src/application/sonamu.generated.sso.ts +3 -0
  131. package/bundle/src/application/sonamu.generated.ts +29 -0
  132. package/bundle/src/application/token/token.identity.test.ts +20 -0
  133. package/bundle/src/application/token/token.model.ts +66 -7
  134. package/bundle/src/application/token/token.types.ts +24 -1
  135. package/bundle/src/i18n/en.ts +19 -0
  136. package/bundle/src/i18n/ko.ts +21 -0
  137. package/bundle/src/i18n/sd.generated.ts +24 -2
  138. package/bundle/src/migrations/20260807133553_manual__backfill_request_log_cost.ts +16 -8
  139. package/bundle/src/migrations/20261018215031_alter_request_logs_add1_alter1.ts +15 -0
  140. package/bundle/src/server-bootstrap.ts +4 -2
  141. package/bundle/src/server-error-handler.ts +1 -0
  142. package/bundle/src/sonamu.config.ts +69 -7
  143. package/bundle/src/startup-migrations.ts +27 -9
  144. package/bundle/src/testing/global.ts +20 -0
  145. package/bundle/src/testing/schema-bench.ts +105 -30
  146. package/bundle/src/testing/test-database-name.ts +2 -0
  147. package/bundle/src/utils/providers/anthropic/anthropic-constants.ts +8 -0
  148. package/bundle/src/utils/providers/anthropic/anthropic-dispatcher.ts +41 -6
  149. package/bundle/src/utils/providers/anthropic/anthropic-quota.ts +7 -3
  150. package/bundle/src/utils/providers/anthropic/anthropic-thinking.ts +6 -0
  151. package/bundle/src/utils/providers/anthropic/claude-session.ts +58 -24
  152. package/bundle/src/utils/providers/anthropic/fence-strip.ts +11 -0
  153. package/bundle/src/utils/providers/anthropic/stream-json-adapter.ts +110 -45
  154. package/bundle/src/utils/providers/common/credentials.ts +8 -0
  155. package/bundle/src/utils/providers/common/effort.ts +9 -2
  156. package/bundle/src/utils/providers/common/model-cost.test.ts +48 -1
  157. package/bundle/src/utils/providers/common/model-cost.ts +259 -158
  158. package/bundle/src/utils/providers/common/provider-dispatcher.ts +98 -2
  159. package/bundle/src/utils/providers/common/provider-types.ts +46 -3
  160. package/bundle/src/utils/providers/common/schema-validation.test.ts +5 -1
  161. package/bundle/src/utils/providers/common/schema-validation.ts +124 -56
  162. package/bundle/src/utils/providers/common/smooth-weighted-round-robin.ts +4 -0
  163. package/bundle/src/utils/providers/common/strictifier.ts +185 -59
  164. package/bundle/src/utils/providers/common/thinking.ts +2 -2
  165. package/bundle/src/utils/providers/common/ttft.ts +4 -2
  166. package/bundle/src/utils/providers/grok/__fixtures__/golden-responses-1.0.60.json +164 -0
  167. package/bundle/src/utils/providers/grok/grok-backend-protocol.test.ts +325 -0
  168. package/bundle/src/utils/providers/grok/grok-backend-protocol.ts +721 -0
  169. package/bundle/src/utils/providers/grok/grok-constants.ts +105 -0
  170. package/bundle/src/utils/providers/grok/grok-direct-client.test.ts +179 -0
  171. package/bundle/src/utils/providers/grok/grok-direct-client.ts +313 -0
  172. package/bundle/src/utils/providers/grok/grok-dispatcher.test.ts +1395 -0
  173. package/bundle/src/utils/providers/grok/grok-dispatcher.ts +2105 -0
  174. package/bundle/src/utils/providers/grok/grok-headers.test.ts +149 -0
  175. package/bundle/src/utils/providers/grok/grok-headers.ts +199 -0
  176. package/bundle/src/utils/providers/grok/grok-media-client.test.ts +446 -0
  177. package/bundle/src/utils/providers/grok/grok-media-client.ts +703 -0
  178. package/bundle/src/utils/providers/grok/grok-models.test.ts +96 -0
  179. package/bundle/src/utils/providers/grok/grok-models.ts +161 -0
  180. package/bundle/src/utils/providers/grok/grok-oauth.test.ts +406 -0
  181. package/bundle/src/utils/providers/grok/grok-oauth.ts +771 -0
  182. package/bundle/src/utils/providers/grok/grok-quota.test.ts +142 -0
  183. package/bundle/src/utils/providers/grok/grok-quota.ts +198 -0
  184. package/bundle/src/utils/providers/grok/grok-refresh.test.ts +239 -0
  185. package/bundle/src/utils/providers/grok/grok-refresh.ts +325 -0
  186. package/bundle/src/utils/providers/grok/grok-types.test.ts +252 -0
  187. package/bundle/src/utils/providers/grok/grok-types.ts +374 -0
  188. package/bundle/src/utils/providers/grok/grok-voice-client.test.ts +321 -0
  189. package/bundle/src/utils/providers/grok/grok-voice-client.ts +284 -0
  190. package/bundle/src/utils/providers/grok/index.ts +20 -0
  191. package/bundle/src/utils/providers/openai/openai-backend-protocol.ts +221 -137
  192. package/bundle/src/utils/providers/openai/openai-callback-relay.ts +12 -1
  193. package/bundle/src/utils/providers/openai/openai-constants.ts +2 -0
  194. package/bundle/src/utils/providers/openai/openai-direct-client.ts +111 -21
  195. package/bundle/src/utils/providers/openai/openai-dispatcher.ts +322 -169
  196. package/bundle/src/utils/providers/openai/openai-image-generation.ts +116 -36
  197. package/bundle/src/utils/providers/openai/openai-oauth.ts +48 -20
  198. package/bundle/src/utils/providers/openai/openai-quota.ts +77 -46
  199. package/bundle/src/utils/providers/openai/openai-refresh.ts +42 -18
  200. package/bundle/src/utils/providers/openai/openai-sse.ts +27 -3
  201. package/bundle/src/utils/providers/openai/openai-transport-config.ts +2 -0
  202. package/bundle/src/utils/quiet-hours.ts +12 -1
  203. package/bundle/src/utils/slack-notify.ts +44 -13
  204. package/bundle/src/utils/subset-loaders.ts +7 -7
  205. package/bundle/web-dist/client/assets/clsx-5XM_pHvN.js +1 -0
  206. package/bundle/web-dist/client/assets/index-BA7uQ-6c.js +31 -0
  207. package/bundle/web-dist/client/assets/index-Be2qCZmI.css +1 -0
  208. package/bundle/web-dist/client/assets/logs-C47OJGEI.js +1 -0
  209. package/bundle/web-dist/client/assets/monit-BS9no0dU.js +4 -0
  210. package/bundle/web-dist/client/assets/plus-sdACTfH0.js +1 -0
  211. package/bundle/web-dist/client/assets/refresh-cw-CY8o_1cT.js +1 -0
  212. package/bundle/web-dist/client/assets/request-model-BRtFuZvj.js +1 -0
  213. package/bundle/web-dist/client/assets/routes-kqgkUxE8.js +5 -0
  214. package/bundle/web-dist/client/assets/{services.generated-BsieU37H.js → services.generated-CefiDXEv.js} +5 -5
  215. package/bundle/web-dist/client/assets/settings-DNDvFGSw.js +1 -0
  216. package/bundle/web-dist/client/assets/show-u8Np69q3.js +2 -0
  217. package/bundle/web-dist/client/assets/tokens-QvP410NW.js +1 -0
  218. package/bundle/web-dist/client/assets/total-cost-MnfKU8IN.js +1 -0
  219. package/bundle/web-dist/client/assets/use-oauth-login-flow-Bzdh28Ws.js +1 -0
  220. package/bundle/web-dist/client/assets/use-update-token-mutation-CfJKaxmR.js +1 -0
  221. package/bundle/web-dist/client/assets/vendor-react-CUFFrVN9.js +244 -0
  222. package/bundle/web-dist/client/assets/vendor-tanstack-Bf_jag9G.js +1 -0
  223. package/bundle/web-dist/client/index.html +6 -6
  224. package/bundle/web-dist/server/assets/clsx-D_N5PN_2.js +16 -0
  225. package/bundle/web-dist/server/assets/{lazyRouteComponent-Dtd0NR4r.js → lazyRouteComponent-D8iTIHyn.js} +129 -2
  226. package/bundle/web-dist/server/assets/logs-B3OTd9hy.js +825 -0
  227. package/bundle/web-dist/server/assets/{monit-DvzribSE.js → monit-B2hqorPe.js} +385 -126
  228. package/bundle/web-dist/server/assets/plus-DwG7h9kq.js +28 -0
  229. package/bundle/web-dist/server/assets/{react-dom-B4a6-uuR.js → react-dom-BIYQzBqG.js} +2 -129
  230. package/bundle/web-dist/server/assets/refresh-cw-mMBkwOq0.js +44 -0
  231. package/bundle/web-dist/server/assets/{request-model-CbqfnQOJ.js → request-model-I6OdODSH.js} +15 -6
  232. package/bundle/web-dist/server/assets/{routes-BAPWTizT.js → routes-B95YlUv2.js} +760 -213
  233. package/bundle/web-dist/server/assets/{services.generated-CEbGjsI0.js → services.generated-DQATJ6qf.js} +12821 -12194
  234. package/bundle/web-dist/server/assets/settings-C3gbGk0m.js +830 -0
  235. package/bundle/web-dist/server/assets/{show-CxVZTAdv.js → show-Bxaj3rhH.js} +1355 -419
  236. package/bundle/web-dist/server/assets/tokens-CZjH3cB7.js +1038 -0
  237. package/bundle/web-dist/server/assets/total-cost-fTE9Xy82.js +18 -0
  238. package/bundle/web-dist/server/assets/use-oauth-login-flow-CKDHgc3U.js +2379 -0
  239. package/bundle/web-dist/server/assets/{use-update-token-mutation-CfYmk_4_.js → use-update-token-mutation-BEbgOzaa.js} +1 -1
  240. package/bundle/web-dist/server/entry-server.generated.js +4303 -22810
  241. package/dist/cli.js +9 -9
  242. package/package.json +4 -11
  243. package/postinstall.mjs +12 -0
  244. package/skills/qgrid/SKILL.md +1 -0
  245. package/skills/qgrid/references/cli-env-and-server-boot.md +4 -1
  246. package/skills/qgrid/references/decision-rationale.md +24 -1
  247. package/skills/qgrid/references/grok-runtime.md +89 -0
  248. package/skills/qgrid/references/provider-runtime-differences.md +30 -29
  249. package/skills/qgrid/references/repo-map.md +10 -0
  250. package/skills/qgrid/references/request-log-run-lifecycle.md +1 -1
  251. package/skills/qgrid/references/sonamu-api-web-flow.md +1 -1
  252. package/skills/qgrid/references/token-auth-quota-lifecycle.md +56 -3
  253. package/bundle/dist/node_modules/.pnpm/@jridgewell_sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.js +0 -406
  254. package/bundle/dist/node_modules/.pnpm/@vitest_expect@4.1.10/node_modules/@vitest/expect/dist/index.js +0 -1507
  255. package/bundle/dist/node_modules/.pnpm/@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js +0 -887
  256. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/chunk-artifact.js +0 -2756
  257. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/index.js +0 -8
  258. package/bundle/dist/node_modules/.pnpm/@vitest_runner@4.1.10/node_modules/@vitest/runner/dist/utils.js +0 -8
  259. package/bundle/dist/node_modules/.pnpm/@vitest_snapshot@4.1.10/node_modules/@vitest/snapshot/dist/index.js +0 -922
  260. package/bundle/dist/node_modules/.pnpm/@vitest_spy@4.1.10/node_modules/@vitest/spy/dist/index.js +0 -386
  261. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/chunk-pathe.M-eThtNZ.js +0 -121
  262. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/constants.js +0 -51
  263. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/diff.js +0 -1317
  264. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/display.js +0 -561
  265. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/error.js +0 -40
  266. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js +0 -272
  267. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/offset.js +0 -27
  268. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js +0 -77
  269. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/source-map.js +0 -381
  270. package/bundle/dist/node_modules/.pnpm/@vitest_utils@4.1.10/node_modules/@vitest/utils/dist/timers.js +0 -51
  271. package/bundle/dist/node_modules/.pnpm/chai@6.2.2/node_modules/chai/index.js +0 -2986
  272. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.js +0 -10
  273. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.js +0 -109
  274. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.js +0 -10
  275. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.js +0 -10
  276. package/bundle/dist/node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.js +0 -10
  277. package/bundle/dist/node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.js +0 -1126
  278. package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/index.js +0 -21
  279. package/bundle/dist/node_modules/.pnpm/pathe@2.0.3/node_modules/pathe/dist/shared/pathe.M-eThtNZ.js +0 -432
  280. package/bundle/dist/node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.js +0 -517
  281. package/bundle/dist/node_modules/.pnpm/tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js +0 -101
  282. package/bundle/dist/node_modules/.pnpm/vite@8.0.3_@emnapi_core@1.11.2_@emnapi_runtime@1.11.2_@types_node@25.0.7_esbuild@0.27.4_5b35fc1fb85d2af4d105e0d74f940f50/node_modules/vite/dist/node/module-runner.js +0 -1265
  283. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +0 -9
  284. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +0 -41
  285. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +0 -19
  286. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +0 -202
  287. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/index.DdgEv5B1.js +0 -46
  288. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +0 -119
  289. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/test.DNmyFkvJ.js +0 -3044
  290. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +0 -59
  291. package/bundle/dist/node_modules/.pnpm/vitest@4.1.10_@opentelemetry_api@1.9.0_@types_node@25.0.7_@vitest_coverage-v8@4.1.10_vi_a1977b93af7bb69308bcb1dbab39b618/node_modules/vitest/dist/index.js +0 -28
  292. package/bundle/dist/testing/setup-mocks.js +0 -16
  293. package/bundle/src/testing/setup-mocks.ts +0 -44
  294. package/bundle/web-dist/client/assets/index-Bw2s88Ot.css +0 -1
  295. package/bundle/web-dist/client/assets/index-CrXKu_J8.js +0 -106
  296. package/bundle/web-dist/client/assets/logs-B2SmWJXA.js +0 -1
  297. package/bundle/web-dist/client/assets/monit-D-JwXXoA.js +0 -1
  298. package/bundle/web-dist/client/assets/plus-B62CuqT8.js +0 -1
  299. package/bundle/web-dist/client/assets/refresh-cw-NNcU0Cmq.js +0 -1
  300. package/bundle/web-dist/client/assets/request-model-CojtinqK.js +0 -1
  301. package/bundle/web-dist/client/assets/routes-C5r4gTvY.js +0 -5
  302. package/bundle/web-dist/client/assets/settings-D3tDSAck.js +0 -1
  303. package/bundle/web-dist/client/assets/show-Cah_kUKC.js +0 -2
  304. package/bundle/web-dist/client/assets/tokens-DU2Iyxxd.js +0 -1
  305. package/bundle/web-dist/client/assets/use-oauth-login-flow-D0UaR9_e.js +0 -1
  306. package/bundle/web-dist/client/assets/use-update-token-mutation-DAq0F8p-.js +0 -1
  307. package/bundle/web-dist/client/assets/vendor-react-DH4kUfK2.js +0 -9
  308. package/bundle/web-dist/client/assets/vendor-tanstack-DJRQAbrY.js +0 -1
  309. package/bundle/web-dist/server/assets/logs-l91avYif.js +0 -509
  310. package/bundle/web-dist/server/assets/plus-KZrECewT.js +0 -19
  311. package/bundle/web-dist/server/assets/refresh-cw-BND93JrF.js +0 -23
  312. package/bundle/web-dist/server/assets/settings-BZR5HSAL.js +0 -461
  313. package/bundle/web-dist/server/assets/tokens-D1hb4eKk.js +0 -448
  314. package/bundle/web-dist/server/assets/use-oauth-login-flow-Cvdy0zF8.js +0 -178
  315. package/dist/cli.d.ts +0 -10
  316. /package/bundle/web-dist/client/assets/{cost-DH2jZbrw.js → cost-DB3HbU7T.js} +0 -0
  317. /package/bundle/web-dist/client/assets/{preload-helper-ca-nBW7U.js → preload-helper-DWTEM3RW.js} +0 -0
  318. /package/bundle/web-dist/server/assets/{cost-eEHeTRT5.js → cost-BC9yzyA9.js} +0 -0
@@ -1,40 +0,0 @@
1
- import "../../../../../tinyrainbow@3.1.0/node_modules/tinyrainbow/dist/index.js";
2
- import { format } from "../../../../../@vitest_pretty-format@4.1.10/node_modules/@vitest/pretty-format/dist/index.js";
3
- import "./display.js";
4
- import "./constants.js";
5
- import "./helpers.js";
6
- import { getDefaultFormatOptions, printDiffOrStringify } from "./diff.js";
7
- import { serializeValue } from "./serialize.js";
8
- //#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/error.js
9
- function processError(_err, diffOptions, seen = /* @__PURE__ */ new WeakSet()) {
10
- if (!_err || typeof _err !== "object") return { message: String(_err) };
11
- const err = _err;
12
- if (err.showDiff || err.showDiff === void 0 && err.expected !== void 0 && err.actual !== void 0) {
13
- const options = {
14
- ...diffOptions,
15
- ...err.diffOptions
16
- };
17
- err.diff = printDiffOrStringify(err.actual, err.expected, options, err);
18
- err.expected = prettifyValue(err.expected, options);
19
- err.actual = prettifyValue(err.actual, options);
20
- }
21
- try {
22
- if (!seen.has(err) && typeof err.cause === "object") {
23
- seen.add(err);
24
- err.cause = processError(err.cause, diffOptions, seen);
25
- }
26
- } catch {}
27
- try {
28
- return serializeValue(err);
29
- } catch (e) {
30
- return serializeValue(/* @__PURE__ */ new Error(`Failed to fully serialize error: ${e?.message}\nInner error message: ${err?.message}`));
31
- }
32
- }
33
- function prettifyValue(value, options) {
34
- if (typeof value !== "string") return format(value, getDefaultFormatOptions(options));
35
- return value;
36
- }
37
- //#endregion
38
- export { processError, serializeValue as serializeError };
39
-
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL0B2aXRlc3QrdXRpbHNANC4xLjEwL25vZGVfbW9kdWxlcy9Adml0ZXN0L3V0aWxzL2Rpc3QvZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnQHZpdGVzdC9wcmV0dHktZm9ybWF0JztcbmltcG9ydCB7IHByaW50RGlmZk9yU3RyaW5naWZ5LCBnZXREZWZhdWx0Rm9ybWF0T3B0aW9ucyB9IGZyb20gJy4vZGlmZi5qcyc7XG5pbXBvcnQgeyBzZXJpYWxpemVWYWx1ZSB9IGZyb20gJy4vc2VyaWFsaXplLmpzJztcbmltcG9ydCAndGlueXJhaW5ib3cnO1xuaW1wb3J0ICcuL2Rpc3BsYXkuanMnO1xuaW1wb3J0ICcuL2hlbHBlcnMuanMnO1xuaW1wb3J0ICcuL2NvbnN0YW50cy5qcyc7XG5cbmZ1bmN0aW9uIHByb2Nlc3NFcnJvcihfZXJyLCBkaWZmT3B0aW9ucywgc2VlbiA9IG5ldyBXZWFrU2V0KCkpIHtcblx0aWYgKCFfZXJyIHx8IHR5cGVvZiBfZXJyICE9PSBcIm9iamVjdFwiKSB7XG5cdFx0cmV0dXJuIHsgbWVzc2FnZTogU3RyaW5nKF9lcnIpIH07XG5cdH1cblx0Y29uc3QgZXJyID0gX2Vycjtcblx0aWYgKGVyci5zaG93RGlmZiB8fCBlcnIuc2hvd0RpZmYgPT09IHVuZGVmaW5lZCAmJiBlcnIuZXhwZWN0ZWQgIT09IHVuZGVmaW5lZCAmJiBlcnIuYWN0dWFsICE9PSB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBvcHRpb25zID0ge1xuXHRcdFx0Li4uZGlmZk9wdGlvbnMsXG5cdFx0XHQuLi5lcnIuZGlmZk9wdGlvbnNcblx0XHR9O1xuXHRcdGVyci5kaWZmID0gcHJpbnREaWZmT3JTdHJpbmdpZnkoZXJyLmFjdHVhbCwgZXJyLmV4cGVjdGVkLCBvcHRpb25zLCBlcnIpO1xuXHRcdGVyci5leHBlY3RlZCA9IHByZXR0aWZ5VmFsdWUoZXJyLmV4cGVjdGVkLCBvcHRpb25zKTtcblx0XHRlcnIuYWN0dWFsID0gcHJldHRpZnlWYWx1ZShlcnIuYWN0dWFsLCBvcHRpb25zKTtcblx0fVxuXHQvLyBzb21lIEVycm9yIGltcGxlbWVudGF0aW9ucyBtYXkgbm90IGFsbG93IHJld3JpdGluZyBjYXVzZVxuXHQvLyBpbiBtb3N0IGNhc2VzLCB0aGUgYXNzaWdubWVudCB3aWxsIGxlYWQgdG8gXCJlcnIuY2F1c2UgPSBlcnIuY2F1c2VcIlxuXHR0cnkge1xuXHRcdGlmICghc2Vlbi5oYXMoZXJyKSAmJiB0eXBlb2YgZXJyLmNhdXNlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRzZWVuLmFkZChlcnIpO1xuXHRcdFx0ZXJyLmNhdXNlID0gcHJvY2Vzc0Vycm9yKGVyci5jYXVzZSwgZGlmZk9wdGlvbnMsIHNlZW4pO1xuXHRcdH1cblx0fSBjYXRjaCB7fVxuXHR0cnkge1xuXHRcdHJldHVybiBzZXJpYWxpemVWYWx1ZShlcnIpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIHNlcmlhbGl6ZVZhbHVlKG5ldyBFcnJvcihgRmFpbGVkIHRvIGZ1bGx5IHNlcmlhbGl6ZSBlcnJvcjogJHtlPy5tZXNzYWdlfVxcbklubmVyIGVycm9yIG1lc3NhZ2U6ICR7ZXJyPy5tZXNzYWdlfWApKTtcblx0fVxufVxuZnVuY3Rpb24gcHJldHRpZnlWYWx1ZSh2YWx1ZSwgb3B0aW9ucykge1xuXHRpZiAodHlwZW9mIHZhbHVlICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0cmV0dXJuIGZvcm1hdCh2YWx1ZSwgZ2V0RGVmYXVsdEZvcm1hdE9wdGlvbnMob3B0aW9ucykpO1xuXHR9XG5cdHJldHVybiB2YWx1ZTtcbn1cblxuZXhwb3J0IHsgcHJvY2Vzc0Vycm9yLCBzZXJpYWxpemVWYWx1ZSBhcyBzZXJpYWxpemVFcnJvciB9O1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBUUEsU0FBUyxhQUFhLE1BQU0sYUFBYSx1QkFBTyxJQUFJLFFBQVEsR0FBRztDQUM5RCxJQUFJLENBQUMsUUFBUSxPQUFPLFNBQVMsVUFDNUIsT0FBTyxFQUFFLFNBQVMsT0FBTyxJQUFJLEVBQUU7Q0FFaEMsTUFBTSxNQUFNO0NBQ1osSUFBSSxJQUFJLFlBQVksSUFBSSxhQUFhLFVBQWEsSUFBSSxhQUFhLFVBQWEsSUFBSSxXQUFXLFFBQVc7RUFDekcsTUFBTSxVQUFVO0dBQ2YsR0FBRztHQUNILEdBQUcsSUFBSTtFQUNSO0VBQ0EsSUFBSSxPQUFPLHFCQUFxQixJQUFJLFFBQVEsSUFBSSxVQUFVLFNBQVMsR0FBRztFQUN0RSxJQUFJLFdBQVcsY0FBYyxJQUFJLFVBQVUsT0FBTztFQUNsRCxJQUFJLFNBQVMsY0FBYyxJQUFJLFFBQVEsT0FBTztDQUMvQztDQUdBLElBQUk7RUFDSCxJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsS0FBSyxPQUFPLElBQUksVUFBVSxVQUFVO0dBQ3BELEtBQUssSUFBSSxHQUFHO0dBQ1osSUFBSSxRQUFRLGFBQWEsSUFBSSxPQUFPLGFBQWEsSUFBSTtFQUN0RDtDQUNELFFBQVEsQ0FBQztDQUNULElBQUk7RUFDSCxPQUFPLGVBQWUsR0FBRztDQUMxQixTQUFTLEdBQUc7RUFDWCxPQUFPLCtCQUFlLElBQUksTUFBTSxvQ0FBb0MsR0FBRyxRQUFRLHlCQUF5QixLQUFLLFNBQVMsQ0FBQztDQUN4SDtBQUNEO0FBQ0EsU0FBUyxjQUFjLE9BQU8sU0FBUztDQUN0QyxJQUFJLE9BQU8sVUFBVSxVQUNwQixPQUFPLE9BQU8sT0FBTyx3QkFBd0IsT0FBTyxDQUFDO0NBRXRELE9BQU87QUFDUiJ9
@@ -1,272 +0,0 @@
1
- import { NULL_BYTE_PLACEHOLDER, VALID_ID_PREFIX } from "./constants.js";
2
- //#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/helpers.js
3
- const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
4
- function nanoid(size = 21) {
5
- let id = "";
6
- let i = size;
7
- while (i--) id += urlAlphabet[Math.random() * 64 | 0];
8
- return id;
9
- }
10
- const RealDate = Date;
11
- function random(seed) {
12
- const x = Math.sin(seed++) * 1e4;
13
- return x - Math.floor(x);
14
- }
15
- function shuffle(array, seed = RealDate.now()) {
16
- let length = array.length;
17
- while (length) {
18
- const index = Math.floor(random(seed) * length--);
19
- const previous = array[length];
20
- array[length] = array[index];
21
- array[index] = previous;
22
- ++seed;
23
- }
24
- return array;
25
- }
26
- /**
27
- * Get original stacktrace without source map support the most performant way.
28
- * - Create only 1 stack frame.
29
- * - Rewrite prepareStackTrace to bypass "support-stack-trace" (usually takes ~250ms).
30
- */
31
- function createSimpleStackTrace(options) {
32
- const { message = "$$stack trace error", stackTraceLimit = 1 } = options || {};
33
- const limit = Error.stackTraceLimit;
34
- const prepareStackTrace = Error.prepareStackTrace;
35
- Error.stackTraceLimit = stackTraceLimit;
36
- Error.prepareStackTrace = (e) => e.stack;
37
- const stackTrace = new Error(message).stack || "";
38
- Error.prepareStackTrace = prepareStackTrace;
39
- Error.stackTraceLimit = limit;
40
- return stackTrace;
41
- }
42
- function notNullish(v) {
43
- return v != null;
44
- }
45
- function assertTypes(value, name, types) {
46
- const receivedType = typeof value;
47
- if (!types.includes(receivedType)) throw new TypeError(`${name} value must be ${types.join(" or ")}, received "${receivedType}"`);
48
- }
49
- function isPrimitive(value) {
50
- return value === null || typeof value !== "function" && typeof value !== "object";
51
- }
52
- function slash(path) {
53
- return path.replace(/\\/g, "/");
54
- }
55
- const postfixRE = /[?#].*$/;
56
- function cleanUrl(url) {
57
- return url.replace(postfixRE, "");
58
- }
59
- function splitFileAndPostfix(path) {
60
- const file = cleanUrl(path);
61
- return {
62
- file,
63
- postfix: path.slice(file.length)
64
- };
65
- }
66
- const externalRE = /^(?:[a-z]+:)?\/\//;
67
- const isExternalUrl = (url) => externalRE.test(url);
68
- /**
69
- * Prepend `/@id/` and replace null byte so the id is URL-safe.
70
- * This is prepended to resolved ids that are not valid browser
71
- * import specifiers by the importAnalysis plugin.
72
- */
73
- function wrapId(id) {
74
- return id.startsWith(VALID_ID_PREFIX) ? id : VALID_ID_PREFIX + id.replace("\0", NULL_BYTE_PLACEHOLDER);
75
- }
76
- /**
77
- * Undo {@link wrapId}'s `/@id/` and null byte replacements.
78
- */
79
- function unwrapId(id) {
80
- return id.startsWith(VALID_ID_PREFIX) ? id.slice(VALID_ID_PREFIX.length).replace(NULL_BYTE_PLACEHOLDER, "\0") : id;
81
- }
82
- function withTrailingSlash(path) {
83
- if (path.at(-1) !== "/") return `${path}/`;
84
- return path;
85
- }
86
- function filterOutComments(s) {
87
- const result = [];
88
- let commentState = "none";
89
- for (let i = 0; i < s.length; ++i) if (commentState === "singleline") {
90
- if (s[i] === "\n") commentState = "none";
91
- } else if (commentState === "multiline") {
92
- if (s[i - 1] === "*" && s[i] === "/") commentState = "none";
93
- } else if (commentState === "none") if (s[i] === "/" && s[i + 1] === "/") commentState = "singleline";
94
- else if (s[i] === "/" && s[i + 1] === "*") {
95
- commentState = "multiline";
96
- i += 2;
97
- } else result.push(s[i]);
98
- return result.join("");
99
- }
100
- const bareImportRE = /^(?![a-z]:)[\w@](?!.*:\/\/)/i;
101
- function isBareImport(id) {
102
- return bareImportRE.test(id);
103
- }
104
- function toArray(array) {
105
- if (array === null || array === void 0) array = [];
106
- if (Array.isArray(array)) return array;
107
- return [array];
108
- }
109
- function isObject(item) {
110
- return item != null && typeof item === "object" && !Array.isArray(item);
111
- }
112
- function isFinalObj(obj) {
113
- return obj === Object.prototype || obj === Function.prototype || obj === RegExp.prototype;
114
- }
115
- function getType(value) {
116
- return Object.prototype.toString.apply(value).slice(8, -1);
117
- }
118
- function collectOwnProperties(obj, collector) {
119
- const collect = typeof collector === "function" ? collector : (key) => collector.add(key);
120
- Object.getOwnPropertyNames(obj).forEach(collect);
121
- Object.getOwnPropertySymbols(obj).forEach(collect);
122
- }
123
- function getOwnProperties(obj) {
124
- const ownProps = /* @__PURE__ */ new Set();
125
- if (isFinalObj(obj)) return [];
126
- collectOwnProperties(obj, ownProps);
127
- return Array.from(ownProps);
128
- }
129
- const defaultCloneOptions = { forceWritable: false };
130
- function deepClone(val, options = defaultCloneOptions) {
131
- return clone(val, /* @__PURE__ */ new WeakMap(), options);
132
- }
133
- function clone(val, seen, options = defaultCloneOptions) {
134
- let k, out;
135
- if (seen.has(val)) return seen.get(val);
136
- if (Array.isArray(val)) {
137
- out = Array.from({ length: k = val.length });
138
- seen.set(val, out);
139
- while (k--) out[k] = clone(val[k], seen, options);
140
- return out;
141
- }
142
- if (Object.prototype.toString.call(val) === "[object Object]") {
143
- out = Object.create(Object.getPrototypeOf(val));
144
- seen.set(val, out);
145
- const props = getOwnProperties(val);
146
- for (const k of props) {
147
- const descriptor = Object.getOwnPropertyDescriptor(val, k);
148
- if (!descriptor) continue;
149
- const cloned = clone(val[k], seen, options);
150
- if (options.forceWritable) Object.defineProperty(out, k, {
151
- enumerable: descriptor.enumerable,
152
- configurable: true,
153
- writable: true,
154
- value: cloned
155
- });
156
- else if ("get" in descriptor) Object.defineProperty(out, k, {
157
- ...descriptor,
158
- get() {
159
- return cloned;
160
- }
161
- });
162
- else Object.defineProperty(out, k, {
163
- ...descriptor,
164
- value: cloned
165
- });
166
- }
167
- return out;
168
- }
169
- return val;
170
- }
171
- function noop() {}
172
- function objectAttr(source, path, defaultValue = void 0) {
173
- const paths = path.replace(/\[(\d+)\]/g, ".$1").split(".");
174
- let result = source;
175
- for (const p of paths) {
176
- result = new Object(result)[p];
177
- if (result === void 0) return defaultValue;
178
- }
179
- return result;
180
- }
181
- function createDefer() {
182
- let resolve = null;
183
- let reject = null;
184
- const p = new Promise((_resolve, _reject) => {
185
- resolve = _resolve;
186
- reject = _reject;
187
- });
188
- p.resolve = resolve;
189
- p.reject = reject;
190
- return p;
191
- }
192
- /**
193
- * If code starts with a function call, will return its last index, respecting arguments.
194
- * This will return 25 - last ending character of toMatch ")"
195
- * Also works with callbacks
196
- * ```
197
- * toMatch({ test: '123' });
198
- * toBeAliased('123')
199
- * ```
200
- */
201
- function getCallLastIndex(code) {
202
- let charIndex = -1;
203
- let inString = null;
204
- let startedBracers = 0;
205
- let endedBracers = 0;
206
- let beforeChar = null;
207
- while (charIndex <= code.length) {
208
- beforeChar = code[charIndex];
209
- charIndex++;
210
- const char = code[charIndex];
211
- if ((char === "\"" || char === "'" || char === "`") && beforeChar !== "\\") {
212
- if (inString === char) inString = null;
213
- else if (!inString) inString = char;
214
- }
215
- if (!inString) {
216
- if (char === "(") startedBracers++;
217
- if (char === ")") endedBracers++;
218
- }
219
- if (startedBracers && endedBracers && startedBracers === endedBracers) return charIndex;
220
- }
221
- return null;
222
- }
223
- function isNegativeNaN(val) {
224
- if (!Number.isNaN(val)) return false;
225
- const f64 = /* @__PURE__ */ new Float64Array(1);
226
- f64[0] = val;
227
- return new Uint32Array(f64.buffer)[1] >>> 31 === 1;
228
- }
229
- function toString(v) {
230
- return Object.prototype.toString.call(v);
231
- }
232
- function isPlainObject(val) {
233
- return toString(val) === "[object Object]" && (!val.constructor || val.constructor.name === "Object");
234
- }
235
- function isMergeableObject(item) {
236
- return isPlainObject(item) && !Array.isArray(item);
237
- }
238
- function ordinal(i) {
239
- const j = i % 10;
240
- const k = i % 100;
241
- if (j === 1 && k !== 11) return `${i}st`;
242
- if (j === 2 && k !== 12) return `${i}nd`;
243
- if (j === 3 && k !== 13) return `${i}rd`;
244
- return `${i}th`;
245
- }
246
- /**
247
- * Deep merge :P
248
- *
249
- * Will merge objects only if they are plain
250
- *
251
- * Do not merge types - it is very expensive and usually it's better to case a type here
252
- */
253
- function deepMerge(target, ...sources) {
254
- if (!sources.length) return target;
255
- const source = sources.shift();
256
- if (source === void 0) return target;
257
- if (isMergeableObject(target) && isMergeableObject(source)) Object.keys(source).forEach((key) => {
258
- const _source = source;
259
- if (isMergeableObject(_source[key])) {
260
- if (!target[key]) target[key] = {};
261
- deepMerge(target[key], _source[key]);
262
- } else target[key] = _source[key];
263
- });
264
- return deepMerge(target, ...sources);
265
- }
266
- function unique(array) {
267
- return Array.from(new Set(array));
268
- }
269
- //#endregion
270
- export { assertTypes, cleanUrl, clone, createDefer, createSimpleStackTrace, deepClone, deepMerge, filterOutComments, getCallLastIndex, getOwnProperties, getType, isBareImport, isExternalUrl, isNegativeNaN, isObject, isPrimitive, nanoid, noop, notNullish, objectAttr, ordinal, shuffle, slash, splitFileAndPostfix, toArray, unique, unwrapId, withTrailingSlash, wrapId };
271
-
272
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vQHZpdGVzdCt1dGlsc0A0LjEuMTAvbm9kZV9tb2R1bGVzL0B2aXRlc3QvdXRpbHMvZGlzdC9oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZBTElEX0lEX1BSRUZJWCwgTlVMTF9CWVRFX1BMQUNFSE9MREVSIH0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuXG4vLyBwb3J0IGZyb20gbmFub2lkXG4vLyBodHRwczovL2dpdGh1Yi5jb20vYWkvbmFub2lkXG5jb25zdCB1cmxBbHBoYWJldCA9IFwidXNlYW5kb20tMjZUMTk4MzQwUFg3NXB4SkFDS1ZFUllNSU5EQlVTSFdPTEZfR1FaYmZnaGprbHF2d3l6cmljdFwiO1xuZnVuY3Rpb24gbmFub2lkKHNpemUgPSAyMSkge1xuXHRsZXQgaWQgPSBcIlwiO1xuXHRsZXQgaSA9IHNpemU7XG5cdHdoaWxlIChpLS0pIHtcblx0XHRpZCArPSB1cmxBbHBoYWJldFtNYXRoLnJhbmRvbSgpICogNjQgfCAwXTtcblx0fVxuXHRyZXR1cm4gaWQ7XG59XG5cbmNvbnN0IFJlYWxEYXRlID0gRGF0ZTtcbmZ1bmN0aW9uIHJhbmRvbShzZWVkKSB7XG5cdGNvbnN0IHggPSBNYXRoLnNpbihzZWVkKyspICogMWU0O1xuXHRyZXR1cm4geCAtIE1hdGguZmxvb3IoeCk7XG59XG5mdW5jdGlvbiBzaHVmZmxlKGFycmF5LCBzZWVkID0gUmVhbERhdGUubm93KCkpIHtcblx0bGV0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblx0d2hpbGUgKGxlbmd0aCkge1xuXHRcdGNvbnN0IGluZGV4ID0gTWF0aC5mbG9vcihyYW5kb20oc2VlZCkgKiBsZW5ndGgtLSk7XG5cdFx0Y29uc3QgcHJldmlvdXMgPSBhcnJheVtsZW5ndGhdO1xuXHRcdGFycmF5W2xlbmd0aF0gPSBhcnJheVtpbmRleF07XG5cdFx0YXJyYXlbaW5kZXhdID0gcHJldmlvdXM7XG5cdFx0KytzZWVkO1xuXHR9XG5cdHJldHVybiBhcnJheTtcbn1cblxuLyoqXG4qIEdldCBvcmlnaW5hbCBzdGFja3RyYWNlIHdpdGhvdXQgc291cmNlIG1hcCBzdXBwb3J0IHRoZSBtb3N0IHBlcmZvcm1hbnQgd2F5LlxuKiAtIENyZWF0ZSBvbmx5IDEgc3RhY2sgZnJhbWUuXG4qIC0gUmV3cml0ZSBwcmVwYXJlU3RhY2tUcmFjZSB0byBieXBhc3MgXCJzdXBwb3J0LXN0YWNrLXRyYWNlXCIgKHVzdWFsbHkgdGFrZXMgfjI1MG1zKS5cbiovXG5mdW5jdGlvbiBjcmVhdGVTaW1wbGVTdGFja1RyYWNlKG9wdGlvbnMpIHtcblx0Y29uc3QgeyBtZXNzYWdlID0gXCIkJHN0YWNrIHRyYWNlIGVycm9yXCIsIHN0YWNrVHJhY2VMaW1pdCA9IDEgfSA9IG9wdGlvbnMgfHwge307XG5cdGNvbnN0IGxpbWl0ID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0O1xuXHRjb25zdCBwcmVwYXJlU3RhY2tUcmFjZSA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlO1xuXHRFcnJvci5zdGFja1RyYWNlTGltaXQgPSBzdGFja1RyYWNlTGltaXQ7XG5cdEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gKGUpID0+IGUuc3RhY2s7XG5cdGNvbnN0IGVyciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0Y29uc3Qgc3RhY2tUcmFjZSA9IGVyci5zdGFjayB8fCBcIlwiO1xuXHRFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXBhcmVTdGFja1RyYWNlO1xuXHRFcnJvci5zdGFja1RyYWNlTGltaXQgPSBsaW1pdDtcblx0cmV0dXJuIHN0YWNrVHJhY2U7XG59XG5mdW5jdGlvbiBub3ROdWxsaXNoKHYpIHtcblx0cmV0dXJuIHYgIT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGFzc2VydFR5cGVzKHZhbHVlLCBuYW1lLCB0eXBlcykge1xuXHRjb25zdCByZWNlaXZlZFR5cGUgPSB0eXBlb2YgdmFsdWU7XG5cdGNvbnN0IHBhc3MgPSB0eXBlcy5pbmNsdWRlcyhyZWNlaXZlZFR5cGUpO1xuXHRpZiAoIXBhc3MpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGAke25hbWV9IHZhbHVlIG11c3QgYmUgJHt0eXBlcy5qb2luKFwiIG9yIFwiKX0sIHJlY2VpdmVkIFwiJHtyZWNlaXZlZFR5cGV9XCJgKTtcblx0fVxufVxuZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIjtcbn1cbmZ1bmN0aW9uIHNsYXNoKHBhdGgpIHtcblx0cmV0dXJuIHBhdGgucmVwbGFjZSgvXFxcXC9nLCBcIi9cIik7XG59XG5jb25zdCBwb3N0Zml4UkUgPSAvWz8jXS4qJC87XG5mdW5jdGlvbiBjbGVhblVybCh1cmwpIHtcblx0cmV0dXJuIHVybC5yZXBsYWNlKHBvc3RmaXhSRSwgXCJcIik7XG59XG5mdW5jdGlvbiBzcGxpdEZpbGVBbmRQb3N0Zml4KHBhdGgpIHtcblx0Y29uc3QgZmlsZSA9IGNsZWFuVXJsKHBhdGgpO1xuXHRyZXR1cm4ge1xuXHRcdGZpbGUsXG5cdFx0cG9zdGZpeDogcGF0aC5zbGljZShmaWxlLmxlbmd0aClcblx0fTtcbn1cbmNvbnN0IGV4dGVybmFsUkUgPSAvXig/OlthLXpdKzopP1xcL1xcLy87XG5jb25zdCBpc0V4dGVybmFsVXJsID0gKHVybCkgPT4gZXh0ZXJuYWxSRS50ZXN0KHVybCk7XG4vKipcbiogUHJlcGVuZCBgL0BpZC9gIGFuZCByZXBsYWNlIG51bGwgYnl0ZSBzbyB0aGUgaWQgaXMgVVJMLXNhZmUuXG4qIFRoaXMgaXMgcHJlcGVuZGVkIHRvIHJlc29sdmVkIGlkcyB0aGF0IGFyZSBub3QgdmFsaWQgYnJvd3NlclxuKiBpbXBvcnQgc3BlY2lmaWVycyBieSB0aGUgaW1wb3J0QW5hbHlzaXMgcGx1Z2luLlxuKi9cbmZ1bmN0aW9uIHdyYXBJZChpZCkge1xuXHRyZXR1cm4gaWQuc3RhcnRzV2l0aChWQUxJRF9JRF9QUkVGSVgpID8gaWQgOiBWQUxJRF9JRF9QUkVGSVggKyBpZC5yZXBsYWNlKFwiXFwwXCIsIE5VTExfQllURV9QTEFDRUhPTERFUik7XG59XG4vKipcbiogVW5kbyB7QGxpbmsgd3JhcElkfSdzIGAvQGlkL2AgYW5kIG51bGwgYnl0ZSByZXBsYWNlbWVudHMuXG4qL1xuZnVuY3Rpb24gdW53cmFwSWQoaWQpIHtcblx0cmV0dXJuIGlkLnN0YXJ0c1dpdGgoVkFMSURfSURfUFJFRklYKSA/IGlkLnNsaWNlKFZBTElEX0lEX1BSRUZJWC5sZW5ndGgpLnJlcGxhY2UoTlVMTF9CWVRFX1BMQUNFSE9MREVSLCBcIlxcMFwiKSA6IGlkO1xufVxuZnVuY3Rpb24gd2l0aFRyYWlsaW5nU2xhc2gocGF0aCkge1xuXHRpZiAocGF0aC5hdCgtMSkgIT09IFwiL1wiKSB7XG5cdFx0cmV0dXJuIGAke3BhdGh9L2A7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59XG5mdW5jdGlvbiBmaWx0ZXJPdXRDb21tZW50cyhzKSB7XG5cdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRsZXQgY29tbWVudFN0YXRlID0gXCJub25lXCI7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkge1xuXHRcdGlmIChjb21tZW50U3RhdGUgPT09IFwic2luZ2xlbGluZVwiKSB7XG5cdFx0XHRpZiAoc1tpXSA9PT0gXCJcXG5cIikge1xuXHRcdFx0XHRjb21tZW50U3RhdGUgPSBcIm5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbW1lbnRTdGF0ZSA9PT0gXCJtdWx0aWxpbmVcIikge1xuXHRcdFx0aWYgKHNbaSAtIDFdID09PSBcIipcIiAmJiBzW2ldID09PSBcIi9cIikge1xuXHRcdFx0XHRjb21tZW50U3RhdGUgPSBcIm5vbmVcIjtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKGNvbW1lbnRTdGF0ZSA9PT0gXCJub25lXCIpIHtcblx0XHRcdGlmIChzW2ldID09PSBcIi9cIiAmJiBzW2kgKyAxXSA9PT0gXCIvXCIpIHtcblx0XHRcdFx0Y29tbWVudFN0YXRlID0gXCJzaW5nbGVsaW5lXCI7XG5cdFx0XHR9IGVsc2UgaWYgKHNbaV0gPT09IFwiL1wiICYmIHNbaSArIDFdID09PSBcIipcIikge1xuXHRcdFx0XHRjb21tZW50U3RhdGUgPSBcIm11bHRpbGluZVwiO1xuXHRcdFx0XHRpICs9IDI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXN1bHQucHVzaChzW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdC5qb2luKFwiXCIpO1xufVxuY29uc3QgYmFyZUltcG9ydFJFID0gL14oPyFbYS16XTopW1xcd0BdKD8hLio6XFwvXFwvKS9pO1xuZnVuY3Rpb24gaXNCYXJlSW1wb3J0KGlkKSB7XG5cdHJldHVybiBiYXJlSW1wb3J0UkUudGVzdChpZCk7XG59XG5mdW5jdGlvbiB0b0FycmF5KGFycmF5KSB7XG5cdGlmIChhcnJheSA9PT0gbnVsbCB8fCBhcnJheSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0YXJyYXkgPSBbXTtcblx0fVxuXHRpZiAoQXJyYXkuaXNBcnJheShhcnJheSkpIHtcblx0XHRyZXR1cm4gYXJyYXk7XG5cdH1cblx0cmV0dXJuIFthcnJheV07XG59XG5mdW5jdGlvbiBpc09iamVjdChpdGVtKSB7XG5cdHJldHVybiBpdGVtICE9IG51bGwgJiYgdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XG59XG5mdW5jdGlvbiBpc0ZpbmFsT2JqKG9iaikge1xuXHRyZXR1cm4gb2JqID09PSBPYmplY3QucHJvdG90eXBlIHx8IG9iaiA9PT0gRnVuY3Rpb24ucHJvdG90eXBlIHx8IG9iaiA9PT0gUmVnRXhwLnByb3RvdHlwZTtcbn1cbmZ1bmN0aW9uIGdldFR5cGUodmFsdWUpIHtcblx0cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpLnNsaWNlKDgsIC0xKTtcbn1cbmZ1bmN0aW9uIGNvbGxlY3RPd25Qcm9wZXJ0aWVzKG9iaiwgY29sbGVjdG9yKSB7XG5cdGNvbnN0IGNvbGxlY3QgPSB0eXBlb2YgY29sbGVjdG9yID09PSBcImZ1bmN0aW9uXCIgPyBjb2xsZWN0b3IgOiAoa2V5KSA9PiBjb2xsZWN0b3IuYWRkKGtleSk7XG5cdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaChjb2xsZWN0KTtcblx0T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmopLmZvckVhY2goY29sbGVjdCk7XG59XG5mdW5jdGlvbiBnZXRPd25Qcm9wZXJ0aWVzKG9iaikge1xuXHRjb25zdCBvd25Qcm9wcyA9IG5ldyBTZXQoKTtcblx0aWYgKGlzRmluYWxPYmoob2JqKSkge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRjb2xsZWN0T3duUHJvcGVydGllcyhvYmosIG93blByb3BzKTtcblx0cmV0dXJuIEFycmF5LmZyb20ob3duUHJvcHMpO1xufVxuY29uc3QgZGVmYXVsdENsb25lT3B0aW9ucyA9IHsgZm9yY2VXcml0YWJsZTogZmFsc2UgfTtcbmZ1bmN0aW9uIGRlZXBDbG9uZSh2YWwsIG9wdGlvbnMgPSBkZWZhdWx0Q2xvbmVPcHRpb25zKSB7XG5cdGNvbnN0IHNlZW4gPSBuZXcgV2Vha01hcCgpO1xuXHRyZXR1cm4gY2xvbmUodmFsLCBzZWVuLCBvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIGNsb25lKHZhbCwgc2Vlbiwgb3B0aW9ucyA9IGRlZmF1bHRDbG9uZU9wdGlvbnMpIHtcblx0bGV0IGssIG91dDtcblx0aWYgKHNlZW4uaGFzKHZhbCkpIHtcblx0XHRyZXR1cm4gc2Vlbi5nZXQodmFsKTtcblx0fVxuXHRpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG5cdFx0b3V0ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogayA9IHZhbC5sZW5ndGggfSk7XG5cdFx0c2Vlbi5zZXQodmFsLCBvdXQpO1xuXHRcdHdoaWxlIChrLS0pIHtcblx0XHRcdG91dFtrXSA9IGNsb25lKHZhbFtrXSwgc2Vlbiwgb3B0aW9ucyk7XG5cdFx0fVxuXHRcdHJldHVybiBvdXQ7XG5cdH1cblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWwpID09PSBcIltvYmplY3QgT2JqZWN0XVwiKSB7XG5cdFx0b3V0ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsKSk7XG5cdFx0c2Vlbi5zZXQodmFsLCBvdXQpO1xuXHRcdC8vIHdlIGRvbid0IG5lZWQgcHJvcGVydGllcyBmcm9tIHByb3RvdHlwZVxuXHRcdGNvbnN0IHByb3BzID0gZ2V0T3duUHJvcGVydGllcyh2YWwpO1xuXHRcdGZvciAoY29uc3QgayBvZiBwcm9wcykge1xuXHRcdFx0Y29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsLCBrKTtcblx0XHRcdGlmICghZGVzY3JpcHRvcikge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGNsb25lZCA9IGNsb25lKHZhbFtrXSwgc2Vlbiwgb3B0aW9ucyk7XG5cdFx0XHRpZiAob3B0aW9ucy5mb3JjZVdyaXRhYmxlKSB7XG5cdFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvdXQsIGssIHtcblx0XHRcdFx0XHRlbnVtZXJhYmxlOiBkZXNjcmlwdG9yLmVudW1lcmFibGUsXG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHdyaXRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHZhbHVlOiBjbG9uZWRcblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2UgaWYgKFwiZ2V0XCIgaW4gZGVzY3JpcHRvcikge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob3V0LCBrLCB7XG5cdFx0XHRcdFx0Li4uZGVzY3JpcHRvcixcblx0XHRcdFx0XHRnZXQoKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gY2xvbmVkO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkob3V0LCBrLCB7XG5cdFx0XHRcdFx0Li4uZGVzY3JpcHRvcixcblx0XHRcdFx0XHR2YWx1ZTogY2xvbmVkXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cdHJldHVybiB2YWw7XG59XG5mdW5jdGlvbiBub29wKCkge31cbmZ1bmN0aW9uIG9iamVjdEF0dHIoc291cmNlLCBwYXRoLCBkZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQpIHtcblx0Ly8gYVszXS5iIC0+IGEuMy5iXG5cdGNvbnN0IHBhdGhzID0gcGF0aC5yZXBsYWNlKC9cXFsoXFxkKylcXF0vZywgXCIuJDFcIikuc3BsaXQoXCIuXCIpO1xuXHRsZXQgcmVzdWx0ID0gc291cmNlO1xuXHRmb3IgKGNvbnN0IHAgb2YgcGF0aHMpIHtcblx0XHRyZXN1bHQgPSBuZXcgT2JqZWN0KHJlc3VsdClbcF07XG5cdFx0aWYgKHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gZGVmYXVsdFZhbHVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gY3JlYXRlRGVmZXIoKSB7XG5cdGxldCByZXNvbHZlID0gbnVsbDtcblx0bGV0IHJlamVjdCA9IG51bGw7XG5cdGNvbnN0IHAgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcblx0XHRyZXNvbHZlID0gX3Jlc29sdmU7XG5cdFx0cmVqZWN0ID0gX3JlamVjdDtcblx0fSk7XG5cdHAucmVzb2x2ZSA9IHJlc29sdmU7XG5cdHAucmVqZWN0ID0gcmVqZWN0O1xuXHRyZXR1cm4gcDtcbn1cbi8qKlxuKiBJZiBjb2RlIHN0YXJ0cyB3aXRoIGEgZnVuY3Rpb24gY2FsbCwgd2lsbCByZXR1cm4gaXRzIGxhc3QgaW5kZXgsIHJlc3BlY3RpbmcgYXJndW1lbnRzLlxuKiBUaGlzIHdpbGwgcmV0dXJuIDI1IC0gbGFzdCBlbmRpbmcgY2hhcmFjdGVyIG9mIHRvTWF0Y2ggXCIpXCJcbiogQWxzbyB3b3JrcyB3aXRoIGNhbGxiYWNrc1xuKiBgYGBcbiogdG9NYXRjaCh7IHRlc3Q6ICcxMjMnIH0pO1xuKiB0b0JlQWxpYXNlZCgnMTIzJylcbiogYGBgXG4qL1xuZnVuY3Rpb24gZ2V0Q2FsbExhc3RJbmRleChjb2RlKSB7XG5cdGxldCBjaGFySW5kZXggPSAtMTtcblx0bGV0IGluU3RyaW5nID0gbnVsbDtcblx0bGV0IHN0YXJ0ZWRCcmFjZXJzID0gMDtcblx0bGV0IGVuZGVkQnJhY2VycyA9IDA7XG5cdGxldCBiZWZvcmVDaGFyID0gbnVsbDtcblx0d2hpbGUgKGNoYXJJbmRleCA8PSBjb2RlLmxlbmd0aCkge1xuXHRcdGJlZm9yZUNoYXIgPSBjb2RlW2NoYXJJbmRleF07XG5cdFx0Y2hhckluZGV4Kys7XG5cdFx0Y29uc3QgY2hhciA9IGNvZGVbY2hhckluZGV4XTtcblx0XHRjb25zdCBpc0NoYXJTdHJpbmcgPSBjaGFyID09PSBcIlxcXCJcIiB8fCBjaGFyID09PSBcIidcIiB8fCBjaGFyID09PSBcImBcIjtcblx0XHRpZiAoaXNDaGFyU3RyaW5nICYmIGJlZm9yZUNoYXIgIT09IFwiXFxcXFwiKSB7XG5cdFx0XHRpZiAoaW5TdHJpbmcgPT09IGNoYXIpIHtcblx0XHRcdFx0aW5TdHJpbmcgPSBudWxsO1xuXHRcdFx0fSBlbHNlIGlmICghaW5TdHJpbmcpIHtcblx0XHRcdFx0aW5TdHJpbmcgPSBjaGFyO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoIWluU3RyaW5nKSB7XG5cdFx0XHRpZiAoY2hhciA9PT0gXCIoXCIpIHtcblx0XHRcdFx0c3RhcnRlZEJyYWNlcnMrKztcblx0XHRcdH1cblx0XHRcdGlmIChjaGFyID09PSBcIilcIikge1xuXHRcdFx0XHRlbmRlZEJyYWNlcnMrKztcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHN0YXJ0ZWRCcmFjZXJzICYmIGVuZGVkQnJhY2VycyAmJiBzdGFydGVkQnJhY2VycyA9PT0gZW5kZWRCcmFjZXJzKSB7XG5cdFx0XHRyZXR1cm4gY2hhckluZGV4O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzTmVnYXRpdmVOYU4odmFsKSB7XG5cdGlmICghTnVtYmVyLmlzTmFOKHZhbCkpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Y29uc3QgZjY0ID0gbmV3IEZsb2F0NjRBcnJheSgxKTtcblx0ZjY0WzBdID0gdmFsO1xuXHRjb25zdCB1MzIgPSBuZXcgVWludDMyQXJyYXkoZjY0LmJ1ZmZlcik7XG5cdGNvbnN0IGlzTmVnYXRpdmUgPSB1MzJbMV0gPj4+IDMxID09PSAxO1xuXHRyZXR1cm4gaXNOZWdhdGl2ZTtcbn1cbmZ1bmN0aW9uIHRvU3RyaW5nKHYpIHtcblx0cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2KTtcbn1cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsKSB7XG5cdHJldHVybiB0b1N0cmluZyh2YWwpID09PSBcIltvYmplY3QgT2JqZWN0XVwiICYmICghdmFsLmNvbnN0cnVjdG9yIHx8IHZhbC5jb25zdHJ1Y3Rvci5uYW1lID09PSBcIk9iamVjdFwiKTtcbn1cbmZ1bmN0aW9uIGlzTWVyZ2VhYmxlT2JqZWN0KGl0ZW0pIHtcblx0cmV0dXJuIGlzUGxhaW5PYmplY3QoaXRlbSkgJiYgIUFycmF5LmlzQXJyYXkoaXRlbSk7XG59XG5mdW5jdGlvbiBvcmRpbmFsKGkpIHtcblx0Y29uc3QgaiA9IGkgJSAxMDtcblx0Y29uc3QgayA9IGkgJSAxMDA7XG5cdGlmIChqID09PSAxICYmIGsgIT09IDExKSB7XG5cdFx0cmV0dXJuIGAke2l9c3RgO1xuXHR9XG5cdGlmIChqID09PSAyICYmIGsgIT09IDEyKSB7XG5cdFx0cmV0dXJuIGAke2l9bmRgO1xuXHR9XG5cdGlmIChqID09PSAzICYmIGsgIT09IDEzKSB7XG5cdFx0cmV0dXJuIGAke2l9cmRgO1xuXHR9XG5cdHJldHVybiBgJHtpfXRoYDtcbn1cbi8qKlxuKiBEZWVwIG1lcmdlIDpQXG4qXG4qIFdpbGwgbWVyZ2Ugb2JqZWN0cyBvbmx5IGlmIHRoZXkgYXJlIHBsYWluXG4qXG4qIERvIG5vdCBtZXJnZSB0eXBlcyAtIGl0IGlzIHZlcnkgZXhwZW5zaXZlIGFuZCB1c3VhbGx5IGl0J3MgYmV0dGVyIHRvIGNhc2UgYSB0eXBlIGhlcmVcbiovXG5mdW5jdGlvbiBkZWVwTWVyZ2UodGFyZ2V0LCAuLi5zb3VyY2VzKSB7XG5cdGlmICghc291cmNlcy5sZW5ndGgpIHtcblx0XHRyZXR1cm4gdGFyZ2V0O1xuXHR9XG5cdGNvbnN0IHNvdXJjZSA9IHNvdXJjZXMuc2hpZnQoKTtcblx0aWYgKHNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIHRhcmdldDtcblx0fVxuXHRpZiAoaXNNZXJnZWFibGVPYmplY3QodGFyZ2V0KSAmJiBpc01lcmdlYWJsZU9iamVjdChzb3VyY2UpKSB7XG5cdFx0T2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKChrZXkpID0+IHtcblx0XHRcdGNvbnN0IF9zb3VyY2UgPSBzb3VyY2U7XG5cdFx0XHRpZiAoaXNNZXJnZWFibGVPYmplY3QoX3NvdXJjZVtrZXldKSkge1xuXHRcdFx0XHRpZiAoIXRhcmdldFtrZXldKSB7XG5cdFx0XHRcdFx0dGFyZ2V0W2tleV0gPSB7fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRkZWVwTWVyZ2UodGFyZ2V0W2tleV0sIF9zb3VyY2Vba2V5XSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0YXJnZXRba2V5XSA9IF9zb3VyY2Vba2V5XTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRyZXR1cm4gZGVlcE1lcmdlKHRhcmdldCwgLi4uc291cmNlcyk7XG59XG5mdW5jdGlvbiB1bmlxdWUoYXJyYXkpIHtcblx0cmV0dXJuIEFycmF5LmZyb20obmV3IFNldChhcnJheSkpO1xufVxuXG5leHBvcnQgeyBhc3NlcnRUeXBlcywgY2xlYW5VcmwsIGNsb25lLCBjcmVhdGVEZWZlciwgY3JlYXRlU2ltcGxlU3RhY2tUcmFjZSwgZGVlcENsb25lLCBkZWVwTWVyZ2UsIGZpbHRlck91dENvbW1lbnRzLCBnZXRDYWxsTGFzdEluZGV4LCBnZXRPd25Qcm9wZXJ0aWVzLCBnZXRUeXBlLCBpc0JhcmVJbXBvcnQsIGlzRXh0ZXJuYWxVcmwsIGlzTmVnYXRpdmVOYU4sIGlzT2JqZWN0LCBpc1ByaW1pdGl2ZSwgbmFub2lkLCBub29wLCBub3ROdWxsaXNoLCBvYmplY3RBdHRyLCBvcmRpbmFsLCBzaHVmZmxlLCBzbGFzaCwgc3BsaXRGaWxlQW5kUG9zdGZpeCwgdG9BcnJheSwgdW5pcXVlLCB1bndyYXBJZCwgd2l0aFRyYWlsaW5nU2xhc2gsIHdyYXBJZCB9O1xuIl0sInhfZ29vZ2xlX2lnbm9yZUxpc3QiOlswXSwibWFwcGluZ3MiOiI7O0FBSUEsTUFBTSxjQUFjO0FBQ3BCLFNBQVMsT0FBTyxPQUFPLElBQUk7Q0FDMUIsSUFBSSxLQUFLO0NBQ1QsSUFBSSxJQUFJO0NBQ1IsT0FBTyxLQUNOLE1BQU0sWUFBWSxLQUFLLE9BQU8sSUFBSSxLQUFLO0NBRXhDLE9BQU87QUFDUjtBQUVBLE1BQU0sV0FBVztBQUNqQixTQUFTLE9BQU8sTUFBTTtDQUNyQixNQUFNLElBQUksS0FBSyxJQUFJLE1BQU0sSUFBSTtDQUM3QixPQUFPLElBQUksS0FBSyxNQUFNLENBQUM7QUFDeEI7QUFDQSxTQUFTLFFBQVEsT0FBTyxPQUFPLFNBQVMsSUFBSSxHQUFHO0NBQzlDLElBQUksU0FBUyxNQUFNO0NBQ25CLE9BQU8sUUFBUTtFQUNkLE1BQU0sUUFBUSxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksUUFBUTtFQUNoRCxNQUFNLFdBQVcsTUFBTTtFQUN2QixNQUFNLFVBQVUsTUFBTTtFQUN0QixNQUFNLFNBQVM7RUFDZixFQUFFO0NBQ0g7Q0FDQSxPQUFPO0FBQ1I7Ozs7OztBQU9BLFNBQVMsdUJBQXVCLFNBQVM7Q0FDeEMsTUFBTSxFQUFFLFVBQVUsdUJBQXVCLGtCQUFrQixNQUFNLFdBQVcsQ0FBQztDQUM3RSxNQUFNLFFBQVEsTUFBTTtDQUNwQixNQUFNLG9CQUFvQixNQUFNO0NBQ2hDLE1BQU0sa0JBQWtCO0NBQ3hCLE1BQU0scUJBQXFCLE1BQU0sRUFBRTtDQUVuQyxNQUFNLGFBQWEsSUFESCxNQUFNLE9BQ0gsQ0FBQSxDQUFJLFNBQVM7Q0FDaEMsTUFBTSxvQkFBb0I7Q0FDMUIsTUFBTSxrQkFBa0I7Q0FDeEIsT0FBTztBQUNSO0FBQ0EsU0FBUyxXQUFXLEdBQUc7Q0FDdEIsT0FBTyxLQUFLO0FBQ2I7QUFDQSxTQUFTLFlBQVksT0FBTyxNQUFNLE9BQU87Q0FDeEMsTUFBTSxlQUFlLE9BQU87Q0FFNUIsSUFBSSxDQURTLE1BQU0sU0FBUyxZQUN2QixHQUNKLE1BQU0sSUFBSSxVQUFVLEdBQUcsS0FBSyxpQkFBaUIsTUFBTSxLQUFLLE1BQU0sRUFBRSxjQUFjLGFBQWEsRUFBRTtBQUUvRjtBQUNBLFNBQVMsWUFBWSxPQUFPO0NBQzNCLE9BQU8sVUFBVSxRQUFRLE9BQU8sVUFBVSxjQUFjLE9BQU8sVUFBVTtBQUMxRTtBQUNBLFNBQVMsTUFBTSxNQUFNO0NBQ3BCLE9BQU8sS0FBSyxRQUFRLE9BQU8sR0FBRztBQUMvQjtBQUNBLE1BQU0sWUFBWTtBQUNsQixTQUFTLFNBQVMsS0FBSztDQUN0QixPQUFPLElBQUksUUFBUSxXQUFXLEVBQUU7QUFDakM7QUFDQSxTQUFTLG9CQUFvQixNQUFNO0NBQ2xDLE1BQU0sT0FBTyxTQUFTLElBQUk7Q0FDMUIsT0FBTztFQUNOO0VBQ0EsU0FBUyxLQUFLLE1BQU0sS0FBSyxNQUFNO0NBQ2hDO0FBQ0Q7QUFDQSxNQUFNLGFBQWE7QUFDbkIsTUFBTSxpQkFBaUIsUUFBUSxXQUFXLEtBQUssR0FBRzs7Ozs7O0FBTWxELFNBQVMsT0FBTyxJQUFJO0NBQ25CLE9BQU8sR0FBRyxXQUFXLGVBQWUsSUFBSSxLQUFLLGtCQUFrQixHQUFHLFFBQVEsTUFBTSxxQkFBcUI7QUFDdEc7Ozs7QUFJQSxTQUFTLFNBQVMsSUFBSTtDQUNyQixPQUFPLEdBQUcsV0FBVyxlQUFlLElBQUksR0FBRyxNQUFNLGdCQUFnQixNQUFNLENBQUMsQ0FBQyxRQUFRLHVCQUF1QixJQUFJLElBQUk7QUFDakg7QUFDQSxTQUFTLGtCQUFrQixNQUFNO0NBQ2hDLElBQUksS0FBSyxHQUFHLEVBQUUsTUFBTSxLQUNuQixPQUFPLEdBQUcsS0FBSztDQUVoQixPQUFPO0FBQ1I7QUFDQSxTQUFTLGtCQUFrQixHQUFHO0NBQzdCLE1BQU0sU0FBUyxDQUFDO0NBQ2hCLElBQUksZUFBZTtDQUNuQixLQUFLLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsR0FDL0IsSUFBSSxpQkFBaUIsY0FDcEI7TUFBSSxFQUFFLE9BQU8sTUFDWixlQUFlO0NBQ2hCLE9BQ00sSUFBSSxpQkFBaUIsYUFDM0I7TUFBSSxFQUFFLElBQUksT0FBTyxPQUFPLEVBQUUsT0FBTyxLQUNoQyxlQUFlO0NBQ2hCLE9BQ00sSUFBSSxpQkFBaUIsUUFDM0IsSUFBSSxFQUFFLE9BQU8sT0FBTyxFQUFFLElBQUksT0FBTyxLQUNoQyxlQUFlO01BQ1QsSUFBSSxFQUFFLE9BQU8sT0FBTyxFQUFFLElBQUksT0FBTyxLQUFLO0VBQzVDLGVBQWU7RUFDZixLQUFLO0NBQ04sT0FDQyxPQUFPLEtBQUssRUFBRSxFQUFFO0NBSW5CLE9BQU8sT0FBTyxLQUFLLEVBQUU7QUFDdEI7QUFDQSxNQUFNLGVBQWU7QUFDckIsU0FBUyxhQUFhLElBQUk7Q0FDekIsT0FBTyxhQUFhLEtBQUssRUFBRTtBQUM1QjtBQUNBLFNBQVMsUUFBUSxPQUFPO0NBQ3ZCLElBQUksVUFBVSxRQUFRLFVBQVUsUUFDL0IsUUFBUSxDQUFDO0NBRVYsSUFBSSxNQUFNLFFBQVEsS0FBSyxHQUN0QixPQUFPO0NBRVIsT0FBTyxDQUFDLEtBQUs7QUFDZDtBQUNBLFNBQVMsU0FBUyxNQUFNO0NBQ3ZCLE9BQU8sUUFBUSxRQUFRLE9BQU8sU0FBUyxZQUFZLENBQUMsTUFBTSxRQUFRLElBQUk7QUFDdkU7QUFDQSxTQUFTLFdBQVcsS0FBSztDQUN4QixPQUFPLFFBQVEsT0FBTyxhQUFhLFFBQVEsU0FBUyxhQUFhLFFBQVEsT0FBTztBQUNqRjtBQUNBLFNBQVMsUUFBUSxPQUFPO0NBQ3ZCLE9BQU8sT0FBTyxVQUFVLFNBQVMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRTtBQUMxRDtBQUNBLFNBQVMscUJBQXFCLEtBQUssV0FBVztDQUM3QyxNQUFNLFVBQVUsT0FBTyxjQUFjLGFBQWEsYUFBYSxRQUFRLFVBQVUsSUFBSSxHQUFHO0NBQ3hGLE9BQU8sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLFFBQVEsT0FBTztDQUMvQyxPQUFPLHNCQUFzQixHQUFHLENBQUMsQ0FBQyxRQUFRLE9BQU87QUFDbEQ7QUFDQSxTQUFTLGlCQUFpQixLQUFLO0NBQzlCLE1BQU0sMkJBQVcsSUFBSSxJQUFJO0NBQ3pCLElBQUksV0FBVyxHQUFHLEdBQ2pCLE9BQU8sQ0FBQztDQUVULHFCQUFxQixLQUFLLFFBQVE7Q0FDbEMsT0FBTyxNQUFNLEtBQUssUUFBUTtBQUMzQjtBQUNBLE1BQU0sc0JBQXNCLEVBQUUsZUFBZSxNQUFNO0FBQ25ELFNBQVMsVUFBVSxLQUFLLFVBQVUscUJBQXFCO0NBRXRELE9BQU8sTUFBTSxxQkFBSyxJQURELFFBQ0MsR0FBTSxPQUFPO0FBQ2hDO0FBQ0EsU0FBUyxNQUFNLEtBQUssTUFBTSxVQUFVLHFCQUFxQjtDQUN4RCxJQUFJLEdBQUc7Q0FDUCxJQUFJLEtBQUssSUFBSSxHQUFHLEdBQ2YsT0FBTyxLQUFLLElBQUksR0FBRztDQUVwQixJQUFJLE1BQU0sUUFBUSxHQUFHLEdBQUc7RUFDdkIsTUFBTSxNQUFNLEtBQUssRUFBRSxRQUFRLElBQUksSUFBSSxPQUFPLENBQUM7RUFDM0MsS0FBSyxJQUFJLEtBQUssR0FBRztFQUNqQixPQUFPLEtBQ04sSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLE1BQU0sT0FBTztFQUVyQyxPQUFPO0NBQ1I7Q0FDQSxJQUFJLE9BQU8sVUFBVSxTQUFTLEtBQUssR0FBRyxNQUFNLG1CQUFtQjtFQUM5RCxNQUFNLE9BQU8sT0FBTyxPQUFPLGVBQWUsR0FBRyxDQUFDO0VBQzlDLEtBQUssSUFBSSxLQUFLLEdBQUc7RUFFakIsTUFBTSxRQUFRLGlCQUFpQixHQUFHO0VBQ2xDLEtBQUssTUFBTSxLQUFLLE9BQU87R0FDdEIsTUFBTSxhQUFhLE9BQU8seUJBQXlCLEtBQUssQ0FBQztHQUN6RCxJQUFJLENBQUMsWUFDSjtHQUVELE1BQU0sU0FBUyxNQUFNLElBQUksSUFBSSxNQUFNLE9BQU87R0FDMUMsSUFBSSxRQUFRLGVBQ1gsT0FBTyxlQUFlLEtBQUssR0FBRztJQUM3QixZQUFZLFdBQVc7SUFDdkIsY0FBYztJQUNkLFVBQVU7SUFDVixPQUFPO0dBQ1IsQ0FBQztRQUNLLElBQUksU0FBUyxZQUNuQixPQUFPLGVBQWUsS0FBSyxHQUFHO0lBQzdCLEdBQUc7SUFDSCxNQUFNO0tBQ0wsT0FBTztJQUNSO0dBQ0QsQ0FBQztRQUVELE9BQU8sZUFBZSxLQUFLLEdBQUc7SUFDN0IsR0FBRztJQUNILE9BQU87R0FDUixDQUFDO0VBRUg7RUFDQSxPQUFPO0NBQ1I7Q0FDQSxPQUFPO0FBQ1I7QUFDQSxTQUFTLE9BQU8sQ0FBQztBQUNqQixTQUFTLFdBQVcsUUFBUSxNQUFNLGVBQWUsUUFBVztDQUUzRCxNQUFNLFFBQVEsS0FBSyxRQUFRLGNBQWMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHO0NBQ3pELElBQUksU0FBUztDQUNiLEtBQUssTUFBTSxLQUFLLE9BQU87RUFDdEIsU0FBUyxJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUM7RUFDNUIsSUFBSSxXQUFXLFFBQ2QsT0FBTztDQUVUO0NBQ0EsT0FBTztBQUNSO0FBQ0EsU0FBUyxjQUFjO0NBQ3RCLElBQUksVUFBVTtDQUNkLElBQUksU0FBUztDQUNiLE1BQU0sSUFBSSxJQUFJLFNBQVMsVUFBVSxZQUFZO0VBQzVDLFVBQVU7RUFDVixTQUFTO0NBQ1YsQ0FBQztDQUNELEVBQUUsVUFBVTtDQUNaLEVBQUUsU0FBUztDQUNYLE9BQU87QUFDUjs7Ozs7Ozs7OztBQVVBLFNBQVMsaUJBQWlCLE1BQU07Q0FDL0IsSUFBSSxZQUFZO0NBQ2hCLElBQUksV0FBVztDQUNmLElBQUksaUJBQWlCO0NBQ3JCLElBQUksZUFBZTtDQUNuQixJQUFJLGFBQWE7Q0FDakIsT0FBTyxhQUFhLEtBQUssUUFBUTtFQUNoQyxhQUFhLEtBQUs7RUFDbEI7RUFDQSxNQUFNLE9BQU8sS0FBSztFQUVsQixLQURxQixTQUFTLFFBQVEsU0FBUyxPQUFPLFNBQVMsUUFDM0MsZUFBZSxNQUNsQztPQUFJLGFBQWEsTUFDaEIsV0FBVztRQUNMLElBQUksQ0FBQyxVQUNYLFdBQVc7RUFDWjtFQUVELElBQUksQ0FBQyxVQUFVO0dBQ2QsSUFBSSxTQUFTLEtBQ1o7R0FFRCxJQUFJLFNBQVMsS0FDWjtFQUVGO0VBQ0EsSUFBSSxrQkFBa0IsZ0JBQWdCLG1CQUFtQixjQUN4RCxPQUFPO0NBRVQ7Q0FDQSxPQUFPO0FBQ1I7QUFDQSxTQUFTLGNBQWMsS0FBSztDQUMzQixJQUFJLENBQUMsT0FBTyxNQUFNLEdBQUcsR0FDcEIsT0FBTztDQUVSLE1BQU0sc0JBQU0sSUFBSSxhQUFhLENBQUM7Q0FDOUIsSUFBSSxLQUFLO0NBR1QsT0FEbUIsSUFESCxZQUFZLElBQUksTUFDYixDQUFBLENBQUksT0FBTyxPQUFPO0FBRXRDO0FBQ0EsU0FBUyxTQUFTLEdBQUc7Q0FDcEIsT0FBTyxPQUFPLFVBQVUsU0FBUyxLQUFLLENBQUM7QUFDeEM7QUFDQSxTQUFTLGNBQWMsS0FBSztDQUMzQixPQUFPLFNBQVMsR0FBRyxNQUFNLHNCQUFzQixDQUFDLElBQUksZUFBZSxJQUFJLFlBQVksU0FBUztBQUM3RjtBQUNBLFNBQVMsa0JBQWtCLE1BQU07Q0FDaEMsT0FBTyxjQUFjLElBQUksS0FBSyxDQUFDLE1BQU0sUUFBUSxJQUFJO0FBQ2xEO0FBQ0EsU0FBUyxRQUFRLEdBQUc7Q0FDbkIsTUFBTSxJQUFJLElBQUk7Q0FDZCxNQUFNLElBQUksSUFBSTtDQUNkLElBQUksTUFBTSxLQUFLLE1BQU0sSUFDcEIsT0FBTyxHQUFHLEVBQUU7Q0FFYixJQUFJLE1BQU0sS0FBSyxNQUFNLElBQ3BCLE9BQU8sR0FBRyxFQUFFO0NBRWIsSUFBSSxNQUFNLEtBQUssTUFBTSxJQUNwQixPQUFPLEdBQUcsRUFBRTtDQUViLE9BQU8sR0FBRyxFQUFFO0FBQ2I7Ozs7Ozs7O0FBUUEsU0FBUyxVQUFVLFFBQVEsR0FBRyxTQUFTO0NBQ3RDLElBQUksQ0FBQyxRQUFRLFFBQ1osT0FBTztDQUVSLE1BQU0sU0FBUyxRQUFRLE1BQU07Q0FDN0IsSUFBSSxXQUFXLFFBQ2QsT0FBTztDQUVSLElBQUksa0JBQWtCLE1BQU0sS0FBSyxrQkFBa0IsTUFBTSxHQUN4RCxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUMsU0FBUyxRQUFRO0VBQ3BDLE1BQU0sVUFBVTtFQUNoQixJQUFJLGtCQUFrQixRQUFRLElBQUksR0FBRztHQUNwQyxJQUFJLENBQUMsT0FBTyxNQUNYLE9BQU8sT0FBTyxDQUFDO0dBRWhCLFVBQVUsT0FBTyxNQUFNLFFBQVEsSUFBSTtFQUNwQyxPQUNDLE9BQU8sT0FBTyxRQUFRO0NBRXhCLENBQUM7Q0FFRixPQUFPLFVBQVUsUUFBUSxHQUFHLE9BQU87QUFDcEM7QUFDQSxTQUFTLE9BQU8sT0FBTztDQUN0QixPQUFPLE1BQU0sS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDO0FBQ2pDIn0=
@@ -1,27 +0,0 @@
1
- //#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/offset.js
2
- const lineSplitRE = /\r?\n/;
3
- function positionToOffset(source, lineNumber, columnNumber) {
4
- const lines = source.split(lineSplitRE);
5
- const nl = /\r\n/.test(source) ? 2 : 1;
6
- let start = 0;
7
- if (lineNumber > lines.length) return source.length;
8
- for (let i = 0; i < lineNumber - 1; i++) start += lines[i].length + nl;
9
- return start + columnNumber;
10
- }
11
- function offsetToLineNumber(source, offset) {
12
- if (offset > source.length) throw new Error(`offset is longer than source length! offset ${offset} > length ${source.length}`);
13
- const lines = source.split(lineSplitRE);
14
- const nl = /\r\n/.test(source) ? 2 : 1;
15
- let counted = 0;
16
- let line = 0;
17
- for (; line < lines.length; line++) {
18
- const lineLength = lines[line].length + nl;
19
- if (counted + lineLength >= offset) break;
20
- counted += lineLength;
21
- }
22
- return line + 1;
23
- }
24
- //#endregion
25
- export { lineSplitRE, offsetToLineNumber, positionToOffset };
26
-
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2Zmc2V0LmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Adml0ZXN0K3V0aWxzQDQuMS4xMC9ub2RlX21vZHVsZXMvQHZpdGVzdC91dGlscy9kaXN0L29mZnNldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBsaW5lU3BsaXRSRSA9IC9cXHI/XFxuLztcbmZ1bmN0aW9uIHBvc2l0aW9uVG9PZmZzZXQoc291cmNlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpIHtcblx0Y29uc3QgbGluZXMgPSBzb3VyY2Uuc3BsaXQobGluZVNwbGl0UkUpO1xuXHRjb25zdCBubCA9IC9cXHJcXG4vLnRlc3Qoc291cmNlKSA/IDIgOiAxO1xuXHRsZXQgc3RhcnQgPSAwO1xuXHRpZiAobGluZU51bWJlciA+IGxpbmVzLmxlbmd0aCkge1xuXHRcdHJldHVybiBzb3VyY2UubGVuZ3RoO1xuXHR9XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgbGluZU51bWJlciAtIDE7IGkrKykge1xuXHRcdHN0YXJ0ICs9IGxpbmVzW2ldLmxlbmd0aCArIG5sO1xuXHR9XG5cdHJldHVybiBzdGFydCArIGNvbHVtbk51bWJlcjtcbn1cbmZ1bmN0aW9uIG9mZnNldFRvTGluZU51bWJlcihzb3VyY2UsIG9mZnNldCkge1xuXHRpZiAob2Zmc2V0ID4gc291cmNlLmxlbmd0aCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgb2Zmc2V0IGlzIGxvbmdlciB0aGFuIHNvdXJjZSBsZW5ndGghIG9mZnNldCAke29mZnNldH0gPiBsZW5ndGggJHtzb3VyY2UubGVuZ3RofWApO1xuXHR9XG5cdGNvbnN0IGxpbmVzID0gc291cmNlLnNwbGl0KGxpbmVTcGxpdFJFKTtcblx0Y29uc3QgbmwgPSAvXFxyXFxuLy50ZXN0KHNvdXJjZSkgPyAyIDogMTtcblx0bGV0IGNvdW50ZWQgPSAwO1xuXHRsZXQgbGluZSA9IDA7XG5cdGZvciAoOyBsaW5lIDwgbGluZXMubGVuZ3RoOyBsaW5lKyspIHtcblx0XHRjb25zdCBsaW5lTGVuZ3RoID0gbGluZXNbbGluZV0ubGVuZ3RoICsgbmw7XG5cdFx0aWYgKGNvdW50ZWQgKyBsaW5lTGVuZ3RoID49IG9mZnNldCkge1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGNvdW50ZWQgKz0gbGluZUxlbmd0aDtcblx0fVxuXHRyZXR1cm4gbGluZSArIDE7XG59XG5cbmV4cG9ydCB7IGxpbmVTcGxpdFJFLCBvZmZzZXRUb0xpbmVOdW1iZXIsIHBvc2l0aW9uVG9PZmZzZXQgfTtcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiO0FBQUEsTUFBTSxjQUFjO0FBQ3BCLFNBQVMsaUJBQWlCLFFBQVEsWUFBWSxjQUFjO0NBQzNELE1BQU0sUUFBUSxPQUFPLE1BQU0sV0FBVztDQUN0QyxNQUFNLEtBQUssT0FBTyxLQUFLLE1BQU0sSUFBSSxJQUFJO0NBQ3JDLElBQUksUUFBUTtDQUNaLElBQUksYUFBYSxNQUFNLFFBQ3RCLE9BQU8sT0FBTztDQUVmLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxhQUFhLEdBQUcsS0FDbkMsU0FBUyxNQUFNLEVBQUUsQ0FBQyxTQUFTO0NBRTVCLE9BQU8sUUFBUTtBQUNoQjtBQUNBLFNBQVMsbUJBQW1CLFFBQVEsUUFBUTtDQUMzQyxJQUFJLFNBQVMsT0FBTyxRQUNuQixNQUFNLElBQUksTUFBTSwrQ0FBK0MsT0FBTyxZQUFZLE9BQU8sUUFBUTtDQUVsRyxNQUFNLFFBQVEsT0FBTyxNQUFNLFdBQVc7Q0FDdEMsTUFBTSxLQUFLLE9BQU8sS0FBSyxNQUFNLElBQUksSUFBSTtDQUNyQyxJQUFJLFVBQVU7Q0FDZCxJQUFJLE9BQU87Q0FDWCxPQUFPLE9BQU8sTUFBTSxRQUFRLFFBQVE7RUFDbkMsTUFBTSxhQUFhLE1BQU0sS0FBSyxDQUFDLFNBQVM7RUFDeEMsSUFBSSxVQUFVLGNBQWMsUUFDM0I7RUFFRCxXQUFXO0NBQ1o7Q0FDQSxPQUFPLE9BQU87QUFDZiJ9
@@ -1,77 +0,0 @@
1
- //#region ../../node_modules/.pnpm/@vitest+utils@4.1.10/node_modules/@vitest/utils/dist/serialize.js
2
- const IS_RECORD_SYMBOL = "@@__IMMUTABLE_RECORD__@@";
3
- const IS_COLLECTION_SYMBOL = "@@__IMMUTABLE_ITERABLE__@@";
4
- function isImmutable(v) {
5
- return v && (v[IS_COLLECTION_SYMBOL] || v[IS_RECORD_SYMBOL]);
6
- }
7
- const OBJECT_PROTO = Object.getPrototypeOf({});
8
- function getUnserializableMessage(err) {
9
- if (err instanceof Error) return `<unserializable>: ${err.message}`;
10
- if (typeof err === "string") return `<unserializable>: ${err}`;
11
- return "<unserializable>";
12
- }
13
- function serializeValue(val, seen = /* @__PURE__ */ new WeakMap()) {
14
- if (!val || typeof val === "string") return val;
15
- if (val instanceof Error && "toJSON" in val && typeof val.toJSON === "function") {
16
- const jsonValue = val.toJSON();
17
- if (jsonValue && jsonValue !== val && typeof jsonValue === "object") {
18
- if (typeof val.message === "string") safe(() => jsonValue.message ??= normalizeErrorMessage(val.message));
19
- if (typeof val.stack === "string") safe(() => jsonValue.stack ??= val.stack);
20
- if (typeof val.name === "string") safe(() => jsonValue.name ??= val.name);
21
- if (val.cause != null) safe(() => jsonValue.cause ??= serializeValue(val.cause, seen));
22
- }
23
- return serializeValue(jsonValue, seen);
24
- }
25
- if (typeof val === "function") return `Function<${val.name || "anonymous"}>`;
26
- if (typeof val === "symbol") return val.toString();
27
- if (typeof val !== "object") return val;
28
- if (typeof Buffer !== "undefined" && val instanceof Buffer) return `<Buffer(${val.length}) ...>`;
29
- if (typeof Uint8Array !== "undefined" && val instanceof Uint8Array) return `<Uint8Array(${val.length}) ...>`;
30
- if (isImmutable(val)) return serializeValue(val.toJSON(), seen);
31
- if (val instanceof Promise || val.constructor && val.constructor.prototype === "AsyncFunction") return "Promise";
32
- if (typeof Element !== "undefined" && val instanceof Element) return val.tagName;
33
- if (typeof val.toJSON === "function") return serializeValue(val.toJSON(), seen);
34
- if (seen.has(val)) return seen.get(val);
35
- if (Array.isArray(val)) {
36
- const clone = new Array(val.length);
37
- seen.set(val, clone);
38
- val.forEach((e, i) => {
39
- try {
40
- clone[i] = serializeValue(e, seen);
41
- } catch (err) {
42
- clone[i] = getUnserializableMessage(err);
43
- }
44
- });
45
- return clone;
46
- } else {
47
- const clone = Object.create(null);
48
- seen.set(val, clone);
49
- let obj = val;
50
- while (obj && obj !== OBJECT_PROTO) {
51
- Object.getOwnPropertyNames(obj).forEach((key) => {
52
- if (key in clone) return;
53
- try {
54
- clone[key] = serializeValue(val[key], seen);
55
- } catch (err) {
56
- delete clone[key];
57
- clone[key] = getUnserializableMessage(err);
58
- }
59
- });
60
- obj = Object.getPrototypeOf(obj);
61
- }
62
- if (val instanceof Error) safe(() => clone.message = normalizeErrorMessage(val.message));
63
- return clone;
64
- }
65
- }
66
- function safe(fn) {
67
- try {
68
- return fn();
69
- } catch {}
70
- }
71
- function normalizeErrorMessage(message) {
72
- return message.replace(/\(0\s?,\s?__vite_ssr_import_\d+__.(\w+)\)/g, "$1").replace(/__(vite_ssr_import|vi_import)_\d+__\./g, "").replace(/getByTestId('__vitest_\d+__')/g, "page");
73
- }
74
- //#endregion
75
- export { serializeValue };
76
-
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9Adml0ZXN0K3V0aWxzQDQuMS4xMC9ub2RlX21vZHVsZXMvQHZpdGVzdC91dGlscy9kaXN0L3NlcmlhbGl6ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBJU19SRUNPUkRfU1lNQk9MID0gXCJAQF9fSU1NVVRBQkxFX1JFQ09SRF9fQEBcIjtcbmNvbnN0IElTX0NPTExFQ1RJT05fU1lNQk9MID0gXCJAQF9fSU1NVVRBQkxFX0lURVJBQkxFX19AQFwiO1xuZnVuY3Rpb24gaXNJbW11dGFibGUodikge1xuXHRyZXR1cm4gdiAmJiAodltJU19DT0xMRUNUSU9OX1NZTUJPTF0gfHwgdltJU19SRUNPUkRfU1lNQk9MXSk7XG59XG5jb25zdCBPQkpFQ1RfUFJPVE8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yoe30pO1xuZnVuY3Rpb24gZ2V0VW5zZXJpYWxpemFibGVNZXNzYWdlKGVycikge1xuXHRpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0XHRyZXR1cm4gYDx1bnNlcmlhbGl6YWJsZT46ICR7ZXJyLm1lc3NhZ2V9YDtcblx0fVxuXHRpZiAodHlwZW9mIGVyciA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBgPHVuc2VyaWFsaXphYmxlPjogJHtlcnJ9YDtcblx0fVxuXHRyZXR1cm4gXCI8dW5zZXJpYWxpemFibGU+XCI7XG59XG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2ViX1dvcmtlcnNfQVBJL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtXG5mdW5jdGlvbiBzZXJpYWxpemVWYWx1ZSh2YWwsIHNlZW4gPSBuZXcgV2Vha01hcCgpKSB7XG5cdGlmICghdmFsIHx8IHR5cGVvZiB2YWwgPT09IFwic3RyaW5nXCIpIHtcblx0XHRyZXR1cm4gdmFsO1xuXHR9XG5cdGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvciAmJiBcInRvSlNPTlwiIGluIHZhbCAmJiB0eXBlb2YgdmFsLnRvSlNPTiA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0Y29uc3QganNvblZhbHVlID0gdmFsLnRvSlNPTigpO1xuXHRcdGlmIChqc29uVmFsdWUgJiYganNvblZhbHVlICE9PSB2YWwgJiYgdHlwZW9mIGpzb25WYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0aWYgKHR5cGVvZiB2YWwubWVzc2FnZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRzYWZlKCgpID0+IGpzb25WYWx1ZS5tZXNzYWdlID8/PSBub3JtYWxpemVFcnJvck1lc3NhZ2UodmFsLm1lc3NhZ2UpKTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2YgdmFsLnN0YWNrID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdHNhZmUoKCkgPT4ganNvblZhbHVlLnN0YWNrID8/PSB2YWwuc3RhY2spO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZiB2YWwubmFtZSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRzYWZlKCgpID0+IGpzb25WYWx1ZS5uYW1lID8/PSB2YWwubmFtZSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodmFsLmNhdXNlICE9IG51bGwpIHtcblx0XHRcdFx0c2FmZSgoKSA9PiBqc29uVmFsdWUuY2F1c2UgPz89IHNlcmlhbGl6ZVZhbHVlKHZhbC5jYXVzZSwgc2VlbikpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2VyaWFsaXplVmFsdWUoanNvblZhbHVlLCBzZWVuKTtcblx0fVxuXHRpZiAodHlwZW9mIHZhbCA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0cmV0dXJuIGBGdW5jdGlvbjwke3ZhbC5uYW1lIHx8IFwiYW5vbnltb3VzXCJ9PmA7XG5cdH1cblx0aWYgKHR5cGVvZiB2YWwgPT09IFwic3ltYm9sXCIpIHtcblx0XHRyZXR1cm4gdmFsLnRvU3RyaW5nKCk7XG5cdH1cblx0aWYgKHR5cGVvZiB2YWwgIT09IFwib2JqZWN0XCIpIHtcblx0XHRyZXR1cm4gdmFsO1xuXHR9XG5cdGlmICh0eXBlb2YgQnVmZmVyICE9PSBcInVuZGVmaW5lZFwiICYmIHZhbCBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuXHRcdHJldHVybiBgPEJ1ZmZlcigke3ZhbC5sZW5ndGh9KSAuLi4+YDtcblx0fVxuXHRpZiAodHlwZW9mIFVpbnQ4QXJyYXkgIT09IFwidW5kZWZpbmVkXCIgJiYgdmFsIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuXHRcdHJldHVybiBgPFVpbnQ4QXJyYXkoJHt2YWwubGVuZ3RofSkgLi4uPmA7XG5cdH1cblx0Ly8gY2Fubm90IHNlcmlhbGl6ZSBpbW11dGFibGVzIGFzIGltbXV0YWJsZXNcblx0aWYgKGlzSW1tdXRhYmxlKHZhbCkpIHtcblx0XHRyZXR1cm4gc2VyaWFsaXplVmFsdWUodmFsLnRvSlNPTigpLCBzZWVuKTtcblx0fVxuXHRpZiAodmFsIGluc3RhbmNlb2YgUHJvbWlzZSB8fCB2YWwuY29uc3RydWN0b3IgJiYgdmFsLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gXCJBc3luY0Z1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gXCJQcm9taXNlXCI7XG5cdH1cblx0aWYgKHR5cGVvZiBFbGVtZW50ICE9PSBcInVuZGVmaW5lZFwiICYmIHZhbCBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcblx0XHRyZXR1cm4gdmFsLnRhZ05hbWU7XG5cdH1cblx0aWYgKHR5cGVvZiB2YWwudG9KU09OID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gc2VyaWFsaXplVmFsdWUodmFsLnRvSlNPTigpLCBzZWVuKTtcblx0fVxuXHRpZiAoc2Vlbi5oYXModmFsKSkge1xuXHRcdHJldHVybiBzZWVuLmdldCh2YWwpO1xuXHR9XG5cdGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby1uZXctYXJyYXkgLS0gd2UgbmVlZCB0byBrZWVwIHNwYXJzZSBhcnJheXMgKFsxLCwzXSlcblx0XHRjb25zdCBjbG9uZSA9IG5ldyBBcnJheSh2YWwubGVuZ3RoKTtcblx0XHRzZWVuLnNldCh2YWwsIGNsb25lKTtcblx0XHR2YWwuZm9yRWFjaCgoZSwgaSkgPT4ge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y2xvbmVbaV0gPSBzZXJpYWxpemVWYWx1ZShlLCBzZWVuKTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRjbG9uZVtpXSA9IGdldFVuc2VyaWFsaXphYmxlTWVzc2FnZShlcnIpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBjbG9uZTtcblx0fSBlbHNlIHtcblx0XHQvLyBPYmplY3RzIHdpdGggYEVycm9yYCBjb25zdHJ1Y3RvcnMgYXBwZWFyIHRvIGNhdXNlIHByb2JsZW1zIGR1cmluZyB3b3JrZXIgY29tbXVuaWNhdGlvblxuXHRcdC8vIHVzaW5nIGBNZXNzYWdlUG9ydGAsIHNvIHRoZSBzZXJpYWxpemVkIGVycm9yIG9iamVjdCBpcyBiZWluZyByZWNyZWF0ZWQgYXMgcGxhaW4gb2JqZWN0LlxuXHRcdGNvbnN0IGNsb25lID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblx0XHRzZWVuLnNldCh2YWwsIGNsb25lKTtcblx0XHRsZXQgb2JqID0gdmFsO1xuXHRcdHdoaWxlIChvYmogJiYgb2JqICE9PSBPQkpFQ1RfUFJPVE8pIHtcblx0XHRcdE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikuZm9yRWFjaCgoa2V5KSA9PiB7XG5cdFx0XHRcdGlmIChrZXkgaW4gY2xvbmUpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRjbG9uZVtrZXldID0gc2VyaWFsaXplVmFsdWUodmFsW2tleV0sIHNlZW4pO1xuXHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHQvLyBkZWxldGUgaW4gY2FzZSBpdCBoYXMgYSBzZXR0ZXIgZnJvbSBwcm90b3R5cGUgdGhhdCBtaWdodCB0aHJvd1xuXHRcdFx0XHRcdGRlbGV0ZSBjbG9uZVtrZXldO1xuXHRcdFx0XHRcdGNsb25lW2tleV0gPSBnZXRVbnNlcmlhbGl6YWJsZU1lc3NhZ2UoZXJyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRvYmogPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKTtcblx0XHR9XG5cdFx0aWYgKHZhbCBpbnN0YW5jZW9mIEVycm9yKSB7XG5cdFx0XHRzYWZlKCgpID0+IGNsb25lLm1lc3NhZ2UgPSBub3JtYWxpemVFcnJvck1lc3NhZ2UodmFsLm1lc3NhZ2UpKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNsb25lO1xuXHR9XG59XG5mdW5jdGlvbiBzYWZlKGZuKSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGZuKCk7XG5cdH0gY2F0Y2gge31cbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZUVycm9yTWVzc2FnZShtZXNzYWdlKSB7XG5cdHJldHVybiBtZXNzYWdlLnJlcGxhY2UoL1xcKDBcXHM/LFxccz9fX3ZpdGVfc3NyX2ltcG9ydF9cXGQrX18uKFxcdyspXFwpL2csIFwiJDFcIikucmVwbGFjZSgvX18odml0ZV9zc3JfaW1wb3J0fHZpX2ltcG9ydClfXFxkK19fXFwuL2csIFwiXCIpLnJlcGxhY2UoL2dldEJ5VGVzdElkKCdfX3ZpdGVzdF9cXGQrX18nKS9nLCBcInBhZ2VcIik7XG59XG5cbmV4cG9ydCB7IHNlcmlhbGl6ZVZhbHVlIH07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sbUJBQW1CO0FBQ3pCLE1BQU0sdUJBQXVCO0FBQzdCLFNBQVMsWUFBWSxHQUFHO0NBQ3ZCLE9BQU8sTUFBTSxFQUFFLHlCQUF5QixFQUFFO0FBQzNDO0FBQ0EsTUFBTSxlQUFlLE9BQU8sZUFBZSxDQUFDLENBQUM7QUFDN0MsU0FBUyx5QkFBeUIsS0FBSztDQUN0QyxJQUFJLGVBQWUsT0FDbEIsT0FBTyxxQkFBcUIsSUFBSTtD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