@spine-event-engine/server 2.0.0-snapshot.24 → 2.0.0-snapshot.25

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 (286) hide show
  1. package/README.md +38 -11
  2. package/REFERENCE.md +201 -130
  3. package/dist/agent/agent-acceptance-receipts.d.ts +69 -0
  4. package/dist/agent/agent-acceptance-receipts.d.ts.map +1 -0
  5. package/dist/agent/agent-acceptance-receipts.js +198 -0
  6. package/dist/agent/agent-acceptance-receipts.js.map +1 -0
  7. package/dist/agent/agent-execution-capacity.d.ts +37 -9
  8. package/dist/agent/agent-execution-capacity.d.ts.map +1 -1
  9. package/dist/agent/agent-execution-capacity.js +73 -15
  10. package/dist/agent/agent-execution-capacity.js.map +1 -1
  11. package/dist/agent/agent-history.d.ts +15 -10
  12. package/dist/agent/agent-history.d.ts.map +1 -1
  13. package/dist/agent/agent-history.js +26 -14
  14. package/dist/agent/agent-history.js.map +1 -1
  15. package/dist/agent/agent-live-ai-audit.d.ts +95 -0
  16. package/dist/agent/agent-live-ai-audit.d.ts.map +1 -0
  17. package/dist/agent/agent-live-ai-audit.js +290 -0
  18. package/dist/agent/agent-live-ai-audit.js.map +1 -0
  19. package/dist/agent/agent-live-ai-runtime.d.ts +300 -0
  20. package/dist/agent/agent-live-ai-runtime.d.ts.map +1 -0
  21. package/dist/agent/agent-live-ai-runtime.js +611 -0
  22. package/dist/agent/agent-live-ai-runtime.js.map +1 -0
  23. package/dist/agent/agent-live-audit.d.ts +67 -0
  24. package/dist/agent/agent-live-audit.d.ts.map +1 -0
  25. package/dist/agent/agent-live-audit.js +121 -0
  26. package/dist/agent/agent-live-audit.js.map +1 -0
  27. package/dist/agent/agent-live-budget.d.ts +84 -0
  28. package/dist/agent/agent-live-budget.d.ts.map +1 -0
  29. package/dist/agent/agent-live-budget.js +161 -0
  30. package/dist/agent/agent-live-budget.js.map +1 -0
  31. package/dist/agent/agent-live-fault.d.ts +18 -0
  32. package/dist/agent/agent-live-fault.d.ts.map +1 -0
  33. package/dist/agent/{agent-execution-fault.js → agent-live-fault.js} +7 -7
  34. package/dist/agent/agent-live-fault.js.map +1 -0
  35. package/dist/agent/agent-live-inputs.d.ts +74 -0
  36. package/dist/agent/agent-live-inputs.d.ts.map +1 -0
  37. package/dist/{bus/saved-dispatcher-binding.js → agent/agent-live-inputs.js} +2 -14
  38. package/dist/agent/agent-live-inputs.js.map +1 -0
  39. package/dist/agent/agent-live-interaction-events.d.ts +46 -0
  40. package/dist/agent/agent-live-interaction-events.d.ts.map +1 -0
  41. package/dist/agent/agent-live-interaction-events.js +104 -0
  42. package/dist/agent/agent-live-interaction-events.js.map +1 -0
  43. package/dist/agent/agent-live-mcp-controls.d.ts +129 -0
  44. package/dist/agent/agent-live-mcp-controls.d.ts.map +1 -0
  45. package/dist/agent/agent-live-mcp-controls.js +228 -0
  46. package/dist/agent/agent-live-mcp-controls.js.map +1 -0
  47. package/dist/agent/agent-live-mcp-host.d.ts +88 -0
  48. package/dist/agent/agent-live-mcp-host.d.ts.map +1 -0
  49. package/dist/agent/{agent-mcp-host.js → agent-live-mcp-host.js} +1 -1
  50. package/dist/agent/agent-live-mcp-host.js.map +1 -0
  51. package/dist/agent/{agent-mcp-runtime.d.ts → agent-live-mcp-runtime.d.ts} +6 -6
  52. package/dist/agent/agent-live-mcp-runtime.d.ts.map +1 -0
  53. package/dist/agent/{agent-mcp-runtime.js → agent-live-mcp-runtime.js} +13 -42
  54. package/dist/agent/agent-live-mcp-runtime.js.map +1 -0
  55. package/dist/agent/agent-live-read-runtime.d.ts +61 -0
  56. package/dist/agent/agent-live-read-runtime.d.ts.map +1 -0
  57. package/dist/agent/agent-live-read-runtime.js +121 -0
  58. package/dist/agent/agent-live-read-runtime.js.map +1 -0
  59. package/dist/agent/agent-model-selection.d.ts +21 -34
  60. package/dist/agent/agent-model-selection.d.ts.map +1 -1
  61. package/dist/agent/agent-model-selection.js +61 -78
  62. package/dist/agent/agent-model-selection.js.map +1 -1
  63. package/dist/bus/command-bus.d.ts +14 -18
  64. package/dist/bus/command-bus.d.ts.map +1 -1
  65. package/dist/bus/command-bus.js +31 -48
  66. package/dist/bus/command-bus.js.map +1 -1
  67. package/dist/bus/event-bus.d.ts +17 -4
  68. package/dist/bus/event-bus.d.ts.map +1 -1
  69. package/dist/bus/event-bus.js +42 -12
  70. package/dist/bus/event-bus.js.map +1 -1
  71. package/dist/context/bounded-context.d.ts +140 -87
  72. package/dist/context/bounded-context.d.ts.map +1 -1
  73. package/dist/context/bounded-context.js +702 -329
  74. package/dist/context/bounded-context.js.map +1 -1
  75. package/dist/context/entity-inbox.d.ts +7 -2
  76. package/dist/context/entity-inbox.d.ts.map +1 -1
  77. package/dist/context/entity-inbox.js +22 -13
  78. package/dist/context/entity-inbox.js.map +1 -1
  79. package/dist/context/local-inbox-handoff.d.ts +34 -34
  80. package/dist/context/local-inbox-handoff.d.ts.map +1 -1
  81. package/dist/context/local-inbox-handoff.js +108 -150
  82. package/dist/context/local-inbox-handoff.js.map +1 -1
  83. package/dist/context/projection-handoff.d.ts +2 -2
  84. package/dist/context/projection-handoff.d.ts.map +1 -1
  85. package/dist/context/projection-handoff.js +10 -8
  86. package/dist/context/projection-handoff.js.map +1 -1
  87. package/dist/context/tenant-index.d.ts +36 -31
  88. package/dist/context/tenant-index.d.ts.map +1 -1
  89. package/dist/context/tenant-index.js +123 -125
  90. package/dist/context/tenant-index.js.map +1 -1
  91. package/dist/context/tenant-unknown-error.d.ts +33 -0
  92. package/dist/context/tenant-unknown-error.d.ts.map +1 -0
  93. package/dist/context/tenant-unknown-error.js +75 -0
  94. package/dist/context/tenant-unknown-error.js.map +1 -0
  95. package/dist/delivery/agent-delivery-scope.d.ts +66 -0
  96. package/dist/delivery/agent-delivery-scope.d.ts.map +1 -0
  97. package/dist/delivery/agent-delivery-scope.js +44 -0
  98. package/dist/delivery/agent-delivery-scope.js.map +1 -0
  99. package/dist/delivery/delivery-builder.d.ts +25 -1
  100. package/dist/delivery/delivery-builder.d.ts.map +1 -1
  101. package/dist/delivery/delivery-builder.js +89 -0
  102. package/dist/delivery/delivery-builder.js.map +1 -1
  103. package/dist/delivery/delivery-monitor.d.ts +1 -1
  104. package/dist/delivery/delivery-monitor.js +1 -1
  105. package/dist/delivery/delivery-run-control.d.ts +6 -0
  106. package/dist/delivery/delivery-run-control.d.ts.map +1 -1
  107. package/dist/delivery/delivery-run-control.js +10 -0
  108. package/dist/delivery/delivery-run-control.js.map +1 -1
  109. package/dist/delivery/delivery-supervisor.d.ts.map +1 -1
  110. package/dist/delivery/delivery-supervisor.js +28 -4
  111. package/dist/delivery/delivery-supervisor.js.map +1 -1
  112. package/dist/delivery/delivery-tenant.d.ts +17 -0
  113. package/dist/delivery/delivery-tenant.d.ts.map +1 -0
  114. package/dist/delivery/delivery-tenant.js +50 -0
  115. package/dist/delivery/delivery-tenant.js.map +1 -0
  116. package/dist/delivery/delivery.d.ts +96 -2
  117. package/dist/delivery/delivery.d.ts.map +1 -1
  118. package/dist/delivery/delivery.js +693 -53
  119. package/dist/delivery/delivery.js.map +1 -1
  120. package/dist/delivery/inbox-records.d.ts.map +1 -1
  121. package/dist/delivery/inbox-records.js +9 -16
  122. package/dist/delivery/inbox-records.js.map +1 -1
  123. package/dist/delivery/inbox-storage.d.ts +6 -0
  124. package/dist/delivery/inbox-storage.d.ts.map +1 -1
  125. package/dist/delivery/inbox-storage.js +43 -6
  126. package/dist/delivery/inbox-storage.js.map +1 -1
  127. package/dist/delivery/inbox.d.ts.map +1 -1
  128. package/dist/delivery/inbox.js +3 -2
  129. package/dist/delivery/inbox.js.map +1 -1
  130. package/dist/delivery/reception-observation.d.ts +12 -4
  131. package/dist/delivery/reception-observation.d.ts.map +1 -1
  132. package/dist/delivery/reception-observation.js +14 -3
  133. package/dist/delivery/reception-observation.js.map +1 -1
  134. package/dist/delivery/sharded-work-registry.d.ts +6 -0
  135. package/dist/delivery/sharded-work-registry.d.ts.map +1 -1
  136. package/dist/delivery/sharded-work-registry.js +41 -4
  137. package/dist/delivery/sharded-work-registry.js.map +1 -1
  138. package/dist/entity/entity-storage-descriptor.d.ts.map +1 -1
  139. package/dist/entity/entity-storage-descriptor.js +7 -4
  140. package/dist/entity/entity-storage-descriptor.js.map +1 -1
  141. package/dist/index.d.ts +4 -2
  142. package/dist/index.d.ts.map +1 -1
  143. package/dist/index.js +2 -1
  144. package/dist/index.js.map +1 -1
  145. package/dist/integration/external-messages.d.ts.map +1 -1
  146. package/dist/integration/external-messages.js +9 -15
  147. package/dist/integration/external-messages.js.map +1 -1
  148. package/dist/integration/integration-broker.d.ts.map +1 -1
  149. package/dist/integration/integration-broker.js +112 -6
  150. package/dist/integration/integration-broker.js.map +1 -1
  151. package/dist/integration/third-party-context.d.ts.map +1 -1
  152. package/dist/integration/third-party-context.js +7 -10
  153. package/dist/integration/third-party-context.js.map +1 -1
  154. package/dist/repository/primitive-id.js +26 -11
  155. package/dist/repository/primitive-id.js.map +1 -1
  156. package/dist/repository/repository.d.ts +32 -60
  157. package/dist/repository/repository.d.ts.map +1 -1
  158. package/dist/repository/repository.js +1446 -1787
  159. package/dist/repository/repository.js.map +1 -1
  160. package/dist/runtime/runtime.d.ts +13 -0
  161. package/dist/runtime/runtime.d.ts.map +1 -1
  162. package/dist/runtime/runtime.js +18 -0
  163. package/dist/runtime/runtime.js.map +1 -1
  164. package/dist/runtime/signal-metadata.d.ts.map +1 -1
  165. package/dist/runtime/signal-metadata.js +6 -6
  166. package/dist/runtime/signal-metadata.js.map +1 -1
  167. package/dist/runtime/signal-publisher.d.ts +0 -6
  168. package/dist/runtime/signal-publisher.d.ts.map +1 -1
  169. package/dist/runtime/signal-publisher.js +1 -9
  170. package/dist/runtime/signal-publisher.js.map +1 -1
  171. package/dist/runtime/standalone-handler-runtime.d.ts +0 -7
  172. package/dist/runtime/standalone-handler-runtime.d.ts.map +1 -1
  173. package/dist/runtime/standalone-handler-runtime.js +13 -99
  174. package/dist/runtime/standalone-handler-runtime.js.map +1 -1
  175. package/dist/server/managed-delivery-gate.d.ts +34 -0
  176. package/dist/server/managed-delivery-gate.d.ts.map +1 -0
  177. package/dist/server/managed-delivery-gate.js +70 -0
  178. package/dist/server/managed-delivery-gate.js.map +1 -0
  179. package/dist/server/managed-server-application.d.ts.map +1 -1
  180. package/dist/server/managed-server-application.js +7 -4
  181. package/dist/server/managed-server-application.js.map +1 -1
  182. package/dist/server/server-environment.d.ts +203 -25
  183. package/dist/server/server-environment.d.ts.map +1 -1
  184. package/dist/server/server-environment.js +661 -133
  185. package/dist/server/server-environment.js.map +1 -1
  186. package/dist/server/server-log.d.ts +7 -0
  187. package/dist/server/server-log.d.ts.map +1 -1
  188. package/dist/server/server-log.js +14 -1
  189. package/dist/server/server-log.js.map +1 -1
  190. package/dist/server/server.d.ts +18 -32
  191. package/dist/server/server.d.ts.map +1 -1
  192. package/dist/server/server.js +50 -204
  193. package/dist/server/server.js.map +1 -1
  194. package/dist/services/spine-services.d.ts +1 -1
  195. package/dist/services/spine-services.d.ts.map +1 -1
  196. package/dist/services/spine-services.js +236 -335
  197. package/dist/services/spine-services.js.map +1 -1
  198. package/dist/stand/event-origin-filter.js +3 -3
  199. package/dist/stand/event-origin-filter.js.map +1 -1
  200. package/dist/stand/stand.d.ts +14 -0
  201. package/dist/stand/stand.d.ts.map +1 -1
  202. package/dist/stand/stand.js +53 -9
  203. package/dist/stand/stand.js.map +1 -1
  204. package/dist/stand/subscription-observer.d.ts.map +1 -1
  205. package/dist/stand/subscription-observer.js +54 -40
  206. package/dist/stand/subscription-observer.js.map +1 -1
  207. package/dist/stand/subscription-registry.d.ts +6 -2
  208. package/dist/stand/subscription-registry.d.ts.map +1 -1
  209. package/dist/stand/subscription-registry.js +15 -11
  210. package/dist/stand/subscription-registry.js.map +1 -1
  211. package/dist/stand/subscription-runtime.d.ts +5 -3
  212. package/dist/stand/subscription-runtime.d.ts.map +1 -1
  213. package/dist/stand/subscription-runtime.js +52 -9
  214. package/dist/stand/subscription-runtime.js.map +1 -1
  215. package/dist/testing/index.d.ts.map +1 -1
  216. package/dist/testing/index.js +4 -3
  217. package/dist/testing/index.js.map +1 -1
  218. package/dist/tsconfig.tsbuildinfo +1 -1
  219. package/package.json +14 -14
  220. package/dist/agent/agent-admission.d.ts +0 -80
  221. package/dist/agent/agent-admission.d.ts.map +0 -1
  222. package/dist/agent/agent-admission.js +0 -127
  223. package/dist/agent/agent-admission.js.map +0 -1
  224. package/dist/agent/agent-ai-runtime.d.ts +0 -76
  225. package/dist/agent/agent-ai-runtime.d.ts.map +0 -1
  226. package/dist/agent/agent-ai-runtime.js +0 -1269
  227. package/dist/agent/agent-ai-runtime.js.map +0 -1
  228. package/dist/agent/agent-execution-fault.d.ts +0 -18
  229. package/dist/agent/agent-execution-fault.d.ts.map +0 -1
  230. package/dist/agent/agent-execution-fault.js.map +0 -1
  231. package/dist/agent/agent-execution-session.d.ts +0 -103
  232. package/dist/agent/agent-execution-session.d.ts.map +0 -1
  233. package/dist/agent/agent-execution-session.js +0 -238
  234. package/dist/agent/agent-execution-session.js.map +0 -1
  235. package/dist/agent/agent-interaction-audit.d.ts +0 -58
  236. package/dist/agent/agent-interaction-audit.d.ts.map +0 -1
  237. package/dist/agent/agent-interaction-audit.js +0 -114
  238. package/dist/agent/agent-interaction-audit.js.map +0 -1
  239. package/dist/agent/agent-interaction-events.d.ts +0 -40
  240. package/dist/agent/agent-interaction-events.d.ts.map +0 -1
  241. package/dist/agent/agent-interaction-events.js +0 -129
  242. package/dist/agent/agent-interaction-events.js.map +0 -1
  243. package/dist/agent/agent-mcp-budget.d.ts +0 -125
  244. package/dist/agent/agent-mcp-budget.d.ts.map +0 -1
  245. package/dist/agent/agent-mcp-budget.js +0 -566
  246. package/dist/agent/agent-mcp-budget.js.map +0 -1
  247. package/dist/agent/agent-mcp-host.d.ts +0 -125
  248. package/dist/agent/agent-mcp-host.d.ts.map +0 -1
  249. package/dist/agent/agent-mcp-host.js.map +0 -1
  250. package/dist/agent/agent-mcp-runtime.d.ts.map +0 -1
  251. package/dist/agent/agent-mcp-runtime.js.map +0 -1
  252. package/dist/agent/agent-read-runtime.d.ts +0 -70
  253. package/dist/agent/agent-read-runtime.d.ts.map +0 -1
  254. package/dist/agent/agent-read-runtime.js +0 -320
  255. package/dist/agent/agent-read-runtime.js.map +0 -1
  256. package/dist/agent/agent-revisions.d.ts +0 -35
  257. package/dist/agent/agent-revisions.d.ts.map +0 -1
  258. package/dist/agent/agent-revisions.js +0 -133
  259. package/dist/agent/agent-revisions.js.map +0 -1
  260. package/dist/agent/agent-scheduler.d.ts +0 -99
  261. package/dist/agent/agent-scheduler.d.ts.map +0 -1
  262. package/dist/agent/agent-scheduler.js +0 -398
  263. package/dist/agent/agent-scheduler.js.map +0 -1
  264. package/dist/bus/saved-dispatcher-binding.d.ts +0 -53
  265. package/dist/bus/saved-dispatcher-binding.d.ts.map +0 -1
  266. package/dist/bus/saved-dispatcher-binding.js.map +0 -1
  267. package/dist/delivery/delivery-run-coordinator.d.ts +0 -218
  268. package/dist/delivery/delivery-run-coordinator.d.ts.map +0 -1
  269. package/dist/delivery/delivery-run-coordinator.js +0 -609
  270. package/dist/delivery/delivery-run-coordinator.js.map +0 -1
  271. package/dist/delivery/parked-delivery-obligations.d.ts +0 -182
  272. package/dist/delivery/parked-delivery-obligations.d.ts.map +0 -1
  273. package/dist/delivery/parked-delivery-obligations.js +0 -390
  274. package/dist/delivery/parked-delivery-obligations.js.map +0 -1
  275. package/dist/server/environment-attachment.d.ts +0 -356
  276. package/dist/server/environment-attachment.d.ts.map +0 -1
  277. package/dist/server/environment-attachment.js +0 -2062
  278. package/dist/server/environment-attachment.js.map +0 -1
  279. package/dist/server/environment-delivery-records.d.ts +0 -77
  280. package/dist/server/environment-delivery-records.d.ts.map +0 -1
  281. package/dist/server/environment-delivery-records.js +0 -282
  282. package/dist/server/environment-delivery-records.js.map +0 -1
  283. package/dist/server/environment-delivery-worker.d.ts +0 -161
  284. package/dist/server/environment-delivery-worker.d.ts.map +0 -1
  285. package/dist/server/environment-delivery-worker.js +0 -973
  286. package/dist/server/environment-delivery-worker.js.map +0 -1
@@ -1,566 +0,0 @@
1
- /*
2
- * Copyright 2026, CodeMatters. All rights reserved.
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
- * in compliance with the License. You may obtain a copy of the License at
6
- *
7
- * https://www.apache.org/licenses/LICENSE-2.0
8
- *
9
- * Unless required by applicable law or agreed to in writing, software distributed under the License
10
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
- * or implied. See the License for the specific language governing permissions and limitations under
12
- * the License.
13
- */
14
- var _a;
15
- import { clone, create, toBinary } from "@bufbuild/protobuf";
16
- import { createHash, randomUUID } from "node:crypto";
17
- import { AgentExecutionFault } from "./agent-execution-fault.js";
18
- import { AnyMessages, Time } from "@spine-event-engine/core";
19
- import { AiAttemptIdSchema, AiContentDigestSchema, AiModelKind, AiOutcome, AiToolCallIdSchema as ToolCallIdSchema, AgentToolCallStartedSchema as ToolStartedSchema, AgentToolCallFinishedSchema as ToolFinishedSchema, AgentHistoryEntrySchema, ConversationRecordIdSchema, ConversationRecordSchema, McpServerIdSchema, ToolEffect, ToolRequestSchema, ToolResponseSchema, } from "@spine-event-engine/proto/agent";
20
- import { AgentExecutionJournalEntrySchema as JournalEntrySchema, AgentExecutionHeadSchema, AgentExecutionRecordSchema, AgentProtocolEvidenceSchema, AgentProtocolPhase, AgentProtocolTicketIdSchema as TicketIdSchema, AgentToolEvidenceSchema, } from "@spine-event-engine/proto/generated/spine/server/agent/execution_record_pb.js";
21
- import { AgentExecutionSizes, } from "@spine-event-engine/storage/provider";
22
- import { AgentInteractionAudit } from "./agent-interaction-audit.js";
23
- /**
24
- * Charges MCP physical messages to the same fenced invocation ledger as model sends.
25
- */
26
- export class AgentMcpBudget {
27
- session;
28
- operation;
29
- deadlineEpochMs;
30
- audit;
31
- #received = new Map();
32
- /**
33
- * Binds one MCP operation to the shared fenced invocation budget.
34
- *
35
- * @param session Fenced execution journal.
36
- * @param operation Saved named operation.
37
- * @param deadlineEpochMs Original operation deadline.
38
- * @param audit Paired Agent history and System Event writer.
39
- */
40
- constructor(session, operation, deadlineEpochMs, audit) {
41
- this.session = session;
42
- this.operation = operation;
43
- this.deadlineEpochMs = deadlineEpochMs;
44
- this.audit = audit;
45
- }
46
- /**
47
- * Checks invocation bounds using measured receipts and full unknown credit.
48
- *
49
- * @param record Current durable invocation.
50
- * @param input Proposed physical input bytes.
51
- * @param output Proposed physical response allowance.
52
- */
53
- static checkSharedBytes(record, input, output) {
54
- const spent = record.journal.reduce((sum, entry) => sum +
55
- (entry.evidence.case === "attempt" || entry.evidence.case === "protocol"
56
- ? entry.evidence.value.inputBytes
57
- : 0n), 0n);
58
- const remaining = _a.remainingOutputCredit(record);
59
- const inputLimit = record.started?.bounds?.totalInputBytes;
60
- if (inputLimit !== undefined && spent + BigInt(input) > inputLimit)
61
- throw new AgentExecutionFault("TOOL_BUDGET_EXCEEDED", "Agent invocation input byte budget is exhausted.");
62
- if (remaining !== undefined && BigInt(output) > remaining)
63
- throw new AgentExecutionFault("TOOL_BUDGET_EXCEEDED", "Agent invocation output byte credit is exhausted.");
64
- }
65
- /**
66
- * Returns unspent configured invocation output credit, if configured.
67
- *
68
- * @param record Durable execution record containing receipts and optional bounds.
69
- * @returns Remaining byte credit, or undefined when no total bound was configured.
70
- */
71
- static remainingOutputCredit(record) {
72
- const limit = record.started?.bounds?.totalOutputBytes;
73
- if (limit === undefined)
74
- return undefined;
75
- const reserved = record.journal.reduce((sum, entry) => sum +
76
- (entry.evidence.case === "attempt" || entry.evidence.case === "protocol"
77
- ? (entry.evidence.value.receivedBytes ?? entry.evidence.value.reservedResponseBytes)
78
- : 0n), 0n);
79
- return limit - reserved;
80
- }
81
- /**
82
- * Persists full request bytes and response credit before a physical MCP send.
83
- *
84
- * @param server Configured MCP server identifier.
85
- * @param request Physical protocol message and byte bounds.
86
- * @returns Fenced ticket for the one physical send.
87
- */
88
- async reserveMessage(server, request) {
89
- this.#checkRequest(server, request);
90
- const id = randomUUID();
91
- let effectiveCredit;
92
- await this.session.update((record) => {
93
- if (request.phase === "call" && request.toolCallId !== undefined)
94
- this.#checkCallIntent(record, server, request.toolCallId);
95
- effectiveCredit = this.#responseCredit(record, request);
96
- _a.checkSharedBytes(record, request.inputBytes, effectiveCredit ?? 0);
97
- const entry = this.#entry(server, id, request, record.journal.length, effectiveCredit);
98
- record.journal.push(entry);
99
- this.#checkCapacity(record);
100
- if (request.phase === "call" &&
101
- request.toolCallId !== undefined &&
102
- effectiveCredit !== undefined)
103
- this.#checkCallCapacity(record, request.toolCallId, effectiveCredit);
104
- return record;
105
- });
106
- return {
107
- id,
108
- signal: this.session.signal,
109
- ...(this.deadlineEpochMs === undefined ? {} : { deadlineEpochMs: this.deadlineEpochMs }),
110
- ...(effectiveCredit === undefined ? {} : { maxOutputBytes: effectiveCredit }),
111
- };
112
- }
113
- /**
114
- * Narrows optional message credit by remaining configured invocation credit.
115
- *
116
- * @param record Current durable execution record.
117
- * @param request Physical MCP message request.
118
- * @returns Effective byte credit, or undefined when no ceiling is configured.
119
- */
120
- #responseCredit(record, request) {
121
- const remaining = _a.remainingOutputCredit(record);
122
- if (remaining !== undefined && remaining < 1n)
123
- _a.checkSharedBytes(record, request.inputBytes, 1);
124
- const available = remaining === undefined ? undefined : Number(remaining);
125
- if (available !== undefined && !Number.isSafeInteger(available))
126
- throw new Error("Agent MCP invocation output credit is not a safe byte count.");
127
- return request.maxOutputBytes === undefined
128
- ? available
129
- : available === undefined
130
- ? request.maxOutputBytes
131
- : Math.min(request.maxOutputBytes, available);
132
- }
133
- /**
134
- * Rejects the chunk that crosses persisted full response credit.
135
- *
136
- * @param ticketId Saved physical-message ticket.
137
- * @param bytes Newly decoded response bytes.
138
- */
139
- onReceived(ticketId, bytes) {
140
- if (!Number.isSafeInteger(bytes) || bytes < 0)
141
- throw new Error("Agent MCP received byte count is invalid.");
142
- const evidence = this.#evidence(this.session.record(), ticketId);
143
- if (evidence.settled)
144
- throw new Error("Agent MCP message already settled.");
145
- const next = (this.#received.get(ticketId) ?? 0) + bytes;
146
- if (evidence.reservedResponseBytes > 0n && next > Number(evidence.reservedResponseBytes))
147
- throw new Error("Agent MCP response exceeded reserved bytes.");
148
- this.#received.set(ticketId, next);
149
- }
150
- /**
151
- * Persists known receipt; unknown work retains its full original credit.
152
- *
153
- * @param ticketId Saved physical-message ticket.
154
- * @param receivedBytes Complete decoded response size, when known.
155
- * @returns When the receipt is persisted.
156
- */
157
- async finishMessage(ticketId, receivedBytes) {
158
- const observed = this.#received.get(ticketId);
159
- if (receivedBytes !== undefined && observed !== undefined && receivedBytes !== observed)
160
- throw new Error("Agent MCP receipt byte counts disagree.");
161
- const bytes = receivedBytes;
162
- await this.session.update((record) => {
163
- const evidence = this.#evidence(record, ticketId);
164
- if (evidence.settled)
165
- throw new Error("Agent MCP message already settled.");
166
- if (bytes !== undefined) {
167
- if (!Number.isSafeInteger(bytes) ||
168
- bytes < 0 ||
169
- (evidence.reservedResponseBytes > 0n && bytes > Number(evidence.reservedResponseBytes)))
170
- throw new Error("Agent MCP response exceeded reserved bytes.");
171
- evidence.receivedBytes = BigInt(bytes);
172
- }
173
- evidence.settled = true;
174
- this.#checkCapacity(record);
175
- return record;
176
- });
177
- this.#received.delete(ticketId);
178
- }
179
- /**
180
- * Persists one authorized proposal and never reissues an uncertain write.
181
- *
182
- * @param invocation Model proposal and provider call identity.
183
- * @param facts Vetted server, tool, arguments, and effect.
184
- * @param operationLimit Capability tool-call bound.
185
- * @returns Saved or newly allocated tool intent.
186
- */
187
- async journalToolIntent(invocation, facts, operationLimit) {
188
- const current = this.session.record();
189
- this.#checkProposal(current, invocation);
190
- const prior = this.#toolByProposal(current, invocation);
191
- if (prior !== undefined)
192
- return this.#recoverIntent(prior, facts);
193
- return this.#saveIntent(invocation, facts, operationLimit);
194
- }
195
- /**
196
- * Marks a previously dispatched write uncertain before returning its outcome.
197
- */
198
- async #recoverIntent(prior, facts) {
199
- if (prior.dispatched &&
200
- prior.request?.effect === ToolEffect.WRITE &&
201
- prior.response === undefined &&
202
- !prior.outcomeUnknown) {
203
- const callId = prior.request.call?.value;
204
- if (callId === undefined)
205
- throw new Error("Saved Agent tool call ID is absent.");
206
- await this.session.update((record) => {
207
- this.#toolByCall(record, callId).outcomeUnknown = true;
208
- return record;
209
- });
210
- }
211
- return this.#priorTool(prior, facts);
212
- }
213
- /**
214
- * Allocates exactly one tool count and durable request in the fenced record.
215
- */
216
- async #saveIntent(invocation, facts, operationLimit) {
217
- const callId = randomUUID();
218
- const request = this.#toolRequest(facts, callId);
219
- const history = this.#requestHistory(request);
220
- const change = (record) => {
221
- this.#checkProposal(record, invocation);
222
- if (this.#toolByProposal(record, invocation) !== undefined)
223
- throw new Error("Agent tool proposal was concurrently journaled.");
224
- this.#checkToolCount(record, operationLimit);
225
- record.journal.push(this.#toolEntry(invocation, request, record.journal.length));
226
- this.#checkCapacity(record, [history]);
227
- return record;
228
- };
229
- if (this.audit === undefined)
230
- await this.session.update(change, [history]);
231
- else
232
- await this.audit.save(ToolStartedSchema, this.#started(invocation, request), change, [
233
- history,
234
- ]);
235
- return { kind: "new", callId };
236
- }
237
- /**
238
- * Checks the saved tool count before appending another intent.
239
- *
240
- * @param record Current fenced execution image.
241
- * @param operationLimit Selected capability's tool limit.
242
- */
243
- #checkToolCount(record, operationLimit) {
244
- const calls = record.journal.filter((entry) => entry.evidence.case === "tool");
245
- const operationCalls = calls.filter((entry) => entry.evidence.case === "tool" &&
246
- entry.evidence.value.operation?.value === this.operation.operation?.value);
247
- const invocationLimit = record.started?.bounds?.toolCalls;
248
- if ((operationLimit !== undefined && operationCalls.length >= operationLimit) ||
249
- (invocationLimit !== undefined && calls.length >= Number(invocationLimit)))
250
- throw new AgentExecutionFault("TOOL_BUDGET_EXCEEDED", "Agent invocation tool-call budget is exhausted.");
251
- }
252
- /**
253
- * Describes a journaled tool intent before transport can see it.
254
- */
255
- #started(invocation, request) {
256
- return create(ToolStartedSchema, {
257
- operation: this.audit?.reference(this.operation, AiModelKind.GENERATION),
258
- attempt: create(AiAttemptIdSchema, { value: invocation.ticketId }),
259
- call: request.call,
260
- server: request.server,
261
- tool: request.tool,
262
- arguments: create(AiContentDigestSchema, {
263
- value: createHash("sha256").update(request.argumentsJson).digest("hex"),
264
- }),
265
- effect: request.effect,
266
- startedAt: Time.currentTime(),
267
- });
268
- }
269
- /**
270
- * Persists the pre-send boundary; repeating a read may retain this flag.
271
- *
272
- * @param callId Saved logical tool-call identity.
273
- * @returns When the dispatch marker is persisted.
274
- */
275
- async markToolDispatched(callId) {
276
- await this.session.update((record) => {
277
- const tool = this.#toolByCall(record, callId);
278
- if (tool.response !== undefined)
279
- throw new Error("Agent tool already completed.");
280
- tool.dispatched = true;
281
- return record;
282
- });
283
- }
284
- /**
285
- * Persists a complete tool result and its typed conversation row together.
286
- *
287
- * @param callId Saved logical tool-call identity.
288
- * @param response Bounded tool result.
289
- * @param history Typed conversation rows retained with the result.
290
- * @returns When the fenced result and history are persisted.
291
- */
292
- async finishTool(callId, response, history) {
293
- const change = (record) => {
294
- const tool = this.#toolByCall(record, callId);
295
- if (tool.outcomeUnknown)
296
- throw new Error("Agent tool outcome is unknown and cannot be completed later.");
297
- if (tool.response !== undefined || response.call?.value !== callId)
298
- throw new Error("Agent tool completion does not match a pending intent.");
299
- tool.response = response;
300
- this.#checkCapacity(record, history);
301
- return record;
302
- };
303
- if (this.audit === undefined)
304
- await this.session.update(change, history);
305
- else
306
- await this.audit.save(ToolFinishedSchema, this.#finished(response), change, history);
307
- }
308
- /**
309
- * Describes the exact saved response of one tool call.
310
- */
311
- #finished(response) {
312
- return create(ToolFinishedSchema, {
313
- operation: this.audit?.reference(this.operation, AiModelKind.GENERATION),
314
- call: response.call,
315
- outcome: response.outcome,
316
- result: create(AiContentDigestSchema, {
317
- value: createHash("sha256").update(toBinary(ToolResponseSchema, response)).digest("hex"),
318
- }),
319
- ...(response.diagnosticId === undefined ? {} : { diagnosticId: response.diagnosticId }),
320
- finishedAt: Time.currentTime(),
321
- });
322
- }
323
- /**
324
- * Ensures the proposal was actually returned by the saved physical model response.
325
- */
326
- #checkProposal(record, invocation) {
327
- const attempt = record.journal.find((entry) => entry.evidence.case === "attempt" &&
328
- entry.evidence.value.attempt?.value === invocation.ticketId &&
329
- entry.evidence.value.operation?.value === this.operation.operation?.value);
330
- if (attempt?.evidence.case !== "attempt" ||
331
- attempt.evidence.value.response.case !== "generationResponse" ||
332
- attempt.evidence.value.response.value.outcome !== AiOutcome.TOOL_REQUESTED ||
333
- !attempt.evidence.value.response.value.toolCalls.some((call) => call.providerCallId === invocation.providerCallId &&
334
- call.argumentsJson === invocation.argumentsJson))
335
- throw new Error("Agent tool intent has no matching saved model proposal.");
336
- }
337
- /**
338
- * Finds the original provider correlation without trusting a new call ID.
339
- */
340
- #toolByProposal(record, invocation) {
341
- const entry = record.journal.find((item) => item.evidence.case === "tool" &&
342
- item.evidence.value.operation?.value === this.operation.operation?.value &&
343
- item.evidence.value.requestingAttempt?.value === invocation.ticketId &&
344
- item.evidence.value.providerCallId === invocation.providerCallId);
345
- return entry?.evidence.case === "tool" ? entry.evidence.value : undefined;
346
- }
347
- /**
348
- * Compares retained authorized facts and chooses replay or uncertain result.
349
- */
350
- #priorTool(prior, facts) {
351
- const request = prior.request;
352
- if (request === undefined ||
353
- request.server?.value !== facts.server?.value ||
354
- request.tool?.value !== facts.tool?.value ||
355
- request.argumentsJson !== facts.argumentsJson ||
356
- request.effect !== facts.effect)
357
- throw new AgentExecutionFault("REPLAY_DIVERGENCE", "Agent tool request changed on recovery.");
358
- if (prior.response !== undefined)
359
- return { kind: "replay", response: prior.response };
360
- const callId = request.call?.value;
361
- if (callId === undefined)
362
- throw new Error("Saved Agent tool call ID is absent.");
363
- if (prior.dispatched && request.effect === ToolEffect.WRITE)
364
- return {
365
- kind: "unknown",
366
- response: create(ToolResponseSchema, {
367
- call: request.call,
368
- outcome: AiOutcome.UNKNOWN,
369
- }),
370
- };
371
- return { kind: "new", callId };
372
- }
373
- /**
374
- * Constructs an authorized immutable tool intent with a runtime call ID.
375
- */
376
- #toolEntry(invocation, request, ordinal) {
377
- return create(JournalEntrySchema, {
378
- ordinal: BigInt(ordinal),
379
- evidence: {
380
- case: "tool",
381
- value: create(AgentToolEvidenceSchema, {
382
- operation: this.operation.operation,
383
- requestingAttempt: create(AiAttemptIdSchema, { value: invocation.ticketId }),
384
- providerCallId: invocation.providerCallId,
385
- request,
386
- }),
387
- },
388
- });
389
- }
390
- /**
391
- * Gives the authorized intent its runtime-generated logical call ID.
392
- */
393
- #toolRequest(facts, callId) {
394
- if (facts.effect === ToolEffect.TOOL_EFFECT_UNSPECIFIED)
395
- throw new Error("Agent tool effect must be established by application policy.");
396
- return create(ToolRequestSchema, {
397
- ...facts,
398
- call: create(ToolCallIdSchema, { value: callId }),
399
- });
400
- }
401
- /**
402
- * Records the exact authorized ToolRequest in conversation history.
403
- */
404
- #requestHistory(request) {
405
- return this.#toolHistory(request.call, AnyMessages.pack(ToolRequestSchema, request));
406
- }
407
- /**
408
- * Records the complete bounded tool content with its logical call identity.
409
- */
410
- #toolHistory(call, content) {
411
- const occurredAt = Time.currentTime();
412
- return create(AgentHistoryEntrySchema, {
413
- occurredAt,
414
- item: {
415
- case: "conversationRecord",
416
- value: create(ConversationRecordSchema, {
417
- id: create(ConversationRecordIdSchema, { value: randomUUID() }),
418
- conversation: this.operation.conversation,
419
- operation: this.operation.operation,
420
- toolCall: call,
421
- occurredAt,
422
- content,
423
- }),
424
- },
425
- });
426
- }
427
- /**
428
- * Projects all credited tool result copies before allowing a physical call.
429
- */
430
- #checkCallCapacity(record, callId, credit) {
431
- const projected = clone(AgentExecutionRecordSchema, record);
432
- const tool = this.#toolByCall(projected, callId);
433
- const response = create(ToolResponseSchema, {
434
- call: tool.request?.call,
435
- outcome: AiOutcome.ADMITTED,
436
- text: ["x".repeat(credit)],
437
- });
438
- tool.response = response;
439
- const history = this.#toolHistory(response.call, AnyMessages.pack(ToolResponseSchema, response));
440
- this.#checkCapacity(projected, [history]);
441
- }
442
- /**
443
- * Finds one tool intent by its persisted runtime call ID.
444
- */
445
- #toolByCall(record, callId) {
446
- const entry = record.journal.find((item) => item.evidence.case === "tool" && item.evidence.value.request?.call?.value === callId);
447
- if (entry?.evidence.case !== "tool")
448
- throw new Error("Agent tool call ID is unknown.");
449
- return entry.evidence.value;
450
- }
451
- /**
452
- * Requires one saved dispatch intent and forbids repeated physical writes.
453
- */
454
- #checkCallIntent(record, server, callId) {
455
- const tool = record.journal.find((entry) => entry.evidence.case === "tool" && entry.evidence.value.request?.call?.value === callId);
456
- if (tool?.evidence.case !== "tool" ||
457
- !tool.evidence.value.dispatched ||
458
- tool.evidence.value.response !== undefined ||
459
- tool.evidence.value.request?.server?.value !== server)
460
- throw new Error("Agent MCP call has no dispatched durable intent.");
461
- if (tool.evidence.value.request.effect === ToolEffect.WRITE &&
462
- record.journal.some((entry) => entry.evidence.case === "protocol" && entry.evidence.value.toolCall?.value === callId))
463
- throw new Error("Agent MCP write intent already has a physical reservation.");
464
- }
465
- /**
466
- * Validates a bounded physical send under the active fence and saved deadline.
467
- */
468
- #checkRequest(server, request) {
469
- if (this.session.signal.aborted ||
470
- (this.deadlineEpochMs !== undefined && Time.currentTimeMillis() >= this.deadlineEpochMs))
471
- throw new Error("Agent MCP execution deadline expired.");
472
- if (server.trim().length === 0 || request.method.trim().length === 0)
473
- throw new Error("Agent MCP server and method must be nonblank.");
474
- if (!Number.isSafeInteger(request.inputBytes) ||
475
- request.inputBytes < 0 ||
476
- (request.maxOutputBytes !== undefined &&
477
- (!Number.isSafeInteger(request.maxOutputBytes) || request.maxOutputBytes < 1)))
478
- throw new Error("Agent MCP physical message byte bounds are invalid.");
479
- if ((request.phase === "call") !== (request.toolCallId !== undefined))
480
- throw new Error("Agent MCP call phase must name its saved tool intent.");
481
- }
482
- /**
483
- * Constructs exact journal evidence for the reserved physical message.
484
- */
485
- #entry(server, id, request, ordinal, credit) {
486
- return create(JournalEntrySchema, {
487
- ordinal: BigInt(ordinal),
488
- evidence: {
489
- case: "protocol",
490
- value: create(AgentProtocolEvidenceSchema, {
491
- operation: this.operation.operation,
492
- server: create(McpServerIdSchema, { value: server }),
493
- ticket: create(TicketIdSchema, { value: id }),
494
- phase: request.phase === "setup"
495
- ? AgentProtocolPhase.AGENT_PROTOCOL_SETUP
496
- : AgentProtocolPhase.AGENT_PROTOCOL_CALL,
497
- method: request.method,
498
- inputBytes: BigInt(request.inputBytes),
499
- reservedResponseBytes: BigInt(credit ?? 0),
500
- ...(request.toolCallId === undefined
501
- ? {}
502
- : {
503
- toolCall: create(ToolCallIdSchema, { value: request.toolCallId }),
504
- }),
505
- }),
506
- },
507
- });
508
- }
509
- /**
510
- * Finds the one original reservation by durable ticket identity.
511
- */
512
- #evidence(record, ticketId) {
513
- const entry = record.journal.find((item) => item.evidence.case === "protocol" && item.evidence.value.ticket?.value === ticketId);
514
- if (entry?.evidence.case !== "protocol")
515
- throw new Error("Agent MCP ticket is unknown.");
516
- return entry.evidence.value;
517
- }
518
- /**
519
- * Prevents a protocol journal image that exceeds the selected provider.
520
- */
521
- #checkCapacity(record, history = []) {
522
- const size = AgentExecutionSizes.record(record);
523
- const recoveryLimit = record.started?.bounds?.maxRecoveryBytes;
524
- if (recoveryLimit !== undefined && size > Number(recoveryLimit))
525
- throw new Error("Agent MCP journal exceeds invocation recovery bytes.");
526
- const capacity = this.session.capacity();
527
- const headBytes = this.#headBytes(record);
528
- if (capacity.executionHeadBytes !== undefined && headBytes > capacity.executionHeadBytes)
529
- throw new Error("Agent MCP head exceeds provider execution head bytes.");
530
- const limit = capacity.executionRecordBytes;
531
- if (limit !== undefined && size > limit)
532
- throw new Error("Agent MCP journal exceeds provider execution record bytes.");
533
- const scope = record.accepted?.key?.scope;
534
- if (history.length && scope === undefined)
535
- throw new Error("Agent MCP history requires its accepted instance scope.");
536
- const bytes = scope === undefined ? [] : history.map((entry) => AgentExecutionSizes.history(scope, entry));
537
- const historyLimit = capacity.historyRecordBytes;
538
- if (historyLimit !== undefined && bytes.some((count) => count > historyLimit))
539
- throw new Error("Agent MCP conversation history exceeds provider history bytes.");
540
- if (capacity.transactionPayloadBytes !== undefined &&
541
- size + headBytes + bytes.reduce((sum, count) => sum + count, 0) >
542
- capacity.transactionPayloadBytes)
543
- throw new Error("Agent MCP mutation exceeds provider transaction payload bytes.");
544
- }
545
- /**
546
- * Measures the full persistent instance head including current preferences.
547
- */
548
- #headBytes(record) {
549
- const accepted = record.accepted;
550
- if (accepted?.key?.scope === undefined)
551
- throw new Error("Agent MCP capacity check requires its accepted instance scope.");
552
- return AgentExecutionSizes.head(create(AgentExecutionHeadSchema, {
553
- scope: accepted.key.scope,
554
- active: accepted.key,
555
- pending: accepted.key,
556
- pendingOrder: accepted.order,
557
- lastResolved: accepted.order,
558
- claimToken: record.claimToken,
559
- claimExpiresAt: record.claimExpiresAt,
560
- preferences: [...this.session.preferences()],
561
- eligibleAt: Time.currentTime(),
562
- }));
563
- }
564
- }
565
- _a = AgentMcpBudget;
566
- //# sourceMappingURL=agent-mcp-budget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-mcp-budget.js","sourceRoot":"","sources":["../../src/agent/agent-mcp-budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAM7D,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,SAAS,EACT,kBAAkB,IAAI,gBAAgB,EACtC,0BAA0B,IAAI,iBAAiB,EAC/C,2BAA2B,IAAI,kBAAkB,EACjD,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,kBAAkB,GAInB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,gCAAgC,IAAI,kBAAkB,EACtD,wBAAwB,EACxB,0BAA0B,EAC1B,2BAA2B,EAC3B,kBAAkB,EAClB,2BAA2B,IAAI,cAAc,EAC7C,uBAAuB,GAKxB,MAAM,+EAA+E,CAAC;AACvF,OAAO,EACL,mBAAmB,GAEpB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AA6CrE;;GAEG;AACH,MAAM,OAAO,cAAc;IAYN;IACA;IACA;IACA;IAdV,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE/C;;;;;;;OAOG;IACH,YACmB,OAAuB,EACvB,SAA8B,EAC9B,eAAmC,EACnC,KAAwC;QAHxC,YAAO,GAAP,OAAO,CAAgB;QACvB,cAAS,GAAT,SAAS,CAAqB;QAC9B,oBAAe,GAAf,eAAe,CAAoB;QACnC,UAAK,GAAL,KAAK,CAAmC;IACxD,CAAC;IAEJ;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAA4B,EAAE,KAAa,EAAE,MAAc;QACjF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CACjC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CACb,GAAG;YACH,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU;gBACtE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU;gBACjC,CAAC,CAAC,EAAE,CAAC,EACT,EAAE,CACH,CAAC;QACF,MAAM,SAAS,GAAG,EAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC;QAC3D,IAAI,UAAU,KAAK,SAAS,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU;YAChE,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,kDAAkD,CACnD,CAAC;QACJ,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS;YACvD,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,mDAAmD,CACpD,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,MAA4B;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC;QACvD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CACb,GAAG;YACH,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU;gBACtE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC;gBACpF,CAAC,CAAC,EAAE,CAAC,EACT,EAAE,CACH,CAAC;QACF,OAAO,KAAK,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,OAA4B;QAC/D,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,IAAI,eAAmC,CAAC;QACxC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;gBAC9D,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5D,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACxD,EAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC;YAClF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YACvF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5B,IACE,OAAO,CAAC,KAAK,KAAK,MAAM;gBACxB,OAAO,CAAC,UAAU,KAAK,SAAS;gBAChC,eAAe,KAAK,SAAS;gBAE7B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YACvE,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,OAAO;YACL,EAAE;YACF,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;YAC3B,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;YACxF,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC;SAC9E,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,MAA4B,EAAE,OAA4B;QACxE,MAAM,SAAS,GAAG,EAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,EAAE;YAC3C,EAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1E,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,OAAO,OAAO,CAAC,cAAc,KAAK,SAAS;YACzC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,KAAK,SAAS;gBACvB,CAAC,CAAC,OAAO,CAAC,cAAc;gBACxB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,QAAgB,EAAE,KAAa;QACxC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,QAAQ,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QACzD,IAAI,QAAQ,CAAC,qBAAqB,GAAG,EAAE,IAAI,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACtF,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,aAAsB;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,aAAa,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,aAAa,KAAK,QAAQ;YACrF,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,aAAa,CAAC;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAClD,IAAI,QAAQ,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YAC5E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;oBAC5B,KAAK,GAAG,CAAC;oBACT,CAAC,QAAQ,CAAC,qBAAqB,GAAG,EAAE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;oBAEvF,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBACjE,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;YACD,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,iBAAiB,CACrB,UAA4B,EAC5B,KAAwE,EACxE,cAAkC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACtC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,KAAwB,EACxB,KAAwE;QAExE,IACE,KAAK,CAAC,UAAU;YAChB,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC,KAAK;YAC1C,KAAK,CAAC,QAAQ,KAAK,SAAS;YAC5B,CAAC,KAAK,CAAC,cAAc,EACrB,CAAC;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;YACzC,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACjF,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC;gBACvD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,UAA4B,EAC5B,KAAwE,EACxE,cAAkC;QAElC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,CAAC,MAA4B,EAAE,EAAE;YAC9C,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,SAAS;gBACxD,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YACrE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;;YAEzE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE;gBACnF,OAAO;aACR,CAAC,CAAC;QACL,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,MAA4B,EAAE,cAAkC;QAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC/E,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CACjC,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;YAC9B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAC5E,CAAC;QACF,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;QAC1D,IACE,CAAC,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC;YACzE,CAAC,eAAe,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;YAE1E,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,iDAAiD,CAClD,CAAC;IACN,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,UAA4B,EAAE,OAAoB;QACzD,OAAO,MAAM,CAAC,iBAAiB,EAAE;YAC/B,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;YACxE,OAAO,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;YAClE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,MAAM,CAAC,qBAAqB,EAAE;gBACvC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACxE,CAAC;YACF,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE;SAC9B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAClF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CACd,MAAc,EACd,QAAsB,EACtB,OAAqC;QAErC,MAAM,MAAM,GAAG,CAAC,MAA4B,EAAE,EAAE;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,cAAc;gBACrB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAClF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM;gBAChE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;YACpE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAsB;QAC9B,OAAO,MAAM,CAAC,kBAAkB,EAAE;YAChC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC;YACxE,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,MAAM,EAAE,MAAM,CAAC,qBAAqB,EAAE;gBACpC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACzF,CAAC;YACF,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;YACvF,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAA4B,EAAE,UAA4B;QACvE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACjC,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS;YACjC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,UAAU,CAAC,QAAQ;YAC3D,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAC5E,CAAC;QACF,IACE,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,SAAS;YACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,oBAAoB;YAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,cAAc;YAC1E,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CACnD,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,cAAc,KAAK,UAAU,CAAC,cAAc;gBACjD,IAAI,CAAC,aAAa,KAAK,UAAU,CAAC,aAAa,CAClD;YAED,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAA4B,EAAE,UAA4B;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM;YAC7B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK;YACxE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,KAAK,UAAU,CAAC,QAAQ;YACpE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,KAAK,UAAU,CAAC,cAAc,CACnE,CAAC;QACF,OAAO,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,UAAU,CACR,KAAwB,EACxB,KAAwE;QAExE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IACE,OAAO,KAAK,SAAS;YACrB,OAAO,CAAC,MAAM,EAAE,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,KAAK;YAC7C,OAAO,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,KAAK;YACzC,OAAO,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;YAC7C,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAE/B,MAAM,IAAI,mBAAmB,CAAC,mBAAmB,EAAE,yCAAyC,CAAC,CAAC;QAChG,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACjF,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,KAAK;YACzD,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,MAAM,CAAC,kBAAkB,EAAE;oBACnC,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,SAAS,CAAC,OAAO;iBAC3B,CAAC;aACH,CAAC;QACJ,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,UAA4B,EAAE,OAAoB,EAAE,OAAe;QAC5E,OAAO,MAAM,CAAC,kBAAkB,EAAE;YAChC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;YACxB,QAAQ,EAAE;gBACR,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,MAAM,CAAC,uBAAuB,EAAE;oBACrC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;oBACnC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC;oBAC5E,cAAc,EAAE,UAAU,CAAC,cAAc;oBACzC,OAAO;iBACR,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,YAAY,CACV,KAAwE,EACxE,MAAc;QAEd,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,uBAAuB;YACrD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,OAAO,MAAM,CAAC,iBAAiB,EAAE;YAC/B,GAAG,KAAK;YACR,IAAI,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAAoB;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAyB,EAAE,OAAY;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,uBAAuB,EAAE;YACrC,UAAU;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,MAAM,CAAC,wBAAwB,EAAE;oBACtC,EAAE,EAAE,MAAM,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;oBAC/D,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY;oBACzC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;oBACnC,QAAQ,EAAE,IAAI;oBACd,UAAU;oBACV,OAAO;iBACR,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,MAA4B,EAAE,MAAc,EAAE,MAAc;QAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,EAAE;YAC1C,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI;YACxB,OAAO,EAAE,SAAS,CAAC,QAAQ;YAC3B,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAC/B,QAAQ,CAAC,IAAI,EACb,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAC/C,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,MAA4B,EAAE,MAAc;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,MAAM,CACvF,CAAC;QACF,IAAI,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACvF,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAA4B,EAAE,MAAc,EAAE,MAAc;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAC9B,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,KAAK,MAAM,CACzF,CAAC;QACF,IACE,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,MAAM;YAC9B,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU;YAC/B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS;YAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,MAAM;YAErD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,IACE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,KAAK;YACvD,MAAM,CAAC,OAAO,CAAC,IAAI,CACjB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,MAAM,CACxF;YAED,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAc,EAAE,OAA4B;QACxD,IACE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;YAC3B,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC;YAExF,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC;YACzC,OAAO,CAAC,UAAU,GAAG,CAAC;YACtB,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS;gBACnC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YAEhF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC;YACnE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC7E,CAAC;IAED;;OAEG;IACH,MAAM,CACJ,MAAc,EACd,EAAU,EACV,OAA4B,EAC5B,OAAe,EACf,MAAe;QAEf,OAAO,MAAM,CAAC,kBAAkB,EAAE;YAChC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;YACxB,QAAQ,EAAE;gBACR,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,MAAM,CAAC,2BAA2B,EAAE;oBACzC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;oBACnC,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;oBACpD,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;oBAC7C,KAAK,EACH,OAAO,CAAC,KAAK,KAAK,OAAO;wBACvB,CAAC,CAAC,kBAAkB,CAAC,oBAAoB;wBACzC,CAAC,CAAC,kBAAkB,CAAC,mBAAmB;oBAC5C,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;oBACtC,qBAAqB,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;oBAC1C,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;wBAClC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC;4BACE,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;yBAClE,CAAC;iBACP,CAAC;aACH;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAA4B,EAAE,QAAgB;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,KAAK,QAAQ,CAC9F,CAAC;QACF,IAAI,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAA4B,EAAE,UAAwC,EAAE;QACrF,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAAC;QAC/D,IAAI,aAAa,KAAK,SAAS,IAAI,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,kBAAkB,KAAK,SAAS,IAAI,SAAS,GAAG,QAAQ,CAAC,kBAAkB;YACtF,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC5C,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,GAAG,KAAK;YACrC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC;QAC1C,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS;YACvC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,MAAM,KAAK,GACT,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/F,MAAM,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QACjD,IAAI,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,YAAY,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,IACE,QAAQ,CAAC,uBAAuB,KAAK,SAAS;YAC9C,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;gBAC7D,QAAQ,CAAC,uBAAuB;YAElC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAA4B;QACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,IAAI,QAAQ,EAAE,GAAG,EAAE,KAAK,KAAK,SAAS;YACpC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,OAAO,mBAAmB,CAAC,IAAI,CAC7B,MAAM,CAAC,wBAAwB,EAAE;YAC/B,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK;YACzB,MAAM,EAAE,QAAQ,CAAC,GAAG;YACpB,OAAO,EAAE,QAAQ,CAAC,GAAG;YACrB,YAAY,EAAE,QAAQ,CAAC,KAAK;YAC5B,YAAY,EAAE,QAAQ,CAAC,KAAK;YAC5B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5C,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE;SAC/B,CAAC,CACH,CAAC;IACJ,CAAC;CACF"}