@vscada/sim 0.0.1

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 (35) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/generators/blink-generator.d.ts +26 -0
  3. package/dist/generators/blink-generator.d.ts.map +1 -0
  4. package/dist/generators/build-generators.d.ts +14 -0
  5. package/dist/generators/build-generators.d.ts.map +1 -0
  6. package/dist/generators/drift-generator.d.ts +27 -0
  7. package/dist/generators/drift-generator.d.ts.map +1 -0
  8. package/dist/generators/level-generator.d.ts +31 -0
  9. package/dist/generators/level-generator.d.ts.map +1 -0
  10. package/dist/generators/position-generator.d.ts +28 -0
  11. package/dist/generators/position-generator.d.ts.map +1 -0
  12. package/dist/generators/ramp-generator.d.ts +31 -0
  13. package/dist/generators/ramp-generator.d.ts.map +1 -0
  14. package/dist/generators/state-generator.d.ts +30 -0
  15. package/dist/generators/state-generator.d.ts.map +1 -0
  16. package/dist/generators/types.d.ts +8 -0
  17. package/dist/generators/types.d.ts.map +1 -0
  18. package/dist/generators/visibility-generator.d.ts +26 -0
  19. package/dist/generators/visibility-generator.d.ts.map +1 -0
  20. package/dist/generators/walk.d.ts +19 -0
  21. package/dist/generators/walk.d.ts.map +1 -0
  22. package/dist/index.d.ts +4 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +378 -0
  25. package/dist/inventory.d.ts +37 -0
  26. package/dist/inventory.d.ts.map +1 -0
  27. package/dist/prng.d.ts +19 -0
  28. package/dist/prng.d.ts.map +1 -0
  29. package/dist/quality.d.ts +38 -0
  30. package/dist/quality.d.ts.map +1 -0
  31. package/dist/simulator.d.ts +59 -0
  32. package/dist/simulator.d.ts.map +1 -0
  33. package/dist/test-fixtures/wte-scene.d.ts +15 -0
  34. package/dist/test-fixtures/wte-scene.d.ts.map +1 -0
  35. package/package.json +31 -0
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/development/css-tag.d.ts","../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/development/reactive-controller.d.ts","../../../node_modules/.pnpm/@lit+reactive-element@2.1.2/node_modules/@lit/reactive-element/development/reactive-element.d.ts","../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/development/directive.d.ts","../../../node_modules/.pnpm/@types+trusted-types@2.0.7/node_modules/@types/trusted-types/lib/index.d.ts","../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/development/lit-html.d.ts","../../../node_modules/.pnpm/lit-element@4.2.2/node_modules/lit-element/development/lit-element.d.ts","../../../node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/development/is-server.d.ts","../../../node_modules/.pnpm/lit@3.3.3/node_modules/lit/development/index.d.ts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/json-schema.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/standard-schema.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/registries.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/to-json-schema.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/util.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/versions.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/checks.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/errors.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/core.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/parse.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/regexes.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ar.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/az.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/be.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/bg.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ca.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/cs.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/da.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/de.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/el.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/en.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/eo.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/es.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fa.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fi.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fr.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fr-CA.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/he.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/hr.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/hu.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/hy.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/id.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/is.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/it.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ja.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ka.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/kh.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/km.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ko.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/lt.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/mk.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ms.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/nl.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/no.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ota.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ps.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/pl.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/pt.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ro.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ru.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/sl.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/sv.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ta.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/th.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/tr.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ua.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/uk.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ur.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/uz.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/vi.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/zh-CN.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/zh-TW.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/yo.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/index.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/doc.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/api.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/json-schema-processors.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/json-schema-generator.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/index.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/errors.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/parse.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/schemas.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/checks.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/compat.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/from-json-schema.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/iso.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/coerce.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.d.cts","../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/index.d.cts","../../core/dist/scene/scene-schema.d.ts","../../core/dist/contracts/tag-value.d.ts","../../core/dist/contracts/connection-state.d.ts","../../core/dist/contracts/time-source.d.ts","../../core/dist/contracts/renderer.d.ts","../../core/dist/contracts/handles.d.ts","../../core/dist/store/value-store.d.ts","../../core/dist/scheduler/animation-registry.d.ts","../../core/dist/topology/graph.d.ts","../../core/dist/media/registry.d.ts","../../core/dist/tokens.d.ts","../../core/dist/contracts/primitive.d.ts","../../core/dist/scheduler/quality.d.ts","../../core/dist/scheduler/quality-overlay.d.ts","../../core/dist/topology/inference.d.ts","../../core/dist/scheduler/scheduler.d.ts","../../core/dist/a11y/static-representation-registry.d.ts","../../core/dist/a11y/reduced-motion.d.ts","../../core/dist/scada-view.d.ts","../../core/dist/scene/constants.d.ts","../../core/dist/scene/errors.d.ts","../../core/dist/scene/structural-validator.d.ts","../../core/dist/registry/primitive-registry.d.ts","../../core/dist/scene/connection-geometry.d.ts","../../core/dist/contracts/connection-renderer.d.ts","../../core/dist/registry/connection-registry.d.ts","../../core/dist/registry/theme-registry.d.ts","../../core/dist/scene/lane-offset.d.ts","../../core/dist/scene/crossing-jumps.d.ts","../../core/dist/topology/traversal.d.ts","../../core/dist/topology/upstream-highlight.d.ts","../../core/dist/scheduler/visual-state-resolver.d.ts","../../core/dist/scheduler/alarm-band.d.ts","../../core/dist/scene/groups.d.ts","../../core/dist/topology/group-collapse.d.ts","../../core/dist/view/group-view-state.d.ts","../../core/dist/fsm/fsm.d.ts","../../core/dist/fsm/tween.d.ts","../../core/dist/license/format.d.ts","../../core/dist/license/state.d.ts","../../core/dist/interaction/gesture-arbiter.d.ts","../../core/dist/interaction/pointer-pipeline.d.ts","../../core/dist/a11y/contrast.d.ts","../../core/dist/units/registry.d.ts","../../core/dist/units/formatter.d.ts","../../core/dist/bindings/transforms.d.ts","../../core/dist/bindings/color-ramp.d.ts","../../core/dist/import/svg-source-registry.d.ts","../../core/dist/index.d.ts","../src/prng.ts","../src/inventory.ts","../src/generators/types.ts","../src/generators/blink-generator.ts","../src/generators/walk.ts","../src/generators/drift-generator.ts","../src/generators/level-generator.ts","../src/generators/position-generator.ts","../src/generators/ramp-generator.ts","../src/generators/state-generator.ts","../src/generators/visibility-generator.ts","../src/generators/build-generators.ts","../src/quality.ts","../src/simulator.ts","../src/index.ts","../../core/dist/scene/validate-scene.d.ts","../../core/dist/registry/element-catalog.d.ts","../../core/dist/scene-authoring.d.ts","../../builder/dist/catalog.d.ts","../../builder/dist/element-builder.d.ts","../../builder/dist/scene-builder.d.ts","../../builder/dist/errors.d.ts","../../builder/dist/factories.d.ts","../../builder/dist/index.d.ts","../src/test-fixtures/wte-scene.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.20.1/node_modules/@types/node/index.d.ts","../../../node_modules/.pnpm/@types+pngjs@6.0.5/node_modules/@types/pngjs/index.d.ts"],"fileIdsList":[[216,266,283,284],[48,49,216,266,283,284],[216,263,264,266,283,284],[216,265,266,283,284],[266,283,284],[216,266,271,283,284,301],[216,266,267,272,277,283,284,286,298,309],[216,266,267,268,277,283,284,286],[211,212,213,216,266,283,284],[216,266,269,283,284,310],[216,266,270,271,278,283,284,287],[216,266,271,283,284,298,306],[216,266,272,274,277,283,284,286],[216,265,266,273,283,284],[216,266,274,275,283,284],[216,266,276,277,283,284],[216,265,266,277,283,284],[216,266,277,278,279,283,284,298,309],[216,266,277,278,279,283,284,293,298,301],[216,258,266,274,277,280,283,284,286,298,309],[216,266,277,278,280,281,283,284,286,298,306,309],[216,266,280,282,283,284,298,306,309],[214,215,216,217,218,219,220,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315],[216,266,277,283,284],[216,266,283,284,285,309],[216,266,274,277,283,284,286,298],[216,266,283,284,287],[216,266,283,284,288],[216,265,266,283,284,289],[216,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315],[216,266,283,284,291],[216,266,283,284,292],[216,266,277,283,284,293,294],[216,266,283,284,293,295,310,312],[216,266,278,283,284],[216,266,277,283,284,298,299,301],[216,266,283,284,300,301],[216,266,283,284,298,299],[216,266,283,284,301],[216,266,283,284,302],[216,263,266,283,284,298,303,309],[216,266,277,283,284,304,305],[216,266,283,284,304,305],[216,266,271,283,284,286,298,306],[216,266,283,284,307],[216,266,283,284,286,308],[216,266,280,283,284,292,309],[216,266,271,283,284,310],[216,266,283,284,298,311],[216,266,283,284,285,312],[216,266,283,284,313],[216,258,266,283,284],[216,258,266,277,279,283,284,289,298,301,309,311,312,314],[216,266,283,284,298,315],[216,266,283,284,298,315,316],[50,53,216,266,283,284],[53,216,266,283,284],[51,52,216,266,283,284],[50,53,54,55,216,266,283,284],[216,230,234,266,283,284,309],[216,230,266,283,284,298,309],[216,225,266,283,284],[216,227,230,266,283,284,306,309],[216,266,283,284,286,306],[216,266,283,284,316],[216,225,266,283,284,316],[216,227,230,266,283,284,286,309],[216,222,223,226,229,266,277,283,284,298,309],[216,230,237,266,283,284],[216,222,228,266,283,284],[216,230,251,252,266,283,284],[216,226,230,266,283,284,301,309,316],[216,251,266,283,284,316],[216,224,225,266,283,284,316],[216,230,266,283,284],[216,224,225,226,227,228,229,230,231,232,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,252,253,254,255,256,257,266,283,284],[216,230,245,266,283,284],[216,230,237,238,266,283,284],[216,228,230,238,239,266,283,284],[216,229,266,283,284],[216,222,225,230,266,283,284],[216,230,234,238,239,266,283,284],[216,234,266,283,284],[216,228,230,233,266,283,284,309],[216,222,227,230,237,266,283,284],[216,266,283,284,298],[216,225,230,251,266,283,284,314,316],[135,216,266,283,284],[126,216,266,283,284],[126,129,216,266,283,284],[61,121,124,126,127,128,129,130,131,132,133,134,216,266,283,284],[57,59,129,216,266,283,284],[126,127,216,266,283,284],[58,126,128,216,266,283,284],[59,61,63,64,65,66,216,266,283,284],[61,63,65,66,216,266,283,284],[61,63,65,216,266,283,284],[58,61,63,64,66,216,266,283,284],[57,59,60,61,62,63,64,65,66,67,68,121,122,123,124,125,216,266,283,284],[57,59,60,63,216,266,283,284],[59,60,63,216,266,283,284],[63,66,216,266,283,284],[57,58,60,61,62,64,65,66,216,266,283,284],[57,58,59,63,126,216,266,283,284],[63,64,65,66,216,266,283,284],[65,216,266,283,284],[69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,216,266,283,284],[203,216,266,283,284],[185,204,216,266,283,284],[205,216,266,283,284],[204,205,206,207,208,216,266,283,284],[185,205,216,266,283,284],[153,216,266,283,284],[142,216,266,283,284],[147,182,216,266,283,284],[137,138,216,266,283,284],[141,142,148,160,216,266,283,284],[138,141,216,266,283,284],[137,141,142,147,216,266,283,284],[138,216,266,283,284],[137,138,139,140,141,142,145,146,147,148,149,151,152,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,176,178,179,180,181,182,183,184,216,266,283,284],[177,216,266,283,284],[175,216,266,283,284],[145,216,266,283,284],[161,216,266,283,284],[148,216,266,283,284],[147,216,266,283,284],[56,137,138,139,140,141,144,152,154,216,266,283,284],[201,202,216,266,283,284],[137,145,216,266,283,284],[137,160,216,266,283,284],[137,141,145,148,149,160,216,266,283,284],[160,216,266,283,284],[136,216,266,283,284],[137,157,216,266,283,284],[137,216,266,283,284],[137,147,216,266,283,284],[141,148,149,216,266,283,284],[143,216,266,283,284],[139,140,141,142,143,144,149,150,151,216,266,283,284],[149,216,266,283,284],[138,140,216,266,283,284],[146,216,266,283,284],[141,145,216,266,283,284],[137,144,216,266,283,284],[186,188,216,266,283,284],[185,186,187,188,189,191,192,193,194,195,196,216,266,283,284],[186,188,190,216,266,283,284],[185,186,188,190,216,266,283,284],[186,188,190,191,216,266,283,284],[185,216,266,283,284],[186,216,266,283,284],[198,199,216,266,283,284],[185,186,197,198,216,266,283,284],[185,209,216,266,283,284]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"74012d464fbc5354ca3a7d5e71bee43b17da01a853c8ff10971bbe3680c76f40","impliedFormat":99},{"version":"5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","impliedFormat":99},{"version":"a0f82d2f9450bd147a8c137798d9501bd49b7c9e118f75b07b76709ff39b6b55","affectsGlobalScope":true,"impliedFormat":99},{"version":"00cb63103f9670f8094c238a4a7e252c8b4c06ba371fea5c44add7e41b7247e4","impliedFormat":99},{"version":"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e","impliedFormat":1},{"version":"e09db3291e6b440f7debed2227d8357e80c95987a0d0d67ac17521d8f7b11bdb","impliedFormat":99},{"version":"9a318e3a8900672b85cd3c8c3a5acf51b88049557a3ae897ccdcf2b85a8f61f9","impliedFormat":99},{"version":"1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","impliedFormat":99},{"version":"dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be","impliedFormat":99},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"40ba6c32eb732a09e4446ade5cb6ad0c147f186f9c9dc6878b90b4418ad9f6ea","impliedFormat":1},{"version":"fdd814741843f85c98281522c58f5a646590ba9019fad2efaa95987655e0611b","impliedFormat":1},{"version":"c78aff4fb58b28b8f642d5095fc7eeb79f00e652a67caa19693af1adabb833c9","impliedFormat":1},{"version":"f80a08ced8818dc99359c0acd5b3f12762e1ce53758007759b0d4e503cbf4a5e","impliedFormat":1},{"version":"37935fa7564bcc6e0bc845b766a24391098d26f7c8245d6e8ab37bc016816e94","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"0f8a263f4c8595c8a07de52e3f3927640c44386c1aa2984de9eae50d75e613b2","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"346fffde7c32da87c2196eb7494422449dc2ca82d3b4e6bf55be1d1a33ffc2b0","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8b5875e4958528042103fdd775e106a7f76bafc29709f0690df9a7d2241d52a7","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"aef26cf95593c8ace1c62c4724f9afac77bdfa756fb8a00613cd152117cb2f43","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"268fd6d9f2e807a39a6c5aa654b00f949feb63d3faa7dd0f9bba7dde9172159c","impliedFormat":1},{"version":"29f823cbe0166e10e7176a94afe609a24b9e5af3858628c541ff8ce1727023cd","impliedFormat":1},"e440bfd558f1ed98f5663e68978c4ece88dea07e831dcc6ea39870a121f98b9a","681d73788d313db4eab1f8290077b892e70b2b1f3abdb1ed3661f9802a27999b","1987cc7589b4de59aea46f23c070a35f3e2c48f73b99384994c3cc207c088111","1aab37a8bbf0f0305c181146bf876dd2ae9f317d1b44c2fffde5b77c22d7a77b","237fd213a58e20827c363b4a86eb584d0341338c6ca33489b3e58037770f1acc","b463f3cb4aa04e1011b624369afff748284eda7a72680e9ba006ab2b32552c41","66cb7bccc3f8a450d6fde871af53ebfe57af5215341f52b2a81b48ccdc71ae11","6746b771110bf781a8c4dd6fef80255ada78d73fcac664221aa0b4a385105814","d9d4bb833a7f2f5948a3bd219a58b74969f3180421cc4eb6cc0c187d2b773fe8","ddcb981b5d939087baade70d13961b28d1436200427f12b36f00187b18d6d832","0e75b454f758293b5f6f4759c23a0d56730348717f372a7e7602354333f32826","2356f42ced08775d0b925ad69082a183923cd28ca167b56172ccc9b76d3a7b10","e661a131f8f3f2c323167efb1e15591a795c6d8850ce1d683becfbe2fafc09bf","b76bb55e84812dde380179e1670e4f20dc592563f5af12e904674731a2c13b0a","11e85ccf5f12a3356f2b6e5cf3db6f05e6416749f20bd7d6016f855ad22be0ff","959cd4782c3e6dbff24e24be8f9a3d76cfeb69e999c9307d509f89ea0dc20bab","5a52d41667b7c92fdab694b4798463c47a4b55e1af278c25e31a63c34139c330","49991295d23e418bc2a01ccad9bf4547e2303e0ebd2bf8e015d2fe883e12475e","fc3a2be1eb3eefafa7a2fe4d8449f22a7da2754a8a4f2a53abe45c28949f7812","259d1fc5ed365c55ba3ec4a4236d3240f4d057a0d9e1774f8588f25d12338fc0","9af4348354094535ba6e3791e816a78c3978499809f4c59c047f83a8bf4a842d","9f290708b155df1a45ea278567a62d3b2cef7f57002276bdb06f893166176f0d","5be9736412661ebbaf6c1d8607fd3909d407080529aebae482dfc78e6046ec3a","8c43bdd094699f9c634f2787a4e190e98e80c091ceae4364c1efd2a9a560e887","a19d2b338117dd9649afc43ea029d4c621049edf68b9398d2b8d997cf2085c0c","c1da17f4c815ec426197f84a9d04fe8e8b42d17c1186a0860e5f54ce76db0e0d","6bb6f750643e5e6ce257cb1c02c4f858da537ef36157514551e6a627d07504c6","ab29ae9662805ff19f6eb939da720c4a0a98d74076a4e02e3e0e5d75356629f6","d0c89afddabf6654e112a20082508e3b93ff30b6d76fc00f315fb8afad3f7625","b4ee409278e592c6ecc3cac3bf39f457b49ea833e588d9d70459124d525f01e7","a77e3a55d531e5ee8a1989d3e3897e506d967a191d164bc44060088706eaf55f","5428d320eae54104d07509907b933415bf486af14db5711b7f06262d9ce2a63f","f0c82ca58f62a8ea4fceebcb5461c8879fd62e0cc862114f82e179983db9c9f2","4d010d85ac039f1cc61f84fdcf3856d58eb28c04861473b732d4b495e4984ac0","8f8e9e970d0f47d762cd1c1e0b12d7f100bc52b76ffa411252036b2d6ef61600","065eddf62ace417dd123053aac4513acd717fac25969f06c0f1a677e18cd5d36","afa5d567c3c0532beb6002ebcdf25a84be7bf0d619f866e5504210d10ed4258d","5e993aef2ca3d70921bd02b96e543a4288fc87ebea77fa642509fd14b8cf1ead","56aa396b18f69b3b4c19903e643f91695d2b6c06e6361183274630745d676058","0ec7aa3882d394903a37ecc39482207ef86a7c232f1d0c508c9fd5f6a6b8a27d","dc49645dd9d131c5258809ea847b5520a48ca134ecdecc50bc305f3b5481e0c0","b16ede8d9a84ec1f75a47ab5bf4a21b2fad274657eb45575276ff6a5409717c0","09a2f722ef529b70620263e0340e91d6788bb9786a65fbf12d1f25b4b4ae62ac","7077e44386a54aa6048564ee9a3af2ce7652a208c80930212ba18119b65dfb7f","9ed05e5ec0a2553f76708d501d02d4b125dc2e43655321987074990199f3f926","4afbc739a300e955995c4fbdd6b5ad055b739e81625fabcc917894ccf4c4ea00","dc989c1edd3ceb3e226d3b815d2146e0c6a8ccf81bb874d81449f7cd0636996a","cadaa5ff77e63de11a92ce8f3fccf5d1844297c37ba930e08e43ce1b21d5a7e4","9b74e19b30bb0710fcf35a0e91c911649093a728a267307d5cc5e2a64fb72867",{"version":"6e28fecf5b995a5c4840895742e421f951c0d4c2d71cc18a65543b97ed53e52c","signature":"414d6a089065abeb3de6fbbe99e3b45b57b9b2e923f39a6278f0f10f8a08882a"},{"version":"a192743c46d023c4d63b63d3f6c0cd565ca85725f8b8b3fd707334623ebcea7f","signature":"9baf915932e23257b53b53b3efffb2e53deb2822926d98721d53ba01023efaf0"},{"version":"1693dc63ee48cbf41c8217eaa3b2de29fc8e239f9bc6b34cbd570d6152d1d4be","signature":"87287bde46402a4f22b7e4c1f542a2d4a3cd8078aeca8fa31540d7d9cab9ccd9"},{"version":"a9448c2ed1a9b4a5784e19ba6ed2ae7499de4b590fb3fa9ada1e3fc6a6ebf118","signature":"89b830c8272f8d532224c4b7f21ac814430c52c807a11579a9eae955e55c238e"},{"version":"ea7e68a8a846d6f507abc62b828e1c4bd739a80f2897c422c538a5086738c8e2","signature":"8c48547b1189d0cc7c76a5af8796c6e2332f141df9100649565055ecf8b13acd"},{"version":"6ee07695e6e3728b18cd254fe21d3f859591ddbb1232388adfec48a5a6b16b3d","signature":"8bbd415a8839883d4ad573e1f0532d7a69667e201170fdb63ba894f3288cc036"},{"version":"01b9dcc286bb2fe995fd209b7931a411ed75c2d99221a8d9787309a6fdda7d03","signature":"7b652c0b950df3a2f18021bcebf5e9f3c471e97f443d4b4dcac6d41b5d0aca8c"},{"version":"87e8ccda8e31df9e5f23b332680f74e46a9c51c534605ac8e78a8bfcbf4dc506","signature":"995053f5c03374a6f70d45e647d7a30857f38ce68dcaabe1964601ee63fef882"},{"version":"5c6cf43d1bb67234a04804842c2def067389de6798c5feb8b5785adfc81dbbe4","signature":"435d5ed8b67840fafd0bdc3b2b2fe7fb62afcd6d72f1df418c1d07f10dee2d02"},{"version":"1776d8567875deb799c33087334fac9affecbb20ec08c394e342d5996cab5634","signature":"b88c8a787417af64950fde33808f324cd00e9f8f383f89d89e3286d8047ac2ca"},{"version":"7a657fe2a030f4947eeaaa2ce536325baf5c7f7fb1a3b5de398373af46f8cb6c","signature":"3b652ab5d1f2d846a89a2fc4d7c9366c823992cee2c01a5dfe4f2ef03bb1faac"},{"version":"b5f6a5fa01e2fb8078fbf8edea5757c934b5470bd20347ce5c0f062f629a648c","signature":"dbc615bc05aef3967c1e0fd7c0fb2611549c3213e0930a911d6158e12a034cbb"},{"version":"96e5125bfb2a47ec09688093367463827af98754a3ff5d9a5e72e1d4ad30ddf4","signature":"a4f8d0d5c950ff54b169a260b1493df4165db74ec17fd26e9783d469949bf74d"},{"version":"2d446c16c3e850b932de97c37307b4abf80157182dffe7ec3fe017c500268258","signature":"ed5f0a698672bda864fb809b22d023c29e306660c6b5342d48a8c81b1608f3e7"},{"version":"9f743ee07a3545e736475b231d4054ab71dbc00b77a449f297eb505479fdb03f","signature":"b91777174f268f407dbf3151e460a1fa5e4cf22d4871a72c2338d1c3d9bc0bbe"},"7e95718f2a08286917ed2fc8b4bcdaee4674e17c7cd6fe862dbeaa360fc7e03b","98f5dfde177549c68f2cc9c267bbba0922933d2a21966f9c3fe36e7ef7bb88d2","fb277c73f13379605e290a5267543a28669f71b1b35cc17625e58567cdd5c580","2b2833b2c89ff5558e0913c14834912e2adf9c23d533bc4756312a641bb6e57f","b71455a494a011531749429399c3ccc746f8b4170b9eacec4043f90e717dba5e","98f729248326fbe5124bbf4ec16d08e4b054b1a14b48ce1fed43c0be6a13f280","dd1e06f5df98f65b3007f85667399d4cbe29dd523c35da5cccfdf8902fc3007c","1bb6d1118a6aea79ff9928b92e9410bac9fa2052367e30b95480c761dbe3b612","fef4e790e1c1be9ae3fdd9ca0165a2430c7e21b7304565a78d6c25002b5f098f",{"version":"9d3eaf38501781a18f84f41c87f9fe5707f17a18c45b72ea73f3bc4d02db5592","signature":"aaf006643e86beb1fa87ba4a88ed800dfd3ca29cdb51caf73d42897c960b8547"},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"78dbea00e90d2df8ea3dbef0cc379d95b8be9b71cd6bde4c28728f306811803b","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e1e46d0a9837ee058c100501080c920fa98081ea3956af0374308ba6f22a33e","impliedFormat":1},{"version":"272ca407e0c9068bdc5152552d876e68037ceae3de62e529306403e973dec8e1","impliedFormat":1},{"version":"fa7834c715d5357e4540cee40ce96c3250ddb67a7b879a6b7fa0e86d6696f121","impliedFormat":1},{"version":"22dfb07a7ab15b66ac043829056fe70124844636ae719551812ac631ba04985b","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"0cb167c371eaa8c869f8a7656a7296f2e4fae43b4d8b803a680236b24794e5f9","impliedFormat":1},{"version":"0a839dba0287cc0481ad4beedd48a1c64acf1e212ae865d1315f7007ca215161","impliedFormat":1},{"version":"38dc4655376cd1a4bd6bb3763d92949233e33d38d3dd3cbea7bbf218175a38ef","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"d61e0a64cd175208ac0b83670151a9a6b5916f0d1ffcdc5c29c90b1cebfc5045","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"48a679952eefe4cb776d5a0e1ccba2d3eb53b57448bbb7abc1fcebcbd5440188","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2d14da6ecb49bf828d83948765ec2d3a579d476bbb9645e749610baa6ec880ca","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"0aef708fb4c7a6b915e8305cbfac40cd207b032dbaabe9a01889a5fff3254681","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"ad9bdafb4e7abf14cc53ce7970486a84c87831e62891e5dfe798ddcd55e84701","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"71d3ae6a5e73ca4130762560425e00984ebaff64d5353a3333d1bb7eb86ef336","impliedFormat":1},{"version":"90ac19cb97ae85c7ccfd0c04322b02ce088bda9de7b42cc081cbb3674fe5446d","impliedFormat":1}],"root":[[186,200],210],"options":{"composite":true,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"module":99,"outDir":"./","rootDir":"../src","skipLibCheck":true,"strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[48,1],[49,1],[50,2],[263,3],[264,3],[265,4],[216,5],[266,6],[267,7],[268,8],[211,1],[214,9],[212,1],[213,1],[269,10],[270,11],[271,12],[272,13],[273,14],[274,15],[275,15],[276,16],[277,17],[278,18],[279,19],[217,1],[215,1],[280,20],[281,21],[282,22],[316,23],[283,24],[284,1],[285,25],[286,26],[287,27],[288,28],[289,29],[290,30],[291,31],[292,32],[293,33],[294,33],[295,34],[296,1],[297,35],[298,36],[300,37],[299,38],[301,39],[302,40],[303,41],[304,42],[305,43],[306,44],[307,45],[308,46],[309,47],[310,48],[311,49],[312,50],[313,51],[218,1],[219,1],[220,1],[259,52],[260,1],[261,1],[262,39],[314,53],[315,54],[317,55],[52,1],[221,1],[54,56],[51,57],[55,1],[53,58],[56,59],[46,1],[47,1],[8,1],[9,1],[11,1],[10,1],[2,1],[12,1],[13,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[3,1],[20,1],[21,1],[4,1],[22,1],[26,1],[23,1],[24,1],[25,1],[27,1],[28,1],[29,1],[5,1],[30,1],[31,1],[32,1],[33,1],[6,1],[37,1],[34,1],[35,1],[36,1],[38,1],[7,1],[39,1],[44,1],[45,1],[40,1],[41,1],[42,1],[43,1],[1,1],[237,60],[247,61],[236,60],[257,62],[228,63],[227,64],[256,65],[250,66],[255,67],[230,68],[244,69],[229,70],[253,71],[225,72],[224,65],[254,73],[226,74],[231,75],[232,1],[235,75],[222,1],[258,76],[248,77],[239,78],[240,79],[242,80],[238,81],[241,82],[251,65],[233,83],[234,84],[243,85],[223,86],[246,77],[245,75],[249,1],[252,87],[136,88],[130,89],[134,90],[131,90],[127,89],[135,91],[132,92],[133,90],[128,93],[129,94],[123,95],[64,96],[66,97],[122,1],[65,98],[126,99],[125,100],[124,101],[57,1],[67,96],[68,1],[59,102],[63,103],[58,1],[60,104],[61,105],[62,1],[69,106],[70,106],[71,106],[72,106],[73,106],[74,106],[75,106],[76,106],[77,106],[78,106],[79,106],[80,106],[81,106],[82,106],[84,106],[83,106],[85,106],[86,106],[87,106],[88,106],[89,106],[121,107],[90,106],[91,106],[92,106],[93,106],[94,106],[95,106],[96,106],[97,106],[98,106],[99,106],[100,106],[101,106],[102,106],[104,106],[103,106],[105,106],[106,106],[107,106],[108,106],[109,106],[110,106],[111,106],[112,106],[113,106],[114,106],[115,106],[116,106],[117,106],[120,106],[118,106],[119,106],[204,108],[205,109],[207,1],[208,110],[209,111],[206,112],[179,1],[154,113],[153,114],[183,115],[182,116],[161,117],[139,1],[142,118],[148,119],[141,1],[138,1],[140,1],[173,120],[174,1],[184,1],[185,121],[177,1],[178,122],[175,1],[176,123],[146,124],[162,125],[202,1],[159,126],[163,127],[155,128],[203,129],[160,130],[156,1],[165,131],[157,1],[170,132],[164,133],[137,134],[158,135],[201,136],[169,137],[144,114],[150,138],[149,139],[152,140],[168,141],[143,142],[147,143],[145,136],[171,130],[151,124],[166,124],[167,144],[181,1],[180,1],[172,145],[189,146],[197,147],[191,148],[192,149],[193,148],[194,150],[195,149],[188,151],[196,149],[190,152],[200,153],[187,151],[186,1],[198,152],[199,154],[210,155]],"latestChangedDtsFile":"./test-fixtures/wte-scene.d.ts","version":"5.9.3"}
@@ -0,0 +1,26 @@
1
+ import { type Prng } from '../prng';
2
+ import type { TagGenerator } from './types';
3
+ export interface BlinkBindingLike {
4
+ tag: string;
5
+ min?: number;
6
+ max?: number;
7
+ }
8
+ /**
9
+ * `blink`: occasional toggles (Task 1) between an "off" rate (`min`,
10
+ * default 0 — no registered blink animation runs at rate 0) and an "on"
11
+ * rate (`max`, default 1 — a plain playback rate since core's own
12
+ * blink-rate ceiling lives in `@vscada/primitives`, which this AD-10-bound
13
+ * package cannot import), mostly dwelling off.
14
+ */
15
+ export declare class BlinkGenerator implements TagGenerator {
16
+ private readonly prng;
17
+ readonly tag: string;
18
+ private readonly offValue;
19
+ private readonly onValue;
20
+ private on;
21
+ private dwellRemainingMs;
22
+ constructor(prng: Prng, binding: BlinkBindingLike);
23
+ step(dtMs: number): number;
24
+ private toggle;
25
+ }
26
+ //# sourceMappingURL=blink-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blink-generator.d.ts","sourceRoot":"","sources":["../../src/generators/blink-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAKD;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,YAAY;IAQ/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,gBAAgB,CAAS;gBAGd,IAAI,EAAE,IAAI,EAC3B,OAAO,EAAE,gBAAgB;IAQ3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAM1B,OAAO,CAAC,MAAM;CAKf"}
@@ -0,0 +1,14 @@
1
+ import { type Scene } from '@vscada/core';
2
+ import type { Prng } from '../prng';
3
+ import type { TagGenerator } from './types';
4
+ /**
5
+ * Story 5.2 Task 1 — the inference step: walks the tag inventory and
6
+ * builds one stateful generator per tag, dispatched purely by the tag's
7
+ * OWN declared binding type (Dev Notes: "the scene tells us what a tag
8
+ * means"). Two passes: `state` generators build first (pass 1) so
9
+ * `rotate`/`flow`/`emission` (pass 2) can wire a live follow-signal to an
10
+ * already-constructed sibling/upstream state generator within the same
11
+ * call — never a second scene walk.
12
+ */
13
+ export declare function buildGenerators(scene: Scene, prng: Prng): Map<string, TagGenerator>;
14
+ //# sourceMappingURL=build-generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-generators.d.ts","sourceRoot":"","sources":["../../src/generators/build-generators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,KAAK,EAAsC,MAAM,cAAc,CAAC;AAClG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAQpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAkD5C;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAkEnF"}
@@ -0,0 +1,27 @@
1
+ import type { Prng } from '../prng';
2
+ import type { TagGenerator } from './types';
3
+ export interface RangeBindingLike {
4
+ tag: string;
5
+ min: number;
6
+ max: number;
7
+ }
8
+ /**
9
+ * `readout`/`needle`/`color-ramp`: a plain bounded random walk around its
10
+ * range's midpoint (Task 1's "drifting process values in range"). No
11
+ * regime switching (unlike `level`) — these binding types have no
12
+ * declared alarm thresholds to excurse toward, just a process value that
13
+ * wanders continuously within its declared range. Also the fallback for
14
+ * `rotate`/`flow`/`emission` when no linked state tag is found
15
+ * (`ramp-generator.ts`).
16
+ */
17
+ export declare class DriftGenerator implements TagGenerator {
18
+ private readonly prng;
19
+ readonly tag: string;
20
+ private readonly min;
21
+ private readonly max;
22
+ private readonly center;
23
+ private value;
24
+ constructor(prng: Prng, binding: RangeBindingLike);
25
+ step(dtMs: number): number;
26
+ }
27
+ //# sourceMappingURL=drift-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift-generator.d.ts","sourceRoot":"","sources":["../../src/generators/drift-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAKD;;;;;;;;GAQG;AACH,qBAAa,cAAe,YAAW,YAAY;IAQ/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,KAAK,CAAS;gBAGH,IAAI,EAAE,IAAI,EAC3B,OAAO,EAAE,gBAAgB;IAS3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAI3B"}
@@ -0,0 +1,31 @@
1
+ import type { Threshold } from '@vscada/core';
2
+ import { type Prng } from '../prng';
3
+ import type { TagGenerator } from './types';
4
+ export interface LevelBindingLike {
5
+ tag: string;
6
+ min: number;
7
+ max: number;
8
+ }
9
+ /**
10
+ * `level`: bounded random walk biased inside its declared thresholds, with
11
+ * occasional deliberate excursions into an alarm band (Task 1) — a tank
12
+ * that mostly sits mid-range but periodically drifts low or high enough to
13
+ * demo the alarm/quality visuals, then returns to normal. A binding with
14
+ * no declared thresholds degrades to a plain bounded drift around the
15
+ * range's midpoint (no side to excurse toward).
16
+ */
17
+ export declare class LevelGenerator implements TagGenerator {
18
+ private readonly prng;
19
+ readonly tag: string;
20
+ private readonly min;
21
+ private readonly max;
22
+ private readonly targets;
23
+ private value;
24
+ private regime;
25
+ private regimeRemainingMs;
26
+ constructor(prng: Prng, binding: LevelBindingLike, thresholds: readonly Threshold[]);
27
+ step(dtMs: number): number;
28
+ private currentTarget;
29
+ private rerollRegime;
30
+ }
31
+ //# sourceMappingURL=level-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-generator.d.ts","sourceRoot":"","sources":["../../src/generators/level-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAA2B,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AA2CD;;;;;;;GAOG;AACH,qBAAa,cAAe,YAAW,YAAY;IAU/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IATvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,iBAAiB,CAAS;gBAGf,IAAI,EAAE,IAAI,EAC3B,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,SAAS,SAAS,EAAE;IAUlC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAe1B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,YAAY;CAQrB"}
@@ -0,0 +1,28 @@
1
+ import { type Prng } from '../prng';
2
+ import type { TagGenerator } from './types';
3
+ export interface RangeBindingLike {
4
+ tag: string;
5
+ min: number;
6
+ max: number;
7
+ }
8
+ /**
9
+ * `position`: commanded strokes to random setpoints at valve-speed (Task
10
+ * 1) — periodically picks a new target (mostly the two extremes, sometimes
11
+ * mid-range) and rate-limits the approach to it, so the value never jumps,
12
+ * only strokes continuously toward its commanded setpoint.
13
+ */
14
+ export declare class PositionGenerator implements TagGenerator {
15
+ private readonly prng;
16
+ readonly tag: string;
17
+ private readonly min;
18
+ private readonly max;
19
+ private value;
20
+ private target;
21
+ private rampRatePerMs;
22
+ private dwellRemainingMs;
23
+ constructor(prng: Prng, binding: RangeBindingLike);
24
+ step(dtMs: number): number;
25
+ private rerollTarget;
26
+ private rollRampRate;
27
+ }
28
+ //# sourceMappingURL=position-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"position-generator.d.ts","sourceRoot":"","sources":["../../src/generators/position-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAQD;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,YAAY;IAUlD,OAAO,CAAC,QAAQ,CAAC,IAAI;IATvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;gBAGd,IAAI,EAAE,IAAI,EAC3B,OAAO,EAAE,gBAAgB;IAW3B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAO1B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,YAAY;CAGrB"}
@@ -0,0 +1,31 @@
1
+ import { type Prng } from '../prng';
2
+ import { type RangeBindingLike } from './drift-generator';
3
+ import type { TagGenerator } from './types';
4
+ /** Reads a linked element's current logical activity — almost always `() => someStateGenerator.isActive`, wired up in `build-generators.ts`. */
5
+ export type ActivitySignal = () => boolean;
6
+ /**
7
+ * `rotate`/`flow`/`emission`: follows a linked `state` tag when topology
8
+ * (or same-element sibling bindings) connects them — Task 1's "a stopped
9
+ * pump's flow tags decay". Ramps (never jumps) toward a randomized
10
+ * upper-range target while the linked equipment is active, and decays
11
+ * toward `min` while it's not. With no linked state tag at all (an
12
+ * unconnected instrument, or a scene that doesn't declare topology), falls
13
+ * back to `DriftGenerator`'s independent bounded wander — still bounded
14
+ * and continuous, just not state-driven.
15
+ */
16
+ export declare class RampGenerator implements TagGenerator {
17
+ private readonly prng;
18
+ readonly tag: string;
19
+ private readonly min;
20
+ private readonly max;
21
+ private readonly isUpstreamActive;
22
+ private readonly fallbackDrift;
23
+ private readonly rampRatePerMs;
24
+ private value;
25
+ private activeTarget;
26
+ private targetRerollRemainingMs;
27
+ constructor(prng: Prng, binding: RangeBindingLike, isUpstreamActive?: ActivitySignal);
28
+ step(dtMs: number): number;
29
+ private rollActiveTarget;
30
+ }
31
+ //# sourceMappingURL=ramp-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ramp-generator.d.ts","sourceRoot":"","sources":["../../src/generators/ramp-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,gJAAgJ;AAChJ,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC;AAO3C;;;;;;;;;GASG;AACH,qBAAa,aAAc,YAAW,YAAY;IAY9C,OAAO,CAAC,QAAQ,CAAC,IAAI;IAXvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,uBAAuB,CAAS;gBAGrB,IAAI,EAAE,IAAI,EAC3B,OAAO,EAAE,gBAAgB,EACzB,gBAAgB,CAAC,EAAE,cAAc;IAanC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAe1B,OAAO,CAAC,gBAAgB;CAIzB"}
@@ -0,0 +1,30 @@
1
+ import type { TagValue } from '@vscada/core';
2
+ import { type Prng } from '../prng';
3
+ import type { TagGenerator } from './types';
4
+ export interface StateBindingLike {
5
+ tag: string;
6
+ map: Record<string, string>;
7
+ }
8
+ /**
9
+ * Cyclic state-machine walk with realistic dwell times (Task 1): long
10
+ * stretches of 'active' (a pump's normal running condition), occasional
11
+ * short 'stopped' dwells, and rare 'fault' excursions — every OTHER
12
+ * generator that "follows" a state tag (`ramp-generator.ts`) reads this
13
+ * generator's `isActive` after each `step()`.
14
+ */
15
+ export declare class StateGenerator implements TagGenerator {
16
+ private readonly prng;
17
+ readonly tag: string;
18
+ private readonly buckets;
19
+ private readonly keyByStateName;
20
+ private bucket;
21
+ private stateName;
22
+ private dwellRemainingMs;
23
+ constructor(prng: Prng, binding: StateBindingLike);
24
+ /** The signal `rotate`/`flow`/`emission` generators follow (Task 1: "follow their upstream state tags when topology links them"). */
25
+ get isActive(): boolean;
26
+ step(dtMs: number): TagValue['value'];
27
+ private transition;
28
+ private enter;
29
+ }
30
+ //# sourceMappingURL=state-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-generator.d.ts","sourceRoot":"","sources":["../../src/generators/state-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAA2B,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAoDD;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,YAAY;IAS/C,OAAO,CAAC,QAAQ,CAAC,IAAI;IARvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAS;gBAGd,IAAI,EAAE,IAAI,EAC3B,OAAO,EAAE,gBAAgB;IAU3B,qIAAqI;IACrI,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;IAOrC,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,KAAK;CAKd"}
@@ -0,0 +1,8 @@
1
+ import type { TagValue } from '@vscada/core';
2
+ /** One tag's stateful value generator — constructed once per simulator run, then advanced tick by tick. Every concrete generator in this directory implements this. */
3
+ export interface TagGenerator {
4
+ readonly tag: string;
5
+ /** Advances internal state by `dtMs` of simulated time and returns the CURRENT value to push for this tag. */
6
+ step(dtMs: number): TagValue['value'];
7
+ }
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/generators/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,uKAAuK;AACvK,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,8GAA8G;IAC9G,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;CACvC"}
@@ -0,0 +1,26 @@
1
+ import type { TagValue } from '@vscada/core';
2
+ import { type Prng } from '../prng';
3
+ import type { TagGenerator } from './types';
4
+ export interface VisibilityBindingLike {
5
+ tag: string;
6
+ map?: Record<string, boolean>;
7
+ }
8
+ /**
9
+ * `visibility`: occasional toggles (Task 1) between shown and hidden. With
10
+ * a declared `map`, emits one of the raw keys that resolve to `true`/
11
+ * `false` (mirrors `state`'s key round-trip, `resolveVisibilityFlag`'s
12
+ * lookup); with no map, `resolveVisibilityFlag` falls back to
13
+ * `Boolean(value)`, so this pushes the boolean directly.
14
+ */
15
+ export declare class VisibilityGenerator implements TagGenerator {
16
+ private readonly prng;
17
+ readonly tag: string;
18
+ private readonly trueKeys;
19
+ private readonly falseKeys;
20
+ private visible;
21
+ private dwellRemainingMs;
22
+ constructor(prng: Prng, binding: VisibilityBindingLike);
23
+ step(dtMs: number): TagValue['value'];
24
+ private toggle;
25
+ }
26
+ //# sourceMappingURL=visibility-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visibility-generator.d.ts","sourceRoot":"","sources":["../../src/generators/visibility-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAmB,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAKD;;;;;;GAMG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IAQpD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,gBAAgB,CAAS;gBAGd,IAAI,EAAE,IAAI,EAC3B,OAAO,EAAE,qBAAqB;IAShC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;IASrC,OAAO,CAAC,MAAM;CAKf"}
@@ -0,0 +1,19 @@
1
+ import { type Prng } from '../prng';
2
+ export declare function clamp(value: number, min: number, max: number): number;
3
+ /**
4
+ * Shared bounded random-walk-with-mean-reversion step — the math every
5
+ * continuous generator (level/drift/ramp) is built on. Reverts toward
6
+ * `target` at `reversionPerSec` (fraction of the remaining gap closed per
7
+ * simulated second), perturbed by noise scaled to `noiseFraction` of the
8
+ * `[min, max]` range, then clamped so a caller never has to re-check
9
+ * bounds itself.
10
+ */
11
+ export declare function walkToward(prng: Prng, current: number, target: number, min: number, max: number, options: {
12
+ noiseFraction: number;
13
+ reversionPerSec: number;
14
+ }, dtMs: number): number;
15
+ /** Rate-limited approach toward `target` — the "continuous, never a jump" math `position`/`rotate`/`flow` share (a valve stroking, a pump's flow decaying). */
16
+ export declare function rampToward(current: number, target: number, maxDeltaPerMs: number, dtMs: number): number;
17
+ /** `state`/`visibility` raw map keys round-trip as numbers when they parse cleanly (the common device-code convention, e.g. `'0'`/`'1'`); anything else stays the literal string. */
18
+ export declare function keyToValue(key: string): number | string;
19
+ //# sourceMappingURL=walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walk.d.ts","sourceRoot":"","sources":["../../src/generators/walk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,SAAS,CAAC;AAE3C,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,EAC3D,IAAI,EAAE,MAAM,GACX,MAAM,CAMR;AAED,+JAA+J;AAC/J,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKvG;AAED,qLAAqL;AACrL,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,4 @@
1
+ export declare const VERSION = "0.0.0";
2
+ export { createSimulator, type Simulator, type SimulatorOptions } from './simulator';
3
+ export type { QualityBlipBandOptions, QualityBlipOptions, TagQualityState } from './quality';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACrF,YAAY,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,378 @@
1
+ import { buildTopologyGraph as e } from "@vscada/core";
2
+ //#region src/inventory.ts
3
+ function t(e) {
4
+ return e.type === "off-page";
5
+ }
6
+ function n(e) {
7
+ let n = /* @__PURE__ */ new Map(), r = [], i = (e) => {
8
+ let t = n.get(e.tag);
9
+ t || (t = [], n.set(e.tag, t), r.push(e.tag)), t.push(e);
10
+ };
11
+ for (let n of e.elements) {
12
+ if (t(n)) continue;
13
+ let e = n;
14
+ for (let t of e.bindings) {
15
+ let n = e.thresholds.filter((e) => e.tag === t.tag);
16
+ i({
17
+ tag: t.tag,
18
+ binding: t,
19
+ ownerId: e.id,
20
+ ownerKind: "element",
21
+ thresholds: n
22
+ });
23
+ }
24
+ }
25
+ for (let t of e.connections) for (let e of t.bindings) i({
26
+ tag: e.tag,
27
+ binding: e,
28
+ ownerId: t.id,
29
+ ownerKind: "connection",
30
+ thresholds: []
31
+ });
32
+ for (let t of e.groups) for (let e of t.summaryTags) n.has(e) || (n.set(e, []), r.push(e));
33
+ let a = /* @__PURE__ */ new Map();
34
+ for (let e of r) a.set(e, {
35
+ tag: e,
36
+ refs: n.get(e) ?? []
37
+ });
38
+ return {
39
+ tags: r,
40
+ byTag: a
41
+ };
42
+ }
43
+ //#endregion
44
+ //#region src/prng.ts
45
+ function r(e) {
46
+ let t = e >>> 0;
47
+ return function() {
48
+ t = t + 1831565813 | 0;
49
+ let e = Math.imul(t ^ t >>> 15, 1 | t);
50
+ return e = e + Math.imul(e ^ e >>> 7, 61 | e) ^ e, ((e ^ e >>> 14) >>> 0) / 4294967296;
51
+ };
52
+ }
53
+ function i(e, t, n) {
54
+ return t + e() * (n - t);
55
+ }
56
+ function a(e, t, n) {
57
+ return Math.floor(i(e, t, n + 1));
58
+ }
59
+ function o(e, t) {
60
+ return e() < t;
61
+ }
62
+ function s(e, t) {
63
+ return t[a(e, 0, t.length - 1)];
64
+ }
65
+ function c(e) {
66
+ return i(e, -1, 1);
67
+ }
68
+ //#endregion
69
+ //#region src/generators/blink-generator.ts
70
+ var l = [1e4, 6e4], u = [2e3, 8e3], d = class {
71
+ constructor(e, t) {
72
+ this.prng = e, this.on = !1, this.tag = t.tag, this.offValue = t.min ?? 0, this.onValue = t.max ?? 1, this.dwellRemainingMs = i(e, l[0], l[1]);
73
+ }
74
+ step(e) {
75
+ return this.dwellRemainingMs -= e, this.dwellRemainingMs <= 0 && this.toggle(), this.on ? this.onValue : this.offValue;
76
+ }
77
+ toggle() {
78
+ this.on = !this.on;
79
+ let e = this.on ? u : l;
80
+ this.dwellRemainingMs = i(this.prng, e[0], e[1]);
81
+ }
82
+ };
83
+ //#endregion
84
+ //#region src/generators/walk.ts
85
+ function f(e, t, n) {
86
+ return Math.min(Math.max(e, t), n);
87
+ }
88
+ function p(e, t, n, r, i, a, o) {
89
+ let s = i - r, l = o / 1e3, u = c(e) * a.noiseFraction * s * l, d = (n - t) * Math.min(1, a.reversionPerSec * l);
90
+ return f(t + u + d, r, i);
91
+ }
92
+ function m(e, t, n, r) {
93
+ let i = n * r, a = t - e;
94
+ return Math.abs(a) <= i ? t : e + Math.sign(a) * i;
95
+ }
96
+ function h(e) {
97
+ return /^-?\d+(\.\d+)?$/.test(e) ? Number(e) : e;
98
+ }
99
+ //#endregion
100
+ //#region src/generators/drift-generator.ts
101
+ var g = .06, _ = .1, v = class {
102
+ constructor(e, t) {
103
+ this.prng = e, this.tag = t.tag, this.min = t.min, this.max = t.max, this.center = (t.min + t.max) / 2, this.value = this.center;
104
+ }
105
+ step(e) {
106
+ return this.value = p(this.prng, this.value, this.center, this.min, this.max, {
107
+ noiseFraction: g,
108
+ reversionPerSec: _
109
+ }, e), this.value;
110
+ }
111
+ }, y = [2e4, 9e4], b = .05, x = .15, S = .2, C = .08;
112
+ function w(e, t, n) {
113
+ let r = n.filter((e) => e.direction === "below").map((e) => e.value), i = n.filter((e) => e.direction === "above").map((e) => e.value), a = t - e, o = r.length > 0 ? Math.max(...r) : e, s = r.length > 0 ? Math.min(...r) : e, c = i.length > 0 ? Math.min(...i) : t, l = i.length > 0 ? Math.max(...i) : t;
114
+ return {
115
+ normalCenter: (o + c) / 2,
116
+ lowExcursionTarget: f(s - a * C, e, t),
117
+ highExcursionTarget: f(l + a * C, e, t),
118
+ hasBelow: r.length > 0,
119
+ hasAbove: i.length > 0
120
+ };
121
+ }
122
+ var T = class {
123
+ constructor(e, t, n) {
124
+ this.prng = e, this.regime = "normal", this.tag = t.tag, this.min = t.min, this.max = t.max, this.targets = w(this.min, this.max, n), this.value = this.targets.normalCenter, this.regimeRemainingMs = i(e, y[0], y[1]);
125
+ }
126
+ step(e) {
127
+ return this.regimeRemainingMs -= e, this.regimeRemainingMs <= 0 && this.rerollRegime(), this.value = p(this.prng, this.value, this.currentTarget(), this.min, this.max, {
128
+ noiseFraction: b,
129
+ reversionPerSec: x
130
+ }, e), this.value;
131
+ }
132
+ currentTarget() {
133
+ return this.regime === "low" ? this.targets.lowExcursionTarget : this.regime === "high" ? this.targets.highExcursionTarget : this.targets.normalCenter;
134
+ }
135
+ rerollRegime() {
136
+ let e = [];
137
+ this.targets.hasBelow && e.push("low"), this.targets.hasAbove && e.push("high"), this.regime = e.length > 0 && o(this.prng, S) ? s(this.prng, e) : "normal", this.regimeRemainingMs = i(this.prng, y[0], y[1]);
138
+ }
139
+ }, E = [5e3, 3e4], D = [2e3, 6e3], ee = .8, O = class {
140
+ constructor(e, t) {
141
+ this.prng = e, this.tag = t.tag, this.min = t.min, this.max = t.max, this.value = t.min, this.target = this.value, this.rampRatePerMs = this.rollRampRate(), this.dwellRemainingMs = i(e, E[0], E[1]);
142
+ }
143
+ step(e) {
144
+ return this.dwellRemainingMs -= e, this.dwellRemainingMs <= 0 && this.rerollTarget(), this.value = m(this.value, this.target, this.rampRatePerMs, e), this.value;
145
+ }
146
+ rerollTarget() {
147
+ this.target = o(this.prng, ee) ? s(this.prng, [this.min, this.max]) : i(this.prng, this.min, this.max), this.rampRatePerMs = this.rollRampRate(), this.dwellRemainingMs = i(this.prng, E[0], E[1]);
148
+ }
149
+ rollRampRate() {
150
+ return (this.max - this.min) / i(this.prng, D[0], D[1]);
151
+ }
152
+ }, k = [2e3, 6e3], A = [.6, 1], j = [1e4, 4e4], M = .02, N = class {
153
+ constructor(e, t, n) {
154
+ this.prng = e, this.tag = t.tag, this.min = t.min, this.max = t.max, this.isUpstreamActive = n, this.fallbackDrift = n ? void 0 : new v(e, t), this.rampRatePerMs = (this.max - this.min) / i(e, k[0], k[1]), this.value = this.min, this.activeTarget = this.rollActiveTarget(), this.targetRerollRemainingMs = i(e, j[0], j[1]);
155
+ }
156
+ step(e) {
157
+ if (!this.isUpstreamActive) return this.fallbackDrift.step(e);
158
+ this.targetRerollRemainingMs -= e, this.targetRerollRemainingMs <= 0 && (this.activeTarget = this.rollActiveTarget(), this.targetRerollRemainingMs = i(this.prng, j[0], j[1]));
159
+ let t = this.isUpstreamActive() ? this.activeTarget : this.min, n = m(this.value, t, this.rampRatePerMs, e);
160
+ return this.value = f(n + c(this.prng) * M * (this.max - this.min) * (e / 1e3), this.min, this.max), this.value;
161
+ }
162
+ rollActiveTarget() {
163
+ let e = this.max - this.min;
164
+ return i(this.prng, this.min + e * A[0], this.min + e * A[1]);
165
+ }
166
+ }, P = /trip|fault|alarm|fail/i, F = /stop|off|closed|idle/i;
167
+ function I(e) {
168
+ let t = {
169
+ active: [],
170
+ stopped: [],
171
+ fault: []
172
+ }, n = /* @__PURE__ */ new Map();
173
+ for (let [r, i] of Object.entries(e)) n.set(i, r), P.test(i) ? t.fault.push(i) : F.test(i) ? t.stopped.push(i) : t.active.push(i);
174
+ if (t.active.length === 0) {
175
+ let [, n] = Object.entries(e)[0];
176
+ t.active.push(n);
177
+ }
178
+ return {
179
+ buckets: t,
180
+ keyByStateName: n
181
+ };
182
+ }
183
+ var L = [3e4, 3e5], R = [1e4, 6e4], z = [5e3, 2e4], B = .08, V = class {
184
+ constructor(e, t) {
185
+ this.prng = e, this.bucket = "active", this.tag = t.tag;
186
+ let n = I(t.map);
187
+ this.buckets = n.buckets, this.keyByStateName = n.keyByStateName, this.stateName = s(e, this.buckets.active), this.dwellRemainingMs = i(e, ...L);
188
+ }
189
+ get isActive() {
190
+ return this.bucket === "active";
191
+ }
192
+ step(e) {
193
+ return this.dwellRemainingMs -= e, this.dwellRemainingMs <= 0 && this.transition(), h(this.keyByStateName.get(this.stateName) ?? this.stateName);
194
+ }
195
+ transition() {
196
+ this.bucket === "active" ? this.buckets.fault.length > 0 && o(this.prng, B) ? this.enter("fault", s(this.prng, this.buckets.fault), z) : this.buckets.stopped.length > 0 ? this.enter("stopped", s(this.prng, this.buckets.stopped), R) : this.enter("active", s(this.prng, this.buckets.active), L) : this.enter("active", s(this.prng, this.buckets.active), L);
197
+ }
198
+ enter(e, t, n) {
199
+ this.bucket = e, this.stateName = t, this.dwellRemainingMs = i(this.prng, n[0], n[1]);
200
+ }
201
+ }, H = [15e3, 9e4], U = [5e3, 3e4], W = class {
202
+ constructor(e, t) {
203
+ this.prng = e, this.visible = !0, this.tag = t.tag;
204
+ let n = Object.entries(t.map ?? {});
205
+ this.trueKeys = n.filter(([, e]) => e).map(([e]) => e), this.falseKeys = n.filter(([, e]) => !e).map(([e]) => e), this.dwellRemainingMs = i(e, H[0], H[1]);
206
+ }
207
+ step(e) {
208
+ if (this.dwellRemainingMs -= e, this.dwellRemainingMs <= 0 && this.toggle(), this.trueKeys.length === 0 && this.falseKeys.length === 0) return this.visible;
209
+ let t = this.visible ? this.trueKeys.length > 0 ? this.trueKeys : this.falseKeys : this.falseKeys.length > 0 ? this.falseKeys : this.trueKeys;
210
+ return h(s(this.prng, t));
211
+ }
212
+ toggle() {
213
+ this.visible = !this.visible;
214
+ let e = this.visible ? H : U;
215
+ this.dwellRemainingMs = i(this.prng, e[0], e[1]);
216
+ }
217
+ }, G = {
218
+ min: 0,
219
+ max: 100
220
+ }, K = .2;
221
+ function q(e) {
222
+ if (e.length === 0) return G;
223
+ let t = e.map((e) => e.value), n = Math.min(...t), r = Math.max(...t), i = Math.max(r - n, 1) * K;
224
+ return {
225
+ min: n - i,
226
+ max: r + i
227
+ };
228
+ }
229
+ function J(e, t, n) {
230
+ if (e.ownerKind === "element") {
231
+ let r = n.get(e.ownerId);
232
+ if (r) return () => r.isActive;
233
+ let i = t.incoming.get(e.ownerId)?.[0]?.from, a = i ? n.get(i) : void 0;
234
+ return a ? () => a.isActive : void 0;
235
+ }
236
+ let r = t.edgeById.get(e.ownerId)?.from, i = r ? n.get(r) : void 0;
237
+ return i ? () => i.isActive : void 0;
238
+ }
239
+ function Y(t, r) {
240
+ let i = n(t), a = e(t), o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map();
241
+ for (let e of i.tags) {
242
+ let t = i.byTag.get(e).refs[0];
243
+ if (!t || t.binding.type !== "state") continue;
244
+ let n = new V(r, {
245
+ tag: e,
246
+ map: t.binding.map
247
+ });
248
+ o.set(e, n), t.ownerKind === "element" && s.set(t.ownerId, n);
249
+ }
250
+ for (let e of i.tags) {
251
+ if (o.has(e)) continue;
252
+ let t = i.byTag.get(e).refs[0];
253
+ if (!t) continue;
254
+ let n = t.binding;
255
+ switch (n.type) {
256
+ case "level":
257
+ o.set(e, new T(r, n, t.thresholds));
258
+ break;
259
+ case "position":
260
+ o.set(e, new O(r, n));
261
+ break;
262
+ case "rotate":
263
+ case "flow":
264
+ case "emission":
265
+ o.set(e, new N(r, n, J(t, a, s)));
266
+ break;
267
+ case "readout":
268
+ o.set(e, new v(r, {
269
+ tag: e,
270
+ ...q(t.thresholds)
271
+ }));
272
+ break;
273
+ case "needle":
274
+ case "color-ramp":
275
+ o.set(e, new v(r, n));
276
+ break;
277
+ case "blink":
278
+ o.set(e, new d(r, n));
279
+ break;
280
+ case "visibility":
281
+ o.set(e, new W(r, n));
282
+ break;
283
+ case "state": break;
284
+ }
285
+ }
286
+ let c = /* @__PURE__ */ new Map();
287
+ for (let e of i.tags) {
288
+ let t = o.get(e);
289
+ t && c.set(e, t);
290
+ }
291
+ return c;
292
+ }
293
+ //#endregion
294
+ //#region src/quality.ts
295
+ var X = {
296
+ meanIntervalMs: 15e4,
297
+ durationMs: [3e3, 8e3]
298
+ }, Z = {
299
+ meanIntervalMs: 2e5,
300
+ durationMs: [12e3, 25e3]
301
+ };
302
+ function Q(e, t) {
303
+ return {
304
+ meanIntervalMs: e?.meanIntervalMs ?? t.meanIntervalMs,
305
+ durationMs: e?.durationMs ?? t.durationMs
306
+ };
307
+ }
308
+ function $(e, t) {
309
+ return i(e, t * .5, t * 1.5);
310
+ }
311
+ var te = class {
312
+ constructor(e, t) {
313
+ this.prng = e, this.state = "good", this.remainingMs = 0, this.enabled = t?.enabled ?? !0, this.bad = Q(t?.badQuality, X), this.stale = Q(t?.stale, Z), this.nextBadInMs = $(e, this.bad.meanIntervalMs), this.nextStaleInMs = $(e, this.stale.meanIntervalMs);
314
+ }
315
+ step(e) {
316
+ if (!this.enabled) return "good";
317
+ if (this.state !== "good") {
318
+ if (this.remainingMs -= e, this.remainingMs > 0) return this.state;
319
+ this.state = "good";
320
+ }
321
+ this.nextBadInMs -= e, this.nextStaleInMs -= e;
322
+ let t = this.nextBadInMs <= 0, n = this.nextStaleInMs <= 0;
323
+ return t && (!n || this.nextBadInMs <= this.nextStaleInMs) ? this.enterBad() : n && this.enterStale(), this.state;
324
+ }
325
+ enterBad() {
326
+ this.state = "bad", this.remainingMs = i(this.prng, this.bad.durationMs[0], this.bad.durationMs[1]), this.nextBadInMs = $(this.prng, this.bad.meanIntervalMs);
327
+ }
328
+ enterStale() {
329
+ this.state = "stale", this.remainingMs = i(this.prng, this.stale.durationMs[0], this.stale.durationMs[1]), this.nextStaleInMs = $(this.prng, this.stale.meanIntervalMs);
330
+ }
331
+ }, ne = 1, re = 250, ie = 5e3;
332
+ function ae(e, t = {}) {
333
+ let n = r(t.seed ?? ne), i = Y(e, n), a = /* @__PURE__ */ new Map();
334
+ for (let e of i.keys()) a.set(e, new te(n, t.quality));
335
+ let o = t.rate ?? re, s = t.quality?.onConnectionDrop, c = t.startTimestamp ?? Date.now(), l, u = 0, d = !1;
336
+ function f(e) {
337
+ if (c += e, u > 0) {
338
+ u -= e;
339
+ for (let t of i.values()) t.step(e);
340
+ for (let t of a.values()) t.step(e);
341
+ return u <= 0 && (d = !1, s?.(!1)), [];
342
+ }
343
+ let t = [];
344
+ for (let [n, r] of i) {
345
+ let i = r.step(e), o = a.get(n).step(e);
346
+ o !== "stale" && t.push({
347
+ tag: n,
348
+ value: i,
349
+ quality: o === "bad" ? "bad" : "good",
350
+ timestamp: c
351
+ });
352
+ }
353
+ return t;
354
+ }
355
+ function p(e) {
356
+ l === void 0 && (l = setInterval(() => {
357
+ let t = f(o);
358
+ t.length > 0 && e(t);
359
+ }, o));
360
+ }
361
+ function m() {
362
+ l !== void 0 && (clearInterval(l), l = void 0);
363
+ }
364
+ function h(e = ie) {
365
+ u = e, d || (d = !0, s?.(!0));
366
+ }
367
+ return {
368
+ start: p,
369
+ stop: m,
370
+ step: f,
371
+ triggerConnectionDrop: h
372
+ };
373
+ }
374
+ //#endregion
375
+ //#region src/index.ts
376
+ var oe = "0.0.0";
377
+ //#endregion
378
+ export { oe as VERSION, ae as createSimulator };
@@ -0,0 +1,37 @@
1
+ import type { Binding, Scene, Threshold } from '@vscada/core';
2
+ /**
3
+ * Story 5.2 Task 1 — one occurrence of a tag being bound somewhere in the
4
+ * scene (an element's own binding, or a connection's `flow` binding). A
5
+ * tag CAN be bound more than once (rare, but not disallowed by the
6
+ * schema); every occurrence is kept so `buildTagInventory` never silently
7
+ * drops information, even though `build-generators.ts` only acts on the
8
+ * first (see its own doc for why that's the right call).
9
+ */
10
+ export interface TagBindingRef {
11
+ tag: string;
12
+ binding: Binding;
13
+ ownerId: string;
14
+ ownerKind: 'element' | 'connection';
15
+ /** Thresholds declared on the owning ELEMENT for this exact tag; always empty for a connection-owned binding (connections have no `thresholds` field). */
16
+ thresholds: readonly Threshold[];
17
+ }
18
+ export interface TagInventoryEntry {
19
+ tag: string;
20
+ /** Authoring order — the first ref is what `build-generators.ts` treats as authoritative for inference. Empty when the tag is only ever referenced via a group's `summaryTags` (see module doc). */
21
+ refs: readonly TagBindingRef[];
22
+ }
23
+ export interface SceneTagInventory {
24
+ /** Every discovered tag, first-seen order (elements, then connections, then group summaryTags) — the deterministic order every downstream `Map` built from this relies on for AC3. */
25
+ tags: readonly string[];
26
+ byTag: ReadonlyMap<string, TagInventoryEntry>;
27
+ }
28
+ /**
29
+ * Walks a scene's bindings/thresholds/summaryTags (Dev Notes) into a flat,
30
+ * deterministic tag inventory — the input every generator-inference step
31
+ * (`build-generators.ts`) and the simulator's own tag-iteration order (AC3
32
+ * determinism) is built from. Pure and read-only: never mutates the scene,
33
+ * never touches a clock (AD-4 spirit — this package isn't core, but the
34
+ * same discipline keeps it testable the same way).
35
+ */
36
+ export declare function buildTagInventory(scene: Scene): SceneTagInventory;
37
+ //# sourceMappingURL=inventory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../src/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAkB,KAAK,EAAgB,SAAS,EAAE,MAAM,cAAc,CAAC;AAExG;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,GAAG,YAAY,CAAC;IACpC,0JAA0J;IAC1J,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,oMAAoM;IACpM,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,sLAAsL;IACtL,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC/C;AAOD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,iBAAiB,CAqDjE"}
package/dist/prng.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Mulberry32 — a small, fast, seeded PRNG (no deps, per Story 5.2 Dev
3
+ * Notes). Deterministic: the same seed always produces the same sequence
4
+ * of `next()` outputs, which is what AC3's "fixed seed -> deterministic
5
+ * value sequence" ultimately rests on for every generator in this package.
6
+ */
7
+ export type Prng = () => number;
8
+ export declare function mulberry32(seed: number): Prng;
9
+ /** Uniform float in `[min, max)`. */
10
+ export declare function randRange(prng: Prng, min: number, max: number): number;
11
+ /** Uniform integer in `[min, max]` (inclusive both ends). */
12
+ export declare function randInt(prng: Prng, min: number, max: number): number;
13
+ /** `true` with probability `probability` (0..1). */
14
+ export declare function chance(prng: Prng, probability: number): boolean;
15
+ /** Uniformly picks one element of a non-empty array. */
16
+ export declare function pick<T>(prng: Prng, values: readonly T[]): T;
17
+ /** Signed unit noise in `[-1, 1)`, the shape every bounded-walk generator scales by its own step size. */
18
+ export declare function noise(prng: Prng): number;
19
+ //# sourceMappingURL=prng.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prng.d.ts","sourceRoot":"","sources":["../src/prng.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC;AAEhC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ7C;AAED,qCAAqC;AACrC,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,6DAA6D;AAC7D,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,oDAAoD;AACpD,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,wDAAwD;AACxD,wBAAgB,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,CAE3D;AAED,0GAA0G;AAC1G,wBAAgB,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAExC"}
@@ -0,0 +1,38 @@
1
+ import { type Prng } from './prng';
2
+ export type TagQualityState = 'good' | 'bad' | 'stale';
3
+ export interface QualityBlipBandOptions {
4
+ /** Average simulated time between blips of this kind, ms — the actual interval is jittered ±50% around it so tags don't all blip in lockstep. */
5
+ meanIntervalMs?: number;
6
+ /** How long one blip lasts, ms — drawn uniformly from this `[min, max]` range each time. */
7
+ durationMs?: readonly [number, number];
8
+ }
9
+ export interface QualityBlipOptions {
10
+ /** Master on/off switch. Default `true`. */
11
+ enabled?: boolean;
12
+ badQuality?: QualityBlipBandOptions;
13
+ stale?: QualityBlipBandOptions;
14
+ }
15
+ /**
16
+ * Per-tag quality-blip scheduler (Task 3): independently-timed 'bad'
17
+ * quality bursts and 'stale' (no-push) windows, each on its own jittered
18
+ * periodic timer. 'bad' and 'stale' are mutually exclusive per tag —
19
+ * whichever timer is due first wins; the other keeps counting down
20
+ * underneath and still fires on its own schedule once the current window
21
+ * ends. One instance per tag, constructed from the simulator's own seeded
22
+ * PRNG stream (AC3 determinism).
23
+ */
24
+ export declare class TagQualityScheduler {
25
+ private readonly prng;
26
+ private state;
27
+ private remainingMs;
28
+ private nextBadInMs;
29
+ private nextStaleInMs;
30
+ private readonly bad;
31
+ private readonly stale;
32
+ private readonly enabled;
33
+ constructor(prng: Prng, options: QualityBlipOptions | undefined);
34
+ step(dtMs: number): TagQualityState;
35
+ private enterBad;
36
+ private enterStale;
37
+ }
38
+ //# sourceMappingURL=quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../src/quality.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,iJAAiJ;IACjJ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,KAAK,CAAC,EAAE,sBAAsB,CAAC;CAChC;AAuBD;;;;;;;;GAQG;AACH,qBAAa,mBAAmB;IAU5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IATvB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;gBAGf,IAAI,EAAE,IAAI,EAC3B,OAAO,EAAE,kBAAkB,GAAG,SAAS;IASzC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAoBnC,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,UAAU;CAKnB"}
@@ -0,0 +1,59 @@
1
+ import type { Scene, TagValue } from '@vscada/core';
2
+ import { type QualityBlipOptions } from './quality';
3
+ export interface SimulatorOptions {
4
+ /** Same seed -> identical value sequence for the same `step()` calls (AC3). */
5
+ seed?: number;
6
+ /** Real-time tick interval for `start()`'s own scheduling loop, ms. Irrelevant to `step()`, which always advances by the caller's own `dtMs` — the deterministic path tests and 4.1 static-mode snapshots use (Dev Notes). */
7
+ rate?: number;
8
+ /** Task 3 — per-tag bad-quality/stale scheduling. Omit for the tuned defaults; `{enabled: false}` turns it off entirely (every value stays 'good', nothing ever skipped). */
9
+ quality?: QualityBlipOptions & {
10
+ onConnectionDrop?: (dropped: boolean) => void;
11
+ };
12
+ /**
13
+ * Anchors the epoch `timestamp` every pushed `TagValue` carries — real
14
+ * device data is stamped with real wall-clock time, so a live demo
15
+ * (`start()`) needs a realistic epoch, not a counter starting at 0 (a
16
+ * real `<scada-view>`'s staleness check would see every value as already
17
+ * ancient). Defaults to `Date.now()`, read exactly ONCE at construction
18
+ * (never per-tick — this package has no continuous clock dependency to
19
+ * inject, unlike core's `TimeSource`). Pass a fixed number (e.g. `0`)
20
+ * for full timestamp determinism in tests (AC3).
21
+ *
22
+ * AD-4 note (architecture-code-audit-2026-08-27): reviewed as a
23
+ * `Date.now()` call outside `TimeSource` and confirmed already-compliant
24
+ * in spirit — `@vscada/sim` is dev tooling (a data generator), not part
25
+ * of the runtime frame/animation pipeline AD-4's "one clock" rule
26
+ * targets, and this option already exists specifically so a caller can
27
+ * override it for full determinism. No code change made.
28
+ */
29
+ startTimestamp?: number;
30
+ }
31
+ export interface Simulator {
32
+ /** Begins a real-time push loop: calls `push` with every tag's current value every `rate` ms. Push-based against the component's own public `setValues`-shaped API (AD-10) — this module never imports `@vscada/core`'s `ScadaView` or touches its internals. */
33
+ start(push: (values: TagValue[]) => void): void;
34
+ stop(): void;
35
+ /** Manual advance by `dtMs` of simulated time — the deterministic path every test (and a static-mode snapshot) drives directly, bypassing `start()`'s real-time interval entirely. */
36
+ step(dtMs: number): TagValue[];
37
+ /**
38
+ * Task 3's "one scripted `connectionState` drop hook the caller can
39
+ * trigger": for `durationMs`, `step()` (and therefore `start()`'s own
40
+ * loop) pushes NOTHING at all — a total feed outage, distinct from a
41
+ * per-tag stale window. The sim never touches `connectionState` itself
42
+ * (it only knows `TagValue`s, not the component — AD-10); `onConnectionDrop`
43
+ * is this method's own callback seam for a caller that wants to mirror
44
+ * the drop onto `view.connectionState` itself. Re-triggering while
45
+ * already dropped extends the window; it does not fire the callback a
46
+ * second time.
47
+ */
48
+ triggerConnectionDrop(durationMs?: number): void;
49
+ }
50
+ /**
51
+ * Story 5.2 Task 2 — the simulator's runtime shape. Discovers/infers every
52
+ * tag's generator ONCE at construction (Task 1's `buildGenerators`), then
53
+ * exposes `start`/`stop` (real-time demo loop) and `step` (deterministic
54
+ * manual advance) over that same generator set and the same seeded PRNG
55
+ * stream — so a `step()`-driven test and a `start()`-driven live demo are
56
+ * never two different code paths, just two different callers of `step`.
57
+ */
58
+ export declare function createSimulator(scene: Scene, options?: SimulatorOptions): Simulator;
59
+ //# sourceMappingURL=simulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulator.d.ts","sourceRoot":"","sources":["../src/simulator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC/B,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8NAA8N;IAC9N,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6KAA6K;IAC7K,OAAO,CAAC,EAAE,kBAAkB,GAAG;QAAE,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,CAAC;IACjF;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,iQAAiQ;IACjQ,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAChD,IAAI,IAAI,IAAI,CAAC;IACb,sLAAsL;IACtL,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC/B;;;;;;;;;;OAUG;IACH,qBAAqB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD;AAMD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,gBAAqB,GAAG,SAAS,CAmEvF"}
@@ -0,0 +1,15 @@
1
+ import type { Scene } from '@vscada/core';
2
+ /**
3
+ * Story 5.2 Task 4 — a WtE-class fixture (Dev Notes reference: the same
4
+ * tank/pump/readout shape as Story 1.7's walking skeleton, plus a valve so
5
+ * `position` gets exercised too) rebuilt locally rather than imported from
6
+ * `@vscada/builder`'s own `src/fixtures/walking-skeleton.ts` — that file
7
+ * isn't part of builder's public `index.ts` export surface (deliberately;
8
+ * it's Story 5.1's own internal fixture), so this package keeps its own,
9
+ * covering one instance of every binding type this story's generators
10
+ * dispatch on: `level` (with thresholds), `readout`, `state`, `rotate`
11
+ * (same-element follow), `flow` (topology-linked follow, on P-205 —
12
+ * PMP-05's discharge), and `position` (the isolation valve).
13
+ */
14
+ export declare function buildWteFixtureScene(): Scene;
15
+ //# sourceMappingURL=wte-scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wte-scene.d.ts","sourceRoot":"","sources":["../../src/test-fixtures/wte-scene.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAkD5C"}
package/package.json ADDED
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "@vscada/sim",
3
+ "version": "0.0.1",
4
+ "description": "VScada Tag simulator (real content: Story 5.2; consumed by the Story 5.3 preview CLI in @vscada/cli)",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "license": "UNLICENSED",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "dependencies": {
18
+ "@vscada/core": "0.0.1"
19
+ },
20
+ "devDependencies": {
21
+ "typescript": "~5.9.3",
22
+ "vite": "~8.1.5",
23
+ "@vscada/builder": "0.0.1",
24
+ "@vscada/primitives": "0.0.1",
25
+ "@vscada/themes": "0.0.1"
26
+ },
27
+ "scripts": {
28
+ "build": "vite build && tsc -b",
29
+ "typecheck": "tsc -b"
30
+ }
31
+ }