@bsv/overlay 2.3.1 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/README.md +166 -0
  2. package/dist/cjs/mod.d.ts +3 -0
  3. package/dist/cjs/mod.d.ts.map +1 -1
  4. package/dist/cjs/mod.js +8 -1
  5. package/dist/cjs/mod.js.map +1 -1
  6. package/dist/cjs/package.json +10 -4
  7. package/dist/cjs/src/BASM.d.ts +6 -0
  8. package/dist/cjs/src/BASM.d.ts.map +1 -1
  9. package/dist/cjs/src/BASM.js +21 -8
  10. package/dist/cjs/src/BASM.js.map +1 -1
  11. package/dist/cjs/src/BASMRemote.d.ts +8 -1
  12. package/dist/cjs/src/BASMRemote.d.ts.map +1 -1
  13. package/dist/cjs/src/BASMRemote.js +179 -13
  14. package/dist/cjs/src/BASMRemote.js.map +1 -1
  15. package/dist/cjs/src/BASMValidation.d.ts +27 -0
  16. package/dist/cjs/src/BASMValidation.d.ts.map +1 -0
  17. package/dist/cjs/src/BASMValidation.js +108 -0
  18. package/dist/cjs/src/BASMValidation.js.map +1 -0
  19. package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts +11 -0
  20. package/dist/cjs/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
  21. package/dist/cjs/src/DiscoveryAdvertisementValidation.js +60 -0
  22. package/dist/cjs/src/DiscoveryAdvertisementValidation.js.map +1 -0
  23. package/dist/cjs/src/Engine.d.ts +37 -13
  24. package/dist/cjs/src/Engine.d.ts.map +1 -1
  25. package/dist/cjs/src/Engine.js +1713 -336
  26. package/dist/cjs/src/Engine.js.map +1 -1
  27. package/dist/cjs/src/EngineAdmission.d.ts +70 -0
  28. package/dist/cjs/src/EngineAdmission.d.ts.map +1 -0
  29. package/dist/cjs/src/EngineAdmission.js +297 -0
  30. package/dist/cjs/src/EngineAdmission.js.map +1 -0
  31. package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts +4 -3
  32. package/dist/cjs/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  33. package/dist/cjs/src/GASP/OverlayGASPRemote.js +27 -43
  34. package/dist/cjs/src/GASP/OverlayGASPRemote.js.map +1 -1
  35. package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts +22 -16
  36. package/dist/cjs/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  37. package/dist/cjs/src/GASP/OverlayGASPStorage.js +206 -57
  38. package/dist/cjs/src/GASP/OverlayGASPStorage.js.map +1 -1
  39. package/dist/cjs/src/RemoteSecurity.d.ts +50 -0
  40. package/dist/cjs/src/RemoteSecurity.d.ts.map +1 -0
  41. package/dist/cjs/src/RemoteSecurity.js +301 -0
  42. package/dist/cjs/src/RemoteSecurity.js.map +1 -0
  43. package/dist/cjs/src/storage/AdmissionStorage.d.ts +185 -0
  44. package/dist/cjs/src/storage/AdmissionStorage.d.ts.map +1 -0
  45. package/dist/cjs/src/storage/AdmissionStorage.js +93 -0
  46. package/dist/cjs/src/storage/AdmissionStorage.js.map +1 -0
  47. package/dist/cjs/src/storage/RecoveryContract.d.ts +50 -0
  48. package/dist/cjs/src/storage/RecoveryContract.d.ts.map +1 -0
  49. package/dist/cjs/src/storage/RecoveryContract.js +35 -0
  50. package/dist/cjs/src/storage/RecoveryContract.js.map +1 -0
  51. package/dist/cjs/src/storage/Storage.d.ts +32 -19
  52. package/dist/cjs/src/storage/Storage.d.ts.map +1 -1
  53. package/dist/cjs/src/storage/Storage.js +5 -0
  54. package/dist/cjs/src/storage/Storage.js.map +1 -1
  55. package/dist/cjs/src/storage/knex/KnexStorage.d.ts +8 -8
  56. package/dist/cjs/src/storage/knex/KnexStorage.d.ts.map +1 -1
  57. package/dist/cjs/src/storage/knex/KnexStorage.js +98 -61
  58. package/dist/cjs/src/storage/knex/KnexStorage.js.map +1 -1
  59. package/dist/cjs/src/storage/knex/all-migrations.d.ts.map +1 -1
  60. package/dist/cjs/src/storage/knex/all-migrations.js +5 -1
  61. package/dist/cjs/src/storage/knex/all-migrations.js.map +1 -1
  62. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
  63. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
  64. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +36 -0
  65. package/dist/cjs/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
  66. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
  67. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
  68. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js +16 -0
  69. package/dist/cjs/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
  70. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
  71. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
  72. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js +229 -0
  73. package/dist/cjs/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
  74. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
  75. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
  76. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js +675 -0
  77. package/dist/cjs/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
  78. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
  79. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
  80. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js +453 -0
  81. package/dist/cjs/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
  82. package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
  83. package/dist/cjs/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
  84. package/dist/cjs/src/storage/mongo/MongoPayloadStore.js +756 -0
  85. package/dist/cjs/src/storage/mongo/MongoPayloadStore.js.map +1 -0
  86. package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts +44 -0
  87. package/dist/cjs/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
  88. package/dist/cjs/src/storage/mongo/MongoReadGuards.js +135 -0
  89. package/dist/cjs/src/storage/mongo/MongoReadGuards.js.map +1 -0
  90. package/dist/cjs/src/storage/mongo/MongoSchema.d.ts +67 -0
  91. package/dist/cjs/src/storage/mongo/MongoSchema.d.ts.map +1 -0
  92. package/dist/cjs/src/storage/mongo/MongoSchema.js +743 -0
  93. package/dist/cjs/src/storage/mongo/MongoSchema.js.map +1 -0
  94. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
  95. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
  96. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js +368 -0
  97. package/dist/cjs/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
  98. package/dist/cjs/src/storage/mongo.d.ts +9 -0
  99. package/dist/cjs/src/storage/mongo.d.ts.map +1 -0
  100. package/dist/cjs/src/storage/mongo.js +25 -0
  101. package/dist/cjs/src/storage/mongo.js.map +1 -0
  102. package/dist/esm/mod.js +3 -0
  103. package/dist/esm/mod.js.map +1 -1
  104. package/dist/esm/src/BASM.js +21 -8
  105. package/dist/esm/src/BASM.js.map +1 -1
  106. package/dist/esm/src/BASMRemote.js +176 -12
  107. package/dist/esm/src/BASMRemote.js.map +1 -1
  108. package/dist/esm/src/BASMValidation.js +95 -0
  109. package/dist/esm/src/BASMValidation.js.map +1 -0
  110. package/dist/esm/src/DiscoveryAdvertisementValidation.js +57 -0
  111. package/dist/esm/src/DiscoveryAdvertisementValidation.js.map +1 -0
  112. package/dist/esm/src/Engine.js +1698 -326
  113. package/dist/esm/src/Engine.js.map +1 -1
  114. package/dist/esm/src/EngineAdmission.js +280 -0
  115. package/dist/esm/src/EngineAdmission.js.map +1 -0
  116. package/dist/esm/src/GASP/OverlayGASPRemote.js +27 -43
  117. package/dist/esm/src/GASP/OverlayGASPRemote.js.map +1 -1
  118. package/dist/esm/src/GASP/OverlayGASPStorage.js +200 -56
  119. package/dist/esm/src/GASP/OverlayGASPStorage.js.map +1 -1
  120. package/dist/esm/src/RemoteSecurity.js +279 -0
  121. package/dist/esm/src/RemoteSecurity.js.map +1 -0
  122. package/dist/esm/src/storage/AdmissionStorage.js +85 -0
  123. package/dist/esm/src/storage/AdmissionStorage.js.map +1 -0
  124. package/dist/esm/src/storage/RecoveryContract.js +31 -0
  125. package/dist/esm/src/storage/RecoveryContract.js.map +1 -0
  126. package/dist/esm/src/storage/Storage.js +4 -1
  127. package/dist/esm/src/storage/Storage.js.map +1 -1
  128. package/dist/esm/src/storage/knex/KnexStorage.js +98 -61
  129. package/dist/esm/src/storage/knex/KnexStorage.js.map +1 -1
  130. package/dist/esm/src/storage/knex/all-migrations.js +5 -1
  131. package/dist/esm/src/storage/knex/all-migrations.js.map +1 -1
  132. package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js +32 -0
  133. package/dist/esm/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.js.map +1 -0
  134. package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js +12 -0
  135. package/dist/esm/src/storage/knex/migrations/2026-09-20-001-spent-by.js.map +1 -0
  136. package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js +217 -0
  137. package/dist/esm/src/storage/mongo/MongoAdmissionPlan.js.map +1 -0
  138. package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js +673 -0
  139. package/dist/esm/src/storage/mongo/MongoAdmissionStorage.js.map +1 -0
  140. package/dist/esm/src/storage/mongo/MongoOverlayStorage.js +451 -0
  141. package/dist/esm/src/storage/mongo/MongoOverlayStorage.js.map +1 -0
  142. package/dist/esm/src/storage/mongo/MongoPayloadStore.js +747 -0
  143. package/dist/esm/src/storage/mongo/MongoPayloadStore.js.map +1 -0
  144. package/dist/esm/src/storage/mongo/MongoReadGuards.js +129 -0
  145. package/dist/esm/src/storage/mongo/MongoReadGuards.js.map +1 -0
  146. package/dist/esm/src/storage/mongo/MongoSchema.js +730 -0
  147. package/dist/esm/src/storage/mongo/MongoSchema.js.map +1 -0
  148. package/dist/esm/src/storage/mongo/MongoTransactionRunner.js +371 -0
  149. package/dist/esm/src/storage/mongo/MongoTransactionRunner.js.map +1 -0
  150. package/dist/esm/src/storage/mongo.js +9 -0
  151. package/dist/esm/src/storage/mongo.js.map +1 -0
  152. package/dist/types/mod.d.ts +3 -0
  153. package/dist/types/mod.d.ts.map +1 -1
  154. package/dist/types/src/BASM.d.ts +6 -0
  155. package/dist/types/src/BASM.d.ts.map +1 -1
  156. package/dist/types/src/BASMRemote.d.ts +8 -1
  157. package/dist/types/src/BASMRemote.d.ts.map +1 -1
  158. package/dist/types/src/BASMValidation.d.ts +27 -0
  159. package/dist/types/src/BASMValidation.d.ts.map +1 -0
  160. package/dist/types/src/DiscoveryAdvertisementValidation.d.ts +11 -0
  161. package/dist/types/src/DiscoveryAdvertisementValidation.d.ts.map +1 -0
  162. package/dist/types/src/Engine.d.ts +37 -13
  163. package/dist/types/src/Engine.d.ts.map +1 -1
  164. package/dist/types/src/EngineAdmission.d.ts +70 -0
  165. package/dist/types/src/EngineAdmission.d.ts.map +1 -0
  166. package/dist/types/src/GASP/OverlayGASPRemote.d.ts +4 -3
  167. package/dist/types/src/GASP/OverlayGASPRemote.d.ts.map +1 -1
  168. package/dist/types/src/GASP/OverlayGASPStorage.d.ts +22 -16
  169. package/dist/types/src/GASP/OverlayGASPStorage.d.ts.map +1 -1
  170. package/dist/types/src/RemoteSecurity.d.ts +50 -0
  171. package/dist/types/src/RemoteSecurity.d.ts.map +1 -0
  172. package/dist/types/src/storage/AdmissionStorage.d.ts +185 -0
  173. package/dist/types/src/storage/AdmissionStorage.d.ts.map +1 -0
  174. package/dist/types/src/storage/RecoveryContract.d.ts +50 -0
  175. package/dist/types/src/storage/RecoveryContract.d.ts.map +1 -0
  176. package/dist/types/src/storage/Storage.d.ts +32 -19
  177. package/dist/types/src/storage/Storage.d.ts.map +1 -1
  178. package/dist/types/src/storage/knex/KnexStorage.d.ts +8 -8
  179. package/dist/types/src/storage/knex/KnexStorage.d.ts.map +1 -1
  180. package/dist/types/src/storage/knex/all-migrations.d.ts.map +1 -1
  181. package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts +4 -0
  182. package/dist/types/src/storage/knex/migrations/2026-09-17-001-topical-uniqueness.d.ts.map +1 -0
  183. package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts +5 -0
  184. package/dist/types/src/storage/knex/migrations/2026-09-20-001-spent-by.d.ts.map +1 -0
  185. package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts +18 -0
  186. package/dist/types/src/storage/mongo/MongoAdmissionPlan.d.ts.map +1 -0
  187. package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts +112 -0
  188. package/dist/types/src/storage/mongo/MongoAdmissionStorage.d.ts.map +1 -0
  189. package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts +71 -0
  190. package/dist/types/src/storage/mongo/MongoOverlayStorage.d.ts.map +1 -0
  191. package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts +134 -0
  192. package/dist/types/src/storage/mongo/MongoPayloadStore.d.ts.map +1 -0
  193. package/dist/types/src/storage/mongo/MongoReadGuards.d.ts +44 -0
  194. package/dist/types/src/storage/mongo/MongoReadGuards.d.ts.map +1 -0
  195. package/dist/types/src/storage/mongo/MongoSchema.d.ts +67 -0
  196. package/dist/types/src/storage/mongo/MongoSchema.d.ts.map +1 -0
  197. package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts +69 -0
  198. package/dist/types/src/storage/mongo/MongoTransactionRunner.d.ts.map +1 -0
  199. package/dist/types/src/storage/mongo.d.ts +9 -0
  200. package/dist/types/src/storage/mongo.d.ts.map +1 -0
  201. package/package.json +11 -5
@@ -1 +1 @@
1
- {"version":3,"file":"BASMRemote.js","sourceRoot":"","sources":["../../../src/BASMRemote.ts"],"names":[],"mappings":";;;AAQA;IACE,YACmB,QAAgB,EAChB,KAAa,EACb,SAAS,GAAiB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;wBAFhD,QAAQ;qBACR,KAAK;yBACL,SAAS;IACxB,CAAC;IAEL,KAAK,CAAC,qBAAqB;QACzB,OAAO,MAAM,IAAI,CAAC,IAAI,CAAiB,wBAAwB,EAAE,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,UAAkB,EAAE,QAAgB;QAChE,OAAO,MAAM,IAAI,CAAC,IAAI,CAA2B,0BAA0B,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAA;IACxG,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,WAAmB,EAAE,SAAkB;QAC/D,OAAO,MAAM,IAAI,CAAC,IAAI,CAAuB,sBAAsB,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAA;IAClG,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,WAAmB,EAAE,KAAe;QAClE,OAAO,MAAM,IAAI,CAAC,IAAI,CAA6B,4BAA4B,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1G,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,KAAe;QAC1C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAyB,yBAAyB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACtF,CAAC;IAEO,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAa;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC7E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,IAAI,CAAC,KAAK;aAC1B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,QAAQ,aAAa,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;QACpF,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAM,CAAA;IACzD,CAAC;CACF"}
1
+ {"version":3,"file":"BASMRemote.js","sourceRoot":"","sources":["../../../src/BASMRemote.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { AdmittedTxRef, TopicAnchorTip, TopicBlockAnchor } from './BASM.js';
2
+ /** Local acceptance limits, not Bitcoin consensus limits. */
3
+ export interface BASMRemoteLimits {
4
+ maxResponseBytes: number;
5
+ maxProofBytes: number;
6
+ maxRawTransactionBytes: number;
7
+ maxAdmittedTxids: number;
8
+ maxRequestedTxids: number;
9
+ maxAnchorRange: number;
10
+ timeoutMs: number;
11
+ }
12
+ export declare const DEFAULT_BASM_REMOTE_LIMITS: Readonly<BASMRemoteLimits>;
13
+ export declare class BASMProtocolError extends Error {
14
+ readonly code: 'BASM_INVALID_RESPONSE' | 'BASM_RESOURCE_LIMIT' | 'BASM_UNSUPPORTED' | 'BASM_TIMEOUT' | 'BASM_HTTP_ERROR';
15
+ constructor(code: 'BASM_INVALID_RESPONSE' | 'BASM_RESOURCE_LIMIT' | 'BASM_UNSUPPORTED' | 'BASM_TIMEOUT' | 'BASM_HTTP_ERROR', message: string);
16
+ }
17
+ export declare function requireBASM(condition: boolean, message: string): asserts condition;
18
+ export declare function requireBASMLimit(condition: boolean, message: string): void;
19
+ export declare function basmObject(value: unknown): Record<string, unknown>;
20
+ export declare function basmInteger(value: unknown, label: string, minimum?: number): number;
21
+ export declare function basmHash(value: unknown, label: string): string;
22
+ export declare function basmHex(value: unknown, label: string, maxBytes: number): string;
23
+ export declare function basmTxids(value: unknown, maximum: number): string[];
24
+ export declare function basmTip(value: unknown, topic: string): TopicAnchorTip;
25
+ export declare function basmAnchor(value: unknown, topic: string): TopicBlockAnchor;
26
+ export declare function basmAdmitted(value: unknown, maximum: number): AdmittedTxRef[];
27
+ //# sourceMappingURL=BASMValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BASMValidation.d.ts","sourceRoot":"","sources":["../../../src/BASMValidation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAEhF,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,sBAAsB,EAAE,MAAM,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,cAAc,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,gBAAgB,CAQhE,CAAA;AAEF,qBAAa,iBAAkB,SAAQ,KAAK;aAExB,IAAI,EAChB,uBAAuB,GACvB,qBAAqB,GACrB,kBAAkB,GAClB,cAAc,GACd,iBAAiB;IANvB,YACkB,IAAI,EAChB,uBAAuB,GACvB,qBAAqB,GACrB,kBAAkB,GAClB,cAAc,GACd,iBAAiB,EACrB,OAAO,EAAE,MAAM,EAIhB;CACF;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAElF;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMlE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,MAAM,CAM9E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG9D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ/E;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAMnE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAYrE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAW1E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAiB7E"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BASMProtocolError = exports.DEFAULT_BASM_REMOTE_LIMITS = void 0;
4
+ exports.requireBASM = requireBASM;
5
+ exports.requireBASMLimit = requireBASMLimit;
6
+ exports.basmObject = basmObject;
7
+ exports.basmInteger = basmInteger;
8
+ exports.basmHash = basmHash;
9
+ exports.basmHex = basmHex;
10
+ exports.basmTxids = basmTxids;
11
+ exports.basmTip = basmTip;
12
+ exports.basmAnchor = basmAnchor;
13
+ exports.basmAdmitted = basmAdmitted;
14
+ const BASM_js_1 = require("./BASM.js");
15
+ exports.DEFAULT_BASM_REMOTE_LIMITS = Object.freeze({
16
+ maxResponseBytes: 64 * 1024 * 1024,
17
+ maxProofBytes: 8 * 1024 * 1024,
18
+ maxRawTransactionBytes: 32 * 1024 * 1024,
19
+ maxAdmittedTxids: 100000,
20
+ maxRequestedTxids: 1000,
21
+ maxAnchorRange: 1024,
22
+ timeoutMs: 30000
23
+ });
24
+ class BASMProtocolError extends Error {
25
+ constructor(code, message) {
26
+ super(message);
27
+ this.code = code;
28
+ this.name = 'BASMProtocolError';
29
+ }
30
+ }
31
+ exports.BASMProtocolError = BASMProtocolError;
32
+ function requireBASM(condition, message) {
33
+ if (!condition)
34
+ throw new BASMProtocolError('BASM_INVALID_RESPONSE', message);
35
+ }
36
+ function requireBASMLimit(condition, message) {
37
+ if (!condition)
38
+ throw new BASMProtocolError('BASM_RESOURCE_LIMIT', message);
39
+ }
40
+ function basmObject(value) {
41
+ requireBASM(typeof value === 'object' && value !== null && !Array.isArray(value), 'Expected a BASM JSON object');
42
+ return value;
43
+ }
44
+ function basmInteger(value, label, minimum = 0) {
45
+ requireBASM(typeof value === 'number' && Number.isSafeInteger(value) && value >= minimum, `Invalid BASM ${label}`);
46
+ return value;
47
+ }
48
+ function basmHash(value, label) {
49
+ requireBASM(typeof value === 'string' && /^[0-9a-f]{64}$/.test(value), `Invalid BASM ${label}`);
50
+ return value;
51
+ }
52
+ function basmHex(value, label, maxBytes) {
53
+ requireBASM(typeof value === 'string', `Invalid BASM ${label}`);
54
+ requireBASMLimit(value.length <= maxBytes * 2, `BASM ${label} exceeds byte limit`);
55
+ requireBASM(value.length > 0 && value.length % 2 === 0 && /^[0-9a-fA-F]+$/.test(value), `Invalid BASM ${label}`);
56
+ return value;
57
+ }
58
+ function basmTxids(value, maximum) {
59
+ requireBASM(Array.isArray(value), 'Invalid BASM txids');
60
+ requireBASMLimit(value.length <= maximum, 'BASM txid count exceeds limit');
61
+ const txids = value.map(txid => basmHash(txid, 'txid'));
62
+ requireBASM(new Set(txids).size === txids.length, 'Duplicate BASM txid');
63
+ return txids;
64
+ }
65
+ function basmTip(value, topic) {
66
+ const obj = basmObject(value);
67
+ requireBASM(obj.topic === topic, 'BASM topic mismatch');
68
+ const blockHeight = basmInteger(obj.blockHeight, 'tip height', -1);
69
+ const tac = basmHash(obj.tac, 'TAC');
70
+ const tip = { topic, blockHeight, tac };
71
+ if (obj.blockHash !== undefined)
72
+ tip.blockHash = basmHash(obj.blockHash, 'block hash');
73
+ if (obj.basmRoot !== undefined)
74
+ tip.basmRoot = basmHash(obj.basmRoot, 'root');
75
+ if (obj.admittedCount !== undefined)
76
+ tip.admittedCount = basmInteger(obj.admittedCount, 'admitted count');
77
+ if (blockHeight === -1)
78
+ requireBASM(tac === BASM_js_1.BASM_ZERO_HASH, 'Empty BASM tip must have zero TAC');
79
+ return tip;
80
+ }
81
+ function basmAnchor(value, topic) {
82
+ const obj = basmObject(value);
83
+ const tip = basmTip(value, topic);
84
+ return {
85
+ topic,
86
+ blockHeight: basmInteger(tip.blockHeight, 'anchor height'),
87
+ blockHash: basmHash(obj.blockHash, 'block hash'),
88
+ basmRoot: basmHash(obj.basmRoot, 'root'),
89
+ admittedCount: basmInteger(obj.admittedCount, 'admitted count'),
90
+ tac: tip.tac
91
+ };
92
+ }
93
+ function basmAdmitted(value, maximum) {
94
+ requireBASM(Array.isArray(value), 'Invalid BASM admitted list');
95
+ requireBASMLimit(value.length <= maximum, 'BASM admitted count exceeds limit');
96
+ let previousIndex = -1;
97
+ const seen = new Set();
98
+ return value.map(item => {
99
+ const obj = basmObject(item);
100
+ const txid = basmHash(obj.txid, 'txid');
101
+ const blockIndex = basmInteger(obj.blockIndex, 'block index');
102
+ requireBASM(blockIndex > previousIndex && !seen.has(txid), 'BASM admitted list must have unique txids in increasing block order');
103
+ previousIndex = blockIndex;
104
+ seen.add(txid);
105
+ return { txid, blockIndex };
106
+ });
107
+ }
108
+ //# sourceMappingURL=BASMValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BASMValidation.js","sourceRoot":"","sources":["../../../src/BASMValidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { LockingScript } from '@bsv/sdk';
2
+ export type DiscoveryProtocol = 'SHIP' | 'SLAP';
3
+ export interface VerifiedDiscoveryAdvertisement {
4
+ protocol: DiscoveryProtocol;
5
+ identityKey: string;
6
+ domain: string;
7
+ topicOrService: string;
8
+ }
9
+ /** Decode and authenticate one canonical SHIP or SLAP PushDrop advertisement. */
10
+ export declare function decodeAndVerifyDiscoveryAdvertisement(lockingScript: LockingScript, expectedProtocol: DiscoveryProtocol): Promise<VerifiedDiscoveryAdvertisement>;
11
+ //# sourceMappingURL=DiscoveryAdvertisementValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveryAdvertisementValidation.d.ts","sourceRoot":"","sources":["../../../src/DiscoveryAdvertisementValidation.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,aAAa,EAId,MAAM,UAAU,CAAA;AACjB,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAA;AAE/C,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;CACvB;AAaD,iFAAiF;AACjF,wBAAsB,qCAAqC,CACzD,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,iBAAiB,GAClC,OAAO,CAAC,8BAA8B,CAAC,CA+CzC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decodeAndVerifyDiscoveryAdvertisement = decodeAndVerifyDiscoveryAdvertisement;
4
+ const utils_1 = require("@bsv/sdk/primitives/utils");
5
+ const sdk_1 = require("@bsv/sdk");
6
+ const MAX_DISCOVERY_FIELD_BYTES = 4096;
7
+ const MAX_DISCOVERY_PAYLOAD_BYTES = 8192;
8
+ const namePattern = {
9
+ SHIP: /^(?=.{1,50}$)tm_[a-z]+(?:_[a-z]+)*$/,
10
+ SLAP: /^(?=.{1,50}$)ls_[a-z]+(?:_[a-z]+)*$/
11
+ };
12
+ function walletProtocol(protocol) {
13
+ return [2, protocol === 'SHIP' ? 'service host interconnect' : 'service lookup availability'];
14
+ }
15
+ /** Decode and authenticate one canonical SHIP or SLAP PushDrop advertisement. */
16
+ async function decodeAndVerifyDiscoveryAdvertisement(lockingScript, expectedProtocol) {
17
+ const decoded = (0, sdk_1.decodeCanonicalPushDrop)(lockingScript, {
18
+ fieldCount: 5,
19
+ maximumFieldBytes: MAX_DISCOVERY_FIELD_BYTES,
20
+ maximumPayloadBytes: MAX_DISCOVERY_PAYLOAD_BYTES
21
+ });
22
+ const protocol = (0, utils_1.toUTF8Strict)(decoded.fields[0]);
23
+ if (protocol !== expectedProtocol)
24
+ throw new Error('Discovery advertisement protocol mismatch');
25
+ const identityKey = (0, utils_1.toHex)(decoded.fields[1]);
26
+ if (!/^(?:02|03)[0-9a-f]{64}$/.test(identityKey) ||
27
+ sdk_1.PublicKey.fromString(identityKey).toString() !== identityKey) {
28
+ throw new Error('Discovery advertisement identity key is invalid');
29
+ }
30
+ const domain = (0, utils_1.toUTF8Strict)(decoded.fields[2]);
31
+ if (new TextEncoder().encode(domain).byteLength < 1 ||
32
+ new TextEncoder().encode(domain).byteLength > 4096) {
33
+ throw new Error('Discovery advertisement domain is invalid');
34
+ }
35
+ const topicOrService = (0, utils_1.toUTF8Strict)(decoded.fields[3]);
36
+ if (!namePattern[expectedProtocol].test(topicOrService)) {
37
+ throw new Error('Discovery advertisement name is invalid');
38
+ }
39
+ const protocolID = walletProtocol(expectedProtocol);
40
+ const wallet = new sdk_1.ProtoWallet('anyone');
41
+ const { valid } = await wallet.verifySignature({
42
+ data: decoded.fields.slice(0, -1).flat(),
43
+ signature: decoded.fields.at(-1),
44
+ counterparty: identityKey,
45
+ protocolID,
46
+ keyID: '1'
47
+ });
48
+ if (valid !== true)
49
+ throw new Error('Discovery advertisement signature is invalid');
50
+ const { publicKey: expectedLockingKey } = await wallet.getPublicKey({
51
+ counterparty: identityKey,
52
+ protocolID,
53
+ keyID: '1'
54
+ });
55
+ if (expectedLockingKey !== decoded.lockingPublicKey.toString()) {
56
+ throw new Error('Discovery advertisement locking key is not linked to its identity');
57
+ }
58
+ return { protocol: expectedProtocol, identityKey, domain, topicOrService };
59
+ }
60
+ //# sourceMappingURL=DiscoveryAdvertisementValidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DiscoveryAdvertisementValidation.js","sourceRoot":"","sources":["../../../src/DiscoveryAdvertisementValidation.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,12 @@ import { SyncConfiguration } from './SyncConfiguration.js';
9
9
  import { type AdmittedListResponse, type BASMPeerSyncReport, type CompoundMerklePathResponse, type RawTransactionResponse, type ReorgReport, type TopicAnchorHeaderResolver, type TopicAnchorRangeResponse, type TopicAnchorTip } from './BASM.js';
10
10
  type UTXOHistoryHydrationContext = {
11
11
  outputCache: Map<string, Promise<Output | null>>;
12
+ budgetedOutputs: Set<string>;
13
+ hydratedNodes: number;
14
+ relationCount: number;
15
+ totalBeefBytes: number;
12
16
  };
17
+ type SubmissionMode = 'historical-tx' | 'current-tx' | 'historical-tx-no-spv';
13
18
  /**
14
19
  * An engine for running BSV Overlay Services (topic managers and lookup services).
15
20
  */
@@ -38,6 +43,8 @@ export declare class Engine {
38
43
  basmSyncEnabled: boolean;
39
44
  unprovenEvictionBlocks: number;
40
45
  maxLookupResults: number;
46
+ private submissionTail;
47
+ private basmFetchImpl?;
41
48
  /**
42
49
  * Creates a new Overlay Services Engine
43
50
  * @param {[key: string]: TopicManager} managers - manages topic admittance
@@ -108,6 +115,7 @@ export declare class Engine {
108
115
  rebuildFromHeight: number;
109
116
  newTipHeight: number;
110
117
  }): Promise<ReorgReport>;
118
+ private reconcileReorg;
111
119
  /**
112
120
  * Revalidation sweep: the reorg fallback for chain trackers without a reorg
113
121
  * event stream, and the catch-up step on every reorg-SSE (re)connect (the
@@ -134,6 +142,10 @@ export declare class Engine {
134
142
  private applyTopicStorageMutation;
135
143
  private applyStorageMutations;
136
144
  private propagateSubmission;
145
+ private assertSupportedTopics;
146
+ private shouldSkipPropagation;
147
+ private notifySteakReady;
148
+ private acknowledgeOverlayAdmission;
137
149
  /**
138
150
  * Submits a transaction for processing by Overlay Services.
139
151
  * @param {TaggedBEEF} taggedBEEF - The transaction to process
@@ -141,11 +153,13 @@ export declare class Engine {
141
153
  * @param {string} mode — Indicates the submission behavior, whether historical or current. Historical transactions are not broadcast or propagated.
142
154
  * @param {number[]} offChainValues — Values necessary to evaluate topical admittance that are not stored on-chain.
143
155
  *
144
- * The optional callback function should be used to get STEAK when ready, and avoid waiting for broadcast and transaction propagation to complete.
156
+ * The optional callback is invoked after any required transaction broadcast and
157
+ * local storage mutations have completed, but before peer-to-peer propagation.
145
158
  *
146
159
  * @returns {Promise<STEAK>} The submitted transaction execution acknowledgement
147
160
  */
148
- submit(taggedBEEF: TaggedBEEF, onSteakReady?: (steak: STEAK) => void, mode?: 'historical-tx' | 'current-tx' | 'historical-tx-no-spv', offChainValues?: number[]): Promise<STEAK>;
161
+ submit(taggedBEEF: TaggedBEEF, onSteakReady?: (steak: STEAK) => void, mode?: SubmissionMode, offChainValues?: number[]): Promise<STEAK>;
162
+ private submitUnlocked;
149
163
  /**
150
164
  * Submit a lookup question to the Overlay Services Engine, and receive back a Lookup Answer
151
165
  * @param LookupQuestion — The question to ask the Overlay Services Engine
@@ -154,6 +168,8 @@ export declare class Engine {
154
168
  lookup(lookupQuestion: LookupQuestion): Promise<LookupAnswer>;
155
169
  private createUTXOHistoryHydrationContext;
156
170
  private toOutputCacheKey;
171
+ private assertLookupFormula;
172
+ private validateLookupOutput;
157
173
  private preloadOutputsWithBEEF;
158
174
  private loadOutputWithBEEF;
159
175
  private hydrateUTXOHistoryNode;
@@ -176,6 +192,7 @@ export declare class Engine {
176
192
  * @throws Will throw an error if there are issues during the advertisement synchronization process.
177
193
  * @returns {Promise<void>} A promise that resolves when the synchronization process is complete.
178
194
  */
195
+ private validateCurrentAdvertisements;
179
196
  syncAdvertisements(): Promise<void>;
180
197
  /**
181
198
  * This method goes through each topic that we support syncing and attempts to sync with each endpoint
@@ -187,13 +204,23 @@ export declare class Engine {
187
204
  startGASPSync(): Promise<void>;
188
205
  private syncGASPWithPeer;
189
206
  private resolveSyncEndpointsForTopic;
207
+ private assertSupportedBASMTopic;
208
+ private assertTopicAnchorTip;
209
+ private assertTopicBlockAnchor;
190
210
  provideTopicAnchorTip(topic: string): Promise<TopicAnchorTip>;
191
211
  provideTopicAnchorRange(topic: string, fromHeight: number, toHeight: number): Promise<TopicAnchorRangeResponse>;
192
212
  provideAdmittedList(topic: string, blockHeight: number, blockHash?: string): Promise<AdmittedListResponse>;
193
213
  provideCompoundMerklePath(topic: string, blockHeight: number, txids: string[]): Promise<CompoundMerklePathResponse>;
194
- provideRawTransactions(txids: string[]): Promise<RawTransactionResponse>;
214
+ provideRawTransactions(txids: string[], topic?: string): Promise<RawTransactionResponse>;
195
215
  startBASMSync(): Promise<BASMPeerSyncReport[]>;
196
216
  private reconcileBASMWithPeer;
217
+ private requireMatchingRemoteBASMTip;
218
+ private finishBASMWhenRemoteIsNotAhead;
219
+ private requireBASMRangePrefix;
220
+ private advanceBASMWithRemoteAnchors;
221
+ private markBASMPeerSyncError;
222
+ private requireCanonicalBASMAnchor;
223
+ private validateBASMProofPositions;
197
224
  private reconcileRemoteAnchor;
198
225
  private fetchBASMMissingTransactions;
199
226
  evictUnprovenTransactions(options?: {
@@ -223,6 +250,7 @@ export declare class Engine {
223
250
  error: string;
224
251
  }>;
225
252
  }>;
253
+ private validateUnprovenCandidates;
226
254
  maintainUnprovenTransactions(options: {
227
255
  topic?: string;
228
256
  thresholdBlocks?: number;
@@ -279,7 +307,7 @@ export declare class Engine {
279
307
  * @returns A promise that resolves to a GASPNode containing the raw transaction and other optional data.
280
308
  * @throws An error if no output is found for the given transaction ID and output index.
281
309
  */
282
- provideForeignGASPNode(graphID: string, txid: string, outputIndex: number): Promise<GASPNode>;
310
+ provideForeignGASPNode(graphID: string, txid: string, outputIndex: number, topic?: string): Promise<GASPNode>;
283
311
  /**
284
312
  * Traverse and return the history of a UTXO.
285
313
  *
@@ -294,7 +322,7 @@ export declare class Engine {
294
322
  * @param {number} [currentDepth=0] - The current depth of the traversal relative to the top-level UTXO.
295
323
  *
296
324
  * @returns {Promise<Output | undefined>} - A promise that resolves to the output history if found, or undefined if not.
297
- */
325
+ */
298
326
  getUTXOHistory(output: Output, historySelector?: ((beef: number[], outputIndex: number, currentDepth: number) => Promise<boolean>) | number, currentDepth?: number, context?: UTXOHistoryHydrationContext): Promise<Output | undefined>;
299
327
  /**
300
328
  * Delete a UTXO and all stale consumed inputs.
@@ -302,6 +330,8 @@ export declare class Engine {
302
330
  * @returns {Promise<void>} - A promise that resolves when the deletion process is complete.
303
331
  */
304
332
  private deleteUTXODeep;
333
+ private assertStoredOutputRelations;
334
+ private assertStoredOutputMatches;
305
335
  /**
306
336
  * Given a new transaction proof (txid, proof),
307
337
  * update tx.merklePath if appropriate,
@@ -312,14 +342,8 @@ export declare class Engine {
312
342
  * @param proof for txid
313
343
  */
314
344
  private updateInputProofs;
315
- /**
316
- * Recursively updates beefs (merkle proofs) of this output and its consumedBy lineage.
317
- *
318
- * @param output - An output derived from txid which may benefit from new proof.
319
- * @param txid - The txid for which proof is a valid merkle path.
320
- * @param proof - The merklePath proving txid is a mined transaction hash
321
- */
322
- private updateMerkleProof;
345
+ private prepareMerkleProofUpdate;
346
+ private collectMerkleProofOutputs;
323
347
  /**
324
348
  * Recursively prune UTXOs when an incoming Merkle Proof is received.
325
349
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/Engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Engine.d.ts","sourceRoot":"","sources":["../../../src/Engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAEL,YAAY,EACZ,UAAU,EACV,WAAW,EAEX,UAAU,EACV,KAAK,EACL,cAAc,EACd,YAAY,EAOZ,2BAA2B,EAG5B,MAAM,UAAU,CAAA;AACjB,OAAO,EAAqB,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE/D,OAAO,EAAQ,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAEhB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EAKpB,MAAM,WAAW,CAAA;AAqOlB,KAAK,2BAA2B,GAAG;IACjC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;IAChD,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;CACvB,CAAA;AAqBD,KAAK,cAAc,GAAG,eAAe,GAAG,YAAY,GAAG,sBAAsB,CAAA;AA0D7E;;GAEG;AACH,qBAAa,MAAM;IA4BR,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE;IACzC,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE;IAChD,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE,YAAY,GAAG,cAAc;IAC3C,UAAU,CAAC,EAAE,MAAM;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE;IACvB,WAAW,CAAC,EAAE,WAAW;IACzB,UAAU,CAAC,EAAE,UAAU;IACvB,iBAAiB,CAAC,EAAE,iBAAiB;IACrC,OAAO;IACP,SAAS;IACT,uBAAuB;IACvB,2BAA2B,EAAE,2BAA2B;IACxD,MAAM,EAAE,OAAO,OAAO;IACtB,iCAAiC;IACjC,yBAAyB,CAAC,EAAE,yBAAyB;IACrD,eAAe;IACf,sBAAsB;IACtB,gBAAgB;IA9CzB,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,aAAa,CAAC,CAAc;IAEpC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,YACS,QAAQ,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,EACzC,cAAc,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,EAChD,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,GAAG,cAAc,EAC3C,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,YAAA,EACvB,YAAY,CAAC,EAAE,MAAM,EAAE,YAAA,EACvB,WAAW,CAAC,EAAE,WAAW,YAAA,EACzB,UAAU,CAAC,EAAE,UAAU,YAAA,EACvB,iBAAiB,CAAC,EAAE,iBAAiB,YAAA,EACrC,OAAO,UAAQ,EACf,SAAS,SAAsB,EAC/B,uBAAuB,UAAQ,EAC/B,2BAA2B,GAAE,2BAAoE,EACjG,MAAM,GAAE,OAAO,OAAiB,EAChC,iCAAiC,UAAO,EACxC,yBAAyB,CAAC,EAAE,yBAAyB,YAAA,EACrD,eAAe,UAAQ,EACvB,sBAAsB,SAAM,EAC5B,gBAAgB,SAAO,EAsD/B;IAGD,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,OAAO;YAMD,wBAAwB;YAgBxB,gBAAgB;IAsC9B,OAAO,CAAC,qBAAqB;YAIf,qBAAqB;YAuBrB,6BAA6B;YA2B7B,yBAAyB;IAkDvC;;;;;;;OAOG;IACG,wBAAwB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB/D;IAED;;;;;;;OAOG;YACW,uBAAuB;IAkFrC;;;;;;;;;;OAUG;IACG,WAAW,CAAC,KAAK,EAAE;QACvB,mBAAmB,EAAE,MAAM,EAAE,CAAA;QAC7B,iBAAiB,EAAE,MAAM,CAAA;QACzB,YAAY,EAAE,MAAM,CAAA;KACrB,GAAG,OAAO,CAAC,WAAW,CAAC,CAEvB;YAEa,cAAc;IA+J5B;;;;;;;;OAQG;YACW,mBAAmB;IAyB3B,uBAAuB,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CA+EzE;YAEa,uBAAuB;IA2FrC,OAAO,CAAC,yBAAyB;YAanB,2BAA2B;YAkC3B,0BAA0B;YAsB1B,iBAAiB;YAsDjB,uBAAuB;YAoBvB,wBAAwB;IAetC,OAAO,CAAC,qBAAqB;YA6Bf,kBAAkB;YAsBlB,oBAAoB;YAkCpB,WAAW;YAwCX,oBAAoB;YAwBpB,yBAAyB;YA6CzB,qBAAqB;YAYrB,mBAAmB;IAqCjC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,gBAAgB;YASV,2BAA2B;IA4DzC;;;;;;;;;;;OAWG;IACG,MAAM,CACV,UAAU,EAAE,UAAU,EACtB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EACrC,IAAI,GAAE,cAA6B,EACnC,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,KAAK,CAAC,CAYhB;YAEa,cAAc;IAoK5B;;;;OAIG;IACG,MAAM,CAAC,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAkElE;IAED,OAAO,CAAC,iCAAiC;IAUzC,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,mBAAmB;IA8C3B,OAAO,CAAC,oBAAoB;YA0Cd,sBAAsB;YAkEtB,kBAAkB;YAkBlB,sBAAsB;IA8GpC;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,6BAA6B;IA2D/B,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6FxC;IAED;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBnC;YAEa,gBAAgB;YA6BhB,4BAA4B;IAuF1C,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,sBAAsB;IA8BxB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAgBlE;IAEK,uBAAuB,CAC3B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,wBAAwB,CAAC,CAyCnC;IAEK,mBAAmB,CACvB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAyC/B;IAEK,yBAAyB,CAC7B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,0BAA0B,CAAC,CAgFrC;IAEK,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA4C7F;IAEK,aAAa,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAcnD;YAEa,qBAAqB;YA+BrB,4BAA4B;YA0B5B,8BAA8B;IAyB5C,OAAO,CAAC,sBAAsB;YA2BhB,4BAA4B;IAkC1C,OAAO,CAAC,qBAAqB;YAcf,0BAA0B;IAiCxC,OAAO,CAAC,0BAA0B;YAsBpB,qBAAqB;YA6ErB,4BAA4B;IA8GpC,yBAAyB,CAC7B,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,eAAe,CAAC,EAAE,MAAM,CAAA;KACpB,GACL,OAAO,CAAC;QACT,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;QAClB,mBAAmB,EAAE,MAAM,CAAA;QAC3B,cAAc,EAAE,MAAM,CAAA;KACvB,CAAC,CAgDD;IAEK,gCAAgC,CAAC,OAAO,EAAE;QAC9C,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,aAAa,EAAE,CACb,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;YAAE,UAAU,EAAE,UAAU,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC,CAAA;KAC3E,GAAG,OAAO,CAAC;QACV,YAAY,EAAE,MAAM,CAAA;QACpB,UAAU,EAAE,MAAM,CAAA;QAClB,qBAAqB,EAAE,MAAM,CAAA;QAC7B,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;QACpB,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KACjD,CAAC,CA2DD;IAED,OAAO,CAAC,0BAA0B;IAyE5B,4BAA4B,CAAC,OAAO,EAAE;QAC1C,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,aAAa,EAAE,CACb,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;YAAE,UAAU,EAAE,UAAU,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC,CAAA;KAC3E,GAAG,OAAO,CAAC;QACV,OAAO,EAAE;YACP,YAAY,EAAE,MAAM,CAAA;YACpB,UAAU,EAAE,MAAM,CAAA;YAClB,qBAAqB,EAAE,MAAM,CAAA;YAC7B,aAAa,EAAE,MAAM,CAAA;YACrB,YAAY,EAAE,MAAM,CAAA;YACpB,QAAQ,EAAE,KAAK,CAAC;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SACjD,CAAA;QACD,QAAQ,EAAE;YACR,YAAY,EAAE,MAAM,CAAA;YACpB,UAAU,EAAE,MAAM,CAAA;YAClB,mBAAmB,EAAE,MAAM,CAAA;YAC3B,cAAc,EAAE,MAAM,CAAA;SACvB,CAAA;KACF,CAAC,CAOD;IAEK,uBAAuB,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;KACX,GACL,OAAO,CAAC;QACT,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,mBAAmB,EAAE,MAAM,CAAA;QAC3B,cAAc,EAAE,MAAM,CAAA;KACvB,CAAC,CAqED;IAED;;;;;;;;;;OAUG;IACG,0BAA0B,CAC9B,cAAc,EAAE,kBAAkB,EAClC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,mBAAmB,CAAC,CAwC9B;IAED;;;;;;;;OAQG;IACG,sBAAsB,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,QAAQ,CAAC,CAuHnB;IAED;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,eAAe,CAAC,EACd,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,EAC5F,YAAY,SAAI,EAChB,OAAO,GAAE,2BAAsE,GAC9E,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA+C7B;IAED;;;;OAIG;YACW,cAAc;IA6E5B,OAAO,CAAC,2BAA2B;IAkDnC,OAAO,CAAC,yBAAyB;IAejC;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,wBAAwB;YAuBlB,yBAAyB;IAoDvC;;;;;;OAMG;IACG,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuF/F;IAED;;;;OAIG;IACG,iBAAiB,IAAI,OAAO,CAChC,MAAM,CACJ,MAAM,EACN;QACE,IAAI,EAAE,MAAM,CAAA;QACZ,gBAAgB,EAAE,MAAM,CAAA;QACxB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,CACF,CACF,CAgCA;IAED;;;;OAIG;IACG,0BAA0B,IAAI,OAAO,CACzC,MAAM,CACJ,MAAM,EACN;QACE,IAAI,EAAE,MAAM,CAAA;QACZ,gBAAgB,EAAE,MAAM,CAAA;QACxB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,cAAc,CAAC,EAAE,MAAM,CAAA;KACxB,CACF,CACF,CAgCA;IAED;;;;OAIG;IACG,+BAA+B,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CASnE;IAED;;;;OAIG;IACG,wCAAwC,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAU7E;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,UAAU;CAwCnB"}