@aipt/platform-kernel 0.1.5

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 (182) hide show
  1. package/README.md +25 -0
  2. package/dist/adoption-contracts.d.ts +140 -0
  3. package/dist/adoption-contracts.d.ts.map +1 -0
  4. package/dist/adoption-contracts.js +2 -0
  5. package/dist/adoption-contracts.js.map +1 -0
  6. package/dist/adoption-metadata.d.ts +72 -0
  7. package/dist/adoption-metadata.d.ts.map +1 -0
  8. package/dist/adoption-metadata.js +408 -0
  9. package/dist/adoption-metadata.js.map +1 -0
  10. package/dist/adoption-schemas.d.ts +1608 -0
  11. package/dist/adoption-schemas.d.ts.map +1 -0
  12. package/dist/adoption-schemas.js +319 -0
  13. package/dist/adoption-schemas.js.map +1 -0
  14. package/dist/application-config-binding.d.ts +54 -0
  15. package/dist/application-config-binding.d.ts.map +1 -0
  16. package/dist/application-config-binding.js +139 -0
  17. package/dist/application-config-binding.js.map +1 -0
  18. package/dist/application-config-contract.d.ts +159 -0
  19. package/dist/application-config-contract.d.ts.map +1 -0
  20. package/dist/application-config-contract.js +142 -0
  21. package/dist/application-config-contract.js.map +1 -0
  22. package/dist/blank-profile.d.ts +60 -0
  23. package/dist/blank-profile.d.ts.map +1 -0
  24. package/dist/blank-profile.js +182 -0
  25. package/dist/blank-profile.js.map +1 -0
  26. package/dist/catalog-source.d.ts +167 -0
  27. package/dist/catalog-source.d.ts.map +1 -0
  28. package/dist/catalog-source.js +252 -0
  29. package/dist/catalog-source.js.map +1 -0
  30. package/dist/code-module-publication.d.ts +113 -0
  31. package/dist/code-module-publication.d.ts.map +1 -0
  32. package/dist/code-module-publication.js +71 -0
  33. package/dist/code-module-publication.js.map +1 -0
  34. package/dist/contracts.d.ts +150 -0
  35. package/dist/contracts.d.ts.map +1 -0
  36. package/dist/contracts.js +3 -0
  37. package/dist/contracts.js.map +1 -0
  38. package/dist/delivery.d.ts +201 -0
  39. package/dist/delivery.d.ts.map +1 -0
  40. package/dist/delivery.js +364 -0
  41. package/dist/delivery.js.map +1 -0
  42. package/dist/dependency-resolution.d.ts +46 -0
  43. package/dist/dependency-resolution.d.ts.map +1 -0
  44. package/dist/dependency-resolution.js +35 -0
  45. package/dist/dependency-resolution.js.map +1 -0
  46. package/dist/doctor.d.ts +50 -0
  47. package/dist/doctor.d.ts.map +1 -0
  48. package/dist/doctor.js +62 -0
  49. package/dist/doctor.js.map +1 -0
  50. package/dist/durability-trace.d.ts +31 -0
  51. package/dist/durability-trace.d.ts.map +1 -0
  52. package/dist/durability-trace.js +45 -0
  53. package/dist/durability-trace.js.map +1 -0
  54. package/dist/engineering-operations.d.ts +43 -0
  55. package/dist/engineering-operations.d.ts.map +1 -0
  56. package/dist/engineering-operations.js +19 -0
  57. package/dist/engineering-operations.js.map +1 -0
  58. package/dist/engineering-product.d.ts +261 -0
  59. package/dist/engineering-product.d.ts.map +1 -0
  60. package/dist/engineering-product.js +61 -0
  61. package/dist/engineering-product.js.map +1 -0
  62. package/dist/example-recipe.d.ts +147 -0
  63. package/dist/example-recipe.d.ts.map +1 -0
  64. package/dist/example-recipe.js +58 -0
  65. package/dist/example-recipe.js.map +1 -0
  66. package/dist/feature-planner.d.ts +59 -0
  67. package/dist/feature-planner.d.ts.map +1 -0
  68. package/dist/feature-planner.js +160 -0
  69. package/dist/feature-planner.js.map +1 -0
  70. package/dist/filesystem-contracts.d.ts +77 -0
  71. package/dist/filesystem-contracts.d.ts.map +1 -0
  72. package/dist/filesystem-contracts.js +2 -0
  73. package/dist/filesystem-contracts.js.map +1 -0
  74. package/dist/filesystem-transaction.d.ts +52 -0
  75. package/dist/filesystem-transaction.d.ts.map +1 -0
  76. package/dist/filesystem-transaction.js +749 -0
  77. package/dist/filesystem-transaction.js.map +1 -0
  78. package/dist/index.d.ts +44 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +42 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/integrity.d.ts +3 -0
  83. package/dist/integrity.d.ts.map +1 -0
  84. package/dist/integrity.js +17 -0
  85. package/dist/integrity.js.map +1 -0
  86. package/dist/local-artifact-registry.d.ts +55 -0
  87. package/dist/local-artifact-registry.d.ts.map +1 -0
  88. package/dist/local-artifact-registry.js +87 -0
  89. package/dist/local-artifact-registry.js.map +1 -0
  90. package/dist/locked-repository-state.d.ts +21 -0
  91. package/dist/locked-repository-state.d.ts.map +1 -0
  92. package/dist/locked-repository-state.js +62 -0
  93. package/dist/locked-repository-state.js.map +1 -0
  94. package/dist/managed-region.d.ts +11 -0
  95. package/dist/managed-region.d.ts.map +1 -0
  96. package/dist/managed-region.js +45 -0
  97. package/dist/managed-region.js.map +1 -0
  98. package/dist/package-adoption.d.ts +179 -0
  99. package/dist/package-adoption.d.ts.map +1 -0
  100. package/dist/package-adoption.js +332 -0
  101. package/dist/package-adoption.js.map +1 -0
  102. package/dist/package-release.d.ts +42 -0
  103. package/dist/package-release.d.ts.map +1 -0
  104. package/dist/package-release.js +85 -0
  105. package/dist/package-release.js.map +1 -0
  106. package/dist/plan-state.d.ts +10 -0
  107. package/dist/plan-state.d.ts.map +1 -0
  108. package/dist/plan-state.js +33 -0
  109. package/dist/plan-state.js.map +1 -0
  110. package/dist/planner.d.ts +19 -0
  111. package/dist/planner.d.ts.map +1 -0
  112. package/dist/planner.js +111 -0
  113. package/dist/planner.js.map +1 -0
  114. package/dist/platform-package-sources.d.ts +49 -0
  115. package/dist/platform-package-sources.d.ts.map +1 -0
  116. package/dist/platform-package-sources.js +98 -0
  117. package/dist/platform-package-sources.js.map +1 -0
  118. package/dist/project-bootstrap.d.ts +42 -0
  119. package/dist/project-bootstrap.d.ts.map +1 -0
  120. package/dist/project-bootstrap.js +270 -0
  121. package/dist/project-bootstrap.js.map +1 -0
  122. package/dist/project-control.d.ts +149 -0
  123. package/dist/project-control.d.ts.map +1 -0
  124. package/dist/project-control.js +46 -0
  125. package/dist/project-control.js.map +1 -0
  126. package/dist/project-maintenance.d.ts +30 -0
  127. package/dist/project-maintenance.d.ts.map +1 -0
  128. package/dist/project-maintenance.js +29 -0
  129. package/dist/project-maintenance.js.map +1 -0
  130. package/dist/project-recovery.d.ts +31 -0
  131. package/dist/project-recovery.d.ts.map +1 -0
  132. package/dist/project-recovery.js +80 -0
  133. package/dist/project-recovery.js.map +1 -0
  134. package/dist/recovery-override.d.ts +20 -0
  135. package/dist/recovery-override.d.ts.map +1 -0
  136. package/dist/recovery-override.js +27 -0
  137. package/dist/recovery-override.js.map +1 -0
  138. package/dist/release-loader.d.ts +9 -0
  139. package/dist/release-loader.d.ts.map +1 -0
  140. package/dist/release-loader.js +86 -0
  141. package/dist/release-loader.js.map +1 -0
  142. package/dist/resolution-evidence.d.ts +67 -0
  143. package/dist/resolution-evidence.d.ts.map +1 -0
  144. package/dist/resolution-evidence.js +98 -0
  145. package/dist/resolution-evidence.js.map +1 -0
  146. package/dist/resolution-worker-build.d.ts +33 -0
  147. package/dist/resolution-worker-build.d.ts.map +1 -0
  148. package/dist/resolution-worker-build.js +42 -0
  149. package/dist/resolution-worker-build.js.map +1 -0
  150. package/dist/runtime-observability.d.ts +147 -0
  151. package/dist/runtime-observability.d.ts.map +1 -0
  152. package/dist/runtime-observability.js +264 -0
  153. package/dist/runtime-observability.js.map +1 -0
  154. package/dist/schemas.d.ts +740 -0
  155. package/dist/schemas.d.ts.map +1 -0
  156. package/dist/schemas.js +348 -0
  157. package/dist/schemas.js.map +1 -0
  158. package/dist/solution-catalog.d.ts +169 -0
  159. package/dist/solution-catalog.d.ts.map +1 -0
  160. package/dist/solution-catalog.js +60 -0
  161. package/dist/solution-catalog.js.map +1 -0
  162. package/dist/standalone-npm-profile.d.ts +146 -0
  163. package/dist/standalone-npm-profile.d.ts.map +1 -0
  164. package/dist/standalone-npm-profile.js +425 -0
  165. package/dist/standalone-npm-profile.js.map +1 -0
  166. package/dist/testing.d.ts +5 -0
  167. package/dist/testing.d.ts.map +1 -0
  168. package/dist/testing.js +3 -0
  169. package/dist/testing.js.map +1 -0
  170. package/dist/upgrade-planner.d.ts +45 -0
  171. package/dist/upgrade-planner.d.ts.map +1 -0
  172. package/dist/upgrade-planner.js +207 -0
  173. package/dist/upgrade-planner.js.map +1 -0
  174. package/dist/workspace-publication.d.ts +18 -0
  175. package/dist/workspace-publication.d.ts.map +1 -0
  176. package/dist/workspace-publication.js +33 -0
  177. package/dist/workspace-publication.js.map +1 -0
  178. package/dist/workspace-topology.d.ts +22 -0
  179. package/dist/workspace-topology.d.ts.map +1 -0
  180. package/dist/workspace-topology.js +117 -0
  181. package/dist/workspace-topology.js.map +1 -0
  182. package/package.json +46 -0
@@ -0,0 +1,147 @@
1
+ export type RuntimeErrorKind = "uncaught-error" | "unhandled-rejection" | "reported-error";
2
+ export type ClientStackFrame = {
3
+ file: string;
4
+ line?: number;
5
+ column?: number;
6
+ function?: string;
7
+ };
8
+ export type RuntimeErrorEnvelope = {
9
+ schemaVersion: 1;
10
+ eventId: string;
11
+ occurredAt: string;
12
+ applicationId: string;
13
+ releaseId?: `sha256:${string}`;
14
+ deploymentId?: `sha256:${string}`;
15
+ kind: RuntimeErrorKind;
16
+ error: {
17
+ type: string;
18
+ message: string;
19
+ frames: ClientStackFrame[];
20
+ };
21
+ page: {
22
+ origin: string;
23
+ path: string;
24
+ };
25
+ traceparent?: string;
26
+ };
27
+ export type SanitizedStackFrame = {
28
+ file: string;
29
+ line?: number;
30
+ column?: number;
31
+ function?: string;
32
+ source?: string;
33
+ sourceLine?: number;
34
+ sourceColumn?: number;
35
+ };
36
+ export type RuntimeErrorEvent = {
37
+ schemaVersion: 1;
38
+ eventId: string;
39
+ occurredAt: string;
40
+ receivedAt: string;
41
+ applicationId: string;
42
+ releaseId?: `sha256:${string}`;
43
+ deploymentId?: `sha256:${string}`;
44
+ kind: RuntimeErrorKind;
45
+ error: {
46
+ type: string;
47
+ message: string;
48
+ frames: SanitizedStackFrame[];
49
+ };
50
+ page: {
51
+ origin: string;
52
+ path: string;
53
+ };
54
+ traceparent?: string;
55
+ fingerprint: `sha256:${string}`;
56
+ state: "persisted" | "symbolicated" | "map-missing";
57
+ correlation: "unknown" | "release-verified" | "deployment-verified";
58
+ };
59
+ export type RuntimeErrorFilter = {
60
+ applicationId?: string;
61
+ releaseId?: string;
62
+ deploymentId?: string;
63
+ limit?: number;
64
+ cursor?: string;
65
+ };
66
+ export type RuntimeErrorPage = {
67
+ events: RuntimeErrorEvent[];
68
+ nextCursor?: string;
69
+ };
70
+ export type RuntimeErrorSummary = {
71
+ total: number;
72
+ groups: Array<{
73
+ fingerprint: string;
74
+ count: number;
75
+ latestAt: string;
76
+ event: RuntimeErrorEvent;
77
+ }>;
78
+ };
79
+ export type AcceptedRuntimeError = {
80
+ eventId: string;
81
+ state: RuntimeErrorEvent["state"];
82
+ duplicate: boolean;
83
+ };
84
+ export interface RuntimeErrorIngestPort {
85
+ accept(envelope: unknown, context: {
86
+ receivedAt: string;
87
+ allowedOrigins: readonly string[];
88
+ resolveCorrelation?: (envelope: RuntimeErrorEnvelope) => Promise<RuntimeErrorEvent["correlation"]>;
89
+ }): Promise<AcceptedRuntimeError>;
90
+ }
91
+ export interface RuntimeErrorQueryPort {
92
+ list(filter: RuntimeErrorFilter): Promise<RuntimeErrorPage>;
93
+ get(eventId: string): Promise<RuntimeErrorEvent | null>;
94
+ summary(filter: RuntimeErrorFilter): Promise<RuntimeErrorSummary>;
95
+ }
96
+ export interface RuntimeErrorAdapterContract extends RuntimeErrorIngestPort, RuntimeErrorQueryPort {
97
+ readonly adapterId: string;
98
+ }
99
+ export type RuntimeSourceMapRegistration = {
100
+ releaseId: `sha256:${string}`;
101
+ asset: string;
102
+ assetDigest: `sha256:${string}`;
103
+ mapDigest: `sha256:${string}`;
104
+ registeredAt: string;
105
+ };
106
+ export declare class RuntimeObservabilityError extends Error {
107
+ readonly code: "RUNTIME_ERROR_INVALID" | "RUNTIME_ERROR_TOO_LARGE" | "RUNTIME_ERROR_IDENTITY_UNKNOWN" | "RUNTIME_ERROR_RATE_LIMITED" | "OBSERVABILITY_STORE_FAILED" | "OBSERVABILITY_STORE_DAMAGED" | "OBSERVABILITY_CURSOR_EXPIRED" | "RELEASE_MAP_MISMATCH";
108
+ constructor(code: "RUNTIME_ERROR_INVALID" | "RUNTIME_ERROR_TOO_LARGE" | "RUNTIME_ERROR_IDENTITY_UNKNOWN" | "RUNTIME_ERROR_RATE_LIMITED" | "OBSERVABILITY_STORE_FAILED" | "OBSERVABILITY_STORE_DAMAGED" | "OBSERVABILITY_CURSOR_EXPIRED" | "RELEASE_MAP_MISMATCH", message: string);
109
+ }
110
+ export declare function resolveRuntimeErrorCorrelation(workspaceRoot: string, envelope: RuntimeErrorEnvelope): Promise<RuntimeErrorEvent["correlation"]>;
111
+ export declare function parseRuntimeErrorEnvelope(value: unknown): RuntimeErrorEnvelope;
112
+ export declare function sanitizeRuntimeError(envelope: RuntimeErrorEnvelope, receivedAt: string, correlation?: RuntimeErrorEvent["correlation"]): RuntimeErrorEvent;
113
+ export declare class LocalRuntimeErrorStore implements RuntimeErrorAdapterContract {
114
+ #private;
115
+ readonly workspaceRoot: string;
116
+ readonly adapterId = "observability.local";
117
+ constructor(workspaceRoot: string);
118
+ private directory;
119
+ private releases;
120
+ accept(value: unknown, context: {
121
+ receivedAt: string;
122
+ allowedOrigins: readonly string[];
123
+ resolveCorrelation?: (envelope: RuntimeErrorEnvelope) => Promise<RuntimeErrorEvent["correlation"]>;
124
+ }): Promise<AcceptedRuntimeError>;
125
+ private quarantine;
126
+ private all;
127
+ private selected;
128
+ private cursor;
129
+ private parseCursor;
130
+ list(filter: RuntimeErrorFilter): Promise<RuntimeErrorPage>;
131
+ get(eventId: string): Promise<RuntimeErrorEvent | null>;
132
+ summary(filter: RuntimeErrorFilter): Promise<RuntimeErrorSummary>;
133
+ private rotate;
134
+ registerSourceMap(input: {
135
+ releaseId: `sha256:${string}`;
136
+ asset: string;
137
+ assetDigest: `sha256:${string}`;
138
+ map: unknown;
139
+ registeredAt: string;
140
+ }): Promise<RuntimeSourceMapRegistration>;
141
+ private resymbolicate;
142
+ }
143
+ export declare function verifyRuntimeErrorAdapterContract(adapter: RuntimeErrorAdapterContract, envelope: RuntimeErrorEnvelope, context: {
144
+ receivedAt: string;
145
+ allowedOrigins: readonly string[];
146
+ }): Promise<void>;
147
+ //# sourceMappingURL=runtime-observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-observability.d.ts","sourceRoot":"","sources":["../src/runtime-observability.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;AAC3F,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACnG,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,UAAU,MAAM,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,UAAU,MAAM,EAAE,CAAC;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;IACrE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACnK,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,EAAE,CAAC,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,UAAU,MAAM,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,UAAU,MAAM,EAAE,CAAC;IAClC,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,mBAAmB,EAAE,CAAA;KAAE,CAAC;IACxE,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,UAAU,MAAM,EAAE,CAAC;IAChC,KAAK,EAAE,WAAW,GAAG,cAAc,GAAG,aAAa,CAAC;IACpD,WAAW,EAAE,SAAS,GAAG,kBAAkB,GAAG,qBAAqB,CAAC;CACrE,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACxI,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACpF,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC;AACvJ,MAAM,MAAM,oBAAoB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9G,MAAM,WAAW,sBAAsB;IAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;CAAE;AAC5Q,MAAM,WAAW,qBAAqB;IAAG,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAAC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;CAAE;AAClO,MAAM,WAAW,2BAA4B,SAAQ,sBAAsB,EAAE,qBAAqB;IAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE;AACjI,MAAM,MAAM,4BAA4B,GAAG;IAAE,SAAS,EAAE,UAAU,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,UAAU,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,UAAU,MAAM,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAElL,qBAAa,yBAA0B,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,uBAAuB,GAAG,yBAAyB,GAAG,gCAAgC,GAAG,4BAA4B,GAAG,4BAA4B,GAAG,6BAA6B,GAAG,8BAA8B,GAAG,sBAAsB;gBAApP,IAAI,EAAE,uBAAuB,GAAG,yBAAyB,GAAG,gCAAgC,GAAG,4BAA4B,GAAG,4BAA4B,GAAG,6BAA6B,GAAG,8BAA8B,GAAG,sBAAsB,EAAE,OAAO,EAAE,MAAM;CAC3R;AASD,wBAAsB,8BAA8B,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAcrJ;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAkB9E;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,GAAE,iBAAiB,CAAC,aAAa,CAAa,GAAG,iBAAiB,CAKrK;AAED,qBAAa,sBAAuB,YAAW,2BAA2B;;IAG5D,QAAQ,CAAC,aAAa,EAAE,MAAM;IAF1C,QAAQ,CAAC,SAAS,yBAAyB;gBAEtB,aAAa,EAAE,MAAM;IAC1C,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IACV,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;YAyBrN,UAAU;YACV,GAAG;IACjB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IACb,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC3D,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACvD,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;YACzD,MAAM;IACd,iBAAiB,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,UAAU,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,UAAU,MAAM,EAAE,CAAC;QAAC,GAAG,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC;YAS9K,aAAa;CAQ5B;AAED,wBAAsB,iCAAiC,CAAC,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAmb"}
@@ -0,0 +1,264 @@
1
+ import { mkdir, open, readFile, readdir, rename, rm } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { canonicalize, sha256Digest } from "./integrity.js";
4
+ import { TraceMap, originalPositionFor } from "@jridgewell/trace-mapping";
5
+ import { readDeliveryPlan, readDeliveryReceipt } from "./delivery.js";
6
+ export class RuntimeObservabilityError extends Error {
7
+ code;
8
+ constructor(code, message) {
9
+ super(message);
10
+ this.code = code;
11
+ this.name = "RuntimeObservabilityError";
12
+ }
13
+ }
14
+ const digest = /^sha256:[a-f0-9]{64}$/;
15
+ const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
16
+ const traceparent = /^00-[0-9a-f]{32}-[0-9a-f]{16}-[0-9a-f]{2}$/;
17
+ const allowedKeys = (value, keys) => Object.keys(value).every((key) => keys.includes(key));
18
+ const plain = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
19
+ const clean = (value, max) => value.replace(/[\u0000-\u001f\u007f]/g, " ").replace(/([a-z]+:\/\/)[^/@\s]+@/gi, "$1").slice(0, max);
20
+ export async function resolveRuntimeErrorCorrelation(workspaceRoot, envelope) {
21
+ if (envelope.releaseId === undefined && envelope.deploymentId === undefined)
22
+ return "unknown";
23
+ if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(envelope.applicationId))
24
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_IDENTITY_UNKNOWN", "Runtime Error application identity is unavailable");
25
+ const projectRoot = path.join(path.resolve(workspaceRoot), "apps", envelope.applicationId);
26
+ if (envelope.deploymentId !== undefined) {
27
+ try {
28
+ const plan = await readDeliveryPlan({ projectRoot, planId: envelope.deploymentId });
29
+ const receipt = await readDeliveryReceipt({ projectRoot, planId: plan.planId });
30
+ if (receipt === null || plan.kind !== "application-deploy" || plan.artifact.type !== "web-application" || plan.artifact.identity !== envelope.applicationId || plan.artifact.digest !== envelope.releaseId || receipt.artifactDigest !== plan.artifact.digest)
31
+ throw new Error("mismatch");
32
+ return "deployment-verified";
33
+ }
34
+ catch {
35
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_IDENTITY_UNKNOWN", "Runtime Error deployment identity does not resolve to a matching verified delivery");
36
+ }
37
+ }
38
+ try {
39
+ await readdir(path.join(path.resolve(workspaceRoot), ".dyyto", "observability", "releases", envelope.releaseId));
40
+ return "release-verified";
41
+ }
42
+ catch {
43
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_IDENTITY_UNKNOWN", "Runtime Error release identity is not registered");
44
+ }
45
+ }
46
+ export function parseRuntimeErrorEnvelope(value) {
47
+ if (!plain(value) || !allowedKeys(value, ["schemaVersion", "eventId", "occurredAt", "applicationId", "releaseId", "deploymentId", "kind", "error", "page", "traceparent"]))
48
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error Envelope contains unknown fields");
49
+ if (!plain(value.error) || !plain(value.page) || !allowedKeys(value.error, ["type", "message", "frames"]) || !allowedKeys(value.page, ["origin", "path"]))
50
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error Envelope structure is invalid");
51
+ if (value.schemaVersion !== 1 || typeof value.eventId !== "string" || !uuid.test(value.eventId) || typeof value.occurredAt !== "string" || Number.isNaN(Date.parse(value.occurredAt)) || typeof value.applicationId !== "string" || value.applicationId.length < 1 || value.applicationId.length > 128)
52
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error Envelope identity is invalid");
53
+ if (!["uncaught-error", "unhandled-rejection", "reported-error"].includes(value.kind))
54
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error kind is invalid");
55
+ for (const identity of [value.releaseId, value.deploymentId])
56
+ if (identity !== undefined && (typeof identity !== "string" || !digest.test(identity)))
57
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_IDENTITY_UNKNOWN", "Runtime Error correlation identity is invalid");
58
+ if (value.traceparent !== undefined && (typeof value.traceparent !== "string" || !traceparent.test(value.traceparent)))
59
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "traceparent is invalid");
60
+ if (typeof value.error.type !== "string" || typeof value.error.message !== "string" || !Array.isArray(value.error.frames) || value.error.frames.length > 50 || typeof value.page.origin !== "string" || typeof value.page.path !== "string")
61
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error content is invalid");
62
+ if (value.error.message.length > 4096 || value.error.type.length > 256 || value.page.path.length > 2048)
63
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_TOO_LARGE", "Runtime Error content exceeds a hard limit");
64
+ const frames = value.error.frames.map((frame) => {
65
+ if (!plain(frame) || !allowedKeys(frame, ["file", "line", "column", "function"]) || typeof frame.file !== "string" || frame.file.length > 2048)
66
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error stack frame is invalid");
67
+ for (const field of [frame.line, frame.column])
68
+ if (field !== undefined && (!Number.isSafeInteger(field) || Number(field) < 1))
69
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error stack location is invalid");
70
+ if (frame.function !== undefined && (typeof frame.function !== "string" || frame.function.length > 256))
71
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error stack function is invalid");
72
+ return frame;
73
+ });
74
+ let origin;
75
+ try {
76
+ origin = new URL(value.page.origin);
77
+ }
78
+ catch {
79
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error page origin is invalid");
80
+ }
81
+ if (origin.origin !== value.page.origin || !value.page.path.startsWith("/") || value.page.path.includes("?") || value.page.path.includes("#"))
82
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error page must contain only origin and path");
83
+ return { ...value, error: { ...value.error, frames } };
84
+ }
85
+ export function sanitizeRuntimeError(envelope, receivedAt, correlation = "unknown") {
86
+ const frames = envelope.error.frames.map((frame) => ({ file: clean(frame.file, 2048), ...(frame.line === undefined ? {} : { line: frame.line }), ...(frame.column === undefined ? {} : { column: frame.column }), ...(frame.function === undefined ? {} : { function: clean(frame.function, 256) }) }));
87
+ const error = { type: clean(envelope.error.type, 256), message: clean(envelope.error.message, 4096), frames };
88
+ const fingerprint = sha256Digest(canonicalize({ type: error.type, message: error.message, frames: frames.slice(0, 5).map(({ file, line, column }) => ({ file, line, column })) }));
89
+ return { schemaVersion: 1, eventId: envelope.eventId, occurredAt: envelope.occurredAt, receivedAt, applicationId: clean(envelope.applicationId, 128), ...(envelope.releaseId === undefined ? {} : { releaseId: envelope.releaseId }), ...(envelope.deploymentId === undefined ? {} : { deploymentId: envelope.deploymentId }), kind: envelope.kind, error, page: { origin: envelope.page.origin, path: clean(envelope.page.path, 2048) }, ...(envelope.traceparent === undefined ? {} : { traceparent: envelope.traceparent }), fingerprint, state: envelope.releaseId === undefined ? "persisted" : "map-missing", correlation };
90
+ }
91
+ export class LocalRuntimeErrorStore {
92
+ workspaceRoot;
93
+ adapterId = "observability.local";
94
+ #queue = Promise.resolve();
95
+ constructor(workspaceRoot) {
96
+ this.workspaceRoot = workspaceRoot;
97
+ }
98
+ directory() { return path.join(path.resolve(this.workspaceRoot), ".dyyto", "observability", "events"); }
99
+ releases() { return path.join(path.resolve(this.workspaceRoot), ".dyyto", "observability", "releases"); }
100
+ async accept(value, context) {
101
+ const envelope = parseRuntimeErrorEnvelope(value);
102
+ if (!context.allowedOrigins.includes(envelope.page.origin))
103
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error origin is not registered");
104
+ const correlation = context.resolveCorrelation === undefined ? "unknown" : await context.resolveCorrelation(envelope);
105
+ const event = sanitizeRuntimeError(envelope, context.receivedAt, correlation);
106
+ return this.#enqueue(async () => {
107
+ const directory = this.directory();
108
+ await mkdir(directory, { recursive: true, mode: 0o700 });
109
+ const target = path.join(directory, `${event.eventId}.json`);
110
+ try {
111
+ const stored = JSON.parse(await readFile(target, "utf8"));
112
+ const current = { ...stored, correlation: stored.correlation ?? "unknown" };
113
+ if (canonicalize({ ...current, receivedAt: event.receivedAt }) !== canonicalize(event))
114
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "eventId is already used for different content");
115
+ return { eventId: event.eventId, state: current.state, duplicate: true };
116
+ }
117
+ catch (error) {
118
+ if (error.code !== "ENOENT")
119
+ throw error;
120
+ }
121
+ const temporary = `${target}.tmp-${process.pid}-${crypto.randomUUID()}`;
122
+ const handle = await open(temporary, "wx", 0o600);
123
+ try {
124
+ await handle.writeFile(`${canonicalize(event)}\n`, "utf8");
125
+ await handle.sync();
126
+ }
127
+ finally {
128
+ await handle.close();
129
+ }
130
+ await rename(temporary, target);
131
+ const directoryHandle = await open(directory, "r");
132
+ try {
133
+ await directoryHandle.sync();
134
+ }
135
+ finally {
136
+ await directoryHandle.close();
137
+ }
138
+ await this.rotate();
139
+ if (event.releaseId !== undefined)
140
+ await this.resymbolicate(event.releaseId);
141
+ const committed = JSON.parse(await readFile(target, "utf8"));
142
+ return { eventId: event.eventId, state: committed.state, duplicate: false };
143
+ });
144
+ }
145
+ #enqueue(work) { const next = this.#queue.then(work, work); this.#queue = next.catch(() => undefined); return next; }
146
+ async quarantine(file) { const source = path.join(this.directory(), file); const directory = path.join(path.resolve(this.workspaceRoot), ".dyyto", "observability", "quarantine"); await mkdir(directory, { recursive: true, mode: 0o700 }); await rename(source, path.join(directory, `${Date.now()}-${file}`)); }
147
+ async all() { const files = await readdir(this.directory()).catch(() => []); const events = []; for (const file of files) {
148
+ if (!file.endsWith(".json")) {
149
+ if (file.includes(".tmp-"))
150
+ await this.quarantine(file).catch(() => undefined);
151
+ continue;
152
+ }
153
+ try {
154
+ const event = JSON.parse(await readFile(path.join(this.directory(), file), "utf8"));
155
+ if (event.eventId !== file.slice(0, -5))
156
+ throw new Error("identity mismatch");
157
+ events.push({ ...event, correlation: event.correlation ?? "unknown" });
158
+ }
159
+ catch {
160
+ await this.quarantine(file).catch(() => undefined);
161
+ }
162
+ } return events.sort((a, b) => b.occurredAt.localeCompare(a.occurredAt) || a.eventId.localeCompare(b.eventId)); }
163
+ selected(events, filter) { return events.filter((event) => (!filter.applicationId || event.applicationId === filter.applicationId) && (!filter.releaseId || event.releaseId === filter.releaseId) && (!filter.deploymentId || event.deploymentId === filter.deploymentId)); }
164
+ cursor(offset, snapshot) { const content = canonicalize({ v: 1, offset, snapshot }); return Buffer.from(canonicalize({ content, digest: sha256Digest(content) })).toString("base64url"); }
165
+ parseCursor(value, snapshot) { try {
166
+ const decoded = JSON.parse(Buffer.from(value, "base64url").toString("utf8"));
167
+ if (typeof decoded.content !== "string" || decoded.digest !== sha256Digest(decoded.content))
168
+ throw new Error("tampered");
169
+ const content = JSON.parse(decoded.content);
170
+ if (content.v !== 1 || !Number.isSafeInteger(content.offset) || content.offset < 0 || content.snapshot !== snapshot)
171
+ throw new Error("expired");
172
+ return content.offset;
173
+ }
174
+ catch {
175
+ throw new RuntimeObservabilityError("OBSERVABILITY_CURSOR_EXPIRED", "Runtime Error query cursor is invalid or expired");
176
+ } }
177
+ async list(filter) { const limit = Math.max(1, Math.min(filter.limit ?? 100, 100)); const selected = this.selected(await this.all(), filter); const snapshot = sha256Digest(canonicalize(selected.map((event) => event.eventId))); const offset = filter.cursor === undefined ? 0 : this.parseCursor(filter.cursor, snapshot); const events = selected.slice(offset, offset + limit); return { events, ...(offset + events.length < selected.length ? { nextCursor: this.cursor(offset + events.length, snapshot) } : {}) }; }
178
+ async get(eventId) { if (!uuid.test(eventId))
179
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Runtime Error eventId is invalid"); const file = `${eventId}.json`; try {
180
+ const event = JSON.parse(await readFile(path.join(this.directory(), file), "utf8"));
181
+ if (event.eventId !== eventId)
182
+ throw new Error("identity mismatch");
183
+ return { ...event, correlation: event.correlation ?? "unknown" };
184
+ }
185
+ catch (error) {
186
+ if (error.code === "ENOENT")
187
+ return null;
188
+ await this.quarantine(file).catch(() => undefined);
189
+ throw new RuntimeObservabilityError("OBSERVABILITY_STORE_DAMAGED", "Runtime Error record is damaged and has been quarantined");
190
+ } }
191
+ async summary(filter) { const events = this.selected(await this.all(), filter); const grouped = new Map(); for (const event of events) {
192
+ const current = grouped.get(event.fingerprint);
193
+ if (current)
194
+ current.count += 1;
195
+ else
196
+ grouped.set(event.fingerprint, { count: 1, latestAt: event.occurredAt, event });
197
+ } return { total: events.length, groups: [...grouped.entries()].map(([fingerprint, group]) => ({ fingerprint, ...group })) }; }
198
+ async rotate() { const events = await this.all(); const newestReceivedAt = events.reduce((latest, event) => Math.max(latest, Date.parse(event.receivedAt)), 0); const cutoff = newestReceivedAt - 7 * 24 * 60 * 60 * 1000; for (const event of events.slice(10_000))
199
+ await rm(path.join(this.directory(), `${event.eventId}.json`), { force: true }); for (const event of events.slice(0, 10_000))
200
+ if (Date.parse(event.receivedAt) < cutoff)
201
+ await rm(path.join(this.directory(), `${event.eventId}.json`), { force: true }); }
202
+ async registerSourceMap(input) {
203
+ if (!digest.test(input.releaseId) || !digest.test(input.assetDigest) || !/^[A-Za-z0-9._/-]+\.js$/.test(input.asset) || input.asset.includes("..") || !plain(input.map) || "sourcesContent" in input.map)
204
+ throw new RuntimeObservabilityError("RUNTIME_ERROR_INVALID", "Source Map registration is invalid or contains sourcesContent");
205
+ const bytes = Buffer.from(canonicalize(input.map));
206
+ const mapDigest = sha256Digest(bytes);
207
+ const directory = path.join(this.releases(), input.releaseId);
208
+ await mkdir(directory, { recursive: true, mode: 0o700 });
209
+ const key = sha256Digest(input.asset);
210
+ const target = path.join(directory, `${key}.json`);
211
+ const registration = { releaseId: input.releaseId, asset: input.asset, assetDigest: input.assetDigest, mapDigest, registeredAt: input.registeredAt };
212
+ const handle = await open(`${target}.tmp`, "w", 0o600);
213
+ try {
214
+ await handle.writeFile(`${canonicalize({ registration, map: input.map })}\n`);
215
+ await handle.sync();
216
+ }
217
+ finally {
218
+ await handle.close();
219
+ }
220
+ await rename(`${target}.tmp`, target);
221
+ await this.resymbolicate(input.releaseId);
222
+ return registration;
223
+ }
224
+ async resymbolicate(releaseId) {
225
+ const maps = await readdir(path.join(this.releases(), releaseId)).catch(() => []);
226
+ const loaded = [];
227
+ for (const file of maps) {
228
+ try {
229
+ loaded.push(JSON.parse(await readFile(path.join(this.releases(), releaseId, file), "utf8")));
230
+ }
231
+ catch { /* invalid map remains unavailable */ }
232
+ }
233
+ for (const event of (await this.all()).filter((item) => item.releaseId === releaseId && item.state === "map-missing")) {
234
+ let mapped = false;
235
+ const frames = event.error.frames.map((frame) => { const candidate = loaded.find((entry) => new URL(frame.file, "http://local").pathname.endsWith(`/${entry.registration.asset}`)); if (!candidate || frame.line === undefined || frame.column === undefined)
236
+ return frame; try {
237
+ const position = originalPositionFor(new TraceMap(candidate.map), { line: frame.line, column: Math.max(0, frame.column - 1) });
238
+ if (position.source === null || position.line === null || position.column === null)
239
+ return frame;
240
+ mapped = true;
241
+ return { ...frame, source: position.source.replace(/^file:\/\//, ""), sourceLine: position.line, sourceColumn: position.column + 1 };
242
+ }
243
+ catch {
244
+ return frame;
245
+ } });
246
+ if (!mapped)
247
+ continue;
248
+ const updated = { ...event, error: { ...event.error, frames }, state: "symbolicated" };
249
+ const target = path.join(this.directory(), `${event.eventId}.json`);
250
+ const handle = await open(`${target}.tmp`, "w", 0o600);
251
+ try {
252
+ await handle.writeFile(`${canonicalize(updated)}\n`);
253
+ await handle.sync();
254
+ }
255
+ finally {
256
+ await handle.close();
257
+ }
258
+ await rename(`${target}.tmp`, target);
259
+ }
260
+ }
261
+ }
262
+ export async function verifyRuntimeErrorAdapterContract(adapter, envelope, context) { const accepted = await adapter.accept(envelope, context); const duplicate = await adapter.accept(envelope, context); const stored = await adapter.get(envelope.eventId); if (accepted.duplicate || !duplicate.duplicate || stored?.eventId !== envelope.eventId || (await adapter.list({ applicationId: envelope.applicationId })).events.length !== 1)
263
+ throw new Error(`Runtime Error Adapter '${adapter.adapterId}' violates the contract`); }
264
+ //# sourceMappingURL=runtime-observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-observability.js","sourceRoot":"","sources":["../src/runtime-observability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AA2CtE,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAC7B;IAArB,YAAqB,IAAoP,EAAE,OAAe;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAAxR,SAAI,GAAJ,IAAI,CAAgP;QAAqC,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAAC,CAAC;CACzV;AAED,MAAM,MAAM,GAAG,uBAAuB,CAAC;AACvC,MAAM,IAAI,GAAG,4EAA4E,CAAC;AAC1F,MAAM,WAAW,GAAG,4CAA4C,CAAC;AACjE,MAAM,WAAW,GAAG,CAAC,KAA8B,EAAE,IAAuB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AACvI,MAAM,KAAK,GAAG,CAAC,KAAc,EAAoC,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzI,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAEnJ,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,aAAqB,EAAE,QAA8B;IACxG,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9F,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,gCAAgC,EAAE,mDAAmD,CAAC,CAAC;IAC3L,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC3F,IAAI,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;YACpF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAChF,IAAI,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3R,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,yBAAyB,CAAC,gCAAgC,EAAE,oFAAoF,CAAC,CAAC;QAAC,CAAC;IAC1K,CAAC;IACD,IAAI,CAAC;QAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC,SAAU,CAAC,CAAC,CAAC;QAAC,OAAO,kBAAkB,CAAC;IAAC,CAAC;IACrJ,MAAM,CAAC;QAAC,MAAM,IAAI,yBAAyB,CAAC,gCAAgC,EAAE,kDAAkD,CAAC,CAAC;IAAC,CAAC;AACtI,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,gDAAgD,CAAC,CAAC;IAC3R,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,6CAA6C,CAAC,CAAC;IACvQ,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,4CAA4C,CAAC,CAAC;IACnZ,IAAI,CAAE,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,CAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,+BAA+B,CAAC,CAAC;IACpM,KAAK,MAAM,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC;QAAE,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAE,MAAM,IAAI,yBAAyB,CAAC,gCAAgC,EAAE,+CAA+C,CAAC,CAAC;IAC7Q,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IAC/M,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,kCAAkC,CAAC,CAAC;IAC9U,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI;QAAE,MAAM,IAAI,yBAAyB,CAAC,yBAAyB,EAAE,4CAA4C,CAAC,CAAC;IACtN,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI;YAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,sCAAsC,CAAC,CAAC;QACrP,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YAAE,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,yCAAyC,CAAC,CAAC;QACxO,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC;YAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,yCAAyC,CAAC,CAAC;QACjN,OAAO,KAAyB,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,IAAI,MAAW,CAAC;IAAC,IAAI,CAAC;QAAC,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,sCAAsC,CAAC,CAAC;IAAC,CAAC;IAC7K,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,sDAAsD,CAAC,CAAC;IACpQ,OAAO,EAAE,GAAI,KAAyC,EAAE,KAAK,EAAE,EAAE,GAAI,KAAK,CAAC,KAA2C,EAAE,MAAM,EAAE,EAAE,CAAC;AACrI,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAA8B,EAAE,UAAkB,EAAE,cAAgD,SAAS;IAChJ,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACxS,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9G,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAuB,CAAC;IACzM,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;AACpmB,CAAC;AAED,MAAM,OAAO,sBAAsB;IAGZ;IAFZ,SAAS,GAAG,qBAAqB,CAAC;IAC3C,MAAM,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7C,YAAqB,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAAG,CAAC;IACtC,SAAS,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxG,QAAQ,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACjH,KAAK,CAAC,MAAM,CAAC,KAAc,EAAE,OAAsK;QACjM,MAAM,QAAQ,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,wCAAwC,CAAC,CAAC;QACnK,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACtH,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;YAC7D,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAsB,CAAC;gBAAC,MAAM,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;gBAC5J,IAAI,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,YAAY,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,+CAA+C,CAAC,CAAC;gBACtM,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC3E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,KAAK,CAAC;YAAC,CAAC;YACxF,MAAM,SAAS,GAAG,GAAG,MAAM,QAAQ,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;oBAAS,CAAC;gBAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAC1H,MAAM,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC;gBAAC,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;oBAAS,CAAC;gBAAC,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YACpI,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;gBAAE,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAsB,CAAC;YAClF,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC;IACD,QAAQ,CAAI,IAAsB,IAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;IAC9I,KAAK,CAAC,UAAU,CAAC,IAAY,IAAmB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1U,KAAK,CAAC,GAAG,KAAmC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,GAAwB,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAAC,IAAI,CAAC;YAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAsB,CAAC;YAAC,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAAC,CAAC;IAAC,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACluB,QAAQ,CAAC,MAA2B,EAAE,MAA0B,IAAyB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,KAAK,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3U,MAAM,CAAC,MAAc,EAAE,QAAgB,IAAY,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAClN,WAAW,CAAC,KAAa,EAAE,QAAgB,IAAY,IAAI,CAAC;QAAC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAA0C,CAAC;QAAC,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QAAC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAuD,CAAC;QAAC,IAAI,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAO,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAAC,OAAO,OAAO,CAAC,MAAO,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,yBAAyB,CAAC,8BAA8B,EAAE,kDAAkD,CAAC,CAAC;IAAC,CAAC,CAAC,CAAC;IACzsB,KAAK,CAAC,IAAI,CAAC,MAA0B,IAA+B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7iB,KAAK,CAAC,GAAG,CAAC,OAAe,IAAuC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,kCAAkC,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,GAAG,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC;QAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAsB,CAAC;QAAC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAAC,OAAO,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;IAAC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAAC,MAAM,IAAI,yBAAyB,CAAC,6BAA6B,EAAE,0DAA0D,CAAC,CAAC;IAAC,CAAC,CAAC,CAAC;IAChuB,KAAK,CAAC,OAAO,CAAC,MAA0B,IAAkC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyE,CAAC,CAAC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAAC,IAAI,OAAO;YAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;;YAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChiB,KAAK,CAAC,MAAM,KAAoB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,gBAAgB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;QAAE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM;YAAE,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvhB,KAAK,CAAC,iBAAiB,CAAC,KAA4H;QAClJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,gBAAgB,IAAI,KAAK,CAAC,GAAG;YAAE,MAAM,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,+DAA+D,CAAC,CAAC;QACvU,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAAC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAuB,CAAC;QAChH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAAC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACxH,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAAC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;QAAC,MAAM,YAAY,GAAiC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9Q,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QAAC,IAAI,CAAC;YAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;gBAAS,CAAC;YAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5O,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,YAAY,CAAC;IACtB,CAAC;IACO,KAAK,CAAC,aAAa,CAAC,SAAiB;QAC3C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAAC,MAAM,MAAM,GAAwE,EAAE,CAAC;QAC1K,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC;gBAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAiE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,qCAAqC,CAAC,CAAC;QAAC,CAAC;QAClP,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,EAAE,CAAC;YACtH,IAAI,MAAM,GAAG,KAAK,CAAC;YAAC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC,CAAC,IAAI,CAAC;gBAAC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAgD,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI;oBAAE,OAAO,KAAK,CAAC;gBAAC,MAAM,GAAG,IAAI,CAAC;gBAAC,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,KAAK,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvuB,IAAI,CAAC,MAAM;gBAAE,SAAS;YAAC,MAAM,OAAO,GAAsB,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YAAC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;YAAC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,MAAM,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAAC,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAAC,CAAC;oBAAS,CAAC;gBAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,MAAM,CAAC,GAAG,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5Z,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,iCAAiC,CAAC,OAAoC,EAAE,QAA8B,EAAE,OAAkE,IAAmB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,SAAS,IAAI,MAAM,EAAE,OAAO,KAAK,QAAQ,CAAC,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,SAAS,yBAAyB,CAAC,CAAC,CAAC,CAAC"}